LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTA5LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglNYWtlIENyeXB0SW1wb3J0L0V4cG9ydFB1YmxpY0tleUluZm9FeCBiZWhhdmUgdGhlIHdheSBNU0ROIGRlc2NyaWJlcwoJdGhlbSwgYW5kIGEgY291cGxlIG9mIHRlc3RzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgZGVmaW5lcyBuZWVkZWQgZm9yIGluc3RhbGxhYmxlIE9JRCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2RwbGF5OC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbWlzc2luZyBlcnJvciBjb2RlLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglXZSBvbmx5IG5lZWQgdGhlIHJlbGF5IGRlYnVnIGNoYW5uZWwgb24gTVpfU1VQUE9SVEVEIHBsYXRmb3Jtcy4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdGVzdHMvbWlzYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIEdldFpvbmVBY3Rpb25Qb2xpY3kgaW1wbGVtZW50YXRpb24uCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9GaS5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCUtpbW1vIE15bGx5dmlydGEgPGtpbW1vLm15bGx5dmlydGFAZ21haWwuY29tPgoJRmlubmlzaCByZXNvdXJjZXMgZm9yIHVuaW5zdGFsbGVyLgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL29tLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCBhIGZldyB0ZXN0cyBmb3Igb2JqZWN0IG1hbmFnZXIuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3ZpcnR1YWwuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRkIGJyYWNrZXRzIGFyb3VuZCAoYSk/YjpjIGNvbnN0cnVjdC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9oZWxwZXJzLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lwcml2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW5hbWUgQUNUSU9OX0RvVG9wTGV2ZWxJTlNUQUxMIHRvIE1TSV9JbnN0YWxsUGFja2FnZSwgcmVtb3ZlIGl0cwoJZHVwbGljYXRlIDR0aCBwYXJhbWV0ZXIuCglTcGxpdCB0aGUgY29kZSB0byBjb3B5IGEgcGFja2FnZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgoyMDA1LTA5LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUdldCByaWQgb2YgdGhlIGRlYnVnIGNoYW5uZWxzIHN1cHBvcnQuCgoJKiBkbGxzL3VzZXIvZGVmd25kLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUphc29uIEVkbWVhZGVzIDx1c0BlZG1lYWRlcy5tZS51az4KCUFsd2F5cyByZXR1cm4gTUFfQUNUSVZBVEUgZm9yIFdNX01PVVNFQUNUSVZBVEUgaW4gRGVmV2luZG93UHJvYy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dsZGFwMzIvYmVyLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCB3YXJuaW5ncyBpbiA2NGJpdC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBEZW5pcyBMdWtpYW5vdiA8ZGVuaXNAdm94ZWxzb2Z0LmNvbT4KCVVzZSBJQ1VfQlJPV1NFUl9NT0RFIGluIEludGVybmV0Q2Fub25pY2FsaXplVXJsLgoKCSogaW5jbHVkZS93aW5lL2RlYnVnLmgsIGxpYnMvd2luZS9kZWJ1Zy5jLCBsaWJzL3dpbmUvd2luZS5kZWYsCgkgIGxpYnMvd2luZS93aW5lLm1hcDoKCUV4cG9ydCB0aGUgZ2V0X2NoYW5uZWxfZmxhZ3MgZnVuY3Rpb24gYXZvaWQgd2FybmluZ3Mgd2hlbiBwYXNzaW5nIGEKCU5VTEwgZm9ybWF0IHRvIHdpbmVfZGJnX2xvZy4KCVJlbW92ZWQgYSBmZXcgbm8gbG9uZ2VyIHVzZWQgZnVuY3Rpb25zLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIFVwZGF0ZVdpbmRvdywgaXQgY2F1c2VzIHRyb3VibGUgd2l0aCBXU19FWF9UUkFOU1BBUkVOVC4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgZGVmaW5lIHNvbWUgZnVuY3Rpb25zL3ZhcmlhYmxlcyBpZiB0aGV5IHdvbid0IGJlIHVzZWQgYWZ0ZXIgaW4KCXdpbmVkM2QuCgoJKiB0b29scy93aW5lbWFrZXI6IFJlbW92ZWQgcnVsZXMgZm9yIC5kYmcuYyBmaWxlcy4KCgkqIGRsbHMvYWN0aXZlZHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2FkdnBhY2svLmN2c2lnbm9yZSwgZGxscy9hbXN0cmVhbS8uY3ZzaWdub3JlLAoJICBkbGxzL2F0bC8uY3ZzaWdub3JlLCBkbGxzL2F2aWNhcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwgZGxscy9jYWJpbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY2FwaTIwMzIvLmN2c2lnbm9yZSwgZGxscy9jYXJkcy8uY3ZzaWdub3JlLAoJICBkbGxzL2NmZ21ncjMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY2F0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsCgkgIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NyeXB0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3RsM2QvLmN2c2lnbm9yZSwKCSAgZGxscy9kM2Q4Ly5jdnNpZ25vcmUsIGRsbHMvZDNkOS8uY3ZzaWdub3JlLCBkbGxzL2QzZGltLy5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkcm0vLmN2c2lnbm9yZSwgZGxscy9kM2R4OC8uY3ZzaWdub3JlLCBkbGxzL2QzZHhvZi8uY3ZzaWdub3JlLAoJICBkbGxzL2RiZ2hlbHAvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLAoJICBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dDgvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWJhbmQvLmN2c2lnbm9yZSwgZGxscy9kbWNvbXBvcy8uY3ZzaWdub3JlLAoJICBkbGxzL2RtaW1lLy5jdnNpZ25vcmUsIGRsbHMvZG1sb2FkZXIvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXNjcmlwdC8uY3ZzaWdub3JlLCBkbGxzL2Rtc3R5bGUvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXN5bnRoLy5jdnNpZ25vcmUsIGRsbHMvZG11c2ljLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG11c2ljMzIvLmN2c2lnbm9yZSwgZGxscy9kcGxheS8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2RwbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBuaHBhc3QvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvLmN2c2lnbm9yZSwKCSAgZGxscy9kc3dhdmUvLmN2c2lnbm9yZSwgZGxscy9keGRpYWduLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHhlcnI4Ly5jdnNpZ25vcmUsIGRsbHMvZHhlcnI5Ly5jdnNpZ25vcmUsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2x1MzIvLmN2c2lnbm9yZSwgZGxscy9nbHV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9oaGN0cmwub2N4Ly5jdnNpZ25vcmUsIGRsbHMvaWNjdmlkLy5jdnNpZ25vcmUsCgkgIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2lmc21nci52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvaXBobHBhcGkvLmN2c2lnbm9yZSwgZGxscy9pdHNzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwKCSAgZGxscy9tYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9tY2lhdmkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21jaWNkYS8uY3ZzaWdub3JlLCBkbGxzL21jaXNlcS8uY3ZzaWdub3JlLAoJICBkbGxzL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy9tbGFuZy8uY3ZzaWdub3JlLAoJICBkbGxzL21tZGV2bGRyLnZ4ZC8uY3ZzaWdub3JlLCBkbGxzL21vbm9kZWJnLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9tc2FkcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vbXNnNzExLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vd2luZW1wMy8uY3ZzaWdub3JlLAoJICBkbGxzL21zY21zLy5jdnNpZ25vcmUsIGRsbHMvbXNkbW8vLmN2c2lnbm9yZSwgZGxscy9tc2h0bWwvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2kvLmN2c2lnbm9yZSwgZGxscy9tc2ltZzMyLy5jdnNpZ25vcmUsIGRsbHMvbXNpc3lzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQyMC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydDQwLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0ZC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmlkYzMyLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLAoJICBkbGxzL21zd3NvY2svLmN2c2lnbm9yZSwgZGxscy9tc3htbDMvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL25ld2Rldi8uY3ZzaWdub3JlLAoJICBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvb2Jqc2VsLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2RiY2NwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWFjYy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3Bvd3Jwcm9mLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9xY2FwLy5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6Ly5jdnNpZ25vcmUsCgkgIGRsbHMvcmFzYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9yaWNoZWQyMC8uY3ZzaWdub3JlLAoJICBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvcnNhYmFzZS8uY3ZzaWdub3JlLCBkbGxzL3JzYWVuaC8uY3ZzaWdub3JlLAoJICBkbGxzL3NlY3VyMzIvLmN2c2lnbm9yZSwgZGxscy9zZW5zYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hmb2xkZXIvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc25tcGFwaS8uY3ZzaWdub3JlLCBkbGxzL3N0ZG9sZTIudGxiLy5jdnNpZ25vcmUsCgkgIGRsbHMvc3Rkb2xlMzIudGxiLy5jdnNpZ25vcmUsIGRsbHMvc3RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsCgkgIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwgZGxscy91bmljb3dzLy5jdnNpZ25vcmUsIGRsbHMvdXJsLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzcDEwLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXh0aGVtZS8uY3ZzaWdub3JlLCBkbGxzL3ZkaGNwLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3ZkbWRiZy8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwKCSAgZGxscy92bW0udnhkLy5jdnNpZ25vcmUsIGRsbHMvdm5idC52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92bmV0Ymlvcy52eGQvLmN2c2lnbm9yZSwgZGxscy92dGRhcGkudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdndpbjMyLnZ4ZC8uY3ZzaWdub3JlLCBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5lZDNkLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5tbS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpd2F2ZS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lYWxzYS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lZXNkLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZWphY2svLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lbmFzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm5scy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnRhYjMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2ludHJ1c3QvLmN2c2lnbm9yZSwgZGxscy93bGRhcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvd3RzYXBpMzIvLmN2c2lnbm9yZSwgZGxscy94MTFkcnYvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvY29udHJvbC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9leHBhbmQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvaGgvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbXNpZXhlYy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdzdnIzMi8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9ycGNzcy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ydW5kbGwzMi8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9zdGFydC8uY3ZzaWdub3JlLCBwcm9ncmFtcy90YXNrbWdyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lYm9vdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lYnJvd3Nlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY2ZnLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVkYmcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVwYXRoLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV2ZG0vLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW52ZXIvLmN2c2lnbm9yZToKCVdlIGFyZSBubyBsb25nZXIgZ2VuZXJhdGluZyAuZGJnLmMgZmlsZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYzoKCUtpbW1vIE15bGx5dmlydGEgPGtpbW1vLm15bGx5dmlydGFAZ21haWwuY29tPgoJQnJpbmcgRmlubmlzaCByZXNvdXJjZXMgdXAgdG8gZGF0ZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZnJvbSByZWdlZGl0L3RyZWV2aWV3LmMuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2FzdCB0aGUgcmVzdWx0IG9mIHN0cmxlbigpIHRvIERXT1JEIGFuZCBwcmludCBpdCB2aWEgJWxkIHRvIGdldCByaWQKCW9mIHdhcm5pbmdzIHdpdGggZ2NjIDMuMi4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2s6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgd2luYXBpX2NoZWNrIGZvciAiZmFsc2UiIEhBVkVfKiBtYWNyb3MuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgd2luMzIuYXBpIHRvIGN1cnJlbnQgQ1ZTLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIGZ1bmN0aW9uIHRvIHJlYWQgYSBwcm9wZXJ0eSBhcyBhbiBpbnRlZ2VyLgoKCSogZGxscy93aW5lZDNkL3N1cmZhY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkZWQgc3VwcG9ydCBmb3IgYmFja2J1ZmZlciB3aXRoIHRoZSBmb3JtYXRzIEExUjVHNUI1IGFuZCBYMVI1RzVCNS4KCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jOgoJSC4gVmVyYmVldCA8aHZlcmJlZXRAZ21haWwuY29tPgoJRml4IERYVDIgJiBEWFQ0IHN1cHBvcnQgZm9yIGQzZDguCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwgZGxscy9yaWNoZWQyMC9yb3cuYzoKCUtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBSZWltcGxlbWVudGF0aW9uIG9mIEVNX0xJTkVMRU5HVEguCgktIFNvbWUgYXR0ZW1wdCBhdCBkb2N1bWVudGF0aW9uIG9mIGRvdWJsZS1saW5rZWQgbGlzdCBvZgoJICBNRV9EaXNwbGF5SXRlbSdzLgoKCSogZGxscy91cmxtb24vdXJsbW9uLmluZjogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVJlZ2lzdGVyIHpvbmVzLgoKCSogZGxscy91cmxtb24vc2VjX21nci5jLCBkbGxzL3VybG1vbi90ZXN0cy9taXNjLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgTWFwVXJsVG9ab25lIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdHViYmVkIG91dCBpbXBsZW1lbnRhdGlvbiBvZiBJQWR2aXNlU2luayBhbmQgYWR2aXNlIHRoZQoJZGVsZWdhdGUgb2JqZWN0IHRvIHVzZSBpdC4KCjIwMDUtMDktMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2R4ZXJyOC9NYWtlZmlsZS5pbiwgZGxscy9keGVycjkvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCURlY2xhcmUgZGVidWcgY2hhbm5lbHMgYXMgc3RhdGljIHZhcmlhYmxlcyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8KCWdlbmVyYXRlIGFuIGV4dGVybmFsIC5kYmcuYyBmaWxlIHRvIGRlZmluZSB0aGVtLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgdGhlIGludGVyZmFjZXMgdGhhdCBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IHRoZSBkYXRhIGNhY2hlCgkgIGV4cGxpY2l0IHNvIHRoZWlyIGlzIG5vIGNvbmZ1c2lvbiBpbiB0aGlzIGZpbGUgYXMgdG8gd2hhdCBpdCBzaG91bGQKCSAgYmUgaW1wbGVtZW50aW5nIGFuZCB3aGF0IHRoaXMgb2JqZWN0IHNob3VsZCBpbXBsZW1lbnQuCgktIERlbGVnYXRlIHNvbWUgSU9sZU9iamVjdCBtZXRob2RzIHRvIHRoZSBzZXJ2ZXIgSU9sZU9iamVjdCBpZiBpdCBpcwoJICBydW5uaW5nLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJVXNlIExpbnV4IGZ1dGV4ZXMgaW5zdGVhZCBvZiBzZW1hcGhvcmVzIGlmIHBvc3NpYmxlIGZvciBjcml0aWNhbAoJc2VjdGlvbiB3YWl0cy4KCgkqIE1ha2UucnVsZXMuaW4sIGxpYnMvd3BwLy5jdnNpZ25vcmUsIGxpYnMvd3BwL01ha2VmaWxlLmluLAoJICBsaWJzL3dwcC9wcGwubCwgcHJvZ3JhbXMvd2luZWRiZy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2lkbC8uY3ZzaWdub3JlLCB0b29scy93aWRsL01ha2VmaWxlLmluLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93bWMvLmN2c2lnbm9yZSwgdG9vbHMvd21jL01ha2VmaWxlLmluLAoJICB0b29scy93bWMvbWNsLmMsIHRvb2xzL3dyYy8uY3ZzaWdub3JlLCB0b29scy93cmMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dyYy9wYXJzZXIubDoKCU5vdyB0aGF0IHdlIGFyZSByZXF1aXJpbmcgYmlzb24gYW55d2F5LCBtYWtlIHRoZSAudGFiLmMgZmlsZSB1c2UgdGhlCglzYW1lIGJhc2UgbmFtZSBhcyB0aGUgLnkgZmlsZSwgc28gdGhhdCB3ZSBjYW4gZ2VuZXJhdGUgY29ycmVjdAoJZGVwZW5kZW5jaWVzIGluIGFsbCBjYXNlcy4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBZGQgTlVMTCBjaGVjayBmb3Igc2lua0ludGVyZmFjZSBpbiBEYXRhQ2FjaGVfR2V0QWR2aXNlLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWRkIG1pc3NpbmcgISB0byBmaXggYSByZXZlcnNlZCBjb25kaXRpb24gY2hlY2sgaW4KCU9sZUNyZWF0ZURlZmF1bHRIYW5kbGVyLCBpbiBvcmRlciB0byBtYXRjaCBpbnRlbnQgaW4gY29tbWVudC4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRW5jb2RlIFJTQSBwdWJsaWMga2V5IG1vZHVsdXMgYXMgdW5zaWduZWQgaW50ZWdlciwgd2l0aCB0ZXN0cy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmg6CglILiBWZXJiZWV0IDxodmVyYmVldEBnbWFpbC5jb20+CglGaXggbWlzc2luZyBwcm90b3R5cGVzIHdoZW4gdXNpbmcgblZpZGlhIE9wZW5HTCBoZWFkZXJzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXhwbGljaXRseSBpZ25vcmUgV01fR0VUSUNPTiBtZXNzYWdlIGluIHRoZSBtZXNzYWdlIHRlc3RzLgoKCSogZGxscy94MTFkcnYvb3BlbmdsLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglVc2UgMCBpbnN0ZWFkIG9mIE5VTEwgaW4gY3JlYXRlX2dseHBpeG1hcCgpLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1vcmUgYWN0aW9uIHN0dWJzLCByZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvZGVidWcuaCwgbGlicy93aW5lL2RlYnVnLmMsIGxpYnMvd2luZS9sb2FkZXIuYywKCSAgbGlicy93aW5lL3dpbmUuZGVmLCBsaWJzL3dpbmUvd2luZS5tYXAsIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzoKCU5ldyBzY2hlbWUgZm9yIGtlZXBpbmcgdHJhY2sgb2YgZGVidWcgY2hhbm5lbHMgdGhhdCBkb2Vzbid0IHJlcXVpcmUKCW1haW50YWluaW5nIGEgbGlzdCBvZiBhbGwgbG9hZGVkIGRsbHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgRHJhd01lbnVCYXIgYW5kIFNldE1lbnUgdGVzdHMgcGFzcyB1bmRlciBXaW5lLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwbGl0IGNvbW1hbmQgbGluZSBwYXJzaW5nIGZyb20gTVNJX0luc3RhbGxQYWNrYWdlIGludG8gYSBzZXBhcmF0ZQoJZnVuY3Rpb24uCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBwcm9ncmVzcyBjb250cm9sLgoKCSogc2VydmVyL29iamVjdC5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLWRldmVsQGtpZXZpbmZvLmNvbT4KCUZpeCByZWZjb3VudCBsZWFrIGFuZCByZXR1cm4gY29ycmVjdCBlcnJvciBpbiBjcmVhdGVfbmFtZWRfb2JqZWN0LgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvdGVzdHMvZGIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbmQgdGVzdCBNc2lWaWV3R2V0Q29sdW1uSW5mbyBhbmQgYmluYXJ5IGZpZWxkcy4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBxdW90ZSBudW1iZXJzIGluIGEgcXVlcnksIGFzIGl0IGRvZXNuJ3QgcGFyc2UgY29ycmVjdGx5LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgc29tZSBVbmljb2RlLT5BTlNJIGNyb3NzLWNhbGxzIGluIGNyeXB0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhIGJhc2ljIGJlZ2lubmluZyBmb3IgZm5JTUxhbmdGb250TGlua19Db2RlUGFnZVRvQ29kZVBhZ2VzLAoJZm5JTUxhbmdGb250TGlua19Db2RlUGFnZXNUb0NvZGVQYWdlIGFuZAoJZm5JTUxhbmdGb250TGlua19HZXRGb250Q29kZVBhZ2VzLgoJQWxzbyBzb21lIHRlc3RzIGZvciB0aGUgbmV3IGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGJ1bmNoIG9mIHRlc3QgY2FzZXMgZm9yIGF0b21zLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Rlc3RzL21vbml0b3IuYywKCSAgaW5jbHVkZS93aW51c2VyLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRW51bURpc3BsYXlEZXZpY2VzIGFuZCBHZXRNb25pdG9ySW5mbyBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIGRldmljZQoJbmFtZSBmb3IgdGhlIHByaW1hcnkgZGV2aWNlLgoJTWFrZSBib3RoIEVudW1EaXNwbGF5RGV2aWNlc0EgYW5kIEdldE1vbml0b3JJbmZvQSBjYWxsIHRoZWlyIHVuaWNvZGUKCWNvdW50ZXJwYXJ0cy4KCVVwZGF0ZSBwcm90b3R5cGUgb2YgRW51bURpc3BsYXlEZXZpY2VzLgoJQWRkIHNvbWUgdGVzdHMuCgoJKiBkbGxzL3NldHVwYXBpL1N2LnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjOgoJQW5kZXJzIEJlcmdoIDxhbmRlcnMxQGdtYWlsLmNvbT4KCUFkZGVkIFN3ZWRpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gU3RvcmUgdGhlIEhISW5mbyBzdHJ1Y3QgaW4gdGhlIFNpemVCYXIgaHduZC4KCS0gU2V0IHRoZSBkZWZhdWx0IG5hdmlnYXRpb24gcGFuZSB3aWR0aCBpZiBubyB3aWR0aCBwcm92aWRlZC4KCS0gSGFuZGxlIGRyYWdnaW5nIG9mIHRoZSBTaXplQmFyLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjazoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IHRyZWF0IGFic2VuY2Ugb2YgY29uZGl0aW9uYWwgYXMgY29uZmlnLmggYmVpbmcgdXNlbGVzcyBpZgoJd2luZS9wb3J0LmggaXMgaW5jbHVkZWQsIGFzIGl0J3MgbmVjZXNzYXJ5IGluIHRoYXQgY2FzZS4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywKCSAgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IENyeXB0SW1wb3J0L0V4cG9ydFB1YmxpY0tleUluZm8uCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGZldyBtb3JlIG1pc3NpbmcgcHJvdG90eXBlcy4KCgkqIGRsbHMvZ2RpL2ZvbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURyYXcgdW5kZXJsaW5lIGFuZCBzdHJpa2VvdXQgZm9yIEV4dFRleHRPdXQgb24gYW4gb3BlbiBwYXRoIHVzaW5nCglQb2x5Z29uIHRvIG1vcmUgY2xvc2VseSBtaW1pYyB3aGF0IFdpbmRvd3MgZG9lcy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIGJ1aWxkIHRoZSBkZWYgZmlsZSBhZnRlciBhIG1ha2UgY2xlYW4gaW4gYSBtb2R1bGUKCXN1YmRpci4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNyZWF0ZSBNU0kgaGFuZGxlcyB1bmxlc3Mgd2UgaGF2ZSB0byBwYXNzIG9uZSB0aHJvdWdoIHRoZSBBUEkuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudCBzdGF0ZSB0cmFja2luZyBmb3IgcGl4ZWwgc2hhZGVyIGNvbnN0YW50cy4KCjIwMDUtMDktMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmM6CglEb24ndCBhcHBseSByZWxvY2F0aW9ucyBhIHNlY29uZCB0aW1lIHRvIHNlbGYgbG9hZGVkIHNlZ21lbnRzLgoJRml4ZWQgbWVzc2VkIHVwIGluZGVudGF0aW9uIGluIE5FX0ZpeHVwU2VnbWVudFByb2xvZ3MuCgoJKiBzZXJ2ZXIvLmN2c2lnbm9yZSwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvd2luZXNlcnZlci5tYW4uaW46CglJbml0aWFsIHZlcnNpb24gb2YgYSB3aW5lc2VydmVyIG1hbiBwYWdlLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3RpbWUuYywgaW5jbHVkZS9tc3ZjcnQvdGltZS5oOgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgX2RzdGJpYXMgYW5kICBfX3BfX2RzdGJpYXMuCglBZGRlZCBtYWNyb3MgZm9yIF9kc3RiaWFzLCBfZGF5bGlnaHQsIF90aW1lem9uZSBhbmQgX3R6bmFtZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9wcm9jZXNzLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBrZXJuZWwzMiBwcm9jZXNzIGFmZmluaXR5IGhhbmRsaW5nIG9uIHRvcCBvbiBudGRsbC4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2hhbmdlIHRoZSBmb3JtYXQgb2Ygc3VyZmFjZV9TYXZlU25hcHNob3QgdG8gVEdBIGZyb20gUFBNIGFuZCBhZGQKCXN1cHBvcnQgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMgYW5kIGFuIGFscGhhIGNoYW5uZWwuCgoJKiBzZXJ2ZXIvaGFuZGxlLmM6CglVc2UgdGhlIHByb3BlciBmb3JtYXQgdG8gcHJpbnQgaGFuZGxlcyBpbiBoYW5kbGVfdGFibGVfZHVtcC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogRml4ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIG9uIE1hY09TLgoKCSogZGxscy9kZHJhdy9jbGlwcGVyLmM6CglUaGUgY2xpcCBsaXN0IGlzIGluIHNjcmVlbiBjb29yZGluYXRlcyBzbyB3ZSBuZWVkIHRvIG1hcCB0aGUgcmVzdWx0IG9mCglHZXRSYW5kb21SZ24gaWYgdGhlIFdpbmRvd3MgdmVyc2lvbiBpcyB3aW45eC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6CglGaXhlZCBkaXNhc3NlbWJsaW5nIGZ1bmN0aW9ucyB0byBoYW5kbGUgMTYtYml0IGNvZGUgc2VnbWVudHMgcHJvcGVybHkuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlIHRoZSBwcm9wZXIgY2FsbGluZyBjb252ZW50aW9uIGZvciAyIDE2LWJpdCBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDb3JyZWN0IGEgcHJvYmxlbSB3aXRoIGxvY2tpbmcgbm9ucG93ZXIgMiBiYWNrIGFuZCBmcm9udCBidWZmZXJzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglUb2xlcmF0ZSBpb2N0bCBmYWlsdXJlIGluIEdldENvbW1TdGF0ZSgpIGluIG9yZGVyIHRvIGJlIGNhcGFibGUgdG8gdXNlCglzb2Z0bW9kZW1zLgoKMjAwNS0wOS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUFkZGVkIGEgdGVzdCB0byBjb25maXJtIHRoZSBiZWhhdmlvciBvZiBHZXRSYW5kb21SZ24uCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgaW5jbHVkZS93aW5lL2RlYnVnLmgsIGxpYnMvd2luZS9kZWJ1Zy5jOgoJRXhwb3J0IHRoZSB0ZW1wIGJ1ZmZlciBmdW5jdGlvbmFsaXR5IGluIHRoZSBkZWJ1ZyBmdW5jdGlvbnMgaW50ZXJmYWNlCgl0byBhbGxvdyBzaGFyaW5nIG1vcmUgY29kZSBiZXR3ZWVuIGxpYndpbmUgYW5kIG50ZGxsLgoKCSogZGxscy9hY3RpdmVkcy9hY3RpdmVkcy5zcGVjLCBkbGxzL2FjdGl2ZWRzL2FjdGl2ZWRzX21haW4uYywKCSAgaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Fkc2hscC5oLAoJICBpbmNsdWRlL2lhZHMuaWRsLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgaWFkcy5pZGwgdG8gZGVmaW5lIHRoZSBJQURzQ29udGFpbmVyIGludGVyZmFjZS4KCUFkZCBhZHNobHAuaCB0byBkZWNsYXJlIHRoZSBBRHMqIGZ1bmN0aW9ucy4KCUZpeCB0aGUgQURzT3Blbk9iamVjdCgpIHByb3RvdHlwZS4KCVVwZGF0ZSB3aW4zMi5hcGkgdG8gbWF0Y2guCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJV2hlbiBzY3JvbGxpbmcsIGZpcnN0IHVwZGF0ZSB0aGUgbmV3IHBvc2l0aW9uIG9mIHRoZSBjb250cm9sIGJlZm9yZQoJY2FsbGluZyBVcGRhdGVXaW5kb3coKS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRGUucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZWdlZGl0IHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL2QzZHhvZi9kM2R4b2Yuc3BlYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglFeHBvcnQgdGhlIERsbChVbilSZWdpc3RlclNlcnZlcigpIGZ1bmN0aW9ucyB0byBtYWtlIGQzZHhvZi5kbGwgYQoJc2VsZi1yZWdpc3RlcmluZyBkbGwuCgoJKiBkbGxzL2R4Z3VpZC9keGd1aWQuYywgaW5jbHVkZS9kM2RybS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWZpbmUgdGhlIERpcmVjdDNEUk0gR1VJRHMgaW4gZDNkcm0uaC4KCUluY2x1ZGUgZDNkcm0uaCBpbiBkeGd1aWQuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L2ludGVybG9ja2VkLmMsIGxpYnMvd2luZS9kZWJ1Zy5jLCBsb2FkZXIva3RocmVhZC5jLAoJICBzZXJ2ZXIvY2hhbmdlLmM6CglVc2UgaW50IGluc3RlYWQgb2YgbG9uZyBpbiBpbnRlcmxvY2tlZF8qIGZ1bmN0aW9ucyBmb3IgNjQtYml0Cgljb21wYXRpYmlsaXR5LgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOgoJVXNlIGEgbGFyZ2VyIGJ1ZmZlciBpbiBDb3B5RmlsZVcgbm93IHRoYXQgdGhlIGZpbGUgaGFuZGxlIG1heSBub3QKCWFsd2F5cyBiZSBjYWNoZWQuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHRhYmxlJ3Mgcm93IHNpemUgYW5kIHVzZSBpdC4KCUZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSB0YWJsZSBjb2RlLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCXZvbGF0aWxlIGlzIHZhbGlkIGV2ZXJ5d2hlcmUgY29uc3QgaXMgdmFsaWQuCgoJKiBwcm9ncmFtcy93Y21kL05vLnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfTm8ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYzoKCUFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgoJTm9yd2VnaWFuIHRyYW5zbGF0aW9uIG9mIHdjbWQgYW5kIHdpbmVjb25zb2xlLgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYvb3BlbmdsLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbiB4MTFkcnYgZXNjYXBlIHRoYXQgcmV0dXJucyBhIGdseCBkcmF3YWJsZS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L05vLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vTm8ucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Oby5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLAoJICBwcm9ncmFtcy9zdGFydC9Oby5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9Oby5yYywKCSAgcHJvZ3JhbXMvdmlldy92aWV3cmMucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbiBvZiBzb21lIHByb2dyYW1zLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBub3cgcGFzc2luZyBhY2Nlc3MgcmlnaHRzIHdoZW4gY3JlYXRpbmcgYSBuYW1lZCBwaXBlIGluIE5URExMCgktIHJlaW1wbGVtZW50ZWQgS2VybmVsMzIuQ3JlYXRlUGlwZSBwdXJlbHkgb24gdG9wIG9mIE5URExMIEFQSXMKCS0gYW5vbnltb3VzIHBpcGUgaGFuZGxlcyBzaG91bGQgaGF2ZSB0aGUgU1lOQ0hST05JWkUgYml0IHNldAoKCSogZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9Oby5yYywgZGxscy9tc2FjbS9tc2FjbS5yYywKCSAgZGxscy9tc2FjbS9tc2FjbV9Oby5yYywgZGxscy9tc3JsZTMyL21zcmxlX05vLnJjLAoJICBkbGxzL21zcmxlMzIvcnNyYy5yYywgZGxscy9vbGVkbGcvb2xlZGxnX05vLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLAoJICBkbGxzL3NoZG9jdncvTm8ucmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfTm8ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05vLnJjLAoJICBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfTm8ucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Oby5yYywgZGxscy93aW5tbS93aW5tbV9Oby5yYywKCSAgZGxscy93aW5tbS93aW5tbV9yZXMucmMsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnJjLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMl9Oby5yYzoKCUFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgoJQWRkZWQgTm9yd2VnaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS91cGRhdGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB2YXJpb3VzIHF1ZXJ5IHJlbGF0ZWQgbWVtb3J5IGxlYWtzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRGUucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZXNvdXJjZSBmaWxlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCUtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBDb3B5IGtleSBuYW1lIHdvcmtzLgoJLSBGYXZvcml0ZXMgKGFkZGluZywgcmVtb3ZpbmcsIGdvaW5nIHRvKSB3b3JrLgoJLSBBZGRlZCBjb250ZXh0IHNlbnNpdGl2ZSBncmF5aW5nIHRvIHNvbWUgbWVudSBvcHRpb25zLgoJLSBDbGVhbnVwIG9mIHN0YXR1cyBiYXIgdXBkYXRlLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvdXNlci9tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlcGxhY2UgdGhlICdpZiAoIWNvbmQpIDsgZWxzZSBjb2RlJyBjb25zdHJ1Y3Qgd2l0aCB0aGUgc3RhbmRhcmQgJ2RvIHsKCWNvZGUgfSB3aGlsZSAoMCknIGNvbnN0cnVjdCBjb21iaW5lZCB3aXRoIGEgcmVndWxhciAnaWYnLgoKCSogZGxscy9vbGUzMi9vbGUyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZS5zcGVjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCAuc3BlYyBkZWNsYXJhdGlvbnMgZm9yIGZ1bmN0aW5vcyB3aXRoIDY0Yml0IGFyZ3VtZW50cyAocmVwb3J0ZWQgYnkKCXdpbmFwaV9jaGVjaykuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBhIG1hY3JvIGZ1bmN0aW9uIGZvciB1bmltcGxlbWVudGVkIGFjdGlvbnMuCglBZGQgc29tZSBtb3JlIHVuaW1wbGVtZW50ZWQgYWN0aW9uIHN0dWJzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZCBNWVQgKE1hbGF5c2lhbiBUaW1lKSBhbmQgTk9WU1QgKE5vdm9zaWJpcnNrIFN1bW1lciBUaW1lKS4KCgkqIGRsbHMvbXNpL21zaXF1ZXJ5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbGwgb3V0IHRoZSBzdHVicyBmb3IgTXNpQXBwbHlUcmFuc2Zvcm1BL1cgYSBiaXQgbW9yZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9kZGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGxpbmcgRGRlVW5pbml0aWFsaXplIGhhbmdzIERERSB0ZXN0IG9uIFhQIFNQMSwgc28gcmVtb3ZlIHRoYXQgY2FsbCwKCWFuZCBhZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgaXQuCgoJKiBkbGxzL21zaS90ZXN0cy9mb3JtYXQuYywgZGxscy9tc2kvdGVzdHMvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsZSBsZWFrcyBpbiB0aGUgdGVzdCBjYXNlcy4KCgkqIGRsbHMvbXNpL3N0cmluZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gc2V0IHRoZSBtaW5pbXVtIHNpemUgYmVmb3JlIGFsbG9jYXRpbmcgc3RyaW5nIHRhYmxlCgltZW1vcnkuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBpdCBjbGVhciB0aGUgZW1wdHkgYm9keSBzZWN0aW9ucyBhcmUgbm90IGFjY2lkZW50YWwuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhPTEVNRU5VIGlzIGEgJ2xvbmcnIGFzIGZhciBhcyB3aW5hcGlfY2hlY2sgaXMgY29uY2VybmVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmM6CglLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCVVwZGF0ZSBGaW5uaXNoIHJlc291cmNlcy4KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBPcHRpb25hbCBkZXN0aW5hdGlvbnMgaW4gc3R5bGVzaGVldHMgYXJlIG5vdyBza2lwcGVkIHByb3Blcmx5IChhbmQKCSAgbm90IHRyZWF0ZWQgYXMgdGhlICJwcm9wZXIiIHN0eWxlcyBhcyB0aGV5IHdlcmUgYmVmb3JlKS4KCS0gRU9GIGNvbmRpdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHlsZXNoZWV0IGlzIG5vIGxvbmdlciBwdXR0aW5nCgkgIHRoZSByZWFkZXIgaW50byBpbmZpbml0ZSBsb29wLAoJLSBIYWxmLWZ1bGwgaW5wdXQgYnVmZmVycyBkb24ndCB0cmlnZ2VyIEVPRiBhbnltb3JlIChhbHRob3VnaCBpdAoJICBjb3VsZCwgaW4gdGhlb3J5LCBicmVhayBzb21lIGFwcHMsIEkgZmluZCBpdCB1bmxpa2VseSAtIGFuZCB0aGUKCSAgY2hhbmdlIG1ha2VzIE91dCBmcm9tIEJvbmV2aWxsZSBpbnN0YWxsZXIgZGlzcGxheSBsaWNlbnNlIHByb3Blcmx5KS4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHdpbjMyLmFwaSB0byBtYXRjaCB0aGUgY3VycmVudCBzb3VyY2VzLgoJRml4IHRoZSB1c3AxMC5kbGwgbmFtZS4KCUZpeCBQQkVSVkFMIGFscGhhYmV0aWNhbCBvcmRlci4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q5L2QzZDlfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb2N1bWVudGF0aW9uIHR3ZWFrcyB0byBtYWtlIHdpbmFwaV9jaGVjayBoYXBweS4KCgkqIGluY2x1ZGUvdmZ3Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIEFWSVNUUkVBTVJFQURfQ09OVkVOSUVOVC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jLCBkbGxzL3NlY3VyMzIvdGVzdHMvbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfbG9jYWwucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB3aW5hcGlfY2hlY2sgc28gaXQgY29uc2lkZXJzICdsb25nbG9uZycgKHdpbiouYXBpIGZpbGVzKSBhcwoJY29tcGF0aWJsZSB3aXRoICdkb3VibGUnIChzcGVjIGZpbGVzKS4KCgkqIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglTY3JlZW4gZGVwdGggY2Fubm90IGJlIHNlbGVjdGVkIHdoZW4gZG91YmxlIGJ1ZmZlcmluZyBpcyBlbmFibGVkLgoJRGlzYWJsZSBkZXB0aCBzZWxlY3Rpb24gd2hlbiBpdCdzIHRoZSBjYXNlLgoKMjAwNS0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3ZlcnNpb24uYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywKCSAgZGxscy9xdWFydHovdHJhbnNmb3JtLmMsIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYywKCSAgZGxscy91c2VyL21lbnUuYywgZGxscy94MTFkcnYvb3BlbmdsLmM6CglSZXBsYWNlIERQUklOVEYgYnkgVFJBQ0UgaW4gYSBmZXcgcGxhY2VzLgoKCSogZGxscy9tc2h0bWwvTm8ucmMsIGRsbHMvbXNodG1sL3JzcmMucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCU5vcndlZ2lhbiB0cmFuc2xhdGlvbiBvZiBtc2h0bWwuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfTm8ucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9oaGN0cmwub2N4L05vLnJjLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLnJjLAoJICBkbGxzL3NlcmlhbHVpL05vLnJjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLAoJICBkbGxzL3NldHVwYXBpL05vLnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RldmljZV9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50IEJlZ2luL1ZlcnRleC9FbmQgcmVuZGVyaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ29ycmVjdGx5IHJlc2l6ZSB0aGUgY2hpbGQgd2luZG93cy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBmdW5jdGlvbiBuYW1lcy4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMl8xNi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhbGwgMTYtYml0IGZ1bmN0aW9ucyB0byBhbiBhcHByb3ByaWF0ZSAxNi1iaXQgZmlsZS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL05vLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL05vLnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9GaS5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0ZpLnJjOgoJS2ltbW8gTXlsbHl2aXJ0YSA8a2ltbW8ubXlsbHl2aXJ0YUBnbWFpbC5jb20+CglVcGRhdGUgRmlubmlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGNvcHlpbmcgb2YgdGhlIGluc3RhbGwgcGFja2FnZSB0byBhIHRlbXBvcmFyeSBmaWxlIGluIG9uZSBwbGFjZQoJb25seS4KCgkqIGRsbHMvbXNpL2ZpbGVzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbm90aGVyIG1lbW9yeSBsZWFrLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIElzb2xhdGVDb21wb25lbnRzIGFjdGlvbi4KCjIwMDUtMDktMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rkay93ZG0uaDoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZGVkIGRkay93ZG0uaC4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBtZW1vcnkgbGVhay4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2F2ZXJzLmNvbT4KCU1vdmUgZGVza3RvcF92aSBpbnNpZGUgcHJvY2Vzc19hdHRhY2ggYW5kIHJlbWVtYmVyIHRvIGZyZWUgaXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQmluZEltYWdlIGFjdGlvbi4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglPcHRpb25hbGx5IHJlcGFjayBub25wb3dlciAyIHRleHR1cmVzIHRvIHRoZSBleHBlY3RlZCBzcGFuIGxlbmd0aCB3aGVuCglhIHRleHR1cmVzIGlzIGxvY2tlZC4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGJ1Z2d5IGdhbWVzIGxpa2UgV2FyaGFtbWVyCgk0MGsgdGhhdCBkb24ndCB3b3JrIHdpdGggdGhlIG9kZCBzcGFuIHNpemVzIHByb2R1Y2UgYnkgZGVmYXVsdAoJbm9ucG93ZXIgMiBzdXBwb3J0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBhdGNoRmlsZXMgYWN0aW9uLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvZGVidWcuYywgbGlicy93aW5lL3dpbmUuZGVmLAoJICBsaWJzL3dpbmUvd2luZS5tYXAsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURlZmluZWQgYSBwcm9wZXIgc3RydWN0dXJlIGZvciBkZWJ1ZyBjaGFubmVscy4KCUFsc28gcHV0IGFsbCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgaW5zaWRlIGEgc3RydWN0dXJlIGFuZCBhZGRlZAoJX193aW5lX2RiZ19zZXRfZnVuY3Rpb25zIHRvIGNoYW5nZSB0aGVtIGluc3RlYWQgb2YgZXhwb3J0aW5nIHRoZQoJcG9pbnRlcnMgZGlyZWN0bHkuCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaUdldFNob3J0Y3V0VGFyZ2V0QS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNb3ZlRmlsZXMgYWN0aW9uLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglFbmFibGUgZHh0MiBhbmQgZHh0NCBjb21wcmVzc2VkIHRleHR1cmVzIHRvIGJlIGNyZWF0ZWQgdmlhCglEZXZpY2VfQ3JlYXRlU3VyZmFjZS4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ09MT1JfM0RGQUNFIGlzIGEgYmV0dGVyIGNob2ljZSBmb3IgdGhlIGRpYWxvZyBiYWNrZ3JvdW5kLgoKCSogZGxscy9zZXR1cGFwaS9zdHJpbmd0YWJsZS5jLCBkbGxzL3NldHVwYXBpL3Rlc3RzL3N0cmluZ3RhYmxlLmM6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCS0gU3RyaW5nIGlkIDAgYmVjb21lcyBhIHJlc2VydmVkIChpbnZhbGlkKSBpZC4KCS0gU3RyaW5nVGFibGVTdHJpbmdGcm9tSWQgcmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIHRoZQoJICBzdHJpbmcgaWQgaXMgaW52YWxpZC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjOiBTdGV2ZW4gRWR3YXJkcyA8d2luZWhhY2tlckBnbWFpbC5jb20+CglTZXQgdGV4dCBvZiBoZWxwIG1lbnUgdG8gSGVscC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSZW1vdmVJbmlWYWx1ZXMgYWN0aW9uLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS92Zndtc2dzLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgc29tZSBtaXNzaW5nIGVycm9yIGNvZGVzLgoKCSogZGxscy9keGVycjgvZXJyb3JzLmF3aywgZGxscy9keGVycjkvZXJyb3JzLmF3azoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggZHhlcnIgYXdrIHNjcmlwdHMgdG8gb3V0cHV0IHNpbmdsZSBxdW90ZXMgcHJvcGVybHkuCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzb21lIElSdW5uaW5nT2JqZWN0IGZ1bmN0aW9ucyB0aGF0IGFjdHVhbGx5IHN0YXJ0IHRoZSBzZXJ2ZXIKCWFuZCBpbml0aWFsaXplIGl0LgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgT2xlUmVnRW51bVZlcmJzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGZhaWwgaW4gQ29SZWdpc3RlckNsYXNzT2JqZWN0IGlmIHRoZSBjbGFzcyBhbHJlYWR5IGV4aXN0cyBhbmQKCXRoZSBSRUdDTFNfTVVMVElQTEVVU0UgZmxhZyBpcyBzcGVjaWZpZWQuCgoJKiBpbmNsdWRlL3dpbnZlci5oOiBEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJRGVmaW5pdGlvbiBhZGRlZCBmb3IgVkZUMl9EUlZfVkVSU0lPTkVEX1BSSU5URVIuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNsZWFuIHVwIGFsbCB0aGUgb2JqZWN0cyBib3VuZCB0byB0aGUgZGV2aWNlIHdoZW4gdGhlIGRldmljZSBpcwoJZGVzdHJveWVkIGFzIGEgcmVzdWx0IG9mIGl0cyByZWYgY291bnQgcmVhY2hpbmcgemVyby4KCgkqIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oOgoJVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgX2dldF9zYmhfdGhyZXNob2xkIGFuZCBfc2V0X3NiaF90aHJlc2hvbGQKCWZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IGNvbXBpbGUgd2l0aG91dCBYUmVuZGVyLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGNhcHR1cmUgdGVzdCB0byBub3QgZmFpbCB3aGVuIElEaXJlY3RTb3VuZENhcHR1cmUgY2xhc3MgaXMgbm90CglyZWdpc3RlcmVkLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgYWR2YW50YWdlIG9mIHRoZSBtc2lfZ2V0X2RlZm9ybWF0dGVkX2ZpZWxkIGZ1bmN0aW9uIHRvIHNpbXBsaWZ5Cglzb21lIGNvZGUuCgoJKiBkbGxzL21zaS9maWxlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCB1c2luZyBzdGF0aWMgdmFyaWFibGVzIGluIHRoZSBJbnN0YWxsRmlsZXMgYWN0aW9uLgoKMjAwNS0wOS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglEZWZpbmUgZGF0YSB0eXBlcyB0byB0aGUgY29ycmVjdCBzaXplIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9jdXN0b20uYywKCSAgZGxscy9tc2kvZmlsZXMuYywgZGxscy9tc2kvaGVscGVycy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHZhcmlvdXMgbWVtb3J5IGxlYWtzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNraXAgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGZvbnQgaWRlbnRpZmllciBpZiBpdCdzIFwgb3IgJi4KCgkqIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jOgoJR2V0IHJpZCBvZiB0aGUgaGxwMnNnbWwgaGFjay4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJTGVhdmUgY3JlYXRpb24gb2YgdGhlIGRyaXZlIHN5bWxpbmtzIHRvIHdpbmVwcmVmaXhjcmVhdGUuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIGVycm9yIGludHJvZHVjZWQgd2hlbiBjb252ZXJ0aW5nIGRpYWxvZyBsaXN0cyB0byBzdGFuZGFyZAoJbGlzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxpZnkgdGhlIFByb2Nlc3NDb21wb25lbnRzIGFjdGlvbiBhIGxpdHRsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJRml4IGEgc2NhbGluZyBlcnJvciBpbiBWYXJSNEZyb21EZWMoKSBhbmQgVmFyUjhGcm9tRGVjKCkgdGhhdAoJaW5jb3JyZWN0bHkgbXVsdGlwbGllcyB0aGUgaGlnaCAzMiBiaXRzIG9mIHRoZSBERUNJTUFMIGJ5IDFlNjQgaW5zdGVhZAoJb2YgdGhlIGNvcnJlY3QgMl42NC4KCgkqIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywKCSAgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywKCSAgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLAoJICBkbGxzL2tlcm5lbC9tb2R1bGUuYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL29sZTMyL29sZTJfMTYuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy91c2VyL25vbmNsaWVudC5jLCBkbGxzL3VzZXIvd2luLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3dpbnRhYi5jOgoJUmVtb3ZlZCB1bnVzZWQgZGVidWcgY2hhbm5lbHMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCU1vZGlmeSBWYXJEaXYoKSBhbmQgVmFyU3ViKCkgdG8gdXNlIHRoZSBleGlzdGluZyBWYXJEZWNTdWIoKSBhbmQKCVZhckRlY0RpdigpIGZvciBERUNJTUFMLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUubm86CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCU5vcndlZ2lhbiB0cmFuc2xhdGlvbiBvZiByZWFkbWUgZmlsZS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW5pdGlhbGl6ZSBvdXQgcG9pbnRlciB0byBOVUxMIGJlZm9yZSBhY2Nlc3MgY2hlY2sgaW4KCSAgSVN0b3JhZ2VfQ3JlYXRlU3RvcmFnZS4KCS0gV3JpdGVDbGFzc1N0ZyBzaG91bGQgcmV0dXJuIEVfSU5WQUxJREFSRyBpZiBwc3RnIGlzIE5VTEwgaW5zdGVhZCBvZgoJICBhc3NlcnRpbmcuCgktIFJlYWRDbGFzc1N0ZyBzaG91bGQgcmV0dXJuIEVfSU5WQUxJREFSRyBpZiBwc3RnIGlzIE5VTEwgaW5zdGVhZCBvZgoJICBjcmFzaGluZyBhbmQgYSBOVUxMIHBjbHNpZCBzaG91bGQgY2F1c2UgaXQgdG8gcmV0dXJuIHRoZSBzYW1lCgkgIHZhbHVlLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBhIHRhYmxlJ3MgY29sdW1uIGluZm9ybWF0aW9uIHNlcGFyYXRlbHkgZnJvbSB0aGUgdGFibGUgaXRzZWxmLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsCgkgIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYnVpbGRfaWNvbl9wYXRoIHJldHVybiB0aGUgcGF0aCBkaXJlY3RseS4KCjIwMDUtMDktMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL2N0bDNkLy5jdnNpZ25vcmUsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLAoJICBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLAoJICBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLCBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5lZG9zLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2ludGFiMzIvLmN2c2lnbm9yZToKCVdlIGFyZSBubyBsb25nZXIgZ2VuZXJhdGluZyAuc3BlYy5jIGZpbGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglHZW5lcmF0ZSAxNi1iaXQgc3BlYyBmaWxlcyBhcyBhc3NlbWJseSBjb2RlIHRvby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3NldHVwYXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2V0dXBhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvdGVzdHMvc3RyaW5ndGFibGUuYzoKCVN0ZXZlbiBFZHdhcmRzIDx3aW5laGFja2VyQGdtYWlsLmNvbT4KCUFkZGVkIHN0cmluZ3RhYmxlIHJlZ3Jlc3Npb24gdGVzdC4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaCwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0cmluZ3RhYmxlLmM6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBzZXR1cGFwaSBzdHJpbmd0YWJsZSBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJRmFjdG9yIG91dCBhIGNvdXBsZSBvZiB1c2VmdWwgaGVscGVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2VjdXIzMi9NYWtlZmlsZS5pbiwgZGxscy9zZWN1cjMyL2Jhc2U2NF9jb2RlYy5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMl9wcml2Lmg6CglLYWkgQmxpbiA8YmxpbkBnbXgubmV0PgoJQWRkZWQgYmFzZTY0IGNvZGVjIGZvciBjb21tdW5pY2F0aW9uIHdpdGggbnRsbV9hdXRoLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfTm8ucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbiBvZiBjb21jdGwzMiBhbmQgc2hlbGwzMi4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIHRoZSBTaXplQmFyLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC92aXJ0dWFsLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVNwZWNpZnkgZmxhZyBPQkpfQ0FTRV9JTlNFTlNJVElWRSB3aGVuIGNhbGxpbmcgYXBwcm9wcmlhdGUgTnR4eAoJZnVuY3Rpb25zIGNyZWF0aW5nL29wZW5pbmcgbmFtZWQgb2JqZWN0cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglNYWtlIHN1cmUgdGhhdCB2YWx1ZXMgb2YgYWJzb2x1dGUgc3ltYm9scyBmaXQgaW4gMTYgYml0cy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJTGV0IHdpbmVidWlsZCB0YWtlIGNhcmUgb2YgY2FsbGluZyB0aGUgYXNzZW1ibGVyLgoJUGFzcyAtdiBhbmQgLXNhdmUtdGVtcHMgb3B0aW9ucyB0aHJvdWdoIHRvIHdpbmVidWlsZCB0b28uCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJTW92ZWQgc3R1YiBmdW5jdGlvbiBnZW5lcmF0aW9uIHRvIGltcG9ydC5jLiBBZGRlZCBhIGdldF9zdHViX25hbWUKCWZ1bmN0aW9uIHRvIGVuc3VyZSBuYW1pbmcgY29uc2lzdGVuY3kuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpU2VxdWVuY2VBL1cuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVN0YXJ0IHRvIGltcGxlbWVudCBUZXN0Q29vcGVyYXRpdmVMZXZlbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCU5vdyB0aGF0IHdlIGhhdmUgdG8gYmUgYWJsZSB0byBydW4gdGhlIGFzc2VtYmxlciBmcm9tIHdpbmVidWlsZCwgYWRkZWQKCWFuIG9wdGlvbiB0byBnZW5lcmF0ZSBhIC5zcGVjLm8gZmlsZSBpbiBhIHNpbmdsZSBzdGVwLgoJQWRkZWQgLS1zYXZlLXRlbXBzIGFuZCAtLXZlcmJvc2Ugb3B0aW9ucyBmb3IgZWFzaWVyIGRlYnVnZ2luZy4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJlZmNvdW50IHRhYmxlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lxdWVyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxpZnkgdGhlIEluc3RhbGxWYWxpZGF0ZSBhY3Rpb24gYSBsaXR0bGUuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIG5vdCB0byBmcmVlIGEgYSBwb2ludGVyIHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQuCglDaGVjayB0aGF0IHRoZSB0ZXh0IGlkZW50aWZpZXIgZG9lc24ndCBjb250YWluIGludmFsaWQgY2hhcmFjdGVycy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkZWQgc3VwcG9ydCBmb3Igc3RhdGUgbWFuYWdlbWVudCBvZiB2ZXJ0ZXggc2hhZGVyIGNvbnN0YW50cyB2aWEKCXN0YXRlYmxvY2tzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IElnbm9yZSByZWxvY2F0aW9ucyBmb3IgdW5tYXBwZWQgcGFnZXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAiZW1wdHkgYm9keSBpbiBhbiBpZi9lbHNlLXN0YXRlbWVudCIgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogSmFzb24gRWRtZWFkZXMgPHVzQGVkbWVhZGVzLm1lLnVrPgoJRml4IHNvbWUgb2ZmIGJ5IG9uZSBjYWxjdWxhdGlvbnMgaW4gdGhlIGNvbWJvYm94ZXggZnVuY3Rpb25zLCBhbmQKCWhhbmRsZSBhbiBvdXQgb2YgcmFuZ2UgcG9zaXRpdmUgaW5kZXggdGhlIHNhbWUgYXMgd2luZG93cyArIHVuaXQgdGVzdAoJY2FzZS4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvZm9ybWF0LmMsCgkgIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIHNpbXBsZSBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIG9jY2x1c2lvbiBxdWVyaWVzIHVzaW5nIGVpdGhlciBHTF9BUkJfb2NjbHVzaW9uX3F1ZXJ5IG9yCglHTF9OVl9vY2NsdXNpb25fcXVlcnkuCgoJKiBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDb3JyZWN0IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyAoYW5kIHBhcnRseSB0aGVpciBuYW1lcykgZm9yIHRoZQoJdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBWYWxpZGF0ZVBpeGVsU2hhZGVyIGFuZCBWYWxpZGF0ZVZlcnRleFNoYWRlci4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9jb21ib2V4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAZWRtZWFkZXMubWUudWs+CglGaXggc29tZSBvZmYgYnkgb25lIGNhbGN1bGF0aW9ucyBpbiB0aGUgY29tYm9ib3hleCBmdW5jdGlvbnMsIGFuZAoJaGFuZGxlIGFuIG91dCBvZiByYW5nZSBwb3NpdGl2ZSBpbmRleCB0aGUgc2FtZSBhcyB3aW5kb3dzICsgdW5pdCB0ZXN0CgljYXNlLgoKCSogaW5jbHVkZS93czJ0Y3BpcC5oOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGRlZCBhZGRyaW5mbyBzdHJ1Y3R1cmVzLgoKCSogZGxscy9nZGkvZm9udC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVsZWFzZSB0aGUgZGMgYmVmb3JlIGRyYXdpbmcgdGhlIHVuZGVybGluZSBhbmQgc3RyaWtlb3V0IGxpbmVzLgoKMjAwNS0wOS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHVzYWdlIG9mIENPTE9SX3h4eCBjb25zdGFudHMgaW4gdGhlIHBsYWNlIG9mIHRoZSB3aW5kb3cncwoJY2xhc3MgaGJyQmFja2dyb3VuZC4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ29ycmVjdGx5IGRyYXcgdGhlIG5hdmlnYXRpb24gcGFuZS4KCgkqIHByb2dyYW1zL2Nsb2NrL05vLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy90YXNrbWdyL05vLnJjLAoJICBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYXBwc2VhcmNoLmMsIGRsbHMvbXNpL2NsYXNzZXMuYywKCSAgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvZGF0YWJhc2UuYywKCSAgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLAoJICBkbGxzL21zaS9oZWxwZXJzLmMsIGRsbHMvbXNpL2luc3RhbGwuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtZW1vcnkgYWxsb2NhdGlvbiBpbmxpbmUgZnVuY3Rpb25zIChwYXJ0IDIpLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2RlbGV0ZS5jLCBkbGxzL21zaS9kaXN0aW5jdC5jLAoJICBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL2luc2VydC5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3BhY2thZ2UuYywKCSAgZGxscy9tc2kvcHJldmlldy5jLCBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvcmVnaXN0cnkuYywKCSAgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NvdXJjZS5jLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdXBkYXRlLmMsCgkgIGRsbHMvbXNpL3VwZ3JhZGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1lbW9yeSBhbGxvY2F0aW9uIGlubGluZSBmdW5jdGlvbnMgKHBhcnQgMSkuCgoJKiBkbGxzL3VuaWNvd3MvTWFrZWZpbGUuaW4sIGRsbHMvdW5pY293cy9tYWluLmM6CglFeHBvcnRlZCBzeW1ib2xzIG5vdyBnZXQgcmVzb2x2ZWQgcHJvcGVybHkgc28gd2Ugbm8gbG9uZ2VyIG5lZWQgdGhlCglsaXN0IG9mIGR1bW15IHJlZmVyZW5jZXMuCgoJKiBkbGxzL3VzZXIvZGRlX21pc2MuYywgZGxscy91c2VyL2RkZV9wcml2YXRlLmg6CglBZGRlZCBhIG1hZ2ljIG51bWJlciB0byB0aGUgV0RNTF9DT05WIHN0cnVjdHVyZSB0byBmaXggc29tZSBmYWlsaW5nCgl0ZXN0cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOiBGaXhlZCBzdGFjayBvZmZzZXQgb2YgJWVheCByZWdpc3Rlci4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9tc2kvY3VzdG9tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggaWYncyB0aGF0IGFyZSBmb2xsb3dlZCBieSBzZW1pY29sb25zLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2lxdWVyeS5oOgoJSmFuIFZhbiBCdWdnZW5ob3V0IDxDaGlwenpAVUxZU1NJUy5Pcmc+CglpbXBsZW1lbnQgc3R1YnMgZm9yIE1zaVNlcXVlbmNlW0FXXS4KCgkqIGluY2x1ZGUvbXNpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBJTlNUQUxMU1RBVEVfTk9UVVNFRCB0byB0aGUgSU5TVEFMTFNUQVRFIGVudW1lcmF0aW9uLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgT2xlSXNSdW5uaW5nLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IGEgdHJhY2UgdG8gcmVmZXIgdG8gdGhlIG9iamVjdCBJRCByYXRoZXIgdGhhbiB0aGUgbGVnYWN5IE1JRC4KCS0gRml4IHRoZSBlcnJvciBjYXNlIG9mIENvTWFyc2hhbEludGVyVGhyZWFkSW50ZXJmYWNlIHRvIHJlbGVhc2UgdGhlCgkgIHN0cmVhbS4KCjIwMDUtMDktMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJQ3JlYXRlIGFuIGFzc2VtYmx5IGZpbGUgd2l0aCBhbGwgdW5kZWZpbmVkIHN5bWJvbHMgYW5kIGFkZCBpdCB0byB0aGUKCWxpbmsgY29tbWFuZCBzbyB0aGF0IHRoZSBzeW1ib2xzIHNob3cgdXAgaW4gdGhlIGZpbmFsIHVuZGVmaW5lZCBsaXN0LgoJVXNlIHRoYXQgbGlzdCB0byBjcmVhdGUgdGh1bmtzIGZvciBhbGwgZXhwb3J0ZWQgYnV0IHVuZGVmaW5lZCBzeW1ib2xzLAoJdG8gbWFrZSBzdXJlIGFsbCBleHBvcnQgUlZBcyBwb2ludCBzb21ld2hlcmUgaW5zaWRlIHRoZSBtb2R1bGUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9CZy5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19CZy5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvbXByL21wci5yYywKCSAgZGxscy9tcHIvbXByX0JnLnJjLCBkbGxzL21zaHRtbC9CZy5yYywgZGxscy9tc2h0bWwvcnNyYy5yYywKCSAgZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfQmcucmMsIGRsbHMvbXNybGUzMi9tc3JsZV9CZy5yYywKCSAgZGxscy9tc3JsZTMyL3JzcmMucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfQmcucmMsIGRsbHMvc2VyaWFsdWkvQmcucmMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsIGRsbHMvc2V0dXBhcGkvQmcucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsIGRsbHMvc2hkb2N2dy9CZy5yYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0JnLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9CZy5yYywgZGxscy93aW5lcHMvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvd3BzX0JnLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfQmcucmMsIGRsbHMvd2luc3Bvb2wvQmcucmMsCgkgIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wucmMsIHByb2dyYW1zL25vdGVwYWQvQmcucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9CZy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9CZy5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9CZy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLCBwcm9ncmFtcy93aW5oZWxwL0JnLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglNaWxrbyBLcmFjaG91bm92IDxtaWxrb0AzbWh6Lm5ldD4KCUJ1bGdhcmlhbiByZXNvdXJjZXMgZm9yIG1wciwgbXNpLCB1c2VyLCBjb21tZGxnLCBvbGVhdXQzMiwgc2hkb2N2dywKCXNoZWxsMzIsIGNvbWN0bDMyLCBtc3JsZTMyLCBtc2h0bWwsIHdpbnNwb29sLCB3aW5lcHMsIHNlcmlhbHVpLAoJc2V0dXBhcGksIHdpbmluZXQsIHJlZ2VkaXQsIHVuaW5zdGFsbGVyLCBub3RlcGFkLCB3aW5lY2ZnIGFuZAoJd2luaGVscC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBldmVudCdzIHdpZHRoIGFuZCBoZWlnaHQgbm90IHRoZSB0cmFuc2xhdGVkIHdpbmRvdyByZWN0IHRvCglyZWNvZ25pemUgYSB6ZXJvIHNpemVkIHdpbmRvdyBpbiB0aGUgQ29uZmlndXJlTm90aWZ5IGhhbmRsZXIuCgoJKiBpbmNsdWRlL2hsaW5rLmlkbDogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgSUhsaW5rRnJhbWUgaW50ZXJmYWNlIHRvIGhsaW5rLmlkbC4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIGluaXRpYWwgdG9vbGJhciBidXR0b24gaGFuZGxpbmcuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglSZXR1cm4gdGhlIGFkYXB0b3IgbW9kZSBhcyBYOFI4RzhCOCB3aGVuIEJQUCBpcyAyNCBvciAzMiBiaXRzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglEb24ndCByZW1vdmUgaWdub3JlZCBzeW1ib2xzIGZyb20gdGhlIHVuZGVmaW5lZCBsaXN0LCBzaW1wbHkgc2tpcCB0aGVtCgl3aGVuIHJlc29sdmluZyBpbXBvcnRzLgoJQWRkZWQgZ2V0X3RlbXBfZmlsZV9uYW1lIHV0aWxpdHkgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL3dpbnNvY2syLmg6CglVc2UgdGhlIGRlZmF1bHQgc3RydWN0dXJlIHBhY2tpbmcgbGlrZSBXaW5kb3dzIGRvZXMuCgoJKiBpbmNsdWRlL3RocmVhZC5oOgoJRml4ZWQgdGhlIHN0cnVjdHVyZSBsYXlvdXQgdG8gYmUgaWRlbnRpY2FsIHRvIHRoZSBwdWJsaWMgb25lIGFsc28gb24KCTY0LWJpdCBwbGF0Zm9ybXMuCgoJKiBsaWJzL3dpbmUvbGR0LmM6IFJlbW92ZWQgc3lzaTg2IHByb3RvdHlwZSB0aGF0IGlzIGNhdXNpbmcgY29uZmxpY3RzLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJVGFrZSBpbnRvIGFjY291bnQgLW5vbmFtZSBmdW5jdGlvbnMgd2hlbiBjaGVja2luZyBmb3IgZHVwbGljYXRlIGV4cG9ydAoJbmFtZXMuIEZpeGVkIGEgY291cGxlIG9mIGlzc3VlcyBmb3VuZCBieSB0aGUgc3RyaWN0ZXIgY2hlY2suCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIHJlZHVuYW50IGJyYWNlcy4KCS0gQ29tcGFjdCBtdWx0aS1saW5lIGNvbW1lbnRzIHRoYXQgZml0IGludG8gb25lIGxpbmUuCgktIFJlbW92ZSBjb21tZW50cyB0aGF0IHN0YXRlIHRoZSBvYnZpb3VzLgoJLSBSZW1vdmUgZXh0cmEgYnJhY2tldHMgdGhhdCBhcmUgcmVkdW5kYW50IGJlY2F1c2UgdGhlIC0+IG9wZXJhdG9yCgkgIGJpbmRzIHRpZ2h0ZXIgdGhhbiAmLgoJLSBDaGFuZ2UgInRoaXMiIHRvICJUaGlzIiB0byBtYWtlIGNvZGUgbW9yZSBsaWtlIG90aGVyIGludGVyZmFjZQoJICBpbXBsZW1lbnRhdGlvbnMuCgktIFJlbW92ZSByZWR1bmRhbnQgY29tcGFyaXNvbnMgd2l0aCBOVUxMIGZvciBwb2ludGVycy4KCgkqIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oOgoJVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkZWQgX19wX19hbWJsa3NpeiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGZyZWUgYSBtb2RpZmllZCBwb2ludGVyLgoKCSogZGxscy9nZGkvZm9udC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcHJvYmxlbSB3aXRoIGhhbmRsaW5nIEVUT19HTFBZSF9JTkRFWC4gIFNwb3R0ZWQgYnkgUm9iCglTaGVhcm1hbi4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiBjb2RlcyBkdXJpbmcgdW5tYXJzaGFsaW5nIHNvIHRoYXQgaXQgcmV0dXJucyBmYWlsdXJlCgljb2RlcyBpbnN0ZWFkIG9mIFNfRkFMU0UgcmV0dXJuZWQgZnJvbSBJU3RyZWFtX1JlYWQuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNoZWNrIGZvciBhbiBlbXB0eSBzdHJpbmcgbm90IGEgTlVMTCBwb2ludGVyLgoKCSogZGxscy9tY2lhdmkzMi9tbW91dHB1dC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGlyZWN0bHkgY29weSBESUIgYml0cyBpbnRvIGRlc3RpbmF0aW9uIERDLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUHJldmVudCBDaGVja0RlcHRoU3RlbmNpbE1hdGNoIGZyb20gY2F1c2luZyBwcm9ibGVtcyBpZiB0aGVyZSBpcyBhCgljdXJyZW50IGFjdGl2ZSBPcGVuR0wgY29udGV4dC4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVN0b3AgdmVydGV4IHNoYWRlciBjb25zdGFudHMgZnJvbSBiZWluZyBzZXQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUKCXZlcnRleCBzaGFkZXIgd2hlbiBhIHN0YXRlYmxvY2sgaXMgYXBwbGllZC4KCgkqIGRsbHMvbXNodG1sL0ZpLnJjLCBkbGxzL21zaHRtbC9yc3JjLnJjLCBkbGxzL21zaS9tc2kucmMsCgkgIGRsbHMvbXNpL21zaV9GaS5yYzoKCUtpbW1vIE15bGx5dmlydGEgPGtpbW1vLm15bGx5dmlydGFAZ21haWwuY29tPgoJQWRkZWQgRmlubmlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwb3J0IG1vcmUgYXJndW1lbnRzIGluIF9pbnZva2UoKS4KCgkqIGRsbHMvdXJsbW9uL3Nlc3Npb24uYywgaW5jbHVkZS91cmxtb24uaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgSUh0dHBOZWdvdGlhdGUyIGludGVyZmFjZS4KCS0gVXBkYXRlIEJJTkRTVFJJTkcgYW5kIElJbnRlcm5ldFNlc3Npb24uCgoyMDA1LTA5LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCURvIHNvbWUgYm91bmRzIGNoZWNraW5nIG9uIGlPcmRlci4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL21zaS9tc2kucmMsIGRsbHMvbXNpL21zaV9Oby5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTm8ucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMvd2luZWRvcy9yZWxheS5jLAoJICBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCU1vdmVkIHJldHVybiB2YWx1ZSBoYW5kbGluZyB0byB0aGUgaW5kaXZpZHVhbCByZWxheSB0aHVua3Mgc28gdGhhdCB3ZQoJb25seSBuZWVkIG9uZSB2ZXJzaW9uIG9mIHdpbmVfY2FsbF9mcm9tXzE2LgoJUGF0Y2ggdGhlIHdpbmVfY2FsbF9mcm9tXzE2IGFkZHJlc3MgYWxvbmcgd2l0aCB0aGUgY3MgdmFsdWUgZGlyZWN0bHkKCWluIHRoZSAxNi1iaXQgY29kZSBzZWdtZW50IHRvIGF2b2lkIHRoZSBuZWVkIGZvciBzcGVjaWFsIG1hZ2ljIGluIHRoZQoJaW1wb3J0IHRodW5rcy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJRml4ZWQgc29tZSB0cmFjZSBmb3JtYXQgc3RyaW5ncyAocmVwb3J0ZWQgYnkgR2VyYWxkIFBmZWlmZXIpLgoKCSogZGxscy9udGRsbC9yZWxheS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNYWtlIHRoZSB1c2VycyBvZiB3aW5lX2NhbGxfZnJvbV8zMl9yZWdzIHNhdmUgJWVheCBzbyB0aGF0IHdlIGRvbid0CgluZWVkIGEgc3BlY2lhbCBoYWNrIGluIHRoZSBpbXBvcnQgdGh1bmsuCglBZGRlZCBhIGdldF9wY190aHVua19lYXggZnVuY3Rpb24gdG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBiaXQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgU2V0RElCaXRzIHdpdGggYSBwcm9wZXIgREMgaW4gb3JkZXIgdG8gc2V0IGJpdG1hcCBiaXRzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCUlmIEhLQ1VcU29mdHdhcmVcV2luZSBkb2VzIG5vdCB5ZXQgZXhpc3QsIGNyZWF0ZSBpdCBhcyBub24tdm9sYXRpbGUKCWtleSwgaW5zdGVhZCBvZiB2b2xhdGlsZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJQ2hyaXN0aWFuIEx1cGllbiA8bHVwaWVuQHBoeXNpcXVlLnVzaGVyYnJvb2tlLmNhPgoJQXZvaWQgb3ZlcmZsb3cgaW4gdGhlIHJlYWQgZmlsZSBsaW1pdCBjaGVjay4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvcnBjcnQ0L2Nwcm94eS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZi1jb3VudGluZyBydWxlcyB0byBtYXRjaCBuYXRpdmUgRENPTSBEbGxzLgoKMjAwNS0wOS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU3RvcmUgUlZBcyBpbnN0ZWFkIG9mIHBvaW50ZXJzIHdoZXJldmVyIHBvc3NpYmxlIGluIHRoZSBnZW5lcmF0ZWQgTlQKCWhlYWRlciBhbmQgZGlyZWN0b3JpZXMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL05vLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOiAgRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCSBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLCBpdCBzaG91bGQgbm90IGJlIG5lZWRlZCBhbnltb3JlIHNpbmNlIGEKCSBwcm9wZXIgZml4IGZvciBtbWlvRGVzY2VuZCByZWdyZXNzaW9uIGhhcyBiZWVuIGNvbW1pdHRlZC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1vcnkgbGVha3MgaW4gdGhlIHRhYmxlIGNvZGUuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVhZCB0aGUgTWFza0VkaXQgdGVtcGxhdGUgZnJvbSB0aGUgY29ycmVjdCBkYiBmaWVsZC4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmUtYXJyYW5nZSBzb21lIGZ1bmN0aW9ucyBhbmQgdnRhYmxlcyBzbyB3ZSBkb24ndCBoYXZlIGRlY2xhcmF0aW9ucwoJZm9yIGFsbCBvZiB0aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglCdWZmZXIgc2l6ZSBuZWVkcyB0byBiZSBzcGVjaWZpZWQgaW4gYnl0ZXMgb24gaW5wdXQuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldERlc2t0b3BXaW5kb3cgY2FuIG5vdyBwb3RlbnRpYWxseSBjcmVhdGUgYSB0aHJlYWQsIHNvIHdlIHNob3VsZG4ndAoJY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gRGxsTWFpbiBvdGhlcndpc2UgaXQgaXMgcG9zc2libGUgdG8gY2F1c2UgYQoJZGVhZGxvY2suCgoyMDA1LTA5LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zaWduYWxfeDg2XzY0LmM6CglQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBzaWduYWwgaGFuZGxpbmcgZm9yIHg4Ni02NC4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vdGVzdHMvbW1pby5jLAoJICBpbmNsdWRlL21tc3lzdGVtLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgbW1pb0Rlc2NlbmQsIG1ha2UgaXQgcGFzcyB1bmRlciBXaW5lLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgdGhlIGxpc3Qgb2YgZGlhbG9nIGNvbnRyb2xzIHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogSW1wbGVtZW50ZWQgaW1wb3J0IHRodW5rcyBmb3IgeDg2LTY0LgoKCSogZGxscy9tc2kvZGF0YWJhc2UuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBsb2FkX3N0cmluZ190YWJsZSByZXR1cm4gdGhlIHN0cmluZyB0YWJsZS4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZvcm1hdCBhbGwgZGlhbG9nIHRleHQgc3RyaW5ncyBiZWZvcmUgdXNpbmcgdGhlbS4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfeDg2XzY0LmM6CglQcmVsaW1pbmFyeSB2ZXJzaW9uIG9mIHRoZSBjb250ZXh0IHN1cHBvcnQgZm9yIHg4Ni02NC4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUZpeGVkIGEgZmV3IHBvaW50ZXIgdHJ1bmNhdGlvbiBidWdzIGZvciA2NC1iaXQgcGxhdGZvcm1zLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYywgc2VydmVyL3JlcXVlc3QuYzoKCVVzZSB0aGUgcHJvcGVyIHNpemUgZm9yIHRoZSBjbXNnX2ZkIHN0cnVjdHVyZSBvbiA2NC1iaXQgcGxhZm9ybXMuCgoJKiBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJRm9yd2FyZCBhbGwgZnVuY3Rpb25zIHRvIG1zdmNydCBpbnN0ZWFkIG9mIGhhdmluZyB0aGVtIGxpbmsgZGlyZWN0bHkKCXRvIGxpYmMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJT3JkZXIgdGhlIGJpdG1hcCBmb250IGxpc3QgYnkgdGhlIGFuc2kgY29kZXBhZ2UgYml0IHBvc2l0aW9uLgoJRml4IGEgZmV3IGNvbW1lbnRzLgoKCSogZGxscy91cmxtb24vdGVzdHMvdXJsLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNb3JlIHRlc3RzIG9mIFVSTE1vbmlrZXIuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbjogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYXRlIEdyZWVrLCBUdXJraXNoLCBIZWJyZXcsIEFyYWJpYywgQmFsdGljIGFuZCBUaGFpIHZlcnNpb25zIG9mCglNUyBTYW5zIFNlcmlmLgoKCSogdG9vbHMvc2ZudDJmbnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBzZm50MmZudCBoYWNrLCBub3cgdGhhdCBXaW5lIENvdXJpZXIgaXMga25vd24gYXMgQ291cmllci4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglMb2FkIHJpY2hlZDIwLmRsbCBvbiBkZW1hbmQsIGFuZCB1bmxvYWQgaXQgYWZ0ZXIgaXQncyB1c2VkIChiYXNlZCBvbiBhCglwYXRjaCBieSBSb2IgU2hlYXJtYW4pLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGJ1ZyBpbiBhIHByZXZpb3VzIHBhdGNoIHNwb3R0ZWQgYnkgRGlldGVyIEtvbWVuZGVyYS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2kuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgc3R1YiBmb3IgTXNpQ29uZmlndXJlRmVhdHVyZS4KCgkqIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBTZXRDbGllbnRTaXRlIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YnMgZm9yIERsbFJlZ2lzdGVyU2VydmVyLCBEbGxVbnJlZ2lzdGVyU2VydmVyIGFuZAoJV2ludHJ1c3RTZXRSZWdQb2xpY3lGbGFncy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IFN0cmluZyBTSUQgcGFyc2luZy4KCjIwMDUtMDktMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUdldCB3aW5ldGVzdCB0byBkZXRlY3Qgd2luZG93cyBzZXJ2ZXIgMjAwMyBSMi4KCgkqIGRsbHMvdXJsbW9uL3Nlc3Npb24uYzogRml4ZWQgYSBjb21waWxlciB3YXJuaW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglBZGRlZCBhIGNvbW1vbiBmdW5jdGlvbiB0byBkZWNsYXJlIGdsb2JhbCBzeW1ib2xzLCBhbmQgbWFrZSB0aGVtCgloaWRkZW4gb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdC4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2VuZXJhdGUgR3JlZWssIFR1cmtpc2gsIEhlYnJldywgQXJhYmljIGFuZCBCYWx0aWMgdmVyc2lvbnMgb2YKCUNvdXJpZXIuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vc2Vzc2lvbi5jLCBkbGxzL3VybG1vbi91bW9uLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgQ29JbnRlcm5ldEdldFNlc3Npb24gaW1wbGVtZW50YXRpb24uCgoJKiBsaWJzL3dpbmUvbG9hZGVyLmM6CglVc2UgdGhlIE5UIGRlc2NyaXB0b3IgYWRkcmVzcyBhcyBzdGFydCBvZiB0aGUgZGF0YSBzZWN0aW9uLCBzaW5jZSB0aGUKCUJhc2VPZkRhdGEgZmllbGQgaXNuJ3QgcHJlc2VudCBpbiBXaW42NC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY3VzdG9tLmMsCgkgIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvZmlsZXMuYywKCSAgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXNpL2hlbHBlcnMuYywgZGxscy9tc2kvaW5zdGFsbC5jLAoJICBkbGxzL21zaS91cGdyYWRlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW5hbWUgbG9hZF9keW5hbWljX3Byb3BlcnR5IGFuZCByZW1vdmUgaXRzIHVudXNlZCAzcmQgYXJndW1lbnQuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglOb3cgdGhhdCBldmVyeXRoaW5nIGlzIGRvbmUgaW4gYXNzZW1ibHkgaW4gdGhlIHNwZWMgZmlsZSwgZGlyZWN0bHkKCWdlbmVyYXRlIGEgLnMgZmlsZSB0byBieXBhc3MgZ2NjIGluZWZmaWNpZW5jeSB3aXRoIGxhcmdlIGRhdGEKCXN0cnVjdHVyZXMuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbjogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYXRlIEdyZWVrLCBUdXJraXNoLCBIZWJyZXcsIEFyYWJpYywgQmFsdGljLCBUaGFpLCBKYXBhbmVzZSBhbmQKCUtvcmVhbiB2ZXJzaW9ucyBvZiB0aGUgU3lzdGVtIGZvbnQuICBBbGwgdGhlIG5vbi1sYXRpbiBnbHlwaHMgYXJlCglzdGlsbCBibGFua3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBuZXcgbXNpX3JlZ19zZXQqIG1hY3JvcyB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBGaXhlZCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglTZXQgdGhlIHByb3BlciBidWlsZCBmbGFncyBmb3IgRGFyd2luIGJhc2VkIG9uIHRoZSBDUFUgdHlwZSBpbnN0ZWFkIG9mCglhc3N1bWluZyBQb3dlclBDLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglPdXRwdXQgdGhlIHJlc291cmNlIGRhdGEgaW4gYXNzZW1ibHkgdG9vLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglUd2VhayB0aGUgdGVzdCBmb3IgZGV0ZWN0aW5nIGxpYnhzbHQgYXMgaXQgZGlkbid0IHdvcmsgY29ycmVjdGx5IG9uCglSSDguCgoJKiBwcm9ncmFtcy90YXNrbWdyL0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSB0aGUgR2VybWFuIHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL21zaS9jbGFzc2VzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIG1hY3JvIHRvIHdyaXRlIGEgdmFsdWUgdG8gYSBzdWJrZXkuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUVtYmVkIHRoZSBicm93c2VyIG9iamVjdCBpbiB0aGUgSFRNTCB3aW5kb3cuICBTcG90dGVkIGJ5IEphY2VrIENhYmFuLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENyeXB0SW5pdE9JREZ1bmN0aW9uU2V0IGFuZAoJQ3J5cHRVbnJlZ2lzdGVyRGVmYXVsdE9JREZ1bmN0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCS0gU2V0IHRoZSBMYXN0RXJyb3IgaW4gT3BlblNDTWFuYWdlciBpbiBjYXNlIG9mIGVycm9yczsKCS0gQWNjZXB0IG1hY2hpbmUgbmFtZXMgd2l0aG91dCBhICdcXCcgcHJlZml4IGluIE9wZW5TQ01hbmFnZXIgYW5kCgkgIFJlZ0Nvbm5lY3RSZWdpc3RyeS4KCS0gQWRkIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGF0LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbWVtYmVyIHRvIHJlbW92ZSBhIGNoaWxkIGZvbnQgZnJvbSB0aGUgY2hpbGQgZm9udCBsaXN0LgoKMjAwNS0wOS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJT3V0cHV0IGNvbnN0YW50IHN0cmluZ3MgaW4gYSBtb3JlIGFwcHJvcHJpYXRlIHNlY3Rpb24gdGhhbiAudGV4dC4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvRW4ucmMsIHByb2dyYW1zL3Rhc2ttZ3Ivb3B0bm1lbnUuYywKCSAgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmMsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5oLAoJICBwcm9ncmFtcy90YXNrbWdyL3RyYXlpY29uLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglIb29rIHVwICJIaWRlIG9uIE1pbmltaXplIiAmIEFkZCBjb250ZXh0IG1lbnUgdG8gdGhlIHRyYXkgaWNvbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IGFkZCBUYWhvbWEgdG8gdGhlIFN5c3RlbSBmb250J3MgbGluayBsaXN0IGlmIHdlIGNhbiBhY3R1YWxseSBmaW5kCglpdC4KCgkqIGRsbHMvaGhjdHJsLm9jeC93ZWJicm93c2VyLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBaZXJvIHRoZSBXQkluZm8gc3RydWN0IHRvIGdldCByaWQgb2YgaW52YWxpZCBwb2ludGVycy4KCS0gU3RvcmUgb2JqZWN0IHBvaW50ZXJzIGluIHRoZSBXQkluZm8gc3RydWN0IGFzIHRoZXkncmUgY3JlYXRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBzdXBwb3J0IGZvciBuYXZpZ2F0aW5nIGEgdG9vbGJhciB3aXRoIHRoZSBhcnJvdyBrZXlzLgoJLSBGaXggV3JhcFRvb2xiYXIgaW4gdGhlIGNhc2Ugb2Ygbm8gcGFyZW50IHdpbmRvdy4KCS0gVXNlIHRoZSBuZXdseSBhZGRlZCBOTVRCSU5JVENVU1RPTUlaRSBmb3Igc2VuZGluZyB0aGUKCSAgVEJOX0lOSVRDVVNUT01JWkUgc28gdGhhdCBpdCBpcyBzYWZlIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglHZW5lcmF0ZSBzdHViIGZ1bmN0aW9ucyBkaXJlY3RseSBpbiBhc3NlbWJseS4KCgkqIHNlcnZlci90aHJlYWQuYzoKCVJlbW92ZSBhbiBleGl0aW5nIHRocmVhZCBmcm9tIHRoZSBwcm9jZXNzIG9ubHkgYWZ0ZXIgdGhyZWFkIGNsZWFudXAgdG8KCWF2b2lkIGFjY2Vzc2luZyBmcmVlZCB3aW5kb3cgY2xhc3Nlcy4KCgkqIGRsbHMvbXNpL2NsYXNzZXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgbWFjcm8gZnVuY3Rpb24gdG8gd3JpdGUgcmVnaXN0cnkgdmFsdWVzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVBlcmZvcm0gYXV0b21hdGljIGJpdG1hcCBmb250IGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIGN1cnJlbnQKCWxvY2FsZS4KCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9mdHAuYywgZGxscy91cmxtb24vaHR0cC5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGh0dHAgYW5kIGZ0cCBwcm90b2NvbCBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURvbid0IGtpbGwgbm9uLWV4aXN0aW5nIHRpbWVycy4gVXNlIEVuZERpYWxvZyB0byBjbG9zZSB0aGUgZGlhbG9nLgoKCSogcHJvZ3JhbXMvdGFza21nci9wcm9jcGFnZS5jOiBNaWNoYWVsIEZyaXRzY2hlcgoJSG9vayB1cCAiRW5kIFByb2Nlc3MiIGJ1dHRvbi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJQXZvaWQgYSByZWRlZmluaXRpb24gd2FybmluZyBvbiA2NC1iaXQgcGxhdGZvcm1zLgoKCSogZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIHRvb2xzL3dpbmUuaW5mOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUJhc2Ugb2YgUkVHX0RXT1JEIGVudHJpZXMgbXVzdCBiZSBhdXRvLWRldGVjdGVkLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSB1bnVzZWQgdmFsdWVzIGluIHRoZSBvYmplY3QgaGVhZGVyLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcGUgd2l0aCBPcGVuRm9udEZpbGUgZmFpbGluZy4KCgkqIGNvbmZpZ3VyZS5hYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVxdWlyZSBhdXRvY29uZiAyLjUzYiBhcyBBQ19QUk9HX0VHUkVQIGlzIG9ubHkgZGVmaW5lZCBzaW5jZSB0aGF0Cgl2ZXJzaW9uLgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCVN1cHBvcnQgYXJiaXRyYXJ5IHNpemVzIGZvciB0aGUgdGhyZWFkIHNpZ25hbCBzdGFjaywgYW5kIHNldCB0aGUKCWRlZmF1bHQgc2l6ZSBmcm9tIHRoZSBNSU5TSUdTVEtTWiBjb25zdGFudC4KCgkqIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jOiBHZXQgcmlkIG9mIGFub3RoZXIgbG9uZyBsb25nIGNvbnN0YW50LgoKCSogZGxscy91cmxtb24vZmlsZS5jLCBkbGxzL3VybG1vbi90ZXN0cy9wcm90b2NvbC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIE1JTUUgdHlwZSBjaGVja2luZyB0byBGaWxlUHJvdG9jb2w6OlN0YXJ0LgoKCSogcHJvZ3JhbXMvdGFza21nci9hcHBscGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL3BlcmZwYWdlLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCVVzZSBhbm9ueW1vdXMgZXZlbnRzIGZvciBzeW5jaHJvbml6YXRpb24uCgoJKiBkbGxzL21zaS9kYXRhYmFzZS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHRoZSBsaXN0IG9mIHRhYmxlcyB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgZXhjZXB0aW9uIGhhbmRsaW5nIGZvciBzdHVicy4KCgkqIGluY2x1ZGUvd2luZS9ycGNmYy5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgUlBDX0ZDX1JBTkdFLgoKCSogZGxscy9tc2h0bWwvcHJvdG9jb2wuYywgZGxscy9tc2h0bWwvdGVzdHMvcHJvdG9jb2wuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBNSU1FIHR5cGUgY2hlY2tpbmcgdG8gUmVzUHJvdG9jb2w6OlN0YXJ0LgoKCSogZGxscy9zZXR1cGFwaS9kaXNrc3BhY2UuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IGEgY291cGxlIG9mIHByb3RvdHlwZXMuCgoJKiBwcm9ncmFtcy90YXNrbWdyL2Fib3V0LmMsIHByb2dyYW1zL3Rhc2ttZ3IvYWZmaW5pdHkuYywKCSAgcHJvZ3JhbXMvdGFza21nci9hcHBscGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL2NvbHVtbi5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywgcHJvZ3JhbXMvdGFza21nci9ncmFwaC5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2dyYXBoY3RsLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGhjdGwuaCwKCSAgcHJvZ3JhbXMvdGFza21nci9wZXJmcGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL3Byb2NsaXN0LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5oOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRExHUFJPQ3MgcmV0dXJuIElOVF9QVFIuCgoyMDA1LTA5LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEltcGxlbWVudGVkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlciBhbmQKCUludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyIGZvciB4ODYtNjQuCgoJKiBkbGxzL2dkaS9nZGlvYmouYywgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLAoJICBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywKCSAgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLAoJICBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBpbmNsdWRlL3VybG1vbi5pZGwsIGluY2x1ZGUvd2luY3J5cHQuaCwKCSAgaW5jbHVkZS93aW5lcnJvci5oOgoJUmVtb3ZlIHRoZSAnTCcgc3VmZml4IG9uIGEgbnVtYmVyIG9mIGNvbnN0YW50cyB0byBhdm9pZCBjb21wYXJpc29uCgllcnJvcnMgb24gNjQtYml0IHBsYXRmb3Jtcy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgc2VydmVyL3F1ZXVlLmM6CglUaW1lb3V0IDAgbWVhbnMgaW5maW5pdGUgd2FpdCBmb3IgU2VuZE1lc3NhZ2VUaW1lb3V0LgoJUmVtb3ZlIHRoZSBtZXNzYWdlIGZyb20gdGhlIHJlY2VpdmVyIHF1ZXVlIGlmIGl0IHRpbWVzIG91dCBiZWZvcmUKCWJlaW5nIHJlY2VpdmVkLgoKCSogcHJvZ3JhbXMvdGFza21nci9hcHBscGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL2dyYXBoLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGhjdGwuYywgcHJvZ3JhbXMvdGFza21nci9ncmFwaGN0bC5oLAoJICBwcm9ncmFtcy90YXNrbWdyL3BlcmZwYWdlLmMsIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY2xpc3QuYywKCSAgcHJvZ3JhbXMvdGFza21nci9wcm9jcGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUppbSBUYWJvciwgVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJNjQgYml0IGZpeGVzIC0tIFN0b3JlIFdpbmRvdyBwcm9jcyBhcyBXTkRQUk9DLCBjYXN0IHRvIERXT1JEX1BUUiBpbgoJU2VuZE1lc3NhZ2VUaW1lb3V0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBpbmNvbnNpc3RlbmN5IGluIExJU1RWSUVXX0RVTVAgbWFjcm8uCgoJKiBkbGxzL3VybG1vbi9pbnRlcm5ldC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUEFSU0VfU0VDVVJJVFlfRE9NQUlOIGFjdGlvbiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Byb2NwYWdlLmM6CglHZXQgcmlkIG9mIGEgY291cGxlIG9mIG5vbi1wb3J0YWJsZSBsb25nIGxvbmcgY29uc3RhbnRzLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS90ZXN0cy9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGhhbmRsaW5nIG9mIE1zaUdldFRhcmdldFBhdGggYXJncyAod2l0aCB0ZXN0IGNhc2UpLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0byByZWxlYXNlIHRoZSBwYWNrYWdlIHdlIGdyYWJiZWQgb24gdGhlIGVycm9yIHBhdGguCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglTYXZlIGEgZmV3IG1lZ2FieXRlcyBvZiBtZW1vcnkgYnkgbG9hZGluZyB0aGUgZGVmYXVsdCBpY29uIG9ubHkgb25jZQoJaW50byB0aGUgaW1hZ2UgbGlzdHMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLAoJICBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jLCBsaWJzL3dpbmUvbGR0LmMsIGxvYWRlci9rdGhyZWFkLmMsCgkgIGxvYWRlci9wdGhyZWFkLmM6CglBdm9pZCBzb21lIHdhcm5pbmdzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCgoJKiBkbGxzL21zaS9pbnN0YWxsLmMsIGRsbHMvbXNpL3Rlc3RzL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgaGFuZGxpbmcgb2YgTXNpRG9BY3Rpb24gYXJncyAod2l0aCB0ZXN0IGNhc2UpLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMgZnJvbSB0aGUgTVNJRkVBVFVSRSBzdHJ1Y3R1cmUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmM6CglXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglHZXQgSUZvbnREaXNwIHR5cGUgaW5mb3JtYXRpb24gZnJvbSBzdGRvbGUyLnRsYiwgaW5zdGVhZCBvZiBJRGlzcGF0Y2gKCWluZm9ybWF0aW9uIGZyb20gc3Rkb2xlMzIudGxiLgoKCSogZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTa2lwIGRhc2ggY2hhcmFjdGVycyBpbiB0aGUgUElETWFzayBmb3IgYSBNYXNrZWRFZGl0IGNvbnRyb2wuCgoJKiBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmMsCgkgIGRsbHMvaGhjdHJsLm9jeC93ZWJicm93c2VyLmMsIGRsbHMvaGhjdHJsLm9jeC93ZWJicm93c2VyLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gQWRkIHRoZSBXZWJCcm93c2VyIGltcGxlbWVudGF0aW9uLgoJLSBMb2FkIHRoZSBkZWZhdWx0IFVybCBpbiB0aGUgSFRNTCBQYW5lLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglMZXQgRW51bVByaW50ZXJEcml2ZXJzIHJldHVybiB0aGUgbnVtYmVyIG9mIGRyaXZlcnMuCgoyMDA1LTA5LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvZGJnaGVscC9taW5pZHVtcC5jLCBkbGxzL2RpbnB1dC9lZmZlY3RfbGludXhpbnB1dC5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9zdHlsZS5jLCBkbGxzL3NlY3VyMzIvdGh1bmtzLmMsCgkgIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy94MTFkcnYveGltLmMsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGhlIGxhc3QgYXJndW1lbnQgdG8gTXVsdGlCeXRlVG9XaWRlQ2hhciBpcyB3aWRlIGNoYXJhY3RlciBjb3VudCBhbmQKCW5vdCB0aGUgYnVmZmVyIHNpemUgaW4gYnl0ZXMuIEZpeGVkIGFsbCBwbGFjZXMgd2hlcmUgaXQgd2FzIHdyb25nLgoKCSogZGxscy91cmxtb24vdXJsbW9uLmluZjogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVJlZ2lzdGVyIFpvbmVNYXAuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC90aHJlYWQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQga2VybmVsMzIuR2V0VGhyZWFkVGltZXMgb24gdG9wIG9mIG50ZGxsJ3MgZXF1aXZhbGVudAoJZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3VwZG93bi5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywKCSAgZGxscy9rZXJuZWwvbW9kdWxlLmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywKCSAgZGxscy9rZXJuZWwvc2VsZWN0b3IuYywgZGxscy91c2VyL2RpYWxvZy5jLCBkbGxzL3VzZXIvbWVudS5jLAoJICBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvd2lucHJvYy5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbm50Lmg6CglGaXhlZCBhIGZldyBtb3JlIHBvaW50ZXIgdG8gaW50ZWdlciB0eXBlY2FzdCBpc3N1ZXMgZm9yIDY0LWJpdAoJcGxhdGZvcm1zLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6CglGaXhlZCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBJV2ViQnJvd3NlcjIgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglTZW5kTWVzc2FnZVRpbWVvdXQgdGFrZXMgYSBEV09SRF9QVFIgbm90IGEgRFdPUkQuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmM6CglQcm9wZXJseSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdnNucHJpbnRmIHJldHVybnMgLTEuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jOiBGaXhlZCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9ub25jbGllbnQuYzoKCU1ha2UgdGhlIG5vbi1jbGllbnQgbWVzc2FnZSBoYW5kbGluZyBmdW5jdGlvbnMgcmV0dXJuIGFuIExSRVNVTFQuCgoJKiBkbGxzL2F0bC9yZWdpc3RyYXIuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywKCSAgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmMsIGRsbHMvdXNlci9kaWFsb2cuYywgZGxscy91c2VyL2RpYWxvZzE2LmM6CglVc2UgTUFLRUlOVFJFU09VUkNFIGluc3RlYWQgb2YgY2FzdHMgd2hlcmUgYXBwcm9wcmlhdGUuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUluaXRpYWxpemUgc3RydWN0cyBmb3IgbW1pb0Rlc2NlbmQgYW5kIEZpbmRDaHVua0FuZEtlZXBFeHRyYXMgLSBmaXhlcwoJQVZJIGZpbGUgcmVjb2duaXRpb24uCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci5sLAoJICB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gT3V0cHV0IHByb3RvdHlwZXMgZm9yIHVzZXIgbWFyc2hhbCBmdW5jdGlvbnMgYXQgdGhlIGVuZCBvZiB0aGUKCSAgaGVhZGVyIGFuZCBieSB1c2UuCgktIEFkZCBzdXBwb3J0IGZvciByYW5nZSBhbmQgcHRyIGF0dHJpYnV0ZXMgYW5kIGZvciB0aGUgInNtYWxsIiBiYXNlCgkgIHR5cGUuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRW5jb2RlIFVSTCBpbiBSZXNQcm90b2NvbDo6U3RhcnQuCgoJKiBkbGxzL3VybG1vbi90ZXN0cy9taXNjLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglSZXdyb3RlIEZpbmRNaW1lRnJvbURhdGEgdG8gcGFzcyB0ZXN0cy4KCgkqIGRsbHMvZGRyYXcvc3VyZmFjZV93bmRwcm9jLmM6CglVc2UgR2V0L1NldFdpbmRvd0xvbmdQdHIgdG8gYWNjZXNzIHBvaW50ZXJzIGluIHRoZSB3aW5kb3cgZXh0cmEKCWJ5dGVzLgoKCSogZGxscy91c2VyL2xpc3Rib3guYzoKCUF2b2lkIHRydW5jYXRpbmcgdGhlIGl0ZW0gZGF0YSB0byAzMiBiaXRzIGluIExCX1NFVElURU1EQVRBLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJUGFyYW1ldGVycyB0byB2aXJ0dWFsIG1lbW9yeSBmdW5jdGlvbnMgbmVlZCB0byBiZSBTSVpFX1QuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCXN0cmNweW5BdG9XIHRha2VzIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBub3QgYnl0ZXMuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYzogRml4ZWQgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFWFRMT0dQRU4uZWxwSGF0Y2ggY2FuIGNvbnRhaW4gYSBoYW5kbGUgYXMgd2VsbC4KCgkqIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgeWV0IG1vcmUgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywKCSAgZGxscy9kYmdoZWxwL2NvZmYuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMva2VybmVsL2Rvc21lbS5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsCgkgIGRsbHMvdXNlci9jYXJldC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvc3B5LmMsCgkgIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsCgkgIGluY2x1ZGUvd2luZG93c3guaCwgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsCgkgIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jOgoJRml4ZWQgYSBudW1iZXIgb2YgcG9pbnRlciB0byBpbnRlZ2VyIGNvbnZlcnNpb25zIHRoYXQgd291bGRuJ3Qgd29yawoJcmlnaHQgb24gYSA2NC1iaXQgcGxhdGZvcm0uCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jOiBGaXhlZCBtZW1vcnkgbGVhayBpbnRyb2R1Y2VkIGluIHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsCgkgIGRsbHMvbXNhY20vdGVzdHMvbXNhY20uYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy91c2VyL2RyaXZlcjE2LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLAoJICBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy92bW0udnhkL3ZtbS5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luZWQzZC9zd2FwY2hhaW4uYywKCSAgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5tbS9kcml2ZXIuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2ludGFiMzIvY29udGV4dC5jOgoJRml4ZWQgc29tZSBtb3JlIHRyYWNlcyB0byB1c2UgdGhlIHJpZ2h0IHByaW50ZiBmb3JtYXQgYW5kIGF2b2lkCgl0eXBlY2FzdHMuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmMsIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvZWRpdC5jLAoJICBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvbWVudS5jOgoJVXNlIEdldC9TZXRXaW5kb3dMb25nUHRyIHdoZW4gYWNjZXNzaW5nIHBvaW50ZXJzIGluIHRoZSB3aW5kb3cgZXh0cmEKCWJ5dGVzLgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZXhlYy5jOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUZpeCBleGVjdXRpb24gb2YgQ29udHJvbCBQYW5lbCBpdGVtcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBhIG1pc3NpbmcgZGVmaW5lLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbW9yZSBmaXhlZCBsZW5ndGggYnVmZmVycy4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jOgoJVXNlIEdldC9TZXRDbGFzc0xvbmdQdHIgdG8gYWNjZXNzIHRoZSBtb2R1bGUgaGFuZGxlLgoKCSogZGxscy91c2VyL2xpc3Rib3guYzogVGhlIGl0ZW0gdXNlciBkYXRhIGhhcyB0byBiZSBhIFVMT05HX1BUUi4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYzoKCU9ubHkgYWRkIHRoZSBkZWZhdWx0IGRsbGRpciB0byB0aGUgc2VhcmNoIHBhdGggaWYgdGhhdCdzIHdoZXJlIG50ZGxsCglpcyBmb3VuZC4KCgkqIGRsbHMvZ2RpL2JydXNoLmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYywKCSAgaW5jbHVkZS93aW5nZGkuaDoKCUxPR0JSVVNILmxiSGF0Y2ggbXVzdCBiZSBhIFVMT05HX1BUUiBzaW5jZSBpdCBjYW4gY29udGFpbiBhIGhhbmRsZS4KCgkqIGRsbHMvbXNpL21zaXF1ZXJ5LmM6IEF2b2lkIG5vbi1wb3J0YWJsZSB2YV9saXN0IG1hbmlwdWxhdGlvbnMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIGdhc3AgdGFibGUgdG8gY2hlY2sgd2hldGhlciB3ZSBzaG91bGQgdHJpZ2dlciBhbnRpYWxpYXNpbmcuCgoJKiBkbGxzL3VybG1vbi9maWxlLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglFbmNvZGUgVVJMIGluIGZpbGUgcHJvdG9jb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi90aGVtaW5nLmM6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVVucmVnaXN0ZXIgdGhlbWluZyBzdWJjbGFzc2VzIGF0IGNvbWN0bDMyIHNodXRkb3duOyBzaG91bGQgZml4CglyZXBvcnRlZCByZS1yZWdpc3RyYXRpb24gZXJyb3JzLgoKCSogZGxscy91cmxtb24vdGVzdHMvcHJvdG9jb2wuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBwcm90b2NvbCB0ZXN0LgoKCSogZGxscy9oaGN0cmwub2N4L0ZpLnJjLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLnJjLAoJICBkbGxzL3NlcmlhbHVpL0ZpLnJjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLAoJICBkbGxzL3NoZG9jdncvRmkucmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLCBkbGxzL3dpbnNwb29sL0ZpLnJjLAoJICBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnJjLCBwcm9ncmFtcy93aW5lbWluZS9GaS5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCUtpbW1vIE15bGx5dmlydGEgPGtpbW1vLm15bGx5dmlydGFAZ21haWwuY29tPgoJQWRkZWQgRmlubmlzaCByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL2V4ZGlzcC5pZGw6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtaXNzaW5nIGF0dHJpYnV0ZXMuCgoJKiBpbmNsdWRlL2V4ZGlzcGlkLmg6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtb3JlIGRlZmluaXRpb25zLgoKCSogZGxscy9tc2kvaGVscGVycy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgbm90IHRvIGFjY2VzcyBpbnZhbGlkIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbjogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHVybG1vbi5pbmYgYXMgZGVwZW5kZW5jeSBvZiByc3JjLnJlcy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6CglGaXhlZCB0aGUgYmluYXJ5IGxheW91dCBnY2MgaGFja3MgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBnY2MgNC4wLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmg6CglGaXhlZCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9oYW5kbGV0YWJsZS5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3RocmVhZC5jOgoJVXNlIFNJWkVfVCBpbnN0ZWFkIG9mIFVMT05HIGZvciB0aGUgc2l6ZSBhcmd1bWVudHMgb2YgdGhlIHZpcnR1YWwKCW1lbW9yeSBmdW5jdGlvbnMuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywKCSAgZGxscy9kc291bmQvZHVwbGV4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMva2VybmVsL2NoYW5nZS5jLAoJICBkbGxzL2tlcm5lbC9leGNlcHQuYywgZGxscy9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9udGRsbC9jZHJvbS5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy91c2VyL2N1cnNvcmljb24uYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L3hpbS5jOgoJRml4ZWQgc29tZSB0cmFjZXMgdG8gdXNlIHRoZSByaWdodCBwcmludGYgZm9ybWF0IGFuZCBhdm9pZCB0eXBlY2FzdHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU9ubHkgdHJ5IHRvIHNldCAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeSBvbiBpMzg2LgoJQWRkIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IHdhcm5pbmcgaWYgc3VwcG9ydGVkLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHByb2JsZW0uCgoJKiBkbGxzL3VybG1vbi9pbnRlcm5ldC5jLCBkbGxzL3VybG1vbi90ZXN0cy9taXNjLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUEFSU0VfU0VDVVJJVFlfVVJMIGFjdGlvbiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmV0dXJuIEVSUk9SX1NVQ0NFU1MgYXMgZGVmYXVsdCBhbmQgVFJVU1RfRV9QUk9WSURFUl9VTktOT1dOIGlmIGFza2VkCglmb3IgV0lOVFJVU1RfQUNUSU9OX0dFTkVSSUNfVkVSSUZZX1YyLgoKCSogZGxscy9tc2h0bWwvcHJvdG9jb2wuYywgZGxscy9tc2h0bWwvdGVzdHMvcHJvdG9jb2wuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCAqUHJvdG9jb2xJbmZvOjpQYXJzZVVybCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNYWtlIElDb25uZWN0aW9uUG9pbnRDb250YWluZXIgaW50ZXJmYWNlIGhlYXAgYmFzZWQuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbW92ZSBhbiBhbm5veWluZyBkaWFsb2cgd2hlbiB0cnlpbmcgdG8gY2xlYW4gdXAgYSBkaXJlY3RvcnkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIFNob3dXaW5kb3coU1dfU0hPV01BWElNSVpFRCkgY2FsbGVkIGZvciBhIG5vdCB2aXNpYmxlCglvdmVybGFwcGVkIHdpbmRvdywgd2hpY2ggc2hvd3MgdGhhdCBXTV9TSE9XV0lORE9XIGlzIG5vdCBzZW50IGluIHRoYXQKCWNhc2UgYW5kIHRoYXQgaXQgc2hvdWxkIGFjdGl2YXRlIGEgd2luZG93IGFuZCBicmluZyBpdCB0byB0b3AuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJV2hlbiBkZWNvZGluZyBhIHNpZ25lZCBjZXJ0LCBtYWtlIHN1cmUgaXQncyByZWFsbHkgYSBjZXJ0LgoKMjAwNS0wOS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvc3ViY2xhc3MuYywgZGxscy9nZGkvdGVzdHMvYml0bWFwLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvbWVudS5jLAoJICBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywKCSAgcHJvZ3JhbXMvdGFza21nci9ncmFwaC5jLCBwcm9ncmFtcy90YXNrbWdyL3BlcmZwYWdlLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJVXNlIEdldC9TZXRXaW5kb3dMb25nUHRyIGluc3RlYWQgb2YgR2V0L1NldFdpbmRvd0xvbmcgd2hlcmUKCWFwcHJvcHJpYXRlLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglTcGVjaWZ5IDY0LWJpdCBpbnRlZ2VycyBhcyBkb3VibGUgaW5zdGVhZCBvZiBsb25nIGxvbmcgaW4gc3BlYyBmaWxlcwoJc28gdGhhdCB3ZSBnZXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCU1ha2UgU2luZ2xlfERvdWJsZS0+QlNUUiBjb252ZXJzaW9uIHVzZSB0aGUgc3BlY2lmaWVkIGxvY2FsZSBmb3IgdGhlCglkZWNpbWFsIHBvaW50IGV2ZW4gd2l0aG91dCB0aGUgTE9DQUxFX1VTRV9OTFMgZmxhZy4gVGVzdCBzdXBwbGllZC4KCgkqIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYSBmaXhlZCBzaXplIGJ1ZmZlciB0byB0aGUgaGVhcC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZWR1Y2UgdGhlIGluZGVudCBsZXZlbCBvZiBhIGZ1bmN0aW9uLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglBZGRlZCBkZXNjcmlwdGlvbnMgZm9yIGEgZmV3IG1vcmUgbWFjaGluZSB0eXBlcy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGdpdmVuIHRoZSBFV1hfRk9SQ0UgZmxhZywgRXhpdFdpbmRvd3NFeCgpIHNob3VsZCBub3Qgc2VuZCB0aGUKCVdNX3tRVUVSWX1FTkRTRVNTSU9OIG1lc3NhZ2VzLgoJQWRkIHN1cHBvcnQgZm9yIEVXWF9GT1JDRUlGSFVORy4KCUV4aXRXaW5kb3dzRXgoKSBzaG91bGQgcmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZHMsIGV2ZW4gaWYgdGhlIHVzZXIKCWNhbmNlbHMgdGhlIHNodXRkb3duLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC9kdXBsZXguYywgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMvZ2RpL2dkaW9iai5jLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3N5c2xldmVsLmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL21zY21zL2hhbmRsZS5jLAoJICBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2dpdC5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy91c2VyL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL2RkZV9taXNjLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3dpbnByb2MuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy94MTFkcnYvZGNlLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94ZG5kLmMsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgaW5jbHVkZS93aW5udC5oOgoJVXNlIGEgbW9yZSBwb3J0YWJsZSBzY2hlbWUgZm9yIHN0b3JpbmcgdGhlIG5hbWUgb2YgYSBjcml0aWNhbAoJc2VjdGlvbi4KCgkqIGRsbHMvc2hkb2N2dy9taXNjLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTWFrZSBJUXVpY2tBY3RpdmF0ZSBpbnRlcmZhY2UgaGVhcCBiYXNlZC4KCgkqIGRsbHMvd2lubW0vcGxheXNvdW5kLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgZmNjVHlwZSBhcyBoZXggaW5zdGVhZCBvZiBjaGFyYWN0ZXJzIGluIHRyYWNlIG91dHB1dC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBBZGRlZCBhIGRlZmluZSBjaGVjayBmb3IgX194ODZfNjRfXy4KCgkqIHRvb2xzL3dpbmVkdW1wL2R1bXAuYzoKCUZpeGVkIGdldF90aW1lX3N0ciBkZWZpbml0aW9uIHRvIG1hdGNoIHRoZSBwcm90b3R5cGUuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgdGhlIHdpbjMyLmFwaSBmaWxlIHRvIGN1cnJlbnQgQ1ZTLgoKCSogZGxscy9kaW5wdXQvZWZmZWN0X2xpbnV4aW5wdXQuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSBwcm9wZXIgaWZkZWZzIGFyb3VuZCB1bmlzdGQuaC4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9jZXJ0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGNhbGwgQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQgZnJvbSBDZXJ0RGVsZXRlQ2VydGlmaWNhdGVGcm9tU3RvcmUKCS0gZml4IHNvbWUgcmVmIGNvdW50aW5nIHByb2JsZW1zCgoJKiBkbGxzL3VybG1vbi9yZWdzdnIuYywgZGxscy91cmxtb24vdGVzdHMvcHJvdG9jb2wuYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1vdmUgcHJvdG9jb2wncyBDTFNJRHMgdG8gdXJsbW9uLmlkbC4KCgkqIGRsbHMvdXJsbW9uL2ludGVybmV0LmMsIGRsbHMvdXJsbW9uL3Rlc3RzL21pc2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBQQVJTRV9QQVRIX0ZST01fVVJMIGFjdGlvbiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvdXJsbW9uL3JzcmMucmMsIGRsbHMvdXJsbW9uL3ZlcnNpb24ucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHZlcnNpb24gcmVzb3VyY2UgdG8gdXJsbW9uLmRsbC4KCjIwMDUtMDktMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBEZWZpbmUgR0VUX0lQIGZvciB4ODZfNjQuCgoJKiBsaWJzL3dpbmUvcG9ydC5jOiBJbXBsZW1lbnRlZCB3aW5lX3N3aXRjaF90b19zdGFjayBmb3IgeDg2XzY0LgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jOgoJQXZvaWQgJ2Nsb2JiZXJlZCBieSBsb25nam1wJyB3YXJuaW5ncy4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy9jb3VyaWVyLnNmZCwKCSAgZm9udHMvbWFybGV0dC5zZmQsIGZvbnRzL21zX3NhbnNfc2VyaWYuc2ZkLCBmb250cy9zeXN0ZW0uc2ZkLAoJICBmb250cy93aW5lX2NvdXJpZXIuc2ZkLCBmb250cy93aW5lX21hcmxldHQuc2ZkLAoJICBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkLCBmb250cy93aW5lX3N5c3RlbS5zZmQ6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIFdpbmUgZm9udHMgdG8gbWF0Y2ggV2luZG93cyBmb250IG5hbWVzLgoKCSogZGxscy93bGRhcDMyL2NvbnRyb2wuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9jcmVhdGVfc29ydF9jb250cm9sKi4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9jZXJ0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGltcGxlbWVudCBzeXN0ZW0gc3RvcmVzCgktIHJlbW92ZSBhbiBpbnRlcm1pdHRlbnRseSBmYWlsaW5nIHJlZ2lzdHJ5IHRlc3QKCgkqIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNYWtlIElQcm92aWRlQ2xhc3NJbmZvMiBpbnRlcmZhY2UgaGVhcCBiYXNlZC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+Cglja2lkIG5vdCBmY2NUeXBlIHNwZWNpZmllcyB0aGUgZm9ybSB0eXBlIHRvIHNlYXJjaCBmb3IuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJUmVsZWFzZSBCSU5ESU5GTyBpbiAqUHJvdG9jb2w6OlN0YXJ0LgoKCSogZGxscy9nZGkvZm9udC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHJldHVybiB2YWx1ZSBvZiBFeHRUZXh0T3V0IGluIHRoZSBjYXNlIHdoZW4gY291bnQgPT0gMC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQYXNzIGEgbG9jYWxseSBtb2RpZmllZCB2ZXJzaW9uIG9mIFNIRUxMRVhFQ1VURUlORk8gdG8KCUlTaGVsbEV4ZWN1dGVIb29rV19FeGVjdXRlLCB0aGlzIHNob3VsZCBwYXNzIHRocm91Z2ggYXQgbGVhc3QKCXNlaV90bXAublNob3cgcmV0cmlldmVkIGZyb20gYW4gLmxuayBmaWxlIChmU3RhcnR1cCkuCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgbW9yZSAubG5rIGZpbGUgaGVhZGVyIGZpZWxkcy4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBTdG9wIHVzaW5nIGEgbm90IGluaXRpYWxpemVkIHZhcmlhYmxlIHN6VGVtcCBpbgoJICBfZGJnX0lMU2ltcGxlR2V0VGV4dCwgbWFrZSBfZGJnX0lMU2ltcGxlR2V0VGV4dCByZXR1cm4gbm8gdmFsdWUgc2luY2UKCSAgbm9ib2R5IGlzIHVzaW5nIGl0LgoJLSBTdG9wIGRlcmVmZXJlbmNpbmcgYSBwb3NzaWJsZSBOVUxMIGluIHBkdW1wIHNpbmNlCgkgIF9kYmdfSUxHZXREYXRhUG9pbnRlciBjYW4gcG90ZW50aWFsbHkgcmV0dXJuIE5VTEwgKGZvciBpbnN0YW5jZSBmb3IKCSAgcm9vdCBvciBkZXNrdG9wIHBpZGwpLgoJLSBNYWtlIHNoZGVidWdzdHJfZ3VpZCB1c2Ugc3RhbmRhcmQgd2luZV9kYmdfc3ByaW50ZiBpbnN0ZWFkIG9mIHRoZQoJICBoYW5kbWFkZSBzb2x1dGlvbi4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBGaXhlZCBhIGNvbW1lbnQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG9jYXRlIG1lbW9yeSByYXRoZXIgdGhhbiB1c2luZyBmaXhlZCBsZW5ndGggYnVmZmVycy4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgUnVubmluZ0FjdGlvbnMgYXJyYXkgaW50byBhIGxpc3QuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSGF2ZSBFeHRUZXh0T3V0IGNhbGwgaW50byB0aGUgZm9udCBsaW5raW5nIG1lY2hhbmlzbS4KCUdldENoYXJXaWR0aCwgR2V0Q2hhckFCQ1dpZHRocyBhbmQgR2V0VGV4dEV4dGVudFBvaW50IHNob3VsZCByZXR1cm4KCXRoZSB3aWR0aHMgb2YgYSBsaW5rZWQgZm9udCdzIGdseXBocy4KCgkqIGluY2x1ZGUvc3FsdHlwZXMuaDogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIHR5cGVkZWZzIFNRTFdDSEFSIGFuZCBTUUxUQ0hBUi4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgNjQtYml0IGZvcm1hdCBOVCBoZWFkZXIgYW5kIGV4cG9ydC9pbXBvcnQgdGFibGVzLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL2VuY29kZS5jOgoJQXZvaWQgYSBjb3VwbGUgb2YgJ2Nsb2JiZXJlZCBieSBsb25nam1wJyB3YXJuaW5ncy4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvY2FyZHMvY2FyZHMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYzoKCUZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gb3BlbmluZyB0aGUgZmlyc3QgZmlsZSBvbiBhIHJlbW92YWJsZQoJZGV2aWNlLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgYSBmaXhtZSBtZXNzYWdlIGEgbGl0dGxlLgoKCSogZGxscy9tc2kvY2xhc3Nlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGZpeCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoZSBwcm9naWQgbGlzdCBjb252ZXJzaW9uCgktIG1ha2UgYSBmaXhtZSBhIGxpdHRsZSBsZXNzIGFsYXJtaXN0CgoJKiBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvaGVscGVycy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYW4gdW5uZWNlc3NhcnkgbGV2ZWwgb2YgaW5kZW50LgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1vcnkgbGVha3MgaW4gY3VzdG9tIGFjdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wcm92ZSBtaWRpIHRyYWNlLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGluY2x1ZGUvcnBjbmRyLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRml4IE5kclNlcnZlckNvbnRleHRNYXJzaGFsbCBwcm90b3R5cGUuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBjaGVjay4KCgkqIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTWFrZSBJUGVyc2lzdCogaW50ZXJmYWNlcyBoZWFwIGJhc2VkLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFJlbGVhc2VCaW5kSW5mbyBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvbXByL21wcl9tYWluLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglGaXggRGxsQ2FuVW5sb2FkTm93IHByb3RvdHlwZS4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL2NvbnRyb2wuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9jb250cm9sX2ZyZWUqLCBsZGFwX2NvbnRyb2xzX2ZyZWUqIGFuZAoJbGRhcF9mcmVlX2NvbnRyb2xzKi4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9jZXJ0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgc3lzdGVtIHJlZ2lzdHJ5IHN0b3Jlcy4KCgkqIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29udmVydCBhIGZldyBtb3JlIGNvbnN0YW50cyBmcm9tIHN0cmluZ3MgdG8gYnl0ZSBhcnJheXMuCgoyMDA1LTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUFkZGVkIGEgYml0IG9mIGZyYW1ld29yayBmb3IgZnV0dXJlIHg4Nl82NCBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCB0d28gdG9kb193aW5lJ3MgYXJvdW5kIHRlc3RzIHRoYXQgbWVhbndoaWxlIHN1Y2NlZWQgb24gd2luZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglQYXNzIGNvcnJlY3QgcG9pbnRlciB0byBTSEZyZWUgaW4gY2FzZSBvZiBmYWlsdXJlIGluCglVTklYRlNfcGF0aF90b19waWRsLgoJUmV0dXJuIEVfRkFJTCBpZiB3ZSBjYW4ndCBnZXQgdGhlIHVuaXggcGF0aCBpbgoJSVBlcnNpc3RGb2xkZXIzOjpJbml0aWFsaXplRXguCglSZXR1cm4gRV9OT0FHR1JFR0FUSU9OIGlmIG5vbi1OVUxMIHBVbmtPdXRlciBpcyBnaXZlbiB0byB0aGUKCWNvbnN0cnVjdG9yLgoKCSogZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCVJlcGxhY2UgYSBmZXcgbW9yZSBkaXJlY3QgbHBWdGJsIGFjY2Vzc2VzIGJ5IHRoZSBwcm9wZXIgbWFjcm9zLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgRm9udElzTGlua2VkLgoKCSogdG9vbHMvd2luZS5pbmY6IENocmlzdG9waCBGcmljayA8ZnJpY2tAc2MtbmV0d29ya3MuZGU+CglGYWtlIGRpcmVjdHggOWMgaW5zdGVhZCBvZiA5Yi4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaVJlaW5zdGFsbEZlYXR1cmUuCgoJKiBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi9jZXJ0LmMsCgkgIGRsbHMvY3J5cHQzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL3Rlc3RzL2NlcnQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCByZWdpc3RyeSBzdG9yZXMuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC90aHJlYWQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQga2VybmVsMzI6U2V0VGhyZWFkUHJpb3JpdHkgb24gdG9wIG9mIG50ZGxsJ3MgZXF1aXZhbGVudAoJZnVuY3Rpb25zLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJVXNlIHRoZSBDT00gbWFjcm9zIGluc3RlYWQgb2YgYWNjZXNzaW5nIGxwVnRibCBkaXJlY3RseS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglHZW5lcmF0ZSB0aGUgTlQgaGVhZGVyIGluIGFzc2VtYmx5IGluc3RlYWQgb2YgdXNpbmcgYSBDIHN0cnVjdHVyZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmMsCgkgIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vaW50ZXJuZXQuYywKCSAgZGxscy91cmxtb24vdGVzdHMvbWlzYy5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBDb0ludGVybmV0UGFyc2VVcmwgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJZ2V0X2dseXBoX2luZGV4IHNob3VsZCByZXR1cm4gdGhlIG5vbmV4aXN0ZW50IGdseXBoIGZvciBiaXRtYXAgZm9udHMKCXdoZW4gYSB1bmljb2RlIGNoYXJhY3RlciBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGUgYnl0ZSBpbiB0aGUKCWZvbnQncyBjb2RlcGFnZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvSmEucmM6IFZpa3JhbSBLdW1hciA8dmlrQHpvbmU4MS5jb20+CglVcGRhdGUgSmFwYW5lc2UgcmVzb3VyY2UgZmlsZSB0byBpbmNsdWRlIHRoZSBUaGVtZSB0YWIuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiA8b3JpbkBwaW5oZWFkLmNjPgoJV3JvbmcgZmxhZ3Mgd2VyZSBiZWluZyB0ZXN0ZWQgZm9yIElOVEVSTkVUX0ZMQUdfTk9fQVVUT19SRURJUkVDVC4KCgkqIGluY2x1ZGUvb2xlaWRsLmlkbDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgdHlwby4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBmb3Igbm8gZm9yY2UgZmVlZGJhY2sgY2FzZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvZmlsZXMuYywKCSAgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUtlZXAgdGVtcG9yYXJ5IGZpbGVzIGluIGEgc2VwZXJhdGUgbGlzdC4KCgkqIGRsbHMvdXNlci93aW4uYzoKCURvbid0IGZhbGxiYWNrIHRvIExvYWRNZW51MTYgd2hlbiB0aGUgd2luZG93IGlzIGNyZWF0ZWQgd2l0aCBhIG51bGwKCWluc3RhbmNlLgoKCSogZGxscy91c2VyL2VkaXQuYzogT25seSBhY2Nlc3MgMTYtYml0IHN0YWNrIGlmIHJlYWxseSBuZWNlc3NhcnkuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYzoKCUthcnN0ZW4gRWxmZW5iZWluIDxrZWxmZUBnbXguZGU+CglBZGRlZCBBMlIxMEcxMEIxMCBhbmQgRDNERk1UX0QyNEZTOCBtb2RlcyB0byBhbGwgb3RoZXIgZnVuY3Rpb25zLgoKCSogZGxscy93bGRhcDMyL21pc2MuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjLCBpbmNsdWRlL3dpbmxkYXAuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfZXNjYXBlX2ZpbHRlcl9lbGVtZW50Ki4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ2FsbCBDSE1fQ2xvc2VDSE0gdG8gYXZvaWQgYSBtZW1vcnkgbGVhay4KCgkqIGRsbHMvbXNpL3N1bWluZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaW5jbHVkZSB0aGUgdGVybWluYXRpbmcgbnVsIGluIHRoZSBsZW5ndGggaW4KCU1zaVN1bW1hcnlJbmZvR2V0UHJvcGVydHlXLgoKCSogZGxscy9tc2kvdGVzdHMvcGFja2FnZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGFkZCB0ZXN0IGZvciBNc2lHZXRTb3VyY2VQYXRoCgktIGRvbid0IHNwZWNpZnkgZHJpdmUgZm9yIHBhY2thZ2UgcGF0aAoKCSogZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1ha2UgSU9sZUNvbnRyb2wgYW5kIElPbGVJblBsYWNlT2JqZWN0IGludGVyZmFjZSBoZWFwIGJhc2VkLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSB0cmFuc2xhdGlvbiBvZiBkZXN0IHRvIERlc3RXLCBoYXZpbmcgaXQgYmUgTlVMTCB2cyAiIiBoYXMKCWRpZmZlcmVudCBtZWFuaW5ncyBmb3IgTW92ZUZpbGVFeC4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgSUludGVybmV0U2VjdXJpdHlNYW5hZ2VyOjpbU0ddZXRTZWN1cml0eVNpdGUgaW1wbGVtZW50YXRpb24uCgktIEZvcndhcmQgSUludGVybmV0U2VjdXJpdHlNYW5hZ2VyIGNhbGxzIHRvIGN1c3RvbSBtYW5hZ2VyLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglWVF9QVFItPlZUX1VTRVJERUZJTkVEIGNoYWlucyBkZXBlbmQgb24gdGhlIFRLSU5EIG9mIHRoZSB1c2VyZGVmaW5lZAoJdHlwZSBkdWUgdG8gb3VyIGhhbmRsaW5nIG9mIENPTSBpbnRlcmZhY2VzIGluIHRoZXJlLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgY2xvbmUgcGlkbExhc3QgaW4gU0hCaW5kVG9QYXJlbnQuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJUmVsYXggdGhlIHNoYXJlIG1vZGUgdmFsaWRhdGlvbiBmb3IgdHJhbnNhY3RlZCBzdG9yYWdlLCB3aXRoIGEgdGVzdC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGluZnJhc3RydWN0dXJlIGZvciBmb250IGxpbmtpbmcuIFdpbmVFbmdHZXRMaW5rZWRIRm9udCB3aWxsIGJlCgl1c2VkIGJ5IEV4dFRleHRPdXQgdG8gcHJvdmlkZSBhbiBIRk9OVCB0aGF0IHdpbGwgY29udGFpbiBhIHZhbGlkCglnbHlwaC4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglSZW1vdmUgRVRDRElSIG1lbnRpb24uCgoyMDA1LTA5LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZ2RpMTYuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgRFJBV1BBVFRFUk5SRUNUIEVzY2FwZSgpIDE2PC0+MzIgbWFwcGVyIGFuZCBzdHViIGluIFdJTkVQUy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9udGRsbC9maWxlLmM6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBGU0NUTF9QSVBFX0xJU1RFTiBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJU0hFTEwzMi5JTEZpbmRMYXN0SUQgaXMgZXhwb3J0ZWQgYnkgb3JkaW5hbC4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmUgc3VyZSB0byBudWxsIHRlcm1pbmF0ZSB0aGUgc3RyaW5nIGluIE1zaUdldFByb2R1Y3RJbmZvQSBhZnRlciB0aGUKCVctPkEgY29udmVyc2lvbiB1c2luZyBNc2lHZXRQcm9kdWN0SW5mb1cgaWYgdGhlcmUgaXMgc3BhY2UuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgdGhlIHNlbGVjdGVkIHBwZW0gaW4gdGhlIEdkaUZvbnQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUmVtb3ZlIC1ERVRDRElSICh1bnVzZWQpLgoKCSogZGxscy9jZmdtZ3IzMi9tYWluLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2NmZ21ncjMyLmgsIGluY2x1ZGUvZGRrL2NmZ21ncjMyLmg6CglEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJTW92ZWQgY2ZnbWdyMzIuaCB0byBpbmNsdWRlL2Rkay8uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYWRpbmcgdGhlIE1SVWxpc3QgdXNpbmcgdGhlIFcgZnVuY3Rpb25zIHdlIG5lZWQgdG8gZGl2aWRlIHRoZSBzaXplCglieSBzaXplb2YoV0NIQVIpIHRvIGdldCB0aGUgY291bnQgb2YgY2hhcmFjdGVycy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3N0cmluZy5jOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGRlZCBhIHRlc3QgZm9yIGZhaWxpbmcgX2lzbWJibGVhZC4KCgkqIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIE1ha2UgV2ViQnJvd3NlciBoZWFwIGJhc2VkIG9iamVjdC4KCS0gSW1wcm92ZSBzdHVicy4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQ2hlY2sgYWdhaW5zdCBOVUxMIGxpYm5hbWUgaW4gTG9hZE1vZHVsZTE2LgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3Rlc3RzL2VkaXQuYzoKCU1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CgktIEZpeCB0ZXh0IHBsYWNlbWVudC4KCS0gUGFpbnQgdGhlIGJvcmRlciBjb3JyZWN0bHkgaWYgaXRzIHNpemUgaXMgYmlnZ2VyIHRoYW4gMSBwaXhlbC4KCS0gRG9uJ3QgcGFpbnQgdGV4dCBvdmVyIHRoZSBib3JkZXIuCgktIEZpeCB0aGUgZWRpdCBjb250cm9sIHBsYWNlbWVudCB0ZXN0czogUHV0IHRoZSBlZGl0IGJveCBpbiBhIHBhcmVudAoJICB3aW5kb3cuCgktIFRpZGllZCB1cCB0aGUgZWRpdCBjb250cm9sIHRlc3RzLgoKCSogZGxscy9tc2kvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc2kvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpL3Rlc3RzL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUZXN0IGNyZWF0aW5nIGEgcGFja2FnZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvaGVscGVycy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMgZm9yIGNvbmRpdGlvbnMuCgoJKiBkbGxzL21zaS9pbnN0YWxsLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvc3VtaW5mby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgZm9yIE1zaUdldFNvdXJjZVBhdGggcGFyYW1ldGVyIGhhbmRsaW5nLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBpbmNsdWRlL21zaS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBNc2lFbnVtUGF0Y2hlc0EvVy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLCBkbGxzL3NobHdhcGkvdmVyc2lvbi5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdmVyc2lvbiByZXNvdXJjZSB0byBzaGx3YXBpLmRsbC4KCgkqIGRsbHMvZGlucHV0L2VmZmVjdF9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJLSBBbGxvdyB0aGUgY3JlYXRpb24gb2YgYW4gRkYgZWZmZWN0IHdoaWxlIHRoZSBqb3lzdGljayBpcyBub3QKCSAgYWNxdWlyZWQuCgktIEZhaWxpbmcgdG8gZG93bmxvYWQgYW4gZWZmZWN0IGFmdGVyIHNldHRpbmcgcGFyYW1ldGVycyBpcyBub3QgYQoJICBmYXRhbCBlcnJvci4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gcmV3cml0ZSBrZXJuZWwzMjp7U2V0fEdldH1Qcmlvcml0eUNsYXNzIG9uIHRvcCBvZiBudGRsbCBlcXVpdmFsZW50CgktIHByaW9yaXR5IGZvciBwcm9jZXNzIGluIHdpbmVzZXJ2ZXIgaXMgbm93IHRoZSBOVERMTCBmb3JtIChubyBsb25nZXIKCSAgdGhlIGtlcm5lbDMyIG9uZSkKCgkqIGRsbHMvbXNpL2hlbHBlcnMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGxldmVsIG9mIGluZGVudC4KCgkqIGluY2x1ZGUvbXNpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgSU5TVEFMTE1PREUgZW51bWVyYXRpb24uCgoJKiBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3Rlc3RzL3N1bWluZm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZml4IE1zaVN1bW1hcnlJbmZvR2V0UHJvcGVydHkgdG8gcmV0dXJuIEVSUk9SX01PUkVfREFUQSBpZiB0aGUKCSAgYnVmZmVyIGlzIHRvbyBzbWFsbCAoYmFzZWQgb24gYSBwYXRjaCBieSBBcmljIFN0ZXdhcnQpCgktIGFkZCBhIHRlc3QgY2FzZSB0byBzaG93IGNvcnJlY3QgYmVoYXZpb3VyCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQcmludERsZzE2OiBDb3B5IGJhY2sgdGhlIEZsYWdzLCBuRnJvbVBhZ2UsIG5Ub1BhZ2UgYW5kIG5Db3BpZXMgc3RydWN0CgltZW1iZXJzIGFmdGVyIHRoZSBwcmludCBkaWFsb2cgZmluaXNoZXMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCS0gQWxsb3cgZW51bWVyYXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBhY3F1aXJlZC4KCS0gRmxhZyBGRi1jYXBhYmxlIGF4ZXMgZHVyaW5nIGVudW1lcmF0aW9uLgoKCSogZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBpbmNsdWRlL2RiZ2hlbHAuaCwgaW5jbHVkZS9zcWxleHQuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZXMgZm9yIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2l0aG91dCBhcmd1bWVudHMuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vZmlsZS5jLAoJICBkbGxzL3VybG1vbi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VybG1vbi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vdGVzdHMvcHJvdG9jb2wuYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBmaWxlIHByb3RvY29sIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9udGRsbC9hdG9tLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ29ycmVjdCB0aGlyZCBwYXJhbWV0ZXIgb2YgTnRRdWVyeUluZm9ybWF0aW9uQXRvbS4KCgkqIGZvbnRzL3dpbmVfbWFybGV0dC5zZmQ6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCVJlZHJhdyAiUmVzdG9yZSB3aW5kb3ciIHdpdGhvdXQgb3ZlcmxhcHBpbmcgc3BsaW5lcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHByb2dpZHMgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9SdS5yYzogWXVyaSBLb3psb3YgPGtvemxvdi55QGdtYWlsLmNvbT4KCVVwZGF0ZWQgUnVzc2lhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjOgoJTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglBZGQgYSBzdHViIGZvciBJc050QWRtaW4uCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUdldCBFeGl0UHJvY2VzcyB0byBjYWxsIE50VGVybWluYXRlUHJvY2Vzcy4KCgkqIGRsbHMvbXNpL2RhdGFiYXNlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIEdVSUQgZm9yIFBhdGNoIGZpbGVzIHNvIHRoYXQgdGhleSBjYW4gYmUgb3BlbmVkIGFzIHdlbGwuIExvb2tzCglsaWtlIHRoZSBkYXRhYmFzZSBzdHJ1Y3R1cmUgaXMgcHJldHR5IG11Y2ggdGhlIHNhbWUuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQnVpbGQgYSBsaXN0IG9mIGZvbnQgbGlua3MgcmVhZCBpbiBmcm9tIHRoZSByZWdpc3RyeS4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfbW9kdWxlX3VzZXIucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfcGFyc2VyLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgkndm9sYXRpbGUnIGlzIHZhbGlkIGV2ZXJ5d2hlcmUgd2hlcmUgJ2NvbnN0JyBpcyB2YWxpZC4gVGhpcyBmaXhlcwoJcGFyc2luZyBvZiB0aGUgbmV3IEludGVybG9ja2VkRXhjaGFuZ2UoKSBwcm90b3R5cGUuCgoJKiBkbGxzL3R3YWluL2RzbV9jdHJsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNyYXNoIGlmIHRoZSB0d2FpbiBkZXZpY2UgbmFtZSBpcyBudWxsLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3NvdXJjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzb21lIGZpeG1lIG1lc3NhZ2VzIGxlc3MgYWxhcm1pc3QuCgoJKiBkbGxzL3NldHVwYXBpL0ZpLnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0ZpLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCUFkZGVkIEZpbm5pc2ggcmVzb3VyY2VzLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGNvbXBpbGF0aW9uIG9mIGtlcm5lbDMyLmRsbC5zbyBvbiBub24teDg2IHByb2Nlc3NvcnMuCgoJKiBpbmNsdWRlL3VybG1vbi5pZGw6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIFVwZGF0ZSBHZXRTZWN1cml0eUlkIGRlY2xhcmF0aW9uLgoJLSBBZGQgZGVjbGFyYXRpb24gb2YgQ29JbnRlcm5ldFBhcnNlVXJsIGFuZCBJTkVUX0VfREVGQVVMVF9BQ1RJT04uCgoJKiBkbGxzL21zaS90ZXN0cy9kYi5jOiBTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglPbGRlciBwbGF0Zm9ybXMgY2hva2Ugb24gYSBOVUxMIGFzIHRoZSB0aGlyZCBwYXJhbWV0ZXIgdG8KCU1zaVZpZXdHZXRFcnJvci4KCgkqIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwgZGxscy9oaGN0cmwub2N4L2NobS5jLAoJICBkbGxzL2hoY3RybC5vY3gvY2htLmgsIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gQWRkIHRoZSBDSE0gVXRpbGl0eSBBUEkuCgktIExvYWQgaGVscCB3aW5kb3cgdmFsdWVzIGZyb20gdGhlIENITSBmaWxlLgoKCSogZGxscy93aW50cnVzdC8uY3ZzaWdub3JlLCBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnRydXN0L3ZlcnNpb24ucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHZlcnNpb24gcmVzb3VyY2UgdG8gd2ludHJ1c3QuZGxsLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglQcm90ZWN0IEZGX1NUQVRVUyB1c2FnZSB0byBhdm9pZCBjb21waWxlIGVycm9ycyBvbiBtYWNoaW5lcyB3aXRoIG9sZAoJbGludXgvaW5wdXQuaC4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJI2luY2x1ZGUgPHN0ZGxpYi5oPiB0byBnZXQgYWJzKCkgcHJvdG90eXBlLgoKMjAwNS0wOS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJV2Ugc2hvdWxkbid0IHVzZSBmbGF0IG5hbWVzcGFjZSBmb3IgZGxscyBvbiBNYWMgT1MuIEFsc28gZG9uJ3QgaGlkZQoJdW5kZWZpbmVkIHN5bWJvbCBlcnJvcnMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglPdXRwdXQgdGhlIGRlbGF5ZWQgaW1wb3J0IHRhYmxlIHVzaW5nIGFzc2VtYmx5IHRvby4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBJbXBsZW1lbnRlZCAtLWltYWdlLWJhc2Ugc3VwcG9ydCBmb3IgTWFjIE9TLgoKCSogZGxscy9rZXJuZWwvcHRocmVhZC5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwgbGlicy93aW5lL3BvcnQuYywKCSAgbGlicy93aW5lL3dpbmUuZGVmLCBsaWJzL3dpbmUvd2luZS5tYXAsIGxvYWRlci9rdGhyZWFkLmMsCgkgIGxvYWRlci9tYWluLmMsIGxvYWRlci9tYWluLmgsIGxvYWRlci9wdGhyZWFkLmM6CglVc2UgZXhwbGljaXQgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIHB0aHJlYWQgc3VwcG9ydCBpbnN0ZWFkIG9mIHJlbHlpbmcKCW9uIEVMRiBzeW1ib2wgb3ZlcnJpZGluZy4KCgkqIGRsbHMvd2luZWNydDAvZGxsX2VudHJ5LmM6CglNYWtlIHN1cmUgdG8gYWx3YXlzIGNhbGwgdGhlIGRlc3RydWN0b3JzIHdoZW4gdGhlIGNvbnN0cnVjdG9ycyBoYXZlCgliZWVuIGNhbGxlZCBmcm9tIHRoZSBkbGwgZW50cnkgcG9pbnQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL05sLnJjOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXBkYXRlIGZvciB0aGUgJ0luc3RhbGwgdGhlbWUnIGJ1dHRvbi4KCgkqIGRsbHMvdXJsbW9uL2Zvcm1hdC5jLCBkbGxzL3VybG1vbi90ZXN0cy9taXNjLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFJlZ2lzdGVyRm9ybWF0RW51bWVyYXRvciBhbmQgUmV2b2tlRm9ybWF0RW51bWVyYXRvcgoJaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdCBhIHRlc3QgdGhhdCBpbmNvcnJlY3RseSBzaG93ZWQgc2lnbmVkIGNlcnRzIGNvdWxkbid0IGJlIGFkZGVkCgl0byBhIG1lbSBzdG9yZS4KCVN1cHBvcnQgc2lnbmVkIGNlcnRzIGluIG1lbSBzdG9yZXMuCglDb3JyZWN0IHVzZSBvZiBhIGZyZWVkIHBvaW50ZXIuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCUltcGxlbWVudCBFbnVtRWZmZWN0cywgQ3JlYXRlRWZmZWN0LCBFbnVtQ3JlYXRlZEVmZmVjdHMsCglTZW5kRm9yY2VGZWVkYmFja0NvbW1hbmQsIGFuZCBHZXRGb3JjZUZlZWRiYWNrU3RhdHVzIGZvciBsaW51eCBpbnB1dAoJam95c3RpY2tzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXN4bWwzL01ha2VmaWxlLmluLAoJICBkbGxzL21zeG1sMy9tc3htbF9wcml2YXRlLmgsIGRsbHMvbXN4bWwzL25vZGUuYywKCSAgZGxscy9tc3htbDMvbm9kZWxpc3QuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIElYTUxET01Ob2RlOjpzZWxlY3ROb2Rlcy4KCgkqIGRsbHMvd2luZWNydDAvZHJ2X2VudHJ5LmM6CglUaGVyZSdzIG5vIHdheSB0byBwcm9wZXJseSB1bmxvYWQgYSBkcml2ZXIsIHNvIGRvbid0IHRyeS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IGEgdGVzdCBmYWlsaW5nIG9uIFdpbmRvd3MuICBSZXBvcnRlZCBieSBLYXRlcmluYSBOaXpobmlrLgoKCSogZGxscy9jcnlwdDMyL21haW4uYywgZGxscy9jcnlwdDMyL3Rlc3RzL21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcHJvdmUgQ3J5cHRBbGdJZFRvT0lEL0NyeXB0T0lEVG9BbGdJZCB0ZXN0cywgYW5kIHByZXZlbnQgYSBjcmFzaCBpbgoJQ3J5cHRPSURUb0FsZ0lkLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnRlZCBwb2ludCBzcHJpdGVzIHVzaW5nIEFSQl9QT0lOVF9TUFJJVEUgZXh0ZW5zaW9uLgoKCSogZGxscy91cmxtb24vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLAoJICBkbGxzL3VybG1vbi91bW9uLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgQ3JlYXRlQXN5bmNCaW5kQ3R4RXggaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvcnJlY3QgYSBidW5jaCBvZiBsdXJraW5nIGFzbi4xIGRlY29kZSBidWdzLgoKMjAwNS0wOS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU91dHB1dCB0aGUgaW1wb3J0IGRpcmVjdG9yeSB1c2luZyBhc3NlbWJseSBpbnN0ZWFkIG9mIEMgc3RydWN0dXJlcy4KCgkqIGRsbHMvd2luZWNydDAvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWNydDAvZHJ2X2VudHJ5LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCUFkZGVkIGFuIGVudHJ5IHBvaW50IHJvdXRpbmUgZm9yIG5hdGl2ZSBkcml2ZXJzLgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmMsIGRsbHMvYXRsL3JzcmMucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIGlkIG9mIHRoZSBSRUdJU1RSWSByZXNvdXJjZS4KCgkqIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9lZmZlY3RfbGludXhpbnB1dC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglBZGRlZCBhIGxpbnV4IGlucHV0IHN5c3RlbSBmb3JjZSBmZWVkYmFjayBlZmZlY3QgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL21zaHRtbC9uc2VtYmVkLmM6IEZpeGVkIEM5OSBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tc2MuYywKCSAgZGxscy9kYmdoZWxwL21zY3ZwZGIuaCwgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywKCSAgZGxscy9udGRsbC90aW1lLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL3dpbmVjcnQwL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwL2NydDBfcHJpdmF0ZS5oLAoJICBkbGxzL3dpbmVjcnQwL2RsbF9lbnRyeS5jLCBkbGxzL3dpbmVjcnQwL2V4ZV9lbnRyeS5jLAoJICBkbGxzL3dpbmVjcnQwL2V4ZV93ZW50cnkuYywgZGxscy93aW5lY3J0MC9pbml0LmMsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1vdmVkIHRoZSBzcGVjIGZpbGUgaW5pdCBmdW5jdGlvbiBhbmQgY29uc3RydWN0b3IgdG8gd2luZWNydDAuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gY29udmVydCB2ZXJicyBpbnRvIGEgc3RhbmRhcmQgbGlzdAoJLSByZW1vdmUgbGltaXRhdGlvbiBvZiAxMDAgdmVyYnMKCS0gdXNlIHBvaW50ZXJzIHRvIHZlcmJzIHJhdGhlciB0aGFuIGluZGV4ZXMKCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGVuY29kaW5nL2RlY29kaW5nIFJTQSBwdWJsaWMga2V5cy4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9jZXJ0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgQ2VydEFkZFNlcmlhbGl6ZWRFbGVtZW50VG9TdG9yZS4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6IEZpeGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsuCgoJKiBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLAoJICBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVJlbW92ZSBzaGx3YXBpIGRlcGVuZGVuY3kuCgoJKiBNYWtlZmlsZS5pbjogQ2xlYW4gTWFrZWltcGxpYi5ydWxlcyB0b28uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL3FjYXAvdjRsLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Byb3RlY3RkYXRhLmMsCgkgIGluY2x1ZGUvY29tbWN0cmwuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IHdhcm5pbmdzIGluIDY0Yml0LgoKCSogZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvbnNlbWJlZC5jLAoJICBkbGxzL21zaHRtbC9uc2lmYWNlLmlkbCwgZGxscy9tc2h0bWwvcGVyc2lzdC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUJlZ2lubmluZyBpbXBsZW1lbnRhdGlvbiBvZiBvbmxvYWQgcm91dGluZS4KCgkqIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vYmpzYWZlLmlkbDoKCVRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQWRkZWQgb2Jqc2FmZS5pZGwgZm9yIElPYmplY3RTYWZldHkgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9ndWlkZGVmLmg6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRm9yIEMrKywgZGVjbGFyZSBpbml0aWFsaXNlZCBHVUlEcyB0byBiZSAiZXh0ZXJuIGNvbnN0IiByYXRoZXIgdGhhbgoJanVzdCAiY29uc3QiIHRvIGVuc3VyZSB0aGF0IHRoZSBpbml0aWFsaXNlZCBHVUlEIGlzIHZpc2libGUgdG8gb3RoZXIKCW1vZHVsZXMsIGFuZCB1c2UgRVhURVJOX0MgcmF0aGVyIHRoYW4ganVzdCAiZXh0ZXJuIiBmb3IgdGhlIGJlbmVmaXQgb2YKCU1TVkMrKywgd2hpY2ggZG9lcyBuYW1lIG1hbmdsaW5nIG9uIGdsb2JhbCB2YXJpYWJsZXMuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vZm9ybWF0LmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VybG1vbi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdGVzdHMvbWlzYy5jLAoJICBpbmNsdWRlL3VybG1vbi5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgQ3JlYXRlRm9ybWF0RW51bWVyYXRvciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL3Nob2JqaWRsLmlkbCwKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvZGRlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IHdhcm5pbmdzIGluIDY0Yml0LgoKCSogZGxscy9tc2kvY2xhc3Nlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgb2JqZWN0cyB0byBsaXN0cyBhdCB0aGUgcmlnaHQgdGltZS4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTW9yZSBkZWZpbml0aW9ucyBhbmQgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IERhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJQWRkIGRlZmluaXRpb25zIGZvciBmb3JjZSBmZWVkYmFjayBjb21tYW5kIGFuZCBzdGF0dXMgZmxhZ3MuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGb3J3YXJkIGNhbGxzIG9mIElCYXNpYyogYW5kIElWaWRlb1dpbmRvdyBpbnRlcmZhY2VzIG9mIHRoZQoJZmlsdGVyZ3JhcGggdG8gdGhlIHJpZ2h0IGZpbHRlci4KCgkqIHByb2dyYW1zL3dpbmVjZmcvdGhlbWUuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglTaW5jZSB1eHRoZW1lIGFsc28gcmV0dXJucyBhIGZyaWVuZGx5IGRpc3BsYXkgbmFtZSBmcm9tCglFbnVtVGhlbWVDb2xvcnMoKSBhbmQgRW51bVRoZW1lU2l6ZXMoKSB1c2UgdGhhdCBpbiB0aGUgY29sb3Ivc2l6ZQoJY29tYm9zLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IG1vc3Qgb2YgdGhlIGRldGFpbHMgYXJvdW5kIHVubWFyc2hhbGxpbmcgb2YgYW4gb2JqZWN0CgkgIHBvaW50ZXIuCgktIEZpeCBhbGxvY2F0aW9uIHNjaGVtZSBpbiBOZHJDb25mb3JtYW50QXJyYXlVbm1hcnNoYWwgdG8gYWxsb2NhdGUgaWYKCSAgKnBwTWVtb3J5IGlzIE5VTEwsIGxpa2UgY29tcGxleCBzdHJ1Y3QgYW5kIHVzZXIgdHlwZSB1bm1hcnNoYWxsaW5nLgoKCSogZGxscy9vbGUzMi9kY29tLmlkbDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIFtzdHJpbmddIGF0dHJpYnV0ZSBpcyBvbmx5IHZhbGlkIG9uIGJ5dGUsIGNoYXIgYW5kIHdjaGFyX3QgdHlwZXMsCglzbyByZXBsYWNlICJ1bnNpZ25lZCBzaG9ydCIgYnkgIldDSEFSIi4KCgkqIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgVlRfVU5LTk9XTiBzdXBwb3J0IGZvciBWQVJJQU5UIG1hcnNoYWxpbmcgYnkgZ2VuZXJhbGlzaW5nIHRoZQoJZXhpc3RpbmcgVlRfRElTUEFUQ0ggY29kZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2Ugc3R1YiBtYW5hZ2VyIHRvIHRyYWNrIHRoZSBudW1iZXIgb2Ygbm9ybWFsIG1hcnNoYWxzIGluc3RlYWQgb2YKCXVzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIHNvIHRoYXQgbXVsdGlwbGUgbWFyc2hhbHMgb2YgdGhlIHNhbWUgb2JqZWN0CglhbmQgaW50ZXJmYWNlIHdvcmsgY29ycmVjdGx5LgoKCSogZGxscy9tc2h0bWwvb2xld25kLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNYWtlIE9sZUluUGxhY2VPYmplY3RXaW5kb3dsZXNzVnRibCBjb25zdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNsYXRlIGZpbGUgbmFtZSBmcm9tIHVuaXggdG8gQU5TSSBlbmNvZGluZyBpbgoJVW5peEZvbGRlcl9JU2hlbGxGb2xkZXIyX0dldERpc3BsYXlOYW1lT2YuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIHRoZSB0cmFja2luZyBvZiBzdHJlYW0gZnJlcXVlbmN5IGFuZCBmbGFncy4gU3RyZWFtIGZsYWdzIGFuZAoJZnJlcXVlbmN5IGFyZW4ndCBoYW5kbGVkIGF0IHRoZSBtb21lbnQuCgoJKiBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGV4ZWNfb25fdW5sb2FkIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy93bGRhcDMyL21pc2MuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggdGhlIGJ1aWxkIHdpdGhvdXQgb3BlbmxkYXAgaGVhZGVycy4KCjIwMDUtMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNTA4MzAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90aGVtaW5nLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byc2h0Lmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUZpeCB3YXJuaW5ncyBpbiA2NGJpdC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy90aGVtZS5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgYW4gIkluc3RhbGwgdGhlbWUiIGJ1dHRvbiB0byB0aGUgYXBwZWFyYW5jZSBwYWdlIHRvIGFsbG93Cgljb252ZW5pZW50IGNvcHlpbmcgb2YgdGhlIC5tc3N0eWxlcyBmaWxlIHRvIHRoZSBSaWdodCBQbGFjZSBpbnNpZGUgdGhlCglXaW5kb3dzIGRpci4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTm8ucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCUFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgoJTm9yd2VnaWFuIHRyYW5zbGF0aW9uIG9mIHdpbmVjZmcuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGNvbGxlY3Rpb24gc3RvcmVzLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglNb3JlIGVsYWJvcmF0ZSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KCkgaW1wbGVtZW50YXRpb247CglhbHNvIHJldHVybnMgVFJVRSBmb3IgdGhlbWUgcGFydHMgd2l0aCAzMmJwcCBpbWFnZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIEZJWE1FJ3MgaW4gc3R1YnMgaW5zdGVhZCBvZiBUUkFDRSdzLgoJSW5mZXIgcGF0aG1vZGUgZnJvbSBDTFNJRCBpbiBVbml4Rm9sZGVyQ29uc3RydWN0b3IuCglGYWlsIGluIElTaGVsbEZvbGRlcjo6QmluZFRvT2JqZWN0LCBpZiBmb2xkZXIgZG9lcyBub3QgaW5pdGlhbGl6ZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLAoJICBkbGxzL3JwY3J0NC9ycGNfZXBtYXAuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbXNodG1sL0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSB0aGUgR2VybWFuIHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NlY3VyMzIvc2VjdXIzMl9wcml2LmgsCgkgIGRsbHMvc2VjdXIzMi90ZXN0cy9tYWluLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBhIHN0YW5kYXJkIHdpbmUgbGlzdCBmb3IgcGFja2FnZXMgYW5kIHByb3ZpZGVycy4KCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYywKCSAgZGxscy91eHRoZW1lL3V4dGhlbWVkbGwuaDoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRW51bVRoZW1lQ29sb3JzKCkgYW5kIEVudW1UaGVtZVNpemVzKCkgYWN0dWFsbHkgZG8gbm90IHJldHVybiBhIHNpbmdsZQoJc3RyaW5nIHdpdGggdGhlIGNvbG9yL3NpemUgbmFtZSwgYnV0IHJhdGhlciBhIHN0cnVjdCBjb250YWluaW5nIHRocmVlCglzdHJpbmdzIC0gbmFtZSwgZGlzcGxheSBuYW1lIGFuZCB0b29sdGlwLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglTaW5jZSB0aGVtZSBpbWFnZXMgYXJlIHJldXNlZCBub3cgaXQncyBub3QgcmVhbGx5IGEgZ29vZCBpZGVhIHRvCglkZWxldGUgdGhlbSBpbiBkcmF3aW5nIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTmwucmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVcGRhdGUgdG8gdGhlIGxhdGVzdCB0aGVtZSBhbmQgdGFiIHNldHRpbmdzLgoKCSogZGxscy93bGRhcDMyL21pc2MuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9jb3VudF9lbnRyaWVzLCBsZGFwX2NvdW50X3JlZmVyZW5jZXMsCglsZGFwX2ZpcnN0X2F0dHJpYnV0ZSosIGxkYXBfZmlyc3RfZW50cnksIGxkYXBfZmlyc3RfcmVmZXJlbmNlLAoJbGRhcF9uZXh0X2F0dHJpYnV0ZSosIGxkYXBfbmV4dF9lbnRyeSBhbmQgbGRhcF9uZXh0X3JlZmVyZW5jZS4KCjIwMDUtMDgtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVjcnQwL2NydDBfcHJpdmF0ZS5oLCBkbGxzL3dpbmVjcnQwL2RsbF9lbnRyeS5jLAoJICBkbGxzL3dpbmVjcnQwL2V4ZV9lbnRyeS5jLCBkbGxzL3dpbmVjcnQwL2V4ZV93ZW50cnkuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQXZvaWQgdXNpbmcgY29tbW9uIHN5bWJvbHMsIHRoZXkgYXJlIGJyb2tlbiBvbiBNYWMgT1MuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywKCSAgZGxscy91eHRoZW1lL3V4dGhlbWVkbGwuaDoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJUGFzcyBhcm91bmQgd2hhdCBraW5kIG9mIHRyYW5zcGFyZW5jeSBhbiBpbWFnZSBhY3R1YWxseSBuZWVkcy4gVXNlCglhbHBoYS1ibGVuZGluZyBmb3IgMzJicHAgaW1hZ2VzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy90aGVtZS5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCU1ha2UgVEhFTUVfdXBkYXRlX2NvbG9yX2FuZF9zaXplIHN0YXRpYyBhbmQgZHJvcCBUSEVNRV8gcHJlZml4LgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIHR5cGVsaWIgbWFyc2hhbGVyIHVzZSBJUnBjQ2hhbm5lbEJ1ZmZlcjo6R2V0QnVmZmVyIGlmIHBvc3NpYmxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU2h1bnQgc29tZSB0cmFjZSBzdGF0ZW1lbnRzIG92ZXIgdG8gdGhlIHR5cGVsaWIgY2hhbm5lbCB0aGF0IGFyZW4ndAoJICByZWFsbHkgbXVjaCB1c2UgZXhjZXB0IGluIGRlYnVnZ2luZyB0eXBlbGliIHBhcnNpbmcuCgktIE1ha2Ugc3VyZSB0byByZWxlYXNlIGEgcmVmZXJlbmNlIHRvIGJlaW5nIHJldHVybmVkIGFzIFZhcmlhbnRDb3B5SW5kCgkgIHRha2VzIG9uZSBmb3IgdXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUNsb25lIHBpZGxMYXN0IGJlZm9yZSBmcmVlJ2luZyBwaWRsIGFmdGVyIGNhbGwgdG8gU0hCaW5kVG9QYXJlbnQuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0ZXN0IHRvIHNob3cgdGhhdCBXaW5kb3dzIGRvZXMgbm90IGFsbG9jYXRlIGEgbmV3IHBpZGwgaW4KCVNIQmluZFRvUGFyZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBTdHJpbmdGcm9tR1VJRDIgaW5zdGVhZCBvZiBTdHJpbmdGcm9tQ0xTSUQgaW4KCVVOSVhGU19pc19yb290ZWRfYXRfZGVza3RvcC4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUNvbXB1dGUgdGhlIG9yZGluYWwgYmFzZSBhbmQgbGltaXQgaW4gYXNzaWduX29yZGluYWxzIGluc3RlYWQgb2YgZG9pbmcKCWl0IHdoaWxlIHBhcnNpbmcuCgoJKiBkbGxzL2RpbnB1dDgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV3ZGV2L01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL3JzYWJhc2UvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sIGRsbHMvc3Rkb2xlMi50bGIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3Rkb2xlMzIudGxiL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwL2RsbF9tYWluLmM6CglVbmNvbW1lbnQgb3V0IERpc2FibGVUaHJlYWRMaWJyYXJ5Q2FsbHMgaW4gRGxsTWFpbiBhbmQgYWRkIHRoZQoJa2VybmVsMzIgaW1wb3J0cyB0aGF0IGl0IHJlcXVpcmVzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEEvVyBjb252ZXJzaW9ucyBpbiB0aGUgZXh0cmEgYnVmZmVyIHNwYWNlLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglSZXNlcnZlIGV4dHJhIHNwYWNlIGZvciBjb252ZXJzaW9ucy4KCgkqIGRsbHMvd2luZWNydDAvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWNydDAvY3J0MF9wcml2YXRlLmgsCgkgIGRsbHMvd2luZWNydDAvZGxsX2VudHJ5LmMsIGRsbHMvd2luZWNydDAvZXhlX2VudHJ5LmMsCgkgIGRsbHMvd2luZWNydDAvZXhlX3dlbnRyeS5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglNb3ZlZCBtb3JlIG9mIHRoZSBzcGVjIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gdGhlIHdpbmVjcnQwIGxpYnJhcnksCglhbmQgZ2V0IHJpZCBvZiBpbXBsaWNpdCBrZXJuZWwzMiBpbXBvcnRzLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvbWlzYy5jLCBkbGxzL3dsZGFwMzIvdmFsdWUuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9jb3VudF92YWx1ZXMqLCBsZGFwX2dldF92YWx1ZXMqLCAgbGRhcF9tc2dmcmVlIGFuZAoJbGRhcF92YWx1ZV9mcmVlX2xlbi4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGVuY29kaW5nL2RlY29kaW5nIG9mIENFUlRfQUxUX05BTUVfSU5GT3MgYW5kIENSTF9JTkZPcy4KCgkqIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC9zeXN0ZW0uZHJ2LnNwZWM6CglNb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBjb3VwbGUgb2Ygc3lzdGVtLmRydiBlbnRyeSBwb2ludHMgdG8KCXN5c3RlbS5jLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIHN1cHBvcnQgZm9yIERYVDIgYW5kIERYVDQuCgoJKiBpbmNsdWRlL3dpbmUvbGlzdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhIExJU1RfRk9SX0VBQ0hfRU5UUllfU0FGRSBoZWxwZXIgbWFjcm8uCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgbWVtb3J5IGNlcnQgc3RvcmVzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcHJvdmVkIGhlYWRlciBjb250cm9sIHBlcmZvcm1hbmNlIGJ5IG1haW50YWluaW5nIGFuIGludGVybmFsIG9yZGVyCglhcnJheS4KCgkqIGxpYnMvd2luZS9sZHQuYzoKCUltcGxlbWVudGVkIHdpbmVfbGR0X2FsbG9jX2ZzIGFuZCB3aW5lX2xkdF9pbml0X2ZzIGZvciBNYWMgT1MuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglVc2UgX193aW5lX3VuaW1wbGVtZW50ZWRfc3R1YiBmcm9tIGNydDAgZm9yIDE2LWJpdCBzcGVjIGZpbGVzIHRvby4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL05vLnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglOb3J3ZWdpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvbXNodG1sL0ZyLnJjLCBkbGxzL21zaHRtbC9yc3JjLnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJRnJlbmNoIHJlc291cmNlcy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJSWYgYSBNSU5TSVpFbiBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCwgZmFsbCBiYWNrIHRvIGFjdHVhbCBzaXplIG9mIG50aAoJaW1hZ2UgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgc3VpdGFibGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZCAxNi1iaXQgZXhwb3J0cy4KCgkqIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdG9vbGhlbHAxNi5jOgoJTW92ZWQgVGFza0ZpbmRIYW5kbGUxNiB0byB0b29saGVscDE2LmMuCgoJKiBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJTW92ZWQgR2xvYmFsTWFzdGVySGFuZGxlIHRvIGdsb2JhbDE2LmMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMTYuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCU1vdmVkIHRoZSBrZXJuZWwgMTYtYml0IGluaXRpYWxpemF0aW9uIHRvIGEgbmV3IERsbEVudHJ5UG9pbnQgcm91dGluZQoJaW4ga3JubDM4Ni4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gdGhlIGNvbWJpbmF0aW9uIG9mIGFsbCB0YWJsZSBrZXlzIG11c3QgYmUgdW5pcXVlLCBub3QgZWFjaCBrZXkKCS0gTXNpVmlld0V4ZWN1dGUgbWF5IG5vdCBiZSBjYWxsZWQgYmVmb3JlIE1zaU1vZGlmeVZpZXcKCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJVGFrZSBhIGNvbW1vbiBjb21wdXRhdGlvbiBvdXQgb2YgdHdvIGlmLWJyYW5jaGVzIGluCglVWFRIRU1FX0xvYWRJbWFnZSgpLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnRlZCBJV2luZUQzRERldmljZV9HZXRSZW5kZXJUYXJnZXREYXRhLgoKCSogZGxscy9tc2h0bWwvRW4ucmMsIGRsbHMvbXNodG1sL3Jlc291cmNlLmgsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNb3ZlIHN0cmluZ3MgdG8gcmVzb3VyY2VzLgoKCSogbGlicy93aW5lL2xvYWRlci5jOiBVc2UgdGhlIGNvcnJlY3Qgb3JkaW5hbCBmbGFnIGZvciBXaW42NCBzdXBwb3J0LgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzoKCUFkZGVkIGEgY291cGxlIG9mIG1pc3Npbmcgc3R1YnMgZm9yIHRoZSBub24tRUxGIGNhc2UuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglHZXQgcmlkIG9mIHRoZSB1bnVzZWQgb3duZXJfbmFtZSBmaWVsZC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRnIucmM6IEpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCVRoZW1pbmcgc2V0aW5ncyBpbiBGcmVuY2guCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogWXVyaSBLb3psb3YgPGtvemxvdi55QGdtYWlsLmNvbT4KCVNldCBkZWZhdWx0IHNpemUgZm9yIHRvb2xiYXIgYml0bWFwIGlmIG5vdCBzcGVjaWZpZWQuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBleHRlbnNpb25zIGluc3RlYWQgb2YgdXNpbmcgYW4gYXJyYXkKCS0gdXNlIGV4dGVuc2lvbiBwb2ludGVycyBpbnN0ZWFkIG9mIGFycmF5IGluZGV4ZXMKCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Byb3RlY3RkYXRhLmMsCgkgIGRsbHMvY3J5cHQzMi90ZXN0cy9tYWluLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9wcm90ZWN0ZGF0YS5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsCgkgIGRsbHMvaXRzcy9jaG1fbGliLmMsIGRsbHMvaXRzcy9senguYywgZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5jLAoJICBkbGxzL25ldGFwaTMyL25idC5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9leHRlbmRlZC5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2V4dGVuZGVkX29wZXJhdGlvbiogYW5kIGxkYXBfY2xvc2VfZXh0ZW5kZWRfb3AuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglVc2Ugd2luZWQzZGZvcm1hdCB3aGVuIGNhbGxpbmcgd2luZWQzZC4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaDoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJSW1wbGVtZW50ICJtYW51YWwiIGltYWdlIHNoYXJpbmcoYXMgb3Bwb3NlZCB0byB1c2luZyBMb2FkSW1hZ2UoKSB3aXRoCglMUl9TSEFSRUQpIGJ5IGtlZXBpbmcgdGhlIGxvYWRlZCBpbWFnZXMgaW4gYSBsaXN0LiBUaGlzIGlzIG5lZWRlZCBmb3IKCXByb3BlciBhbHBoYSBzdXBwb3J0IGxhdGVyIG9uIHNpbmNlIG9uY2UtcGVyLWltYWdlIHByZXBhcmF0aW9ucyB3aWxsCgliZSBuZWVkZWQgdGhlbi4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgSUhsaW5rVGFyZ2V0OjpOYXZpZ2F0ZSB0ZXN0LgoJLSBBZGRlZCBkb3dubG9hZGluZyB0ZXN0IChkaXNhYmxlZCkuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjOiBZdXJpIEtvemxvdiA8a296bG92LnlAZ21haWwuY29tPgoJVGhlbWUgZGlhbG9nIGFkZGVkIGluIFJ1LnJjLgoKMjAwNS0wOC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUZpeGVkIHRoZSBjaGVja2xpbmsgdGFyZ2V0IHRvIGxpbmsgYWdhaW5zdCB3aW5lY3J0MCB0b28uCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglEb24ndCB0cnkgdG8gaW5pdGlhbGl6ZSB0aGUgMTYtYml0IHRodW5raW5nIGNvZGUgaWYgMTYtYml0IHN1cHBvcnQgaXMKCWRpc2FibGVkLgoKCSogZGxscy9tc2kvY2xhc3Nlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIGFsbG9jYXRlZCBtaW1lIHR5cGUgdG8gdGhlIG1pbWUgdHlwZSBsaXN0LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdF9sbWhhc2guYywgZGxscy9hZHZhcGkzMi9jcnlwdF9zaGEuYywKCSAgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9sbWhhc2guYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9tZDQuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9tZDUuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaCwKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUl0IHNob3VsZCBiZSBhbGxvd2VkIHRvIHBhc3MgTlVMTCBoYW5kbGVzIGluIHRoZSBwaHBhZ2UgYXJyYXkgb2YgdGhlCglQUk9QU0hFRVRIRUFERVIgc3RydWN0dXJlIHRvIFByb3BlcnR5U2hlZXQoKSwganVzdCBpZ25vcmUgdGhlbS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N3YXBjaGFpbi5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJTW92ZWQgR2V0UmFzdGVyU3RhdHVzIGZyb20gZGV2aWNlIHRvIHN3YXBjaGFpbi4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvaXBobHBhcGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0ZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJRXhwbGljaXRseSBpbXBvcnQga2VybmVsMzIgaW4gdGVzdHMgdGhhdCB1c2UgaXQuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaGxpbmsuYywgZGxscy9tc2h0bWwvaHRtbGRvYy5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIElIbGlua1RhcmdldCBpbnRlcmZhY2UuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBJTWFyc2hhbCBvbiBwcm94aWVzIHNvIHRoYXQgd2UgZG9uJ3QgZW5kIHVwIHdpdGggcHJveGllcwoJICB0byBwcm94aWVzLCBjYXVzaW5nIHBvdGVudGlhbCBkZWFkbG9jayBpc3N1ZXMgYW5kIHBlcmZvcm1hbmNlCgkgIHByb2JsZW1zLgoJLSBBZGQgYSB0ZXN0IGZvciB0aGlzIHNpdHVhdGlvbiBhbmQgcmVtb3ZlIHRoZSB0b2RvX3dpbmUgZnJvbSBhbm90aGVyCgkgIHRlc3QgdGhhdCBub3cgc3VjY2VlZHMuCgoJKiBkbGxzL21zaHRtbC9EZS5yYywgZGxscy9tc2h0bWwvcnNyYy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkZWQgR2VybWFuIHJlc291cmNlcy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAZWRtZWFkZXMubWUudWs+CglMaXN0Ym94IGRlbGV0ZSBzdHJpbmcgaGFuZGxpbmcgc2hvdWxkIHZhbGlkYXRlIHRoZSByYW5nZSBvZiB0aGUKCWluZGV4LiBBZGRlZCBzb21lIHRlc3RzLgoKCSogZGxscy93aW5lZDNkL3RleHR1cmUuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2hhbmdlIFNldERpcnR5IGluIHRleHR1cmUgdG8gcGFzcyB0aGUgdmFsdWUgb2YgZGlydHkgaW5zdGVhZCBvZgoJYWx3YXlzIHBhc3NpbmcgVFJVRS4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglNYWtlIEFscGhhQmxlbmQoKSByZXNwZWN0IHRoZSBkZXN0aW5hdGlvbiBjbGlwcGluZyByZWdpb24uCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkZWQgV0NfU0NST0xMQkFSLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBdm9pZCB1c2luZyB0aGUgb2Jzb2xldGUgaW5ldF9hZGRyLgoKCSogZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTWFrZSBwQWN0aXZlT2JqZWN0IHRlc3QgbGFuZ3VhZ2Ugc3BlY2lmaWMuCgoJKiBkbGxzL3NlbnNhcGkvc2Vuc2FwaS5jLCBpbmNsdWRlL3NlbnNhcGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUlzTmV0d29ya0FsaXZlKCkgZW5oYW5jZWQsIGFsd2F5cyByZXBvcnRzIExBTi4KCjIwMDUtMDgtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy93aW5lZDNkL3N3YXBjaGFpbi5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL25zZW1iZWQuYywKCSAgZGxscy9tc2h0bWwvbnNpZmFjZS5pZGwsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglCZWdpbm5pbmcgaW1wbGVtZW50YXRpb24gb2YgR2Vja28gZm9jdXMgaGFuZGxpbmcuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkICdNeSBEb2N1bWVudHMnIGZvbGRlci4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsCgkgIGRsbHMvd2luZWRvcy9kb3NtZW0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCVdlIG5vIGxvbmdlciBuZWVkIGEgc3BlY2lhbCBjYXNlIGZvciB0aGUgbnRkbGwgaW1wb3J0IGxpYnJhcnkuCgoJKiBpbmNsdWRlL3d0eXBlcy5pZGw6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1vcmUgd3R5cGVzIGRlZmluaXRpb25zLCBwYXJ0aWN1bGFybHkgZm9yIEdESS9VU0VSIGhhbmRsZXMuCgoJKiBpbmNsdWRlL3VybG1vbi5pZGw6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVGhlIG91dHB1dCBzaXplIHNob3VsZCBiZSAqcGNiUG9saWN5IGZvciBwcFBvbGljeSwgbm90IHRoZSBpbnB1dAoJICBzaXplLgoJLSBSZW1vdmUgYSBzdHJheSBzZW1pLWNvbG9uLgoKCSogaW5jbHVkZS9vbGVpZGwuaWRsOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGludGVyZmFjZXMgYXJvdW5kIHRvIHNhdGlzZnkgTUlETC4KCgkqIGluY2x1ZGUvbXN4bWwuaWRsOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgbm9uc2Vuc2UgbXN4bWwgSURMIGF0dHJpYnV0ZXMuCgoJKiBkbGxzL3gxMWRydi94Zm9udC5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRXh0ZW5kIHVSZWxheCBzY2FsZSBzbyB0aGF0IHlyZXMgaXMgcmVsYXhlZCBiZWZvcmUgc2xhbnQsIG5vdCBhdCB0aGUKCXNhbWUgdGltZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGJ1aWxkIGEgc3RhbmRhcmQgV2luZSBsaXN0IG9mIG1pbWUgdHlwZXMgaW5zdGVhZCBvZiB1c2luZyBhbiBhcnJheQoJLSB1c2UgbWltZSB0eXBlIHBvaW50ZXJzIGluc3RlYWQgb2YgYXJyYXkgaW5kZXhlcwoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHViIGZvciBDb0FsbG93U2V0Rm9yZWdyb3VuZFdpbmRvdy4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhIGJ1bmNoIG9mIHN0dWJzLgoKCSogZGxscy9tc2h0bWwvRW4ucmMsIGRsbHMvbXNodG1sL29sZXduZC5jLCBkbGxzL21zaHRtbC9yZXNvdXJjZS5oLAoJICBkbGxzL21zaHRtbC9yc3JjLnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGRlZmF1bHQgTVNIVE1MIGNvbnRleHQgbWVudS4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdCBhIHR5cG8sIGFuZCBhZGQgbW9yZSBkZWZpbml0aW9ucy4KCjIwMDUtMDgtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVjcnQwL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwL2RlbGF5X2xvYWQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNb3ZlZCB0aGUgZGVsYXkgbG9hZGluZyBzdXBwb3J0IGNvZGUgdG8gdGhlIHdpbmVjcnQwIGxpYnJhcnkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rkay93aW5zcGxwLmg6CglEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJQWRkZWQgd2luc3BscC5oIGhlYWRlci4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5tYW46CglBZGRlZCBhIC1tdW5pY29kZSBmbGFnIHRvIHdpbmVnY2MgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IGhhdmUgYSB3bWFpbigpCgllbnRyeSBwb2ludC4KCgkqIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL25zZW1iZWQuYywKCSAgZGxscy9tc2h0bWwvbnNpZmFjZS5pZGwsIGRsbHMvbXNodG1sL29sZXduZC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQmVnaW5uaW5nIGltcGxlbWVudGF0aW9uIG9mIGNvbnRleHQgbWVudS4KCS0gU2V0IG5zSVdlYkJyb3dzZXJDaHJvbWUgb2YgbnNJV2ViQnJvd3Nlci4KCgkqIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvcGl4ZWxzaGFkZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50ZWQgc3R1YmJlZCBvdXQgcGl4ZWwgc2hhZGVycyBhbmQgdGhlaXIgc3RhdGVzIGluIHdpbmVkM2QuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCVJlc3RvcmUgcGFwZXIgb3JpZW50YXRpb24gd2hlbiBwYWdlc2V0dXBkbGcgaXMgaW5pdGlhbGl6aW5nLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglNYWtlIHN0YWNrIGNoZWNrIHdvcmsgaWYgc3RhY2sgaXMgYSBzbWFsbCB2YWx1ZS4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvZDNkLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CgktIERpcmVjdERyYXdDcmVhdGVFeCBmYWlscyB3aXRoIFN0YW5kYXJkIFZHQSBBZGFwdGVyIGRyaXZlci4KCS0gSURpcmVjdDNENzo6Q3JlYXRlRGV2aWNlKCkgcmV0dXJucyBFX09VVE9GTUVNT1JZIGlmIGEgY2FyZCBoYXMgbm8gM0QKCSAgYWNjZWxlcmF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9EZS5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9Gci5yYywgcHJvZ3JhbXMvd2luZWNmZy9KYS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9ObC5yYywgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJTG9hZCB0YWIgdGl0bGVzIGFuZCBwcm9wZXJ0eSBzaGVldCBjYXB0aW9uIGZyb20gc3RyaW5nIHJlc291cmNlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gc2F2ZSB0aGUgcmVzdWx0IGNhbGN1bGF0ZWQgaW4gQUNUSU9OX1VwZGF0ZUluc3RhbGxTdGF0ZXMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CgktIHJlbW92ZSByZXR1cm46IG5vdyBicmVhayBsb29wIGlmIGNhbid0IGNoYW5nZSBzdGF0ZSBkdXJpbmcgdGVzdAoJLSBhZGQgdGVzdCBmb3IgdmFsdWUgcmV0dXJuZWQgYnkgU3dhcE1vdXNlQnV0dG9uCgktIGZpeCBTd2FwTW91c2VCdXR0b24gcmV0dXJuIHZhbHVlIChpdCByZXR1cm5zIHByZXZpb3VzIHN0YXRlKQoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCURyYXcgaGVhZGVyIGNvbnRyb2wgaXRlbXMgb25seSB3aXRoaW4gdGhlIGhlYWRlciBjbGllbnQgYXJlYS4KCgkqIGRsbHMvYWN0aXZlZHMvTWFrZWZpbGUuaW4sIGRsbHMvZDNkaW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvZDNkcm0vTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQ0MC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9vbGVhY2MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RpL01ha2VmaWxlLmluLCBkbGxzL3VybC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lY3J0MC9NYWtlZmlsZS5pbiwgZGxscy93aW5lY3J0MC9zdHViLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTW92ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNwZWMgZmlsZSBzdHVicyB0byB0aGUgd2luZWNydDAgbGlicmFyeS4KCgkqIGRsbHMvY29tY3RsMzIvdGhlbWVfZGlhbG9nLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIFdNX0NUTENPTE9SU1RBVElDIGhhbmRsZXIgdG8gZGlhbG9nIHRoZW1pbmcgc3ViY2xhc3Mgc28gc3RhdGljCgl0ZXh0IGNhbiBhcHBlYXIgdHJhbnNwYXJlbnQgKGZvciBlLmcuIHRhYiBwYWdlcyB3aGljaCBjb21tb25seSBoYXZlIGEKCSJmYW5jeSIgYmFja2dyb3VuZCkuCgoJKiBkbGxzL21zaS9maWxlcy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGhlIGZpbGUgbmFtZSB1c2VkIGluIHRoZSB1aSBtZXNzYWdlcyBpcyB0aGUgdGFyZ2V0IG5hbWUgbm90IHRoZQoJc291cmNlIG5hbWUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgRW5nbGlzaCBOZXV0cmFsIGFuZCBHZXJtYW4gYXBwZWFyYW5jZSB0YWIgdHJhbnNsYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQGdtYWlsLmNvbT4KCVJlbW92ZWQgcmVtYWluaW5nIGNvbmZpZyByZWZlcmVuY2VzLgoKCSogZGxscy9tc2h0bWwvcGVyc2lzdC5jLCBkbGxzL21zaHRtbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgdGVzdCBvZiBJUGVyc2lzdE1vbmlrZXI6OkxvYWQuCgktIEZpeCBXaW5lIHRvIHBhc3MgdGhlIHRlc3QuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUluc3RhbGwgdGhlIHN0YXRpYyBpbXBvcnQgbGlicmFyaWVzIHRvby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWltcGxpYi5ydWxlcy5pbiwKCSAgZGxscy9keGVycjgvTWFrZWZpbGUuaW4sIGRsbHMvZHhlcnI5L01ha2VmaWxlLmluLAoJICBkbGxzL2R4Z3VpZC9NYWtlZmlsZS5pbiwgZGxscy9zdHJtaWlkcy9NYWtlZmlsZS5pbiwKCSAgZGxscy91dWlkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwL01ha2VmaWxlLmluOgoJQWRkZWQgYSBtYWtlIHJ1bGVzIGZpbGUgZm9yIHN0YXRpYyBpbXBvcnQgbGlicmFyaWVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWNydDAvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5lY3J0MC9NYWtlZmlsZS5pbiwgZGxscy93aW5lY3J0MC9kbGxfbWFpbi5jLAoJICBkbGxzL3dpbmVjcnQwL2V4ZV9tYWluLmMsIGRsbHMvd2luZWNydDAvZXhlX3dtYWluLmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUJlZ2lubmluZ3Mgb2YgYSBjcnQwIGxpYnJhcnkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJRml4ZWQgaW5zdGFsbGF0aW9uIHJ1bGVzIGZvciBXaW5lLXNwZWNpZmljIElETCBmaWxlcy4KCgkqIGRsbHMvaXRzcy9pdHNzLmlkbCwgZGxscy9pdHNzLy5jdnNpZ25vcmUsIGRsbHMvaXRzcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL21vbmlrZXIuYywgZGxscy9pdHNzL3JlZ3N2ci5jLAoJICBkbGxzL2l0c3Mvc3RvcmFnZS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvLmN2c2lnbm9yZSwKCSAgaW5jbHVkZS93aW5lL2l0c3MuaWRsOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglNb3ZlZCBpdHNzLmlkbCB0byBpbmNsdWRlL3dpbmUuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCVVzZSBGSUxFX0dldERldmljZUluZm8gaW4gTnRNYXBWaWV3T2ZTZWN0aW9uIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaAoJdGhlIGZpbGUgZGVzY3JpcHRvciB0d2ljZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGJ1aWxkIGEgc3RhbmRhcmQgV2luZSBsaXN0IG9mIGNsYXNzZXMgaW5zdGVhZCBvZiB1c2luZyBhbiBhcnJheQoJLSB1c2UgY2xhc3MgcG9pbnRlcnMgaW5zdGVhZCBvZiBhcnJheSBpbmRleGVzCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsCgkgIGRsbHMvY3J5cHQzMi9jcnlwdDMyX3ByaXZhdGUuaCwgZGxscy9jcnlwdDMyL21haW4uYywKCSAgZGxscy9jcnlwdDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL3Rlc3RzL2NlcnQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIENyeXB0SGFzaENlcnRpZmljYXRlLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkZXJlZmVyZW5jZSB2YXJpYWJsZXMgaW4gYSB0cmFjZS4KCgkqIGluY2x1ZGUvb2JqaWRsLmlkbCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHRvIGluY2x1ZGUgYWxsIG9mIHRoZSBpbnRlcmZhY2VzIGluIHRoZSBQbGF0Zm9ybSBTREsgYXMgb2YgdGhlCglYUCBTUDIgdmVyc2lvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVudXNlZCB0aHJlYWQgaGFuZGxlIGVudHJ5IGZyb20gdGhlIGFwYXJ0bWVudCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL21zaS9jbGFzc2VzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHNtYWxsIGJ1ZyBpbnRyb2R1Y2VkIHdoZW4gY29udmVydGluZyBhcHBpZHMgdG8gYSBsaXN0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEaXNwbGF5IHRoZSBjb3JyZWN0IHRleHQgc3RyaW5nIGluIHRoZSBhY3Rpb24gdGV4dCBmaWVsZCBmb3IgdGhlCglkaWFsb2cgYm94ZXMuIEFsc28gdGhlIHN0cmluZyBzaG91bGQgYmUgZGVmb3JtYXR0ZWQuCgoyMDA1LTA4LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmQuYywKCSAgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJRG9uJ3QgY2FjaGUgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIG9uIHJlbW92YWJsZSBkZXZpY2VzLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oOgoJTW92ZWQgdGhlIEZpbGVGc0RldmljZUluZm9ybWF0aW9uIHF1ZXJ5IHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBtaXNzZWQgX21ic2NvbGwgZnVuY3Rpb24uCgoJKiBkbGxzL2F0bC9hdGxfbWFpbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVmVyc2lvbiAxIGF0bCBtb2R1bGVzIG9ubHkgaGF2ZSBhIHN0cnVjdHVyZSBzaXplIG9mIDEwMCBhbmQgbm8KCWZ1bmN0aW9ucyB0byBjYWxsLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglKb2hhbiBEYWhsaW4gPGpkYWhsaW5AYXN5bmMuY29tLmJyPgoJSW1wbGVtZW50ZWQgTXNpU2V0Q29tcG9uZW50U3RhdGUqLgoKCSogZGxscy9tc2kvdGVzdHMvZGIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBjYXNlIGZvciBNc2lNb2RpZnlWaWV3IGFuZCBNc2lWaWV3R2V0RXJyb3IuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvZGVsZXRlLmMsIGRsbHMvbXNpL2luc2VydC5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaU1vZGlmeVZpZXcgKE1TSU1PRElGWV9JTlNFUlRfVEVNUE9SQVJZKS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvdGhlbWUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBhbiAiQXBwZWFyYW5jZSIgdGFiIHRvIGNvbnRyb2wgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGhlbWUuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgc3R1YiBmb3IgTXNpVmlld0dldEVycm9yLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEpvaGFuIERhaGxpbiA8amRhaGxpbkBhc3luYy5jb20uYnI+CglBZGRlZCBhIG51bGwgY2hlY2sgZm9yIGNvbXBvbmVudC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgaW5jbHVkZSBndWFyZCB0byBoZWFkZXIgYW5kIG1ha2UgZnVuY3Rpb25zIGV4dGVybi4KCgkqIGRsbHMveDExZHJ2L3RleHQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgY29ycmVjdCByZWN0YW5nbGUgZm9yIEVUT19PUEFRVUUgLSBzcG90dGVkIGJ5IEphbWVzIEhhd2tpbnMuCgoJKiBkbGxzL21zaS9pbnN0YWxsLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJSm9oYW4gRGFobGluIDxqZGFobGluQGFzeW5jLmNvbS5icj4KCUFkZGVkIHN0dWJzIGZvciBNc2lTZXRDb21wb25lbnRTdGF0ZUEgYW5kIE1zaVNldENvbXBvbmVudFN0YXRlVy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGJ1aWxkIGEgc3RhbmRhcmQgV2luZSBsaXN0IG9mIGFwcGlkcyBpbnN0ZWFkIG9mIHVzaW5nIGFuIGFycmF5CgktIHVzZSBhcHBpZCBwb2ludGVycyBpbnN0ZWFkIG9mIGFycmF5IGluZGV4ZXMKCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQXZvaWQgaGVhcCBjb3JydXB0aW9uIGJ5IG5vdCBhY2Nlc3Npbmcgb2xkIEhlYXBSZUFsbG9jJ2VkIHBvaW50ZXIuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIHJlZHVuZGFudCBRdWVyeUludGVyZmFjZSBpbiBtYXJzaGFsX2ludGVyZmFjZSAtIHRoZSBvYmplY3QgaXMKCSAgYWx3YXlzIHF1ZXJpZWQgbGF0ZXIgb24gZm9yIHRoZSBjb3JyZWN0IGludGVyZmFjZSBvZiB0aGUgb2JqZWN0LgoJLSBNYWtlIHN1cmUgdG8gUmVsZWFzZSB0aGUgbWFyc2hhbGVkIHBvaW50ZXIgaW4gdGhlIHR5cGVsaWIgbWFyc2hhbGVyCgkgIG9uY2UgaXQgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbXBsZW1lbnQgSVBpY3R1cmU6OmdldF9oUGFsIGZvciBQSUNUWVBFX0JJVE1BUC4KCjIwMDUtMDgtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglUaGUgZXhwb3J0ZWQgbmFtZSBzdHJpbmdzIHNob3VsZCBiZSBpbnNpZGUgdGhlIGV4cG9ydCBkaXJlY3RvcnkgKGZvdW5kCglieSBWaXRhbGl5IE1hcmdvbGVuKS4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvZDNkLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglTa2lwIHRlc3Rpbmcgb24gSURpcmVjdDNENzo6Q3JlYXRlRGV2aWNlKCkgZmFpbHVyZS4KCgkqIGRsbHMvd2luZWQzZC9zd2FwY2hhaW4uYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJVXBkYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHZXRGcm9udEJ1ZmZlckRhdGEgaW4gc3RhdGVibG9jay4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21jaWF2aTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWNpYXZpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbWNpYXZpMzIvaW5mby5jLAoJICBkbGxzL21jaWF2aTMyL21jaWF2aS5jLCBkbGxzL21jaWF2aTMyL21jaWF2aTMyLnNwZWMsCgkgIGRsbHMvbWNpYXZpMzIvbWNpYXZpX3Jlcy5yYywgZGxscy9tY2lhdmkzMi9tbW91dHB1dC5jLAoJICBkbGxzL21jaWF2aTMyL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvbWNpYXZpMzIvd25kLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aV9yZXMucmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLCBkbGxzL3dpbm1tL3RpbWUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsIHRvb2xzL3dpbmUuaW5mOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJTW92ZWQgbWNpYXZpMzIgdG8gdGhlIHRvcC1sZXZlbCBkbGxzIGRpcmVjdG9yeS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgYSBzZXBhcmF0ZSBzZXRfaGFuZGxlX2NhY2hlZF9mZCByZXF1ZXN0IGluc3RlYWQgb2YgYWJ1c2luZwoJc2V0X2hhbmRsZV9pbmZvIGZvciB0aGF0LgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJUmV3cm90ZSBHZXQvU2V0SGFuZGxlSW5mb3JtYXRpb24gdG8gY2FsbCB0aGUgY29ycmVzcG9uZGluZyBudGRsbAoJZnVuY3Rpb25zLgoKCSogZGxscy9pdHNzL01ha2VmaWxlLmluLCBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvcmVnc3ZyLmMsCgkgIHRvb2xzL3dpbmUuaW5mOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZWdpc3RlciB0aGUgSVRTdG9yYWdlIGNsYXNzLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL3JlYWRlci5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGEgUmljaEVkaXQgUlRGIHJlYWRlciBidWcgd2hpY2ggcmVzdWx0ZWQgaW4gbG9zcyBvZiB0ZXh0LgoJRWxpbWluYXRlZCB1bm5lZWRlZCByZWN1cnNpb24gaW4gTUVfSW5zZXJ0VGV4dEZyb21DdXJzb3IoKS4KCgkqIGluY2x1ZGUvbXNodG1oc3QuaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbW9yZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvaGVscGVycy5jLAoJICBkbGxzL21zaS9pbnN0YWxsLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBmb2xkZXJzIGluc3RlYWQgb2YgdXNpbmcgYW4gYXJyYXkKCS0gdXNlIGZvbGRlciBwb2ludGVycyBpbnN0ZWFkIG9mIGFycmF5IGluZGV4ZXMKCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBnbWFpbC5jb20+CglSZW1vdmUgcmVmZXJlbmNlIHRvIGNvbmZpZyBmaWxlLgoJQWRkIC5kZWIgZmlsZSB3aXRoIC5ycG0gZmlsZSBmb3Igc3VjY2Vzc2Z1bCBpbnN0YWxsLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAZ21haWwuY29tPgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBkb2N1bWVudGF0aW9uL3NhbXBsZXMvLgoJQWRkIHJlY2VudGx5IGltcGxlbWVudGVkIGRsbHMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBdm9pZCB1c2luZyBYUmVuZGVyRmluZFN0YW5kYXJkRm9ybWF0IGFzIG9sZGVyIGxpYnJhcmllcyBkb24ndCBoYXZlCglpdC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvdGFiLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBoYW5kbGluZyBvZiBtaW5pbXVtIHRhYiB3aWR0aC4KCUFkZCBtb3JlIHRlc3RzIHRvIHRlc3QgaXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2NsYXNzZXMuYywKCSAgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLAoJICBkbGxzL21zaS9oZWxwZXJzLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBmaWxlcyBpbnN0ZWFkIG9mIHVzaW5nIGFuIGFycmF5CgktIHVzZSBmaWxlIHBvaW50ZXJzIGluc3RlYWQgb2YgYXJyYXkgaW5kZXhlcwoKCSogZGxscy9yaWNoZWQyMC9yb3cuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIEVNX0VYTElORUZST01DSEFSIHRvIHdvcmsgZm9yIGxhc3Qgcm93IG9mIGEgcGFyYWdyYXBoLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvdGVzdHMvcHJvZ3Jlc3MuYzoKCU1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CgktIFJlZHJhdyBpbW1lZGlhdGVseSB1cG9uIFBCTV9TRVRQT1MsIFBCTV9ERUxUQVBPUywgUEJNX1NURVBJVC4KCS0gTmV3IHRlc3RzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCURvbid0IHBhc3Mgb24gRUhfU1RBQ0tfSU5WQUxJRCBleGNlcHRpb25zLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLAoJICBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9tZmRydi90ZXh0LmMsCgkgIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi93aW5ldHR5LmRydi5zcGVjLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5kcnYuc3BlYywgZGxscy94MTFkcnYvdGV4dC5jLAoJICBkbGxzL3gxMWRydi93aW5leDExLmRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveHJlbmRlci5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYSBidW5jaCBvZiBjb21tb24gY29kZSBmcm9tIHRoZSBkcml2ZXJzIGludG8gZ2RpLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIHRlc3RzIGZvciBDTFNJRF9Gb2xkZXJTaG9ydGN1dCBvYmplY3RzLgoKCSogZGxscy9tc3htbDMvdGVzdHMvZG9tZG9jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG5vZGUgdGVzdHMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZXhlYy5jLCBkbGxzL3R3YWluL2NhcGFiaWxpdHkuYywKCSAgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZGVidWcuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IHBvaW50ZXIgY2FzdCB3YXJuaW5ncyBpbiA2NGJpdC4KCgkqIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvZDNkOS5zcGVjLCBkbGxzL2QzZDkvZDNkOV9tYWluLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsCgkgIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsIGRsbHMvZDNkOS92b2x1bWUuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRpZHkgdXAgZDNkOSBhbmQgZmluYWxpemUgcGFzc2luZyBkM2Q5IGNhbGxzIHRvIHdpbmVkM2QgZm9yIG5vdy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIFZhckFkZCwgVmFyTXVsOiBJNCBvdmVyZmxvd3MgdG8gUjggYW5kIG5vdCBJOCBldmVuIGlmIHRoZSByZXN1bHQKCSAgd291bGQgZml0IGluIEk4LiBGaXggdGVzdHMuCgktIERvY3VtZW50IGEgYnJva2VuZXNzIGluIHRoZSBoYW5kbGluZyBvZiBJOCBudW1iZXJzIGluCgkgIFZhck51bUZyb21QYXJzZU51bS4gRml4IHRlc3RzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIGJhY2t3YXJkIHNlYXJjaCB0byBSaWNoRWRpdCBFTV9GSU5EVEVYVFtBV10sCglFTV9GSU5EVEVYVEVYW0FXXSBtZXNzYWdlIGhhbmRsZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS93aW5zdmMuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJvcGVybHkgZGVjbGFyZSBoYW5kbGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJQWRkZWQgU0JfU0lNUExFSUQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgaW5kZXggSU5UIG5vdCBVSU5UIGJlY2F1c2UgaXQgY2FuIGJlIC0xLgoKMjAwNS0wOC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJRG9uJ3QgbGVhayBhIGxpc3Qgb2YgdmlzdWFscyAod2l0aCBhZHZpY2Ugb2YgSmFjZWsgQ2FiYW4pLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCUFkZCBhbiBleHRyYSB0ZXN0IHRvIHNob3cgZmFpbGluZyBiZWhhdmlvci4KCgkqIGRsbHMvd2xkYXAzMi9lcnJvci5jLCBkbGxzL3dsZGFwMzIvaW5pdC5jLCBkbGxzL3dsZGFwMzIvbWlzYy5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBMZGFwR2V0TGFzdEVycm9yLCBjbGRhcF9vcGVuKiwgbGRhcF9hYmFuZG9uLAoJbGRhcF9jaGVja19maWx0ZXIqLCBsZGFwX2NsZWFudXAsIGxkYXBfY29ubl9mcm9tX21zZyBhbmQKCWxkYXBfY29ubmVjdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbml0aWFsaXplIGFsbCBtZW1iZXJzIGluIFVuaXhGb2xkZXIgY29uc3RydWN0b3IuCglTdXBwb3J0IE5VTEwgdmFsdWUgcGlkbHMgaW4gR2V0RGlzcGxheU5hbWVPZiBtZXRob2QuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgRU1fU0VURVZFTlRNQVNLIFJpY2hFZGl0IG1lc3NhZ2UgaGFuZGxlciB0byByZXR1cm4gb2xkIGV2ZW50CgltYXNrLgoKCSogZGxscy91c2VyL21lbnUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG1hZ2ljIGl0ZW0gaGFuZGxpbmcgYW5kIHdhcm5pbmdzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsCgkgIGRsbHMvbXNpL2V2ZW50cy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsIGRsbHMvbXNpL2luc3RhbGwuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGJ1aWxkIGEgc3RhbmRhcmQgV2luZSBsaXN0IG9mIGZlYXR1cmVzIGluc3RlYWQgb2YgdXNpbmcgYW4gYXJyYXkKCS0gdXNlIGZlYXR1cmUgcG9pbnRlcnMgaW5zdGVhZCBvZiBhcnJheSBpbmRleGVzCgoJKiBkbGxzL2tlcm5lbC92eGQuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJTGV0IERldmljZUlvQ29udHJvbCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBuYXRpdmUgaW50ZXJmYWNlLgoKCSogZGxscy9yaWNoZWQyMC9yZWFkZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUF1dG9tYXRpY2FsbHkgc2V0IGRlZmF1bHQgZm9udCBhZnRlciBwYXJzaW5nIGEgZm9udCB0YWJsZSBpbiBSaWNoRWRpdAoJUlRGIHJlYWRlci4KCgkqIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL29sZW9iai5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQ2FsbCBMb2NrQ29udGFpbmVyIG9ubHkgaWYgaXQncyBub3QgYWxyZWFkeSBsb2NrZWQvdW5sb2NrZWQuCgktIE9ubHkgcmV0dXJuIFNfT0sgaW4gU2V0Q2xpZW50U2l0ZSBpZiBJT2xlQ2xpZW50U2l0ZSBpcyBub3QgY2hhbmdlZC4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL3JlbmFtZS5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3JlbmFtZSogZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb3IgZHJlYW13ZWF2ZXIgc2l0ZSBkZWZpbml0aW9uIGRpYWxvZy4gTmVlZCB0byBpbml0aWFsaXplIHRoZQoJcmVjdCBmb3IgYSB0YWIgY29udHJvbCB0byBhbiBlbXB0eSByZWN0IGlmIGl0IGlzIG5vdCB2aXNpYmxlLgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4ICdjYXN0IHRvIHBvaW50ZXIgZnJvbSBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplJyB3YXJuaW5ncyBpbgoJNjRiaXQuCgoJKiBkbGxzL2dkaS9wYXRoLmMsIGRsbHMvdXNlci9zeXNwYXJhbXMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy91eHRoZW1lL21zc3R5bGVzLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4ICdjYXN0IHRvIHBvaW50ZXIgZnJvbSBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplJyB3YXJuaW5ncyBpbgoJNjRiaXQuCgoJKiBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJRG9uJ3QgdHJ5IHRvIGRldGFjaCBmcm9tIGEgdGhyZWFkIHRoYXQgaXMgZXhpdGluZywgdG8gYXZvaWQgdHJpZ2dlcmluZwoJYSBrZXJuZWwgcmFjZSBjb25kaXRpb24uCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglGaXggcXVpdGUgYSBmZXcgdGV4dHVyaW5nIHByb2JsZW1zIGFuZCBjYXNlcyB3aGVyZSB0ZXh0IGlzbid0IGJlaW5nCgljb3JyZWN0bHkgZGlzcGxhdGVkLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBoYW5kbGluZyBvZiBkZWZmIFJURiBjb250cm9sIHdvcmQuCgoJKiBkbGxzL3NlY3VyMzIvd3JhcHBlci5jOiBLYWkgQmxpbiA8YmxpbkBnbXgubmV0PgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBJbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KEEvVykgYW5kCglBY2NlcHRTZWN1cml0eUNvbnRleHQuCgoJKiBkbGxzL21zaHRtbC9uc2VtYmVkLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglEaXNhYmxlIHVzaW5nIG5zV2ViQnJvd3NlclN0cmVhbS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC90aW1lLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUHJlZmVyIHN5cy9saW1pdHMuaCBvdmVyIG1hY2hpbmUvbGltaXRzLmguCgoJKiBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywgZGxscy9xdWFydHovdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9xdWFydHovdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L3Rlc3RzL21lbWFsbG9jYXRvci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmV0dXJuIFNfT0sgd2hlbiBjb21taXR0aW5nL2RlY29taXR0aW5nIGFuIGFscmVhZHkKCWNvbW1pdHRlZC9kZWNvbW1pdHRlZCBhbGxvY2F0b3IuCglBZGQgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2UuCglJbXByb3ZlIHRyYWNlcy4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy9zaGVsbDMyL3JlZ3N2ci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9vbGVvYmouYywKCSAgZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgT25BbWJpZW50UHJvcGVydHlDaGFuZ2UgaW1wbGVtZW50YXRpb24uCgktIENhbGwgSURpc3BhdGNoOjpJbnZva2Ugd2hlbiBuYXRpdmUgZG9lcyAod2l0aCB0ZXN0KS4KCgkqIGRsbHMvbXN4bWwzL25vZGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElYTUxET01Ob2RlOjpoYXNDaGlsZE5vZGUoKS4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIElYTUxET01Eb2N1bWVudCBtZXRob2RzIHRvIGNvbnRhaW5lZCBub2RlLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvQ3MucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU3YucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVjZXNzYXJ5ICNwcmFnbWEgY29kZV9wYWdlKHh4eHgpIHN0YXRlbWVudHMgZnJvbSB3aW5lZmlsZQoJLnJjIGZpbGVzLgoKCSogZGxscy9tc3htbDMvZWxlbWVudC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIElYTUxET01FbGVtZW50IG1ldGhvZHMgZGVyaXZlZCBmcm9tIElYTUxET01Ob2RlIHRvIHRoZQoJZWxlbWVudCdzIGNvbnRhaW5lZCBub2RlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgSW50ZXJMb2NrZWQqIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBub24teDg2IHBsYXRmb3JtcyBpbgoJYWNjb3JkYW5jZSB3aXRoIHRoZSByZWNlbnQgY29ycmVzcG9uZGluZyBjaGFuZ2Ugb2YgdGhlaXIgZGVjbGFyYXRpb25zCglpbiB3aW5iYXNlLmguCgoJKiBkbGxzL21zaHRtbC9wZXJzaXN0LmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglVc2UgcGliYyBhcmd1bWVudCBvZiBJUGVyc2lzdE1vbmlrZXI6OkxvYWQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJQWRkIHRlc3RzIGZvciBvbGVmb250IHNpemUgZnVuY3Rpb25zICYgY29udmVyc2lvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJV2hlbiBhcHBseWluZyBsb2dpY2FsIC8gaGltZXRyaWMgcmF0aW8gdG8gb2xlZm9udCBzaXplcywgbXVzdCBkaXZpZGUKCWJ5IHRoZSBzdGFuZGFyZCByYXRpbyA3MiAvIDI1NDAuCgoJKiBkbGxzL3gxMWRydi9vcGVuZ2wuYzogU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJRG9uJ3QgZGVyZWZlcmVuY2UgYSBOVUxMIHZpc3VhbCBwb2ludGVyLgoKCSogZGxscy9tc2h0bWwvbnNlbWJlZC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWx3YXlzIGFkZCBnZWNrbyBkaXJlY3RvcnkgdG8gdGhlIHBhdGggYmVmb3JlIGxvYWRpbmcgeHBjb20uCgoJKiBkbGxzL2F0bC9yZWdpc3RyYXIuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglQcmludCBzb21ldGhpbmcgdXNlZnVsIGluIHRyYWNlIGFuZCBmaXhtZS4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUHJvcGVybHkgYWxsb2NhdGUvcmVsZWFzZSBtZW1vcnkgd2hlbiBhZGRpbmcgZmlsdGVycyB0byB0aGUgZmlsdGVyZ3JhcGguCglXaGVuIGNvbm5lY3RpbmcgcGluLCBkaXNjYXJkIGZpbHRlciB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgdXBzdHJlYW0KCW9uZS4KCVJlbW92ZSB3cm9uZyBleHRyYSBJQmFzZUZpbHRlcl9SZWxlYXNlLgoJSW1wcm92ZSB0cmFjZXMgYnkgc2hvd2luZyBmaWx0ZXJzIG93aW5nIHBpbnMgd2Ugd2FudCB0byBjb25uZWN0IG9yCglyZW5kZXIuCglQcm9wZXJseSBpbml0aWFsaXplIG91dHB1dCBwaW4gb2YgdHJhbnNmb3JtIGZpbHRlci4KCgkqIGRsbHMvZGRyYXcvc3VyZmFjZV9kaWIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHJlZ3Jlc3Npb24gaW4gY29sb3Iga2V5aW5nIHdpdGggUkdCIG1hc2suCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJSGFuZGxlIFdNX0dFVEZPTlQgYW5kIFdNX1NFVEZPTlQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBtaXhlciBkZXRlY3Rpb24gZm9yIG11bHRpcGxlIHNvdW5kIGNhcmRzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIGNvbW1vbiBrZXlib2FyZCBzaG9ydGN1dHMgZm9yIFNlbGVjdCBBbGwsIFVuZG8sIFJlZG8sIEN1dCwgQ29weQoJYW5kIFBhc3RlIHRvIFJpY2hFZGl0LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gcmV0dXJuIGEgcHJlY29tcHV0ZWQgcmVzdWx0IGZvciBhIE5VTEwgc3RyaW5nCgktIHBhc3Mgc3RybGVuIGFuIExQU1RSIHRvIGVsaW1pbmF0ZSBhIHNpZ24gd2FybmluZwoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmgsIGluY2x1ZGUvdmZ3Lmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCAnY2FzdCBmcm9tIHBvaW50ZXIgdG8gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZScgd2FybmluZ3MgaW4KCTY0Yml0LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVJlbW92ZSAnY2FzdCBmcm9tIHBvaW50ZXIgdG8gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZScgd2FybmluZ3MgaW4KCTY0Yml0LAoKCSogZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL3Rlc3RzL3BhbGV0dGUuYzoKCUdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCVN0YXJ0IHRvIGFkZCBzb21lIHRlc3RzIGZvciBiYXNpYyBwYWxldHRlIG9wZXJhdGlvbnMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2Fib3V0LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVJlcGxhY2UgIlJlZ2lzdHJ5IEV4cGxvcmVyIiBieSAiUmVnaXN0cnkgRWRpdG9yIiBpbiBhYm91dCBkaWFsb2cuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCU1ha2UgdGhlIGljb24gY2hvaWNlIGFsZ29yaXRobSByZWFsbHkgY2hvb3NlIHRoZSBiZXN0IGljb24uCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9tb2RyZG4uYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9tb2RyZG4qIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvcnBjZGNlLmg6IEthaSBCbGluIDxibGluQGdteC5uZXQ+CglBZGRlZCBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSBzdHJ1Y3QuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggUmVnaXN0ZXJXaW5kb3dNZXNzYWdlIGRlY2xhcmF0aW9uIGFuZCBpbXByb3ZlIGRlYnVnIG1lc3NhZ2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2NsYXNzZXMuYywKCSAgZGxscy9tc2kvZmlsZXMuYywgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXNpL2hlbHBlcnMuYywKCSAgZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYnVpbGQgYSBzdGFuZGFyZCBXaW5lIGxpc3Qgb2YgY29tcG9uZW50cyBpbnN0ZWFkIG9mIHVzaW5nIGFuIGFycmF5CgktIHVzZSBjb21wb25lbnQgcG9pbnRlcnMgaW5zdGVhZCBvZiBhcnJheSBpbmRleGVzCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglNYWtlIGZpbGUgb3BlcmF0aW9ucyBzdWNjZWVkIG9uIFdpbjl4IHRvby4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBUb2RkIE1va3JvcyA8dG1va3Jvc0B0bW9rcm9zLm5ldD4KCUZpeCBhIGZvY3VzIHN0ZWFsaW5nIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoZSBtYW5hZ2VkIGZsYWcgY2hhbmdlcy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJVGlkeSB1cCBzb21lIGZvcm1hdHRpbmcsIGltcHJvdmUgZXJyb3IgaGFuZGxpbmcgYW5kIGVycm9yIGxvZ2dpbmcgYW5kCglmaXggYSBjb3VwbGUgb2Ygc3BlbGxpbmcgbWlzdGFrZXMuCgoyMDA1LTA4LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvYXRvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQcm90ZWN0IEdsb2JhbEFkZEF0b21BIHN0cmluZyBoYW5kbGluZyBieSBleGNlcHRpb24gaGFuZGxlciAoZm9yCglicm9rZW4gcHJvZ3JhbXMpLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9tc3htbDMvTWFrZWZpbGUuaW4sIGRsbHMvbXN4bWwzL25vZGUuYywgZGxscy9tc3htbDMvbm9kZWxpc3QuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgSVhNTERPTU5vZGVMaXN0IGludGVyZmFjZSBmb3IKCUlYTUxET01Ob2RlOjpnZXRfY2hpbGROb2Rlcy4KCgkqIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvc2lnbmFsLmM6CglBZGRlZCBhIHdhdGNoZG9nIG1lY2hhbmlzbSB0byBicmVhayBvdXQgb2YgdGhlIHdhaXQ0IGNhbGwgaW4gY2FzZSBpdAoJZGlkbid0IHJldHVybiBwcm9wZXJseSAoY2FuIGhhcHBlbiBhdCB0aHJlYWQgZXhpdCkuCgoJKiBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHViYmVkIGltcGxlbWVudGF0aW9uIG9mIElQZXJzaXN0UHJvcGVydHlCYWcgaW50ZXJmYWNlLgoJUmVnaXN0ZXIgdW5peGZzIGFzIENMU0lEX0ZvbGRlclNob3J0Y3V0LgoKCSogZGxscy9nZGkvZGliLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IEdldERJQml0cyB0byByZXRyaWV2ZSBSR0IgNTU1IGFzIDE2Yml0IEJJX1JHQiBhbmQgUkdCIDU2NSBhcyAxNmJpdAoJQklfQklURklFTERTLgoKCSogZGxscy91c2VyL3Njcm9sbC5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUZpeCB3cm9uZyBzdHJ1Y3R1cmUgc2l6ZSBjaGVjayBpbiBHZXRTY3JvbGxCYXJJbmZvKCkuCglHZXRTY3JvbGxCYXJJbmZvKCkgZmFpbGVkIHdoZW4gU0NST0xMX0dldFNjcm9sbEJhclJlY3QoKSByZXR1cm5lZAoJRkFMU0UgLSBob3dldmVyLCB0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzY3JvbGxiYXIgaXMgaG9yaXpvbnRhbCwgYW5kCglub3QgYW4gZXJyb3IgaW5kaWNhdG9yLgoKCSogZGxscy9jb21jdGwzMi90aGVtZV9jb21iby5jLCBkbGxzL2NvbWN0bDMyL3RoZW1lX2VkaXQuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRm9yd2FyZCBXTV9ERVNUUk9ZIHRvIHN1cGVyY2xhc3MgaW4gZWRpdCAmIGxpc3Rib3ggdGhlbWluZy4KCgkqIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCU1lcmdlIHN1YmNsYXNzIHN0dWJzIGFuZCBzdWJjbGFzcyBwcm9jLiBIYXZpbmcgdGhlIHN0dWIgc2V0IHRoZSB3aW5kb3cKCXByb2MgdG8gdGhlIHN1YmNsYXNzIHByb2Mgd2FzIG5vdCBhIGdvb2QgaWRlYSBzaW5jZSB0aGF0IGJyZWFrcwoJc3ViY2xhc3NlcyBvZiB0aGVtZWQgc3RhbmRhcmQgY29udHJvbHMgKGUuZy4gd2hhdCBEZWxwaGkgZG9lcyBhIGxvdCkuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIGEgLS11bmRlZmluZWQgb3B0aW9uIHRvIGFsbG93IGZvcmNpbmcgc29tZSBzeW1ib2xzIHRvIGJlCglyZXNvbHZlZCBieSB0aGUgbGlua2VyLgoKCSogZGxscy9tc3htbDMvZG9tZG9jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcndhcmQgc29tZSBJWE1MRE9NRG9jdW1lbnQgbWV0aG9kcyB0byB0aGUgaW1wbGVtZW5hdGlvbidzIGNvbnRhaW5lZAoJbm9kZS4KCgkqIGRsbHMvbXN4bWwzL25vZGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHBhcmVudE5vZGUsIGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCwgcHJldmlvdXNTaWJsaW5nIGFuZAoJbmV4dFNpYmxpbmcgbWV0aG9kcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCVJlbW92ZWQgbWNpYW5pbS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6CglNYWtlIHN1cmUgdGhlIHN0cmluZyBpcyBudWxsLXRlcm1pbmF0ZWQgaW4gbWVtb3J5X2dldF9zdHJpbmcuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglBZGRlZCBzb21lIGdlbmVyYWwgcHVycG9zZSByb3V0aW5lcyBmb3IgbWFuYWdpbmcgbGlzdCBvZiBzeW1ib2wKCW5hbWVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJUmVtb3ZlZCBhIGZldyBpbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCBhcmUgbm8gbG9uZ2VyIGV4cG9ydGVkIG9uCglXaW5kb3dzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLAoJICBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvdGhlbWVfZGlhbG9nLmMsCgkgIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBzdXBwb3J0IGZvciBkaWFsb2dzICh0byBzdXBwb3J0IHRhYiBwYWdlIGJhY2tncm91bmQpLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbnRlZ3JhdGUgaGFyZHdhcmUgdmVydGV4IHNoYWRlcnMgaW50byB0aGUgZHJhd2luZyBwaXBlbGluZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jLCBkbGxzL21zeG1sMy9lbGVtZW50LmMsCgkgIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaCwgZGxscy9tc3htbDMvbm9kZS5jLAoJICBkbGxzL21zeG1sMy9ub2RlbWFwLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgYSBzaW5nbGUgZnVuY3Rpb24gdG8gY3JlYXRlIGFsbCBJWE1MRE9NTm9kZSBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBjb21wb25lbnQgaW5mb3JtYXRpb24gaW4gYSBzdGFuZGFyZCBXaW5lIGxpc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAZWRtZWFkZXMubWUudWs+CglIYW5kbGUgY29udGV4dCBtZW51LT5yZWZyZXNoLCBhbmQgRjUgdG8gaW5pdGlhdGUgYSByZWZyZXNoIG9mIHRoZSBmaWxlCglkaWFsb2cuCgoJKiBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGVzdHMvc3RyaW5nLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAZWRtZWFkZXMubWUudWs+Cglfc3dhYiBmYWlsZWQgaWYgc3JjID09IGRlc3QsIHBsdXMgc29tZSB0ZXN0Y2FzZXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAZWRtZWFkZXMubWUudWs+CglBZGQgdGhlIHRpbWUgdG8gdGhlIGZpbGUgZGlzcGxheSBkaWFsb2cgbW9kaWZpZWQgY29sdW1uLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIElQZXJzaXN0OjpHZXRDbGFzc0lELgoKCSogcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJWXVyaSBLb3psb3YgPGtvemxvdi55QGdtYWlsLmNvbT4KCVVwZGF0ZWQgUnVzc2lhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2dkaS9mb250LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTaW1wbGlmeSBFeHRUZXh0T3V0IGEgYml0LiAgU2hvdWxkIGJlIGEgbm9wLgoKCSogZGxscy9rZXJuZWwvb2xkY29uZmlnLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglFbmFibGUgU0NTSV9nZXRwcm9jZW50cnkoKSBvbiBub24tTGludXggcGxhdGZvcm1zIHdoaWNoIG5vdyBzaG91bGQgYmUKCXNhZmUgdG8gZG8uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29wZSBiZXR0ZXIgd2l0aCBtaXhlZCBjaGFyc2V0IGZvbnRzLgoKCSogZGxscy9hdGwvYXRsX21haW4uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUluIEF0bE1vZHVsZUluaXQgZG8gbm90IGNhbGwgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcyB0aGF0IGFyZSBOVUxMLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIHRvb2xzL3NmbnQyZm50LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIFN5c3RlbSBmb250IGZvciB0aGUgQ2hpbmVzZSBjb2RlcGFnZXMgY3A5MzYgYW5kIGNwOTUwLiBPZiBjb3Vyc2UKCXRoZXkgZG9uJ3QgY29udGFpbiBhbnkgaWRlb2dyYXBocyAoYW5kIG5vciBzaG91bGQgdGhleSkuCgoJKiBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgYSBjdXJzb3IgaXMgYWx3YXlzIHJldHVybmVkIGlmIG9uZSBleGlzdHMuCgoyMDA1LTA4LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglBZGRlZCBhIHN0dWIgZm9yIE50QWxlcnRSZXN1bWVUaHJlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3RoZW1lX2xpc3Rib3guYywKCSAgZGxscy9jb21jdGwzMi90aGVtaW5nLmM6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIGZvciBsaXN0Ym94IChhbmQgY29tYm8gbGlzdGJveCkgY29udHJvbHMuCgoJKiBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcG9pbnRlciB0eXBlIHdhcm5pbmdzLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglQYXNzIGFsbCB0aGUgZDNkOSBjYWxscyBvbnRvIHRoZWlyIHdpbmVkM2QgZXF1aXZhbGVudHMuCgoJKiBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjoKCUFkZGVkIG1pc3NpbmcgbnRkbGwgaW1wb3J0cy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9maWxlLmM6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglJbXBsZW1lbnQgRlNDVExfUElQRV9ESVNDT05ORUNUIGluIE50RnNDb250cm9sRmlsZSBhbmQgbWFrZQoJRGlzY29ubmVjdE5hbWVkUGlwZSBjYWxsIGl0LgoKCSogZGxscy9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBpbmNsdWRlL21tc3lzdGVtLmg6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCU1ha2Ugc3RyaW5nIGVsZW1lbnRzIG9mIE1DSV9PUEVOX1BBUk1TIGNvbnN0IHRvIG1hdGNoIHRoZSBTREsgaGVhZGVycy4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJZm9udGZvcmdlIDIwMDUwNzI5IGluc2lzdHMgb24gYWRkaW5nIC50dGYgZXh0ZW5zaW9uIGV2ZW4gaWYgdGhlCglyZXF1ZXN0ZWQgb3V0cHV0IGZpbGUgbmFtZSBlbmRzIHdpdGggYSBkb3QuICBTbyBsZXQncyBnbyBiYWNrIHRvIG5hbWVzCgllbmRpbmcgd2l0aCB0dGYuCgoJKiBkbGxzL3VzZXIvZGlhbG9nLmMsIGRsbHMvdXNlci9kaWFsb2cxNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MgZW1pdHRlZCBieSBnY2MgNC4wLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQvdXBkYXRlIGEgZmV3IGRlZmluaXRpb25zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29kZXBhZ2UuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVRlc3QgcGFzc2luZyBOVUxMIHNvdXJjZSB0byBXaWRlQ2hhclRvTXVsdGlCeXRlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJTWFrZSB0aGUgZGVzdGluYXRpb24gcG9pbnRlcnMgb2YgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyB2b2xhdGlsZSB0bwoJbWF0Y2ggdGhlIFNESyBoZWFkZXJzLgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL3ZpZXcuYywKCSAgZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgSU9sZUNvbW1hbmRUZXJnZXQgaW50ZXJmYWNlIHRvIHRoZSB0ZXN0LgoJLSBNYWtlIFdpbmUgcGFzcyB0aGUgdGVzdC4KCS0gRml4IGJ1ZyByZXBvcnRlZCBieSBTYXVsaXVzIEtyYXN1Y2thcy4KCgkqIHRvb2xzL3NmbnQyZm50LmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglzZm50MmZudCBleGl0cyB3aXRoIGNvZGUgMCBmb3Igc2V2ZXJhbCBlcnJvcnMsIHdoaWNoIGNhdXNlcyBtYWtlIHRvCglpZ25vcmUgdGhlbS4gIFVzZSBleGl0IGNvZGUgMSBpbnN0ZWFkLgoKCSogZm9udHMvd2luZV9zeXN0ZW0uc2ZkOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3lzdGVtIHNob3VsZCBiZSBzYW5zIHNlcmlmLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCB0cmFjZSB0byBJT0NUTF9DRFJPTV9SQVdfUkVBRC4KCgkqIGRsbHMvY29tY3RsMzIvdGhlbWVfZWRpdC5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCU9ubHkgZHJhdyBhIHRoZW1lZCBib3JkZXIgd2hlbiBlZGl0IGNvbnRyb2wgaGFzIFdTX0VYX0NMSUVOVEVER0UKCXN0eWxlLgoKCSogZGxscy9tc3htbDMvZG9tZG9jLmMsIGRsbHMvbXN4bWwzL2VsZW1lbnQuYywKCSAgZGxscy9tc3htbDMvbXN4bWxfcHJpdmF0ZS5oLCBkbGxzL21zeG1sMy9ub2RlLmMsCgkgIGRsbHMvbXN4bWwzL25vZGVtYXAuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgZWFjaCBJWE1MRE9NTm9kZSBpbnRlcmZhY2UgcmVwcmVzZW50IG9uZSBsaWJ4bWwyIHhtbE5vZGVQdHIuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZXhlYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgIiVsIiBhbmQgIiVMIi4gQXQgdGhlIHNhbWUgdGltZSB0aGlzIHRlc3RzIGFsdGVybmF0ZSB2ZXJicy4KCVRlc3QgJTEsICVsIGFuZCAlTCB3aXRoIG5vIHF1b3Rlcy4KCXRlc3QtPnRvZG8gaXMgYSBiaXRtYXNrIHNvIGZpeCB0aGUgY2hlY2tzIGFjY29yZGluZ2x5LgoKMjAwNS0wOC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaWNjdmlkLy5jdnNpZ25vcmUsIGRsbHMvaWNjdmlkL01ha2VmaWxlLmluLAoJICBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkYzMyLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRjMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwgZGxscy90d2Fpbi9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgYSBmZXcgbW9yZSB1bm5lY2Vzc2FyeSBpbXBvcnQgbGlicmFyaWVzLgoKCSogZGxscy9pY2N2aWQvaWNjdmlkLnNwZWMsIGRsbHMvbWlkaW1hcC9taWRpbWFwLnNwZWMsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLAoJICBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvd2luZW1wMy5hY20uc3BlYywgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywKCSAgZGxscy9tc3ZpZGMzMi9tc3ZpZGMzMi5zcGVjLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2Evd2luZWFsc2EuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvd2luZWFydHMuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vd2luZWF1ZGlvaW8uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWVzZC93aW5lZXNkLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL3dpbmVqYWNrLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvd2luZW5hcy5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3MuZHJ2LnNwZWM6CglNYWtlIGFsbCB0aGUgRHJpdmVyUHJvYyBlbnRyeSBwb2ludHMgcHJpdmF0ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21jaXNlcS8uY3ZzaWdub3JlLAoJICBkbGxzL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL21jaXNlcS9tY2lzZXEuc3BlYywgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luZS5pbmY6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglNb3ZlZCBtY2lzZXEgdG8gdGhlIHRvcC1sZXZlbCBkbGxzIGRpcmVjdG9yeS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCB3aW5kb3dzIHZlcnNpb24gcmVnaXN0cnkgZW50cmllcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29weSB0aGUgcGFyc2VyIGFuZCBjcm9zcyBjb21waWxlciBmcm9tIGQzZDggYW5kIHVwZGF0ZSBldmVyeXRoaW5nIHRvCgl2ZXJ0ZXggc2hhZGVycyAzLjAuCglUaGUgUGFyc2VyIHdpbGwgbm93IGRpc3BsYXkgdGhlIGlucHV0IHNoYWRlciBpbiBEaXJlY3RYIHN0eWxlLCBhbmQgdGhlCgljcm9zcyBjb21waWxlciBub3cgZ2VuZXJhdGVzIHZhbGlkIEFSQl9WRVJURVhfUFJPR1JBTSBwcm9ncmFtcyBhbmQKCW91dHB1dHMgdGhlIHJlc3VsdCBpbiBBUkJfVkVSVEVYX1BST0dSQU0gc3R5bGUuCglTdXBwb3J0IGZvciBhIG51bWJlciBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGhhcyBiZWVuIGFkZGVkLCBidXQgdGhpcwoJbWF5IG5vdCBiZSBjb21wbGV0ZSwgYW5kIGRlcmVmZXJlbmNpbmcgZnJvbSBsb29wIGNvdW50ZXJzIGlzbid0Cglwcm9wZXJseSBwYXJzZWQgeWV0LgoKCSogZGxscy9rZXJuZWwvYXRvbTE2LmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9rZXJuZWwvbHpleHBhbmQuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywKCSAgZGxscy9rZXJuZWwvc25vb3AxNi5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGQgc3VwcG9ydCBmb3IgdmVydGV4IHNoYWRlciBjb25zdGFudHMgdG8gdGhlIHN0YXRlYmxvY2suCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMvbXN4bWwzL2RvbWRvYy5jLAoJICBkbGxzL3NlY3VyMzIvdGVzdHMvbWFpbi5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRpZHkgdXAgdmVydGV4IHNoYWRlcnMgYW5kIGJyaW5nIHRoZSBjdXJyZW50IGNvZGUgaW5saW5lIHdpdGggdGhlIHJlc3QKCW9mIHdpbmVkM2QuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJQ29ycmVjdCBmYWlsaW5nIHRlc3QgYW5kIHRyYW5zZm9ybSBpdCBpbnRvIGEgYnVuY2ggb2YgYW5vdGhlciB0ZXN0cy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhIGNvdXBsZSBvZiBNU1ZDIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxleGVjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IFNoZWxsRXhlY3V0ZSgiXCJmb28uZG9jXCIiKSBmb3IgSW50ZXJuZXQgRXhwbG9yZXIgNi4KCVVwZGF0ZSB0aGUgY29uZm9ybWFuY2UgdGVzdHMgYWNjb3JkaW5nbHkuCglUd2VhayBhIHRyYWNlIGJlY2F1c2UgaXQncyB2ZXJ5IGNvbmZ1c2luZyB0byBzZWUgdGhlIHBhdGggd2l0aCBubwoJZXNjYXBlZCBxdW90ZXMgaW4gU2hlbGxFeGVjdXRlQSgpIGFuZCB0aGVuIHdpdGggZXNjYXBlZCBxdW90ZXMgaW4KCVNoZWxsRXhlY3V0ZUV4VzMyKCkgKGR1ZSB0byBkZWJ1Z3N0cl93KCkpLgoKCSogZGxscy9tc3htbDMvbm9kZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBzZWFyY2ggYW5kIHJlcGxhY2UgbWlzaGFwLgoKCSogZGxscy9kZHJhdy9zdXJmYWNlX2RpYi5jLCBkbGxzL2RkcmF3L3Rlc3RzL2RzdXJmYWNlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglUYWtlIFJHQiBtYXNrIGludG8gYWNjb3VudCB3aGVuIGRvaW5nIGNvbG9yIGtleWluZy4KCUFkZCBjb3JyZXNwb25kaW5nIGNvbmZvcm1hbmNlIHRlc3QuCgoJKiBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi9udGxtLmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2VjdXIzMi9zZWN1cjMyX3ByaXYuaDoKCUthaSBCbGluIDxibGluQGdteC5uZXQ+CglBZGQgTlRMTSBzZWN1cml0eSBwcm92aWRlciBkdW1teS4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBzdHViYmVkIElHcmFwaENvbmZpZyBpbnRlcmZhY2UgdG8gdGhlIGZpbHRlcmdyYXBoLgoKCSogZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggcmVuZGVyaW5nIG9mIHBhbGV0dGVkIHZpZGVvIHN0cmVhbS4KCjIwMDUtMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYzoKCUF2b2lkIGEgY3Jhc2ggaW4gZmluZF9oYXJkd2FyZV9tZXNzYWdlX3dpbmRvdyB3aGVuIHRoZXJlJ3Mgbm8KCWZvcmVncm91bmQgaW5wdXQuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3RoZW1lX2NvbWJvLmMsCgkgIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgY29tYm8gYm94ZXMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBtb3JlIG1pc3NpbmcgZGVmaW5pdGlvbnMsIGFuZCBjb3JyZWN0IGEgcHJvdG90eXBlLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUR5bmFtaWNhbGx5IGxvYWQgU3RyUmV0VG9CdWZXKCkuIFRoaXMgbGV0cyBzaGVsbDMyX3Rlc3QuZXhlIHJ1biBvbgoJc3lzdGVtcyB0aGF0IGhhdmUgdmVyc2lvbiA0LjcyIG9mIHNobHdhcGkuZGxsLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGV4ZWMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglWZXJpZnkgdGhlIHBhcmFtZXRlcnMgcmVjZWl2ZWQgYnkgdGhlIGNoaWxkIHByb2Nlc3MgdXNpbmcgY29kZSBsaWZ0ZWQKCWZyb20ga2VybmVsMzIvdGVzdHMvcHJvY2Vzcy5jLgoJVGVzdCBwYXNzaW5nIHBhcmFtZXRlcnMgdG8gLmxuayBmaWxlcyB0aGF0IHBvaW50IHRvIGFuIGV4ZWN1dGFibGUuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzoKCVRoZXJlIGlzIGEgcmVnaXN0cnkga2V5IGZvciB0aGUgc2VydmljZSBwYWNrIHZlcnNpb24gKHNwb3R0ZWQgYnkKCVZpdGFsaXkgTWFyZ29sZW4pLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywKCSAgZGxscy94MTFkcnYvb3BlbmdsLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGluY2x1ZGUvbG1hY2Nlc3MuaCwgaW5jbHVkZS9udHNlY2FwaS5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlY2xhcmUgUE5UU1RBVFVTIGluIGxtYWNjZXNzLmggYW5kIG50c2VjYXBpLmggdG8gbWF0Y2ggdGhlIFBTREsuCglQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUgZGVmaW5pdGlvbnMuCglVc2UgUE5UU1RBVFVTIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMl8xNi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgdG9vbHMvd2luYXBpL3dpbjE2LmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIExQU1RPUkFHRSB0byBiZXR0ZXIgbWF0Y2ggdGhlIFBTREsuCglEb2N1bWVudCB0aGUgcmVhbCBTRUdQVFIgdHlwZSB1c2luZyB0aGUgc3RhbmRhcmQgZG9jdW1lbnRhdGlvbgoJbWVjaGFuaXNtcy4gRml4ZXMgd2luYXBpX2NoZWNrIHdhcm5pbmdzLgoKCSogZGxscy9rZXJuZWwvaGVhcC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwb3J0IHN3YXAgZmlsZSB0b3RhbC9mcmVlIHNpemVzIHRvIGJlIHRoZSBzYW1lIGFzIHBoeXNpY2FsIG1lbW9yeS4KCU1ha2Ugc3VyZSB0aGF0IHdlIGNhY2hlIGFsbCBjYWxjdWxhdGVkIHZhbHVlcy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZSAiaW5pdGd1aWQuaCIgaW5jbHVkZSBmcm9tIHNoZWxscGF0aCB0ZXN0LgoKCSogZGxscy9tc2h0bWwvdGVzdHMvcHJvdG9jb2wuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBwcm90b2NvbCB0ZXN0IG9uIDl4LgoKCSogZGxscy9udGRsbC9maWxlLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUltcHJvdmUgTnRDcmVhdGVOYW1lZFBpcGUgdHJhY2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgbWVtb3J5IG92ZXJmbG93IGFuZCBsZWFrIGlkZW50aWZpZWQgYnkgTWlrZSBNY0Nvcm1hY2suCgoJKiBkbGxzL3VzZXIvY29tYm8uYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglDaGFuZ2UgQ0JfR0VUQ09NQk9CT1ggdG8gcmV0dXJuIFNUQVRFX1NZU1RFTV9QUkVTU0VEIGluCglDT01CT0JPWElORk8uc3RhdGVCdXR0b24gd2hlbiByZWFsbHkgdGhlIGJ1dHRvbiBpcyBwcmVzc2VkLCBub3Qgd2hlbgoJdGhlIGNvbWJvIGlzIGRyb3BwZWQgZG93bi4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglNb3ZlIHJlcGV0aXRpdmUgY29kZSB0byB0d28gaGVscGVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOgoJRmV0Y2ggdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgc3RhbmRhcmQgV2luZG93cyBrZXlzIGlmIG5vdAoJc3BlY2lmaWVkIG90aGVyd2lzZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTaHJpbmsgdGhlIGhleCBlZGl0IHdpbmRvdyBhIGJpdC4KCgkqIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVtb3ZlIGEgdGVzdCB0aGF0IGZhaWxzIHVuZGVyIFdpbk1FLiAgUmVwb3J0ZWQgYW5kIGhlbHBmdWxseSBkZWJ1Z2dlZAoJYnkgU2F1bGl1cyBLcmFzdWNrYXMuCgoJKiBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggdW5pbml0aWFsaXplZCBwb2ludGVyIGluIGJ1aWx0aW4gcHJvdmlkZXJzLiAgUmVwb3J0ZWQgYnkgS2FpCglCbGluLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCU50Q3JlYXRlTmFtZWRQaXBlRmlsZSBpcyBubyBsb25nZXIgYSBzdHViLCBzbyBmaXggVFJBQ0UoKSBjYWxsLgoKCSogZGxscy9tc2h0bWwvb2xld25kLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglEZWFjdGl2YXRlIFVJIGluIEluUGxhY2VEZWFjdGl2YXRlLgoKMjAwNS0wOC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvb2JqaWRsLmlkbCwgaW5jbHVkZS9vY2lkbC5pZGwsIGluY2x1ZGUvb2xlaWRsLmlkbCwKCSAgaW5jbHVkZS93aW5kZWYuaDoKCUFkZGVkIGEgV0lORV9OT19VTklDT0RFX01BQ1JPUyBkZWZpbmUgdG8gYWxsb3cgV2luZWxpYiBhcHBzIHRvIHN3aXRjaAoJb2ZmIHRoZSBVbmljb2RlIG1hY3JvcyB0b28uCgoJKiBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi9uZWdvdGlhdGUuYywKCSAgZGxscy9zZWN1cjMyL3NlY3VyMzIuYywgZGxscy9zZWN1cjMyL3NlY3VyMzJfcHJpdi5oLAoJICBkbGxzL3NlY3VyMzIvdGVzdHMvbWFpbi5jOgoJS2FpIEJsaW4gPGJsaW5AZ214Lm5ldD4KCUFkZGVkIE5lZ290aWF0ZSBzZWN1cml0eSBwcm92aWRlciBkdW1teS4gUmVtb3ZlZCB0b2RvcyBmcm9tIHRoZSB0ZXN0LgoKCSogZGxscy93bGRhcDMyL21pc2MuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggdGhlIGJ1aWxkIHdpdGhvdXQgb3BlbmxkYXAgaGVhZGVycy4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQ29kZSBjbGVhbnVwLgoJLSBEaXNzYWJsZSB0ZXN0cyBhZnRlciBVSUFjdGl2YXRlIGZhaWxlcyAoZml4ZXMgdGVzdHMgd2luIDl4KS4KCgkqIGluY2x1ZGUvc2hsZ3VpZC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBDTFNJRF9Gb2xkZXJTaG9ydGN1dCBkZWZpbml0aW9uLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBib2R5IHRvIFJlc29sdmVTb3VyY2UgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZSB0byBuZWVkIGl0IHdoZW4KCWFuIGluc3RhbGwgaXMgYmVndW4gYnV0IHRoZSBtZWRpYSBpcyBub3QgaW4gdGhlIGRyaXZlLCBzdWNoIGFzIGluCglpbnN0YWxsLW9uLWRlbWFuZCBjYXNlcy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJRml4ZWQgc29tZSBjb25mdXNpb24gb3ZlciB3aGV0aGVyIEhFQVBfTUlOX0JMT0NLX1NJWkUgaW5jbHVkZXMgdGhlCglhcmVuYSBoZWFkZXJzIG9mIG5vdC4KCUZyZWUgbGlzdCBzaXplcyBhcmUgY29uc3RhbnQgc28gdGhlcmUncyBubyBuZWVkIHRvIHN0b3JlIHRoZW0gaW4gdGhlCgloZWFwIHN0cnVjdHVyZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCVNldCB0aGUgZGVmYXVsdCBzeXN0ZW0gZGlyIHRvIHdpbmRvd3Mvc3lzdGVtMzIuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogU3dpdGNoIHRoZSBkZWZhdWx0IHZlcnNpb24gdG8gd2luMmsuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQSBwcmV2aW91cyBzaWduZWQtbmVzcyBmaXggYnJva2UgZGlzcGxheSBvZiBub24tYW5zaSBjaGFycywgZml4IHRoaXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRml4IHJlc291cmNlIGxlYWsgb24gZXJyb3IgcGF0aHMuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYywgc2VydmVyL21hcHBpbmcuYzoKCUJldHRlciBoYW5kbGluZyBvZiBjb25mbGljdGluZyBzZWN0aW9uIGluZm9ybWF0aW9uIGJldHdlZW4KCVNpemVPZlJhd0RhdGEgYW5kIFZpcnR1YWxTaXplLgoKCSogZGxscy93bGRhcDMyL21pc2MuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9yZXN1bHQuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRml4IEFscGhhQmxlbmQoKSB0byBleHRyYWN0IHRoZSByaWdodCBwYXJ0IG9mIHRoZSBzb3VyY2UgRElCLgoKCSogZGxscy9rZXJuZWwvcmVnaXN0cnkxNi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXYXJuaW5nIGZpeGVzIGZvciBnY2MgNC4wLgoKCSogZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9oaGN0cmwub2N4L21haW4uYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywKCSAgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNpc3lzL21zaXN5cy5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL3NubXBhcGkvbWFpbi5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2xkYXAzMi9tYWluLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVbmlmb3JtaXplIERsbE1haW4gVFJBQ0VpbmcgYWNyb3NzIGRsbHMuCgoJKiBkbGxzL2FkdnBhY2svdGVzdHMvYWR2cGFjay5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJUmVtb3ZlIHRyYWlsaW5nIGJhY2tzbGFzaC4KCgkqIGRsbHMveDExZHJ2L2NvZGVwYWdlLmMsIGRsbHMveDExZHJ2L2RpYi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi90aGVtZV9lZGl0LmMsCgkgIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglTdWJjbGFzcyBlZGl0IGNvbnRyb2wgdG8gZHJhdyB0aGVtZWQgYm9yZGVyLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUltcHJvdmVkIHRyYWNrYmFyIHRoZW1pbmcuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQ29tcGFyZSByZXN1bHQgb2YgUmVnUXVlcnlWYWx1ZUV4VygpIHdpdGggRVJST1JfU1VDQ0VTUy4KCgkqIGRsbHMvbXNodG1sL3Byb3RvY29sLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIHN1cHBvcnQgZm9yIGFnZ3JlZ2F0aW9uIHRvIHJlcyBwcm90b2NvbC4KCS0gRml4IEFib3V0UHJvdG9jb2xfUmVsZWFzZS4KCS0gVXNlICpfVEhJUyBtYWNyb3MgaW4gcHJvdG9jb2wgb2JqZWN0cy4KCgkqIGRsbHMvd2xkYXAzMi9hZGQuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXByb3ZlIHBhcmFtZXRlciBoYW5kbGluZyBmb3IgdGhlIGxkYXBfYWRkKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglGaXggc29tZSBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQSBleGNlcHRpb25zIG9uIFdpbk1FOgoJLSBwYXNzIHBvaW50ZXIgdG8gdmFsaWQgYnVmZmVyIGFzIGxwc3pQYXRoLgoJLSBkaXNhYmxlIGNoZWNrIHBhc3NpbmcgTlVMTCBhcyBscHN6UGF0aC4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSGFuZGxlIHJlc2l6aW5nIHRoZSBoZWxwIHZpZXdlciB3aW5kb3cuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVdoYXRldmVyIFRydWVTaXplU3RyZXRjaE1hcmsgaXMgZm9yIC0gaXQncyBub3Qgd2hhdCBXaW5lIHV4dGhlbWUgdXNlZAoJaXQgZm9yLiBOYXRpdmUgdXh0aGVtZSBhbHdheXMgc3RyZXRjaGVzICJ0cnVlc2l6ZSIgcGFydHMgd2hlbiB0aGUKCWRlc3RpbmF0aW9uIGlzIHNtYWxsZXIgdGhhbiB0aGUgcGFydCBpbWFnZSBzaXplLCBidXQKCVRydWVTaXplU3RyZXRjaE1hcmsgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW4gaW5mbHVlbmNlLgoKCSogZGxscy9yaWNoZWQyMC9jb250ZXh0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLCBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGluY2x1ZGUvcmljaGVkaXQuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBFTV9TRVRSRUNULCBFTV9TRVRSRUNUTlAsIGFuZCBXTV9TRVRSRURSQVcgbWVzc2FnZSBoYW5kbGluZy4KCUFkZGVkIHN1cHBvcnQgZm9yIEdUX1NFTEVDVElPTiBmbGFnIGluIEVNX0dFVFRFWFRFWCBoYW5kbGVyLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBkbGxzL29sZTMyL29sZTIuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUyXzE2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBDb0NyZWF0ZUluc3RhbmNlMTYsIENvR2V0Q2xhc3NPYmplY3QxNiwgT2xlTG9hZDE2IHN0dWJzLgoKCSogZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjOiBWaWtyYW0gS3VtYXIgPHZpa0B6b25lODEuY29tPgoJQWRkZWQgc3R1YiBmb3IgRW5hYmxlRVVEQy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgV0NfRURJVCBhbmQgV0NfTElTVEJPWC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy90YXBpMzIvcGhvbmUuYywgZGxscy91c2VyL2RkZV9jbGllbnQuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSBzb21lIFRSQUNFaW5nIGZvcm1hdHMgdG8gbWFrZSBtb3JlIHNlbnNlLgoKCSogZGxscy9tc3htbDMvbXN4bWxfcHJpdmF0ZS5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUHJvdGVjdCBsaWJ4bWwvcGFyc2VyLmggd2l0aCBwcm9wZXIgYXV0b2NvbmYgZGVmaW5pdGlvbi4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgdHlwbyBpbiBmb3JtYXQgc3RyaW5nLgoKCSogZGxscy9zZXR1cGFwaS9wYXJzZXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCWluZGV4IGlzIDEtYmFzZWQgYXQgdGhpcyBwb2ludCwgaW5kZXggPT0gbGluZS0+bmJfZmllbGRzIGlzIHRoZSBsYXN0CglmaWVsZCBhbmQgaXMgdmFsaWQuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJc2V0X2xhc3RfZXJyb3IoKSBpcyBvbmx5IHVzZWQgb24gTGludXguCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9tb2RpZnkuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9tb2RpZnkqIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2luc3RyLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRkIGVudHJ5IGZvciBpbnQgMiBoYW5kbGVyLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJLSBQcmVwZW5kIERlc2t0b3AgZm9sZGVyIHBhdGggZm9yIGZpbGVzL2RpcmVjdG9yaWVzIHN0b3JlZCBpbiB0aGUKCSAgZmlsZXN5c3RlbSBEZXNrdG9wIGZvbGRlciB3aGVuIEdldERpc3BsYXlOYW1lT2YgaXMgY2FsbGVkIHdpdGggdGhlCgkgIFNIR0ROX0ZPUlBBUlNJTkcgZmxhZ3MuCgktIEFkZCB0ZXN0Y2FzZXMuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmMsCgkgIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBY3RpdmF0ZSB3aW5kb3cgaW4gSU9sZURvY3Vtd25yVmlldzo6U2hvdy4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggcHJvdG9jb2wgdGVzdCBvbiB3aW54cC4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVhQIHJldHVybnMgRV9JTlZBTElEQVJHIG9uIGZhaWx1cmUuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gUGFpbnQgc3BhY2luZyBhcm91bmQgdGhlIHRhYiBjb250cm9sLgoJLSBVc2UgQ09MT1JfTUVOVSB0byBzdGFuZGFyZGl6ZSB0aGUgY29sb3JzIG9mIHRoZSB2aWV3ZXIuCgoJKiBkbGxzL21zdmNydGQvTWFrZWZpbGUuaW46IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIGJ1aWx0aW4gZnVuY3Rpb24gd2FybmluZ3MuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0phLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglWaWtyYW0gS3VtYXIgPHZpa0B6b25lODEuY29tPgoJQWRkZWQgSmFwYW5lc2UgcmVzb3VyY2VzLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglCZXR0ZXIgY29tcHV0YXRpb25zIHRvIGhhdmUgdW5pZm9ybWx5IHNpemVkIHBhcnRzIHNjYWxlZCBpbiBib3RoCglkaXJlY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUluc3RlYWQgb2YgYWRkaW5nIHRoZSBib3JkZXIgdmlhIFdNX05DUEFJTlQgYW5kIFdNX05DQ0FMQ1NJWkUsIGRvIHdoYXQKCW5hdGl2ZSBkb2VzOiBqdXN0IGNsZWFyIFdTX0VYX1NUQVRJQ0VER0Ugd2hlbiB0aGVtZWQgYW5kIHJlZHVjZSB0aGUKCWFyZWEgdGhlIGFjdHVhbCBiYXIgaXMgcGFpbnRlZCBpbiB0byB0aGUgcHJvZ3Jlc3MgYmFyIHRoZW1lIHBhcnQKCWNvbnRlbnQgcmVjdC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUludmFsaWRhdGUgRENFcyB3aGVuIGEgd2luZG93IHJlZ2lvbiBpcyBzZXQuCgoyMDA1LTA4LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglDb252ZXJ0ZWQgdGhlIHByb2Nlc3MgaGVhcCBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGRsbHMvc2V0dXBhcGkvbWlzYy5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglBZGRlZCBzdHVicyBmb3IgcFNldHVwR2V0L1NldEdsb2JhbEZsYWdzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy93aW5pbmV0X3Rlc3QuaCwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzogQ29udmVydGVkIHRoZSBoZWFwIGZyZWUgbGlzdHMgdG8gc3RhbmRhcmQgbGlzdHMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBSZW1vdmVkIGEgcmVkdW5kYW50IGFuZCBwb3NzaWJseSB3cm9uZyB3YXJuaW5nLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbW9kdWxlLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCUltcGxlbWVudGVkIERlbGF5TG9hZEZhaWx1cmVIb29rIGFuZCB1c2UgaXQgaW4gdGhlIHdpbmVidWlsZC1nZW5lcmF0ZWQKCWRlbGF5IGxvYWQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCURldGVybWluaW5nIHRoZSBzdXBlcmNsYXNzIGZvciBhIHdpbmRvdyBzdWJjbGFzc2VkIGZvciB0aGVtaW5nIGRvZXNuJ3QKCXdvcmsgLSBlLmcuIERlbHBoaSBidXR0b25zIGhhdmUgdGhlIGNsYXNzbmFtZSAiVEJ1dHRvbiIgZm9yIHdoaWNoIG5vCglzdXBlcmNsYXNzIHdpbGwgYmUgZm91bmQuIEluc3RlYWQsIHVzZSBpbml0aWFsIHN1YmNsYXNzIHdpbmRvdyBwcm9jcwoJdGhhdCBoYXZlIHRoZSBzdWJjbGFzcyBoYXJkY29kZWQgYW5kIHN0b3JlIGl0IGZvciB0aGUgInJlYWwiIHN1YmNsYXNzCgl3aW5kb3cgcHJvYy4KCgkqIGluY2x1ZGUvbXNodG1oc3QuaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IFNob3cqSFRNTERpYWxvZyBkZWNsYXJhdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglVcGRhdGUgRW5nbGlzaCBuZXV0cmFsIHZlcnNpb24gb2Ygd2luZWNmZyBncmFwaGljcyB0YWIsIGFuZCBtYWtlIHRoZQoJZ3JvdXBib3hlcyBub3Qgb3ZlcmxhcC4KCgkqIGRsbHMvd2xkYXAzMi9vcHRpb24uYywgZGxscy93bGRhcDMyL3dsZGFwMzIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IExEQVBfT1BUX0FQSV9GRUFUVVJFX0lORk8gYW5kIExEQVBfT1BUX0FQSV9JTkZPLgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIElPbGVPYmplY3Q6OkNsb3NlIGltcGxlbWVudGF0aW9uLgoJLSBPTEVJVkVSQl9JTlBMQUNFQUNUSVZBVEUgaXMgdGhlIHNhbWUgYXMgT0xFSVZFUkJfVUlBQ1RJVkFURS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNITG9hZFJlZ1VJU3RyaW5nVy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglCbGFtZSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NBIGZvciB0aGUgZmFpbGluZyBOVDQgdGVzdC4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglFbmhhbmNlIHV4dGhlbWUgdG8gc3RvcmUgdGhlIHRoZW1lZCBzeXN0ZW0gbWV0cmljcyBpbiB0aGUgcmVnaXN0cnkgYW5kCglhbHNvIGJhY2t1cCB0aGUgb2xkIG1ldHJpY3MuIFRoYXQgd2F5LCB0aGVtZWQgc3lzdGVtIGNvbG9ycyBhcmUgc2V0CglldmVuIHV4dGhlbWUgd2FzIG5vdCBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHlldCwgYW5kIHdoZW4gYSB0aGVtZSBpcwoJZGVhY3RpdmF0ZWQsIHRoZSBjb2xvcnMgcHJpb3IgdG8gdGhlIGFjdGl2YXRpb24gYXJlIHJlc3RvcmVkIGFzIHdlbGwuCglBbHNvLCBub3QgaGF2aW5nIHRvIHNldCB0aGUgc3lzdGVtIGNvbG9ycyBpbiB1eHRoZW1lIHN0YXJ0dXAgd29ya3MKCWFyb3VuZCB3ZWlyZCBwcm9ibGVtcyB3aGVyZSBTZXRTeXN0ZW1Db2xvcnMoKSBlbmRlZCB1cCBiZWluZyBjYWxsZWQKCWZyb20gaW5zaWRlIHdpbmRvdyBjcmVhdGlvbiBhbmQgdGhpcyBzZWVtaW5nbHkgbGVkIHRvIHNvbWUgY3JlYXRpb24KCW1lc3NhZ2UgYmVpbmcgc2VudCB0d2ljZS4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jOgoJQWRkIHRoZSAxNi1iaXQgc3lzdGVtIGRpcmVjdG9yeSBpZiBhbnkgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zeG1sMy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3htbDMvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3htbDMvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN4bWwzL3Rlc3RzL2RvbWRvYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbXN4bWwzIHRlc3RzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglEb24ndCBtYXAgZGF0YSBiZXlvbmQgdGhlIHZpcnR1YWwgc2l6ZSBvZiBhIHNlY3Rpb24uCgoJKiBkbGxzL21zeG1sMy9tYWluLmMsIHRvb2xzL3dpbmUuaW5mOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBEbGxSZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVJlbW92ZSBjcmFja2xpbmcgaW4gRGlyZWN0U291bmQvQUxTQSBwbGF5YmFjayB3aXRoIGZ1bGwgaGFyZHdhcmUKCWFjY2VsZXJhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgaW5pdGlhbCB0aGVtaW5nIHN1cHBvcnQgZm9yIHRyYWNrYmFycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIGZvciB0b29sYmFyIGNvbnRyb2wuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYveGRuZC5jLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBkbGxzL3gxMWRydi94cmFuZHIuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zeG1sMy9kb21kb2MuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNvbmZpZ3VyZSB0ZXN0IGZvciB4bWxSZWFkTWVtb3J5LgoKCSogZGxscy9tc3ZjcnRkL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydGQvdGVzdHMvZGVidWcuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzMkBhci5maS5sdD4KCURvbid0IGltcG9ydCBNU1ZDUlRELkRMTCBhbmQgZG9uJ3QgZmFpbCB3aGVuIGl0IGNvdWxkIG5vdCBiZSBsb2FkZWQuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6IFNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzMkBhci5maS5sdD4KCVdpbjk4IHJldHVybnMgSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSkgb24gZmFpbHVyZS4KCgkqIGRsbHMvbXNodG1sL21haW4uYywgZGxscy9tc2h0bWwvbXNodG1sLnNwZWM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUk5JR2V0Q29tcGF0aWJsZVZlcnNpb24gaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDaGVjayB0aGUgR2V0UGlkbEZyb21EYXRhT2JqZWN0J3MgZG9TZWxlY3RlZCBwYXJhbWV0ZXIgYmVmb3JlIGNhbGxpbmcKCWEgbWV0aG9kIG9uIGl0LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSB3aW5lX2dldF9kb3NfZmlsZV9uYW1lIGluc3RlYWQgb2YgR2V0RnVsbFBhdGhOYW1lLgoKMjAwNS0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL25zZW1iZWQuYywKCSAgZGxscy9tc2h0bWwvbnNpZmFjZS5pZGwsIGRsbHMvbXNodG1sL3BlcnNpc3QuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglVc2UgbnNJV2ViQnJvd3NlclN0cmVhbSB0byBsb2FkIGh0bWwuCgoJKiBkbGxzL2tlcm5lbC90YXNrLmM6CglNYWtlIDE2LWJpdCB0YXNrIHByb3Blcmx5IGluaGVyaXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9mIHRoZWlyCglwYXJlbnQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUmljaGFyZCBDb2hlbikuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNITG9hZEluZGlyZWN0U3RyaW5nLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglGaXggdGV4dCBjb2xvciBmb3IgImJ1dHRvbiIgc3R5bGUgdGFicyB3aGVuIHRoZW1pbmcgaXMgZW5hYmxlZC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgZm9yIHN0YXR1cyBiYXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgdGhlIHByb2dyZXNzIGNvbnRyb2wuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydGQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3Rhc2ttZ3IvTWFrZWZpbGUuaW46CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUdXJuIG9mZiBnY2MgNC4wJ3MgYnVpbHRpbiB3Y2hhciBpbmxpbmVzLgoKCSogZGxscy9zZWN1cjMyL3Rlc3RzL21haW4uYywgaW5jbHVkZS93aW5lcnJvci5oOgoJS2FpIEJsaW4gPGJsaW5AZ214Lm5ldD4KCUFkZGVkIG1vcmUgc2VjdXIzMi5kbGwgdGVzdHMgYW5kIGZpeGVkIG1pc3NpbmcgY29uc3RhbnRzIGluCgl3aW5lcnJvci5oLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvZGVsZXRlLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfZGVsZXRlKiBmdW5jdGlvbnMuCglBZGQgbWlzc2luZyBzcGVjIGZpbGUgZW50cmllcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgV0NfQ09NQk9CT1guCgoJKiBkbGxzL2tlcm5lbC9vbGRjb25maWcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglGaXggYSBjcmFzaCBvbiBzdGFydHVwIHdoZW4gL3Byb2MvaWRlIGRvZXMgbm90IGV4aXN0LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIGZvciB0aGUgcmViYXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgdGhlIG1vbnRoY2FsIGNvbnRyb2wuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc3VwcG9ydCBmb3IgYWdncmVnYXRpb24gaW4gYWJvdXQgcHJvdG9jb2wuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgU0hFTExfQXJnaWZ5KCkgc28gaXQgb25jZSBhZ2FpbiByZXR1cm5zIHRydWUKCWlmIGEgJyUxJyBvciBlcXVpdmFsZW50IHBsYWNlaG9sZGVyIHdhcyBmb3VuZC4gVGhpcyBmaXhlcwoJU2hlbGxFeGVjdXRlRXgobHBGaWxlPSJmb28udHh0IiwgbHBDbGFzcz0idHh0ZmlsZSIpLgoKCSogZGxscy9udGRsbC90ZXN0cy9hdG9tLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIFdJTjMyX05PX1NUQVRVUyBzbyB3ZSBkb24ndCBnZXQgJ2R1cGxpY2F0ZSBtYWNybycgZXJyb3JzIHdoZW4KCWNvbXBpbGluZyB3aXRoIHRoZSBQU0RLIGFuZCBNU1ZDLgoJQWRkIHNvbWUgdHlwZXMgdGhhdCBhcmUgbm90IGRlZmluZWQgYnkgdGhlIFBTREsuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9wYXRoLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJQWRkZWQgYSB3aW5lX2dldF9kb3NfZmlsZV9uYW1lIGZ1bmN0aW9uIGluIGtlcm5lbDMyIGFzIGEgd3JhcHBlcgoJYXJvdW5kIHRoZSBuZXcgd2luZV91bml4X3RvX250X2ZpbGVfbmFtZS4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jLCBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuaDoKCVJlbW92ZWQgYSB1c2VsZXNzIGhlYWRlciBmaWxlLgoKCSogZGxscy9semV4cGFuZC9semV4cGFuZC5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kMTYuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCBMWkRvbmUgaW4gbHpleHBhbmQsIGFzIHRoZSAzMiBiaXQgb25lIG1vdmVkIHRvIGtlcm5lbC4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbmNyZW1lbnQgdGhlIGRvY3VtZW50J3MgcmVmY291bnQgd2hlbiBjcmVhdGluZyB0aGUgcm9vdCBlbGVtZW50LgoKCSogZGxscy9tc3htbDMvZWxlbWVudC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSVhNTERPTUVsZW1lbnQ6OmdldF90YWdOYW1lLgoKCSogZGxscy9kZHJhdy9kZXZpY2Vfb3BlbmdsLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWxsb3cgdGhlIHBhbGV0dGUgdG8gYmUgc2V0IGFuZCByZXRyaWV2ZWQuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3BhdGguYywgaW5jbHVkZS93aW50ZXJubC5oOgoJQWRkZWQgYSB3aW5lX3VuaXhfdG9fbnRfZmlsZV9uYW1lIGZ1bmN0aW9uIHRvIGRvIHByb3BlciBwYXRobmFtZQoJY29udmVyc2lvbnMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIEdldEZ1bGxQYXRoTmFtZSBoYWNrcy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglTZXQgcmVtb3ZlIHRvIFRSVUUgaW4gYWNjZXB0X2hhcmR3YXJlX21lc3NhZ2UgZm9yIG1lc3NhZ2VzIHRoYXQgc2hvdWxkCglnbyB0byBhIGRpZmZlcmVudCB0aHJlYWQuIFNpbXBsaWZ5IHRoZSBjb2RlIGEgYml0LgoKCSogaW5jbHVkZS93aW5sZGFwLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtaXNzaW5nIExEQVAgZGVmaW5pdGlvbnMuCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ29ycmVjdCBzaXplIGNoZWNrLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYywKCSAgaW5jbHVkZS9zaG9iamlkbC5pZGw6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDb3JyZWN0IGRlZmluaXRpb24gb2YgU0ZHQU9fU1RPUkFHRUFOQ0VTVE9SLgoKCSogZGxscy9tc3htbDMvZG9tZG9jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJWE1MRE9NRG9jdW1lbnQ6OmxvYWRYTUwuCgoJKiBkbGxzL3NlbnNhcGkvc2Vuc2FwaS5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2xvY2FsLnBtOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCBhIHR5cG8gaW4gd2luYXBpX2xvY2FsLnBtLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQW5vdGhlciB1cGRhdGUgdG8gd2luKi5hcGkuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRyYWNrIHRoZSBzdGF0ZSBvZiBzb2Z0d2FyZVZlcnRleFByb2Nlc3NpbmcuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcnJlY3QgdGhlIHN0YXJ0aW5nIHZhbHVlcyBvZiBNSU4sIE1BWCBhbmQgTUlQIGZpbHRlciwgdGhleSBub3cgbWF0Y2gKCXRoZSBpbml0aWFsIHZhbHVlcyBpbiBvcGVuZ2wuCgoJKiBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgYSBidWcgaW4gRU1fU1RSRUFNT1VUIFJpY2hFZGl0IG1lc3NhZ2UgaGFuZGxlciB3aGljaCB0cnVuY2F0ZWQKCXNvbWUgc3RyZWFtZWQgdGV4dC4KCgkqIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9uc2VtYmVkLmMsCgkgIGRsbHMvbXNodG1sL29sZW9iai5jLCBkbGxzL21zaHRtbC9vbGV3bmQuYywgZGxscy9tc2h0bWwvcGVyc2lzdC5jLAoJICBkbGxzL21zaHRtbC9wcm90b2NvbC5jLCBkbGxzL21zaHRtbC9zZXJ2aWNlLmMsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxjamFjZWtAZ21haWwuY29tPgoJTW92ZSBpbmNsdWRlcyBvZiBpbnRlcmZhY2VzIHRvIG1zaHRtbF9wcml2YXRlLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIFNFRV9NQVNLX0NMQVNTTkFNRSBhbmQgU0VFX01BU0tfQ0xBU1NLRVkuIFRoZXkgYXJlIG5vdAoJZGlzam9pbnQgZmxhZ3MuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3JlZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lZWRlZCB3aW5lL2xpYnJhcnkuaCBpbmNsdWRlLgoJVXNlIGxzdHJsZW5XKCkgaW5zdGVhZCBvZiB0aGUgV2luZS1zcGVjaWZpYyBzdHJsZW5XKCkuIFRoaXMgYWxzbyBsZXRzCgl1cyBnZXQgcmlkIG9mIHRoZSB3aW5lL3VuaWNvZGUuaCBpbmNsdWRlLgoJRGVmaW5lIHRoZSBJbml0aWFsaXplT2JqZWN0QXR0cmlidXRlcygpIG1hY3JvIGlmIG5vdCB1c2luZyBXaW5lJ3MKCXdpbnRlcm5sLmggaGVhZGVyLgoKMjAwNS0wOC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24uYzoKCURpcmVjdGx5IHVzZSB0aGUgUEVCIHZlcnNpb24gZmllbGRzIGluIEdldFZlcnNpb24uCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgRGVsZXRlTWVudVdyYXAuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGNlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIERDWF9VU0VTVFlMRSBpZiBpdCBpcyBub3QgZGVmaW5lZCBhbHJlYWR5LiBGaXhlcyB0aGUKCWNvbXBpbGF0aW9uIHdpdGggdGhlIFBTREsuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSBSVExfSEFORExFIGFuZCBSVExfSEFORExFX1RBQkxFIGlmIG5vdCB1c2luZyBXaW5lJ3Mgd2ludGVybmwuaAoJaGVhZGVyLiBGaXhlcyB0aGUgY29tcGlsYXRpb24gd2l0aCB0aGUgUFNESy4KCgkqIGluY2x1ZGUvd2lubGRhcC5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN5bmNocm9uaXplIHdpbmxkYXAuaCB3aXRoIHdpbmxkYXBfcHJpdmF0ZS5oLgoKCSogZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC92ZXJzaW9uLmM6CglJbXBsZW1lbnRlZCBSdGxHZXROdFByb2R1Y3RUeXBlLgoKCSogZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvcnJlY3QgbW9yZSBtaXNtYXRjaGVzIGJldHdlZW4gc3BlYyBmaWxlcyBhbmQgY29tbWVudHMgYWJvdXQgZXhwb3J0CgludW1iZXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb21tLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIHRyYWNlKCkgY2FsbC4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvdHJlZXZpZXcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgUFNESyBkb2VzIG5vdCBkZWZpbmUgYSBUcmVlVmlld19JbnNlcnRJdGVtQSgpIG1hY3JvIHNvIHVzZQoJVHJlZVZpZXdfSW5zZXJ0SXRlbSgpIGluc3RlYWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVlc2QvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGlmeSB3aW5lZXNkLgoJRml4ZXMgV0lETV9HRVRERVZDQVBTIGFuZCBXT0RNX0dFVERFVkNBUFMuCglDYWxsIFVuaWNvZGUgZnVuY3Rpb25zIGluc3RlYWQgb2YgdGhlaXIgQW5zaSBlcXVpdmFsZW50IHdoZW4gcG9zc2libGUuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9hZGQuYywKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfYWRkKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvdmVyc2lvbi5jOgoJTW92ZWQgdGhlIHZlcnNpb24gaW5pdGlhbGl6YXRpb24gdG8gbnRkbGwuCglQcm9wZXJseSBzZXQgdGhlIHZlcnNpb24gZmllbGRzIGluIHRoZSBQRUIuCglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgc3RydWN0dXJlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJQnl0ZXN3YXAgdGhlIHJlc291cmNlcyBpZiB3ZSBkZXRlY3QgdGhhdCB0aGUgaGVhZGVyIGlzIGluIHRoZSB3cm9uZwoJZW5kaWFubmVzcy4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbmhwYXN0L2RwbmhwYXN0LnNwZWMsCgkgIGRsbHMvZHBuaHBhc3QvbWFpbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL3JlZ3N2ci5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvcmVnc3ZyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSBzb21lIERsbCogZnVuY3Rpb25zIHNvIHRoZXkgYXJlIGV4cG9ydGVkIGJ5IG5hbWUgbGlrZSBvbgoJV2luZG93cy4KCVVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBhY2NvcmRpbmdseS4KCgkqIGRsbHMvd2xkYXAzMi93bGRhcDMyLnJjLCBkbGxzL3dsZGFwMzIvd2xkYXAzMl9Gci5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBlcm5zdGZhbWlseS5jaD4KCUZyZW5jaCBsb2NhbGl6YXRpb24gZm9yIHdsZGFwMzIuCgoJKiBkbGxzL2tlcm5lbC9semV4cGFuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgdGhlIExaKiBmdW5jdGlvbnMKCWFyZSBpbXBsZW1lbnRlZCBpbiBrZXJuZWwzMi5kbGwgbm93LgoKCSogZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgaGVscGVycyBmb3IgY29udmVydGluZyAoYXJyYXlzIG9mKSBMREFQTW9kIHN0cnVjdHVyZXMgaW50bwoJZGlmZmVyZW50IGVuY29kaW5ncy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElVbmtub3duX0VudW1PYmplY3RzLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIEZpeCByZWdyZXNzaW9uIGluIEdldFByaXZhdGVQcm9maWxlU3RyaW5nMTYgZm9yIGtleT1OVUxMLgoJLSBDaGVjayByZXR1cm4gdmFsdWVzIGluIFByb2ZpbGUgdGVzdHMuCgoJKiBkbGxzL2dkaS9tZXRhZmlsZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9rZXJuZWwvdGFzay5jLAoJICBkbGxzL29sZTMyL29sZTE2LmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3VzZXIvZWRpdC5jLAoJICBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93b3czMi93b3dfbWFpbi5jLAoJICBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd293bnQzMi5oOgoJVXNlIHRoZSBwcm9wZXIgV09XIGZ1bmN0aW9ucyBldmVyeXdoZXJlIGluc3RlYWQgb2YgdGhlIEszMldPVyB2YXJpYW50LgoKCSogZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvYXNwaS5jLAoJICBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJTWFrZSB1c2Ugb2Ygbm93IGZ1bGwgYW5kIGNvcnJlY3QgSEtMTVxIQVJEV0FSRVxERVZJQ0VTXFNjc2kuCgoJKiBkbGxzL2tlcm5lbC9vbGRjb25maWcuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglVc2UgL3Byb2MgZmlsZXN5c3RlbSB0byBjcmVhdGUgSEtMTVxIQVJEV0FSRVxERVZJQ0VNQVBcU2NzaSBlbnRyaWVzLgoKCSogcHJvZ3JhbXMvd2luZWxhdW5jaGVyLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGhhcm1sZXNzIC90bXAgcHJvYmxlbS4KCgkqIGRsbHMvdXNlci9kcml2ZXIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmg6CglNYWtlIHN1cmUgd2UgZG9uJ3QgY2FsbCB0aGUgZ3JhcGhpY3MgZHJpdmVyIGFmdGVyIHByb2Nlc3MgZGV0YWNoLgoKCSogZGxscy9tc3htbDMvTWFrZWZpbGUuaW4sIGRsbHMvbXN4bWwzL2RvbWRvYy5jLCBkbGxzL21zeG1sMy9lbGVtZW50LmMsCgkgIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaCwgZGxscy9tc3htbDMvbm9kZS5jLAoJICBkbGxzL21zeG1sMy9ub2RlbWFwLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBub2RlIG9iamVjdCBhbmQgdXNlIGl0IHRvIGhvbGQgbGlieG1sMiBwb2ludGVycy4KCgkqIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL25zZW1iZWQuYywKCSAgZGxscy9tc2h0bWwvcGVyc2lzdC5jLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJSW5pdCBuc1dlYkJyb3dzZXIgd2luZG93IHdoaWxlIGNyZWF0aW5nIG5zY29udGFpbmVyLgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLCBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXN4bWwzL2ZhY3RvcnkuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgbWlzbWF0Y2hlcyBiZXR3ZWVuIHNwZWMgZmlsZXMgYW5kIGNvbW1lbnRzIGFib3V0IGV4cG9ydAoJbnVtYmVyLgoKCSogZGxscy91c3AxMC91c3AxMC5jLCBpbmNsdWRlL21zYWNtZHJ2LmgsIGluY2x1ZGUvbXNpLmgsCgkgIGluY2x1ZGUvbXN4bWwuaWRsLCBpbmNsdWRlL21zeG1sMi5pZGwsIGluY2x1ZGUvb2RiY2luc3QuaCwKCSAgaW5jbHVkZS9zdHJtaWYuaWRsLCBpbmNsdWRlL3htbGRvbS5pZGw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgI2luY2x1ZGUgImZvby5oIiBmb3IgaW5jbHVkaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBkbGxzLywgdXNlCgkjaW5jbHVkZSA8YmFyLmg+IGZvciBpbmNsdWRpbmcgV2luZG93cyBoZWFkZXJzIGluIGluY2x1ZGUvLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglCcm93c2UgdG8gdGhlIGRpcmVjdG9yeSBpZiBhIGRpcmVjdG9yeSBuYW1lIGlzIHR5cGVkIGludG8gdGhlIGVkaXQgYm94CglvZiBhIGZpbGUgZGlhbG9nIGFuZCB0aGUgY29uZmlybWF0aW9uIGJ1dHRvbiAob3IgRW50ZXIga2V5KSBpcyBoaXQuCglSZXR1cm4gYW55IGZpbGUgbmFtZSBpbiB0aGUgZWRpdCBib3ggaWYgT0ZOX05PVkFMSURBVEUgaXMgc2V0IGFuZAoJT0ZOX0ZJTEVNVVNURVhJU1QgaXMgbm90LCBldmVuIGlmIHRoYXQgZmlsZSBuYW1lIGluY2x1ZGVzIGEgcGF0aCBuYW1lCglvciBpcyB0aGUgbmFtZSBvZiBhIGZvbGRlci4KCgkqIGRsbHMvd2xkYXAzMi9iaW5kLmMsIGRsbHMvd2xkYXAzMi9pbml0LmMsIGRsbHMvd2xkYXAzMi9zZWFyY2guYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSBIQVZFX0xEQVBfSCB3aGVuIGNoZWNraW5nIGlmIGxkYXAuaCBpcyBhdmFpbGFibGUuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbF9leHQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBbm90aGVyIHVwZGF0ZSB0byB0aGUgd2luKi5hcGkgZmlsZXMuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU2luY2Ugd2luZG93cy8gaXMgZ29uZSwgaGVhZGVycyBmb3IgdXNlciBhcmUgb25seSBpbgoJZGxscy91c2VyLy4gUmVtb3ZlIGtsdWRnZSBmcm9tIHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvbWFwaTMyL3Byb3AuYywgZGxscy9vbGUzMi9vbGUxNi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIGxvY2FsIGRlY2xhcmF0aW9ucyBhbHJlYWR5IGluIGluY2x1ZGVkIHB1YmxpYyBoZWFkZXJzLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCjIwMDUtMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYzogVXNlIEVSUiBpbnN0ZWFkIG9mIERQUklOVEYgaW4gZHVtcF9waWRsX2hleC4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUlnbm9yZSBwcmVsaW5rIGZhaWx1cmVzLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsCgkgIGRsbHMvbXNodG1sL3BlcnNpc3QuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEJlZ2lubmluZyBpbXBsZW1lbnRhdGlvbiBvZiB0cnVlIElQZXJzaXN0TW9uaWtlcjo6TG9hZC4KCS0gVEhJUyBtYWNyb3MgY2xlYW51cC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglEb24ndCBjYWxsIHByb2Nlc3MgYXR0YWNoIG5vdGlmaWNhdGlvbiBkdXJpbmcgcHJvY2VzcyBzaHV0ZG93bi4KCU1ha2Ugc3VyZSB3ZSBkb24ndCBpbnNlcnQgYSBtb2R1bGUgaW4gdGhlIHNhbWUgbGlzdCB0d2ljZS4KCgkqIGRsbHMvbXNodG1sL3Byb3RvY29sLmMsIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJUmVwb3J0IEJJTkRTVEFUVVNfTUlNRVRZUEVBVkFJTEFCTEUgaW4gQWJvdXRQcm90b2NvbDo6U3RhcnQuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9vcHRpb24uYywKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfe2dldCxzZXR9X29wdGlvbntBLFd9LgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3RocmVhZC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCV9DcmVhdGVBbGxBY2Nlc3NTZWN1cml0eUF0dHJpYnV0ZXMgdGFrZXMgdGhyZWUgcGFyYW1ldGVycy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW46CglTcGVjaWZ5IGEgYmFzZSBhZGRyZXNzIGZvciBrZXJuZWwgYW5kIG50ZGxsLgoKCSogZGxscy9tc3htbDMvbWFpbi5jLCBkbGxzL21zeG1sMy9tc3htbF9wcml2YXRlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGFuZCBjbGVhbiB1cCBsaWJ4bWwyIGluIERsbE1haW4uCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgLS1pbWFnZS1iYXNlIGxpbmtlciBvcHRpb24gaW4gd2luZWdjYyB1c2luZyB0aGUKCXByZWxpbmsgdG9vbC4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUFkZGVkIGEgVklSVFVBTF9hbGxvY190ZWIgZnVuY3Rpb24gdG8gYWxsb2NhdGUgVEVCcyB3aGlsZSBtYWtpbmcgc3VyZQoJdGhleSBkb24ndCBlbmQgdXAgYWJvdmUgdGhlIGFkZHJlc3Mgc3BhY2UgbGltaXQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglHZXQgcmlkIG9mIHRoZSBhbG1vc3QgZW1wdHkgdG1hcnNoYWwuaCBmaWxlLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGdjYyA0LjAgd2FybmluZ3MuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCVRoZSB0ZW1wIGJ1ZmZlciBhbHdheXMgc3RvcmVzIFdDSEFScywgZml4ZWQgaXRzIHR5cGUgYW5kIGdvdCByaWQgb2YgYQoJbnVtYmVyIG9mIGNhc3RzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmgsIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJTW92ZWQgYSBudW1iZXIgb2YgZGVmaW5pdGlvbnMgdGhhdCBhcmUgbm90IG5lZWRlZCBpbiBvdGhlciBmaWxlcyBpbnRvCgl2YXJ0eXBlLmMKCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaXRzcy8uY3ZzaWdub3JlLCBkbGxzL2l0c3MvTWFrZWZpbGUuaW46CglpdHNzIGRvZXNuJ3QgbmVlZCBhbiBpbXBvcnQgbGlicmFyeS4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywKCSAgZGxscy9pdHNzL2l0c3Muc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYzoKCU1hcmsgRGxsTWFpbiBhbmQgc2ltaWxhciBleHBvcnRzIGFzIHByaXZhdGUuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglBZGRlZCBhIHdhcm5pbmcgZm9yIERsbEdldFZlcnNpb24gYW5kIERsbEluc3RhbGwgbm90IGJlaW5nIGRlY2xhcmVkCglwcml2YXRlLiBBbHNvIHdhcm4gd2hlbiBvbmUgb2YgdGhlIERsbCogZnVuY3Rpb25zIGlzIHVzaW5nIGEgZGlmZmVyZW50CglpbnRlcm5hbCBuYW1lLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3VzZXIvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBDcmVhdGVXaW5kb3cgd2l0aCBpbnZhbGlkIG1lbnUgaGFuZGxlIHRlc3QgcGFzcyBvbiBXaW5lLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBPRlNUUlVDVCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGFuZCBhZGQgdGVzdHMgZm9yIHRoZSBGRFNBIGZ1bmN0aW9ucy4KCjIwMDUtMDgtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9kaWIuYywgZGxscy94MTFkcnYvZGliLmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJRml4IGZvciBCSV9CSVRGSUVMRFM6IFRoZSBjb2xvciBtYXNrcyBhcmUgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4gYWxsCgl0aGUgYml0bWFwIGhlYWRlcnMgdGhhdCBzdXBwb3J0IHRoaXMgZmxhZyAoQklUTUFQSU5GTzogVGhlIGZpcnN0IGNvbG9yCgltYXNrIGlzIGluIGJtaUNvbG9yc1swXSwgdGhhdCdzIHRoZSBzYW1lIHBvc2l0aW9uIGFzIGJWNFJlZE1hc2sgaW4KCUJJVE1BUFY0SEVBREVSKS4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgcGtnLWNvbmZpZyBpbiB0aGUgbGlieG1sIGNvbmZpZ3VyZSBjaGVjay4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgeG1sUGFyc2VNZW1vcnkgaW5zdGVhZCBvZiB4bWxSZWFkSU8uCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW46CglyaWNoZWQzMiBkb2Vzbid0IG5lZWQgYW4gaW1wb3J0IGxpYnJhcnkuCgoJKiBkbGxzL2RtY29tcG9zL2RtY29tcG9zLnNwZWMsIGRsbHMvZG1pbWUvZG1pbWUuc3BlYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGUuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYzoKCUZpeGVkIERsbEdldENsYXNzT2JqZWN0IHNwZWMgZW50cmllcy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJUmVtb3ZlIHRyYWlsaW5nIGJhY2tzbGFzaC4KCgkqIGRsbHMvbXN4bWwzL25vZGVtYXAuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeGVkIG1zeG1sIGNvbXBpbGF0aW9uIHdoZW4gbGlieG1sMiBpcyBub3QgYXZhaWxhYmxlLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGF1dG9jb25mLXJlbGF0ZWQgI2lmZGVmcyBpbiBDb21tX0NoZWNrRXZlbnRzKCkuCgoJKiBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRml4IHN0YXRlYmxvY2sgbG9vcCBlcnJvcnMuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlVbmtub3duX1NldFNpdGUgY2FsbHMgSU9iamVjdFdpdGhTaXRlX1NldFNpdGUgb3IKCUlJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcl9TZXRTZWN1cml0eVNpdGUuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzogU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMyQGFyLmZpLmx0PgoJQ29tbWVudCBvdXQgVmFyRGF0ZUZyb21TdHIoKSBjYWxscyB0aGF0IGdlbmVyYXRlIGV4Y2VwdGlvbnMgb24gV2luTUUuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9tYWluLmM6CglEb24ndCBwcmVmaXggdGhlIGZ1bmN0aW9ucyBEbGxJbnN0YWxsIGFuZCBEbGxHZXRWZXJzaW9uIHdpdGggdGhlIGRsbAoJbmFtZSBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gY2hlY2sgdGhlIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDoKCUFkZGVkIGEgcHJvdG90eXBlIGZvciBEbGxHZXRWZXJzaW9uIHRvIGVuYWJsZSB0eXBlIGNoZWNraW5nIGluIHRoZQoJV2luZSBzb3VyY2UuCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywKCSAgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL21sYW5nLnNwZWMsIGRsbHMvbWxhbmcvcmVnc3ZyLmMsCgkgIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbC5zcGVjLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVnc3ZyLmMsIGRsbHMvbXNpc3lzL21zaXN5cy5jLAoJICBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWMsIGRsbHMvbXN4bWwzL2ZhY3RvcnkuYywKCSAgZGxscy9tc3htbDMvbWFpbi5jLCBkbGxzL21zeG1sMy9tc3htbDMuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlYWNjL21haW4uYywgZGxscy9vbGVhY2Mvb2xlYWNjLnNwZWMsCgkgIGRsbHMvcWNhcC9xY2FwLnNwZWMsIGRsbHMvcWNhcC9xY2FwX21haW4uYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3VybG1vbi9yZWdzdnIuYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uc3BlYywKCSAgZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvYW1zdHJlYW0vcmVnc3ZyLmMsIGRsbHMvYXRsL2F0bC5zcGVjLAoJICBkbGxzL2F0bC9yZWdpc3RyYXIuYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9hdmlmaWwzMi9yZWdzdnIuYywKCSAgZGxscy9jYWJpbmV0L2NhYmluZXQuc3BlYywgZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXQuc3BlYywgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywKCSAgZGxscy9jb21jYXQvcmVnc3ZyLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2QzZHhvZi9kM2R4b2Yuc3BlYywKCSAgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL2QzZHhvZi9yZWdzdnIuYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9yZWdzdnIuYywgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L3JlZ3N2ci5jLAoJICBkbGxzL2RpbnB1dDgvZGlucHV0OC5zcGVjLCBkbGxzL2RpbnB1dDgvZGlucHV0OF9tYWluLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZC5zcGVjLCBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLAoJICBkbGxzL2RtYmFuZC9yZWdzdnIuYywgZGxscy9kbWxvYWRlci9kbWxvYWRlci5zcGVjLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywgZGxscy9kbWxvYWRlci9yZWdzdnIuYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdC5zcGVjLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywKCSAgZGxscy9kbXNjcmlwdC9yZWdzdnIuYywgZGxscy9kbXN5bnRoL2Rtc3ludGguc3BlYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvcmVnc3ZyLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpYy5zcGVjLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9yZWdzdnIuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsCgkgIGRsbHMvZHBsYXl4L3JlZ3N2ci5jLCBkbGxzL2RwbmV0L2RwbmV0LnNwZWMsIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLAoJICBkbGxzL2RwbmV0L3JlZ3N2ci5jLCBkbGxzL2RwbmhwYXN0L2RwbmhwYXN0LnNwZWMsCgkgIGRsbHMvZHBuaHBhc3QvbWFpbi5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuc3BlYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9kc3dhdmUvcmVnc3ZyLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWduLnNwZWM6CglEb24ndCBwcmVmaXggdGhlIGZ1bmN0aW9ucyBEbGxDYW5VbmxvYWROb3csIERsbEdldENsYXNzT2JqZWN0IGFuZAoJRGxsKFVuKVJlZ2lzdGVyU2VydmVyIHdpdGggdGhlIGRsbCBuYW1lIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBjaGVjawoJdGhlIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2ZkLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgYW4gdW5tb3VudF9kZXZpY2UgcmVxdWVzdCB0aGF0IGludmFsaWRhdGVzIGFsbCBmaWxlIGRlc2NyaXB0b3JzCglvcGVuIG9uIGEgZ2l2ZW4gVW5peCBkZXZpY2UuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuaCwgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgbWFjcm9zLCBhbmQgbWFrZSBzb21lIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL2Ftc3RyZWFtL21haW4uYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvZDNkeG9mL21haW4uYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5jLCBkbGxzL21zeG1sMy9mYWN0b3J5LmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIFdJTkFQSSB0byBNU1hNTF9EbGxHZXRDbGFzc09iamVjdCgpLgoJU3RhbmRhcmRpemUgdGhlIERsbEdldENsYXNzT2JqZWN0KCkgcHJvdG90eXBlcyBzbyB0aGV5IG1hdGNoIHRoZSBNU0ROCglkZWZpbml0aW9uLgoKCSogZGxscy9tc3htbDMvTWFrZWZpbGUuaW4sIGRsbHMvbXN4bWwzL2VsZW1lbnQuYywKCSAgZGxscy9tc3htbDMvbXN4bWxfcHJpdmF0ZS5oLCBkbGxzL21zeG1sMy9ub2RlbWFwLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIElYTUxET01OYW1lZE5vZGVNYXAgaW50ZXJmYWNlLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZnJlZXR5cGUuYywKCSAgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdhcm5pbmcgZml4ZXMgZm9yIGdjYyA0LjAuCgoJKiB0b29scy9NYWtlZmlsZS5pbjogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCUFkZGVkIGV4ZSBleHRlbnNpb25zIGZvciBtaW5ndzMyLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcndhcmQgb3JkaW5hbHMgNDU3LDQ1OCB0byBHZXRMb25nUGF0aE5hbWVXLEEuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmg6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CgktIEFjY2VzcyByaWdodHMgZm9yIFByaW50c2VydmVyLCBQcmludGVycyBhbmQgUHJpbnRqb2JzIGFkZGVkLgoJLSBEZWZpbmVzIGZvciBiaWRpcmVjdGlvbmFsIGNvbW11bmljYXRpb24gYWRkZWQuCgoJKiBkbGxzL21zeG1sMy9lbGVtZW50LmMsIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXhlZCBtc3htbCBjb21waWxhdGlvbiB3aGVuIGxpYnhtbCBpcyBub3QgYXZhaWxhYmxlLgoKCSogZGxscy93bGRhcDMyL3dsZGFwMzIucmMsIGRsbHMvd2xkYXAzMi93bGRhcDMyX1J1LnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFJ1c3NpYW4gcmVzb3VyY2VzIHRvIHdsZGFwMzIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVXaW5kb3cocGFyZW50PU5VTEwsIGN0bGlkIT0wKSBzaG91bGQgZmFpbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL29zcy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUmVtb3ZlZCBzb21lIHVudXNlZCBvciByZWR1bmRhbnQgY29uZmlndXJlIGNoZWNrcy4KCUEgZmV3IGNsZWFudXBzIGluIGNvbmZpZ3VyZS5hYy4KCgkqIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9obGluay5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaGxpbmsuaWRsLgoKCSogZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLAoJICBkbGxzL21zaHRtbC9vbGVvYmouYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIElPbGVDb250cm9sLgoKCSogZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IHNob3dpbmcgdGhhdCBXaW5kb3dzIGRvZXNuJ3QgdGllIEdESSBvYmplY3RzIHRvIGEKCXBhcnRpY3VsYXIgdGhyZWFkLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oOiBZdXJpIEtvemxvdiA8a296bG92LnlAZ21haWwuY29tPgoJUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbiBvZiBNU0lfU2V0UHJvcGVydHlXLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46IEthaSBCbGluIDxibGluQGdteC5uZXQ+CglBZGQgc2VjdXIzMi5kbGwgdGVzdHMgdG8gd2luZXRlc3QuCgoJKiBkbGxzL2F0bC9hdGxfbWFpbi5jLCBkbGxzL2F0bC9yZWdpc3RyYXIuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQmFzaWMgaW1wbGVtZW50YXRpb24gb2YgQXRsTW9kdWxlVXBkYXRlUmVnaXN0cnlGcm9tUmVzb3VyY2VELgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9wYXJzZXIucG06CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgV0lORV9QQUNLRUQgcmVjb2duaXRpb24uCglVcGRhdGUgdmFyaW91cyB3aW5hcGkgcGFyc2VyIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbGV0IGl0IHVuZGVyc3RhbmQKCXNvbWUgV2luZSBjb25zdHJ1Y3RzLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZSB3aW4xNi5hcGkvd2luMzIuYXBpIHRvIGN1cnJlbnQgQ1ZTLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgV0lORV9VTlVTRUQgY2hlY2tzLgoKCSogZGxscy9yaWNoZWQyMC9yZWFkZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIFVURi04IFJURiBwYXJzaW5nLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglBZGQgc29tZSBkZWZpbml0aW9ucyBuZWNlc3NhcnkgZm9yIGZvcmNlIGZlZWRiYWNrLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIElMb2NrQnl0ZXMxNiAobWVtb3J5c3RyZWFtKSBzdXBwb3J0IGZvciB0aGUgMTZiaXQgY29tcG91bmQKCXN0b3JhZ2UgaW1wbGVtZW50YXRpb24uCglBZGRlZCBSZWFkQ2xhc3NTdGcsIE9sZURvQXV0b0NvbnZlcnQsIEdldENvbnZlcnRTdGcKCWltcGxlbWVudGF0aW9ucy9zdHVicy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzogU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMyQGFyLmZpLmx0PgoJV2luZSBhbmQgTlQ0IHJldHVybnMgRV9GQUlMIG9uIGZhaWx1cmUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmV2ZXJ0IHRvIHByZXZpb3VzIGJlaGF2aW91ciBvZiBkZXRlY3RpbmcgbmFtZXMgd2l0aCBub24tYWxwaGFudW1lcmljCgljaGFyYWN0ZXJzIGFzIG9uZXMgd2l0aCBvZmZzZXRzLCBidXQgYWRkIGluIGEgc3BlY2lhbCBjYXNlIGZvciBhbgoJZW1wdHkgbmFtZS4KCgkqIGRsbHMvd2xkYXAzMi93bGRhcDMyLnJjLCBkbGxzL3dsZGFwMzIvd2xkYXAzMl9EZS5yYywKCSAgZGxscy93bGRhcDMyL3dsZGFwMzJfTmwucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBEdXRjaCByZXNvdXJjZSB0cmFuc2xhdGlvbi4KCVNtYWxsIGZpeCBmb3IgdGhlIEdlcm1hbiB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIGhlbHBlcnMgZm9yIGNvbnZlcnRpbmcgKGFycmF5cyBvZikgTERBUFNvcnRLZXksIExEQVBBUElJbmZvLCBhbmQKCUxEQVBBUElGZWF0dXJlSW5mbyBzdHJ1Y3R1cmVzIGludG8gZGlmZmVyZW50IGVuY29kaW5ncy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGxpc3Rib3ggdGVzdCBzaG93cyB0aGF0IHRoZSBjb250cm9sIGlkIG11c3QgYmUgc3RvcmVkIGluIFdQQVJBTQoJZm9yIHRoZSBXTV9EUkFXSVRFTSBtZXNzYWdlLgoJRml4IHRoZSBsaXN0Ym94IHRlc3Qgc28gQ3JlYXRlV2luZG93KCkgZG9lcyBub3QgZmFpbCBvbiBXaW5kb3dzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBUb2JpYXMgR3J1ZXR6bWFjaGVyIDx0b2JpYXNAcG9ydGZvbGlvMTYuZGU+CglSZXZlcnNlIHRoZSBkaXJlY3Rpb24gb2YgcmF3IFNDU0kgY29tbWFuZHMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGNhbGwgdG8gR2V0TWVudUl0ZW1JbmZvIGFuZCB1bmljb2RpZnkgd2hpbGUgd2UncmUgYXQgaXQuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgbG9hZGluZyBzdHJpbmdzIG92ZXIgNjRrIGZyb20gdGhlIHN0cmluZyB0YWJsZS4KCgkqIGRsbHMvaGhjdHJsLm9jeC9EZS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGUgR2VybWFuIHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gRG9uJ3Qga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIFRCIGJ1dHRvbnMuCgktIENhbGwgdGhlIFcgdmVyc2lvbiBvZiBTZXRXaW5kb3dMb25nUHRyLgoKCSogZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFsbG93IHRoZSBXSU5FRDNEU0JUX0lNUEwgdG8gYmUgYXBwbGllZCBzbyB0aGF0IHN0YXRlcyBjYW4gYmUgc3luY2VkCgliZXR3ZWVuIHJlbmRlciB0YXJnZXQgY29udGV4dHMuCgoJKiBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW46IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVJlbW92ZSBkeGd1aWQgZGVwZW5kZW5jeS4KCjIwMDUtMDgtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaHRtbC9uc2VtYmVkLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggY29tbWVudCBhYm91dCBoYWNrLgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBJT2xlQ29tbWFuZFRhcmdldDo6RXhlYyBpbXBsZW1lbnRhdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsCgkgIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfZGliLmMsCgkgIGRsbHMvZGRyYXcvc3VyZmFjZV9tYWluLmMsIGRsbHMvZGRyYXcvdGV4dHVyZS5jLAoJICBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywgZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvcWNhcC92NGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYywgZGxscy93aW5hc3BpL2FzcGkuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmVkb3MvcHBkZXYuYywgZGxscy93aW5lcHMvcHBkLmMsCgkgIGRsbHMvd2luZXBzL3R5cGUxYWZtLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmMsIHNlcnZlci9mZC5jLCB0b29scy9mbnQyYmRmLmMsCgkgIHRvb2xzL2ZudDJmb24uYywgdG9vbHMvc2ZudDJmbnQuYywgdG9vbHMvd2lkbC9wcm94eS5jLAoJICB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2luZWR1bXAvZHVtcC5jLCB0b29scy93aW5lZHVtcC9tYWluLmMsCgkgIHRvb2xzL3dtYy93bWMuYywgdG9vbHMvd21jL3dyaXRlLmMsIHRvb2xzL3dyYy9wYXJzZXIueToKCVJlbW92ZWQgdGhlIGJyb2tlbiBtbWFwNjQgY29uZmlndXJlIGNoZWNrLCBhbmQgbW92ZWQgdGhlCglfRklMRV9PRkZTRVRfQklUUyBkZWZpbmUgdG8gd2luZS9wb3J0LmguIE1hZGUgc3VyZSB0aGF0IGFsbCBmaWxlcyB0aGF0CgluZWVkIHRoZSBkZWZpbmUgaW5jbHVkZSBpdC4KCgkqIGRsbHMvd2luZWQzZC9zdXJmYWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVNldCB0aGUgYXBoYSBjaGFubmVsIHRvIG9wYXF1ZSB3aGVuIGxvY2tpbmcgWDhSOEc4QjggYmFja2J1ZmZlcnMuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUltcGxlbWVudCBEcmF3VGhlbWVFZGdlKCkuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglNb3ZlZCBzdXBwb3J0IGZvciBub24gcG93ZXIgMiB0ZXh0dXJlIHRvIGhhcmR3YXJlLgoJRml4IGZvciB0aGUgdGV4dHVyZSBzdGF0ZSBzZXBhcmF0aW9uIHBhdGNoZXMsIEFwcGx5VGV4dHVyZVN0YXRlcyBpcwoJbm93IGNhbGxlZCBpbnN0ZWFkIG9mIGJlaW5nIGNvbW1lbnRlZCBvdXQuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVNldCBzb21lIGRlZmF1bHQgdmFsdWVzIGZvciB0cnVlc2l6ZSBzaXppbmcgdGhhdCBzZWVtIGNsb3NlciB0bwoJV2luZG93cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluOgoJR2V0IHJpZCBvZiB0aGUgbm8gbG9uZ2VyIHVzZWQgcmVnZWRpdCB0ZXN0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOgoJTWVyZ2VkIHNvbWUgb2YgdGhlIGhlYWRlciBjaGVja3MgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBnZW5lcmF0ZWQKCWNvbmZpZ3VyZSBzY3JpcHQgYSBiaXQuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCUNhbGwgdGhlIFVTRVIgZHJpdmVyIGRpcmVjdGx5IHRvIGNoZWNrIGZvciBYIGV2ZW50cyBvbiBSRFdfVVBEQVRFTk9XCglpbnN0ZWFkIG9mIGNhbGxpbmcgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cy4KCgkqIE1ha2VmaWxlLmluOiBEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJQWRkZWQgZGVzY3JpcHRpb24gZm9yIGNyb3NzdGVzdC4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXByb3ZlIG9uIGEgZml4dXAgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb3BlbmdsIGFuZCBkaXJlY3R4IHBpeGVsCgljZW50ZXJpbmcgb2YgdmVydGV4ZXMuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglDb3JyZWN0aW9uIHRvIGVhcmxpZXIgYXNzZXJ0aW9uIHBhdGNoIHRvIGFsbG93IGZvciBidWZfbWl4cG9zID09CglidWZsZW4gaW4gbm9uLWxvb3BpbmcgY2FzZSwgZml4ZXMgbG9vcGluZyBvZiBvbmUtb2ZmIG1peGVkIHNhbXBsZXMKCWludHJvZHVjZWQgYnkgcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQXMgcGVyIE1TRE4sIElOVEVSTkVUX09QVElPTl9DT05ORUNURURfU1RBVEUgc2hvdWxkIHRha2UgYSBEV09SRAoJaW5zdGVhZCBvZiB0aGUgSU5URVJORVRfQ09OTkVDVEVEX0lORk8gc3RydWN0dXJlLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglUaGUgZGVmYXVsdCBpbWFnZSBsYXlvdXQgaXMgSE9SSVpPTlRBTCwgbm90IFZFUlRJQ0FMLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2hlYXAuYzoKCUhhY2sgdG8gbWFrZSB0aGUgbWFpbiBoZWFwIGNyaXRpY2FsIHNlY3Rpb24gaGF2ZSBhIHByb3BlciBkZWJ1ZyBpbmZvCglzdHJ1Y3R1cmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lZXNkLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZWVzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lZXNkL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWVzZC9lc291bmQuYywKCSAgZGxscy93aW5tbS93aW5lZXNkL2Vzb3VuZC5oLCBkbGxzL3dpbm1tL3dpbmVlc2Qvd2luZWVzZC5kcnYuc3BlYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYzoKCVBldGVyIMVzdHJhbmQgPGFzdHJhbmRAY2VuZGlvLnNlPgoJSW1wbGVtZW50ZWQgYW4gRXNvdW5kIGRyaXZlci4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6CglEb24ndCBjYWxsIFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCBpZiB3ZSBhcmUganVzdCBwb2xsaW5nIGZvciBwZW5kaW5nCglYIGV2ZW50cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgY29tbSB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudCBXYWl0Q29tbUV2ZW50IGJ5IHBvbGxpbmcgdGhlIGFwcHJvcHJpYXRlIGRhdGEgc291cmNlcy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQW5vdGhlciBmaXggdG8gdXNlIG1hZ2VudGEgYXMgdGhlIGRlZmF1bHQgdHJhbnNwYXJlbnQgY29sb3IuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd2luZS9ycGNmYy5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWJzIGZvciBOZHJNYXBDb21tQW5kRmF1bHRTdGF0dXMsIGNvbmZvcm1hbnQgc3RyaW5nIG1hcnNoYWxpbmcKCWFuZCBjb250ZXh0IGhhbmRsZSBmdW5jdGlvbnMuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBUaGUgaGVhZGVyIGdsb2JhbCB2YXJpYWJsZSBpcyBOVUxMIHdoZW4gbm90IGdlbmVyYXRpbmcgYSBoZWFkZXIgc28KCSAgZG9uJ3QgdHJ5IHRvIHVzZSBpdCBpbiBmdW5jdGlvbnMgdGhhdCBtYXkgYmUgY2FsbGVkIGJ5IHRoZSBjbGllbnQKCSAgY29kZS4KCS0gTWFrZSB0aGUgZnVuY3Rpb25zIHRoYXQgdGFrZSBjaGFyICogdGFrZSBjb25zdCBjaGFyICouCgoJKiBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBmcmVlIHByZXZpb3VzIGJ1ZmZlciBpbiBOZHJHZXRCdWZmZXIuCgoJKiBsaWJzL3VuaWNvZGUvd2N0b21iLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGdjYyA0LjAgLVdwb2ludGVyLXNpZ24gd2FybmluZy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGhvcml6b250YWwgJiB2ZXJ0aWNhbCBhbGlnbm1lbnQgd2hlbiBkb2luZyB0cnVlc2l6ZQoJc2l6aW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvc2VjdXIzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZWN1cjMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2VjdXIzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZWN1cjMyL3Rlc3RzL21haW4uYzoKCUthaSBCbGluIDxibGluQGdteC5uZXQ+CglTZXQgdXAgdGVzdHMgZm9yIHNlY3VyMzIuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZyZWUgdGhlIGFsbG9jYXRlZCBjb21tYW5kIGxpbmUgc3RyaW5nLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlIEJUX05PTkUgYmFja2dyb3VuZCB0eXBlLgoKCSogZGxscy9oaGN0cmwub2N4L0VuLnJjLCBkbGxzL2hoY3RybC5vY3gvaGVscC5jLAoJICBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLnJjLCBkbGxzL2hoY3RybC5vY3gvcmVzb3VyY2UuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIGEgdGFiIGNvbnRyb2wgdG8gdGhlIG5hdmlnYXRpb24gcGFuZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIGhvdHRyYWNraW5nIHN1cHBvcnQgZm9yIHRoZSBoZWFkZXIgY29udHJvbC4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJSW1wbGVtZW50IEdldFRoZW1lQmFja2dyb3VuZEV4dGVudCgpLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCURvbid0IGNvbnZlcnQgdGhlIHJldHVybiB2YWx1ZSBvbiBmYWlsdXJlIGluIFZlclF1ZXJ5VmFsdWVBL1cuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCBSZWdTZXRWYWx1ZUV4IHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsIGRsbHMvcmljaGVkMjAvcmljaG9sZS5jLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeGVzIGZvciBJbnRlcmxvY2tlZCogZnVuY3Rpb25zLgoKCSogZGxscy94MTFkcnYvb3BlbmdsLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUJhY2sgb3V0IHRoZSBwcmV2aW91cyBzdGVuY2lsIHBhdGNoIGFuZCBzbGlnaHRseSBpbXByb3ZlIG9uIHRoZSBvbGQKCWZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYywgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCU1vdmUgdGhlIHNldHRpbmcgb2Ygc3RhdGVzIGZyb20gZGV2aWNlIHRvIGJhc2V0ZXh0dXJlLCBzdGF0ZXMgdGhhdAoJcmVsYXRlIHRvIHRoZSBvcGVuZ2wgdGV4dHVyZSBvYmplY3Qgd2lsbCBvbmx5IGJlIHVwZGF0ZWQgd2hlbiB0aGV5IGFyZQoJb3V0IG9mIHN5bmMsIHRoaXMgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRleHR1cmUgb2JqZWN0IHN0YXRlIGNoYW5nZXMKCWR1cmluZyBnYW1lIHBsYXkgaW4gQXhpcyBhbmQgYWxsaWVzIGZyb20gc2V2ZXJhbCBodW5kcmVkcyB0byAwIG9yIDEuCgoJKiBkbGxzL21zeG1sMy9NYWtlZmlsZS5pbiwgZGxscy9tc3htbDMvZG9tZG9jLmMsIGRsbHMvbXN4bWwzL2VsZW1lbnQuYywKCSAgZGxscy9tc3htbDMvbXN4bWxfcHJpdmF0ZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIElYTUxET01FbGVtZW50IGludGVyZmFjZS4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL2RuLmMsIGRsbHMvd2xkYXAzMi9taXNjLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IExkYXBVbmljb2RlVG9VVEY4LCBMZGFwVVRGOFRvVW5pY29kZSwKCWxkYXBfZG4ydWZuKiwgbGRhcF9leHBsb2RlX2RuKiwgbGRhcF9nZXRfZG4qLAoJbGRhcF9tZW1mcmVlKiwgbGRhcF91Zm4yZG4qIGFuZCBsZGFwX3ZhbHVlX2ZyZWUqLgoKCSogZGxscy9oaGN0cmwub2N4L0RlLnJjLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGQgR2VybWFuIHJlc291cmNlZCBmb3IgaGhjdHJsLm9jeC4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBBZGQgdGhlIEhIIENoaWxkIHdpbmRvdyBjbGFzcy4KCS0gQ3JlYXRlIHRoZSBOYXZpZ2F0aW9uIGFuZCBIVE1MIHBhbmVzIGFzIEhIIENoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGQgcmVhbCBzdHViIGZvciBNc2lDb25maWd1cmVGZWF0dXJlVy4KCgkqIGRsbHMvbXNodG1sL3Byb3RvY29sLmMsIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgYWJvdXQgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJUmVtb3ZlIHVubmVlZGVkIHRoZW1pbmcgY2hlY2suCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgU1RfVElMRSBiYWNrZ3JvdW5kIHN0cmV0Y2hpbmcgbW9kZS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglJbXBsZW1lbnQgSU9DVExfU0NTSV9HRVRfSU5RVUlSWV9EQVRBLgoKMjAwNS0wOC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL21vZHVsZS5jOgoJSW1wbGVtZW50ZWQgR2V0L1NldERsbERpcmVjdG9yeS4KCgkqIGRsbHMvaGhjdHJsLm9jeC8uY3ZzaWdub3JlLCBkbGxzL2hoY3RybC5vY3gvRW4ucmMsCgkgIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwgZGxscy9oaGN0cmwub2N4L2hlbHAuYywKCSAgZGxscy9oaGN0cmwub2N4L2hoY3RybC5yYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBBZGQgdGhlIHRvb2xiYXIgdG8gdGhlIHZpZXdlciB3aW5kb3cuCgktIExvYWQgdGhlIHRvb2xiYXIgYnV0dG9uIHRleHQgZnJvbSB0aGUgcmVzb3VyY2UgZmlsZS4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBSZW1vdmVkIGEgbm9pc3kgdHJhY2UuCgoJKiBkbGxzL3dsZGFwMzIvYmluZC5jLCBkbGxzL3dsZGFwMzIvY29tcGFyZS5jLCBkbGxzL3dsZGFwMzIvaW5pdC5jLAoJICBkbGxzL3dsZGFwMzIvc2VhcmNoLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVVzZSBXTERBUDMyX0xEQVBfTk9fTUVNT1JZIGluc3RlYWQgb2YgTERBUF9OT19NRU1PUlkuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6IFNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzMkBhci5maS5sdD4KCUFkZGVkIHRlc3QgZm9yIElTaGVsbEZvbGRlcl9QYXJzZURpc3BsYXlOYW1lLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBURVNUTElTVCBmcm9tIEVYVFJBX1NSQ1MgdG8gQ19TUkNTIGluIHRlc3QgbWFrZWZpbGVzIHRvIGZyZWUgdXAKCUVYVFJBX1NSQ1MgZm9yIG90aGVyIHB1cnBvc2VzLgoKCSogZGxscy9oaGN0cmwub2N4L01ha2VmaWxlLmluLCBkbGxzL2hoY3RybC5vY3gvbWFpbi5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgRGxsTWFpbiBhbmQgc3RvcmUgdGhlIERsbCBoaW5zdGFuY2UuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBhIGZldyB0cml2aWFsIG50ZGxsIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBpbgoJcmVjZW50IFdpbmRvd3MgdmVyc2lvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3htbDMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3htbDMvTWFrZWZpbGUuaW4sIGRsbHMvbXN4bWwzL2RvbWRvYy5jLCBkbGxzL21zeG1sMy9mYWN0b3J5LmMsCgkgIGRsbHMvbXN4bWwzL21haW4uYywgZGxscy9tc3htbDMvbXN4bWwzLnNwZWMsCgkgIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgbXN4bWwzIGJhc2VkIG9uIGxpYnhtbDIuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6CglGaXhlZCB3aGl0ZSBzcGFjZSBoYW5kbGluZyBvbiB0aGUgbGFzdCBsaW5lIChyZXBvcnRlZCBieSBKZXJlbXkKCVdoaXRlKS4KCUF2b2lkIHBhcnNpbmcgdGhlIHNhbWUgbGluZSB0d2ljZSB3aGVuIGl0IGNvbnRhaW5zIHRyYWlsaW5nIHNwYWNlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJQWRkIHRlc3RzIGZvciByZXBhaW50aW5nIHdpbmRvd3Mgd2l0aCBDU19QQVJFTlREQyBjbGFzcyBzdHlsZS4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCVVzZSB0aGUgbmV3IFJ0bEV4aXRVc2VyVGhyZWFkIGZ1bmN0aW9uIGluc3RlYWQgb2YgZXhwb3J0aW5nCgl3aW5lX3NlcnZlcl9leGl0X3RocmVhZC4KCgkqIGRsbHMvbXNodG1sL29sZW9iai5jLCBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUXVlcnlTdGF0dXMgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3dsZGFwMzIvY29tcGFyZS5jLCBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURvbid0IHJlbHkgb24gbGRhcCBzdHJ1Y3R1cmUgd2hlbiBoZWFkZXJzIGFyZSBub3QgYXZhaWxhYmxlLgoKCSogZGxscy93bGRhcDMyL3dsZGFwMzIucmMsIGRsbHMvd2xkYXAzMi93bGRhcDMyX0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGQgR2VybWFuIHJlc291cmNlIGZpbGUgZm9yIFdMREFQMzIuCgoJKiBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvcHJvdG9jb2wuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBEbGxDYW5VbmxvYWROb3cgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglQcmV2ZW50IGRzYi0+YnVmX21peHBvcyBmcm9tIGV2ZXIgcmVtYWluaW5nIHBhc3QgZHNiLT5idWZsZW4gZXZlbiBpZgoJbm90IGluIERTQlBMQVlfTE9PUElORyBjYXNlLCB0byBwcmV2ZW50IGFzc2VydGlvbiBmYWlsdXJlIGluCglEU09VTkRfTWl4SW5CdWZmZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglVc2UgU1RBVEVJTUFHRUlOREVYIC8gSU5ERVhUT1NUQVRFSU1BR0VNQVNLIGluc3RlYWQgb2YgYml0CglvcGVyYXRpb25zLgoKMjAwNS0wOC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9nZGkvZ2RpMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglBZGRlZCBjb21tZW50ZWQgb3V0IHN0dWJzIGZvciBhIGJ1bmNoIG9mIG5ldyBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogUHJvcGVybHkgc29ydCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluOiBGaXhlZCB0aGUgYnVpbGQgd2l0aG91dCBtYWtlIGRlcGVuZC4KCgkqIGRsbHMvdXNwMTAvdXNwMTAuc3BlYzogUHJvcGVybHkgc29ydCB0aGUgc3BlYyBmaWxlIGVudHJpZXMuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9jb21wYXJlLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfY29tcGFyZSogZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeGVkIElPQ1RMX1NDU0lfR0VUX0FERFJFU1MuCgoJKiBkbGxzL2NvbWN0bDMyL2RwYS5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJRml4ZWQgcmVncmVzc2lvbiBpbiBEUEFfU2VhcmNoLgoKCSogZGxscy9tc2h0bWwvLmN2c2lnbm9yZSwgZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9uc2VtYmVkLmMsCgkgIGRsbHMvbXNodG1sL25zaWZhY2UuaWRsLCBkbGxzL21zaHRtbC9wZXJzaXN0LmMsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIFVzZSBHZWNrbyB0byByZW5kZXIgSFRNTC4KCS0gR2V0IHJpZCBvZiBNb3ppbGxhIEFjdGl2ZVggQ29udHJvbCBpbiBNU0hUTUwuCgoJKiBkbGxzL3dsZGFwMzIvLmN2c2lnbm9yZSwgZGxscy93bGRhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3dsZGFwMzIvZXJyb3IuYywgZGxscy93bGRhcDMyL21haW4uYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5yYywKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYywgZGxscy93bGRhcDMyL3dsZGFwMzJfRW4ucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2VycjJzdHJpbmcuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJU2VwYXJhdGUgdGhlIHNldHRpbmcgb2YgdGhlIERpcmVjdFggdGV4dHVyZSBhbmQgc2FtcGxlciBzdGF0ZXMgZnJvbQoJdGhlIHNldHRpbmcgb2YgT3BlbkdMIHN0YXRlcyAobm93IGluIGFwcGx5VGV4dHVyZVN0YXRlU3RhdGUgYW5kCglhcHBseVNhbXBsZXJTdGF0ZSkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9zeW5jLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCBzeW5jIHRlc3RzIG9uIFdpbjk4L01FLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbW9kdWxlLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCBtb2R1bGUgdGVzdHMgb24gV2luOXguCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVN5bmMgd3MyXzMyLnNwZWMgd2l0aCBYUC4KCgkqIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfZGliLmMsCgkgIGRsbHMvZGRyYXcvdGV4dHVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2FybmluZyBmaXhlcy4KCgkqIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwgZGxscy9oaGN0cmwub2N4L2hlbHAuYywKCSAgZGxscy9oaGN0cmwub2N4L2hoY3RybC5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGQgYmVnaW5uaW5ncyBvZiB0aGUgSGVscCB2aWV3ZXIuCgoJKiBsaWJzL3VuaWNvZGUvbWJ0b3djLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXguCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVNlcGFyYXRlIHRoZSBtYW5hZ2VtZW50IG9mIERpcmVjdFggc3RhdGVzIGFuZCBvcGVuR0wgc3RhdGVzLgoKCSogZGxscy91c3AxMC91c3AxMC5jLCBkbGxzL3VzcDEwL3VzcDEwLnNwZWMsIGluY2x1ZGUvdXNwMTAuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIHN0dWJiZWQgc3VwcG9ydCBmb3IgU2NyaXB0R2V0Rm9udFByb3BlcnRpZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2RwYS5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggRFBBX1NlYXJjaCBmb3Igc29ydGVkIGFycmF5cy4KCjIwMDUtMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglGaXhlZCBhbiBvZmYgYnkgb25lIGVycm9yIGluIGVudW1kaXNwbGF5bW9kZXMsIGFsbG93aW5nIHNpbXMgMiB0bwoJc3RhcnQgdXAuCgoJKiBzZXJ2ZXIvZmQuYzoKCUFkZGVkIGEgc2VwYXJhdGUgZGV2aWNlIG9iamVjdCB0byBrZWVwIHRyYWNrIG9mIGlub2RlcyB0aGF0IGFyZSBvbiB0aGUKCXNhbWUgZGV2aWNlLgoKCSogZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRpZHkgdXAgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBpbiBkcmF3cHJpbSBhbmQgYWRkIG1pc3Npbmcgc3RyaWRlZAoJZGF0YS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVZhbGlkYXRlIHRoYXQgdGhlIHRleHR1cmUgaXMgbm8gbGFyZ2VyIHRoYW4gdGhlIGdyYXBoaWNzIGNhcmRzIGxhcmdlc3QKCXN1cHBvcnRlZCB0ZXh0dXJlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggY29tbSB0ZXN0cyBvbiBXaW45eC4KCgkqIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglJbXByb3ZlIHJlZ3N2cjMyIG91dHB1dC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgdGhlIG5vIGxvbmdlciB1c2VkIENvbnZlcnRWZXJzaW9uSW5mbzMyVG8xNiBmdW5jdGlvbi4KCUFkZCBhIChmb3Jnb3R0ZW4pIFJ0bEZyZWVVbmljb2RlU3RyaW5nLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCByZW1haW5pbmcgdGhyZWFkIHRlc3RzIG9uIFdpbk1FLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSm96ZWYgU3RlZmFua2EgPGpzdGVmYW5rYUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBicm93c2luZyB0byBvdGhlciBkaXJlY3RvcmllcyBpbiBXb3JkIDIwMDMgZmlsZSBvcGVuCglkaWFsb2cuIERvdWJsZSBjbGlja2luZyBvbiBhIGZvbGRlciBpbiB0aGUgRmlsZS0+T3BlbiBkaWFsb2cgd29ya3MKCW5vdy4KCjIwMDUtMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjOiBKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglGaXhlZCBjb250cm9sIHNpemUgYW5kIHBsYWNlbWVudC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmM6IFN0ZWZhbiBE9nNpbmdlciA8c3RlZmFuZG9lc2luZ2VyQGdteC5hdD4KCUNvcnJlY3QgdGhlIHNpemVzIG9mIHNvbWUgY29udHJvbHMgaW4gdGhlIEdlcm1hbiByZXNvdXJjZXMuCgoJKiBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgZXJyb3IgbmFtZXMgaW4gbWFrZV9yZXF1ZXN0cy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGluY2x1ZGUvZGJnaGVscC5oOgoJUGV0ZXIgT2Jlcm5kb3JmZXIgPGt1bWJheW84NEBhcmNvci5kZT4KCUFkZGVkIHN0dWIgZm9yIFN5bVNldFBhcmVudFdpbmRvdy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYW4gb3duZXJkcmF3biBsaXN0Ym94IHRlc3QsIHdoaWNoIGNvbmZpcm1zIHRoYXQgb24gV01fRFJBV0lURU0KCSAgcGFyZW50IHJlY2VpdmVzIGEgY2xpcGJveCBlcXVhbCB0byBhIGxpc3Rib3gncyBjbGllbnQgYXJlYS4KCS0gV01fRFJBV0lURU0gbWVzc2FnZSBjb250YWlucyAwIGluIHdwYXJhbSAoYXQgbGVhc3Qgb24gd2luMmspLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglDb3JyZWN0bHkgZW51bWVyYXRlIGV2ZGV2IGpveXN0aWNrcyB3aGVuIGVudW1lcmF0aW9uIGlzIHJlc3RyaWN0ZWQKCXdpdGggRElFREZMX0ZPUkNFRkVFREJBQ0suCgoJKiBzZXJ2ZXIvcXVldWUuYzogUmVtb3ZlZCBhIG5vIGxvbmdlciB1c2VkIHZhcmlhYmxlLgoKCSogc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvdGhyZWFkLmM6IEZpeGVkIGEgY291cGxlIG9mIGVycm9yIGNvZGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJRGV0ZWN0IGZvcmNlLWZlZWRiYWNrLWNhcGFibGUgbGludXggZXZlbnQgZGV2aWNlIGpveXN0aWNrcyBhbmQgcmV0dXJuCglESURDX0ZPUkNFRkVFREJBQ0sgd2hlbiBxdWVyaWVkIGZvciBjYXBhYmlsaXRpZXMuCgoJKiBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUNsZWFudXAgd2hpdGVzcGFjZS4KCUNvbnZlcnNpb24gZml4ZXMuCgoJKiBkbGxzL21zYWNtL3dpbmVtcDMvaW50ZXJmYWNlLmMsIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZ2xpYi5oLCBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoyMDA1LTA3LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9lcnJvci5jOiBBZGRlZCBuYW1lcyBmb3IgYSBidW5jaCBvZiBzdGF0dXMgdmFsdWVzLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBBZGRlZCBhIGZldyBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpZ25lZCB3YXJuaW5nIGZpeGVzLgoKCSogaW5jbHVkZS94bWxkb20uaWRsOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSB0eXBvcyBpbiB0aGUgaWRsIGRlZmluaXRpb25zLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCU5ldyBmdW5jdGlvbiBWZXJzaW9uSW5mbzMyX1F1ZXJ5VmFsdWUuCglNYWRlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBzZXJ2ZXIvZmQuYzoKCVJlbmFtZWQgZmQgdG8gdW5peF9mZCBpbiB0aGUgY2xvc2VkX2ZkIHN0cnVjdHVyZSB0byBtYWtlIHRoZSBjb2RlIGEKCWJpdCBjbGVhcmVyLgoKCSogaW5jbHVkZS94bWxkb20uaWRsOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBkZWZpbml0aW9uIGZvciB0aGUgSVhNTERPTUVsZW1lbnQgaW50ZXJmYWNlLgoKCSogZGxscy9rZXJuZWwvbGNmb3JtYXQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBFbnVtRGF0ZUZvcm1hdHNFeC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvd2ludmVyLmg6CglQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJVmVyUXVlcnlWYWx1ZSByZXR1cm5zIEJPT0wgbm90IERXT1JELgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mIEZJTEVfQkVHSU4uCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGluY2x1ZGUvd2lucmVnLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDb3JyZWN0IFJlZ0NyZWF0ZUtleUV4W0EvV10gcHJvdG90eXBlIHRvIG1hdGNoIHRoZSBQU0RLLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzaWduIHdhcm5pbmdzLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIC1XcG9pbnRlci1zaWduIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvbGNmb3JtYXQuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBSZWltcGxlbWVudCBFbnVtVGltZUZvcm1hdHMsIG1ha2UgaXQgd29yayBmb3IgYWxsIGF2YWlsYWJsZQoJICBsb2NhbGVzLgoJLSBBZGQgYSB0ZXN0IGZvciBFbnVtVGltZUZvcm1hdHMKCgkqIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUmV0dXJuIGFsbCBlbGVtZW50cyB3aGVuIGdldERlY2xhcmF0aW9uIGlzIGNhbGxlZCB3aXRoIHBudW1lbGVtZW50cwoJc2V0IHRvIDAuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgZm9yIHRyZWV2aWV3IGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIHN1cHBvcnQgZm9yIHRoZSB0YWIgY29udHJvbC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEEgbmFtZSBpbiBhbiBTTFRHIHR5cGVsaWIgb25seSBiZWdpbm5pbmcgd2l0aCAweGZmIGlzIHRoZSBpbmRpY2F0b3IKCSAgb2YgYW4gb2Zmc2V0LCBpbnN0ZWFkIG9mIGFueSBub24gYWxwaGEtbnVtZXJpYyBjaGFyYWN0ZXIuCgktIEFueSBkaXNwYXRjaCBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZpeGVkIHZ0YWJsZSBzaXplLCBub3QganVzdAoJICBkdWFsIG9uZXMuCgktIFdhcm4gd2hlbiBJVHlwZUluZm9fR2V0RG9jdW1lbnRhdGlvbiBmYWlscy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDbGVhbnVwIHByaW50X3ZmZmlfZGVidWcuCgoyMDA1LTA3LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWNpY2RhLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL21jaWNkYS9tY2ljZGEuYywKCSAgZGxscy9tY2ljZGEvbWNpY2RhLnNwZWMsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmUuaW5mOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJTW92ZWQgbWNpY2RhIHRvIHRoZSB0b3AtbGV2ZWwgZGxscyBkaXJlY3RvcnkuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUltcGxlbWVudGF0aW9uIGZvciBHZXRUaGVtZVBhcnRTaXplKCkgKG5vdCBlbnRpcmVseSBlcXVpdmFsZW50IHRvCgluYXRpdmUgdXh0aGVtZSwgYnV0IHNlbnNpYmx5IHVzZWFibGUpLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGFuZ2VkIHN3YXBjaGFpbnMgaGVsZCBieSB0aGUgZGV2aWNlIGZyb20gYW4gYXJyYXkgdG8gYSBsaW5rZWQKCWxpc3QuIEFsc28gcHJvdmlkZSBhIG5vdGlmaWNhdGlvbiBmdW5jdGlvbiB0aGF0IHRoYXQgdGhlIHN3YXBjaGFpbiBjYW4KCWJlIHJlbW92ZWQgd2hlbiBpdCBpcyByZWxlYXNlZC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJVGhlcmUncyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgZXZlbnQgbWFzayBpbiBYMTFEUlZfc3luY193aW5kb3dfc3R5bGUsCglpdCBuZXZlciBjaGFuZ2VzLgoKCSogZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL3FjYXAvY2FwdHVyZWdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9waW4uYzoKCVJlcGxhY2UgdGhlIElDT01fVEhJU19Gcm9tIG1hY3JvcyBieSBpbmxpbmUgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglTaW5jZSBPcGVuVGhlbWVEYXRhKCkgc2hvdWxkIHJldHVybiAwIGluIGNhc2UgdGhlbWluZyBpcyBkaXNhYmxlZAoJZ2xvYmFsbHkgb3IgZm9yIHRoZSBhcHBsaWNhdGlvbiB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoYXQgd2hlbgoJY2FsbGluZyBPcGVuVGhlbWVEYXRhKCkuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9lcnJvci5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3BlcnJvciwgbGRhcF9yZXN1bHQyZXJyb3IgYW5kIExkYXBNYXBFcnJvclRvV2luMzIuCgoJKiBkbGxzL3V4dGhlbWUvcHJvcGVydHkuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglNYWtlIEdldFRoZW1lTWFyZ2lucygpIHJldHVybiBkZWZhdWx0IHZhbHVlcyAoMCBtYXJnaW4pIGlmIHRoZQoJZnVuY3Rpb24gZG9lcyBub3Qgc3VjY2VlZC4KCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVpbXBsZW1lbnQgRW51bURhdGVGb3JtYXRzLCBtYWtlIGl0IHdvcmsgZm9yIGFsbCBhdmFpbGFibGUKCSAgbG9jYWxlcy4KCS0gQWRkIGEgdGVzdCBmb3IgRW51bURhdGVGb3JtYXRzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJlbW92ZSAzMmJpdCByZWZlcmVuY2VzL2NoZWNrcyBpbiBWRVJTSU9OX0dldEZpbGVWZXJzaW9uSW5mb18xNi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCVJlcGxhY2UgdGhlIElDT01fVEhJU19Gcm9tIG1hY3JvcyBieSBpbmxpbmUgZnVuY3Rpb25zLgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5oLCBkbGxzL29sZTMyL3N0Z19wcm9wLmM6CglSZXBsYWNlIHRoZSBfSUNPTV9USElTX0Zyb20gbWFjcm9zIGJ5IGlubGluZSBmdW5jdGlvbnMgdGhlIHdheSBpdCdzCglhbHJlYWR5IGRvbmUgaW4gc2hlbGxsaW5rLmMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJU3BsaXQgdXAgdGhlIGRyYXdpbmcgY29kZSBpbnRvIGEgc2V0IG9mIHNtYWxsZXIgZnVuY3Rpb25zIGFuZCBhbHNvCgltb3ZlZCBzb21lIGNvbW1vbiBjb21wdXRhdGlvbnMgaW50byBoZWxwZXIgZnVuY3Rpb25zLiBBbGwgdGhhdCB0bwoJZmFjaWxpdGF0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZvcnRoY29taW5nIHRoZW1pbmcgc3VwcG9ydC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBKb2hhbm5lcyBLb2NoIDxBZG1pbkBkYXJrdmIuZGU+CglGaXhlZCBwaXRjaCBiZW5kaW5nIGluIHRoZSBtaWRpIGRyaXZlci4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgd3JvbmcgY2hlY2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsCgkgIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglSZXBsYWNlIHRoZSBfSUNPTV9USElTX0Zyb20gbWFjcm9zIGJ5IGlubGluZSBmdW5jdGlvbnMgdGhlIHdheSBpdCdzCglhbHJlYWR5IGRvbmUgaW4gc2hlbGxsaW5rLmMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91c3AxMC8uY3ZzaWdub3JlLAoJICBkbGxzL3VzcDEwL01ha2VmaWxlLmluLCBkbGxzL3VzcDEwL3VzcDEwLmMsIGRsbHMvdXNwMTAvdXNwMTAuc3BlYywKCSAgaW5jbHVkZS91c3AxMC5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pc2NyaWJlIFNjcmlwdCBQcm9jZXNzb3IuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90aGVtaW5nLmM6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZGVkIHNvbWUgZ2VuZXJpYyBjb2RlIHRvIGFsbG93IHN1YmNsYXNzaW5nIChmb3IgdGhlIHB1cnBvc2Ugb2YKCXRoZW1pbmcpIG9mIHN0YW5kYXJkIGNvbnRyb2xzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbW9kdWxlLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglGaXggc29tZSB0ZXN0cyBmb3Igd2luOXggYW5kIHdpbk1FLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglSZW1vdmUgYWxsIHdhaXRfZm9yX3BvbGwgYXNzb2NpYXRlZCBzdHVmZiB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlICdmbGFnJyB0eXBlczogRkNIQVIsIEZTSE9SVCBhbmQgRkxPTkcuCgoyMDA1LTA3LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2R4b2YvZDNkeG9mX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9jbGlwcGVyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfaGFsLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3X3VzZXIuYywKCSAgZGxscy9kZHJhdy9kZXZpY2Vfb3BlbmdsLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2Rfb3BlbmdsLmMsCgkgIGRsbHMvZGRyYXcvZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2xpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9wYWxldHRlX2hhbC5jLAoJICBkbGxzL2RkcmF3L3BhbGV0dGVfbWFpbi5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfZGliLmMsCgkgIGRsbHMvZGRyYXcvc3VyZmFjZV9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfZ2FtbWEuYywKCSAgZGxscy9kZHJhdy9zdXJmYWNlX2hhbC5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfbWFpbi5jLAoJICBkbGxzL2RkcmF3L3N1cmZhY2VfdGh1bmtzLmMsIGRsbHMvZGRyYXcvc3VyZmFjZV91c2VyLmMsCgkgIGRsbHMvZGRyYXcvdGV4dHVyZS5jLCBkbGxzL2RkcmF3L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L3ZpZXdwb3J0LmMsIGluY2x1ZGUvb2JqYmFzZS5oOgoJTWFrZSBDT05TVF9WVEFCTEUgdGhlIGRlZmF1bHQgaW4gdGhlIFdpbmUgc291cmNlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJR2V0IHJpZCBvZiB0aGUgX0lDT01fVEhJUyBtYWNyb3MgYW5kIGNhbGwgdGhlIGlubGluZSBmdW5jdGlvbgoJZGlyZWN0bHkgaW5zdGVhZC4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCURpcmVjdFggdXNlcyBhIFIvWiB0cmFuc2Zvcm0gdG8gdHJhbnNsYXRlIGEgdGV4dHVyZSBidXQgdW5kZXIgT3BlbkdMIGEKCVEgdHJhbnNmb3JtIG11c3QgYmUgdXNlZCBpbnN0ZWFkLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJUHJpbnQgYSB3YXJuaW5nIHdoZW4gYSBnZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkgZG9lc24ndCBleHBvcnQKCWFueXRoaW5nIHVzZWZ1bC4KCgkqIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsIGRsbHMvd2luZWQzZC9zd2FwY2hhaW4uYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYywgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVJlbW92ZSBhIGxvYWQgb2YgSVdpbmVEM0RTdXJmYWNlICogY2FzdHMgdGhhdCBhcmUgbm8gbG9uZ2VyIHJlcXVpcmVkLgoKCSogZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCU1ha2VzIHN1cmUgYW55IGludGVybmFsIHJlZmVyZW5jZSBjb3VudGluZyBpcyBwYXNzZWQgb250byB0aGUgcGFyZW50LAoJYW55IG9iamVjdHMgcmVmZXJlbmNlZCBieSB0aGUgaW50ZXJuYWwgc3RhdGVibG9jayBhcmUgcmVsZWFzZWQgd2hlbgoJdGhlIHN0YXRlYmxvY2sgaXMgcmVsZWFzZWQgKHdlIGRvbid0IHJlZmVyZW5jZSBjb3VudCB3aGlsZSBhCglzdGF0ZWJsb2NrIGlzIHJlY29yZGluZywgc28gcmVjb3JkZWQgc3RhdGVibG9ja3MgaGF2ZSBubyByZWZlcmVuY2VzIHRvCgljbGVhbiB1cCkuCgoJKiBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsCgkgIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDkuaCwgaW5jbHVkZS9kM2R4OGNvcmUuaCwKCSAgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RtcGx1Z2luLmgsCgkgIGluY2x1ZGUvZG11c2ljYy5oLCBpbmNsdWRlL2RtdXNpY2kuaCwgaW5jbHVkZS9kbXVzaWNzLmgsCgkgIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxheTguaCwKCSAgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9keGRpYWcuaCwgaW5jbHVkZS9keGZpbGUuaCwgaW5jbHVkZS9tYXBpZGVmcy5oLAoJICBpbmNsdWRlL21hcGl1dGlsLmgsIGluY2x1ZGUvbWFwaXguaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvb2Jqc2VsLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCVVuY29tbWVudCB0aGUgdHlwZWRlZiBpbiB0aGUgREVDTEFSRV9JTlRFUkZBQ0UgbWFjcm8sIGFuZCBnZXQgcmlkIG9mCglkdXBsaWNhdGUgdHlwZWRlZnMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglVc2UgUmVsZWFzZURDIGluc3RlYWQgb2YgRGVsZXRlREMgb24gREMgaGFuZGxlLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCVJlbmFtZSBiVGV4dCB0byB3VHlwZS4KCgkqIGRsbHMvd2xkYXAzMi9pbml0LmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wcm92ZSBlcnJvciBoYW5kbGluZyBmb3IgdGhlIGluaXQgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCVRyYW5zbGF0ZSB0aGUgd2hvbGUgd3BhcmFtIHRvL2Zyb20gVW5pY29kZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYW1zdHJlYW0vLmN2c2lnbm9yZSwKCSAgZGxscy9hbXN0cmVhbS9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLCBkbGxzL2RtY29tcG9zLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1jb21wb3MvTWFrZWZpbGUuaW4sIGRsbHMvZG1pbWUvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwgZGxscy9kbWxvYWRlci8uY3ZzaWdub3JlLAoJICBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLCBkbGxzL2Rtc2NyaXB0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zY3JpcHQvTWFrZWZpbGUuaW4sIGRsbHMvZG1zdHlsZS8uY3ZzaWdub3JlLAoJICBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sIGRsbHMvZG1zeW50aC8uY3ZzaWdub3JlLAoJICBkbGxzL2Rtc3ludGgvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RwbmhwYXN0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBuaHBhc3QvTWFrZWZpbGUuaW4sIGRsbHMvZHN3YXZlLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHN3YXZlL01ha2VmaWxlLmluLCBkbGxzL2R4ZGlhZ24vLmN2c2lnbm9yZSwKCSAgZGxscy9keGRpYWduL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvLmN2c2lnbm9yZSwKCSAgZGxscy9xY2FwL01ha2VmaWxlLmluOgoJRG9uJ3QgZ2VuZXJhdGUgaW1wb3J0IGxpYnJhcmllcyBmb3IgZGxscyB0aGF0IGRvbid0IGV4cG9ydCBhbnl0aGluZy4KCgkqIGRsbHMvd2luc3Bvb2wvUnUucmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhbiBvcnRob2dyYXBoaWMgZXJyb3IgYnkgcmVwaHJhc2luZyB0aGUgbWVzc2FnZS4KCgkqIGRsbHMvd2xkYXAzMi9zZWFyY2guYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmxkYXAuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQ29ycmVjdCBwcm90b3R5cGUgZm9yIGxkYXBfc2VhcmNoX2V4dF9zLgoJSW1wcm92ZSBlcnJvciBoYW5kbGluZyBmb3IgdGhlIHNlYXJjaCBmdW5jdGlvbnMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJRm9yd2FyZCBHZXRGaWxlVmVyc2lvbkluZm9BIHRvIEdldEZpbGVWZXJzaW9uSW5mb1cuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vYmpzZWwvLmN2c2lnbm9yZSwgZGxscy9vYmpzZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2Jqc2VsL2ZhY3RvcnkuYywgZGxscy9vYmpzZWwvb2Jqc2VsLmMsIGRsbHMvb2Jqc2VsL29ianNlbC5yYywKCSAgZGxscy9vYmpzZWwvb2Jqc2VsLnNwZWMsIGRsbHMvb2Jqc2VsL29ianNlbF9wcml2YXRlLmgsCgkgIGRsbHMvb2Jqc2VsL3JlZ3N2ci5jLCBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL29ianNlbC5oOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJQWRkZWQgc3R1YnMgZm9yIG9ianNlbC5kbGwgYW5kIG9ianNlbC5oLgoKCSogZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBhIHJlZ3Jlc3Npb24gaXNzdWUgd2l0aCBwZXItYXBwIHNldHRpbmdzLgoKCSogZGxscy93aW5zcG9vbC9SdS5yYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5yYzoKCURtaXRyaWogU2ludWtvdiA8YXRsYW50aWRhREVMRVRFVEhJU0BrcmFzdS5ydT4KCUFkZGVkIFJ1c3NpYW4gcmVzb3VyY2VzLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudCByZXNvdXJjZSB0cmFja2luZywgcmVxdWlyZSBmb3IgcmVzZXQgYW5kIGV2aWN0IG1hbmFnZWQKCXJlc291cmNlcyBhbmQgcHJvdmlkZXMgZXh0cmEgc2FuaXR5IGNoZWNrcy4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglDbGVhbnVwIGFuZCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglSZXN5bmMgd2l0aCB0aGUgbGF0ZXN0IERMTHMgdGhhdCB3ZXJlIGFkZGVkIGFuZC9vciBtb3ZlZC4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBFTV9DSEFSRlJPTVBPUyBSaWNoRWRpdCBtZXNzYWdlLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUdlbmVyYXRlIGVuZGluZyBccGFyIGluIFJURiBvdXRwdXQgb2YgUmljaEVkaXQgd2hlbiBzdHJlYW1pbmcgb3V0IGEKCXdob2xlIGRvY3VtZW50LgoKCSogZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVGVzdHMgY3Jhc2ggZml4LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+Cgl3YWl0X2Zvcl9wb2xsIGNhbiBnbyBpbnRvIGFuIGluZmluaXRlIGxvb3AuIFJlbW92ZSBpdCBhbmQgcmVwbGFjZSBpdAoJd2l0aCBzbmRfcGNtX2RyYWluIHdoaWNoIGlzIG1vcmUgbGlrZWx5IHRvIGRvIHdoYXQgdGhlIG9yaWdpbmFsIGF1dGhvcgoJaW50ZW5kZWQuCgoJKiBkbGxzL3dsZGFwMzIvYmluZC5jLCBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcHJvdmUgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBiaW5kIGZ1bmN0aW9ucy4KCjIwMDUtMDctMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwNTA3MjUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDctMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIGZvciB0aGUgdXAvZG93biBjb250cm9sLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBbmRlcnNvbiBMaXphcmRvIDxhbmRlcnNvbmxpemFyZG9AeWFob28uY29tLmJyPgoJRml4ZWQgImJyb2tlbiBPcGVuR0wgc2V0dXAiIGNvbmZpZ3VyZSBjaGVjaywgd2hpY2ggdXNlZCB0byByZXBvcnQKCWZhbHNlIGVycm9ycyBvbiBzb21lIHN5c3RlbXMuCgoJKiBkbGxzL3dsZGFwMzIvaW5pdC5jLCBkbGxzL3dsZGFwMzIvc2VhcmNoLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfc2VhcmNoX2V4dCogYW5kIGxkYXBfc3RhcnRfdGxzX3MqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglVc2UgdGhlbWluZyBmb3IgdGhlIExpc3RWaWV3IG5vbi1jbGllbnQgYXJlYS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgc3VwcG9ydCBmb3IgaGVhZGVyIGNvbnRyb2xzLgoKCSogZGxscy91c2VyL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBpbnRvIGFjY291bnQgQ1NfTk9DTE9TRSB3aW5kb3cgY2xhc3Mgc3R5bGUgYW5kIFNDX0NMT1NFIHN5c3RlbQoJbWVudSBpdGVtIHN0YXRlIHdoaWxlIGFkZGluZyBNREkgc3lzdGVtIG1lbnUgYnV0dG9ucyBhbmQgZ2VuZXJhdGluZwoJV01fU1lTQ09NTUFORCBtZXNzYWdlcy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUYWtlIGludG8gYWNjb3VudCBDU19OT0NMT1NFIHdpbmRvdyBjbGFzcyBzdHlsZSBhbmQgU0NfQ0xPU0Ugc3lzdGVtCgltZW51IGl0ZW0gc3RhdGUgd2hpbGUgaGFuZGxpbmcgV01fWDExRFJWX0RFTEVURV9XSU5ET1cgcmVxdWVzdC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9semV4cGFuZC5jLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglNb3ZlIGFuZCBmb3J3YXJkIGx6MzIgZnVuY3Rpb25zIHRvIGtlcm5lbDMyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCB0aHJlYWQgdGVzdHMgb24gV2luTUUuCgoyMDA1LTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3N0cmluZy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJU2tpcCB0ZXN0IHRoYXQgY3Jhc2hlcyBvbiBXMksvV2luWFAvVzJLLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuaDoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSBtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCBhIG5ldyBzZXR0aW5ncyBmb3IgdmJvIHN1cHBvcnQKCS0gdXNlIGEgc3RydWN0IHRvIGhhbmRsZSB3aW5lZDNkIHNldHRpbmdzCgktIHByZXBhcmUgVkJPIHVzaW5nIHNvbWUgYWJzdHJhY3Rpb24gQVBJcwoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCU9wZW5UaGVtZURhdGEoKSBub3cgYWx3YXlzIHNldHMgdGhlIHdpbmRvdyB0aGVtZSB0byB0aGUgaGFuZGxlCglyZXR1cm5lZCAoZXZlbiBpZiB0aGF0IGlzIE5VTEwpIC0gcHJldmlvdXNseSwgaXQgY291bGQgaGFwcGVuIHRoYXQKCXdoZW4gbm8gdGhlbWUgd2FzIGFjdGl2ZSBvciB0aGUgdGhlbWUgZGF0YSBjb3VsZCBub3QgYmUgb3BlbmVkIHRoYXQKCXRoZSB3aW5kb3cgdGhlbWUgcmVtYWluZWQgYmVjYW1lIHRoZW4tZGFuZ2xpbmcgKGFuZCBoZW5jZSBzdWJzZXF1ZW50CgljYWxscyB0byBHZXRXaW5kb3dUaGVtZSgpIHdvdWxkIHJldHVybiB0aGF0IGJvZ3VzIHRoZW1lKS4KCgkqIGRsbHMvd2xkYXAzMi9iaW5kLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfc2FzbF9iaW5kKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9kaWIuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggbWlzc2luZy1kZWNsYXJhdGlvbnMgd2FybmluZ3MuCgoJKiBpbmNsdWRlL29kYmNpbnN0Lmg6IE1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglBZGRlZCBzb21lIGRlZmluaXRpb25zIHRvIG9kYmNpbnN0LmguCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUdldFRoZW1lQmFja2dyb3VuZENvbnRlbnRSZWN0KCkgZG9lcyBub3QgdXNlIHRoZSBjb250ZW50IG1hcmdpbnMKCWFsb25lLCBpdCBhbHNvIGZhbGxzIGJhY2sgdG8gdGhlIGJvcmRlciBzaXplIG9yIHNpemluZyBtYXJnaW5zLCBhbmQgaWYKCWl0IGNhbid0IGZpbmQgYW55IHBvc3NpYmxlIG1hcmdpbnMgYXQgYWxsLCBpdCByZXR1cm5zIHRoZSBvcmlnaW5hbAoJcmVjdGFuZ2xlLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9wYXJzZXIucG06CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNYWtlIHdpbmFwaV9jaGVjayBsZWFybiB0byBwYXJzZSBzb21lIGNvbnN0cnVjdHMgd2l0aCBzb21lIHJhcmVseSB1c2VkCglrZXl3b3Jkcy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbDMyX3Rlc3QuaCwgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZXhlYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCBzdGFydGVkIHRlc3RpbmcgU2hlbGxFeGVjdXRlKCkuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwgZGxscy9yaWNoZWQyMC9wYWludC5jLAoJICBkbGxzL3JpY2hlZDIwL3N0eWxlLmM6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgRU1fR0VUWk9PTSBhbmQgRU1fU0VUWk9PTSBSaWNoRWRpdCBtZXNzYWdlIGhhbmRsZXJzLgoKCSogZGxscy9jb21tZGxnL2NkbGcxNi5oLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvdG9vbGhlbHAuaCwgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9tc2kuaCwKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luaW5ldC5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIG11bHRpcGxlIGRlY2xhcmF0aW9ucyBvZiB0aGUgc2FtZSBmdW5jdGlvbiwga2VlcGluZyB0aGUgcHVibGljCglvbmUgYXMgcmVmZXJlbmNlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZTJfMTYuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgSXNWYWxpZEludGVyZmFjZTE2LCBDb01lbUFsbG9jLgoJQWRkZWQgZGVidWcgdG8gSEdMT0JBTExvY2tCeXRlczE2X1F1ZXJ5SW50ZXJmYWNlLgoKCSogZGxscy9udGRsbC9maWxlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSBwcm9wZXIgbWFjcm8gZm9yIHVzaW5nIElPS2l0IGluY2x1ZGVzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9wYXJzZXIucG06CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgb2xkIHN0dWZmIGZyb20gd2luYXBpX2NoZWNrLgoKMjAwNS0wNy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBsZGFwX3NlYXJjaF9zIHByb3RvdHlwZXMgKHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjaykuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDYWxsIFNldEJrTW9kZSB3aXRoIHRoZSBjb3JyZWN0IHZhbHVlIGZyb20gdGhlIE5NVEJDVVNUT01EUkFXCgkgIHN0cnVjdHVyZS4KCS0gRG9uJ3QgZmlsbCB0aGUgTk1UQkNVU1RPTURSQVcgc3RydWN0dXJlIGluIGFnYWluIGZvcgoJICBDRERTX1BPU1RQQUlOVC4KCS0gUmVtb3ZlIHJlZHVuZGFudCBiQnRuVHJhbnNwcm50IHZhbHVlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSGVpZ2h0IGlzIG5vdyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBudW1iZXIgb2Ygcm93cywgbm90IG9uIHRoZQoJICBib3VuZGluZyByZWN0LgoJLSBPbmx5IGNhbGwgQ2FsY1Rvb2xiYXIgaW4gQXV0b1NpemUgaWYgaXQgaGFzIFRCU1RZTEVfV1JBUEFCTEUgb3IKCSAgVEJTVFlMRV9FWF9VTkRPQzEgc2V0LgoJLSBSZW1vdmUgYSBiYWQgdGVzdCBpbiBTZXRCdXR0b25XaWR0aCB0aGF0IGZpeGVzIGEgcmVncmVzc2lvbiBmcm9tIHRoZQoJICBhYm92ZSBjaGFuZ2UgaW4gSUUuCgktIFJlbW92ZSB1bm5lY2Vzc2FyeSBuSGVpZ2h0IGRhdGEuCgktIFJlbW92ZSBkdXBsaWNhdGVkIGNvZGUgaW4gU2l6ZSBieSBjYWxsaW5nIEF1dG9TaXplLgoJLSBSZW1vdmUgdW5uZWNlc3NhcnkgYkF1dG9TaXplIHZhbHVlIGJlY2F1c2UgU2V0V2luZG93UG9zIGRvZXNuJ3QKCSAgZ2VuZXJhdGUgV01fU0laRSB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gb24gYm90aCBXaW5kb3dzIGFuZAoJICBXaW5lLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRCU1RBVEVfSU5ERVRFUk1JTkFURSBvbmx5IHRha2VzIGVmZmVjdCBpZiB0aGUgYnV0dG9uIGlzIGVuYWJsZWQsCglvdGhlcndpc2UgaXQgc2hvdWxkIGp1c3QgYXBwZWFyIGxpa2UgYW55IG90aGVyIGRpc2FibGVkIGJ1dHRvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglOYXRpdmUgYXV0b3NpemVzIG9uIGluc2VydGluZy9hZGRpbmcgYnV0dG9ucywgc28gd2Ugc2hvdWxkIHRvby4KCgkqIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9udGRsbC9yZWxheS5jOgoJQWRkZWQgc21hbGwgYXNzZW1ibHkgd3JhcHBlciB0byBjYWxsIGVudHJ5IHBvaW50cyB3aXRob3V0IGhhdmluZyB0bwoJd29ycnkgYWJvdXQgdGhlaXIgY2FsbGluZyBjb252ZW50aW9uLgoKCSogZGxscy93b3czMi93b3dfbWFpbi5jLCBpbmNsdWRlL3dvd250MzIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHdlYWsgc29tZSBwcm90b3R5cGVzIHRvIGJlIGNsb3NlciB0byB0aGUgUFNESy4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHdpbjMyLmFwaSB0byBtYXRjaCB0aGUgY3VycmVudCBzb3VyY2VzLgoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVc2UgY3VycmVudCBwcm9jZXNzIGlmIGFzc2lnbmVkIHByb2Nlc3MgY2Fubm90IGJlIG9wZW5lZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUaGUgSXNWYWxpZEltYWdlTGlzdCB0ZXN0IGlzIG5vdCBuZWVkZWQgYmVjYXVzZSBpZiBpdCBpc24ndCBhIHZhbGlkCglpbWFnZSBsaXN0IHdlIHdpbGwgaGF2ZSBzZXQgdGhlIGJpdG1hcCB3aWR0aCBhbmQgaGVpZ2h0IHRvIDEgYW5kIGl0Cglkb2VzIHRoZSB3cm9uZyB0aGluZyB3aGVuIG5vIGJ1dHRvbnMgYXJlIHByZXNlbnQuCgoJKiBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIExEQVBDb250cm9sIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3VzZXIvd2lucG9zLmM6CglTdG9yZSB0aGUgU3lzSVAgcHJvcGVydHkgdXNpbmcgYSBzdHJpbmcgdG8gYXZvaWQgdHJvdWJsZSB3aXRoIDE2LWJpdAoJYXBwcyB0aGF0IGRvbid0IGV4cGVjdCBhbiBhdG9tLgoKCSogZGxscy91c2VyL3Byb3BlcnR5LmM6CglGaXhlZCBnZXRfd2luZG93X3Byb3BlcnRpZXMgdG8gY29ycmVjdGx5IHNwZWNpZnkgdGhlIG91dHB1dCBidWZmZXIgaW4KCXRoZSBzZXJ2ZXIgcmVxdWVzdCAoc3BvdHRlZCBieSBNYXJjdXMgTWVpc3NuZXIpLgoKCSogZGxscy9zZXR1cGFwaS9wYXJzZXIuYzoKCVByZXNlcnZlIHRoZSBzcGFjZXMgYmVmb3JlIGFuIG9wZW5pbmcgcXVvdGUgaW4gdGhlIG1pZGRsZSBvZiBhIHRva2VuCgkocmVwb3J0ZWQgYnkgTWF0dGhldyBEYXZpc29uKS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL29sZTJfMTYuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIE9sZVNldE1lbnVEZXNjcmlwdG9yMTYgc3R1Yi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglPbGVJbml0aWFsaXplV09XIGdldHMgMiBhcmd1bWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIGNhbGN1bGF0ZWQgYnV0dG9uIGhlaWdodCBzaG91bGQgaW5jbHVkZSB0aGUgdGV4dCBoZWlnaHQgd2hlbiBubwoJYnV0dG9ucyBhcmUgcHJlc2VudC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRoZSB1bmRvY3VtZW50ZWQgU3RhcnREb2NEbGdbQXxXXS4gIFRoZXNlIHdpbGwgYmUgdXNlZCBieQoJU3RhcnREb2MuCgoJKiBkbGxzL21zaS9hcHBzZWFyY2guYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJhaWwgb3V0IGlmIHRoZSByZWcga2V5IGlzIGVtcHR5LiBUaGlzIHByZXZlbnRzIHVzIGZyb20gd3JpdGluZwoJZ2FyYmFnZSB0byB0aGUgcHJvcGVydHkgdGFibGUuCgoJKiBkbGxzL3JpY2hlZDIwL3J1bi5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgRU1fR0VUQ0hBUkZPUk1BVCBmb3Igc2VsZWN0aW9uIGNvbnRhaW5pbmcgYSBzaW5nbGUgY2hhcmFjdGVyLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGFuIG9mZi1ieS1vbmUgZXJyb3IgaW4gRU1fU1RSRUFNT1VUIGhhbmRsZXIgZm9yIG5vbi1Vbmljb2RlCglwbGFpbiB0ZXh0IG91dHB1dC4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaW4gcHJpbWl0aXZlQ29udmVydFRvU3RyaWRlZERhdGEoKS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBzb21lIG1pc3NpbmcgYnV0IHVzZWZ1bCBpdGVtcyB0byB0aGUgVE9ETyBsaXN0LgoKCSogZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CgkxNmJpdCBDT00gaW50ZXJmYWNlcyBhcmUgY2RlY2wsIG5vdCBXSU5BUEkuCgoJKiBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gY2xlYW51cCB3aW5lZDNkIHNldHRpbmdzIGluaXQgKG5vdyBjbG9zaW5nIG9wZW5lZCByZWdpc3RyeSBrZXlzKQoJLSBzdXBwb3J0IHBlciBhcHBsaWNhdGlvbiBzZXR0aW5ncwoKCSogbGlicy91bmljb2RlL3djdG9tYi5jOgoJRmFzdGVyIGltcGxlbWVudGF0aW9uIG9mIHdjc3RvbWJzIHRoYXQgaGFuZGxlcyBvdmVybGFwcGluZyBidWZmZXJzCglwcm9wZXJseSAoYmFzZWQgb24gYSBwYXRjaCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMvd293MzIvd293MzIuc3BlYywgZGxscy93b3czMi93b3dfbWFpbi5jOgoJV2UgY2Fubm90IHVzZSBmb3J3YXJkcyBhbnltb3JlIG5vdyB0aGF0IGtlcm5lbCBmdW5jdGlvbnMgYXJlIG9ubHkKCWV4cG9ydGVkIGJ5IG9yZGluYWwgKHJlcG9ydGVkIGJ5IE1hcmN1cyBNZWlzc25lcikuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9tb2R1bGUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglDb3JyZWN0IGRpbnB1dCBoYW5kbGluZyBvZiBzbGlkZXJzIGFuZCBub24temVyby1iYXNlZCBheGVzIHRocm91Z2ggdGhlCglsaW51eCBpbnB1dCBzeXN0ZW0uCgoJKiBkbGxzL3gxMWRydi9vcGVuZ2wuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWxsb3cgcnVubmluZyBvcGVuZ2wgYW5kIERpcmVjdFggYXBwbGljYXRpb25zIHdpdGhvdXQgc3RlbmNpbCBzdXBwb3J0LAoJYW4gZWFybGllciBwYXRjaCBhc3N1bWVkIHRoYXQgc3RlbmNpbCBzdXBwb3J0IHdhcyBhdmFpbGFibGUsIGJ1dCBpdAoJaXNuJ3QgaW4gYWxsIGNhc2VzLgoKCSogaW5jbHVkZS9zaGVsbGFwaS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbWlzc2luZyBTRUVfTUFTS18qIGZsYWdzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB0aGUgdW5pc3RkLmggaW5jbHVkZSBjb25kaXRpb25hbC4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgTmRyVmFyeWluZ0FycmF5VW5tYXJzaGFsbCBwcm90b3R5cGUgKHJlcG9ydGVkIGJ5Cgl3aW5hcGlfY2hlY2spLgoKCSogZGxscy9vbGUzMi9pZnMuaCwgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCTE2Yml0IGludGVyZmFjZXMgYXJlIGNkZWNsLCBzbyBkcm9wIHRoZSBXSU5BUEkuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQ29udmVydCBsb25nIHRvIHNob3J0IHBhdGggaW4gR2V0TW9kdWxlRmlsZU5hbWUxNi4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL3NlYXJjaC5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3NlYXJjaCogZnVuY3Rpb25zLgoKMjAwNS0wNy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmMsIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIHRvb2xzL3dpZGwvcGFyc2VyLnk6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJQ2hhbmdlIHNvbWUgY2hhciogdG8gY29uc3QgY2hhciogdG8gZml4IHdhcm5pZ25zLgoKCSogdG9vbHMvd2luZWR1bXAvbGUuYywgdG9vbHMvd2luZWR1bXAvbWluaWR1bXAuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSAtV3NpZ24tY29tcGFyZSB3YXJuaW5ncy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBzb21lIHVzZWZ1bCBUUkFDRXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9taWRpbWFwLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy9taWRpbWFwL21pZGltYXAuYywKCSAgZGxscy9taWRpbWFwL21pZGltYXAuc3BlYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCU1vdmVkIG1pZGltYXAgdG8gdGhlIHRvcC1sZXZlbCBkbGxzIGRpcmVjdG9yeS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBbGxvdyBOVUxMIHBhcmFtZXRlciBmb3IgV01fU0VUVEVYVCBpbiBSaWNoRWRpdC4KCgkqIGRsbHMva2VybmVsL3JlbGF5MTYuYzoKCVJlZ2lzdGVyIGZ1bmN0aW9ucyB3aXRoIG5vIGFyZ3VtZW50cyBzaG91bGQgc3RpbGwgYmUgY2FsbGVkIGFzIHN0ZGNhbGwKCWJlY2F1c2Ugb2YgdGhlIGV4dHJhIENPTlRFWFQgYXJnLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvaW5pdC5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2luaXQqIGFuZCBsZGFwX29wZW4qIGZ1bmN0aW9ucy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBFTV9MSU5FTEVOR1RIIFJpY2hFZGl0IG1lc3NhZ2UuCgoJKiBkbGxzL3dsZGFwMzIvd2xkYXAzMi5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIHN0cmluZyBhcnJheXMgaW50byBkaWZmZXJlbnQKCWVuY29kaW5ncy4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDb3JyZWN0IGEgcHJvYmxlbSB3aXRoIHRoZSB3YXkgdGhhdCBGVkYgdmVydGV4IGFycmF5cyBjb250YWluaW5nCglibGVuZHMgb3Igb3J0aG9ncmFwaGljIGlzIGNhbGN1bGF0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCVJldHVybiBhdHRyaWJ1dGVzIGZvciB0aGUgY29ycmVjdCBmaWxlIGluIHRoZSB1bml4ZnMgUGFyc2VEaXNwbGF5TmFtZS4KCgkqIGRsbHMvbXN2Y3J0ZC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnRkL2RlYnVnLmMsCgkgIGRsbHMvbXN2Y3J0ZC90ZXN0cy9kZWJ1Zy5jLCBpbmNsdWRlL21zdmNydC9jcnRkYmcuaDoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCS0gRGVjbGFyZSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMgaW5zaWRlICNpZm5kZWYgX0RFQlVHIGJsb2NrLgoJLSBNYWtlIE1TVkNSVERfb3BlcmF0b3JfbmV3X2RiZyByZWNvZ25pemUgdHlwZXMgb2YgbWVtb3J5IGJsb2Nrcy4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsIGRsbHMvcmljaGVkMjAvcGFyYS5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLAoJICBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIGVtdWxhdGlvbiBvZiBSaWNoRWRpdCAxLjAgYmVoYXZpb3VyIHdoZW4gdGhlIDEuMCB3aW5kb3cgY2xhc3MgaXMKCWJlaW5nIHVzZWQuIFRoaXMgZW11bGF0aW9uIChpbnRyb2R1Y2VkIGluIE0kIFJpY2hFZGl0IDMuMCkgY291bnRzCglwYXJhZ3JhcGggZW5kaW5ncyBhcyAyIGNoYXJhY3RlcnMgKENSK0xGKSBpbnN0ZWFkIG9mIDEgKENSKS4KCgkqIGluY2x1ZGUvbXNodG1oc3QuaWRsOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCURlZmluZSB0aGUgRE9DSE9TVFVJREJMQ0xLIGVudW1lcmF0aW9uLgoKCSogZGxscy93aW5lZDNkL2RyYXdwcmltLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUZpeGVkIHJlZ3Jlc3Npb24gdGhhdCBvY2N1cnJlZCBiZWNhdXNlIGNoYW5nZXMgdG8gdGV4dHVyZSBsb2FkaW5nIHdlcmUKCWNvbW1pdHRlZCBiZWZvcmUgY2hhbmdlcyB0byB0ZXh0dXJlcyBhbmQgc3RhdGVzIHRvIHN1cHBvcnQgdGhlIGNoYW5nZQoJd2VyZSBjb21taXR0ZWQuCgoJKiBkbGxzL21zaS9maWxlcy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIFNPVVJDRURJUiBpbnN0ZWFkIG9mIFBhY2thZ2VQYXRoLiBCZWNhdXNlIHRoZSBQYWNrYWdlUGF0aCBtYXkgYmUKCWxvY2FsLCB3aGlsZSBTT1VSQ0VESVIgaXMgbW9yZSBwcm9wZXIgYW5kIHdpbGwgYmUgYSBmdWxsIGRpcmVjdG9yeS4KCjIwMDUtMDctMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGRvbGUyLnRsYi8uY3ZzaWdub3JlLCBkbGxzL3N0ZG9sZTIudGxiL01ha2VmaWxlLmluLAoJICBkbGxzL3N0ZG9sZTIudGxiL3JzcmMucmMsIGRsbHMvc3Rkb2xlMi50bGIvc3RkX29sZV92Mi5pZGwsCgkgIGRsbHMvc3Rkb2xlMi50bGIvc3Rkb2xlMi50bGIuc3BlYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc3Rkb2xlMi50bGIuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUxvb2t1cCB0aGUgcG9ydCBpbiB0aGUgc3Bvb2xlciByZWdpc3RyeSBrZXkgYW5kIG1hcCBpdCB0byBhIHVuaXgKCWZpbGVuYW1lIG9yIGEgcGlwZSBsaWtlIE9wZW5Kb2IxNiBkb2VzLgoKCSogTWFrZS5ydWxlcy5pbiwgZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL2dlbnR0Zi5mZjoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCXR0ZiBmaWxlcyBmb3IgYml0bWFwIGZvbnRzIHNob3VsZCBiZSBnZW5lcmF0ZWQgd2l0aCBhbiBleHRlbnNpb24gb2YKCWp1c3QgIi4iIHRvIHdvcmsgYXJvdW5kIGEgcXVpcmsgaW4gZm9udGZvcmdlICh3aXRoIHRoYW5rcyB0byBHZW9yZ2UKCVdpbGxpYW1zIGZvciBoZWxwaW5nIG1lIGZpeCB0aGlzKS4KCgkqIGRsbHMvd2xkYXAzMi9iaW5kLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfc2ltcGxlX2JpbmQqIGFuZCBsZGFwX3VuYmluZCogZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIElQZXJzaXN0Rm9sZGVyMyBpbnRlcmZhY2UuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy91c2VyL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsCgkgIGluY2x1ZGUvY3Vyc29yaWNvbi5oOgoJR2V0IHJpZCBvZiBjdXJzb3JpY29uLmguCgoJKiBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhY2sgYXJvdW5kIGJyb2tlbiBzdGF0ZSBtYW5hZ2VtZW50IHNvIEluc3RhbGxTaGllbGQgd29ya3MuCgoJKiBwcm9ncmFtcy93aW5oZWxwL0VuLnJjOiBEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCUNoYW5nZWQgd2luaGVscCBmaWxlLT5leGl0IGFjY2VsZXJhdG9yIGtleSBmcm9tICJlIiB0byAieCIuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZCB0ZXN0cyBmb3IgVmVyUXVlcnlWYWx1ZVtBV10uCglEb24ndCBjb252ZXJ0IHRoZSBzdHJ1Y3QgdG8gYSB3aW4xNiBvbmUgaW4gR2V0RmlsZVZlcnNpb25JbmZvQS4KCUNvbnZlcnQgdGhlIHN0cnVjdCB0byB3aW4xNiBpbiBWZXJRdWVyeVZhbHVlQSAoZm9yIG5vdykuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU9ubHkgaW5pdGlhbGl6ZSBzaGVsbCBmb2xkZXJzIHZpYSB0aGUgSVBlcnNpc3RGb2xkZXIzIGludGVyZmFjZSBpbgoJU0hFTEwzMl9Db0NyZWF0ZUluaXRTRiBpZiB0aGUgcGlkbCB3aGljaCBzcGVjaWZpZXMgdGhlIGNoaWxkIGlzIG9mCgl0eXBlICdGb2xkZXInLiBPdGhlcndpc2UgZmFsbCBiYWNrIHRvIElQZXJzaXN0Rm9sZGVyLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgaW5jbHVkZS9yaWNoZWRpdC5oOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglCYXNpYyBoYW5kbGluZyBvZiBFTV9TRVRURVhURVguCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IElPQ1RMX0NEUk9NX1JBV19SRUFEIGlvY3RsLgoKMjAwNS0wNy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL2JpbmQuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5oLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9iaW5kKiBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggVlRfQllSRUZ8VlRfVU5LTk9XTiByZXR1cm4gdmFsdWVzIGJ5IGNvbXBhcmluZyB0aGUgY29ycmVjdCB2YWx1ZQoJICB3aXRoIFZUX1VOS05PV04gYW5kIFZUX0RJU1BBVENILgoJLSBCZXR0ZXIgdHJhY2luZy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gRElTUF9FX0VYQ0VQVElPTiBmcm9tIElUeXBlSW5mb19JbnZva2Ugb24gYW4gZXJyb3IgaW4gdGhlCgljYWxsZWQgZnVuY3Rpb24uCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSVJwY1N0dWJCdWZmZXJfRGlzY29ubmVjdCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgoJLSBSZWxlYXNlIFR5cGVMaWIgd2hlbiBmcmVlaW5nIHN0dWIgYnVmZmVyLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWx3YXlzIHF1ZXJ5IGZvciB0aGUgY29ycmVjdCBzdHViIGludGVyZmFjZSwgb3RoZXJ3aXNlIHdlIHdpbGwgYmUKCSAgcG9pbnRpbmcgdG8gdGhlIGNvbXBsZXRlbHkgd3Jvbmcgb2JqZWN0IHdoZW4gYSBwcm94eSBkb2VzIGEKCSAgcXVlcnlpbnRlcmZhY2UuCgktIFJlbW92ZSBhc3N1bXB0aW9uIHRoYXQgdGhlIHN0dWIgYnVmZmVyIHdpbGwgaGFuZGxlIHRoZSBsaWZldGltZSBvZgoJICB0aGUgb2JqZWN0LgoKCSogc2VydmVyL2NsYXNzLmM6CglDcmVhdGUgdGhlIGRlc2t0b3AgY2xhc3Mgd2hlbiBuZWVkZWQgd2l0aG91dCByZXF1aXJpbmcgYSBjbGllbnQKCXJlcXVlc3QuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3JlZ3N2ci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWN0aXZhdGUgSVR5cGVMaWIsIElUeXBlSW5mbyBhbmQgSUVudW1WQVJJQU5UIE1hcnNoYWxlcnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIFJlZ2lzdGVyVHlwZUxpYiBoYWNrLgoKCSogZGxscy9vbGUzMi9vbGVwcm94eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYXJzaGFsIHJldHVybiB2YWx1ZSBmcm9tIElSZW1Vbmtub3duX1JlbVF1ZXJ5SW50ZXJmYWNlLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggY29uZnVzaW9uIGJldHdlZW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYW5kIG51bWJlciBvZiBieXRlcyBpbgoJdW5tYXJzaGFsaW5nIEJTVFJzLiBDb252ZXJ0IGl0IGFsbCB0byBjaGFyYWN0ZXJzIGZvciBjb25zaXN0ZW5jeSB3aXRoCgl0aGUgQlNUUl9Vc2VyKiByb3V0aW5lcy4KCgkqIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbGVuY2Ugbm93IG5vaXN5IGVycm9yIG1lc3NhZ2VzIGNhdXNlZCBieSBjaGFuZ2VzIGluIHRoZSB3YXkgd2UgY2FsbAoJaXBpZF90b19zdHVibWFuYWdlci4gTW92ZSB0aGUgZXJyb3IgbWVzc2FnZSB0byB0aGUgb25lIHBsYWNlIGl0IGlzCgluZWVkZWQuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJU2F2ZSB0aGUgc2NvcGUgd2luZG93IGZvciBtb3VzZSBldmVudHMgYmVmb3JlIG92ZXJ3cml0aW5nIGl0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgVlRfQllSRUZ8VlRfSTQgaW4gX2NvcHlfYXJnLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYXJzaGFsIGFuZCB1bm1hcnNoYWwgVEtJTkRfRU5VTSBhbmQgVEtJTkRfQUxJQVMuCgoJKiBkbGxzL29sZTMyL29sZXByb3h5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2Ugc2hvdWxkIGJlIHN0YXJ0aW5nIHdpdGggMSByZWZlcmVuY2UuCgktIElScGNTdHViQnVmZmVyX0Rpc2Nvbm5lY3QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KCgkqIGRsbHMvcnBjcnQ0L2NzdHViLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUlScGNTdHViQnVmZmVyX0Rpc2Nvbm5lY3QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KCgkqIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQnktcGFzcyB0aGUgUlBDIHJ1bnRpbWUgaWYgcG9zc2libGUgd2hlbiBjYWxsaW5nIGFuIFNUQSBieSBwb3N0aW5nIGEKCW1lc3NhZ2UgZGlyZWN0bHkgdG8gdGhlIGFwYXJ0bWVudCB3aW5kb3cgZm9yIGl0IHRvIHByb2Nlc3MuIEZpeGVzIGEKCWRlYWRsb2NrIGluIEluc3RhbGxTaGllbGQgY2F1c2VkIGJ5IGhhdmluZyB0byBjcmVhdGUgYSB0aHJlYWQgd2hlbgoJZnJlZWluZyBhbiBvYmplY3QgdGhhdCBjb21lcyBmcm9tIGFuIFNUQSBhcGFydG1lbnQuIEFkZGVkIHRlc3RzIHRoYXQKCWZhaWwgd2l0aG91dCB0aGlzIGZpeC4KCgkqIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRGVsZXRlIHRoZSBzdHViIG1hbmFnZXIgb3V0c2lkZSBvZiB0aGUgYXBhcnRtZW50IGNyaXRpY2FsIHNlY3Rpb24KCWJlY2F1c2UgdGhlIGRlbGV0aW9uIG1heSByZXF1aXJlIHRoZSBvYmplY3QgdG8gcmUtZW50ZXIgdGhlCglhcGFydG1lbnQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50ZXIgaGFuZGxlcyByZWZlcnJpbmcgdG8gdGhlIHNhbWUgcHJpbnRlciBzaG91bGQgaGF2ZSB0aGUgc2FtZSBqb2IKCXF1ZXVlLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3dpbi5jOgoJSW5pdGlhbGl6ZSB0aGUgdmFyaW91cyBtZW51IGdsb2JhbCB2YXJpYWJsZXMgb24gZGVtYW5kIGluc3RlYWQgb2YgYXQKCXN0YXJ0dXAgdGltZS4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIHN1cHBvcnQgZm9yIGR1bXBpbmcgNjRiaXQgUEUgZmlsZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL3dpbm50Lmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRGVmaW5lIDY0Yml0IFBFIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCURvbid0IHNldCB3aW4gZ3Jhdml0eSwgdGhlIGRlZmF1bHQgc2hvdWxkIHdvcmsgZmluZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJV2hlbiB1c2luZyBQQVRITU9ERV9VTklYLCBhbGwgZmlsZXMgYXJlIGluIHRoZSBmaWxlIHN5c3RlbS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbml0aWFsaXplIFJlZ2lzdGVyZWRDbGFzcyBwcm9wZXJseSBpbiBDb1JlZ2lzdGVyQ2xhc3NPYmplY3QgdG8KCXByZXZlbnQgY3Jhc2ggaW4gQ29SZXZva2VDbGFzc09iamVjdCB3aGVuIGFjY2Vzc2luZyAodW5pbml0aWFsaXplZCkKCXBNYXJzaGFsbGVkRGF0YS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50IHRoZSB1c2Ugb2YgUEJ1ZmZlcnMgZm9yIG9mZnNjcmVlbiB0ZXh0dXJlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJRml4IEdJRiBwYWxldHRlIGFsbG9jYXRpb24sIGJ5IHJlbHlpbmcgb24gQ29sb3JDb3VudCBpbnN0ZWFkIG9mCglTQ29sb3JSZXNvbHV0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJRW5zdXJlIHRoYXQgdW5kZXJmbG93aW5nIG5lZ2F0aXZlIGZsb2F0IGlzIHJlcHJlc2VudGVkIGFzIGEgcG9zaXRpdmUKCTAsIGp1c3QgYXMgbmF0aXZlIG9sZWF1dDMyLgoKMjAwNS0wNy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGVzdCB0byBzaG93IHRoYXQgdGhlIGhlaWdodCByZXR1cm5lZCBieSBHZXRUZXh0RXh0ZW50UG9pbnQgaXMgdGhlCglzYW1lIGFzIHRtSGVpZ2h0LgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvYmVyLmMsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBiZXJfKiBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIGEgYnVuY2ggbW9yZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvZGlhbG9nLmMsIGRsbHMvdXNlci9kaWFsb2cxNi5jLAoJICBkbGxzL3VzZXIvbWVudS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBjYWxscyB0byBESUFMT0dfR2V0Q2hhclNpemUgd2l0aCBjb2RlIHRvIGRvIHRoZSBlcXVpdmFsZW50Cgl1c2luZyBHZGlHZXRDaGFyRGltZW5zaW9ucy4KCgkqIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmMsCgkgIGluY2x1ZGUvd2luZ2RpLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYW5kIHRlc3QgR2RpR2V0Q2hhckRpbWVuc2lvbnMuCgoJKiBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3R0eWRydi93aW5ldHR5LmRydi5zcGVjOgoJUmVtb3ZlIHNvbWUgbm8gbG9uZ2VyIG5lZWRlZCBzdHViIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NsaXBib2FyZC5jLCBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jLAoJICBkbGxzL3VzZXIvZGVmd25kLmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9kcml2ZXIuYywKCSAgZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci9pbnB1dC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvbm9uY2xpZW50LmMsIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvd2luLmMsCgkgIGRsbHMvdXNlci93aW5wb3MuYzoKCUxvYWQgdGhlIFVTRVIgZHJpdmVyIG9uIGRlbWFuZCBpbnN0ZWFkIG9mIGF0IHVzZXIzMiBsb2FkIHRpbWUuCglQcm92aWRlIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gZm9yIGFsbCB0aGUgZnVuY3Rpb25zIHRvIGF2b2lkCgloYXZpbmcgdG8gY2hlY2sgZm9yIE5VTEwgZnVuY3Rpb25zIGV2ZXJ5d2hlcmUuCgoJKiBkbGxzL21zY21zL2hhbmRsZS5jLCBkbGxzL21zY21zL2ljYy5jLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwKCSAgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdHJhbnNmb3JtLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1ha2UgbGNtcyBzdXBwb3J0IGRlcGVuZCBvbiBoZWFkZXJzIF9hbmRfIGxpYnJhcmllcywgbm90IGp1c3QgdGhlCgloZWFkZXJzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGluY2x1ZGUvd2lucmVnLmg6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUltcGxlbWVudCBSZWdHZXRWYWx1ZUEvVy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlY3VyaXR5LmgsCgkgIHNlcnZlci90b2tlbi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2hhbmdlIHRoZSBkZWZhdWx0IHVzZXIgU0lEIHRvIG1hdGNoIHdoYXQgd2FzIHByZXZpb3VzbHkgcmV0dXJuZWQgYnkKCSAgTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4uCgktIEltcGxlbWVudCBUb2tlblVzZXIgZm9yIE50UXVlcnlJbmZvcm1hdGlvblRva2VuLgoJLSBBZGQgYSBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdXNlcidzIHJlZ2lzdHJ5IHBhdGggZnJvbSBhIFNJRC4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9kY2UuYywKCSAgZGxscy94MTFkcnYvc2V0dGluZ3MuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbmV4MTEuZHJ2LnNwZWM6CglGaXhlZCBhIGZldyBwcm90b3R5cGVzIGluIHRoZSBVU0VSIGRyaXZlci4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHVicyBmb3IgbW9zdCBvZiB0aGUgTkRSIG1hcnNoYWxpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBDUF9VTklYQ1AgaW5zdGVhZCBvZiBDUF9BQ1Agd2hlbiBjb252ZXJ0aW5nIHBhdGhzIChQb2ludGVkIG91dCBieQoJVHJveSBSb2xsbykuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0Sm9iLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVsZWFzZSBzaGVsbCBmb2xkZXJzIG9ubHkgaWYgdGhleSB3ZXJlIHN1Y2Nlc3NmdWxseSBhY3F1aXJlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJVGVzdCBmb3IgYmVoYXZpb3Igb2YgbmVnYXRpdmUgdW5kZXJmbG93IGZvcm1hdHRpbmcuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIGEgdGlkaWVkIHVwIElXaW5lRDNEZXZpY2VfQ29sb3JGaWxsLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRW5hYmxlZCAidGFiIiBkaWFsb2cgdGV4dHVyZSBmb3IgcHJvcGVydHkgc2hlZXQgcGFnZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVJld3JvdGUgdGhlIFJlZ0dldFZhbHVlIHRlc3RzIGZvciBSRUdfU1ogLyBSRUdfRVhQQU5EX1NaLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOgoJTG9hZCBzeXN0ZW0gbWV0cmljcyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBpbml0aWFsaXppbmcgZXZlcnl0aGluZyBhdAoJdXNlcjMyIGxvYWQgdGltZS4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLAoJICBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvb2xld25kLmMsCgkgIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgbW9yZSB0ZXN0cy4KCS0gTWFrZSB0ZXN0cyBwYXNzIHVuZGVyIFdpbmUuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci93aW4uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQWRkIHN0dWIgZm9yIFNldExheWVyZWRXaW5kb3dBdHRyaWJ1dGVzLgoKCSogaW5jbHVkZS9vZGJjaW5zdC5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzb21lIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFwcGVuZCBmaWxlbmFtZSBleHRlbnNpb24gaWYgbmVjZXNzYXJ5IGluIElTaGVsbEZvbGRlcjo6U2V0TmFtZU9mLgoKCSogbGlicy9wb3J0L2ludGVybG9ja2VkLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIHg4Nl82NCBpbnRlcmxvY2tlZCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5udC5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCURlZmluZSB4ODZfNjQgY29udGV4dC4KCgkqIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2VjdXIzMi9zZWN1cjMyLnNwZWMsCgkgIGluY2x1ZGUvbnRzZWNhcGkuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEdldFVzZXJOYW1lRXh7QSxXfSwgVHJhbnNsYXRlTmFtZXtBLFd9LAoJTHNhQ2FsbEF1dGhlbnRpY2F0aW9uUGFja2FnZSwgTHNhQ29ubmVjdFVudHJ1c3RlZCBhbmQKCUxzYURlcmVnaXN0ZXJMb2dvblByb2Nlc3MuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmMsIGluY2x1ZGUvdGFwaS5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBwb2ludGVyIHNpZ25lZG5lc3MgYW5kIG1pc3NpbmcgZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglTaWxlbmNlIHVuaW5pdGlhbGl6ZWQgd2FybmluZ3MuCgoJKiBpbmNsdWRlL21zY2F0LmgsIGluY2x1ZGUvd2luc3Bvb2wuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc29tZSAtV21pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy93c29jazMyL3NlcnZpY2UuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS9uc3BhcGkuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YnMgZm9yIEdldEFkZHJlc3NCeU5hbWV7QSxXfS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUluY2x1ZGUgdGhlIG1zaHRtbCB0ZXN0LgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbnN0YXRpb24uYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCURvbid0IHJ1biB0ZXN0cyBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IFdpbmRvd1N0YXRpb24gY2FsbHMuCgoJKiBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVNldCBzaXplIGJlZm9yZSBjYWxsaW5nIHBTZXRDb2xvclByb2ZpbGVFbGVtZW50LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggcmVnaXN0cnkgdGVzdHMgb24gV2luOTUuCgoJKiBkbGxzL3VybG1vbi91bW9uLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IG1pc3VzZSBvZiBVcmxDb21iaW5lVy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkL2NvcnJlY3QgYSBjb3VwbGUgZGVmaW5pdGlvbnMsIGFsbG93IGhhc2hpbmcgbm90aGluZy4KCgkqIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVNldCBtaXBtYXAgbGV2ZWxzIGNvcnJlY3RseSAoZXZlbiB3aXRoIEFUSSdzIGJ1Z2d5IGRyaXZlcnMpLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglEaXJ0eSB0aGUgc3VyZmFjZSAoaW5zdGVhZCBvZiB0aGUgdGV4dHVyZSkgd2hlbiBhIHJlbmRlciB0YXJnZXRzIGlzCglzZW5kIGFuZCBlbmRzY2VuZSBpcyBjYWxsZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvcnJlY3Qgc3VyZmFjZSBpcwoJdXBkYXRlZC4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVNraXAgZnV0aWxlIHRlc3RzIGlmIENvR2V0Q2xhc3NPYmplY3QgZmFpbHMuCgoyMDA1LTA3LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQ29uZmlndXJlIGNoZWNrcyBmb3IgT3BlbkxEQVAgaGVhZGVycyBhbmQgbGlicmFyaWVzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOgoJQWRkZWQgYSBidW5jaCBvZiB1dGlsaXR5IGZ1bmN0aW9ucyB0byBmYWN0b3Igb3V0IGEgbG90IG9mIHRoZSByZXBlYXRlZAoJY29kZSBpbiBTeXN0ZW1QYXJhbWV0ZXJzSW5mb1cuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIHNpZ24tY29tcGFyZSB3YXJuaW5ncyBieSBjaG9vc2luZyBjb3JyZWN0IGRhdGF0eXBlcy4KCgkqIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglBZGQgc29tZSBjb25zdHMgdG8gZml4IGRpc2NhcmQtcXVhbCB3YXJuaW5ncy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvZGVwYWdlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgaGFuZGxpbmcgb3ZlcmxhcHBlZCBidWZmZXJzIGJ5IFdpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgYSB0ZXN0LCBzcGVjaWZpY2FsbHkgZm9yIE5UL1cySy9YUC9XMkszLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglNYWtlIGRpYWxvZyB0aGVtZSB0ZXh0dXJlIHNldHRpbmcgbm9uLWdsb2JhbCAoaWUgYSBwZXItd2luZG93CglzZXR0aW5nKS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRml4ZWQgYSBkaXZpc2lvbiBieSAwIGluIHNldHVwX2xpZ2h0IHRoYXQgb2NjdXJzIHdpdGggcmFuZ2UgaXMgemVyby4KCgkqIGRsbHMvdXNlci9ub25jbGllbnQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGRyYXdpbmcgZ3JhZGllbnQgY2FwdGlvbnMuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIHVubmVjZXNzYXJ5IGNhc3RzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglTb3J0IHRoZSBTUElfKiBjb25zdGFudHMgYW5kIHJlbW92ZSBzb21lIGR1cGxpY2F0ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkIGZpbGUgdHlwZSBjb2x1bW4gaW4gZGV0YWlsZWQgc2hlbGwgdmlldy4KCU1ha2UgdGhlIG9yZGVyIG9mIHNoZWxsIHZpZXcgY29sdW1ucyAncHJlZml4LWNvbXBhdGlibGUnIHdpdGgKCXNoZmxkcl9mcy4KCURvbid0IHJlbW92ZSBmaWxlbmFtZSBleHRlbnNpb25zIGZvciBwYXRoIHBpZGxzIGluIEdldERpc3BsYXlOYW1lT2YuCgoJKiBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC92aXJ0dWFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBWSVJUVUFMX0hhbmRsZUZhdWx0IHJldHVybiBhbiBOVFNUQVRVUy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGb3J3YXJkIHNvbWUgaGVhZGVyIG5vdGlmaWNhdGlvbnMgdG8gcGFyZW50IG9mIGxpc3R2aWV3LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCVN1cHBvcnQgUFNNX0lEVE9JTkRFWC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL2ljYy5jLAoJICBkbGxzL21zY21zL2xjbXNfYXBpLmgsIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYywKCSAgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdHJhbnNmb3JtLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUxpbmsgZGlyZWN0bHkgdG8gbGlibGNtcy4KCUZpeCB0eXBvIGluIHRlc3QuCgoJKiBkbGxzL2tlcm5lbC92aXJ0dWFsLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBTSVpFX1QgdHlwZSBmb3Igc2l6ZSB2YXJpYWJsZXMgaW4gTlRETEwgd2hlbiBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0NuLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dcy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRnIucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfS28ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX05sLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QbC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUHQucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1J1LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfU3YucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1RoLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Vay5yYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCS0gU3VwcG9ydCBQU0hfV0laQVJESEFTRklOSVNIIGluIHdpemFyZHMuCgktIENvcnJlY3QgdGFiIG9yZGVyIG9mIHRoZSB3aXphcmQgYnV0dG9ucy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgd3JpdGUtc3RyaW5ncyB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglEbyBmaWxlbmFtZSBwb3N0cHJvY2Vzc2luZyBpbiBHZXREaXNwbGF5TmFtZU9mIChIaWRlIGZpbGVuYW1lCglleHRlbnNpb25zIGlmIGFwcHJvcHJpYXRlKS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBhIG1pc3NwbGFjZWQgI2lmIGluIElXaW5lRDNERGV2aWNlSW1wbF9DbGVhblJlbmRlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBhZGRpbmcgYW4gaW1hZ2UgY29weSB0aGUgZnVsbCBwcmV2aW91cyBidWZmZXIuCglJbXBsZW1lbnQgcmVwbGFjaW5nIGFuIGljb24gd2l0aCBvbmUgZnJvbSBhIHJlc291cmNlLgoKCSogaW5jbHVkZS93aW50cnVzdC5oOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkIG1pc3NpbmcgbWVtYmVyIHRvIFdJTlRSVVNUX0RBVEEgc3RydWN0LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZXR1cm4gdmFsdWUgb2YgSW50ZXJuZXRRdWVyeURhdGFBdmFpbGFibGUuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUdldCByaWQgb2YgSGVhcFZhbGlkYXRlIGFzIGl0J3Mgbm90IHByb3Blcmx5IGhhbmRsZWQgYnkgc29tZSBtZW1vcnkKCW1hbmFnZW1lbnQgdG9vbHMgKE1pY3JvcXVpbGwgZm9yIGV4YW1wbGUpLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUVuc3VyZSBtc3ZjcnQncyBpbyBibG9jayBpcyBwYXNzZWQgZG93biBmcm9tIHdjbWQncyBwYXJlbnQgcHJvY2VzcyB0bwoJY2hpbGQgcHJvY2Vzcy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCB0aGUgRW51bUVuaE1ldGFGaWxlIHRlc3RzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTZXQgdGhlIGRlZmF1bHQgZG9jIHRpdGxlIHRvIHRoYXQgb2YgV2luZG93cy4KCVBhc3MgY3VwcyB0aGUgZG9jIHRpdGxlLgoKCSogZGxscy93aW5lZDNkL3Jlc291cmNlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIEdldC9TZXQvRnJlZSBwcml2YXRlIGRhdGEgaW4gcmVzb3VyY2UuCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCVJldHVybiBUUlVTVF9FX1BST1ZJREVSX1VOS05PV04gdW50aWwgaW1wbGVtZW50ZWQuCgoyMDA1LTA3LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCVNwYWNlIGlzIHZhbGlkIGJldHdlZW4gbW9kdWxlIG5hbWUgYW5kIGVudHJ5IHBvaW50LgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGVmYXVsdCB1c2VyIHByb2Nlc3MgcGFyYW1ldGVycyB0byBudGRsbC4KCgkqIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRml4ZWQgYSBidWcgaW4gUHJlbG9hZCBjYXVzZWQgYmUgYSBtaXNzaW5nIGJyYWNlIGFyb3VuZCBhIGZvciBsb29wLAoJc2xpZ2h0bHkgaW1wcm92ZWQgdGhlIHdheSB0aGF0IGVycm9ycyBhcmUgaGFuZGxlZCBieSBwYXNzaW5nIGJhY2sgaHIKCWZyb20gc29tZSBmdW5jdGlvbiBjYWxscy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgbWlzc2luZy1kZWNsYXJhdGlvbnMgd2FybmluZ3MuCgoJKiBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIG1vcmUgdGVzdHMuCgktIE1ha2UgdGVzdHMgcGFzcyB1bmRlciBXaW5lLgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmM6IFN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggYSAtV3NpZ24tY29tcGFyZSB3YXJuaW5nLgoKCSogZGxscy9tc2h0bWwvbWFpbi5jLCBkbGxzL21zaHRtbC9tc2h0bWwuaW5mLCBpbmNsdWRlL21zaHRtbC5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgTVNIVE1MIGxpYnJhcnkgZGVjbGFyYXRpb24uCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL21haWxzbG90LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIG1haWxzbG90cyB1c2UgYXMgbXVjaCBvZiB0aGUgZGVmYXVsdCBhc3luYyBmZCBpbXBsZW1lbnRhdGlvbiBhcwoJcG9zc2libGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvdGltZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIHRoZSBzZXJ2ZXIgc3RhcnQgdGltZSB0byB0aGUgaW5pdF90aHJlYWQgcmVxdWVzdCBhbmQgZ290IHJpZCBvZgoJdGhlIGluaXRfcHJvY2VzcyByZXF1ZXN0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IEZlbGl4IE5hd290aG5pZykuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgQ29weUltYWdlIGFuZCBvdGhlciBmdW5jdGlvbnMgZmFpbGluZyBieSBub3QgYWRkaW5nIHRoZSBpY29uCglhbmQgbm90aWZ5aW5nIHRoZSBjYWxsZXIuCgoJKiBkbGxzL2dkaS9kaWIuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVsZWFzZSBEQyBpbiBlcnJvciBjb25kaXRpb24gb24gU3RyZXRjaERJQml0cy4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglEZWZpbmUgR0NNX1JJR0hUTU9VU0VEUk9QLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9ObC5yYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVwZGF0ZSB0aGUgRHV0Y2ggdHJhbnNsYXRpb25zLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYWRkaXRpb25hbCBjdXJyZW50IHByb2Nlc3MgdHJhY2tpbmcgaW4gYmFja3RyYWNlX2FsbCBhcyBpdCBjYW4KCXJlZmVyIHRvIGZyZWVkIG1lbW9yeS4KCgkqIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwKCSAgZGxscy9tc2h0bWwvb2xld25kLmMsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEJldHRlciBoYW5kbGluZyBvZiBVSSBhbmQgSW5QbGFjZSBhY3RpdmUgc3RhdGUuCgktIEltcGxlbWVudGVkIEluUGxhY2VEZWFjdGl2YXRlLgoJLSBUSElTIG1hY3JvcyBjbGVhbnVwLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglFbmNvZGUvZGVjb2RlIGNlcnRzLCB3aXRoIHRlc3RzLgoKMjAwNS0wNy0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJldHVybiB0aGUgc3RhcnR1cCBpbmZvIHNpemUgaW4gdGhlIGluaXRfdGhyZWFkIHJlcXVlc3QsIGFuZCBhbGxvY2F0ZQoJdGhlIHByb2Nlc3MgcGFyYW1ldGVycyBzdHJ1Y3R1cmUgaW4gbnRkbGwgaW5zdGVhZCBvZiBrZXJuZWwuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBhIGZldyBmb3JtYXRzIHRoYXQgd2VyZSBpbmNvcnJlY3QuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBtb3JlIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjOiBKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglVcGRhdGVkIHdpbmVjZmcgRnJlbmNoIHJlc291cmNlcy4KCgkqIHNlcnZlci9zZWN1cml0eS5oLCBzZXJ2ZXIvdG9rZW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBkZWZhdWx0IERBQ0wgaW4gdGhlIHRva2VuLgoKCSogZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2Rvd25sb2FkbWdyLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBkb3dubG9hZG1nci5pZGwuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9yZWxheS5jOgoJSW5pdGlhbGl6ZSByZWxheSBkZWJ1Z2dpbmcgZWFybGllciBvbiBub3cgdGhhdCB0aGUgcmVnaXN0cnkgaXMgbG9hZGVkCglieSB0aGUgc2VydmVyLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RyYWNlLmM6CglHZXQgcmlkIG9mIHRoZSBib290X2RvbmUgcmVxdWVzdC4KCgkqIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsIGRsbHMvd2luZWQzZC92b2x1bWUuYywKCSAgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJVGlkeSB1cCBzb21lIGNvbW1lbnRzIGFuZCBmb3JtYXR0aW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIFNldEpvYlcuCglTZXQgdGhlIGRvY3VtZW50IHRpdGxlIGluIFN0YXJ0RG9jUHJpbnRlci4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQWxyZWFkeSBpbml0aWFsaXplIHRoZSBwcm9jZXNzIGluIHRoZSBmaXJzdCBpbml0X3RocmVhZCByZXF1ZXN0CglpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBpbml0X3Byb2Nlc3MgcmVxdWVzdC4KCgkqIHNlcnZlci9oYW5kbGUuYzoKCUF2b2lkIHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdGhlcmUgaXMgbm8gaGFuZGxlIHRhYmxlLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9zb3VyY2UuYywgZGxscy9tc2kvdXBncmFkZS5jLCBpbmNsdWRlL21zaS5oOgoJVXNlIHRoZSBvZmZpY2lhbCBuYW1lcyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIGNvbnN0YW50cy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2l0c3MvaXRzcy5jLAoJICBkbGxzL2l0c3MvbW9uaWtlci5jLCBkbGxzL2l0c3Mvc3RvcmFnZS5jLCBkbGxzL3FjYXAvcGluLmgsCgkgIGRsbHMvcXVhcnR6L2VudW1maWx0ZXJzLmMsIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvcXVhcnR6L3Bpbi5oLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbnRlcmxvY2tlZCBMT05HKiBnY2Mgd2FybmluZyBmaXhlcy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dsZGFwMzIvLmN2c2lnbm9yZSwgZGxscy93bGRhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3dsZGFwMzIvbWFpbi5jLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglCZWdpbm5pbmdzIG9mIFdMREFQMzIuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IFN0ZXZlIFplbGxlcnMgPHplbGxlcnNAbWFjLmNvbT4KCUZpeGVkIGxlZnRvdmVyIGltcG9ydCB0YWJsZSBuYW1lIGluIG91dHB1dF9pbXBvcnRfdGh1bmsuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6IElnbm9yZSBoaWdoIGJpdCBvZiBzcGluIGNvdW50LgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIGJhc2ljIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0cmFja2luZyB0byB3aW5lZDNkLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5sZGFwLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZGVkIHdpbmxkYXAuaCBoZWFkZXIuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9vbGV3bmQuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglUSElTIG1hY3JvcyBjbGVhbnVwLgoKCSogZGxscy9tc2h0bWwvdmlldy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQ2FsbCBTaG93VUkgYW5kIEhpZGVVSSBpbiBVSUFjdGl2YXRlLgoKCSogZGxscy93aW5zcG9vbC9EZS5yYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJLSBBZGRlZCBHZXJtYW4gd2luc3Bvb2wgcmVzb3VyY2UgZmlsZS4KCS0gVXBkYXRlZCBHZXJtYW4gd2luZWNmZyByZXNvdXJjZSBmaWxlLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IFN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSAtV3NpZ24tY29tcGFyZSB3YXJuaW5ncy4KCjIwMDUtMDctMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2hoLy5jdnNpZ25vcmUsIHByb2dyYW1zL2hoL01ha2VmaWxlLmluLCBwcm9ncmFtcy9oaC9tYWluLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaGguZXhlLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgdGhlIGZpZWxkcyB0aGF0IGRlcGVuZHMgb24gc3RhcnR1cCBpbmZvIGZyb20gdGhlIGluaXRfcHJvY2VzcwoJcmVxdWVzdCB0byBnZXRfc3RhcnR1cF9pbmZvLgoKCSogZGxscy91c2VyL2N1cnNvcmljb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgQ1VSU09SSUNPTl9Mb2FkLgoKCSogZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJvdGggd2NzY2hyIGFuZCB3Y3NyY2hyIHNob3VsZCBiZSBhYmxlIHRvIGZpbmQgdGhlIHRlcm1pbmF0aW5nCgljaGFyYWN0ZXIuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJRml4ZWQgc3RyY2hyVyBhbmQgc3RycmNoclcgZm9yIGEgbnVsbCBjaGFyYWN0ZXIgKHNwb3R0ZWQgYnkgQXJpYwoJU3Rld2FydCkuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywgZGxscy9kcG5ldC9kcG5ldF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsCgkgIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9tb25pa2VyLmMsIGRsbHMvbWxhbmcvbWxhbmcuYywKCSAgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9uZXRhcGkzMi9uZXRiaW9zLmMsCgkgIGRsbHMvcWNhcC9jYXB0dXJlZ3JhcGguYywgZGxscy9xY2FwL2VudW1tZWRpYS5jLAoJICBkbGxzL3FjYXAvZW51bXBpbnMuYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jLCBkbGxzL3FjYXAvdmZ3Y2FwdHVyZS5jLAoJICBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywgZGxscy9xdWFydHovZW51bW1lZGlhLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1waW5zLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uaCwKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW50ZXJsb2NrZWQgTE9ORyogZ2NjIHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcndhcmQgU2V0Sm9iQSAtPiBTZXRKb2JXLgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGdXJ0aGVyIHRlc3Rpbmcgc2hvd3MgdGhhdCB3aGVuIEN1c3RvbUFjdGlvbkRhdGEgbmVlZHMgdG8gYmUgYmxhbmsgaXQKCWlzIGFuIGVtcHR5IHN0cmluZyBub3QgJyAnLgoKCSogZGxscy91c2VyL2N1cnNvcmljb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIENVUlNPUklDT05fU2ltdWxhdGVMb2FkaW5nRnJvbVJlc291cmNlVy4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vZGlmeSBDVVJTT1JJQ09OX0ZpbmRCZXN0SWNvbi9DdXJzb3IgdG8gdXNlIGVudW1lcmF0b3IgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2xpc3Rib3guYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBTZXRMYXN0RXJyb3Igb24gZXJyb3JzLgoKCSogZGxscy91c2VyL3RleHQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTdXBwb3J0IHJpZ2h0LWFsaWduZWQgdGV4dCBpbiBUYWJiZWRUZXh0T3V0LgoJLSBBZGQgZG9jdW1lbnRhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgZGlyZWN0M2QgY29uZmlndXJhdGlvbiBvbiB3aW5lY2ZnIGdyYXBoaWNzIHBhbmVsCgktIHJlc3luYyBGciBsaWJyYXJpZXMgZGlhbG9nIChiYXNlZCBvbiBFbi5yYykKCgkqIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzogVXNlIHRoZSB1bmljb2RlLmggZnVuY3Rpb25zIHdoZXJlIHBvc3NpYmxlLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIFNvdXJjZUxpc3QgZnVuY3Rpb25zIHRvIGdldCB0aGUgc291cmNlIHBhdGggaW4KCUNvbmZpZ3VyZVByb2R1Y3RFeFcuCgoJKiBkbGxzL21zaS9maWxlcy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB3b3JraW5nIHRvd2FyZCBpbnN0YWxsIG9uIGRlbWFuZCBzdXBwb3J0IHdlIG5lZWQgdG8gcmVzZXQgYWxsIHRoZQoJY29uc3RhbnQgdmFsdWVzIHNvIHRoYXQgbXVsdGlwbGUgaW5zdGFsbCBwcm9jZXNzIGRvIG5vdCBnZXQgY29uZnVzZWQKCWJ5IGxlZnRvdmVyIHZhbHVlcyBmcm9tIHRoZSBwcmV2aW91cyBpbnN0YWxsLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZGVkIFdDX1NUQVRJQy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IExCX1NFVExPQ0FMRS4KCS0gUmVtb3ZlIGluY29ycmVjdCBGSVhNRXMgZm9yIExCX1VTRVRBQlNUT1BTLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglCZXR0ZXIgdmlld3BvcnQgb3JpZ2luIGluIERyYXdUaGVtZVBhcmVudEJhY2tncm91bmQoKS4KCgkqIGRsbHMvZDNkeG9mL2QzZHhvZl9wcml2YXRlLmgsIGRsbHMvZDNkeG9mL21haW4uYywKCSAgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybG9ja2VkIExPTkcqIGdjYyB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudCBVcGRhdGVUZXh0dXJlIGFuZCBVcGRhdGVTdXJmYWNlIGluIHdpbmVkM2QuCglBbGxvdyBOVUxMIG1lbWJlcnMgb2YgV0lORUQzRFNVUkZBQ0VfREVTQyB0byBiZSBzZXQgdG8gU3VyZmFjZV9HZXREZXNjCglzbyB0aGF0IHRoZSB3aG9sZSBzdHJ1Y3R1cmUgZG9lc24ndCBoYXZlIHRvIGJlIGZpbGxlZCBqdXN0IHRvIGdldCBiYWNrCglvbmUgdmFsdWUuCgoJKiBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvRW4ucmMsCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnJjLCBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNjaGVkdWxlSm9iIGZvciAnZmlsZScgcG9ydHMuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGlzcGxheSBpY29ucyBpbiBidXR0b25zIHRoYXQgaGF2ZSB0aGVtLgoKCSogZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLAoJICBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvb2xld25kLmMsIGRsbHMvbXNodG1sL3BlcnNpc3QuYywKCSAgZGxscy9tc2h0bWwvcHJvdG9jb2wuYywgZGxscy9tc2h0bWwvc2VydmljZS5jLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIElPbGVDb21tYW5kVGFyZ2V0LgoJLSBTdG9yZSBJRG9jSG9zdFVJSGFuZGxlciBpbiBIVE1MRG9jdW1lbnQuCgktIEFjdGl2YXRlTWUgc2hvdWxkIGJlIGNhbGxlZCBldmVuIGlmIEdldENvbnRhaW5lciBmYWlsZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgY2FjaGUgY2hpbGQgcGlkbHMgaW4gVW5peEZvbGRlciwgYnV0IGNyZWF0ZSB0aGVtIG9uIHRoZSBmbHkuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gZW5jb2RlL2RlY29kZSBDRVJUX0lORk8sIHdpdGggdGVzdHMKCS0gYSBmZXcgbW9yZSB0ZXN0cyBhbmQgYnVnZml4ZXMKCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQ29ycmVjdCBib3JkZXIgcmVjdGFuZ2xlIGRyYXdpbmcuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRG9uJ3QgY3Jhc2ggaWYgTlVMTCBpcyBwYXNzZWQgYXMgdGhlIGNsYXNzIGxpc3QgdG8gT3BlblRoZW1lRGF0YSgpLgoKMjAwNS0wNy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL29sZGNvbmZpZy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUxvYWQgdGhlIEhLRVlfQ1VSUkVOVF9VU0VSIGJyYW5jaCBhdCBzZXJ2ZXIgc3RhcnR1cCB0b28uCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3NlYy5jOgoJVXNlIGFuIFNJRCBpbnN0ZWFkIG9mIHRoZSB1c2VyIG5hbWUgZm9yIHRoZSBwYXRoIG9mIHRoZQoJSEtFWV9DVVJSRU5UX1VTRVIga2V5IChiYXNlZCBvbiBhbiBvbGQgcGF0Y2ggYnkgSnVhbiBMYW5nKS4KCgkqIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF90eXBlcy5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJTW92ZSBwYXJhbWV0ZXJzIHJlbGF0aW5nIHRvIG9wZW5nbCBvbiB0aGUgc3VyZmFjZSBzdHJ1Y3R1cmUgb24gdG8gYQoJZ2xEZXNjaXB0aW9uIG1lbWJlci4KCVJlbW92ZWQgTGV2ZWwgYW5kIFRhcmdldCBmcm9tIExvYWRUZXh0dXJlLCBhbmQgcmVkdWNlZCB0aGUgZGVwZW5kZW5jeQoJb24gc3VyZmFjZS0+ZGV2aWNlLgoJRml4ZWQgYSBjb3VwbGUgb2YgY29tcGlsZXIgd2FybmluZ3MgaW4gZDNkOS4KCgkqIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSByZXNpemUgdGhlIGJ1ZmZlciBiYXNlZCBvbiBFUlJPUl9NT1JFX0RBVEEuCglBbHNvIHJlbWVtYmVyIHRvIGZyZWUgdGhlIGFsbG9jYXRlZCBidWZmZXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9tb2R1bGUuYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUJhc2ljIHRlc3RzIGZvciBMb2FkTGlicmFyeUEgYW5kIEdldFByb2NBZGRyZXNzLgoKCSogZGxscy9rZXJuZWwvbW9kdWxlLmM6CglBIE5VTEwgbW9kdWxlIGhhbmRsZSBtZWFucyAnbWFpbiBleGUnIGluIEdldFByb2NBZGRyZXNzIHRvby4KCgkqIHNlcnZlci9ob29rLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5zdGF0aW9uLmM6CglTdG9yZSB0aGUgZ2xvYmFsIGhvb2tzIHRhYmxlIGluIHRoZSBkZXNrdG9wIG9iamVjdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCURldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglQcmludGVyc19SZWdpc3RlcldpbmRvd1cgLyBQcmludGVyc19VbnJlZ2lzdGVyV2luZG93IGltcGxlbWVudGVkIGFzCglzdHViLgoJU2hvdyB0aGUgRklYTUUgaW4gUHJpbnRlcl9Mb2FkSWNvbnNXIG9ubHkgd2hlbiBuZWVkZWQuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjLCBpbmNsdWRlL2FkdnB1Yi5oOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHVicyBmb3IgRXhlY3V0ZUNhYiBhbmQgVHJhbnNsYXRlSW5mU3RyaW5nLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS91cGdyYWRlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBzdHJpbmdzIGRlZmluZWQgaW4gbXNpLmguCgoJKiBkbGxzL21zaS9zb3VyY2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgYW4gZXJyb3Igd2hlcmUgSSB3YXMgbm90IHByb3Blcmx5IGFkdmFuY2luZyBhIHBvaW50ZXIuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWwuaW5mOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBSZW1vdmUgbGljZW5jZSBoZWFkZXIuCgktIEZpeCB0eXBvcy4KCgkqIGluY2x1ZGUvbXNpLmg6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSBkdXBsaWNhdGUgcHJvdG90eXBlcyBhbmQgcmVmb3JtYXQgdGhlIFNvdXJjZUxpc3QgQVBJcyBhCgliaXQgbW9yZSB0byBmaXQgd2l0aCB0aGUgc3R5bGUgb2YgdGhlIHJlc3Qgb2YgdGhlIGZpbGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkZWQgQlNUX0hPVCwgV0NfQlVUVE9OLgoKCSogZGxscy9kaW5wdXQvdGVzdHMvam95c3RpY2suYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbmx5IHByaW50IHRoZSBqb3lzdGljayBzdGF0ZSB3aGVuIGl0IGNoYW5nZXMgc28gdGhlIHVzZXIgZG9lcyBub3QgZ2V0CgkzMDAgbGluZXMgb2YgdHJhY2VzLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYzoKCU1ha2UgR2V0S2VybmluZ1BhaXJzIGFuIGFsaWFzIGZvciBHZXRLZXJuaW5nUGFpcnNBLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50ZWQgYmFzaWMgbm9uLXBvd2VyIDIgdGV4dHVyZSBpbiB3aW5lZDNkLgoJQWxzbyBmaXhlZCBhIHR5cG8gaW4gZHJhd3ByaW0gdGhhdCB3YXMgY2F1c2luZyB2ZXJ0ZXggZGVjbGFyYXRpb25zIHRvCgljcmFzaC4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvYXRsL3JlZ2lzdHJhci5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLCBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybG9ja2VkIExPTkcqIGdjYyB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy9kaW5wdXQvdGVzdHMvam95c3RpY2suYywgZGxscy9kaW5wdXQvdGVzdHMva2V5Ym9hcmQuYywKCSAgZGxscy9kaW5wdXQvdGVzdHMvbW91c2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IFNUUklDVCBkZWZpbmVzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU1RBVFVTX1RJTUVPVVQgaXMgbm8gZXJyb3IgZm9yIFJlYWR8V3JpdGVGaWxlLgoKCSogZGxscy9udGRsbC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXYWl0IGZvciB0aGUgb2JqZWN0IG11bHRpcGxlIHRpbWVzIHVudGlsIFRJTUVPVVQgaXMgbWV0LgoKCSogZGxscy91c2VyL2xpc3Rib3guYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIHVuaXRzIHBhc3NlZCBpbnRvIExCX1NFVFRBQlNUT1BTIGFyZSBkaWFsb2cgdW5pdHMsIG5vdCBsb2dpY2FsCgl1bml0cy4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIE1zaUdldFByb3BlcnR5KEEvVykgaXMgY2FsbGVkIHdpdGggYSBOVUxMIGZvciB0aGUgdmFsdWUgYnVmZmVyIGJ1dAoJYSB2YWx1ZSBpbiB0aGUgc2l6ZSBmb3IgdGhlIHZhbHVlIGJ1ZmZlciwgdGhlbiBNc2kgZmlsbHMgaW4gdGhlIHNpemUKCW9mIHRoZSB2YWx1ZSBpbnRvIHRoZSBwb2ludGVyIGZvciBzaXplLiAgVGhpcyBpcyB0ZXN0ZWQgYW5kIGNvbmZpcm1lZAoJd2l0aCBuYXRpdmUgTVNJLgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmM6IFZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUZpeCBfc2V0bWJjcCBiZWhhdmlvciBmb3IgdW5yZWFsIGNvZGVwYWdlcy4KCgkqIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsIHNlcnZlci93aW5zdGF0aW9uLmM6CglUaWUgd2luZG93cyBhbmQgdGhyZWFkIGlucHV0IHN0cnVjdHVyZXMgdG8gYSBzcGVjaWZpYyBkZXNrdG9wLgoJU3VwcG9ydCBtdWx0aXBsZSBkZXNrdG9wIHdpbmRvd3MgKG9uZSBwZXIgZGVza3RvcCBvYmplY3QpLgoJVXNlIHRoZSB3aW5kb3cgZGVza3RvcCB0byBmaW5kIHRoZSB3aW5kb3cgc3RhdGlvbiB0byB1c2UgZm9yIHByb3BlcnR5CglhdG9tcy4KCgkqIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmM6CglBbHNvIGxvb2sgZm9yIHRoZSBwbGFpbiBtb2R1bGUgc3BlY2lmaWNhdGlvbiBpbiBXSU5FRExMT1ZFUlJJREVTIGZvcgoJbW9kdWxlcyB0aGF0IGNvbnRhaW4gYSBwYXRoLCBmb3IgYmV0dGVyIGNvbnNpc3RlbmN5IHdpdGggdGhlIHJlZ2lzdHJ5CgllbnRyaWVzLgoKCSogZGxscy9tc2kvZmlsZXMuYywgZGxscy9tc2kvc291cmNlLmMsIGluY2x1ZGUvbXNpLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBzdHJpbmcgY29uc3RhbnRzIGxvY2F0ZWQgaW4gbXNpLmggYW5kIG1ha2UgdXNlIG9mIHRoZW0gaW4KCWZpbGVzLmMgYW5kIHNvdXJjZS5jLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTY2hlZHVsZUpvYiBmb3IgKGFzIHlldCB1bnVzZWQpICdjdXBzJyBwb3J0cy4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgQ1VSU09SSUNPTl9DcmVhdGVGcm9tUmVzb3VyY2UgYnkgQ3JlYXRlSWNvbkZyb21SZXNvdXJjZUV4LgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZHg4L2QzZHg4Y29yZV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW50ZXJsb2NrZWQgTE9ORyogZ2NjIHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9oZWFwLmMsIGRsbHMvbnRkbGwvaGVhcC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIEhlYXBTaXplIGFsd2F5cyBtYXRjaCB0aGUgcmVxdWVzdGVkCgkgIHNpemUgcGFzc2VkIGludG8gSGVhcEFsbG9jYXRlL0hlYXBSZUFsbG9jYXRlLgoJLSBBZGQgYSB0ZXN0IGZvciB0aGlzIGJlaGF2aW91ci4KCgkqIGRsbHMvYWR2YXBpMzIvbHNhLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kZHJhdy9zdXJmYWNlX2RpYi5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1pc3NpbmcgdHlwZXMgdG8gd2luMzIuYXBpLgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIHRlc3Qgb2YgSU9sZU9iamVjdDo6W1NHXWV0Q2xpZW50U2l0ZS4KCS0gRml4IElPbGVPYmplY3RfU2V0Q2xpZW50U2l0ZSB0byBwYXNzIHRlc3RzLgoKCSogZGxscy91c2VyL2N1cnNvcmljb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBhcmdzLgoKCSogc2VydmVyL2F0b20uYywgc2VydmVyL2NsaXBib2FyZC5jLCBzZXJ2ZXIvdXNlci5oLAoJICBzZXJ2ZXIvd2luc3RhdGlvbi5jOgoJRXhwb3J0IHRoZSB3aW5zdGF0aW9uIGFuZCBkZXNrdG9wIHN0cnVjdHVyZXMgdG8gYXZvaWQgaGF2aW5nIHRvIHdyaXRlCgl0b28gbWFueSBhY2Nlc3NvciBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi9yZWNpbmZvLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybG9ja2VkIExPTkcqIGdjYyB3YXJuaW5nIGZpeGVzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZCBzb21lIGJhc2ljIGRzb3VuZCBjb25maWd1cmF0aW9uIG9uIEF1ZGlvIHBhbmVsLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IHVzZSB1bml4IGZpbGVzeXN0ZW0gc3BlY2lmaWMgYXR0cmlidXRlcyBpbiBVbml4Rm9sZGVyJ3MgcGlkbHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZWxlYXNlIHBhcmVudCBzaGVsbCBmb2xkZXIgaW4gR2V0QXR0cmlidXRlc09mLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOiBEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJRG8gbm90IHByaW50IGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBkZWxldGluZyBhIG5vbmV4aXN0ZW50IHZhcmlhYmxlLgoKCSogZGxscy91cmxtb24vdW1vbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVVJMTW9uaWtlckltcGxfQmluZFRvU3RvcmFnZTogRG9uJ3QgdXNlIGEgSGVhcEFsbG9jYXRlZCBwb2ludGVyIGZvcgoJb3RoZXIgcHVycG9zZXMuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUNoZWNrIHN0cnVjdHVyZSBzaXplIGFuZCBmaXggcmV0dXJuIHZhbHVlcyBpbiBFTV9HRVRDSEFSRk9STUFULgoKMjAwNS0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCVNldHVwU2V0RmlsZVF1ZXVlQWx0ZXJuYXRlUGxhdGZvcm17QVd9IGltcGxlbWVudGVkIGFzIHN0dWIuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNoZWNrIHRvIHNlZSBpZiB0aGUgdmVydGV4IGRlY2xhcmF0aW9uIGlzIG51bGwgYmVmb3JlIHRyeWluZyB0bwoJcmVmZXJlbmNlIGl0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCVRoZSBvcmRpbmFsIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIGV4cG9ydGVkIGJ5IG5hbWUuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc2lnbmVkbmVzcyBpc3N1ZXMuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJVGlkeSB1cCB0aGUgd2F5IGNhcHMgYXJlIG1hbmFnZWQgaW4gR2V0RGV2aWNlQ2FwcyBhbmQgRmlsbEdsQ2Fwcy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVSTE1vbmlrZXJJbXBsX0JpbmRUb1N0b3JhZ2U6IEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMuCgoJKiBkbGxzL2NhYmluZXQvZmNpLmM6CglHZXJvbGQgSmVucyBXdWNoZXJwZmVubmlnIDxnand1Y2hlcnBmZW5uaWdAZ214Lm5ldD4KCVRoZSBmY2lfZ2V0X2xpdHRsZV9lbmRpYW4uLi4gYW5kIGZjaV9zZXRfbGl0dGxlX2VuZGlhbi4uLiBmdW5jdGlvbnMKCWRvbid0IHJlYWxseSBzZXQgYW5kIHVuc2V0IGxpdHRsZSBlbmRpYW5lcywgdGhleSBkbyB0aGUgc2FtZSB0aGluZzoKCW1lcmVseSBzd2FwcGluZyBieXRlcyBmcm9tIG9uZSBlbmRpYW5lcyB0byB0aGUgb3RoZXIuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQWxsb3cgcmVhZGluZyAwIGJ5dGVzIGluIGZyZWFkLgoKCSogbGlicy93aW5lL2xvYWRlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsCgkgIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc2lnbmVkbmVzcyB3YXJuaW5ncy4KCgkqIGRsbHMvdXNlci9idXR0b24uYzogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggYSB0eXBvLgoKCSogZGxscy9udGRsbC9lbnYuYzogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCUZpeGVkIHRyYWNlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmM6IEJyaWFuIFZpbmNlbnQgPHZpbm5AdGhlc2hlbGwuY29tPgoJRGVzY3JpYmUgdGFicyBiZWluZyBsaW5rZWQgdG9nZXRoZXIuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSB0aGUgcmVtYWluaW5nIE50KiBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9jZHJvbS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUFkZCBhIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3RydWN0IHJlcXVlc3Rfc2Vuc2UuICBVc2UgdGhpcyBpbgoJQ0RST01fU2NzaVBhc3NUaHJvdWdoRGlyKCkgYW5kIENEUk9NX1Njc2lQYXNzVGhyb3VnaCgpIHRvIHVuYnJlYWsgdGhlCglidWlsZCBvbiBGcmVlQlNELgoKCSogZGxscy9zZXR1cGFwaS9kaXNrc3BhY2UuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUZpeGVkIGVudW1lcmF0aW5nIHRoZSBkcml2ZSBzdHJpbmdzLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpR2V0TGFuZ3VhZ2UuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNjaGVkdWxlSm9iIGZvciAnbHByJyBwb3J0cy4KCjIwMDUtMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY2xhc3MuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvd2luZG93LmM6CglFeHBsaWNpdGx5IHBhc3MgdGhlIHdpbnN0YXRpb24gdG8gdGhlIGF0b20gZnVuY3Rpb25zIHNvIHRoYXQgdGhleSBjYW4KCWJlIHVzZWQgZXZlbiB3aGVuIGN1cnJlbnQgaXMgbm90IHNldC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHtTdGFydCxFbmR9RG9jUHJpbnRlciBhbmQgV3JpdGVQcmludGVyLgoJe1N0YXJ0LEVuZH1QYWdlUHJpbnRlciBhcmUgc3RpbGwgc3R1YnMgYnV0IHJldHVybiBUUlVFLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbnN0YWxsU2hpZWxkIGRvZXMgYSBudW1iZXIgb2YgYWN0aW9ucyB1c2luZyBEb0FjdGlvbiBiZWZvcmUgdGhlCglJbnN0YWxsIHN0YXJ0cyBzbyB0aGUgUGFja2FnZUNvZGUgbmVlZHMgdG8gYmUgbG9hZGVkIG9uIE9wZW5QYWNrYWdlCglpbnN0ZWFkIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGluc3RhbGwgcHJvY2Vzcy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZhaWwgaW4gU0hHZXREYXRhRnJvbUlETGlzdCB3aGVuIGNhbGxlZCBvbiBzcGVjaWFsIGZvbGRlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglQYXJ0aWFsbHkgaW1wbGVtZW50ZWQgVW5peEZvbGRlcidzIElTRkhlbHBlcjo6Q29weUl0ZW1zIG1ldGhvZC4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvd2luLmMsCgkgIGRsbHMvdXNlci93aW5zdGF0aW9uLmMsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzoKCVB1dCBpbiBwbGFjZSB0aGUgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgdG8gYWxsb3cgc3VwcG9ydGluZyBtdWx0aXBsZQoJZGVza3RvcCB3aW5kb3dzLgoKCSogZGxscy91c2VyL2RkZV9jbGllbnQuYywgZGxscy91c2VyL2RkZV9taXNjLmMsCgkgIGRsbHMvdXNlci9kZGVfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvZGRlX3NlcnZlci5jLCBkbGxzL3VzZXIvZGRlbWwxNi5jLAoJICBkbGxzL3VzZXIvdGVzdHMvZGRlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIERERSB0cmFuc2FjdGlvbiB0ZXN0LCBtYWtlIGl0IHBhc3MgdW5kZXIgV2luZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZXNvdXJjZSBmaWxlcy4KCgkqIGRsbHMvc2V0dXBhcGkvUGwucmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmM6CglTZWJhc3RpYW4gR2FzaW9yZWsgPHplYmFzb2Z0aXNAZ21haWwuY29tPgoJQWRkZWQgUG9saXNoIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvbXN2Y3J0L21iY3R5cGUuaDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkIF9NQl9DUF8qIGRlZmluZXMuCgoJKiBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy9wc2FwaS90ZXN0cy9wc2FwaV9tYWluLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCU1ha2UgR2V0UHJvY2Vzc01lbW9yeUluZm8gZmFpbCBpZiB0aGUgcGFzc2VkIGJ1ZmZlciBpcyB0b28gc21hbGwuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGZldyBtb3JlIG1pc3NpbmcgZGVmaW5lcy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBbHdheXMgemVybyBkZXN0aW5hdGlvbiBidWZmZXIgaW4gU1lTUEFSQU1TX0xvYWRSYXcoKS4gUmVtb3ZlCglub3ctc3VwZXJmbHVvdXMgbWVtb3J5IHplcm9pbmcgaW4gc29tZSBvdGhlciBwbGFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2RwYS5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggc29tZSBEUEEgZnVuY3Rpb25zIHNvIHRoZXkgcGFzcyB0aGUgbmV3IHRlc3RzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmV0dXJuIGNvcnJlY3QgSFJFU1VMVCBjb2RlIGluIFVuaXhGb2xkZXIncyBJRW51bUlETGlzdDo6TmV4dC4KCUNvcnJlc3BvbmRpbmcgdGVzdC4KCgkqIGRsbHMvbXNpL21zaS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbiBNc2lMb2NhdGVDb21wb25lbnQgcGNjaEJ1ZiBjYW4gYmUgTlVMTCBzbyBkb24ndCB0cnkgdG8gZGVyZWZlcmVuY2UKCWl0LgoKCSogaW5jbHVkZS90ZXh0c2Vydi5oOiBNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglJVGV4dFNlcnZpY2VzX09uVHhJbnBsYWNlRGVhY3RpdmF0ZSBkb2VzIG5vdCB0YWtlIGEgcGFyYW1ldGVyLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJAY29kZXdlYXZlcnMuY29tPgoJUmVsYXkgYWxsIHRoZSBwaXhlbCBzaGFkZXIgY2FsbHMgZnJvbSBkM2Q5IHRvIHdpbmVkM2QuCgoyMDA1LTA3LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdmVydGV4IGRlY2xhcmF0aW9ucyB0byB3aW5lZDNkLCBpdCdzIHRoZSBsYXN0IHBhdGNoCgl0byBnaXZlIHdpbmVkM2QgYmFzaWMgZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlckBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcmVuZGVyIHRhcmdldHMgdXNpbmcgZWl0aGVyIHRleHR1cmVzLCBzd2FwY2hhaW5zIG9yCglzdGFuZGFsb25lIHN1cmZhY2VzLgoKCSogZGxscy90dHlkcnYvd2luZXR0eS5kcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvd2luLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5leDExLmRydi5zcGVjLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkZXNrdG9wIHdpbmRvdyBpbiB0aGUgZ3JhcGhpY3MgZHJpdmVyIHRvIGEKCXNlcGFyYXRlIENyZWF0ZURlc2t0b3BXaW5kb3cgZW50cnkgcG9pbnQgaW5zdGVhZCBvZiBvdmVybG9hZGluZwoJQ3JlYXRlV2luZG93LgoKCSogZGxscy91c2VyL21lbnUuYzoKCVJlbW92ZWQgY3JlYXRpb24gb2YgdGhlIG5vIGxvbmdlciB1c2VkIHNoYWRpbmcgYnJ1c2guCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGEgZmV3IHV0aWxpdHkgZnVuY3Rpb25zLCB3aXRoIHRlc3RzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb3JyZWN0IGEgdHlwby4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIG1vdmUgSURfQUJPVVRfV0lORSBpbnRvICNpZmRlZiBfX1dJTkVfXwoJLSBzdXBwb3J0IGZvciByZWZyZXNoIGluIHNoZWxsIG5hbWVzcGFjZSB3aW5kb3dzCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvaGVscGVycy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbGwgYW5kIHVzZSB0aGUgUHJvZHVjdENvZGUgcGFydCBvZiB0aGUgTVNJUEFDS0FHRSBzdHJ1Y3R1cmUuCgoJKiBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWM6CglEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJTmV0VXNlckFkZCArIE5ldFVzZXJEZWwgaW1wbGVtZW50ZWQgYXMgc3R1Yi4KCU1hZGUgc29tZSBGSVhNRSBtb3JlIGluZm9ybWF0aXZlLgoJTWFya2VkIHNvbWUgRklYTUUgYXMgc3R1Yi4KCUFkZGVkIGNvbW1lbnRzIGJlZm9yZSBzb21lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmM6CglVc2UgdGhlIHNhbWUgZGVmYXVsdHMgZm9yIG1vZHVsZXMgd2l0aCBhbmQgd2l0aG91dCBhbiBleHBsaWNpdCBwYXRoLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBwcm9wZXIgc2F2aW5nIG9mIHRoZSAiRkxBVE1FTlUiIGFuZCAiR1JBRElFTlRDQVBJT04iCglzeXN0ZW0gcGFyYW1ldGVycyB0byB0aGUgcmVnaXN0cnkuCgoJKiBkbGxzL3VzZXIvdWl0b29scy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVdpbmUgaGFzIG5vdyBhIE1hcmxldHQgZm9udCwgaGVuY2UgdGhlIHdpbmRvdyBidXR0b25zIGNhbiBub3cgYmUgZHJhd24KCXVzaW5nIHRoYXQgYW5kIG5vdCBzb21lIHBvbHlsaW5lcy4KCgkqIGZvbnRzL3dpbmVfbWFybGV0dC5zZmQ6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkZWQgYSByZWFsICJ3aW5kb3cgcmVzdG9yZSIgZ2x5cGggdG8gV2luZSBNYXJsZXR0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUV1Z2VueSBHb3JlbG92IDx0ZnRAZXRlcnNvZnQucnU+CglJbXBsZW1lbnQgbW9zdCBmdW5jdGlvbmFsaXR5IG9mIFBhZ2VTZXR1cERsZyBmdW5jdGlvbi4KCgkqIHByb2dyYW1zL2NtZGxndHN0L0VuLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9SdS5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuaDoKCUV1Z2VueSBHb3JlbG92IDx0ZnRAZXRlcnNvZnQucnU+CglBZGRlZCBQYWdlU2V0dXBEbGcgdGVzdC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTW92ZWQgbW9zdCBpbml0aWFsaXphdGlvbnMgb3V0IG9mIHRoZSBjcmVhdGVfZGVza3RvcCBmdW5jdGlvbiBhbmQgaW50bwoJcHJvY2Vzc19hdHRhY2guCgoJKiBkbGxzL3VzZXIvd2luLmMsIGRsbHMvdXNlci93aW5wb3MuYywgaW5jbHVkZS93aW5wb3MuaDoKCURlbGF5IGNyZWF0aW9uIG9mIHRoZSBpbnRlcm5hbCBwb3MgYXRvbSB1bnRpbCBuZWVkZWQuCgoJKiBkbGxzL21zY21zL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRHluYW1pY2FsbHkgbG9hZCBtc2Ntcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJVXBkYXRlIEdlcm1hbiB0cmFuc2xhdGlvbiBmb3IgY2hhbmdlcyB0byB0aGUgRExMIG92ZXJyaWRlcyBVSS4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBFdWdlbnkgR29yZWxvdiA8dGZ0QGV0ZXJzb2Z0LnJ1PgoJQWRkZWQgUFNEX05PTkVUV09SS0JVVFRPTiBkZWZpbmUuCgoJKiBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgTG9hZEltYWdlIHRvIGxvYWQgYml0bWFwcyBhbmQgaWNvbnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIHRlc3QuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywKCSAgZGxscy9tcHIvcHdjYWNoZS5jLCBkbGxzL25ldGFwaTMyL25idC5jLCBkbGxzL29sZWRsZy9pbnNvYmpkbGcuYywKCSAgZGxscy9wb3dycHJvZi9wb3dycHJvZi5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCAtV3BvaW50ZXItc2lnbiBmaXhlcyAoUmVnKiBmdW5jdGlvbnMpLgoKCSogc2VydmVyL21hcHBpbmcuYzogQ29udmVydCB0aGUgc2hhcmVkIG1hcHBpbmcgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jOgoJV2Ugbm8gbG9uZ2VyIGhhdmUgdGh1bmtzIGluIHRoZSBkYXRhIHNlY3Rpb24uCgoJKiBkbGxzL3VzZXIvd2luLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIElzV2luZG93VW5pY29kZSB3b3JrIGluIHRoZSBjYXNlIHdoZW4gd2luZG93IGJlbG9uZ3MgdG8gYW5vdGhlcgoJcHJvY2Vzcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gcmVtb3ZlIDx0Y2hhci5oPiBhbmQgPHdjaGFyLmg+IGhlYWRlciB1c2FnZSBieSBzd2l0Y2hpbmcgdG8gV0lOMzIKCSAgQVBJIHN0cmluZyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIGFzIGZhciBhcyBwb3NzaWJsZQoJLSBzd2l0Y2ggdG8gVU5JQ09ERSBjb21waWxhdG9uCgktIHJlbW92ZSBsYXVuY2hfZmlsZUEoKSBhbmQgdGNzY3B5bgoJLSBkb24ndCBjcmFzaCBpbiBzZXRfY3VyZGlyKCkgZm9yIE5VTEwgaW4gdGhlICdlbnRyeScgcG9pbnRlcgoKCSogcHJvZ3JhbXMvd2luZWNmZy9ObC5yYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVwZGF0ZSB0aGUgRHV0Y2ggdHJhbnNsYXRpb25zLgoKCSogc2VydmVyL2F0b20uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdXNlci5oLAoJICBzZXJ2ZXIvd2luc3RhdGlvbi5jOgoJU3RvcmUgdGhlIGdsb2JhbCBhdG9tIHRhYmxlIGluIHRoZSBwcm9jZXNzIHdpbmRvdyBzdGF0aW9uLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSBOdCogZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2NvbWJvLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJVXBkYXRlIFRPRE8gbGlzdC4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRW5jb2RlL2RlY29kZSBDRVJUX1BVQkxJQ19LRVlfSU5GTywgd2l0aCB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUFkZCBhbm90aGVyIGZhaWxpbmcgRFBBIHRlc3QuCgoyMDA1LTA3LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVNDU0lfTGludXhfQ2hlY2tEZXZpY2VzKCkgaXMgTGludXgtb25seSBhcyB3ZWxsLgoKCSogZGxscy9tc2Ntcy9tc2Ntc19tYWluLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRmFpbCBsb2FkaW5nIHdoZW4gY29tcGlsZWQgd2l0aG91dCBsY21zIHN1cHBvcnQuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIGRsbHMvZDNkOC9kM2Q4X21haW4uYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjE2LmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywKCSAgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveGZvbnQuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgLVdwb2ludGVyLXNpZ24gZml4ZXMgKFJlZyogZnVuY3Rpb25zKS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQ2hhbmdlZCBsYXlvdXQgb2YgbGlicmFyaWVzIHRhYiwgbW92ZWQgbG9hZC1vcmRlciBzZXR0aW5nIGludG8gZXh0cmEKCWRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCURvbid0IGludmFsaWRhdGUgdGhlIHdob2xlIHByb3BzaGVldCB3aGVuIHRoZSBwYWdlIGlzIHN3aXRjaGVkLgoKCSogZGxscy91c2VyL21lbnUuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCS0gd2hlbiBzZW5kaW5nIHRoZSBXTV9EUkFXSVRFTSBtZXNzYWdlIGluIGNhc2Ugb2YgYSBtZW51IGl0ZW0gd2l0aAoJICBoYm1wSXRlbSA9IEhCTU1FTlVfQ0FMTEJBQ0ssIG1vdmUgdGhlIGRyYXdpbmcgb3JpZ2luIHRvIHRoZSB0b3AgbGVmdAoJICBvZiB0aGUgaXRlbSByZWN0YW5nbGUKCS0gYXQgdGhlIHNhbWUgdGltZSBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpdGVtU3RhdGUgZmllbGQgb2YgdGhlCgkgRFJBV0lURU1TVFJVQ1QgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQKCS0gZG8gdGhlIGRyYXdpbmcgb2YgdGhlIGNoZWNrIG1hcmsgYmVmb3JlIHNlbmRpbmcgdGhlIFdNX0RSQVdJVEVNCgkgIG1lc3NhZ2UsIHNvbWUgYXBwbGljYXRpb24gbGlrZXMgdG8gIm92ZXJkcmF3IiB0aGUgY2hlY2ttYXJrLgoKCSogZGxscy93aW5lZDNkL2RyYXdwcmltLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNoYW5nZSBhbGwgcmVmZXJlbmNlcyB0byB1cGRhdGVTdGF0ZUJsb2NrIHRvIHJlZmVyZW5jZXMgdG8gc3RhdGVCbG9jawoJaW4gZHJhd3ByaW0uCgoJKiBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jLCBkbGxzL3R3YWluL2NhcGFiaWxpdHkuYywKCSAgZGxscy94MTFkcnYveGZvbnQuYywgZGxscy94MTFkcnYveHJhbmRyLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJTWFrZSBmdW5jdGlvbnMgc3RhdGljIHRvIGZpeCAtV21pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci90ZXN0cy9kY2UuYzoKCVJlc3RvcmUgdGhlIGNsaXAgcmVnaW9uIGFmdGVyIEdldERDRXggaW4gc2VuZF9lcmFzZSBhcyBpZiBpdCBoYWQgYmVlbgoJYSBCZWdpblBhaW50LgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTW92ZWQgdGhlIGNvbmZpZ3VyYXRpb24ga2V5IHRvIEhLQ1VcU29mdHdhcmVcV2luZVxXaW5lTWVudUJ1aWxkZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RyZWV2aWV3LmMsIGRsbHMvZGlucHV0L3Rlc3RzL2pveXN0aWNrLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywKCSAgZGxscy9wc2FwaS90ZXN0cy9wc2FwaV9tYWluLmMsIGRsbHMvdXNlci90ZXN0cy9tZW51LmMsCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RvcCB0aGUgaW5zdGFsbCB3aGVuIGNhbmNlbGxpbmcgZnJvbSBhIG1vZGVsZXNzIGRpYWxvZy4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgTnQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBBZGRKb2IgYW5kIGEgcGFydGlhbCBvbmUgb2YgU2NoZWR1bGVKb2IuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgVW5peEZvbGRlcidzIElTRkhlbHBlcjo6RGVsZXRlSXRlbXMgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIG1pc3NpbmcgRENfR1JBRElFTlQgYW5kIERDX0JVVFRPTlMsIGFzIHVzZWQgYnkgRHJhd0NhcHRpb24uCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL3Jvdy5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIEVNX0xJTkVJTkRFWCBoYW5kbGVyIGFuZCBhZGRlZCBFTV9MSU5FRlJPTUNIQVIgaGFuZGxlci4KCgkqIGRsbHMvbXNpL2V2ZW50cy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjcmFzaCB3aGVuIGNhbmNlbGxpbmcgb3V0IG9mIGEgbW9kZWxlc3MgZGlhbG9nLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUNsZWFyIGJ1ZmZlciBiZWZvcmUgcXVlcnlpbmcgdGhlIHJlZ2lzdHJ5IGluIFNZU1BBUkFNU19Mb2FkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzogTWljaGFlbCBMaW4gPG1saW5AY29ydnUuY29tLmF1PgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgVW5peEZvbGRlcidzIElTRkhlbHBlcjo6QWRkRm9sZGVyLgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9sc2EuYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglCcmFuY2ggdGhlIExTQSBmdW5jdGlvbnMgZnJvbSBzZWN1cml0eS5jIHRvIGxzYS5jLgoKCSogZGxscy91c2VyL2RkZV9jbGllbnQuYywgZGxscy91c2VyL2RkZV9taXNjLmMsIGRsbHMvdXNlci9kZWZ3bmQuYywKCSAgZGxscy91c2VyL2RyaXZlcjE2LmMsIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9ob29rMTYuYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3NweS5jLCBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsCgkgIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3dpbnByb2MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS1XcG9pbnRlci1zaWduIGZpeGVzIGZvciBnY2MgNC4wLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvc3RyaW5nLmMsCgkgIGRsbHMvbXNpL3N1bWluZm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgLVdwb2ludGVyLXNpZ24gZml4ZXMuCgoJKiBkbGxzL21zaHRtbC9tYWluLmMsIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsCgkgIGRsbHMvbXNodG1sL3Byb3RvY29sLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCAtV3BvaW50ZXItc2lnbiB3YXJuaW5ncy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvcm93LmM6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgRU1fRVhMSU5FRlJPTUNIQVIsIEVNX0xJTkVJTkRFWCwgRU1fRklORFRFWFQsCglFTV9GSU5EVEVYVFcsIEVNX0ZJTkRURVhURVgsIGFuZCBFTV9GSU5EVEVYVEVYVyBtZXNzYWdlcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIFBWT0lENjQgYW5kIEZJTEVfU0VHTUVOVF9FTEVNRU5ULgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUV2ZXJ5IHdpbmRvdyBuZWVkcyB0byByZWNlaXZlIFdNX1RIRU1FQ0hBTkdFRCAoZXNwLiBjb250cm9scyksIHNvIGFsc28KCXNlbmQgaXQgdG8gY2hpbGQgd2luZG93cy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2RwYS5jLCBkbGxzL2NvbWN0bDMyL2RzYS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglNb3ZlIERQQSBhbmQgRFNBIGZ1bmN0aW9ucyBvdXQgb2YgY29tY3RsMzJ1bmRvYy5jIGFzIHRoZXkgYXJlCglkb2N1bWVudGVkIGJ5IG5vdy4KCjIwMDUtMDctMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzogRG9uJ3QgZGVwZW5kIG9uIEVMRiBmZWF0dXJlcyBmb3IgUElDIGNvZGUuCglBIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvc291cmNlLmMsIGluY2x1ZGUvbXNpLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvdXJjZS5jIHRvIHN0YXJ0IGhhbmRsaW5nIHRoZSB2YXJpb3VzIE1zaVNvdXJjZUxpc3QgYXBpcyB1c2VkIGluCgl2MyBvZiBNU0ksIGFuZCBub3cgaW50ZXJuYWxseS4KCVVwZGF0ZSBmaWxlcy5jIHRvIHVzZSB0aGUgTXNpU291cmNlTGlzdCBhcGlzIHRvIG1ha2Ugc3VyZSBvdXIKCVNvdXJjZUxpc3Qga2V5cyBpbiB0aGUgcmVnaXN0cnkgYXJlIGluY2x1ZGVkIGFuZCBjb3JyZWN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCVByaW50ZXJfTG9hZEljb25zVzogaW1wbGVtZW50ZWQgbWluaW1hbCB2ZXJzaW9uLgoKCSogZGxscy9yaWNoZWQyMC93cmFwLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBhbiBvZmYtYnktb25lIGVycm9yIGluIEVNX0dFVExJTkVDT1VOVCBoYW5kbGVyLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGFub3RoZXIgY291cGxlIG9mIEVNX1NUUkVBTU9VVCBidWdzLgoKCSogaW5jbHVkZS90ZXh0c2Vydi5oOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6IE1pY2hhZWwgTGluIDxtbGluQGNvcnZ1LmNvbS5hdT4KCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUlTRkhlbHBlciBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgVW5peEZvbGRlciAoY3VycmVudGx5IG9ubHkgc3R1YnMpLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgLVdwb2ludGVyLXNpZ24gZml4ZXMuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBpbml0aWFsIGZvY3VzIG9uIHRoZSBjb250cm9sIHNwZWNpZmllZCBieSBDb250cm9sX0ZpcnN0IGluIHRoZQoJRGlhbG9nIHRhYmxlLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCVJlbW92ZWQganVuayBmcm9tIFVURi04IFJURiBvdXRwdXQuCgoJKiBpbmNsdWRlL3RleHRzZXJ2Lmg6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUFkZGVkIHR4dGJpdCBkZWNsYXJhdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jOiBIYWppbWUgU2VnYXdhIDx3aW5ldGlwc0BzaWRlbmV0LmRkby5qcD4KCUZpeCBmb3IgZGVidWcgbWVzc2FnZSBidWZmZXIgb3ZlcmZsb3cgaW4gbGlicmFyeSB0YWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBNaWNoYWVsIExpbiA8bWxpbkBjb3J2dS5jb20uYXU+CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBVbml4Rm9sZGVyJ3MgSVNoZWxsRm9sZGVyOjpTZXROYW1lT2YuCgoJKiBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLAoJICBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTdHJpcCBvdXQgc3RhdGVibG9ja3MgZnJvbSBkM2Q5IGFuZCByZWxheSBhbGwgc3RhdGVibG9jayBjYWxscyB0bwoJd2luZWQzZC4KCgkqIHRvb2xzL3NmbnQyZm50LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWR1bXAvbGUuYywKCSAgdG9vbHMvd2luZWR1bXAvbG5rLmMsIHRvb2xzL3dpbmVkdW1wL25lLmMsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmgsCgkgIHRvb2xzL3dyYy9yZWFkcmVzLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCAtV3BvaW50ZXItc2lnbiBmaXhlcy4KCgkqIGluY2x1ZGUvbXN4bWwuaWRsOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGQgSVhNTEVsZW1lbnROb3RpZmljYXRpb25TaW5rIGRlZmluaXRpb24gZm9yIElFNCBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9uZW91cyBmaWxlIGZsYWcgaW4gX3BvcGVuLgoKCSogZGxscy91cmxtb24vLmN2c2lnbm9yZSwgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL3JlZ3N2ci5jLCBkbGxzL3VybG1vbi9yc3JjLnJjLCBkbGxzL3VybG1vbi91cmxtb24uaW5mLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVJlZ2lzdGVyIHByb3RvY29scy4KCgkqIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJUmVwbGFjZSBzdHVicyBmb3IgaW5mb3JtYXRpb24gY2xhc3NlcyBpbiBOdFF1ZXJ5VmlydHVhbE1lbW9yeSBhbmQKCU50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MgYnkgbW9yZSBkZXNjcmlwdGl2ZSBtZXNzYWdlcy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJVVhUSEVNRV9Mb2FkSW1hZ2UoKTogU2V0IGRlZmF1bHQgaW1hZ2UgY291bnQgdG8gMSB0byBhdm9pZCBkaXZpc2lvbiBieQoJemVybyBpbiBjYXNlIGltYWdlIGNvdW50IHByb3BlcnR5IGlzIG5vdCBnaXZlbi4gUHJvcGVybHkgc3VwcG9ydCAwCglzdGF0ZSBJRHMuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50ZWQgc3RhdGVibG9ja3MgaW4gd2luZWQzZC4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBzb21lIGZhaWxpbmcgdGVzdHMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJR2V0IHJpZCBvZiB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBmbGFnLgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUludGVyY2VwdCBmdW5jdGlvbnMgZm9yIDE2LWJpdCByZWxheSBkZWJ1Z2dpbmcgYnkgcGF0Y2hpbmcgdGhlCglDQUxMRlJPTTE2IHRhYmxlIGluc3RlYWQgb2YgaGF2aW5nIHRoZSB3aW5lX2NhbGxfZnJvbV8xNiBmdW5jdGlvbnMKCWNhbGwgb3V0IHRoZSByZWxheSBmdW5jdGlvbnMgZXhwbGljaXRseS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywKCSAgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9nZGkvZW5obWV0YWZpbGUuYywKCSAgZGxscy9tc3ZpZGMzMi9tc3ZpZGVvMS5jLCBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCAtV21pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCAtV3BvaW50ZXItc2lnbiB3YXJuaW5ncy4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglMb2FkSW1hZ2VXOiBGaXggdHlwZSBvZiBUUkFDRSBwYXJhbWV0ZXIuCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWltZWluZm8uaWRsOgoJVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkZWQgZGVjbGFyYXRpb24gZm9yIElNaW1lSW5mbyBpbnRlcmZhY2UuCgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCUFkZGVkIHZhcmFyZyBhcmd1bWVudCB0eXBlIHNvIHRoYXQgdGhlIHJlbGF5IGNvZGUgY2FuIGRpc3Rpbmd1aXNoIGZyb20KCWEgbm9ybWFsIGNkZWNsIGZ1bmN0aW9uLgoJRG9uJ3QgcmVseSBvbiB0aGUgcmVsYXkgdGh1bmsgcHJlc2VydmluZyB0aGUgc3RhY2sgcG9pbnRlci4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgc29tZSB0ZXN0cyBmb3Igb3RoZXIgaW5mb3JtYXRpb24gY2xhc3Nlcy4KCUNvcnJlY3QgY29tbWVudCBmb3IgdGVzdCAweDMuCgoJKiBkbGxzL250ZGxsL250LmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglJbXByb3ZlZCBzdHVicyB0byBzaG93IHRoZSBjb3JyZWN0IGJlaGF2aW9yLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbiBFbmdsaXNoIG5ldXRyYWwgdmVyc2lvbiBvZiB0aGUgZ3JhcGhpY3MgdGFiLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaDoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJT3BlbmluZyBzb21lIHRoZW1lIGNsYXNzIGRhdGEgbm93IGFsc28gaW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQKCW9mIHRoZSB0aGVtZSBmaWxlLCBzbyBhcyBsb25nIGFzIHRoZW1lIGNsYXNzIGRhdGEgaXMgc3RpbGwgb3BlbmVkCglzb21ld2hlcmUsIHRoZSB0aGVtZSBmaWxlIHdvbid0IGdldCBmcmVlZC4gT3RoZXJ3aXNlLCBpdCBjb3VsZCBoYXBwZW4KCXRoYXQgaW52YWxpZCBjbGFzcyBkYXRhIHdhcyB1c2VkLCB3aGljaCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglDaGFuZ2VkIHRoZSBkZWZhdWx0IHRyYW5zcGFyZW50IGNvbG9yIGluIGNhc2Ugbm9uZSB3YXMgZXhwbGljaXRseQoJc3BlY2lmaWVkIGZyb20gdGhlIHVwcGVyIGxlZnQgcGl4ZWwgY29sb3IgdG8gbWFnZW50YS4gRW1waXJpY2FsbHkKCWdpdmVzIGJldHRlciByZXN1bHRzLgoKCSogZGxscy91c2VyL21lbnUuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgc3VwcG9ydCBmb3IgZHJhd2luZyBtZW51cyBpbiAiZmxhdCIgc3R5bGUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvY2FiaW5ldC9mZGkuYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvd2luYXNwaS9hc3BpLmMsCgkgIGRsbHMvd2luZWRvcy9zb3VuZGJsYXN0ZXIuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgbW9yZSAtV21pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgLVdwb2ludGVyLXNpZ24gd2FybmluZ3MuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvcHJpbnRkcnYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS1XcG9pbnRlci1zaWduIGZpeGVzIGZvciBnY2MgNC4wLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudCBhY3RpdmUgb2JqZWN0IGFuZCB2YXJpYW50IGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCBEUEEgdGVzdHMgb24gV2luOTUuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmVkIDQgYnl0ZXMgZnJvbSB0aGUgU1lTVEVNX1BST0NFU1NPUl9QRVJGT1JNQU5DRV9JTkZPUk1BVElPTgoJc3RydWN0LgoJQ2hhbmdlZCBzb21lIGR3U3BhcmUgaW50byBsaUtlcm5lbFRpbWUgYW5kIGxpVXNlclRpbWUuCgoJKiBpbmNsdWRlL3RleHRzZXJ2Lmg6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUFkZGVkIG1pc3NpbmcgZGVjbGFyYXRpb24gZm9yIElUZXh0U2VydmljZXMtPk9uVHhJblBsYWNlRGVhY3RpdmF0ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIEVuZ2xpc2ggbmV1dHJhbCB2ZXJzaW9uIG9mIElEU19DT0xPUl9HUkFZLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRnIucmM6IEpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCVVwZGF0ZWQgd2luZWZpbGUgRnJlbmNoIHJlc291cmNlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRnIucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCS0gVXBkYXRlZCB3aW5lY2ZnIEZyZW5jaCByZXNvdXJjZXMuCgktIEZpeGVkIGNvbnRyb2wgc2l6ZSBhbmQgcGxhY2VtZW50LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgb25lIG1vcmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gdG8gdGhlIHByaW50ZXIgaGFuZGxlIGFycmF5IHRvIGFsbG93Cgltb3JlIGluZm9ybWF0aW9uIHRoYW4ganVzdCB0aGUgbmFtZSB0byBiZSBzdG9yZWQuCglXcmFwIGFjY2Vzc2VzIHRvIHRoZSBwcmludGVyIGhhbmRsZSBhcnJheSBpbiBhIGNyaXRzZWMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIElzV2luZG93VW5pY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjOiBNYXJjZWxvIER1YXJ0ZSA8bWFyY2Vsb3RkdWFydGVAZ21haWwuY29tPgoJVXBkYXRlIHNoZWxsMzIgcmVzb3VyY2VzIGZvciBQb3J0dWd1ZXNlLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUGwucmM6IE1hcmNlbG8gRHVhcnRlIDxtYXJjZWxvdGR1YXJ0ZUBnbWFpbC5jb20+CglSZW1vdmUgZG91YmxlIFNFUEFSQVRPUi4KCgkqIGRsbHMveDExZHJ2L29wZW5nbC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglNYWtlIHN1cmUgdGhhdCB0aGUgT3BlbkdMIHZpc3VhbCBjcmVhdGVkIGZvciBhIHdpbmRvdyBoYXMgYSBzdGVuY2lsCglidWZmZXIuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2xlYW4gd2luZWluc3RhbGwgZnJvbSBjb25maWcgZmlsZSByZWZlcmVuY2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJldHVybiBjb3JyZWN0IGF0dHJpYnV0ZXMgaW4gUGFyc2VEaXNwbGF5TmFtZS4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUxldCBwcm9wZXJ0eSBzaGVldHMgdXBkYXRlIHRoZSBjYWNoZWQgc3lzdGVtIGNvbG9ycyB1cG9uIHJlY2VpdmluZwoJV01fU1lTQ09MT1JDSEFOR0UuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJV3JpdGUgV0NIQVIgc3RyaW5ncyB0byByZWdpc3RyeSB3aXRoIGNvcnJlY3Qgc2l6ZS4KCgkqIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IGNvbG9yIGRpcmVjdG9yeSBoYW5kbGluZy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsIGluY2x1ZGUvdXh0aGVtZS5oOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJSXNUaGVtZURpYWxvZ1RleHR1cmVFbmFibGVkIHNob3VsZCBoYXZlIG9uZSBwYXJhbWV0ZXIgdG8gbWF0Y2ggdGhlCglwcm90b3R5cGUgaW4gdGhlIG9mZmljaWFsIGhlYWRlcnMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFNQSV9bU0ddRVRGTEFUTUVOVSBpbiBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyAoYWx0aG91Z2gKCXdpdGhvdXQgc2F2aW5nIG9mIHRoZSBzZXR0aW5nKS4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUVuYWJsZS9kaXNhYmxlICJmbGF0IG1lbnVzIiBiYXNlZCBvbiB0aGUgc2V0dGluZyBmcm9tIHRoZSBhY3RpdmUKCXRoZW1lLgoKMjAwNS0wNy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91bXN0cmVhbS5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IC1XcG9pbnRlci1zaWduIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLAoJICBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kZGUuYywgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLVdwb2ludGVyLXNpZ24gZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXdyb3RlIHRoZSBEUEEgdGVzdHN1aXRlLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgbW9yZSBOdCogZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCU1vdmVkIGFsbCAxNi1iaXQgcmVsYXkgY29kZSB0byB0aGUgdGV4dCBzZWN0aW9uLgoJQ2hhbmdlZCBhIGZldyBzeW1ib2wgbmFtZXMgZm9yIGJldHRlciBjb25zaXN0ZW5jeS4KCgkqIGxpYnMvd2luZS9sZHQuYzogQWRkZWQgZXJyb3IgbWVzc2FnZSBmb3IgbWlzc2luZyBMRFQgc3VwcG9ydCBvbiBpMzg2LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBTb21lIGZpeGVzIGZvciB0aGUgRGFyd2luIGJ1aWxkLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglDaGFuZ2UgbWVzc2FnZXMgYWJvdXQgY29uZmlnIGZpbGUgdG8gcmVnaXN0cnkuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvcnBjcnQ0L3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jLCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCB3YXJuaW5ncyBpbiBnZW5lcmF0ZWQgdGVzdHMgYnkgY2FzdGluZyBzaXplb2YoeCkgdG8gYW4gaW50LgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvc2VydmljZS5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgSVNlcnZpY2VQcm92aWRlci4KCgkqIERFVkVMT1BFUlMtSElOVFM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBERVZFTE9QRVJfSElOVFMgdG8gcmVmbGVjdCBtYWtlIGNvbmZpZ3VyZSBkb2Vzbid0IHJ1biBhdXRvY29uZi4KCgkqIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglNYWtlIGNoZWNrIGZhaWxzIGluIGRsbHMvZGRyYXcvdGVzdHMvZDNkLCBiZWNhdXNlIGEgaGVhcCBhbGxvY2F0ZSBpcwoJZmVkIHRvIHdyb25nIHNpemUuIChzaXplb2YoQk9PTEVBTikgaXMgMSAsIGJ1dCBhdGl2ZV9saWdodHMgaXMgYSBEV09SRAoJYXJyYXkpLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIHNvbWUgcmVzb2x1dGlvbnMgdG8gd2hhdCBEZXNrdG9wIG1vZGUgc3VwcG9ydHMuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQWRkIHNvbWUgdmFsdWVzIHRvIHRoZSBQUk9DRVNTX0lORk9STUFUSU9OX0NMQVNTIGVudW1lcmF0aW9uLgoKCSogZGxscy91cmxtb24vdW1vbi5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IGhhbmRsaW5nIG9mIHBta0NvbnRleHQgaW4gQ3JlYXRlVVJMTW9uaWtlci4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1ha2UgcmVnaXN0cnkgY29tcGF0aWJsZSB3aXRoIHdpbm1pbmUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIG1pc3NpbmcgTk1CQ0hPVElURU0gc3RydWN0LgoKCSogZGxscy9tc3ZjcnQvd2NzLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCWNoYXIgcG9pbnRlciBtdXN0IGJlIDExIGJ5dGUgdG8gZml0IDEwIGNoYXJhY3RlcnMgKyBcMC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5yZWcuaDoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQWRkZWQgdW5pdCB0ZXN0cyBmb3IgUmVnR2V0VmFsdWUuCgoyMDA1LTA3LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIHNlcnZlci9tYXBwaW5nLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUxvYWQgYWxsIGRsbCBzZWN0aW9ucyBubyBtYXR0ZXIgd2hhdCBhdHRyaWJ1dGVzIHNheS4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUJldHRlciBtb2R1bGUgbG9ja2luZy4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXBpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgQ29DcmVhdGVJbnN0YW5jZSBpbnN0ZWFkIG9mIFNIQ29DcmVhdGVJbnN0YW5jZSwgZHJvcCBzaGVsbDMyIGZyb20KCWltcG9ydHMuCglDYWxsIE9sZUluaXRpYWxpemUoKSBvbiBBVklGaWxlSW5pdC4KCgkqIGRsbHMvbXNodG1sL21haW4uYywgaW5jbHVkZS9tc2h0bWhzdC5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBtb3JlIGRlZmluaXRpb25zLgoJLSBGaXhlZCBSdW5IVE1MQXBwbGljYXRpb24gZGVjbGFyYXRpb24uCgoJKiBpbmNsdWRlL21zeG1sLmlkbDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkIG1pc3NpbmcgZGVjbGFyYXRpb25zIGZvciBJWE1MRG9jdW1lbnQyIGFuZCBJWE1MRWxlbWVudDIuCgoyMDA1LTA3LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IERvbid0IGJvdGhlciBsb2FkaW5nIHRoZSBjb25maWcgZmlsZSBhbnltb3JlLgoKCSogdG9vbHMvd2luZWR1bXAvbmUuYzogQWRkZWQgZHVtcGluZyBvZiBORSBzZWdtZW50cyBhbmQgcmVsb2NhdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglEb24ndCB1c2UgdGhlIGZ1bGwgMzIgYml0cyBvZiAlZXNwIHdoZW4gY2FsbGVkIGZyb20gMTYtYml0IGNvZGUuCgoJKiBkbGxzL3VzZXIvZGRlbWwuc3BlYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSENPTlYgYW5kIEhDT05WTElTVCBhcmUgMzJiaXQgaGFuZGxlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGUgR2VybWFuIHJlc291cmNlIGZpbGVzLgoKCSogZGxscy9kM2Q5L2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGVjayBmb3IgYSBudWxsIHN1cmZhY2UgcmV0dXJuZWQgZnJvbSBDcmVhdGVTdXJmYWNlLgoJUmVsYXkgR2V0Q3JlYXRpb25QYXJhbWV0ZXJzIGNhbGwgdG8gd2luZWQzZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgZGxscy9udGRsbC9jZHJvbS5jIGNvbXBpbGF0aW9uIGluIERhcndpbiBieSBhZGRpbmcgSEFWRV9JT0tpdAoJZGV0ZWN0aW9uIHRvIGNvbmZpZ3VyZSBhbmQgZGVmaW5pbmcgU0VOU0VCVUZMRU4gYXMga1NlbnNlRGVmYXVsdFNpemUKCSh3aGljaCBpcyBjb3JyZXNwb25kaW5nIElPS2l0IGVudW0gdmFsdWUpLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS90ZXh0c2Vydi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGV4dHNlcnYuaC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglNb3ZlZCBtb3N0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDQUxMMzJfQ0JDbGllbnQoRXgpIHRvIHRoZSBDCgljb2RlLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIGEgLS10YXJnZXQgb3B0aW9uIHRvIGFsbG93IGNyb3NzLWNvbXBpbGF0aW9uLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglTZXQgdGhlIGNsYXNzIHJlc291cmNlIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIG1haW4gYmluYXJ5IChzdWdnZXN0ZWQKCWJ5IFJhc3Rlcm1hbikuCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUveG1sZHNvLmlkbCwKCSAgaW5jbHVkZS94bWxkc29kaWQuaDoKCVZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZGVkIHhtbGRzby5pZGwuCgoJKiBkbGxzL250ZGxsL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCUltcHJvdmUgYSBiaXQgdGhlIGFzc2VtYmx5IGdlbmVyYXRlZCBmb3IgaW1wb3J0IHRodW5rcy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgY2VydCBleHRlbnNpb25zCgktIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IHBhcmFtZXRlcnMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zCgktIHRlc3RzIGZvciBjZXJ0IGV4dGVuc2lvbnMKCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvcmljaGVkMjAvY2FyZXQuYywKCSAgZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy91eHRoZW1lL3V4aW5pLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJTWFrZSBzb21lIGZ1bmN0aW9uIHN0YXRpYy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGJpbmZtdF9taXNjIHRvIHRoZSBmaWxlc3lzdGVtIGJsYWNrbGlzdC4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUhhdmUgdGhlIHRoZW1lIElOSSBmaWxlIHBhcnNlZCB1cG9uIHRoZW1lIGFjdGl2YXRpb24gYW5kIG5vdCBqdXN0IHdoZW4KCXRoZSBmaXJzdCB0aGVtZSBkYXRhIGlzIHJlcXVlc3RlZDsgdGhhdCB3YXksIHRoZSB0aGVtZWQgc3lzdGVtIGNvbG9ycwoJYXJlIHNldCBjb3JyZWN0bHkgZnJvbSB0aGUgc3RhcnQsIGFuZCBub3QganVzdCBhZnRlciBzb21lIHRoZW1lIGRhdGEKCXdhcyByZXF1ZXN0ZWQuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gYWRkIG1vcmUgcHJvdG90eXBlcwoJLSByZWFycmFuZ2UgcHJvdG90eXBlcyBhY2NvcmRpbmcgdG8gdGhlIERMTCB0aGV5J3JlIGluLCB0byBtYWtlCgkgIGNvbW1lbnRzIGNvcnJlY3QKCgkqIGRsbHMvdXNlci9kaWFsb2cuYywgZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJR2V0RGxnSXRlbVRleHQgc2hvdWxkIGFsd2F5cyB0cnkgdG8gTlVMTCB0ZXJtaW5hdGUgdGhlIHN0cmluZy4KCjIwMDUtMDYtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCUF0dGVtcHQgYXQgYSBiZXR0ZXIgZml4IGZvciB0aGUgd2luc29jay5oIHByb2JsZW1zIG9uIERhcndpbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTmwucmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVcGRhdGUgdGhlIER1dGNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvbXNodG1sL3Byb3RvY29sLmMsIGRsbHMvbXNodG1sL3JzcmMucmM6CglVc2UgcHJvcGVyIHN5bWJvbHMgaW5zdGVhZCBvZiBtYWdpYyBudW1iZXIgMjMgZm9yIEhUTUwgcmVzb3VyY2UgdHlwZS4KCgkqIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLAoJICB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyY3R5cGVzLmg6CglBZGRlZCBzdXBwb3J0IGZvciBIVE1MIHJlc291cmNlIHR5cGUuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBBZGRlZCBtaXNzaW5nIExHUEwgaGVhZGVyLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zeG1sLmlkbCwKCSAgaW5jbHVkZS9tc3htbDIuaWRsOgoJVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkZWQgbXN4bWwyLmlkbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCB0ZXN0IGZvciBhcnRzLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvZGRlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTaGVsbERERUluaXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2N1c3RvbS5jLAoJICBkbGxzL21zaS9oZWxwZXJzLmMsIGRsbHMvbXNpL3VwZ3JhZGUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglLZWVwIHRyYWNrIG9mIHdoYXQgc2VxdWVuY2Ugd2UgYXJlIGluIGFuZCByZWdpc3RlciB1bmlxdWUKCWFjdGlvbnMuIFRoaXMgYWxsb3dzIHVzIHRvIG1ha2Ugc3VyZSBhY3Rpb25zIGFuZCBjdXN0b20gYWN0aW9ucwoJZmxhZ2dlZCB0byBydW4gb25seSBvbmNlLCBhY3R1YWxseSBydW4gb25seSBvbmNlLgoJQWxzbyBjbGVhbiB1cCBzb21lIG9mIHRoZSBudW1lcmljIGNvbnN0YW50cyBpbiBjdXN0b20uYyB1c2luZyB0aGUKCWRlZmluZWQgdmFsdWVzIGZyb20gbXNpZGVmcy5oLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgYXNtIGNoZWNrcy4KCgkqIGRsbHMvY2FiaW5ldC9mY2kuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLCB0b29scy93aW5lZHVtcC9SRUFETUUsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmgsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCVJldmVydCBTUElfU0VUTU9VU0VCVVRUT05TV0FQIGNoYW5nZXMuCgoJKiBkbGxzL21zaHRtbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zaHRtbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2h0bWwvdGVzdHMvcHJvdG9jb2wuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCByZXMgcHJvdG9jb2wgdGVzdC4KCgkqIGRsbHMvdXNlci9kZGVfbWlzYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgdHlwbyBpbiBSZXVzZURERWxQYXJhbTogR2xvYmFsTG9jayBzdXBwb3NlZCB0byBiZSBHbG9iYWxVbmxvY2suCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVNlbmQgQ0REU19JVEVNUE9TVEVSQVNFIHwgQ0REU19QUkVQQUlOVCBub3RpZnkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcndhcmQgU3RhcnREb2NQcmludGVyQSB0byBTdGFydERvY1ByaW50ZXJXLgoJSW1wcm92ZSB0cmFjZSBpbiB0aGUgdW5pY29kZSB2ZXJzaW9uLgoKCSogZGxscy9tc2h0bWwvcnNyYy5yYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBibGFuay5odG0gcmVzb3VyY2VzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcGxlbWVudGVkIEVNX0dFVExJTkVDT1VOVCBSaWNoRWRpdCBtZXNzYWdlLgoKCSogdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvZ2VucmVzLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLAoJICB0b29scy93cmMvd3JpdGVyZXMuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSAtV3NpZ24tY29tcGFyZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCScuJyBpcyBhIHZhbGlkIGNoYXIgb2YgdElERU5ULgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHRoZSB3aW5lZGJnIHVzYWdlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4gZm9yIE1hbmRyaXZhCglUZXN0IHRoZSBiZWhhdmlvciBvZiBDcmVhdGVEaXJlY3RvcnkoKSB3aGVuIGl0IGhhcyBvbmUgb3IgdHdvIHRyYWlsaW5nCglkb3RzIG9yIHNwYWNlcy4KCVR3ZWFrIHRoZSBwcmV2aW91cyBDcmVhdGVEaXJlY3RvcnkoKSB0ZXN0cyBzbyB3ZSBnZXQgbW9yZSBpbmZvcm1hdGlvbgoJaW4gY2FzZSBvZiBhIGZhaWx1cmUuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB3aW4zMi5hcGkgdG8gbWF0Y2ggY3VycmVudCBzb3VyY2VzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCB3aW5lYnVpbGQgb3BlcmF0aW9uIGluIERhcndpbi4KCgkqIGRsbHMvc2hlbGwzMi9yZWdzdnIuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVnaXN0ZXIgdW5peGZzIGF0IGRlc2t0b3AgbGV2ZWwgaW4gRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4IHR3byBtb3JlIGNvcm5lciBjYXNlcyBpbiBVTklYRlNfZ2V0X3VuaXhfcGF0aCBhbmQgVU5JWEZTX3BhdGhfdG9fcGlkbC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIHRvIHRoZSBuZXh0IG1hc2sgZWRpdCBmaWVsZCB3aGVuIHRoZSBjdXJyZW50IG9uZSBiZWNvbWVzIGZ1bGwuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBtb3JlIG1pc3NpbmcgT0lEcy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVByZXBhcmUgZm9yIGFkZGluZyBuZXcgdGVzdHMuCgktIFB1dCBPbGVJbml0aWFsaXplIGFuZCBPbGVVbmluaXRpYWxpemUgaW4gdGhlIG1haW4gYmxvY2suCgktIE1vdmUgdGVzdF9CaW5kVG9PYmplY3QgYmVmb3JlIHRlc3RfRW51bU9iamVjdHNfYW5kX0NvbXBhcmVJRHMuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJSW1wbGVtZW50ZWQgcmVzIHByb3RvY29sLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIHRhYiBvcmRlciBpbiBtc2kgZGlhbG9ncyByaWdodC4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncyBpbiBDRFJPTV9TY3NpUGFzc1Rocm91Z2hEaXIoKSBhbmQKCUNEUk9NX1Njc2lQYXNzVGhyb3VnaCgpLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJU3ZlbiBQYXNjaHVrYXQgPFN2ZW4uUGFzY2h1a2F0QHQtb25saW5lLmRlPgoJUmVwYWlyZWQgZXh0cmFjdGlvbiBvZiBpY29ucyB3aGVuIGNvbmZpZyBmaWxlIGlzIG1pc3NpbmcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWJzIGZvciBzb21lIEludGVybmV0U2V0T3B0aW9uIG9wdGlvbnMuCgoyMDA1LTA2LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglSZXBsYWNlIGNvbmZpZ3VyZSBtYWNyb3MgYnkgZXhwbGljaXQgcGxhdGZvcm0gY2hlY2tzIChwcm9iYWJseSBub3QKCWNvcnJlY3Qgb24gYWxsIHBsYXRmb3JtcyB5ZXQpLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3JlZ3N2ci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIE9MRUFVVDMyX0RsbCogRnVuY3Rpb25zIHRvIERsbCouCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+IGZvciBNYW5kcml2YQoJLSBDb252ZXJzaW9ucyBiZXR3ZWVuIHZhcmlhbnRzIHR5cGVzIG9mIHRoZSBzYW1lIHNpemUgc2hvdWxkIGlnbm9yZQoJICBvdmVyZmxvd3MuCgktIFRlc3RzIGZvciB0aGlzIGJlaGF2aW91ci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPiBmb3IgTWFuZHJpdmEKCUFkZCBhIGdlbmVyaWMgVFlQRURFU0MgVlQgdG8gVkFSSUFOVCBWVCBtYXBwZXIgc28gd2UgY2FuIHVzZSB0aGUKCXN0YW5kYXJkIFZhcmlhbnQqIHJvdXRpbmVzLiBVc2UgdGhpcyBuZXcgZnVuY3Rpb24gdG8gcHJvcGVybHkgY29weSAmCglkZS1yZWZlcmVuY2UgdGhlIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYywgZGxscy9udGRsbC9zZWMuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBGaXggY2FsY3VsYXRpb24gb2YgZ2VuZXJpYyBwb2ludGVycy4KCS0gTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVN5bmMgY29tbWVudHMgd2l0aCBjb25maWd1cmF0aW9uIGxvY2F0aW9uIGNoYW5nZXMuCgoJKiBzZXJ2ZXIvY2xpcGJvYXJkLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5zdGF0aW9uLmM6CglNYWtlIHRoZSBjbGlwYm9hcmQgaW5mb3JtYXRpb24gbG9jYWwgdG8gdGhlIHByb2Nlc3Mgd2luZG93IHN0YXRpb24uCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOgoJQ2xlYXIgdGhlIHByb2Nlc3MgaGFuZGxlIHRhYmxlIGJlZm9yZSByZWxlYXNpbmcgaXQgdG8gYXZvaWQgcG90ZW50aWFsCglwcm9ibGVtcyB3aXRoIGRlc3RydWN0b3JzIHRyeWluZyB0byBhY2Nlc3MgaGFuZGxlcy4KCgkqIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYvb3BlbmdsLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJRGVsYXkgT3BlbkdMIGFuZCBHREkgaW5pdGlhbGl6YXRpb24gdW50aWwgdGhleSBhcmUgbmVlZGVkLgoKCSogZGxscy9rZXJuZWwvb2xkY29uZmlnLmM6IEdldCByaWQgb2YgdGhlIG9sZCBjb25maWcgY29udmVyc2lvbiBjb2RlLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGF0aW9uIGZvciBFTV9HRVRURVhURVguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zeG1sMmRpZC5oOgoJVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkZWQgZGVmaW5lcyBmb3IgWE1MRE9NIHN0dWZmLgoKCSogZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgaW5zdGFsbHMgb2ZmIG11bHRpcGxlIHZvbHVtZXMgYW5kIHByb3Blcmx5IHB1bGwgdGhlIHByb21wdAoJc3RyaW5nIGZyb20gdGhlIGVycm9yIHRhYmxlLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggR0NDNCB3YXJuaW5nLgoKCSogdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+IGZvciBNYW5kcml2YQoJVXBkYXRlIHRoZSBpbXBvcnQgdGFibGUgY29kZSB0byBlbGltaW5hdGUgYSBmZXcgbWFnaWMgY29uc3RhbnRzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPiBmb3IgTWFuZHJpdmEKCUNvcGUgd2l0aCB0aGUgaW5kZXggaW4gYSBpbXBvcnQgdGFibGUgZW50cnkgYmVpbmcgYSB0eXBlaW5mbyBpbmRleAoJcmF0aGVyIHRoYW4gYSBndWlkIG9mZnNldC4KCgkqIGRsbHMvY2FiaW5ldC9mY2kuYzoKCUdlcm9sZCBKZW5zIFd1Y2hlcnBmZW5uaWcgPGdqd3VjaGVycGZlbm5pZ0BnbXgubmV0PgoJU3VwcG9ydCBmb3IgYmlnLWVuZGlhbiBzeXN0ZW1zLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgY29tcGlsZXIgd2FybmluZyBpbiBBZGRFbnRyeVRvTGlzdCgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUlmIHRoZSB1bml4ZnMgaXMgcm9vdGVkIGF0IHRoZSBEZXNrdG9wIGZvbGRlciwgZm9yd2FyZAoJUGFyc2VEaXNwbGF5TmFtZSBjYWxscyB0byBpdCBpbnN0ZWFkIG9mIHRvIE15Q29tcHV0ZXIuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Jhc2V0eXBzLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGQgYmFzZXR5cHMuaCBiYXNlZCBvbiB0aGUgcHVibGljIGRvbWFpbiBtaW5ndyBoZWFkZXIgYnkgQW5kZXJzCglOb3JsYW5kZXIuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglDb3JyZWN0IHNvbWUgT0lEcy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJSUxGcmVlIGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIHZlcnNpb25zLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQSB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIHN0cnVjdCByZXF1ZXN0X3NlbnNlIG9uIEZyZWVCU0QuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gZml4IGRlY29kaW5nIG9mIGxvbmctZm9ybSBkYXRhIGxlbmd0aHMKCS0gdXNlIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBkZWNvZGluZwoJLSB0ZXN0cyBmb3IgdGhlc2UgY2hhbmdlcwoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtc2h0bWwgdGVzdC4KCjIwMDUtMDYtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9NYWtlZmlsZS5pbjogUnVuIG1ha2UgY2xlYW4gaW4gdGhlIHdpbmFwaSBzdWJkaXIgdG9vLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbnN0YXRpb24uYywgc2VydmVyL2hvb2suYywgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci93aW5kb3cuYywgc2VydmVyL3dpbnN0YXRpb24uYzoKCUtlZXAgdHJhY2sgb2YgdGhlIHdpbmRvd3MgYW5kIGhvb2tzIHVzZWQgYnkgYSB0aHJlYWQgdG8gcHJvcGVybHkKCXJlZnVzZSB0byBjaGFuZ2UgdGhlIHRocmVhZCBkZXNrdG9wIHdoZW4gaXQncyBpbiB1c2UuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzE2LmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWNsYXJhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBUaGUgc2FtcGxlcyBzdWJkaXJlY3Rvcnkgbm8gbG9uZ2VyIGV4aXN0cy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglGaXhlZCBIS0xNL0hLQ1UgbWl4dXAgZm9yIHRoZSBleHRlcm5hbCBmb250cyBrZXkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVsb2NhdGUgdGhlIG1zaSBmaWxlIHRvIHByZXZlbnQgY2QgbG9ja2luZywgY29ycmVjdGVkIHRvIHByb3Blcmx5IG5vdAoJdHJ5IHRvIHJlbG9jYXRlZCAjbm5ubiBoYW5kbGVzIGFzIGZpbGVzLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgZXhwYW5kIE15Q29tcHV0ZXIgaW4gdGhlIGZpbGUgZGlhbG9ncyB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24sCglpZiB1bml4ZnMgaXMgcm9vdGVkIGF0IGRlc2t0b3AuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CgktIEFkZCBhbiBhdWRpbyBjb25maWd1cmUgYnV0dG9uIHdpdGggY29kZSB0byBkaXNwbGF5IHRoZSBzZWxlY3RlZAoJICBhdWRpbyBkcml2ZXIncyBjb25maWd1cmUgZGlhbG9nLgoJLSBBZGQgYW4gYXVkaW8gY29udHJvbCBwYW5lbCBsYXVuY2ggYnV0dG9uLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGEgY29tbWVudCBhYm91dCBFTV9TVFJFQU1JTi4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDA1MDYyOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wNi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglNb3ZlZCBzcG9vbGVyIGNvbmZpZ3VyYXRpb24gdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXFByaW50aW5nXFNwb29sZXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjb21tZW50cyBkZXNjcmliaW5nIHRoZSBmaXJzdCBEV09SRCBpbiBhbiBpbXBvcnQgdGFibGUgZW50cnkuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglNYXJrIGFzIHRvZG8gYSBjb3VwbGUgb2YgdGVzdHMgdGhhdCBjdXJyZW50bHkgZmFpbC4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBFTV9HRVRURVhUTEVOR1RIRVggUmljaEVkaXQgbWVzc2FnZS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglNb3ZlZCBwcGQgZmlsZSBjb25maWd1cmF0aW9uIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxQcmludGluZ1xQUEQgRmlsZXMuCgoJKiBkbGxzL250ZGxsL3NlYy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZvcndhcmQgUnRsQWRkQWNjZXNzKiB0byBhZGRfYWNjZXNzX2FjZS4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIHNvbWUgbWlzc2luZyB0eXBlcyB0byB3aW4zMi5hcGkuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gVmFyQ21wOiBoYW5kbGUgY29tcGFyaXNpb24gb2YgVlRfRU1QVFkgd2l0aCBhbiBpbnRlZ2VyCgktIHNtYWxsIGNvbW1lbnQgZml4CgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaHRtbGRvYy5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9vbGVvYmouYywKCSAgZGxscy9tc2h0bWwvb2xld25kLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJT2xlSW5QbGFjZU9iamVjdFdpbmRvd2xlc3MuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgc29tZSBOdCogZnVuY3Rpb25zLgoKMjAwNS0wNi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUdldCByaWQgb2YgdGhlIFdhdmVNYXBwZXIgYW5kIE1pZGlNYXBwZXIgb3B0aW9ucywgdGhlIGRlZmF1bHRzIHNob3VsZAoJYmUgZ29vZCBlbm91Z2ggaW4gYWxsIGNhc2VzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGVzdCBjYXNlcy4gSG93ZXZlciBtb3N0IGFkZGVkIHRlc3RzIG5lZWQgYSBsb29wYmFjayBwbHVnCWFuZAoJbmVlZCB0byBiZSBlbmFibGVkIGluIHRoZSBjb2RlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUZXN0IEFDQ0VTU19TWVNURU1fU0VDVVJJVFkgQWNjZXNzQ2hlY2sgYmVoYXZpb3VyLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIHVzZSBleGNlcHRpb24gaGFuZGxpbmcgaW4gZW5jb2RpbmcKCS0gY29uc29saWRhdGUgaW50ZWdlciBlbmNvZGVycwoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2JsYW5rLmh0bSwgZGxscy9tc2h0bWwvcnNyYy5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBibGFuay5odG0uCgoJKiBkbGxzL3BzYXBpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcHNhcGkvdGVzdHMvbW9kdWxlLmMsIGRsbHMvcHNhcGkvdGVzdHMvcHNhcGlfbWFpbi5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXdyb3RlIHRoZSBwc2FwaSB0ZXN0IHN1aXRlLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglSZXBsYWNlZCBhbGwgdXNlcyBvZiB0aGUgX19BU01fTkFNRSBtYWNybyBieSB0aGUgYXNtX25hbWUgZnVuY3Rpb24gdG8KCWFsbG93IHJ1bi10aW1lIGRldGVybWluYXRpb24gb2YgdGhlIGNvcnJlY3QgZm9ybWF0LgoKCSogZGxscy93aW5lcHMvdHlwZTFhZm0uYzoKCU1vdmVkIEFGTSBkaXJzIGNvbmZpZ3VyYXRpb24gdG8gYSBzaW5nbGUgQUZNUGF0aCBrZXkgdW5kZXIKCUhLQ1VcU29mdHdhcmVcV2luZVxGb250cy4KCgkqIGRsbHMvd2luZWRvcy9wcGRldi5jOgoJTW92ZWQgcG9ydCBjb25maWd1cmF0aW9uIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxWRE1ccHBkZXYuCgoJKiBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jOgoJTW92ZWQgSS9PIHBvcnQgY29uZmlndXJhdGlvbiB0byBIS0NVXFNvZnR3YXJlXFdpbmVcVkRNXFBvcnRzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBCcm93c2VGb3JGb2xkZXIgZGlhbG9nIHNvIHRoYXQgd2hlbiBpdCBkb2VzIHRoZSBjYWxsYmFja3MgaXQKCXVzZXMgdGhlIGNvcnJlY3QgbWVzc2FnZSBpbnN0ZWFkIG9mIGFsd2F5cyBzZW5kaW5nIEJFRk1fSU5JVElBTElaRUQuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUHJlY2lzZWx5IGNvbXB1dGUgdGhlIG5lY2Vzc2FyeSBwaWRsIGxlbmd0aCBpbiBVTklYRlNfcGF0aF90b19waWRsLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGFpbnQgdGhlIGFyZWEgYmVoaW5kIHRoZSAidHJhbnNwYXJlbnQiIHRleHQgY29udHJvbCB3aGVuIGl0CgljaGFuZ2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvY2Ryb20uYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjaGVjayBmb3Igc2dfaW9faGRyX3QgYW5kIChub3QgdGVzdGVkKSBjaGVjayBmb3Igc2NzaXJlcV90CglwcmVzZW5jZS4KCgkqIGRsbHMvaXRzcy9pdHNzLnNwZWM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglFeHBvcnQgRGxsTWFpbiBhcyBuYXRpdmUgZG9lcy4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIE9wZW5UaHJlYWQgb24gdG9wIG9mIE50T3BlblRocmVhZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglCZWdpbm5pbmdzIG9mIGFuIGluZnJhc3RydWN0dXJlIHRvIGFsbG93IHNwZWNpZnlpbmcgdGhlIHRhcmdldCBDUFUgYW5kCglwbGF0Zm9ybSBhdCBydW4tdGltZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2h0bWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc2h0bWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxjamFjZWtAZ21haWwuY29tPgoJQWRkZWQgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9wcm9jZXNzLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgT3BlblByb2Nlc3Mgb24gdG9wIG9mIE50T3BlblByb2Nlc3MuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvbWxhbmcuc3BlYywgaW5jbHVkZS9tbGFuZy5pZGw6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQ2hhbmdlcyBzdHViIHRvIEZJWE1FIGZvciBHZXRHbG9iYWxGb250TGlua09iamVjdC4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXBvcnQgYSB0b2RvIGFuZCBza2lwIERJQiB0ZXN0cyB3aGVuIHRoZXkgZmFpbCBhdCBhIG5vbi10cnVlY29sb3IKCXNjcmVlbiBkZXB0aC4KCgkqIGluY2x1ZGUvd2lubnQuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHBvaW50ZXIgdHlwZXMgZm9yIHRva2VuIHN0cnVjdHVyZXMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy90aW1lLmMsIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZXBpY3R1cmUuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jLCBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywKCSAgZGxscy91c2VyL3Rlc3RzL21lbnUuYywgcHJvZ3JhbXMvc3RhcnQvc3RhcnQuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSAtV3N0cmljdC1wcm90b3R5cGVzIHdhcm5pbmdzLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsCgkgIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBPcGVuQ29uc29sZTogdHJ5IHRvIG9wZW4gdGhlIFVuaXggY29uc29sZSBpZiB3ZSBmYWlsIHdpdGggd2luZXNlcnZlcgoJLSBrZXJuZWwzMjogc2ltcGxpZnlpbmcgY29kZSBmb3Igb3BlbmluZyBhIGNvbnNvbGUgaGFuZGxlCgktIG1zdmNydDogbm93IGNvcnJlY3RseSBpbml0aWFsaXppbmcgdGhlIGhhbmRsZXMgdG8gdGhlIFdpbmRvd3MKCSAgY29uc29sZQoKCSogZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2RiZ2hlbHAvZHdhcmYuYywKCSAgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLCBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywKCSAgZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL3VzZXIvd2luLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy94MTFkcnYvZGliLmMsIGxpYnMvdW5pY29kZS9jcHRhYmxlLmMsIHRvb2xzL3dyYy9wYXJzZXIueToKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29uc3QgY29ycmVjdG5lc3MgZml4ZXMuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9wcm90b2NvbC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgYWJvdXQgYW5kIHJlcyBwcm90b2NvbHMuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIEtBRkZJTklUWS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGluY2x1ZGUvcmFzLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIGFuZCBmaXggZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCB0ZXN0IG9uIE5UIDQuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNvbnN0aWZ5IHdjbWQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDb25zdGlmeSBhbGwgbmVlZGxlc3NseSBub24tY29uc3Qgd2luZWNmZyBzdHJ1Y3RzLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTm93IGdlbmVyYXRpbmcgYXJndW1lbnQtbGVzcyBmdW5jdGlvbnMgYXMgKHZvaWQpIGluc3RlYWQgb2YgKCkuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCB3aW5kb3cgc2l6ZSBjb21wdXRhdGlvbiBmb3Igbm9uIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgc29tZSBOdCogZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURVUExJQ0FURV8qIGZsYWdzIHNob3VsZCBiZSBkZWZpbmVkIGluIHdpbm50LmguCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6IGNqYWNlayA8Y2phY2VrQGdtYWlsLmNvbT4KCUZpeCB0eXBvIGluIGNvbW1lbnQgYWJvdXQgV2luZSByZWdpc3RyeSBrZXkuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCB3aW5lbWluZSBkZWJ1ZyBjaGFubmVsLgoKCSogZGxscy91c2VyL2VkaXQuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUJldHRlciBub3RpZnkgbWFjcm8KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgZW5jb2RlIGFuZCBkZWNvZGUgb2YgQmFzaWNDb25zdHJhaW50czIsIHNlcXVlbmNlIG9mIGFueQoJLSBmaXggZW5jb2Rpbmcgb2YgaW50ZWdlciB2YWx1ZSAwCgktIG1vcmUgdGVzdHMKCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCUFkZGl0aW9uYWwgdGVzdCBjYXNlcyBmb3IgSVNoZWxsRm9sZGVyX0JpbmRUb09iamVjdC4KCjIwMDUtMDYtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3Byb3RvY29sLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgaW5jbHVkZS93czJzcGkuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNvbWUgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCSJlcnJubyIgaXMgbm90IGEgZ29vZCBjaG9pY2UgZm9yIGEgcGFyYW1ldGVyIG5hbWUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVJlbW92ZSBzb21lIGkzODYgaWZkZWZzIGZvciAxNi1iaXQgZW50cnkgcG9pbnRzIHNpbmNlIHRoZXkgYXJlIG5vCglsb25nZXIgdXNlZCBieSBkZWZhdWx0IG9uIG90aGVyIHBsYXRmb3JtcyBhbnl3YXkuCgoJKiBkbGxzL3VzZXIvZGRlbWwuc3BlYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4IHNvbWUgMTYtYml0IHJldHVybiB2YWx1ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeCBhIGx1cmtpbmcgaW5maW5pdGUgbG9vcCBpbiBTSEdldFBhdGhGcm9tSURMaXN0LgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3Rlc3RzL2VkaXQuYzoKCU1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CgktIFJlbW92ZSB0aGUgb2xkIG1hcmdpbnMgZnJvbSB0aGUgZm9ybWF0IHJlY3RhbmdsZSBiZWZvcmUgYWRkaW5nIHRoZQoJICBuZXcgbWFyZ2lucy4KCS0gQWRqdXN0IHRoZSBmb3JtYXQgcmVjdGFuZ2xlIGFuZCByZXBhaW50IHRoZSBjb250cm9sIGFmdGVyIHRoZQoJICBtYXJnaW5zIGhhdmUgYmVlbiBzZXQuCgktIE5ldyB0ZXN0cy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSB1c2UgU1RBVFVTX1RJTUVPVVQgaW5zdGVhZCBvZiBXQUlUX1RJTUVPVVQKCS0gYWRkIFJUTF8gdG8gb25lIG1vcmUgQ1JJVElDQUxfU0VDVElPTl9ERUJVRwoKCSogZGxscy9udGRsbC9ydGwuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBOdFdhaXRGb3JTaW5nbGVPYmplY3QgZG9lc24ndCByZXR1cm4gV0FJVF9GQUlMRUQuCgktIFVzZSBTVEFUVVNfV0FJVF8wIG5vdCBXQUlUX09CSkVDVF8wLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIE5UIHN0YXR1cyBjb2RlcyBmb3IgZXhjZXB0aW9ucy4KCgkqIGRsbHMvbXNodG1sL21haW4uYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUNoYW5nZWQgbWVzc2FnZSBhYm91dCBNb3ppbGxhIEFjdGl2ZVggQ29udHJvbC4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgUlRMX0NSSVRJQ0FMX1NFQ1RJT04gaW5zdGVhZCBvZiBDUklUSUNBTF9TRUNUSU9OLgoKCSogdG9vbHMvd2luZS5pbmY6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtc2h0bWwuZGxsIHJlZ2lzdHJhdGlvbiB0byB3aW5lLmluZi4KCVJlbW92ZWQga2V5cyB0aGF0IGFyZSByZWdpc3RlcmVkIGJ5IG1zaHRtbC5kbGwuCgoJKiBkbGxzL21zaHRtbC8uY3ZzaWdub3JlLCBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWwuaW5mLCBkbGxzL21zaHRtbC9tc2h0bWwuc3BlYywgZGxscy9tc2h0bWwvcnNyYy5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglJbXBsZW1lbnRlZCBEbGxbVW5dUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCU1ha2UgdW5nZXRjKEVPRikgYSBuby1vcC4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaW5jbHVkZSB3aW5yZWcuaC4KCgkqIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEb24ndCBkdW1wIGNvbnRlbnQgb2Ygb3V0cHV0IGJ1ZmZlcnMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBtb3JlIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2UgdGhlIENhbGxGb3JBdHRyaWJ1dGVzIHJlZ2lzdHJ5IHZhbHVlLCBpbnN0ZWFkIG9mIHByb21vdGluZyB0aGUKCXJvb3QgZm9sZGVyJ3MgU0ZHQU9fRklMRVNZU1RFTSBmbGFnIHRvIHRoZSByZWdpc3RyeS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU3VwcG9ydCBmb3Igc2hlbGxmb2xkZXIncyBDYWxsRm9yQXR0cmlidXRlcyByZWdpc3RyeSB2YWx1ZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvY3VtZW50IGhvdyB0aGUgbmF0aXZlIGxheXMgb3V0IHRoZSBpbnRlcm5hbCBjb21wb25lbnRzIG9mCgkgIGJ1dHRvbnMuCgktIEZpeCBjb250cm9sIHRvIGZvbGxvdyB0aGVzZSBydWxlcy4KCS0gRG9uJ3QgcmVkcmF3IGRpc2FibGVkIGJ1dHRvbnMuCgktIFBhZGRpbmcgaXMgbmV2ZXIgbGVzcyB0aGF0IEdldFN5c3RlbU1ldHJpY3MoU01fe0NYLENZfUVER0UpLgoJLSBDaGFuZ2UgZGVmYXVsdCBpTGlzdEdhcCB2YWx1ZSB0byA0IHRvIG1hdGNoIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcmVncmVzc2lvbiBpbiBJRSB3aGVyZSB0aGUgRmF2b3VyaXRlcyBtZW51IGRpZG4ndCBhcHBlYXIKCWNvcnJlY3RseSBiZWNhdXNlIHRoZSBoZWlnaHQgYW5kIHdpZHRoIHdlcmUgc3dhcHBlZCBpbiB0aGUgcGFnZXIKCWNvbnRyb2wuCgoyMDA1LTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zZWMuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgUnRsQWRkQXVkaXRBY2Nlc3NBY2UuCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLCBkbGxzL2NhYmluZXQvZmNpLmM6CglHZXJvbGQgSmVucyBXdWNoZXJwZmVubmlnIDxnand1Y2hlcnBmZW5uaWdAZ214Lm5ldD4KCVNvbWUgRkNJIHdvcmsuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVBlcmZvcm0gRXhlY3V0ZUFjdGlvbiBhdCBVSUxldmVsIDIuCgoJKiBkbGxzL21zaS9maWxlcy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVkbyBob3cgd2UgZXh0cmFjdCBmaWxlcyBmcm9tIGEgY2FiaW5ldCBpbiBvcmRlciB0byBkcmFtYXRpY2FsbHkKCWltcHJvdmUgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgaWYgcGlja2luZyBhbmQgY2hvb3NpbmcgZmlsZXMgb3V0IG9mCgl0aGUgY2FiaW5ldC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIENyZWF0ZVNob3J0Y3V0cyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKCSogZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jOgoJUnRsR2V0RnVsbFBhdGhOYW1lX1Ugc2hvdWxkIHJlbW92ZSB0aGUgdHJhaWxpbmcgZG90IG9uIGRpcmVjdG9yeQoJbmFtZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGluY2x1ZGUvd2luaW9jdGwuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBEZWZpbmUgRlNDVExfUElQRV9JTVBFUlNPTkFURS4KCS0gSW1wbGVtZW50IEltcGVyc29uYXRlTmFtZWRQaXBlQ2xpZW50LgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWQzZC91dGlscy5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF90eXBlcy5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIHNhbXBsZXJzLgoJU3dpdGNoIGZyb20gdXNpbmcgZDNkOSBjb25zdGFudHMgdG8gd2luZWQzZCBjb25zdGFudHMgc28gdGhhdCB0aGVyZSdzCglubyByZWN1cnNpdmUgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSBoYW5kbGUgLTEgYXMgYSByZWdpc3RyeSBrZXkgcm9vdC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNvcnJlY3QgdGhlIGVudHJpZXMgZm9yIFtOdHxad11PcGVuU3ltYm9saWNMaW5rT2JqZWN0LgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0cmFuc3BhcmVuY3kgaW4gdGhlIHRleHQgY29udHJvbC4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm90b3R5cGUgYW5kIGZpeCBSdGxwTnRDcmVhdGVLZXkuCgoJKiB0b29scy9tYWtlX2N0ZXN0cy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglDaGFuZ2UgaGVhZGVycyB0byA8d2luZG93cy5oPiBpbiBvcmRlciB0byBwcmV2ZW50IGEgY29tcGlsYXRpb24KCWZhaWx1cmUgd2l0aCBnZW5lcmF0ZWQgZmlsZXMgb24gRGFyd2luLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGVzdHMgZm9yIFNoZWxsRm9sZGVyJ3MgQ2FsbEZvckF0dHJpYnV0ZXMgdmFsdWUuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJUGFpbnQgdGhlIGJhY2tncm91bmQgd2l0aCB0aGUgY29ycmVjdCBjb2xvciBpZiBXU19CT1JERVIuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBTZWxmUmVnTW9kdWxlcyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKMjAwNS0wNi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUFsbG9jYXRlIG9yZGluYWxzIGluIHRoZSBvcmRlciBvZiB0aGUgZGVjbGFyYXRpb25zIGluIHRoZSBzcGVjIGZpbGUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCS0gQWRkIHNvbWUgZGVzY3JpcHRpb25zIGZvciBQYWdlU2V0dXBEbGcgZnVuY3Rpb25zLgoJLSBJbXBsZW1lbnQgdXNlciBwYWludCBob29rIHN1cHBvcnQgYW5kIFBTRF9FTkFCTEVQQUdFUEFJTlRIT09LCgkgIGNoZWNraW5nLgoKCSogZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJVmlld09iamVjdFsyXSBpbnRlcmZhY2UuCgoJKiBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvaXRzcy5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVXNlIEdVSURzIGZyb20gaXRzcy5pZGwuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJTWFrZSBhbGwgbmV3bHkgY3JlYXRlZCBzdXJmY2VzIGRpcnR5LCBzbyB0aGF0IHRoZXkgYXJlIGxvYWRlZCBwcm9wZXJseQoJdGhlIGZpcnN0IHRpbWUgYXJvdW5kLgoJUmVwbGFjZSBzb21lIGNhbGxzIHRvIGN1YmV0ZXh0dXJlIGluIGJhc2V0ZXh0dXJlIHRvIGNhbGxzIHRvCgliYXNldGV4dHVyZS4KCUNoZWNrIHRoYXQgdGhlIGxldmVsIGlzbid0IG91dCBvZiBib3VuZHMgaW4gY2FsbHMgdG8gdGV4dHVyZS4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIE1TSSBpY29uIGNvbnRyb2wgd29yay4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIGNvbXBvbmVudCwgZmVhdHVyZSBhbmQgZmlsZSBsb2FkaW5nIHRvIHVzZSBNU0lfSXRlcmF0ZVJlY29yZHMuCgoJKiBpbmNsdWRlL21zaWRlZnMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIHRoZSBtc2lkYkNvbnRyb2xBdHRyaWJ1dGVzIGVudW1lcmF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jLCBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNYWRlIHRoZSByZWdpc3RyeSBjYWNoZSBtb3JlIGdlbmVyYWwuCgoJKiBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJLSBSZXBsYWNlZCBzZXJ2ZXIgcmVxdWVzdHMgYnkgbmF0aXZlIEFQSXMgaW4gRW51bVByb2Nlc3NNb2R1bGVzLAoJICBHZXRNb2R1bGVCYXNlTmFtZVcsIEdldE1vZHVsZUZpbGVOYW1lRXhXIGFuZCBHZXRNb2R1bGVJbmZvcm1hdGlvbi4KCS0gTWFrZSBFbnVtUHJvY2Vzc01vZHVsZXMgcmV0dXJuIG1vZHVsZXMgaW4gbG9hZCBvcmRlcgoJLSBTZXQgRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiBpbiBHZXRNb2R1bGVJbmZvcm1hdGlvbiB3aGVuIGZhaWxpbmcKCSAgZHVlIHRvIChjYiA8IHNpemVvZihNT0RVTEVJTkZPKSkuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBCdWlsZFNlY3VyaXR5RGVzY3JpcHRvckEvVy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9zd2FwY2hhaW4uYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudCBzd2FwY2hhaW5zLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgUmVnaXN0ZXJGb250cyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZvcndhcmQgQWRkQXVkaXRBY2Nlc3NBY2UgdG8gaXRzIFJ0bCBjb3VudGVycGFydC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBSdGxBZGRBdWRpdEFjY2Vzc0FjZS4KCgkqIGRsbHMvZDNkaW0vZDNkaW0uc3BlYywgZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywKCSAgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL21wci9tcHIuc3BlYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVNvcnQgZW50cnkgcG9pbnRzIGluIHRoZSBzYW1lIG9yZGVyIGFzIFdpbmRvd3MuCgoJKiB0b29scy93aW5lZHVtcC9lbWYuYywgdG9vbHMvd2luZWR1bXAvbG5rLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVjbGFyYXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBtb3JlIFZhckZvcm1hdCBmaXhlcyBmb3IgbnVtYmVyIGZvcm1hdHMgKGV4cG9uZW50LCBtaXhlZCAnIycgYW5kICcwJwoJICBpbiBmb3JtYXRzLCByb3VuZGluZywgZXRjKS4gU2ltcGxpZnkgdGhlIGNvZGUuCgktIHByZXZpb3VzIFZhckZvcm1hdCB0b2RvX3dpbmUgdGVzdHMgcGFzcyBub3cgKyBhZGQgbW9yZSB0ZXN0cwoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglOVDQgZG9lc24ndCBzdXBwb3J0IFByb2Nlc3NJb0NvdW50ZXJzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSBhbiBvdXRkYXRlZCBjb21tZW50IGluIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KCgkqIGRsbHMvbnRkbGwvb20uYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJldHVybiBTVEFUVVNfT0JKRUNUX05BTUVfTk9UX0ZPVU5EIGluIE50T3BlblN5bWJvbGljTGlua09iamVjdCAodW50aWwKCWltcGxlbWVudGVkKS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIFdyaXRlSW5pVmFsdWVzIHRvIHVzZSBNU0lfSXRlcmF0ZVJlY29yZHMuCgoyMDA1LTA2LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgUHVibGlzaFByb2R1Y3QgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9jYXJkcy9jYXJkcy5zcGVjLAoJICBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2QzZGltL2QzZGltLnNwZWMsCgkgIGRsbHMvZDNkeDgvZDNkeDguc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9nbHUzMi9nbHUzMi5zcGVjLAoJICBkbGxzL2dsdXQzMi9nbHV0MzIuc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLAoJICBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL3dpbmVhbHNhL3dpbmVhbHNhLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL3dpbmVqYWNrLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYzoKCVNvcnQgZW50cnkgcG9pbnRzIGFscGhhYmV0aWNhbGx5LgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBHZXREZXZpY2VDYXBzIHNvIHRoYXQgaXQgdXNlcyB3aW5lZDNkY2FwcyBhcyByZXF1aXJlZCBieSB0aGUKCWVhcmxpZXIgZGV2aWNlIGNhcHMgcGF0Y2guCgoJKiBpbmNsdWRlL21zeG1sLmlkbDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkIGRlZmluaXRpb24gZm9yIElYTUxBdHRyaWJ1dGUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBSZWdpc3RlclR5cGVMaWJyYXJpZXMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZpeCBkdXBsaWNhdGlvbiBvZiBfR2V0bmFtZXMgYW5kIF9HZXR0bmFtZXMsIG9ubHkgdGhlIGxhdHRlciBhY3R1YWxseQoJZXhpc3RzLgoKCSogZGxscy91c2VyL2NsaXBib2FyZC5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvbXNnYm94LmMsCgkgIGRsbHMvdXNlci9zeXNwYXJhbXMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWNsYXJhdGlvbnMsIHJlbW92ZSB1bnVzZWQgY29kZS4KCgkqIGluY2x1ZGUvbXN4bWwuaWRsOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGQgbWlzc2luZyBndWlkcyBhbmQgZGVjbGFyYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJLSBNb3ZlIHRlc3QgaW5pdCBjb2RlIGJhY2sgdG8gU1RBUlRfVEVTVChzaGxmb2xkZXIpLgoJLSBNb3ZlIGNyZWF0aW9uIGFuZCBjbGVhbnVwIG9mIGEgdGVzdC1mb2xkZXJzIG5lYXJlciB0bwoJICB0ZXN0X0VudW1PYmplY3RzLgoKCSogZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJLSBVc2Ugc21hbGxlciBudW1iZXJzIGFzIGNvb3JkaW5hdGVzIGZvciBtYXBwaW5nIHRlc3RzIHRvIGF2b2lkCgkgIHJvdW5kaW5nLWVycm9ycy4KCS0gU2ltcGxpZnkgY2FsY3VsYXRpb24gb2YgbWFwcGVkIGNvb3JkaW5hdGVzIGZvciBNTV9URVhULgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgTGF1bmNoQ29uZGl0aW9ucyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKCSogZGxscy94MTFkcnYveGZvbnQuYzoKCU1vdmVkIGZvbnQgc2V0dGluZ3MgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXFgxMSBEcml2ZXJcRm9udHMuCgoJKiBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLCBkbGxzL2RtYmFuZC9kbXV0aWxzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdXAgZGVjbGFyYXRpb25zLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBSdGxHVUlERnJvbVN0cmluZyBhbmQgUnRsU3RyaW5nRnJvbUdVSUQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmg6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJUmVtb3ZlIHNvbWUgbW9yZSAtV3N0cmljdC1wcm90b3R5cGVzIHdhcm5pbmdzLgoKCSogZGxscy9hdGwvYXRsYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtaXNzaW5nIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJU2tpcCBBQ0wgdGVzdHMgb24gV2luOXguCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYSBmdW5jdGlvbiBzdGF0aWMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBQcm9jZXNzSWRUb1Nlc3Npb25JZC4KCgkqIHRvb2xzL3dyYy90cmFuc2xhdGlvbi5jLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgZnVuY3Rpb24gcHJvdG90eXBlcyB0byBoZWFkZXIuCgoyMDA1LTA2LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglEb24ndCByZXF1aXJlIGV4ZWN1dGUgcGVybWlzc2lvbiBvbiB0aGUgcHJvY2VzcyBoZWFwLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9zdWJjbGFzcy5jLCBkbGxzL2RpbnB1dC90ZXN0cy9kaW5wdXRfdGVzdC5oLAoJICBkbGxzL2RpbnB1dC90ZXN0cy9tb3VzZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsCgkgIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmMsIGRsbHMvbXNhY20vdGVzdHMvbXNhY20uYywKCSAgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3RpbWUuYywKCSAgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi90ZXN0cy9tb25pa2VyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oLAoJICBkbGxzL3VzZXIvc3RhdGljLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLAoJICBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSBtb3JlIC1Xc3RyaWN0LXByb3RvdHlwZXMgd2FybmluZ3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBDb3N0RmluYWxpemUgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgSXNUb2tlblJlc3RyaWN0ZWQuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUFkZCBQQUdFX0dVQVJEIGZsYWcgdG8gdGhlIHJldHVybmVkIHByb3RlY3Rpb24gb2YgZ3VhcmQgcGFnZXMuCgoJKiBkbGxzL250ZGxsL3Byb2Nlc3MuYywgZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hhbmdlIFByb2Nlc3NCYXNpY0luZm9ybWF0aW9uIHRvIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSByZXN0LgoJVXNlIEtFUk5FTF9VU0VSX1RJTUVTIGZvciBQcm9jZXNzVGltZXMuCglBZGQgdGVzdHMgZm9yIHZtLCBpbywgdGltZXMgYW5kIGhhbmRsZWNvdW50IGluZm8gY2xhc3Nlcy4KCUZpeGVzIGZvciAtV3N0cmljdC1wcm90b3R5cGVzIHdhcm5pbmdzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglBY2NlcHQgRFNFUlJfTk9EUklWRVIgZnJvbSBJRGlyZWN0U291bmRDYXB0dXJlX0NyZWF0ZUNhcHR1cmVCdWZmZXIuCgoJKiBkbGxzL21zaS9oZWxwZXJzLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggc2l0dWF0aW9ucyB3aGVyZSBUQVJHRVRESVIgaXMgc2V0IHRvIGEgbm9uIFwgdGVybWluYXRlZAoJcGF0aC4gRml4ZXMgYSBmZXcgaW5zdGFsbGVycy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIFdyaXRlUmVnaXN0cnlWYWx1ZXMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGluY2x1ZGUvYW1zdHJlYW0uaWRsOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGQgZGVmaW5pdGlvbnMgZm9yIEFNTVNGX1NUT1BJRk5PU0FNUExFUyBhbmQgQU1NU0ZfTk9TVEFMTC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgR2V0VHJ1c3RlZSogZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJQ2xlYW51cCB0aGUgc2hsZm9sZGVyIHRlc3QgYSBiaXQgbW9yZS4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2FsbCB3aW5lZDNkIGZvciBHZXREaXJlY3QzRCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSAtPmRpcmVjdDNEIGluc3RhbmNlLAoJd2hpY2ggaXMgbm8gbG9uZ2VyIHZhbGlkLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgQ3JlYXRlRm9sZGVycyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKCSogZGxscy9tc2kvZmlsZXMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1cGxpY2F0ZSBmaWxlcyBzaG91bGQgbm90IGZhaWwgaWYgdW5hYmxlIHRvIGdldCBEZXN0aW5hdGlvbgoJRGlyZWN0b3J5LgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUluaXRpYWxpemUgZXh0ZW5zaW9ucyBhZnRlciBjb3JyZWN0IGNvbnRleHQgaXMgY3JlYXRlZC4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIHJlZ19nZXRfbG9nZm9udDoKCS0gaGFuZGxlIHRoZSBjYXNlIHRoYXQgdGhlIHJlZ2lzdHJ5IHZhbHVlIGlzIGEgTE9HRk9OVDE2OwoJLSBpZiB0aGUgbGZIZWlnaHQgZmllbGQgaXMgcG9zaXRpdmUsIGl0IHJlcHJlc2VudHMgdGhlIGZvbnQncyBwb2ludAoJICBzaXplIGFuZCBtdXN0IGJlIGNvbnZlcnRlZCB0byBsb2dpY2FsIHVuaXRzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQ2hhbmdlZCBzZXR0aW5nIGRlZmF1bHQgcG9ydCBudW1iZXIgZnJvbSBIVFRQX0Nvbm5lY3QgdG8KCUh0dHBPcGVuUmVxdWVzdFcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgaW5jbHVkZS93aW5pbmV0Lmg6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CgktIEFkZGVkIG5ldyBJTlRFUk5FVF9PUFRJT04qIGRlZmluZXMuCgktIEZpeGVkIEludGVybmV0U2V0T3B0aW9uVyB1bmtub3duIG9wdGlvbiBoYW5kbGluZywgYW5kIGFkZGVkCgkgIElOVEVSTkVUX09QVElPTl9ESVNBQkxFX1BBU1NQT1JUX0FVVEguCgoJKiBkbGxzL2tlcm5lbC9maWJlci5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC90aHJlYWQuYzoKCURvbid0IHJlcXVpcmUgZXhlY3V0ZSBwZXJtaXNzaW9uIGZvciB0aHJlYWQgc3RhY2tzLgoKCSogZGxscy9udGRsbC9hdG9tLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL2RlYnVnYnVmZmVyLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL2Vycm9yLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvaGFuZGxldGFibGUuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3BhdGguYywKCSAgZGxscy9udGRsbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcmVsYXkuYywKCSAgZGxscy9udGRsbC9yZXNvdXJjZS5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGRsbHMvbnRkbGwvdmVyc2lvbi5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaW5jbHVkZSB3aW5iYXNlLmggb3Igd2luZXJyb3IuaCB3aGVuIG5vdCBuZWNlc3NhcnkuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYywKCSAgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9mZC5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYWlsc2xvdC5jLCBzZXJ2ZXIvbWFwcGluZy5jLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBpbmNsdWRlIHdpbmJhc2UuaCB3aGVuIGl0J3Mgbm90IG5lY2Vzc2FyeS4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglJbXByb3ZlZCBPYnRhaW5Vc2VyQWdlbnRTdHJpbmcgc3R1Yi4KCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL2dyYXBoLmMsIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywKCSAgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsCgkgIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsIGRsbHMvZG1pbWUvc2VxdHJhY2suYywKCSAgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLAoJICBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLCBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gdXNlIGludGVyZmFjZXMgcmF0aGVyIHRoYW4gaW50ZXJuYWwgZnVuY3Rpb25zCgktIHJlbW92ZSBkZWNsYXJhdGlvbiBvZiBBZGRSZWYgYW5kIFF1ZXJ5SW50ZXJmYWNlIGZ1bmN0aW9ucyBmcm9tCgkgIGhlYWRlcnMKCgkqIGluY2x1ZGUvd2luZS90ZXN0Lmg6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUZpeCB3aW5zb2NrLmggYW5kIHN0ZGxpYi5oIGNvbGxpc2lvbiBieSBpbmNsdWRpbmcgd2luZG93cy5oIGluc3RlYWQKCW9mIHRoZSBwcmV2aW91cyBoZWFkZXJzLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBhIHR5cG8uCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGRlZCBLRVJORUxfVVNFUl9USU1FUyBzdHJ1Y3QuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL05sLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXBkYXRlIER1dGNoIHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUHJvcGFnYXRlIHRoZSByb290IGZvbGRlcidzIGF0dHJpYnV0ZXMgdG8gdGhlIHJlZ2lzdHJ5LgoKMjAwNS0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL2xpY2Vuc2UuYywgcHJvZ3JhbXMvd2luZWZpbGUvc3BsaXRwYXRoLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVtb3ZlIHN1cGVyZmx1b3VzIGluY2x1ZGUgc3RhdGVtZW50cy4KCgkqIGRsbHMvcXVhcnR6L2NvbnRyb2wuYywgZGxscy9xdWFydHovZW51bW1lZGlhLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywKCSAgZGxscy9xdWFydHovdHJhbnNmb3JtLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGZ1bmN0aW9ucyBzdGF0aWMsIGZpeCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGF2b2lkIHdpbnRlcm5sLmggZGVwZW5kaW5nIG9uIHdpbmJhc2UuaAoJLSBkZWZpbmUgUlRMIHZlcnNpb25zIG9mIFRJTUVfWk9ORV9JTkZPUk1BVElPTiBhbmQgU1lTVEVNVElNRQoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jOgoJTW92ZWQgdGhlIGF1ZGlvIGRyaXZlciBjb25maWd1cmF0aW9uIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxEcml2ZXJzIGFuZAoJY2hhbmdlZCBpdCBhIGJpdCB0byBmb2xsb3cgdGhlIG1vZGVsIG9mIHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jOgoJTW92ZWQgYSBmZXcgcmVnaXN0cnkga2V5cyBmcm9tIEhLTE1cU29mdHdhcmVcV2luZSB0bwoJSEtDVVxTb2Z0d2FyZVxXaW5lIGZvciBjb25zaXN0ZW5jeS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCU1vdmVkIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBIS0NVXFNvZnR3YXJlXFdpbmVcQWxzYSBEcml2ZXIuCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtdXRpbHMuYywgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWxzbyBjaGVjayBmb3IgL3Vzci9YMTFSNi9saWIvbGliR0wuZHlsaWIuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglGaXggcmV0dXJuZWQgdmFsdWUgZm9yIFNQSV9TRVRNT1VTRUJVVFRPTlNXQVAuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2RkcmF3bW9kZXMuYywgZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYWRlcnMuYywKCSAgZGxscy9tc3ZjcnRkL3Rlc3RzL2RlYnVnLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvYXBpYnVmLmMsIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCU1ha2Ugc29tZSBmdW5jdGlvbiBzdGF0aWMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmFtcCB0aGUgaW5pdGlhbGl6YXRpb24gZm9yIEFsc2EuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCS0gUmVhbGl6ZSBEb0Vudmlyb25tZW50U3Vic3RBIHZpYSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NBLgoJLSBGaXggdHlwZXMgYW5kIHJldHVybiB2YWx1ZXMuCgktIEFkZCBwcm90b3R5cGUgaW50byBzaGVsbGFwaS5oLgoKCSogZGxscy9tc2kvZmlsZXMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBNU0lfSXRlcmF0ZVJlY29yZHMgZm9yIER1cGxpY2F0ZUZpbGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgTVNJX0l0ZXJhdGVSZWNvcmRzIGZvciBwcm9jZXNzaW5nIGFjdGlvbnMuCglTb21lIHdoaXRlc3BhY2UgY2xlYW51cCBhbmQgcmVwbGFjZSBhIGNvbW1lbnQgYmxvY2sgSSBkaWQgbm90IHdhbnQgdG8KCXJlbW92ZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9sbWhhc2guYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBkbGxzL2FkdnBhY2svdGVzdHMvYWR2cGFjay5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvZGRyYXcvdGVzdHMvZDNkLmMsIGRsbHMvZGRyYXcvdGVzdHMvZGRyYXdtb2Rlcy5jLAoJICBkbGxzL2RkcmF3L3Rlc3RzL2RzdXJmYWNlLmMsIGRsbHMvZGlucHV0L3Rlc3RzL2pveXN0aWNrLmMsCgkgIGRsbHMvZGlucHV0L3Rlc3RzL2tleWJvYXJkLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYywgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvZ2RpL3Rlc3RzL2JydXNoLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywKCSAgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS90ZXN0cy9kYi5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmMsIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcmVnLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLCBkbGxzL3FjYXAvcWNhcF9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsCgkgIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jLCBkbGxzL3dpbmVwcy9hZm0uYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3Byb3RvY29sLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuaCwKCSAgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBtb3JlIC1Xc3RyaWN0LXByb3RvdHlwZXMgd2FybmluZ3MuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvbWVudS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCU93bmVyIGRyYXduIG1lbnUgaXRlbSBzaXplIGNhbGN1bGF0aW9uIGZpeGVzOgoJLSBDb3JyZWN0IHdpZHRoIGNhbGN1bGF0aW9uIG9mIG93bmVyIGRyYXduIG1lbnUgaXRlbXM7CgktIFNldCB0aGUgaGVpZ2h0IHZhbHVlIGluIHRoZSBNRUFTVVJFSVRFTSBzdHJ1Y3QgdG8gdGhlIHNhbWUgdmFsdWUgYXMKCSAgV2luZG93cyAoTlQvMmsvWFApIGRvZXMgKHByb2JsZW0gZGVidWdnZWQgYnkgRmVsaXggTmF3b3RobmlnKTsKCS0gQWRkIHRlc3RzIGZvciB0aGUgZml4ZXMgYWJvdmU7CgktIEFsc28gYWRkIHRlc3RzIGZvciBtZW51IGJhcnMgd2l0aCBvd25lciBkcmF3biBpdGVtcy4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggcm91bmRvZmYgZXJyb3IgdG8gcHJldmVudCBuZWdhdGl2ZSBsZW5ndGguCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0YWJzIHdvcmsgaW4gbXNpIGRpYWxvZ3MuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJV29sZmdhbmcgVGhhbGxlciA8d29sZmdhbmcudGhhbGxlckBnbXgubmV0PgoJVXNlIF9fQVNNX05BTUUgYW5kIEhBVkVfQVNNX0RPVF9TSVpFIGluIGEgZmV3IHBsYWNlcyBpbiB3aW5lYnVpbGQKCXdoZXJlIHRoZXkgaGF2ZSBiZWVuIG1pc3NpbmcgKG5lZWRlZCBmb3IgRGFyd2luL3g4NikuCgoJKiBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZWN1cml0eS5oLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90b2tlbi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBpbXBlcnNvbmF0aW5nIGEgdG9rZW4uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZTIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgc29tZSByZWdpc3RyeSBoZWxwZXIgZnVuY3Rpb25zIHRvIHVzZSB1bmljb2RlIHZlcnNpb25zIG9mCglDTFNJRCAmIHJlZ2lzdHJ5IGZ1bmN0aW9ucyAodW50ZXN0ZWQpLgoKCSogZGxscy9nZGkvdGVzdHMvYml0bWFwLmM6IExhdXJpIFR1bG1pbiA8dHVsbWluQGdtYWlsLmNvbT4KCS0gYWRkIHNvbWUgdGVzdHMgZm9yIHtHZXR8U2V0fVBpeGVsCgktIHNraXAgdGVzdHMgdGhhdCBmYWlsIGluIHdpbjl4CgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Tdi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBTeW5jIHdpdGggUmVhY3RPUyByZXBvc2l0b3J5LCByZS1pbmRlbnQgYW5kIHJlbW92ZSB0YWJzIGluIHJlc291cmNlCgkgIHNjcmlwdHMgYW5kIGhlYWRlciBmaWxlcy4KCS0gQWRkICNpZmRlZiBfX1dJTkVfXyBmb3IgdGhlIFdpbmUgQWJvdXQgZGlhbG9nLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0TWVudUJhckluZm8uCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBSdGxJbXBlcnNvbmF0ZVNlbGYsIFJldmVydFRvU2VsZiBhbmQgTWFwR2VuZXJpY01hc2suCgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIE1DSV8oVW4pTWFwTXNnMTZUbzMyVyB3aXRoIHdNc2cgPT0gTUNJX09QRU4oX0RSSVZFUikgb25seSBkbwoJc3RyZHVwQXRvVyBvbiB0aG9zZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGZsYWdnZWQgdG8gYmUgYSBzdHJpbmcuCgoJKiBsaWJzL3dpbmUvbW1hcC5jOiBXb2xmZ2FuZyBUaGFsbGVyIDx3b2xmZ2FuZy50aGFsbGVyQGdteC5uZXQ+CglJbXBsZW1lbnQgdHJ5X21tYXBfZml4ZWQgZm9yIERhcndpbi4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglXb2xmZ2FuZyBUaGFsbGVyIDx3b2xmZ2FuZy50aGFsbGVyQGdteC5uZXQ+CglXaW5lYnVpbGQgZGFyd2luL3g4Ni1zcGVjaWZpYyBmaXhlczoKCS0gQXNzZW1ibGVyIGludGVycHJldHMgLmFsaWduIGFzIHBvd2VyLW9mLXR3bwoJLSBBZGQgLndlYWtfcmVmZXJlbmNlIHRvIG91dHB1dCB3aGVyZSBnY2MgMy4zIHN3YWxsb3dzIGl0CgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWxsb3cgbnVsbCBwb2ludGVycyBmb3IgRU1fR0VUU0VMIG1lc3NhZ2UgKGFzIE1TRE4gc2F5cykuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIHN0YXQncyBkZXYvaW5vZGUgdG8gY29tcGFyZSBwYXRocyBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUKCXN0cmluZ3MuIERlZmVyIGJ1aWxkaW5nIGEgZm9sZGVyJ3MgY2hpbGRyZW4gU0hJVEVNSURTIHVudGlsIGV4cGxpY2l0bHkKCWFza2VkIGZvci4KCgkqIGRsbHMvbnRkbGwvcHJvY2Vzcy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIFByb2Nlc3NWbUNvdW50ZXJzLCBQcm9jZXNzVGltZXMgYW5kCglQcm9jZXNzSGFuZGxlQ291bnQuCglDaGFuZ2VkIFByb2Nlc3NJb0NvdW50ZXJzIHRvIG1hdGNoIHdpbmRvd3MgYmVoYXZpb3IuCgoJKiBkbGxzL2tlcm5lbC9jaGFuZ2UuYywgZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRsbHMva2VybmVsL2NwdS5jLAoJICBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMva2VybmVsL2ZpYmVyLmMsCgkgIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvaGVhcC5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvb2xkY29uZmlnLmMsIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGRsbHMva2VybmVsL3B0aHJlYWQuYywgZGxscy9rZXJuZWwvcmVsYXkxNi5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvc3lzbGV2ZWwuYywgZGxscy9rZXJuZWwvc3lzdGVtLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC92aXJ0dWFsLmMsCgkgIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZG9uJ3QgaW5jbHVkZSB3aW5yZWcuaAoJLSBpbmNsdWRlIGtlcm5lbF9wcml2YXRlLmggdG8gZ2V0IGRlY2xhcmF0aW9uIGZvciBjb252ZXJ0X29sZF9jb25maWcoKQoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9yZWdpc3RyeS5jLAoJICBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUltcGxlbWVudCBSdGxDb3B5U2VjdXJpdHlEZXNjcmlwdG9yLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIHRoZSBSUEMgY29kZSB0byB1c2UgdGhlIHVuaWNvZGUgdmVyc2lvbnMgb2YgdGhlIENMU0lEICYKCXJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvdGVzdHMvY29tcG9iai5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDaGFuZ2Ugc29tZSBvZiB0aGUgcmVnaXN0cnkgaGVscGVyIGZ1bmN0aW9ucyB0byB1c2UgdGhlIHVuaWNvZGUKCSAgdmVyc2lvbnMgb2YgdGhlIENMU0lEICYgcmVnaXN0cnkgZnVuY3Rpb25zLgoJLSBSZWluZGVudCBDb0dldENsYXNzT2JqZWN0IGFuZCBvdXRwdXQgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgY2xhc3MKCSAgaXNuJ3QgcmVnaXN0ZXJlZC4KCS0gQWRkIHRlc3RzIGZvciB0aGUgdG91Y2hlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBTQ1JPTExfRHJhd1Njcm9sbGJhciBhbGxvY2F0ZSB0aGUgaW50ZXJuYWwgaW5mbyBpZiBuZWVkZWQuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUEZfTlhfRU5BQkxFRCBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS93aW5nZGkuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSBNQUtFUE9JTlRTIHVzYWdlIGluIFdpbmUuCgoJKiBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gRml4IGEgd2FybmluZyBjYXVzZWQgYnkgdGhlIFRBQiBwYXRjaC4KCS0gSW5pdGlhbGl6ZSAqcGNiIHRvIGEgbGFyZ2UgdmFsdWUgYmVmb3JlIGNhbGxpbmcgdGhlIHN0cmVhbS1vdXQKCSAgY2FsbGJhY2sgKHRvIG1ha2UgYXBwbGljYXRpb25zIHRoYXQgZG9uJ3Qgc2V0ICpwY2IgYXQgYWxsIGhhcHB5KS4KCS0gRG9uJ3QgZmx1c2ggdGhlIG91dHB1dCBzdHJlYW0gd2hlbiBlcnJvciBjb25kaXRpb24gaXMgc2V0LgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIHNoZWxsMzIgdGVzdHMgbG9hZGFibGUgb24gTlQ0LgoKCSogZGxscy9udGRsbC9maWxlLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCU1vdmUgdGhlIChNYWMgT1MgWCkgSU9LaXQgaGVhZGVycyB0byB0aGUgdG9wIG9mIHRoZSBmaWxlIHRvIHByZXZlbnQgYQoJY29tcGlsYXRpb24gZmFpbHVyZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglDaGFuZ2UgV1NfYmluZCB0byBhY2NlcHQgYW4gc2FfZmFtaWx5IG9mIDAgYXMgImRvbid0IGNhcmUiLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVN5bmMgbXN2Y21ha2VyIHdpdGggbWFrZV9jdGVzdHMgdG8gZ2VuZXJhdGUgdmFsaWQgY29kZS4KCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5jLCBkbGxzL2l0c3Mvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvdGltZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgZnVuY3Rpb25zIHN0YXRpYy4KCjIwMDUtMDYtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGhlIHdpbigxNnwzMikuYXBpIGZpbGVzIHRvIG1hdGNoIHRoZSBjdXJyZW50IHNvdXJjZXMuCgoJKiBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wcmV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgY29udHJvbCBldmVudHMgdG8gcmV0dXJuIGNvZGVzIHRvIGhhbHQgdGhlIHByb2Nlc3Npbmcgb2YgZXZlbnQuCglOZWVkZWQgZm9yIHRoZSBTZXRUYXJnZXRQYXRoIEV2ZW50LgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL2VuY29kZS5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgQ3J5cHRFbmNvZGVPYmplY3RFeCgpIHByb3RvdHlwZS4KCUZpeGVzIHdpbmFwaV9jaGVjayB3YXJuaW5ncy4KCgkqIGRsbHMvb2RiY2NwMzIvb2RiY2NwMzIuYywgZGxscy9vZGJjY3AzMi9vZGJjY3AzMi5zcGVjLAoJICBpbmNsdWRlL29kYmNpbnN0LmgsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgcHJvdG90eXBlcyBvZiBTUUxDcmVhdGVEYXRhU291cmNlKigpLCBTUUxHZXRQcml2YXRlUHJvZmlsZVN0cmluZyooKS4KCUZpeCB0aGUgcmV0dXJuIHR5cGUgb2YgU1FMSW5zdGFsbGVyRXJyb3IqKCkgYW5kCglTUUxQb3N0SW5zdGFsbGVyRXJyb3IqKCkuCglGaXggdGhlIFNRTEluc3RhbGxEcml2ZXIoKSBhbmQgU1FMSW5zdGFsbERyaXZlckV4KCkgcHJvdG90eXBlcyBpbiB0aGUKCXNwZWMgZmlsZS4KCUFkZCBhbiBvZGJjY3AzMiBzZWN0aW9uIHRvIHdpbjMyLmFwaSBmb3Igd2luYXBpX2NoZWNrLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSBsb25nIG92ZXJkdWUgZml4IHRvIE1TSV9TZXRUYXJnZXRQYXRoLiBUaGlzIHNob3VsZCBmaXggYW4gZXJyb3Igd2l0aAoJc29tZSBpbnN0YWxsZXJzIHRoYXQgd2hlcmUgdW5hYmxlIHRvIGNoYW5nZSB0aGUgdGFyZ2V0IHBhdGguCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZsZXNoIG91dCB0aGUgcmVtYWluaW5nIGtleXMgaW4gUmVnaXN0ZXJQcm9kdWN0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglVcGRhdGVkIHBhdGhzIG9mIFNob3dEaXJTeW1saW5rcywgU2hvd0RvdEZpbGVzIGFuZCBWZXJzaW9uIG9wdGlvbnMuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJTW92ZWQgZGlyZWN0b3J5IG9wdGlvbnMgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IE1vdmVkIHZlcnNpb24ga2V5IHRvIEhLQ1VcU29mdHdhcmVcV2luZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCURlYWN0aXZhdGUgYWN0aXZlIHdpbmRvdyBpbiBTaG93V2luZG93KCxTV19ISURFKS4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvZHN1cmZhY2UuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3FjYXAvdjRsLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggd2luYXBpX2NoZWNrIGRvY3VtZW50YXRpb24gd2FybmluZ3MuCgoJKiBkbGxzL3VzZXIvZGVmd25kLmMsIGRsbHMvdXNlci93aW4uYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJU2hvd093bmVkUG9wdXBzIGFuZCBXTV9TSE9XV0lORE9XIHNob3VsZCBoYW5kbGUgbm9uLVdTX1BPUFVQIHN0eWxlCgl3aW5kb3dzIGFzIHdlbGwuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLAoJICBkbGxzL21zaS9maWxlcy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJyZWFrIG91dCBhbGwgdGhlIGZpbGUgcmVsYXRlZCBhY3Rpb25zIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGludG8KCWZpbGVzLmMKCgkqIGRsbHMvYWN0aXZlZHMvYWN0aXZlZHNfbWFpbi5jLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIEZyZWVBRHNNZW0oKSBwcm90b3R5cGUuCglBZGQgYW4gYWN0aXZlZHMgc2VjdGlvbiB0byB3aW4zMi5hcGkgZm9yIHdpbmFwaV9jaGVjay4KCUZpeCBhIGRvY3VtZW50YXRpb24gd2FybmluZy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJvdGVjdCB0aGUgdW5pc3RkLmggYW5kIHN5cy9zdGF0LmggaW5jbHVkZXMuCglJbmNsdWRlIGNvbmZpZy5oLgoJRml4ZXMgd2FybmluZ3MgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIGFuIHVubmVlZGVkIHZhcmlhYmxlIGluIHRlc3RfcXVlcnlfdGltZW9mZGF5KCkuCglSZW5hbWUgYSB2YXJpYWJsZSB0byAnaXNfbnQnIHRvIG1ha2UgaXRzIG1lYW5pbmcgY2xlYXJlci4KCgkqIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWVkZWQgTlVMTCBjYXN0LgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgYSBjaGVjayBmb3Igb2Jzb2xldGUgZGlyZWN0b3J5IGFuZCBmaWxlIHNwZWNpYWwgY2FzZXMuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdlIHNob3VsZCBzZXQgdGhlIGdsb2JhbCAkYWxsX21vZHVsZXMgdmFyaWFibGUgb3RoZXJ3aXNlIHRoZXJlJ3Mgbm8KCXBvaW50LgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSBhIHNpbXBsZXIgZXhwcmVzc2lvbiBmb3IgdGhlICJSaWNoRWRpdDIwVyIgc3RyaW5nIHRvIHdvcmthcm91bmQKCWNvbXBpbGVyIGJ1Zy4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglTcGVjaWZ5IGVub3VnaCBidWZmZXIgZm9yIGlkW10gKDIwIGNoYXJzIGFyZSBub3QgZW5vdWdoKS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsCgkgIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL2tlcm5lbC9leGNlcHQuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMva2VybmVsL29sZGNvbmZpZy5jLCBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9udGRsbC9jZHJvbS5jLAoJICBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvZGVidWdidWZmZXIuYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZW52LmMsCgkgIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9oYW5kbGV0YWJsZS5jLAoJICBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3JlbGF5LmMsCgkgIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgZGxscy9udGRsbC92ZXJzaW9uLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsCgkgIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy9wcGRldi5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgSEFORExFIGluc3RlYWQgb2YgSEtFWSBpbiB0aGUgTlQgQVBJLgoKCSogZGxscy9nZGkvZGliLmM6IE1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CglJbml0aWFsaXplIG1vcmUgc3RydWN0dXJlIG1lbWJlcnMsIGluY2x1ZGluZyBiaVNpemVJbWFnZSBpZiBiaXRzID09CglOVUxMIGFuZCBiaUJpdENvdW50ICE9IDAuCgoJKiBkbGxzL250ZGxsL3RocmVhZC5jOiBUaGUgVEVCIGRvZXNuJ3QgbmVlZCBleGVjdXRlIHBlcm1pc3Npb25zLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQS9XIHRha2VzIGEgcG9pbnRlciB0byBhIGNvbnN0IHN0cmluZywKCWFjY29yZGluZ2x5IGZpeCB0aGUgc3BlYyBlbnRyaWVzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZSB0cmFpbGluZyBiYWNrc2xhc2ggZnJvbSBET1MgcGF0aHMgaW4gR2V0RGlzcGxheU5hbWVPZi4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdGlvbnMgb2YgQ3plY2ggdHJhbnNsYXRpb24gYnkgRGVuemlsLgoKCSogZGxscy9udGRsbC9vbS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIE50IGRpcmVjdG9yeSBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbG9hZGVyL01ha2VmaWxlLmluOgoJTW92ZSB0aGUgbG9hZGVyIGEgYml0IGhpZ2hlciBpbiBtZW1vcnkgdG8gbGVhdmUgbW9yZSBzcGFjZSBmb3IgbnRkbGwKCWFuZCBrZXJuZWwzMi4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywKCSAgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3dpbmVkb3Mvc291bmRibGFzdGVyLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvdGltZXIuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuYywKCSAgZGxscy94MTFkcnYveGltLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJUmVtb3ZlIHNvbWUgLVdzdHJpY3QtcHJvdG90eXBlcyB3YXJuaW5ncy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX3R5cGVzLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGFuZ2UgdGhlIHdheSBjYXBzIGFyZSBzZW50IGJldHdlZW4gZDNkOS9kM2Q4IGFuZCB3aW5lZDNkIHRvIG1ha2UgaXQKCWVhc2llciBmb3Igd2luZWQzZCB0byBzdXBwb3J0IGFkZGl0aW9uYWwgdmVyc2lvbnMgb2YgRGlyZWN0M0QuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRXh0cmFjdEFzc29jaWF0ZWRJY29uQSBuZWVkcyB0byBhbGxvY2F0ZSBlbm91Z2ggc3BhY2UgdG8gaGF2ZSBFQUlXCglmaWxsIGluIGxwSWNvblBhdGhXLgoKCSogZGxscy9tc2kvYWN0aW9uLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIGNzemJzIGZyb20gbXNpL2FjdGlvbi5oLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZvcndhcmQgR2V0UHJpdmF0ZS9LZXJuZWxPYmplY3RTZWN1cml0eSB0byBOdFF1ZXJ5U2VjdXJpdHlPYmplY3QuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgUE9JTlRTIGRlZmluaXRpb24gZm9yIFdPUkRTX0JJR0VORElBTiBjYXNlLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBmZXcgdHJhY2VzIGFuZCBjb21tZW50cy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIG1vcmUgbWlzc2luZyBkZWZzLgoKMjAwNS0wNi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJTWFrZSBpbXBvcnQgdGh1bmtzIHBvc2l0aW9uLWluZGVwZW5kZW50IHRvIGF2b2lkIHRleHQgcmVsb2NhdGlvbnMuCgoJKiBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJVXNlIHRoZSBzdGFuZGFyZCBmb250IHBhdGggdG8gbG9vayBmb3IgVHJ1ZVR5cGUgZm9udHMuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBpbmNsdWRlL2QzZDljYXBzLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglSZW5hbWUgX0QzRENBUFM5Lk1heFBpeGVsU2hhZGVyVmFsdWUgdG8gdGhlIGNvcnJlY3QKCV9EM0RDQVBTOS5QaXhlbFNoYWRlcjF4TWF4VmFsdWUuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2luc3RhbGwuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCcmVhayBvdXQgYWxsIHRoZSB0b3AgbGV2ZWwgYXBpcyBpbnRvIGluc3RhbGwuYy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJSGlkZSA8LT4gU2hvdyBBZHZhbmNlZC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgTVNJIE1hc2tFZGl0IGNvbnRyb2wuCgoJKiBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCURpc2FibGUgdGhlIGNyZWF0aW9uIG9mIGludmFsaWQgdmVydGV4IGRlY2xhcmF0aW9ucyBpbiBkM2Q5IHByZXZlbnRpbmcKCXNvbWUgYXBwbGljYXRpb25zIGZyb20gY3Jhc2hpbmcuCgoJKiBkbGxzL2QzZDkvdGV4dHVyZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCByZWxheSB0cmFjaW5nIHRvIHRleHR1cmUuCgoJKiBpbmNsdWRlL2QzZDl0eXBlcy5oOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglEZWZpbmUgc29tZSBtb3JlIGZsYWdzCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBbGwgdmVyc2lvbnMgb2YgV2luZG93cyBpZ25vcmUgdGhlIGFjY2VzcyByaWdodHMgb2YgdGhlIHBhc3NlZCBpbgoJICBwYXJlbnQgaGFuZGxlIHRvIFJlZ0NyZWF0ZUtleShFeCkuCgktIEFkZCBhIHRlc3QgdGhhdCBzaG93cyB0aGlzLgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBIHNpbXBsZSBjbGVhbnVwIHRvIG9ubHkgdHJhY2sgdGhlIHRlbXAgZmlsZSBpZiB3ZSBuZWVkIHRvIGhhdmUgaXQKCWxheWluZyBhcm91bmQgYmVjYXVzZSB0aGUgYWN0aW9uIGlzIGdvaW5nIG9uIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UKCWNsZWFuIHVwIHRoZSB0ZW1wIGZpbGUgYXMgdGhlIGFjdGlvbiBmaW5pc2hlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJVXNlIFJlZ09wZW5LZXkgaW5zdGVhZCBvZiBSZWdPcGVuS2V5RXggdG8gYXZvaWQgdHJvdWJsZSB3aXRoIGhhbmRsZQoJYWNjZXNzIHJpZ2h0cy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglGaXhlZCByZWdpc3RyeSBwYXRocyB0byBlZGl0IHRoZSByZWFsIGNvbmZpZywgYW5kIHJlbW92ZWQgdGhlIHN0YXJ0dXAKCXdhcm5pbmcgbWVzc2FnZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglNb3ZlZCBjb25maWd1cmF0aW9uIGtleXMgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXFgxMSBEcml2ZXIuCgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jOgoJTW92ZWQgY29uZmlndXJhdGlvbiBrZXlzIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxEbGxPdmVycmlkZXMuCgoJKiBkbGxzL21zaS91cGdyYWRlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgVUkgbWVzc2FnZXMgdG8gRmluZFJlbGF0ZWRQcm9kdWN0cy4KCVJlZHVjZSB1bm5lZWRlZCBpbmNsdWRlcy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgZW5jb2RpbmcgYW5kIGRlY29kaW5nIG9mIGVudW1lcmF0ZWQgdHlwZXMsIHVuc2lnbmVkCgkgIGludGVnZXJzLCBvY3RldCBzdHJpbmdzLCBhbmQgYml0IHN0cmluZ3MKCS0gY29ycmVjdCBsZW5ndGggaGFuZGxpbmcKCS0gdGhlIHVzdWFsIHRlc3RzCgoJKiBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgLVdzdHJpY3QtcHJvdG90eXBlcyB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJR2VuZXJhdGUgcHJvcGVyIFBJQyBjb2RlIGZvciBDQUxMMzJfQ0JDbGllbnQuCgoJKiBkbGxzL21zdmNydC9jcHAuYzoKCVN0b3JlIHZ0YWJsZXMgaW4gdGhlIGRhdGEgc2VnbWVudCB0byBhdm9pZCB0ZXh0IHJlbG9jYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL21zaHRtbC92aWV3LmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmMsIGRsbHMvcnNhYmFzZS90ZXN0cy9yc2FiYXNlLmMsCgkgIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIC1Xc3RyaWN0LXByb3RvdHlwZXMgd2FybmluZ3MuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLAoJICBkbGxzL21zaS9jbGFzc2VzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQnJlYWsgb3V0IGFsbCB0aGUgY2xhc3MgcmVnaXN0cmF0aW9uIGFjdGlvbnMgaW50byBjbGFzc2VzLmMuIFRoaXMKCWluY2x1ZGVzIFJlZ2lzdGVyQ2xhc3NJbmZvLCBSZWdpc3RlclByb2dJZHMsIFJlZ2lzdGVyRXh0ZW5zaW9ucyBhbmQKCVJlZ2lzdGVyTUlNRVR5cGVzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEZWZpbmUgc29tZSBtb3JlIE9JRCBzdHJpbmdzLgoKCSogZGxscy9udGRsbC9yZWxheS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVN0b3JlIGEgcmVsYXRpdmUgcG9pbnRlciBmb3IgcmVnaXN0cnkgZW50cnkgcG9pbnRzIHRvIGF2b2lkIHNvbWUgdGV4dAoJcmVsb2NhdGlvbnMuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkL2ZpeCBtb3JlIE5UIG5hdGl2ZSBBUEkgZGVjbGFyYXRpb25zLgoKCSogZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy90eXBlbGliLmMsIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBsaWJzL3VuaWNvZGUvbWJ0b3djLmMsCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBkZWNsYXJhdGlvbiBhbmQgd3JpdGUgc3RyaW5nIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGZvcndhcmQgQWRkUmVmLCBSZWxlYXNlLCBRdWVyeUludGVyZmFjZSBhbmQgR2V0Q2xhc3NJRCB0byBpbnRlcm5hbAoJICBpbXBsZW1lbnRhdGlvbnMKCS0gaW1wbGVtZW50IEdldENsYXNzSUQgcHJvcGVybHkKCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU91dHB1dCB0aGUgZXhwb3J0ZWQgbmFtZXMgYXMgYSBDIHN0cmluZyBzbyB0aGF0IHRoZXkgZW5kIHVwIGluIHRoZQoJY29ycmVjdCBzZWN0aW9uLgoKCSogZGxscy9udGRsbC9yZWxheS5jOgoJVXNlIHRoZSBERUZJTkVfUkVHU19FTlRSWVBPSU5UIG1hY3JvIHRvIGRlZmluZSByZWdpc3RlciBmdW5jdGlvbnMKCWluc3RlYWQgb2YgZG9pbmcgaXQgYnkgaGFuZC4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24uYzoKCVJlbW92ZWQgdGhlIERPUyB2ZXJzaW9uIG9wdGlvbiwgc3BlY2lmeWluZyB0aGUgV2luZG93cyB2ZXJzaW9uIHNob3VsZAoJYmUgZW5vdWdoIHRvIGFjaGlldmUgdGhlIHNhbWUgcmVzdWx0cy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTSENyZWF0ZVN0cmVhbU9uRmlsZVcgaXMgaW1wbGVtZW50ZWQgaW4gc2hsd2FwaSwgc28gd2UgZG9uJ3QgbmVlZAoJYW5vdGhlciBpbXBsZW1lbnRhdGlvbiBpbiBzaGVsbDMyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3dpdGNoIElTaGVsbExpbmsgdG8gdXNlIHNobHdhcGkuU0hDcmVhdGVTdHJlYW1PbkZpbGVXLgoKCSogaW5jbHVkZS93aW5yZWcuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIFJlZ09wZW5Vc2VyQ2xhc3Nlc1Jvb3QuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZWQgZHVwbGljYXRlZCBBTFBIQSBwbGF0Zm9ybSBjb250ZXh0IGRlZmluaXRpb25zLgoJQWRkZWQgQVJNIGNvbnRleHQgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglUZXN0IEdldEF0dHJpYnV0ZXNPZiBvbiB0aGUgTXlDb21wdXRlciBzaGVsbGZvbGRlci4KCgkqIGRsbHMvbnRkbGwvbnQuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVByb2Nlc3NOYW1lIHNob3VsZCBiZSB3aXRob3V0IHRoZSBwYXRoLgoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglXMkszIHJldHVybnMgU1RBVFVTX0lOVkFMSURfSEFORExFIGluc3RlYWQgb2YgU1RBVFVTX0FDQ0VTU19WSU9MQVRJT04uCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CgktIEltcGxlbWVudGVkIElDU2VxQ29tcHJlc3NGcmFtZXtTdGFydCwsRW5kfQoJLSBNb2RpZmllZCBJQ0NvbXByZXNzb3JGcmVlIHRvIHByb3Blcmx5IGZyZWUgdGhlIGluaXRpYWxpemVkIHZhcmlhYmxlcwoJICBmcm9tIElDU2VxQ29tcHJlc3NGcmFtZVN0YXJ0LgoKCSogdG9vbHMvd2luZS5pbmY6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCVJlZ2lzdGVyIHFjYXAuZGxsIG9uIHdpbmUgaW5pdGlhbGlzYXRpb24uCgoyMDA1LTA2LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvciBtb2RhbCBwcm9wc2hlZXRzIHdlIHNob3VsZCBydW4gb3VyIG93biBtZXNzYWdlIGxvb3AgcmF0aGVyIHRoYW4KCXVzZSBhIG1vZGFsIGRpYWxvZ2JveCBqdXN0IGxpa2UgV2luZG93cyBkb2VzLiAgVGhpcyBoZWxwcyBhcHBzIHRoYXQKCXN1YmNsYXNzIHRoZSBwcm9wc2hlZXQncyB3bmRwcm9jLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwKCSAgZGxscy9tc2kvaGVscGVycy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJyZWFrIG91dCBhbGwgdGhlIGhlbHBlciBmdW5jdGlvbnMgaW50byBoZWxwZXJzLmMuCgoJKiBNYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCU1vdmVkIHRoZSBBUEkgZG9jIHJ1bGVzIHRvIHRoZSBkb2N1bWVudGF0aW9uIG1ha2VmaWxlLgoKCSogdG9vbHMvYmluMnJlcy5jLCB0b29scy9zZm50MmZudC5jLCB0b29scy93aWRsL2hlYWRlci5jLAoJICB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvc2VydmVyLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBieSBtYWtpbmcgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRlc3RzIGZvciBTSEdldFBhdGhGcm9tSURMaXN0LgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVucXVvdGUgdGhlIGljb24gZmlsZSBwYXRoIGlmIGl0J3MgcXVvdGVkLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBXTV9bTHxSfE18WF1CVVRUT05EQkxDTEsgZ2VuZXJhdGlvbiBiZWhhdmlvdXIuCgoJKiBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJLSBSZXBsYWNlZCBzZXJ2ZXIgcmVxdWVzdHMgaW4gRW51bVByb2Nlc3NlcyBieSBuYXRpdmUgQVBJcwoJLSBGaXhlZCB0aGlyZCBwYXJhbWV0ZXIgKHNob3VsZCByZXR1cm4gdGhlIGFtb3VudCBvZiB1c2VkIGFuZCBub3QKCSAgbmVlZGVkIG1lbW9yeSkuCgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvTWFrZWZpbGUuaW4sCgkgIGxvYWRlci93aW5lLm1hbi5pbjoKCU1vdmVkIHRoZSB3aW5lIG1hbnBhZ2UgdG8gdGhlIGxvYWRlci8gZGlyZWN0b3J5LgoKCSogZGxscy91c2VyL2NvbWJvLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldENvbWJvQm94SW5mbyBhbmQgQ0JfR0VUQ09NQk9CT1hJTkZPLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaCwgdG9vbHMvbWFrZV9jdGVzdHMuYzoKCUF2b2lkIHN0YXRpYyBmb3J3YXJkIGRlY2xhcmF0aW9uIHRoYXQgZG9lc24ndCB3b3JrIG9uIE1TVkMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBzb21lIHVzZXMgb2Ygd2luZS91bmljb2RlLmggZnVuY3Rpb25zLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgZW5jb2RlL2RlY29kZSBzdXBwb3J0IGZvciBtdWx0aS1ieXRlIGludGVnZXJzLgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmMsCgkgIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywKCSAgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVjbGFyYXRpb25zLgoKCSogZGxscy9vbGUzMi90ZXN0cy9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlY2xhcmF0aW9ucyBpbiB0aGUgdGVzdHMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1TRE4gc3RhdGVzIHRoYXQgRHVwbGljYXRlVG9rZW4gc2hvdWxkIGNyZWF0ZSBhIG5ldyB0b2tlbiB3aXRoIHRoZQoJVE9LRU5fUVVFUlkgfCBUT0tFTl9JTVBFUlNPTkFURSByaWdodHMsIG5vdCAwLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudCBTSEdldFBhdGhGcm9tSURMaXN0IGJhc2VkIG9uIEdldERpc3BsYXlOYW1lT2YuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCU9ubHkgZXhhY3QgYnVmZmVyIHNpemUgZ2l2ZXMgU1RBVFVTX1NVQ0NFU1MuCgoyMDA1LTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJR2V0IHJpZCBvZiB0aGUgd2luZS5jb25mIG1hbiBwYWdlLgoKCSogc2VydmVyL3Byb2Nlc3MuYzoKCVJlbW92ZSB0aGUgcHJvY2VzcyBsb2NrcyBpbiBwcm9jZXNzX2tpbGxlZCwgbm90IHByb2Nlc3NfZGVzdHJveS4KCgkqIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9udGRsbC9yZWxheS5jLCBkbGxzL3VzZXIvc3B5LmM6CglNb3ZlZCBkZWJ1Z2dpbmcgY29uZmlnIG9wdGlvbnMgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXERlYnVnLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVwbGFjZSBtYWdpYyBlcnJvciBjb25zdGFudC4KCgkqIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCUF2b2lkIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIGRhdGEgb24gV2luTUUgKGJhc2VkIG9uIGFuIG9sZCBwYXRjaCBieQoJRmVyZW5jIFdhZ25lcikuCgoJKiBkbGxzL3VzZXIvbm9uY2xpZW50LmMsIGRsbHMvdXNlci93aW4uYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglSZW1vdmUgaW5jbHVkZSAiY3Vyc29yaWNvbi5oIiBmcm9tIG5vbmNsaWVudC5jIGFuZCB3aW4uYy4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIFNIR2V0UGF0aEZyb21JRExpc3QgaW5zdGVhZCBvZiBTSEVMTDMyX0dldFBhdGhGcm9tSURMaXN0LgoKCSogc2VydmVyL2hhbmRsZS5jOgoJQ2FsbCB0aGUgY2xvc2VfaGFuZGxlIG5vdGlmaWNhdGlvbiBmb3IgYWxsIG9iamVjdHMgd2hlbiByZWxlYXNpbmcgYQoJaGFuZGxlIHRhYmxlLgoKCSogc2VydmVyL3Rva2VuLmMsIHNlcnZlci90cmFjZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggc2l6ZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBzaWRzIGluIGFjZXMuCgoJKiBkbGxzL3gxMWRydi9pbml0LmM6IFJlbW92ZWQgdGhlIGNoZWNrIGZvciB0aGUgb2xkIFJlc29sdXRpb24gb3B0aW9uLgoKCSogZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCU1lcmdlZCBwYWxldHRlIG9wdGlvbiBwcm9jZXNzaW5nIGludG8gdGhlIG1haW4gY29uZmlndXJhdGlvbiBjb2RlLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJldHVybiB0aGUgY29ycmVjdCBhdHRyaWJ1dGVzIGZvciB0aGUgZGVza3RvcCBmb2xkZXIuCglDb3JyZXNwb25kaW5nIHRlc3RzLgoKCSogc2VydmVyL3Rva2VuLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBUb2tlblR5cGUgYXR0cmlidXRlIHRvIHNwZWNpZnkgd2hldGhlciB0aGUgdG9rZW4gaXMgYSBwcmltYXJ5IG9yCglpbXBlcnNvbmF0aW9uIHRva2VuLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOgoJVXNlIGEgYmV0dGVyIGxvY2F0aW9uIHRoYW4gSEtDVVxXaW5lIGZvciBzYXZpbmcgdGhlIHRlbXBvcmFyeQoJcGFyYW1ldGVycy4KCgkqIGRsbHMveDExZHJ2L3hmb250LmM6CglBdm9pZCByZXBlYXRlZGx5IG9wZW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0cnkga2V5LgoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLAoJICBkbGxzL25ldGFwaTMyL25idC5jOgoJTW92ZWQgbmV0d29yayBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXE5ldHdvcmsuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0ZXN0cyB0byBjb21wYXJlIFNIR2V0UGF0aEZyb21JRExpc3QgYW5kIEdldERpc3BsYXlOYW1lT2YuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlcyBmb3IgLVdtaXNzaW5nLWRlY2xhcmF0aW9uIGFuZCAtV3dyaXRlLXN0cmluZyB3YXJuaW5ncy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6CglNb3ZlZCBjb25maWcgcGFyYW1ldGVycyB0byBIS0NVXFNvZnR3YXJlXFdpbmVcRGlyZWN0SW5wdXQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTW92ZWQgY29uZmlnIHBhcmFtZXRlcnMgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXERpcmVjdFNvdW5kLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCU1vdmVkIGFsbCBmb250IGNvbmZpZyBwYXJhbWV0ZXJzIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxGb250cy4KCVJlcGxhY2VkIHRoZSBGb250RGlycyBrZXkgZW51bWVyYXRpb24gYnkgYSBzaW1wbGUgUGF0aCB2YWx1ZS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJUmVpbXBsZW1lbnQgSU9DVExfU0NTSV9QQVNTX1RIUk9VR0hfRElSRUNUIGFuZAoJSU9DVExfU0NTSV9QQVNTX1RIUk9VR0ggb24gdG9wIG9mIHRoZSBsaW51eCBzY3NpIGRyaXZlci4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJQ2hhbmdlIChsb25nIGxvbmcpIHRvIChMT05HTE9ORykgdG8gY29tcGlsZSB3aXRoIE1TVkMuCgoJKiBkbGxzL250ZGxsL3Byb2Nlc3MuYywgZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmV0dXJuIFNUQVRVU19JTlZBTElEX0lORk9fQ0xBU1MgZm9yIG5vbi1pbXBsZW1lbnRlZCBjbGFzc2VzLgoJUmV0dXJuIFNUQVRVU19BQ0NFU1NfVklPTEFUSU9OIGlmIG5vIGJ1ZmZlciBnaXZlbi4KCUFkZGVkIHRlc3RzIGZvciBQcm9jZXNzQmFzaWNJbmZvcm1hdGlvbi4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CgktIEVNX0NIQVJGUk9NUE9TIHNob3VsZCByZXR1cm4gdGhlIGNsb3Nlc3QgY2hhciAoY2xpY2tpbmcgb24gdGhlIGZpcnN0CgkgIGhhbGYgb2YgYSBjaGFyYWN0ZXIgc2hvdWxkIHJldHVybiBjdXJyZW50IGNoYXIgYW5kIGNsaWNraW5nIG9uIHRoZQoJICBzZWNvbmQgaGFsZiBzaG91bGQgcmV0dXJuIG5leHQgY2hhcikKCS0gRU1fUE9TRlJPTUNIQVIgc2hvdWxkIHJldHVybiAtMSBpZiBjaGFyYWN0ZXIgaW5kZXggaXMgZ3JlYXRlciBvcgoJICBlcXVhbCB0byB0ZXh0IGxlbmd0aAoKCSogZGxscy9nZGkvZ2Rpb2JqLmM6IFJlbW92ZWQgdGhlIFR3ZWFrLkZvbnRzIGNvbmZpZ3VyYXRpb24gaGFjay4KCgkqIGRsbHMveDExZHJ2L2JpdGJsdC5jOgoJR2V0IHJpZCBvZiB0aGUgUGVyZmVjdEdyYXBoaWNzIG9wdGlvbiwgdGhhdCdzIG5vdCByZWFsbHkgdXNlZnVsLgoKCSogZGxscy93aW5lZG9zL2Rvc2NvbmYuYzoKCUhhcmRjb2RlIHRoZSBsb2NhdGlvbiBvZiBjb25maWcuc3lzLCBubyBuZWVkIGZvciBhIGNvbmZpZyBwYXJhbWV0ZXIKCWZvciB0aGF0LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNvdXBsZSBvZiBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBwb3J0IGZ1bmN0aW9ucyBhbmQgZml4IHByb3RvdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgZGxscy9rZXJuZWwvY29uc29sZS5jLAoJICBkbGxzL2tlcm5lbC9lbnZpcm9uLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywKCSAgZGxscy9rZXJuZWwvdmVyc2lvbi5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgZnJvbSAtV21pc3NpbmctZGVjbGFyYXRpb25zLgoKCSogc2VydmVyL2ZpbGUuaCwgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCByZW1vdmVfcHJvY2Vzc19sb2NrcyB3aGVuIGEgcHJvY2VzcyBlbmRzLCBmaXggZGVjbGFyYXRpb25zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aW1lci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlY2xhcmF0aW9uIHdhcm5pbmdzIGluIHRoZSB0ZXN0IGNhc2VzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBGaXggVmFyRm9ybWF0IGZvciBmb3JtYXRzIHRoYXQgbWl4ICcwJyBhbmQgJyMnIGluIHRoZSB3aG9sZSBudW1iZXIKCSAgcGFydC4KCS0gRml4IFZhckZvcm1hdCBmb3IgbmVnYXRpdmUgZXhwb25lbnQgZm9ybWF0cy4KCS0gQWRkIHRlc3RzIGZvciB0aGUgYWJvdmUgKyBhIGNvdXBsZSBvZiAidG9kb193aW5lIidzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIElDb250ZXh0TWVudSBpbnRlcmZhY2UgdG8gdGhlIFNoZWxsTGluayBvYmplY3QuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jcnlwdDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIENlcnRBbGdJZFRvT0lEIGFuZCBDZXJ0T0lEVG9BbGdJZCwgd2l0aCB0ZXN0cy4KCgkqIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBdm9pZCBvbmUgbW9yZSBhY2Nlc3MgdG8gcGNiUmVhZC4KCjIwMDUtMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglQcmV2ZW50IGNyYXNoIG9uIElEaXJlY3RNdXNpY0xvYWRlclJlc291cmNlU3RyZWFtX0lTdHJlYW1fUmVhZC4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSAiMSIgaXMgcmV0dXJuZWQgbm90IGEgMSBmb3IgQXNzaWdubWVudFR5cGUuIEFsc28gYXMgYSBiaXQgbW9yZSB0bwoJdGhlIEZJWE1FIG1lc3NhZ2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTaGVsbExpbmsncyBJU2hlbGxFeHRJbml0OjpJbml0aWFsaXplKCkgbWV0aG9kLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZnJlZXR5cGUuYywKCSAgZGxscy9nZGkvZ2Rpb2JqLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywKCSAgZGxscy9rZXJuZWwvb2xkY29uZmlnLmMsIGRsbHMva2VybmVsL3JlbGF5MTYuYywKCSAgZGxscy9rZXJuZWwvdmVyc2lvbi5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9tcHIvcHdjYWNoZS5jLAoJICBkbGxzL25ldGFwaTMyL25idC5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLAoJICBkbGxzL250ZGxsL3JlbGF5LmMsIGRsbHMvbnRkbGwvdmVyc2lvbi5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3VzZXIvc3B5LmMsIGRsbHMvdXNlci9zeXNwYXJhbXMuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsCgkgIGRsbHMvd2luZWRvcy9kb3Njb25mLmMsIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy9wcGRldi5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGRsbHMvd2luZXBzL3R5cGUxYWZtLmMsCgkgIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy94MTFkcnYvYml0Ymx0LmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94Zm9udC5jLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuYywKCSAgcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglBZGRlZCBtYWdpYyBjb21tZW50cyB0byBhbGwgV2luZS1zcGVjaWZpYyByZWdpc3RyeSBhY2Nlc3NlcyB0byBtYWtlCgl0aGVtIGVhc2llciB0byBncmVwLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jLCBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglDaGFuZ2VkIHJlZ2lzdHJ5IGFjY2VzcyBmdW5jdGlvbnMgdG8gdXNlIG1vcmUgbWVhbmluZ2Z1bCBuYW1lcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMS5jOgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIG9ic29sZXRlIGNvbmZpZ3VyYXRpb24gZW50cmllcy4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIGxvYWRpbmcgYSBiaXRtYXAgd2Ugc2hvdWxkIHN0cmV0Y2ggdGhlIGltYWdlIHRvIHRoZSByZXF1ZXN0ZWQKCXNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvdHJlZXZpZXcuYzoKCUtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJVGVzdCB3aGVuIFRWTl9TRUxDSEFOR0lORyBhbmQgVFZOX1NFTENIQU5HRUQgYXJlIHJlYWxseSBzZW50LgoKCSogZGxscy9kZHJhdy90ZXN0cy9kM2QuYywgZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmMsCgkgIGRsbHMvZGRyYXcvdGVzdHMvZHN1cmZhY2UuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL3Byb3B2YXJpYW50LmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywgZGxscy93aW5tbS90ZXN0cy9taXhlci5jLAoJICBpbmNsdWRlL3dpbmUvdGVzdC5oOgoJTW92ZWQgdGhlIE5PTkFNRUxFU1NVTklPTi9TVFJVQ1QgbWFjcm9zIHRvIHdpbmUvdGVzdC5oIHNvIHRoYXQgdGhleQoJY2FuIGJlIHVzZWQgaW4gYWxsIHRoZSB0ZXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGFkZCB0aGUgSVNoZWxsRXh0SW5pdCBpbnRlcmZhY2UgdG8gdGhlIFNoZWxsTGluayBvYmplY3QKCS0gdXNlIGlubGluZSBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gbWFjcm9zIHRvIHJlc29sdmUgdGhlCgkgIGltcGxlbWVudGF0aW9uIHBvaW50ZXIgZnJvbSBhbiBpbnRlcmZhY2UgcG9pbnRlcgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWN0aXZlZHMvLmN2c2lnbm9yZSwKCSAgZGxscy9hY3RpdmVkcy9NYWtlZmlsZS5pbiwgZGxscy9hY3RpdmVkcy9hY3RpdmVkcy5zcGVjLAoJICBkbGxzL2FjdGl2ZWRzL2FjdGl2ZWRzX21haW4uYzoKCURldGxlZiBSaWVrZW5iZXJnIDxkcmlla2VuYmVyZ0B3ZWIuZGU+CglBZGRlZCBhY3RpdmVkcy5kbGwgd2l0aCBzb21lIHN0dWJzIHRvIGdldCB0aGUgbmF0aXZlIHByaW50dWkuZGxsIHRvCglsb2FkLgoKCSogcHJvZ3JhbXMvcnBjc3MvZXBtYXBfc2VydmVyLmMsIHByb2dyYW1zL3JwY3NzL25wX3NlcnZlci5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS9saWNlbnNlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3NwbGl0cGF0aC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW9yZSB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGVuY29kZS9kZWNvZGUgWDUwOV9OQU1FcyBmb3Igc2ltcGxlIHN0cmluZyBlbmNvZGluZ3MsIHdpdGggdGVzdHMKCS0gbW9yZSB0ZXN0cyBhbmQgc29tZSBmaXhlcyB0byBvdGhlciB0eXBlcwoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCURvbid0IHNlbmQgVFZOX1NFTENIQU5HSU5HIG5vciBUVk5fU0VMQ0hBTkdFRCBpZiB0aGUgc2FtZSBpdGVtIGlzCglzZWxlY3RlZCBhZ2Fpbi4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZW1vdmUgZHVwbGljYXRlIHRvb2xiYXIgYnV0dG9uLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHdpbmRvdyBzdXBwb3J0IHRvIHRoZSB2aWRlbyByZW5kZXJlcjoKCS0gcmVwbGFjZWQgZGRyYXcgY29kZSBieSB3aW5kb3cgY29kZS4KCS0gaW1wbGVtZW50ZWQgSUJhc2ljVmlkZW8gYW5kIElWaWRlb1dpbmRvdyBpbnRlcmZhY2VzLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUZpeGVkIHNpemUgb2Ygb3VyIFNZU1RFTV9USU1FT0ZEQVlfSU5GT1JNQVRJT04gc3RydWN0LgoJRml4ZWQgcmV0dXJuIGNvZGVzIGFuZCBSZXR1cm5MZW5ndGgvYnVmZmVyIGZvcgoJU3lzdGVtVGltZU9mRGF5SW5mb3JtYXRpb24uCglBZGRlZCB0ZXN0cyBmb3IgU3lzdGVtVGltZU9mRGF5SW5mb3JtYXRpb24uCgoJKiBkbGxzL250ZGxsL3NlYy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUltcGxlbWVudCBSdGxBYnNvbHV0ZVRvU2VsZlJlbGF0aXZlU0QuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSB1c2UgY29uc3QgcGFyYW1ldGVyIGluIGZpbmRfZW50cnlfc2hlbGwoKQoJLSByZW5hbWUgRXhlY3V0ZURpYWxvZ1duZFByb2coKSB0byBFeGVjdXRlRGlhbG9nRGxnUHJvYygpCgktIHJlbW92ZSBvbGQgY29tbWVudAoJLSBhZGQgbWlzc2luZyBjYWxsIHRvIEN0eE1lbnVfcmVzZXQoKQoKCSogaW5jbHVkZS9hY2xhcGkuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHNvbWUgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGluIHRlc3RzLCByZW1vdmUgcG9pbnRsZXNzIGNvbW1lbnRzLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYW5kIGZpeCBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggUHJvcFZhcmlhbnQgdGVzdHMgb24gV2luZG93cyAyMDAwIGFuZCBhYm92ZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIG5lZWRsZXNzIGNhbGwgdG8gU2xlZXAuCgoJKiBkbGxzL29sZTMyL3JlZ3N2ci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCByZWdpc3RyeSBlbnRyaWVzIGZvciBsb2NhbC1vbmx5IE9MRSBpbnRlcmZhY2VzLgoJLSBDaGFuZ2UgSVVua25vd24gdG8gbG9jYWwgaW50ZXJmYWNlLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmljaGVkaXQgY2xhc3NlcyBzaG91bGQgYmUgZ2xvYmFsLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHNpemUgcGFzc2VkIHRvIGxzdHJjcHluQSBmdW5jdGlvbiAtIHNpemVvZihzdHJpbmcpID09IDQgbm90IDE2IGFzCgluZWVkZWQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IEdkaUlzUGxheU1ldGFmaWxlREMgcHJvdG90eXBlLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbWQ0LmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbWQ1LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTaWxlbmNlIHNvbWUgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkL2NvcnJlY3QgYSBmZXcgbW9yZSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvaWNtLmg6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRGVjbGFyZSBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBzdHJpbmcgbGVuZ3RoIG1ldGhvZCBpbiBJVHlwZUxpYjo6SXNOYW1lKCkgYW5kIEZpbmROYW1lKCkKCWZvciBMUE9MRVNUUiB0eXBlLgoKMjAwNS0wNi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBBZHJpYW4gSGFydmV5IDxhamhhcnZleUBteXJlYWxib3guY29tPgoJQWRkZWQgc3lzL3R5cGVzLmggdG8gY29uZmlndXJlIGNoZWNrIGZvciB2aWRlb2Rldi5oLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglFbWl0IFx0eCBmb3IgdXNlci1kZWZpbmVkIFRBQnMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVtb3ZlIHVubmVjZXNzYXJ5IHBhaW50IGNvZGUuCgoJKiBkbGxzL29wZW5nbDMyL3dnbF9leHQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZSBzb21lIEZJWE1FcyBhbmQgcmVwbGFjZSB0aGVtIHdpdGggVFJBQ0VzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCU1vdmUgX19XSU5FX18gaWZkZWYgZGlyZWN0aXZlLgoKCSogZGxscy9udGRsbC9zZWMuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmUgc3R1YiBzdGF0dXMuCglDaGVjayBmb3IgY29ycmVjdCByZXZpc2lvbiB2YWx1ZS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGQgUnRsQW5zaUNoYXJUb1VuaWNvZGVDaGFyIGRlZmluaXRpb24uCglDb3JyZWN0IHN0dWIgc3RhdHVzIG9mIFJ0bEFuc2lDaGFyVG9Vbmljb2RlQ2hhci4KCgkqIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJTWF0dGhldyBEYXZpc29uIDxtamQ3N0BjYW0uYWMudWs+CglTdHViIG91dCB0aGUgZXJyb3IgZGlhbG9nIGZ1bmN0aW9ucy4KCU1vZGlmeSB0aGUgZGVmYXVsdCBjYWxsYmFja3MgdG8gY2FsbCB0aGVzZSBmb3IgRGVsZXRlIGFuZCBSZW5hbWUKCWVycm9ycy4KCU1vZGlmeSB0aGUgZGVmYXVsdCBjYWxsYmFja3MgdG8gaWdub3JlIGZpbGUgbWlzc2luZyBlcnJvcnMgd2hlbgoJZGVsZXRpbmcgZmlsZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJSW1wbGVtZW50IFJ0bEFkanVzdFByaXZpbGVnZS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggZmlsZSBzaXplIGluIHByb3BlcnR5IGRpYWxvZyBieSB1c2luZyBfc3RwcmludGYoKSBpbnN0ZWFkIG9mCgl3c3ByaW50ZigpLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3N0eWxlLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgXHVsbm9uZSAodHVybmluZyB1bmRlcmxpbmUgb2ZmKQoJLSBzdXBwb3J0IGZvciBiYXNpYyBzdWJzY3JpcHQgYW5kIHN1cGVyc2NyaXB0CgktIHVudGVzdGVkIHN1cHBvcnQgZm9yIHRleHQgb2Zmc2V0CgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkX3V0aWxzLmMsCgkgIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jLCBkbGxzL2RkcmF3L2dsX2FwaS5oLAoJICBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9vcGVuZ2xfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L3ZlcnRleGJ1ZmZlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgYWxsIHBvc3NpYmxlIHRleHR1cmUgY29vcmRpbmF0ZXMgc2l6ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBwcmludCBvdXQgY3J5cHRpYyBtZXNzYWdlIGlmIElEaXNwYXRjaCBvciBJVW5rbm93biBvYmplY3QgaXMKCSAganVzdCBOVUxMLgoJLSBwdUFyZ0VyciBpcyBhIHJlZiBwb2ludGVyIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhIGR1bW15IHBvaW50ZXIgaWYKCSAgaXQgaXMgTlVMTC4KCS0gRmFpbCBncmFjZWZ1bGx5IGFuZCBub3RpZnkgY2FsbGVyIGlmIHdlIHJhbiBvdXQgb2YgbWVtb3kgb3IgaWYKCSAgdmFyaWFudCBjb3B5aW5nIGZhaWxlZC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZ2lzdHJ5IHRlc3QgZm9yIFdpbjl4IGJ5IHNraXBwaW5nIGEgc2VjdGlvbiB0aGF0IGZhaWxzLCBidXQKCXN1Y2NlZWRzIG9uIE5ULgoKCSogZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmUgc3RhdGljIHZhcmlhYmxlcyBvdXQgb2YgaGVhZGVyIGZpbGUsIGFsc28gdGhlIGxvY2FsIGludGVyZmFjZQoJaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTWFrZSBkc291bmQgdGVzdHMgbG9hZGFibGUgb24gTlQ0LgoKCSogZGxscy94MTFkcnYveDExZHJ2Lmg6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCUFkZCBkZWNsYXJhdGlvbiBvZiBYMTFEUlZfR2V0RElCQ29sb3JUYWJsZSB0byBhdm9pZCBjb21waWxlIHdhcm5pbmcuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQWRkIGEgd29ya2Fyb3VuZCBmb3IgV2luOXggYXBwcyB3aGljaCBwYXNzIHRoZSBwYXJhbWV0ZXJzIGZvcgoJR2V0Q3VycmVudERpcmVjdG9yeUEgaW4gd3Jvbmcgb3JkZXIuCgoyMDA1LTA2LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglVc2UgLm1vZF8qX2Z1bmMgc2VjdGlvbnMgb24gTWFjIE9TIFgvaTM4NiBpbnN0ZWFkIG9mIHRoZSBlbGYKCWNvbnN0cnVjdG9yL2Rlc3RydWN0b3IuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglSZXVzZSBvdXRwdXRfZGxsX2luaXQgZm9yIHRoZSBjb25zdHJ1Y3RvciBvZiBkZWJ1ZyBmaWxlcy4KCgkqIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2ZkLmMsIHNlcnZlci9tYWlsc2xvdC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdG9rZW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBjb2RlIHN0eWxlIG9mIGZvcm0gImlmKCB4ICkiIHRvICJpZiAoeCkiIGZvciBjb25zaXN0ZW5jeS4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaDogTWF0dGhldyBEYXZpc29uIDxtamQ3N0BjYW0uYWMudWs+CglBZGRlZCBzb21lIGRlZmluaXRpb25zIHRvIHNldHVwYXBpLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglGaXhlZCBSZXR1cm5MZW5ndGggb2YgU3lzdGVtQ3B1SW5mb3JtYXRpb24uCglBZGRlZCBmaXJzdCB0ZXN0IGZvciBTeXN0ZW1DcHVJbmZvcm1hdGlvbi4KCgkqIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBNc2lWaWV3R2V0RXJyb3IuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZXBlbmRlbmN5IGZpeGVzIGZvciB3aW50ZXJubC5oLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy90YXNrbWdyL3BlcmZwYWdlLmMsCgkgIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtb3JlIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVNldCB0aGUgRklMRVNZU0FOQ0VTVE9SIGFuZCBGSUxFU1lTVEVNIGZsYWdzIGNvcnJlY3RseSBpbgoJR2V0QXR0cmlidXRlc09mLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFyIG91dCBwYXJhbWV0ZXJzIHRvIHN0b3AgYmFkIHBvaW50ZXJzIGx5aW5nIGFyb3VuZCBpbiBtZW1vcnkgaWYKCXRoZSBmdW5jdGlvbiBkb2Vzbid0IHNldCB0aGVtIHRvIGFueXRoaW5nLgoKCSogZGxscy94MTFkcnYvcGFsZXR0ZS5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglBZGRzIHN1cHBvcnQgZm9yIHRoZSBESUJJTkRFWCB0eXBlIG9mIENPTE9SUkVGLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgUnRsQW5zaUNoYXJUb1VuaWNvZGVDaGFyLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgbWlzc2luZyBBVyBtYWNyby4KCgkqIGluY2x1ZGUvbXNpcXVlcnkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSB0aGUgTVNJREJFUlJPUiBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgZnVuY3Rpb25zIGFuZCBjb3JyZWN0IHByb3RvdHlwZXMuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNyeXB7RW58RGV9Y29kZU9iamVjdEV4IHNob3VsZCByZXR1cm4gc3VjY2VzcyBpZiB0aGUgaW5wdXQgYnVmZmVyIGlzCglOVUxMLCBzb21lIE1TIHNhbXBsZSBwcm9ncmFtcyBkZXBlbmQgb24gdGhhdC4gIEZpeCBmdW5jdGlvbnMgYW5kCgl0ZXN0cy4KCjIwMDUtMDYtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CglCb3R0b20gZWRnZSBvZiB0aGUgdXBkYXRlIHJlZ2lvbiBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHRvcCBlZGdlIG9mCgl0aGUgZm9ybWF0IHJlY3QuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2QzZC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgZGRyYXcgdGVzdHMgbG9hZGFibGUgb24gTlQ0LgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglTdG9yZSB0aGUgcHJvY2VzcyBhbG9uZyB3aXRoIHRoZSBrZXkgaGFuZGxlIGluIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL250ZGxsL250LmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZWR1Y2Ugb3VyIGJ1ZmZlciBieSAxIFNZU1RFTV9USFJFQURfSU5GT1JNQVRJT04gcGVyIHByb2Nlc3MuCglNaW5pbWl6ZSBzb21lIGNhbGN1bGF0aW9ucy4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CglBZGQgbW9yZSB0ZXN0cyBmb3IgdGV4dCBwbGFjZW1lbnQgaW4gc2luZ2xlIGFuZCBtdWx0aWxpbmUgZWRpdAoJY29udHJvbHMuIFNvbWUgb2YgdGhlIHRlc3RzIGFyZSBtYXJrZWQgYXMgdG9kby4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRXh0ZW5kaW5nIHVwb24gTWlrZSBNY0Nvcm1hY2sncyBjbGVhbnVwIHRvIHVzZSBNU0lfUmVjb3JkR2V0U3RyaW5nLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZWdpc3RlciB0aGUgUHJvZHVjdCBWZXJzaW9uIGFsc28uCglBbHNvIGhlbHAgcGx1ZyBzb21lIG1lbW9yeSBsZWFrcyBwb2ludGVkIG91dCBieSBNaWtlIE1jQ29ybWFjay4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW5zdGF0aW9uLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jaGFuZ2UuYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmQuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvbWFpbHNsb3QuYywKCSAgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc2lnbmFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdG9rZW4uYywgc2VydmVyL3dpbnN0YXRpb24uYzoKCUFkZGVkIGEgY2xvc2VfaGFuZGxlIG1ldGhvZCB0byB0aGUgb2JqZWN0IG9wZXJhdGlvbnMsIGFuZCB1c2UgaXQgdG8KCWltcGxlbWVudCByZWdpc3RyeSBub3RpZmljYXRpb25zIGFuZCB0aGUgc3RyYW5nZSBiZWhhdmlvciBvZgoJQ2xvc2VIYW5kbGUgb24gd2luc3RhdGlvbi9kZXNrdG9wIGhhbmRsZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGEgbG9vcCB3aGVyZSBhIHBhcmVudCdzIHBhcmVudCByZWZlcnMgdG8gaXRzZWxmIGFzIGl0cyBwYXJlbnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luc3RhdGlvbi5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbnN0YXRpb24uYzoKCVRoZSBkZXNrdG9wIG9mIGEgbmV3IHRocmVhZCBzaG91bGQgYmUgc2V0IGZyb20gdGhlIHByb2Nlc3MgaW5pdGlhbAoJZGVza3RvcCwgbm90IGZyb20gdGhlIHBhcmVudCB0aHJlYWQuCglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSBkZXNrdG9wIG5hbWUgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbmluZXQuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBzb21lIG1pc3NpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJR2V0IGN1cnJlbnQgZGlyZWN0b3J5IGR1cmluZyB0ZXN0cyBvbiB3aW45eCB0b28uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgSVNoZWxsTGlua0RhdGFMaXN0IGludGVyZmFjZSB0byB0aGUgU2hlbGxMaW5rIG9iamVjdC4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsCgkgIGRsbHMvbXNpL3VwZ3JhZGUuYywgaW5jbHVkZS9tc2lkZWZzLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbW9kdWxlIHVwZ3JhZGUuYyBhbmQgaW1wbGVtZW50ZWQgRmluZFJlbGF0ZWRQcm9kdWN0cy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cDoKCUZpeGVkIGEgbnVtYmVyIG9mIHJlZmVyZW5jZXMgdG8gcmVtb3ZlZCBkaXJlY3Rvcmllcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9kZGVfY2xpZW50LmMsIGRsbHMvdXNlci9kZGVfbWlzYy5jLAoJICBkbGxzL3VzZXIvZGRlX3ByaXZhdGUuaCwgZGxscy91c2VyL2RkZV9zZXJ2ZXIuYywgZGxscy91c2VyL2RkZW1sMTYuYzoKCU1vdmVkIGRkZSBmaWxlcyB0byB0aGUgbWFpbiBkaXJlY3RvcnkgYW5kIGdvdCByaWQgb2YgdGhlIGRsbHMvdXNlci9kZGUKCXN1YmRpcmVjdG9yeS4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9taXNjLmM6CglNb3ZlZCBtb25pdG9yIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIvbWlzYy5jIGFuZCBmaW5hbGx5IGdvdCByaWQgb2YgdGhlCgl3aW5kb3dzLyBkaXJlY3RvcnkuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIHRlc3QgZm9yIFN5c3RlbVByb2Nlc3NJbmZvcm1hdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGVzdCBmb3IgQWNjZXNzQ2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvdXBkb3duLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXYXJuaW5nIGZpeGVzIGZvciAtV21pc3NpbmctZGVjbGFyYXRpb25zIGFuZCAtV3dyaXRlLXN0cmluZ3MuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kcml2ZXIxNi5jOgoJTW92ZWQgd2luZG93cy9kcml2ZXIuYyB0byBkbGxzL3VzZXIvZHJpdmVyMTYuYy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQ29tYmluZSBXSU5FX1dBVkVPVVQgYW5kIFdJTkVfV0FWRUlOIGludG8gYSBzaW5nbGUgc3RydWN0dXJlLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luZWR1bXAvbG5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgb3V0IHRoZSBtc2kgaW5mb3JtYXRpb24gaW4gbW9yZSBkZXRhaWwuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIENMU0lEX0NvbXBvc2l0ZU1vbmlrZXIgKGNvbmZsaWN0aW5nIHdpdGggc3RhdGljIGRlZmluaXRpb24pLgoKCSogc2VydmVyL3Rva2VuLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQXZvaWQgZXZpbCBzaWduZWQgYml0ZmllbGRzLgoJLSBGaXggYnVnIHdpdGggdXNpbmcgd3JvbmcgcmV2aXNpb24gaW4gc2VjdXJpdHlfc2lkX2FsbG9jLgoJLSBBZGQgYWxsIGJ1aWx0aW4gZ3JvdXBzIHByZXNlbnQgaW4gdGhlIEFkbWluaXN0cmF0b3IgdG9rZW4gb24gV2luZG93cwoJICB0byB0aGUgZGVmYXVsdCB0b2tlbi4KCgkqIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgZGVmaW5pdGlvbi9kZWNsYXJhdGlvbiBtaXNtYXRjaGVzIG9mIG5ld2x5IHN0YXRpYyB2dGFibGVzLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcmVncmVzc2lvbiBpbiB0aGUgcGVyZm9ybWFuY2Ugb2YgbmFtZWQgcGlwZXMgYnkgb25seSBtYWtpbmcgdGhlCglmZCBub24tYmxvY2tpbmcgd2hlbiBvdmVybGFwcGVkIEkvTyBpcyByZXF1ZXN0ZWQgZm9yIHRoZSBmZCAocmVwb3J0ZWQKCWJ5IEl2YW4gTGVvIFB1b3RpKS4KCgkqIGRsbHMvZGJnaGVscC9kd2FyZi5jLCBkbGxzL2RiZ2hlbHAvc3RvcmFnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGV4cG9zZWQgYnkgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBhbmQgLVd3cml0ZS1zdHJpbmdzLgoKCSogZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNhc3QgdG8gZ2V0IHJpZCBvZiBhIHdhcm5pbmcuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luc3RhdGlvbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgY291cGxlIG9mIENsb3NlSGFuZGxlIGNhbGxzLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUlVbmtub3duIGlzbid0IGEgcmVtb3RhYmxlIGludGVyZmFjZSBzbyB0aGUgc3R1YiBtYW5hZ2VyIHNob3VsZG4ndAoJbmVlZCBhIG1hcnNoYWxsZXIgZm9yIGl0LgoKCSogZGxscy9udGRsbC9maWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgZnJlZSB0aGUgZmlsZWlvIG9iamVjdCBiZWNhdXNlIGl0IHdpbGwgYmUgZnJlZWQgYW55d2F5IGluCgkgIGZpbGVpb190ZXJtaW5hdGUgb24gZXJyb3IuCgktIFByaW50IG91dCBzdGF0dXNlcyBpbiBoZXgsIHJhdGhlciB0aGFuIGRlY2ltYWwuCgoJKiB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSBzdHJ1Y3QgdHlwZXMgZm9yIFRMQiBnZW5lcmF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEFEVkFQSV9Jc0xvY2FsQ29tcHV0ZXIgc3RhdGljIGFuZCBzaW1wbGlmeSBpdCBhIGxpdHRsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgYXBwbWdtdC5oIHdoZXJlIGl0cyBmdW5jdGlvbnMgYXJlIHVzZWQuCgoJKiBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBpbnRlcmZhY2UgbWV0aG9kcyBzdGF0aWMuCgoJKiBzZXJ2ZXIvd2luc3RhdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIHVzZXIuaCBpbiB0aGUgbmV3IHdpbnN0YXRpb24uYyB0byBhdm9pZCBhIHdhcm5pbmcgZnJvbQoJLVdtaXNzaW5nLWRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBUaGUgdHlwZWxpYiBtYXJzaGFsZXIgc2hvdWxkIG9ubHkgZnJlZSB0aGUgbWVtb3J5IGl0IGFjdHVhbGx5IGFsbG9jYXRlZC4KCS0gQWRkIHNwZWNpYWwgY2FzZXMgZm9yIHR3byBsZXNzZXIgdXNlZCB0eXBlcyB0aGF0IGFyZW4ndAoJICBzaXplb2YoRFdPUkQpIHNpemVkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBzaGVsbCBpY29uIGNhY2hlIGluc3RlYWQgb2YgYW4gb3duIElFeHRyYWN0SWNvbiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RyaXZlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCB0cnkgdG8gYWNjZXNzIGZsb3BweSBpZiBpdCdzIG5vdCBtb3VudGVkLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzogQWxleCBab3JhY2ggPGluZm9Ac3VzY29tcHV0aW5nLmNvbT4KCUZpeGVkIFNldEZvY3VzIGJlaGF2aW9yLgoKMjAwNS0wNi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBQcmVzZWxlY3RlZCBwcm9wZXJ0eSBpZiBhcHByb3ByaWF0ZSAocmVsZXZhbnQgdG8KCU1pZ3JhdGVGZWF0dXJlU3RhdGVzIHdoZW4gaW1wbGVtZW50ZWQpLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXcml0ZSBvdXQgUHJvZHVjdCBMYW5ndWFnZSBhbmQgUHJvZHVjdCBJY29uIHRvIHRoZSByZWdpc3RyeS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IG92ZXJsYXBwZWQgSS9PIHdpdGggbmFtZWQgcGlwZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlIG91dCBVcGdyYWRlQ29kZXMgdG8gdGhlIHJlZ2lzdHJ5IHRvIGFsbG93IGZvciBmdXR1cmUgdXBncmFkZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy93aW5zdGF0aW9uLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3dpbnN0YXRpb24uYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luc3RhdGlvbi5jOgoJQmVnaW5uaW5ncyBvZiBzdXBwb3J0IGZvciB3aW5kb3cgc3RhdGlvbnMgYW5kIGRlc2t0b3BzLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgTGFuZ3VhZ2UgdG8gdGhlIHZhbHVlcyB3ZSBjYW4gcXVlcnkgd2l0aCBNc2lHZXRQcm9kdWN0SW5mby4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJLSBPdXRwdXQgYSBGSVhNRSB3aGVuIGEgc3VyZmFjZSB3aXRoIGRpbWVuc2lvbnMgbm90IGJlaW5nIGEgcG93ZXIgb2YKCSAgdHdvIGlzIHJlcXVlc3RlZC4KCS0gRmFpbCBncmFjZWZ1bGx5IHdoZW4gSVdpbmVEM0RJbXBsX0NyZWF0ZURldmljZSBmYWlscyB0byBjcmVhdGUgdGhlCgkgIGZyb250LSBvciBiYWNrYnVmZmVyLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVhZCB0aGUgZW50aXJlIGxvZ2ZvbnQgZnJvbSB0aGUgcmVnaXN0cnkgaWYgaXQgZXhpc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBNU0lfUmVjb3JkR2V0U3RyaW5nIGluIG1vcmUgYWN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJLSBpbXBsZW1lbnQgaGFuZGxpbmcgb2YgZXhwb25lbnRzIChlKyxlLSxFKyxFLSkgd2hlbiBwYXJzaW5nIG51bWJlcgoJICBmb3JtYXRzCgktIGZpeCBhIHNtYWxsIGN1dCduJ3Bhc3RlIGVycm9yIGluIHRoZSBjb21tZW50cwoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gUlBDIHNlcnZlciBzdGFydHVwIHJhY2UgaW50cm9kdWNlZCBieSBtZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGNvbmZ1c2luZyBpbmRlbnRhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIElUeXBlOjpJbnZva2UgaW4gcmVnYXJkcyB0byBoYW5kbGluZyBwcm9wZXJ0eWdldCB2YXJpYWJsZXMKCWxvbmdlciB0aGFuIDQgYnl0ZXMgKGxpa2UgVlRfREFURSkuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IHBhc3MgdGhlIFBST0ZJTEVfU0VSVkVSIGZsYWcgaW4gdG8gQ3JlYXRlTmFtZWRQaXBlIGFzIGl0IGlzCgkgIGJvZ3VzLgoJLSBDYWxsIEZsdXNoRmlsZUJ1ZmZlcnMgdG8gbWFrZSBzdXJlIHRoZSBvdGhlciBlbmQgb2YgdGhlIHBpcGUgZG9lc24ndAoJICBnZXQgY3V0IG9mZiBwcmVtYXR1cmVseS4KCS0gRG9uJ3QgY2FsbCBDYW5jZWxJbyBhcyB3ZSBzaG91bGQgbmV2ZXIgaGF2ZSBhc3luYyBJL08gcGVuZGluZy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGFzbi4xIGVuY29kaW5nL2RlY29kaW5nIG9mIHRpbWVzLCB3aXRoIHRlc3RzLgoKMjAwNS0wNi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy90ZXN0cy9kM2QuYzoKCUFudG9pbmUgQ2hhdmFzc2UgPGEuY2hhdmFzc2VAZ21haWwuY29tPgoJVGVzdCBjYXNlcyBmb3IgdGhlIGRpcmVjdDNkNyBsaWdodCBhcGkuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGV2aWNlX21haW4uYywKCSAgZGxscy9kZHJhdy9kZXZpY2Vfb3BlbmdsLmM6CglBbnRvaW5lIENoYXZhc3NlIDxhLmNoYXZhc3NlQGdtYWlsLmNvbT4KCVJld3JvdGUgdGhlIGxpZ2h0IG1hbmFnZW1lbnQgQVBJIHRvIGFsbG93IGZvciBhbiB1bmxpbWl0ZWQgYW1vdW50IG9mCglsaWdodHMgdG8gYmUgc2V0LCBhbmQgb25seSBhIHN1YnNldCBvZiB0aGVtIHRvIGJlIGVuYWJsZWQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIE1TSV9SZWNvcmRHZXRTdHJpbmcgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXYXJuaW5nIGZpeGVzIGZvciAtV21pc3NpbmctZGVjbGFyYXRpb25zIGFuZCAtV3dyaXRlLXN0cmluZ3MuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIGEgcmljaGVkaXQgY29udHJvbCBmb3IgbGljZW5zZSB0ZXh0LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9tc2lwcml2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlcyBmb3IgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBhbmQgLVd3cml0ZS1zdHJpbmdzIHdhcm5pbmdzLgoKCSogZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglEb24ndCB1c2UgZnVsbHNjcmVlbiBtb2RlIGluIHZpZGVvIHJlbmRlcmVyIGZvciBub3cgYW5kIGltcHJvdmUgZXJyb3IKCWhhbmRsaW5nIGEgYml0LgoJSW1wcm92ZWQgYSBiaXQgUnVuL1BhdXNlL1N0b3AgbWV0aG9kcyBvZiBwYXJzZXIgdGVtcGxhdGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciB3aW5kb3cgc3RhdGUgd2hlbiBhIHdpbmRvdyByZWNlaXZlcyBXTV9FTkFCTEUgbWVzc2FnZS4KCgkqIGRsbHMvdXNlci93aW4uYzoKCVN0aWxsIHNlbmQgYSBtZXNzYWdlIGluIFNldFdpbmRvd1RleHQgZm9yIHRoZSBpbnRlci1wcm9jZXNzIGNhc2UgZXZlbgoJdGhvdWdoIGl0J3Mgbm90IGZ1bGx5IGNvcnJlY3QgKHJlcG9ydGVkIGJ5IEphc29uIENhbXBiZWxsKS4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSBkZWZhdWx0IGFzeW5jaHJvbm91cyBJL08gaW1wbGVtZW50YXRpb24uCgktIE1ha2UgZmlsZSBvYmplY3RzIHVzZSBpdC4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHNvbWUgZnVuY3Rpb25zLgoKCSogZGxscy9ycGNydDQvbmRyX29sZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIE5kckludGVyZmFjZVBvaW50ZXIqIG1vcmUgcmVsaWFibGUuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Tdi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU3luY2hyb25pemUgcmVzb3VyY2Ugc2NyaXB0cyBJRHMgb2YgdGhlIGRpZmZlcmVudCBsYW5ndWFnZXMgYW5kIGFkanVzdAoJSU5GTyBlbnRyaWVzLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJUmVtb3ZlZCBsb2NhbCB2YXJpYWJsZXMgb25seSB1c2VkIGluIFRSQUNFIHN0YXRlbWVudHMuCgoJKiBpbmNsdWRlL2FjbGFwaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgR2V0RXhwbGljaXRFbnRyaWVzRnJvbUFjbC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIHNlY3VyaXR5IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHdpbmJhc2UuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYXBwbWdtdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIGFwcG1nbXQuaCBoZWFkZXIuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHJhZGlvIGJ1dHRvbiBncm91cHMuIERvbid0IGFkZCB0aGUgV1NfR1JPVVAgc3R5bGUgdG8gZXZlcnkKCXdpbmRvdy4KCgkqIGluY2x1ZGUvb2xlY3RsLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgT2xlTG9hZFBpY3R1cmVFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29uc3QtaWZ5IGEgbWFzay4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCByZXR1cm4gY29kZSBhYnVzZSAoZG9uJ3QgdXNlIEhSRVNVTFQgd2hlbiBpdCBpc24ndCBtZWFudCksIG1ha2UKCWZ1bmN0aW9ucyBzdGF0aWMgd2hlcmUgcG9zc2libGUsIHJlbW92ZSB1bnVzZWQgcHJvdG90eXBlcy4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVnaXN0cnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgZnVuY3Rpb25zIHRvIGFkZCB0aGUgVXNlciBVcGdyYWRlQ29kZXMuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgYSBjcmFzaCBpZiB0aGUgbGVuZ3RoIGJ1ZmZlciBpcyBOVUxMLgoKCSogZGxscy9udGRsbC9udC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJRml4ZWQgdHlwby4KCVplcm8gdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBiZWZvcmUgdXNlLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkIGFub3RoZXIgKHVua25vd24pIG1lbWJlciB0byBTWVNURU1fVEhSRUFEX0lORk9STUFUSU9OLgoKMjAwNS0wNi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC9leGNlcHQuYywKCSAgZGxscy9rZXJuZWwvZmliZXIuYywgZGxscy9rZXJuZWwvaGVhcC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvd2luZWRvcy9yZWxheS5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1c2lvbnMgb2YgdGhyZWFkLmgKCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJTW92ZWQgdGhlIG50ZGxsIHBlci10aHJlYWQgZGF0YSBvdXQgb2YgdGhlIFRFQiBpbnRvIGEgcHJpdmF0ZQoJc3RydWN0dXJlIHN0b3JlZCBpbiBURUIuU3lzdGVtUmVzZXJ2ZWQyLgoKCSogZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMva2VybmVsL3B0aHJlYWQuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMva2VybmVsL3N5c2xldmVsLmMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3Z4ZC5jOgoJTW92ZWQgdGhlIGtlcm5lbCBwZXItdGhyZWFkIGRhdGEgb3V0IG9mIHRoZSBURUIgaW50byBhIHByaXZhdGUKCXN0cnVjdHVyZSBzdG9yZWQgaW4gVEVCLlN5c3RlbVJlc2VydmVkMS4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6CglGZXRjaCB0aGUgc3RhY2sgc2VsZWN0b3IgdG8gdXNlIGZyb20gdGhlIHByZXZpb3VzIHN0YWNrZnJhbWUgaW5zdGVhZAoJb2YgdGhlIFRFQi4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9naXQuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZW9iai5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywKCSAgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29haWRsX3AuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3JlY2luZm8uYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpMTYuYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywKCSAgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jLAoJICBkbGxzL3FjYXAvdmZ3Y2FwdHVyZS5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYywKCSAgZGxscy9yaWNoZWQyMC9yaWNob2xlLmMsIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3F1ZXJ5LmMsIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvd2luZWQzZC92b2x1bWUuYywgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgcmVtYWluaW5nIE9MRSBpbnRlcmZhY2UgdnRhYmxlcyBjb25zdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBbGxvdyBmb3IgdW5peGZzIGZvbGRlcnMgdG8gYmUgcm9vdGVkIGF0IGRlc2t0b3AgbGV2ZWwuCglNb3ZlZCBkb3MtPnVuaXggcGF0aCBjb252ZXJzaW9uIGludG8gY2Fub25pY2FsaXplX3BhdGguCglGYWlsIGluIEJpbmRUb09iamVjdCwgaWYgY2FsbGVkIHdpdGggZW1wdHkgcGlkbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTW92ZWQgYWxsIGFzc2VtYmx5IGNvZGUgdG8gdGhlIGVuZCBvZiB0aGUgZ2VuZXJhdGVkIEMgZmlsZXMgdG8gYXZvaWQKCWNvbmZsaWN0aW5nIHdpdGggdGhlIGNvbXBpbGVyIG92ZXIgc2VjdGlvbiBjaGFuZ2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvZDNkX3V0aWxzLmMsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMvZGRyYXcvZGV2aWNlX21haW4uYywKCSAgZGxscy9kZHJhdy9kZXZpY2Vfb3BlbmdsLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2RfbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkX29wZW5nbC5jLCBkbGxzL2RkcmF3L2V4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9saWdodC5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tYXRlcmlhbC5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9vcGVuZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L29wZW5nbF91dGlscy5jLAoJICBkbGxzL2RkcmF3L3N1cmZhY2VfbWFpbi5jLCBkbGxzL2RkcmF3L3RleHR1cmUuYywKCSAgZGxscy9kZHJhdy92ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy92aWV3cG9ydC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTW92ZWQgZDNkZGV2aWNlIGFuZCBkaXJlY3QzZCBvYmplY3RzIGZpbGVzIHRvIGRkcmF3IHJvb3QgZGlyLgoJUmVuYW1lZCBhbGwgcmVtYWluaW5nIGZpbGVzLgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCU1ha2UgU1lTVEVNX1RIUkVBRF9JTkZPUk1BVElPTi5wc3pQcm9jZXNzTmFtZSBhIFVOSUNPREVfU1RSSU5HLgoKCSogZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL2V2ZW50cy5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzdGFuZGFyZCBsaXN0cyBpbiB0aGUgZXZlbnQgc3Vic2NyaXB0aW9uIGNvZGUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGdldCBjYXVnaHQgaW4gbG9vcHMgb24gcGFyZW50IHByb2dpZHMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBzb21lIENlcnQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglEZWxldGUgdmVyc2lvbiBzbmlmZmluZyBsb2dpYy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglMZXQgQmluZFRvT2JqZWN0IGZhaWwsIGlmIGNhbGxlZCB3aXRoIGVtcHR5IHJlbGF0aXZlIHBpZGwuCglUZXN0cyB0byBzaG93IHRoYXQgaXQgc2hvdWxkIGRvIHNvLgoJRml4IFNIQnJvd3NlRm9yRm9sZGVyIHRvIG5vdCBwYXNzIGFuIGVtcHR5IHBpZGwgdG8gQmluZFRvT2JqZWN0LgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVwaWN0dXJlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHRlc3RjYXNlcyBmb3IgT0xFIFBpY3R1cmUgaGFuZGxpbmcuCglJbXBsZW1lbnRlZCBQSUNUWVBFX05PTkUgbG9hZGluZy4KCUNsZWFuZWQgdXAgc3RyZWFtIGxvYWRpbmcsIGhhbmRsZSAibHQiIG1hZ2ljLgoJRml4ZWQgc29tZSBzbWFsbCBwcm9ibGVtcyBleHBvc2VkIGJ5IHRlc3RzIGFnYWluc3QgbmF0aXZlLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3Qgb3BlbiBkZXZpY2UgaWYgYWxyZWFkeSBvcGVuLgoJRG9uJ3QgbmVlZCBvcGVuZWQgZGV2aWNlIHRvIGdldC9zZXQgdm9sdW1lLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBdWRpdCB0aGUgVGFiIGNvbnRyb2wuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgZmlsZSBwcm9wZXJ0aWVzIGRpYWxvZyAocGFydGx5IGJhc2VkIG9uIFJvYiBELidzIHdpbmZpbGUKCWNvZGUpLgoKMjAwNS0wNi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU3dpdGNoIGJhY2sgdG8gLmRhdGEgYXQgdGhlIGVuZCBvZiBhc20gc2VjdGlvbnMgdG8gd29yayBhcm91bmQgYW4KCW9wdGltaXphdGlvbiBpbiByZWNlbnQgZ2NjIHZlcnNpb25zLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBEYXRhUmVwcmVzZW50YXRpb24gaW4gTmRyQ2xpZW50SW5pdGlhbGl6ZU5ldywgbm90CglOZHJTZW5kUmVjZWl2ZS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IHJldHVybiBOVUxMIGZvciBwcm94eSBkZXRhaWxzIGlmIHRoZXJlIGlzIG5vIHByb3h5LgoJLSBSZW1vdmUgc3R1YiBtZXNzYWdlLCBpdCBzZWVtcyB0byBiZSBjb21wbGV0ZS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2IgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkaXNjb25uZWN0IHByb3hpZXMgZmxhZ2dlZCB3aXRoIFNPUkZQX05PTElGRVRJTUVNR01ULiBJdCBtYWtlcwoJbm8gc2Vuc2UgYW5kIG9ubHkgY2F1c2VzIHRyb3VibGUgZm9yIHByb3hpZXMgdGhhdCBkZXBlbmQgb24gdGhlc2UKCXByb3hpZXMgYmVpbmcgYXZhaWxhYmxlLgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3Rlc3RzL2VkaXQuYzoKCUxhdXJpIFR1bG1pbiA8dHVsbWluQGdtYWlsLmNvbT4KCURvbid0IHRydW5jYXRlIHRleHQgb24gV01fU0VUVEVYVCBhbmQgc2VuZCBFTl9NQVhURVhULgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGEgcHJvYmxlbSB3aGVyZSBhY3R1YWwgc2FtcGxlIHJhdGUgZG9lc24ndCBleGFjdGx5IG1hdGNoCglyZXF1ZXN0ZWQuCgoJKiBkbGxzL3F1YXJ0ei9hY213cmFwcGVyLmMsIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovdHJhbnNmb3JtLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBjbG9jayByZWxlYXNlIGluIHRyYW5zZm9ybSB0ZW1wbGF0ZS4KCUFkZFJlZiBwVW5rIGluIENvcHlNZWRpYVR5cGUuCglBZGRlZCBDcmVhdGVNZWRpYVR5cGUgaGVscGVyIGZ1bmN0aW9uIGFuZCB1c2UgaXQuCglSZXBsYWNlZCBzb21lIERlbGV0ZU1lZGlhVHlwZSBjYWxscyB0byBGcmVlTWVkaWFUeXBlIHRvIGJlIGluIGxpbmUKCXdpdGggcmVjZW50IGNoYW5nZXMuCglGaXhlZCBJRW51bU1lZGlhVHlwZXNJbXBsX05leHQuCglDbGVhciBtZWRpYSB0eXBlIHdoZW4gaW5pdGlhbGl6aW5nIHBpbnMuCglBZGRlZCBzb21lIEFkZFJlZi9SZWxlYXNlIHRyYWNlcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZWZyZXNoIHdpbmRvdyBjb250ZW50IGFmdGVyIGNvbnRleHQgbWVudSBwb3B1cHMgb25seSBpZiBhbnkgY29tbWFuZAoJaGFzIGJlZW4gZXhlY3V0ZWQuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmg6CglNb3ZlZCB0aGUgc2VydmVyIHBhcnQgb2YgdGhlIEV4aXRUaHJlYWQgZnVuY3Rpb25hbGl0eSB0byBudGRsbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglHZW5lcmF0ZSB0aGUgcmVzb3VyY2UgZGF0YSBkaXJlY3RseSBpbnNpZGUgdGhlIHJlc291cmNlIGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jOgoJRG9uJ3QgYm90aGVyIGxvb2tpbmcgZm9yIGEgcmVzb3VyY2UgZGlyZWN0b3J5IGluIGZyZWUgbWVtb3J5IGFyZWFzLgoKCSogZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL250ZGxsL3RocmVhZC5jOgoJQXZvaWQgYWNjZXNzaW5nIHRoZSBodGFzazE2IFRFQiBmaWVsZCBmcm9tIG50ZGxsLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUFsbG9jYXRlIHRoZSBzeXN0ZW0gdmlldyBmb3IgYnVpbHRpbiBtb2R1bGVzIGVhcmxpZXIgaW4KCWxvYWRfYnVpbHRpbl9jYWxsYmFjayBzbyB0aGF0IHdlIGFsc28gY3JlYXRlIG9uZSBmb3IgdGhlIG1haW4KCWV4ZWN1dGFibGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglNYXRjaCBuYW1lcyBmb3IgV01fU0hPV1dJTkRPVyBzdGF0dXMgY29kZXMgdG8gTVNETi4KCgkqIGRsbHMvb2xlMzIvb2xlcHJveHkuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJQWRkIHNvbWUgdHJhY2luZyB0byB0aGUgSVJlbVVua25vd24gUnBjUHJveHlCdWZmZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXR1cm4gcHJvcGVyIGVycm9yIGNvZGUuCglDaGFuZ2UgRVJSIHRvIFdBUk4gZm9yIGZhaWxlZCByZXF1ZXN0cy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdHlwZWxpYi5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVGVzdCBvbmx5IHN0ZG9sZTMyLnRsYiBhcyB3ZSBkb24ndCBoYXZlIG9sZXBybzMyLmRsbCBpbiBXaW5lLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglTdXBwcmVzcyB0aGUgbm9pc3kgU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUgZml4bWUuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVN5bmMgd2luZWZpbGUncyBoZWFkZXIgYmV0d2VlbiBXSU5FIGFuZCBSZWFjdE9TLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgbW9yZSBwaXBlIHRlc3RzLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCB0ZXN0cyB0byB3b3JrIHdpdGggZHJpdmVycyB0aGF0IGRvbid0IHN1cHBvcnQgYSBwcmltYXJ5IGJ1ZmZlci4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgYSBzdHViIGZvciBDcnlwdENBVEFkbWluQ2FsY0hhc2hGcm9tRmlsZUhhbmRsZS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIHNvbWUgZXJyb3IgY29kZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9zdXJmYWNlX2RpYi5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9zdXJmYWNlX2dhbW1hLmMsIGRsbHMvZGRyYXcvc3VyZmFjZV9oYWwuYywKCSAgZGxscy9kZHJhdy9zdXJmYWNlX21haW4uYywgZGxscy9kZHJhdy9zdXJmYWNlX3RodW5rcy5jLAoJICBkbGxzL2RkcmF3L3N1cmZhY2VfdXNlci5jLCBkbGxzL2RkcmF3L3N1cmZhY2Vfd25kcHJvYy5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTW92ZWQgZHN1cmZhY2Ugb2JqZWN0IGZpbGVzIHRvIGRkcmF3IHJvb3QgZGlyLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHRlc3RzIHRvIGNoZWNrIERpcmVjdFNvdW5kQ2FwdHVyZSBjcmVhdGlvbi4KCUZpeCBkc291bmQvY2FwdHVyZS5jIHRvIHBhc3MgdGVzdHMuCgoyMDA1LTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jLAoJICBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgZm9yIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgYW5kIC1Xd3JpdGUtc3RyaW5ncyB3YXJuaW5ncy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiBhIGZvbGRlciBpcyBzZWxlY3RlZCBvbiBPcGVuIHRoZW4gYnJvd3NlIGludG8gaXQsIG90aGVyd2lzZSB3ZQoJc2hvdWxkIHJldHVybiB0aGUgcGF0aCBpbiB0aGUgZWRpdCBib3ggd2hldGhlciB0aGF0IGJlIGEgZm9sZGVyIG9yIGEKCWZpbGUuCglEb24ndCBhZGQgZXh0ZW5zaW9ucyB0byBhIGZvbGRlci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IHNvbWUgbWlzc2VkIGludmFsaWRhdGlvbnMgYWZ0ZXIgY29sdW1uIHJlc2l6ZS4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGFzbi4xIGRlY29kaW5nIG9mIGludGVnZXJzLCB3aXRoIHRlc3RzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBEV0xQX01TR1JFU1VMVCB0byByZXR1cm4gdmFsdWVzIGZyb20gdGhlIGRpYWxvZyBwcm9jLgoKCSogZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvY2FwdHVyZS5oLCBkbGxzL3FjYXAvdjRsLmMsCgkgIGRsbHMvcWNhcC92ZndjYXB0dXJlLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglJbXBsZW1lbnRlZCBWZndDYXB0dXJlIGludGVyZmFjZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9kaWFsb2cuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBkaWFsb2cgY29udHJvbHMgdG8gc3Vic2NyaWJlIHRvIGluc3RhbGxlciBldmVudHMuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRmluaXNoIERpcmVjdFNvdW5kQ2FwdHVyZS9EaXJlY3RTb3VuZENhcHR1cmU4IHNwbGl0LgoJQWRkIHRlc3RzIHRvIHZlcmlmeSBzcGxpdC4KCgkqIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVsZWFzZSBjbG9jayBvbmx5IHdoZW4gb25lIGlzIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBGYWN0b3Igb3V0IGNvbW1vbiB0ZXh0IHNoaWZ0aW5nIGxvZ2ljLgoJLSBTaGlmdCBzZWxlY3RlZCB0YWIgdGV4dCB1cCBpbnN0ZWFkIG9mIGRvd24uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIGEgYnVuY2ggb2YgY3J5cHRvIGVycm9yIGNvZGVzLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhlIFRSQUNFIHN0YXRlbWVudHMgZG8gbm90IHNwZXcgZ2FyYmFnZSBieSB1c2luZwoJZGVidWdzdHJfd24uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2VuZCBDRE5fRk9MREVSQ0hBTkdFIHdoZW5ldmVyIHdlIGNoYW5nZSBmb2xkZXIuCgoJKiBkbGxzL21sYW5nL3Rlc3RzL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlbW92ZSBudGRsbCBmcm9tIGltcG9ydHMuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGFrZSB0aGUgZGlhbG9nIGZyYW1lIGludG8gYWNjb3VudCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBkaWFsb2cgc2l6ZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2luY2UgbXVsdGlwbGUgcHJvZ2lkcyBjYW4gcmVmZXIgdG8gMSBjbGFzcyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoYXQKCWNsYXNzIGlzIGlzbnRhbGxlZCBpbnN0ZWFkIG9mIGp1c3QgcmVseWluZyBvbiBoYXZpbmcgaXQgc2V0IHRoZQoJSW5zdGFsbE1lIHZhcmlhYmxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvZGRyYXdfaGFsLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3X3VzZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1vdmVkIGRkcmF3IG9iamVjdCBmaWxlcyB0byBkZHJhdyByb290IGRpci4KCjIwMDUtMDYtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9jbGlwcGVyLmMsIGRsbHMvZGRyYXcvcGFsZXR0ZV9oYWwuYywKCSAgZGxscy9kZHJhdy9wYWxldHRlX21haW4uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1vdmVkIGNsaXBwZXIgYW5kIHBhbGV0dGUgb2JqZWN0cyBmaWxlcyB0byBkZHJhdyByb290IGRpci4KCgkqIHRvb2xzL3dpbmUuaW5mOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQga2V5cyB0byBpbnN0YWxsIGFsbCBrbm93biBEUGxheSBzZXJ2aWNlIHByb3ZpZGVycy4KCgkqIGRsbHMvY2FwaTIwMzIvY2FwaTIwMzIuc3BlYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglSZW1vdmUgQ1IgY2hhcmFjdGVycy4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUdldCByaWQgb2YgYSBtYWdpYyBudW1iZXIsIGFuZCBpbXByb3ZlIHN0dWJzIG9mCglDZXJ0T3BlblN5c3RlbVN0b3JlQS9XLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZWFycmFuZ2UgQ3J5cHR7RGV8RW59Y29kZU9iamVjdEV4IHRvIG1ha2UgZXJyb3IgaGFuZGxpbmcgbW9yZQoJbmF0dXJhbC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggcG9zaXRpb24gb2YgY29sdW1uIGhlYWRlciBsYWJlbHMuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvY2F0ZSB3aGVyZSBhIGJ1ZmZlciBzaXplIGlzIG5vdCBiZWluZyBzZXQgYW5kIGNvcnJlY3RseSBoYW5kbGUgdGhlCglidWZmZXIgc2l6ZSBjb252ZXJzaW9uIGZyb20gVyB0byBBICh3aXRoIGhlbHAgZnJvbSBSb2JlcnQgU2hlYXJtYW4pLgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hhbmdlIFNZU1RFTV9QUk9DRVNTX0lORk9STUFUSU9OIHRvIHJlZmxlY3QgVzJLL1dpblhQL1cySzMgc3RydWN0dXJlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgaW5zdGFsbF9vbl9kZW1hbmQgZm9yIEV4dGVuc2lvbiBzZXJ2ZXJzIGFsc28uIGN1cnJlbnRseSBkZWZhdWx0aW5nCgl0byBUUlVFLgoJRXh0ZW5zaW9uIG5lZWQgdG8gaGF2ZSAxIHZlcmIgdG8gbWFyayB0aGUgZ2l2ZW4gcHJvZ2lkIHRvIGJlCglpbnN0YWxsZWQuCgoyMDA1LTA2LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi90ZXN0cy9tb25pa2VyLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gRG9uJ3QgYXNzdW1lIHRoZSBST1QgaXMgYWxyZWFkeSBlbXB0eS4KCS0gVGVzdCB0aGF0IElFbnVtOjpDbG9uZSBkb2Vzbid0IGFsc28gZG8gYSBSZXNldC4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglJRW51bTo6Q2xvbmUgc2hvdWxkbid0IGRvIGEgUmVzZXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGxvb3AgaWYgYSBQcm9nSWQncyBQYXJlbnQgSW5kZXggaXQgaXRzZWxmLgoJQWRkIGEgVmVyc2lvbkluZEluZGV4IGZvciB0cmFja2luZyB2ZXJzaW9uIGluZGVwZW5kZW50IGZpZWxkcyBmb3IgdGhlCglQcm9nSWRzIHByb3Blcmx5LgoKCSogZGxscy9tc2Rtby9kbW9yZWcuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRHJvcCBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiBJSURfSUVudW1ETU8uCgoJKiBkbGxzL29sZTMyL3Rlc3RzL21vbmlrZXIuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQWRkZWQgdGVzdHMgZm9yIGZpbGUgbW9uaWtlcnMuCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gQmFzZSBGaWxlTW9uaWtlckltcGxfU2F2ZSgpIG9uIFhQLgoJLSBDb3JyZWN0IGhhbmRsaW5nIG9mIFVuaWNvZGUgc3RyaW5ncyAmIG11bHRpYnl0ZSBsb2NhbGVzLgoJLSBNb3JlIGVycm9yIGNoZWNraW5nLgoJLSBDaGFuZ2UgRVJSIHRvIFdBUk4uCgktIE1hdGNoIFdpbmRvd3MgcXVpY2sgJiBkaXJ0eSBlc3RpbWF0ZSBmb3IgR2V0U2l6ZU1heCgpLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBNU0lfUXVlcnlHZXRSZWNvcmQgaW4gb25lIG1vcmUgcGxhY2UuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIGEgY291cGxlIG1pc3NpbmcgcHJvdG90eXBlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgYSBtZXNzYWdlIGZvciBza2lwcGVkIGFjdGlvbnMgaW4gUHJvY2Vzc0V4ZWNTZXF1ZW5jZSBsaWtlIGluIHRoZQoJVUlTZXF1ZW5jZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU2V0IGRlZmF1bHQgZm9yICJNeSBEb2N1bWVudHMiIHRvICRIT01FLCBhbmQgIkRlc2t0b3AiIHRvIH4vRGVza3RvcC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGNoYW5nZSBhIGZlYXR1cmVzIHN0YXRlIHRvIEFkdmVydGlzZSBpZiBpdCBleHBsaWNpdGx5IGRpc2FsbG93cwoJaXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZvciB0eXBlbGlicyBpbmRleCAxIGRvIG5vdCBhZGQgXFwxIHRvIHRoZSBwYXRoLiBUaGlzIGNsZWFucyB1cAoJcmVnaXN0cnkgZGlmZnMgd2l0aCBuYXRpdmUgTVNJLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlcyBmb3IgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBhbmQgLVd3cml0ZS1zdHJpbmdzIHdhcm5pbmdzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZWdpc3RlciB0aGUgRmlsZVR5cGUgYW5kIGNvcnJlY3Qgc2hvcnQgdnMgbG9uZyBwYXRoIHByb2JsZW1zIHdpdGgKCUlucHJvY1NlcnZlcjMyLiBBbHNvIGFkZCBpbnN0YWxsX29uX2RlbWFuZCBib29sZWFuIGZvciBmdXR1cmUKCWV4cGFuc2lvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSBHZXJtYW4gcmVzb3VyY2UgZmlsZXMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGludGVybmFsIHN0YXRlIG9ubHkgaWYgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgcmVtb3ZlZC4KCgkqIGRsbHMvTWFrZWZpbGUuaW46CglUZW1wIGhhY2sgdG8gY2xlYW4gdXAgLmRlZiBmaWxlcyBhbmQgaG9wZWZ1bGx5IGF2b2lkIG1vcmUgYnVnCglyZXBvcnRzIGFib3V0IGZhaWxlZCBidWlsZHMuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYywKCSAgaW5jbHVkZS93aW5jcnlwdC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBhZGQgc29tZSB0ZXN0cyBmb3IgT0lEIGZ1bmN0aW9ucwoJLSBpbXBsZW1lbnQgZW5jb2RpbmcgaW50ZWdlcnMKCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNZXJnZWQgcmVtYWluaW5nIGhlYWRlciBmaWxlcyBpbiBEaXJlY3REcmF3IG9iamVjdHMgZm9sZGVycyBpbnRvCglkZHJhd19wcml2YXRlLmguCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgdW51c2VkIGNvZGUgZ2V0cyBjb21waWxlZCB0byBhdm9pZCB3YXJuaW5ncy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHVicyBmb3IgR2V0Vm9sdW1lUGF0aE5hbWUoQSxXKS4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbGYzMl9hdXh2X3QuYV91bi5hX3B0ciBubyBsb25nZXIgZXhpc3RzIGluIEhFQUQgZ2xpYmMgQ1ZTLCB1c2UKCWFfdmFsLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2N1c3RvbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9uIE1TSV9RdWVyeUdldFJlY29yZC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZmV0Y2ggYSBzaW5nbGUgcmVjb3JkIGZyb20gYSBxdWVyeS4KCgkqIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVByaW50IGNvbW1hbmQgdGhhdCBmYWlscyB0byBtYWtlIGVycm9yIG1lc3NhZ2UgYSBsaXR0bGUgbW9yZQoJY29tcHJlaGVuc2libGUuCgoJKiBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kdXBsZXguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3ZlIEZ1bGxEdXBsZXggY29kZSBmcm9tIGNhcHR1cmUuYyB0byBkdXBsZXguYy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc25tcC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBzbm1wLmguCgoyMDA1LTA2LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jOiBBdm9pZCBkZXBlbmRlbmN5IG9uIHRocmVhZC5oLgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHByb3BlcnR5IHNldCBkZXNjcmlwdGlvbiBmb3IgbW9yZSB0aGFuIG9uZSBjYXB0dXJlIGRldmljZSBidWcuCglBZGQgYmV0dGVyIHRyYWNlcyBtZXNzYWdlcy4KCgkqIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RtdXNpYy9idWZmZXIuYywKCSAgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9wb3J0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsCgkgIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLCBkbGxzL2RwbmV0L2FkZHJlc3MuYywKCSAgZGxscy9kcG5ldC9jbGllbnQuYywgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsCgkgIGRsbHMvZHBuZXQvZHBuZXRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLAoJICBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL21vbmlrZXIuYywKCSAgZGxscy9pdHNzL3N0b3JhZ2UuYywgZGxscy9tYXBpMzIvcHJvcC5jLCBkbGxzL21sYW5nL21sYW5nLmMsCgkgIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNodG1sL2h0bWxkb2MuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvb2xlb2JqLmMsCgkgIGRsbHMvbXNodG1sL3BlcnNpc3QuYywgZGxscy9tc2h0bWwvdmlldy5jLCBkbGxzL21zaS9tc2kuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG1vcmUgb2YgdGhlIE9MRSBpbnRlcmZhY2UgdnRhYmxlcyBjb25zdC4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaDogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWVyZ2VkIGQzZGRldmljZS9tYWluLmggYW5kIGRpcmVjdDNkL21haW4uaCBpbnRvIGQzZF9wcml2YXRlLmguCglGaXhlZCBUaHVua19JRGlyZWN0M0RJbXBsXzJfQ3JlYXRlVmlld3BvcnQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCU1pbm9yIGZvcm1hdHR0aW5nIGZpeGVzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCUFkZCBkZWZpbml0aW9ucyBmb3IgSURUUllBR0FJTiBhbmQgSURDT05USU5VRS4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YnMgYW5kIHN0dWIgaW1wbGVtZW50YXRpb25zLgoKCSogaW5jbHVkZS93aW50cnVzdC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgc29tZSBmdW5jdGlvbnMgYW5kIHN0cnVjdHVyZXMuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiBjaGVja2JveCBwcm9wZXJ0aWVzLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJVXNlIHN0YW5kYXJkIFRMUyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBhIFRFQiBpbnRlcm5hbCBmaWVsZCB0byBhY2Nlc3MKCXBlci10aHJlYWQgZGF0YS4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmM6IEFsd2F5cyBsb2FkIDE2LWJpdCBnZGkuZXhlIGF0IGluaXQgdGltZS4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmM6CglSZXZlcnQgcHJldmlvdXMgY2hhbmdlLCBpdCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IChyZXBvcnRlZCBieSBSb2IKCVNoZWFybWFuKS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgc29tZSAtV3dyaXRlLXN0cmluZ3Mgd2FybmluZ3MuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXByb3ZlIHRyYWNpbmcuCgktIEltcGxlbWVudCBGQ19VUCBhbmQgcGFydGlhbGx5IEZDX09QLgoJLSBEb24ndCBuZWVkbGVzc2x5IG1hcnNoYWwgNCBieXRlcyBpbiBOZHJQb2ludGVyKi4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSWYgd2UgYXJlIGFjY2Vzc2luZyBhIG1ldGhvZCBmcm9tIGEgc3VwZXJjbGFzcyB0aGVuIHdlIG5lZWQgdG8gdXNlIHRoZQoJc3VwZXJjbGFzcydzIElUeXBlSW5mbyBvdGhlcndpc2Ugd2UgY291bGQgZ2V0IGVycm9ycyB3aGVuIGFjY2Vzc2luZwoJaHJlZnR5cGVzIHRoYXQgYXJlbid0IHByZXNlbnQgaW4gdGhlIHN1YmNsYXNzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHRoZSByZXR1cm4gdmFsdWVzIGZyb20gUXVlcnlQYXRoT2ZSZWdUeXBlTGliLgoJLSBPcGVuIHJlZ2lzdHJ5IGtleSB3aXRoIGxlYXN0IGFjY2VzcyByaWdodHMgbmVjZXNzYXJ5LgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BJbnZva2UgaXMgY29ycmVjdCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByaW50IGEgZml4bWUuCgoJKiBkbGxzL21zaS9mb3JtYXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgaGVhZGVycyBhbmQgbWFrZSBzb21lIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIEFkZCBzdGF0aWMsIGNvbnN0LgoJLSBEb24ndCBjaGFuZ2UgdGhlIHBhc3NlZCBpbiBiaXRtYXAgaGVhZGVyLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGF2b2lkIHVuaWNvZGUuaAoJLSBhZGQgYSBtaXNzaW5nIGZ1bmN0aW9uIHByb3RvdHlwZQoKMjAwNS0wNS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZGVkIHRlc3QgY2FzZSBmb3IgaW5maW5pdGUgbG9vcHMgb24gUkRXX1JFRFJBV05PVy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglBZGRlZCBhIGZyb21fY2hpbGQgcGFyYW1ldGVyIHRvIHRoZSBnZXRfdXBkYXRlX3JlZ2lvbiByZXF1ZXN0IHRvIGFsbG93CglyZXN0YXJ0aW5nIHRoZSBzZWFyY2ggZnJvbSBhIGdpdmVuIGNoaWxkLCBpbiBvcmRlciB0byBhdm9pZCBsb29waW5nCglmb3JldmVyIG9uIHdpbmRvd3MgdGhhdCBkb24ndCByZXBhaW50IGNvcnJlY3RseS4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmM6IFNraXAgdGhlIFVuaWNvZGUgc2lnbmF0dXJlIGlmIHByZXNlbnQuCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBJRFQgZW11bGF0aW9uLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCU1hcmsgbGlua3MgdG8gZGlyIHdpdGggRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCwgc28gbW9kZXJuCglhcHBsaWNhdGlvbnMgY2FuIHVzZSB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUZpeGVkIFJ0bElzVGV4dFVuaWNvZGUgcHJvdG90eXBlLCBhbmQgbWFkZSBpdCBwcm9wZXJseSB0YWtlIGludG8KCWFjY291bnQgdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3RzIHRvIGRldGVybWluZSB0aGUgcmV0dXJuIHZhbHVlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglUVl9JVEVNIGlzIHRoZSBvbGQgbmFtZSBvZiBUVklURU0sIHNob3VsZG4ndCBiZSB1c2VkIGFueSBtb3JlLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3F1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSB1bnVzZWQgY29kZS4KCgkqIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW46IFJlbW92ZSBpbXBvcnQgbGliIG9uIG1ha2UgY2xlYW4uCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbjoKCUZpeGVkIGluc3RhbGwgcnVsZSAocmVwb3J0ZWQgYnkgVmluY2VudCBC6XJvbikuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jLCBkbGxzL3ZlcnNpb24vdGVzdHMvdmVyc2lvbi5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJVGVzdCBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSB3aXRoIGV4ZWN1dGFibGVzLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9jb252ZXJ0LmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfdXRpbHMuYywgZGxscy9kZHJhdy9oZWxwZXIuYywKCSAgZGxscy9kZHJhdy9zdHJ1Y3RfY29udmVydC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWVyZ2VkIGNvbnZlcnQuYywgc3RydWN0X2NvbnZlcnQuYyBhbmQgaGVscGVyLmMgaW50byBkZHJhd191dGlscy5jLgoKCSogZGxscy9udGRsbC9zZWMuYzogRXZhbiBEZWF1YmwgPHdpbmVAd2FycGVkdmlldy5jb20+CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBSdGxHZXRDb250cm9sU2VjdXJpdHlEZXNjcmlwdG9yLgoJLSBGaXggTnRBY2Nlc3NDaGVjayBzbyBpdCB3b3JrcyB3aXRoIHJlbGF0aXZlIFNFQ1VSSVRZX0RFU0NSSVBUT1JzLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL2VuY29kZS5jLAoJICBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgQ3J5cHR7R2V0fFNldH1PSURGdW5jdGlvblZhbHVlCgktIGZpeCBidWcgYW5kIG1lbW9yeSBsZWFrIGluIGxhc3QgcGF0Y2gKCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIG11bHRpcGxlIERJUkVDVFNPVU5EIG9iamVjdCBzdXBwb3J0IChtdWx0aXBsZSBzb3VuZCBjYXJkcyBjYW4gcGxheQoJYXQgdGhlIHNhbWUgdGltZSkuCglGaXggQ29DcmVhdGVJbnN0YW5jZSB3aGVuIG5vIHNvdW5kIGNhcmQgaXMgcHJlc2VudC4KCUZpeCBjcmVhdGUgYnVnIGZvdW5kIGJ5IE1pa2UgSGVhcm4uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kcml2ZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTb21lIHdhcm5pbmcgZml4ZXMgZm9yIHRoZSByZWdyZXNzaW9uIHRlc3RzLgoKCSogZGxscy9tc2kvZGF0YWJhc2UuYywgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL2V2ZW50cy5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3BhY2thZ2UuYywKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3JlIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgYW5kIC1Xd3JpdGUtc3RyaW5ncyB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy9tc2kvc3FsLnk6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgbnVtYmVyIHBhcnNpbmcgYW5kIGF2b2lkIHVuaWNvZGUuaC4KCjIwMDUtMDUtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT24gc29tZSBzeXN0ZW1zIChsaW51eCAyLjYuOCkgQUZTIGZhaWxzIHRvIHNldCBkX3JlY2xlbiB0byAwIG9yIGRvZXMKCW5vdCBzdXBwb3J0IFZGQVRfSU9DVExfUkVBRERJUl9CT1RIIGJ1dCByZXR1cm5zIDAgKHN1Y2Nlc3MpIGFueXdheS4gU28KCXNldCBkX3JlY2xlbiB0byA2NTUzNSAoYW4gaW1wb3NzaWJsZSB2YWx1ZSkgYmVmb3JlIHRoZSBpb2N0bCgpIGFuZAoJY2hlY2sgaXQgYWZ0ZXJ3YXJkcyB0byB3b3JrIGFyb3VuZCB0aGlzIGJ1Zy4KCgkqIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBtb3JlIHR5cGVzIGZyb20gdGhlIHBhcnNlci4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGluY2x1ZGUvbXNpLmgsCgkgIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbmQgY29ycmVjdCBzb21lIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgc3VwcG9ydCBmb3IgbW9yZSB0aGFuIDIgYXVkaW8gY2hhbm5lbHMuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvdGVzdHMvZHN1cmZhY2UuYzoKCUFudG9pbmUgQ2hhdmFzc2UgPGEuY2hhdmFzc2VAZ21haWwuY29tPgoJLSBJbXBsZW1lbnRlZCB0aGUgaW1wbGljaXQgY3JlYXRpb24gb2YgbWlwbWFwcyBmb3Igc3VyZmFjZXMgdGhhdCBoYXZlCgkgIEREU0NBUFNfQ09NUExFWCwgRERTQ0FQU19NSVBNQVAgYW5kIGZvciB3aGljaCB0aGUgbWlwbWFwIGNvdW50IGlzCgkgIG5vdCBzcGVjaWZpZWQuCgktIEltcGxlbWVudGVkIHRlc3QgY2FzZXMgZm9yIG1pcG1hcCB0ZXh0dXJlcyBjcmVhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogS291amkgU2FzYWtpIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUFkZGVkIHRoZSBmZWF0dXJlIHRvIGNoYW5nZSByb3cgaGVpZ2h0IGluIG93bmVyIGRyYXcgY29udHJvbHMuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBLb3VqaSBTYXNha2kgPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJQ29ycmVjdGVkIHRoZSBkZXRlcm1pbmF0aW9uIG9mIGNhcHR1cmluZyBpbnNpZGUgRURJVF9XTV9Nb3VzZU1vdmUKCWZ1bmN0aW9uLgoKCSogZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLAoJICBkbGxzL2RldmVudW0vZmFjdG9yeS5jLCBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmMsIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9kbWJhbmQvYmFuZC5jLAoJICBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsCgkgIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLCBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvZ3JhcGguYywgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLAoJICBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywKCSAgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywKCSAgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywgZGxscy9kbWltZS9zZXF0cmFjay5jLAoJICBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLAoJICBkbGxzL2RtbG9hZGVyL2NsYXNzZmFjdG9yeS5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtb3JlIG9mIHRoZSBPTEUgaW50ZXJmYWNlIHZ0YWJsZXMgY29uc3QuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jLAoJICBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwKCSAgZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvd2lubW0vd2lubW1fRW4ucmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy92ZXJzaW9uLnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglVcGRhdGUgdmVyc2lvbiByZXNvdXJjZSBvZiBtc2lleGVjLmV4ZSB0byBjdXJyZW50IHZlcnNpb24gc2hpcHBlZCBmcm9tCglXaW5kb3dzIFVwZGF0ZS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9SdS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1N2LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBpbXBsZW1lbnQgY29tbWFuZHMgJ2NvcHknIGFuZCAnZGVsZXRlJwoJLSBmaXggJ21vdmUnIGNvbW1hbmQgZm9yIHRoZSBsZWZ0IHBhbmUKCjIwMDUtMDUtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFZhck1vbnRoTmFtZSgpIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9vcmRlci5jLAoJICBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3VwZGF0ZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJR2V0IHJpZCBvZiBzb21lIHJlZHVuZGFudCBwYXJzZXIgdHlwZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVmcmVzaCBkaXNwbGF5IGFmdGVyIGV4ZWN1dGluZyBhIGNvbnRleHQgbWVudSBjb21tYW5kLgoKCSogZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9mb3JtYXQuYywgZGxscy9tc2kvdGVzdHMvZGIuYywKCSAgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmMsIGRsbHMvbXNpL3Rva2VuaXplLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktV21pc3NpbmctZGVjbGFyYXRpb25zIGFuZCAtV3dyaXRlLXN0cmluZ3Mgd2FybmluZyBmaXhlcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Tdi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IGZpbGUgZmlsdGVyaW5nIChtYXRjaGluZyBvZiBmaWxlIG5hbWUgcGF0dGVybnMgYW5kIGZpbGUKCXR5cGVzKS4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJX2ZpbmRjbG9zZSgpIGV4aXN0cyBvbiBNaW5HVywgc28gcHJlZml4IGl0LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlaW5kZW50ZWQgcGFydHMgdG8gYmUgY29uZm9ybSB0byB0aGUgcmVzdCBvZiB0aGUgY29kZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZXdyb3RlIGFsbCBzdGFjayBiYWNrdHJhY2UgY29kZSAobW9yZSBjb2RlIHNoYXJpbmcsIGVhc2llciB0byBmb2xsb3csCglhbmQgbGVzcyBidWdzKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGFsd2F5cyBkZWNsYXJlIHRoZSBsc3RyKiBmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSdyZSBpbmxpbmUKCS0gYWRkIHByb3RvdHlwZSBmb3IgUmVhZERpcmVjdG9yeUNoYW5nZXNXCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuaDogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJI3VuZGVmIGludGVyZmFjZSBiZWZvcmUgaW5jbHVkaW5nIGFsc2EgaGVhZGVycy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGEgbXVsdGlwbGUgc291bmQgY2FyZCBpbnRlcmZhY2UgYnVnLgoJQWRkIGJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGQgU3ltTG9hZE1vZHVsZTY0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglQYXNzIHRoZSByaWdodCBod25kIHRvIFJlbGVhc2VEQygpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHZvbHVtZSBjb250cm9sLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oOgoJS3Jpc3RpYWFuIExlbmFlcnRzIDxrcmlzdGlhYW4ubGVuYWVydHNAZ21haWwuY29tPgoJZ2NjIDQuMCBjb21waWxlIGZpeC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggRXN0b25pYW4ga2V5Ym9hcmQgbGF5b3V0IHRvIGJldHRlciBtYXRjaCB0aGUgWDExIG9uZS4KCgkqIGRsbHMvcWNhcC9kbGxzZXR1cC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lZWRlZCBjYXN0LgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCVRlc3RzIGZvciBWYXJBZGQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gUmVpbXBsZW1lbnQgVmFyQWRkLCBoYWQgbWlzc2luZyBmdW5jdGlvbmFsaXR5IGFuZCB3cm9uZyBiZWhhdmlvdXIuCgktIEZpeCBhIHR5cG8gaW4gVmFyTXVsLgoKCSogZGxscy9rZXJuZWwvbG9jYWwxNi5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglGaXggaW5kZW50YXRpb24uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJSW5jbHVkZSBjcnlwdDMyIHRlc3RzIGludG8gd2luZXRlc3QuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSByZWdpc3RlcmVkIERMTHMgZm9yIGVuY29kZS9kZWNvZGUuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGZldyBtaXNzaW5nIGRlZmluZXMuCgoyMDA1LTA1LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2Ftc3RyZWFtL21haW4uYywgZGxscy9hdGwvcmVnaXN0cmFyLmMsCgkgIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLCBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY2F0L21hbmFnZXIuYywKCSAgZGxscy9jb21jYXQvcmVnaXN0ZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywKCSAgZGxscy9kM2Q5L3Jlc291cmNlLmMsIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkeDgvZDNkeDhjb3JlX3ByaXZhdGUuaCwgZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsCgkgIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9kM2R4b2ZfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZHhvZi9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9tYWluLmMsIGluY2x1ZGUvb2JqYmFzZS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc29tZSBvZiB0aGUgT0xFIGludGVyZmFjZSB2dGFibGVzIGNvbnN0LgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaCwgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOgoJQWRkZWQgLS1saXN0IG9wdGlvbiB0byB0aGUgdGVzdHMgYW5kIHVzZSB0aGF0IGluIHdpbmV0ZXN0LgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgc29tZSBwcml2aWxlZ2VkIGluc3RydWN0aW9ucyBlbXVsYXRpb24uCgoJKiBkbGxzL2dkaS9nZGlvYmouYywgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmM6CglEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglNb3ZlIHJlbWFpbmluZyBHREkgb2JqZWN0cyB0byB0aGUgbGFyZ2UgaGVhcC4KCgkqIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGRsbHMvdXNlci9tc2dib3guYywgZGxscy91c2VyL25vbmNsaWVudC5jLAoJICBkbGxzL3VzZXIvdGV4dC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IHNvbWUgb2Jzb2xldGUgY29tbWVudHMKCgkqIGRsbHMvbXNpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXNpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS90ZXN0cy9kYi5jLCBkbGxzL21zaS90ZXN0cy9mb3JtYXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgZm9ybWF0IHJlY29yZCB0ZXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY3VzdG9tLmMsCgkgIGRsbHMvbXNpL2V2ZW50cy5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW50cm9kdWNlIHJlYWxseSBiYXNpYyBzY3JpcHRpbmcgb2YgYWN0aW9ucy4gVGhpcyBpcyBwcmltYXJpbHkgdG8gZ2V0Cgl0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIG9mIHRoZSBhY3Rpb24gY29ycmVjdCBzaW5jZSBzb21lIGN1c3RvbSBhY3Rpb25zCgljYW4gYmUgc2NyaXB0ZWQgYW5kIG90aGVycyBhcmUgcnVuIGR1cmluZyB0aGUgc2NyaXB0IGJ1aWxkaW5nIHBoYXNlLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXN0cmljdCBkZWZvcm1hdGluZyBvZiBuZXN0ZWQgaW5kZXgga2V5cyBbWzFdXS4KCUludHJvZHVjZSB0aGUgYmVnaW5uaW5nIG9mIGdyb3VwIGRlZm9ybWF0aW5nIHt9LgoKCSogZGxscy9yc2FlbmgvTWFrZWZpbGUuaW4sIGRsbHMvcnNhZW5oL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIHRoZSBEYXRhIFByb3RlY3Rpb24gQVBJIHRvIHByb3RlY3QgdGhlIHVzZXJzIHByaXZhdGUga2V5cy4KCgkqIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJdCdzIHN1ZmZpY2llbmN0IGZvciBDcnlwdFtVbl1Qcm90ZWN0RGF0YSB0byBhY3F1aXJlIHRoZSBjcnlwdG8KCWNvbnRleHQgd2l0aCB0aGUgQ1JZUFRfVkVSSUZZX0NPTlRFWFQgZmxhZyBzZXQuCgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9jYXB0dXJlLmgsIGRsbHMvcWNhcC9xY2FwX21haW4uYywKCSAgZGxscy9xY2FwL3Zmd2NhcHR1cmUuYzoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUltcGxlbWVudGVkIFZmd0NhcHR1cmUgaW50ZXJmYWNlLgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIFN5c3RlbUZ1bmN0aW9uMDM2IHRvIGdlbmVyYXRlIHJhbmRvbSBieXRlcy4KCgkqIGluY2x1ZGUvdmZ3Lmg6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIGRlY2xhcmF0aW9ucyBmb3IgQVZJQ0FQIGFuZCBTREsgcGFydCBvZiBWaWRlbyBDYXB0dXJlIERyaXZlcgoJSW50ZXJmYWNlLgoKCSogZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBhbmQgZml4IHRoZSBzaXplIG9mIHN0cmVhbSBmaWVsZHMgaW4gYSByZWNvcmQuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLAoJICBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBkaWFsb2cgZXZlbnRzIGFuZCBob29rIHVwIHRoZSBkaWFsb2cgY29kZS4KCgkqIGRsbHMvdXVpZC91dWlkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB4bWxkb20gZ3VpZHMuCgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmM6IFBldGVyIE9iZXJuZG9yZmVyIDxrdW1iYXlvODRAYXJjb3IuZGU+CglVc2UgcHJvcGVyIHJldHVybiB2YWx1ZXMgaW4gYW1zdHJlYW0gc3R1YiBmdW5jdGlvbnMuCgoyMDA1LTA1LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCVN0ZWZhbiBE9nNpbmdlciA8c3RlZmFuZG9lc2luZ2VyQGdteC5hdD4KCSpIYW5kbGUgY2lkbD09MCBpbiBzaGZsZHJfZGVza3RvcCwgc2hmbGRyX2ZzIGFuZCBzaGZsZHJfbXljb21wLgoJKlJlbW92ZSB0aGUgZHdBdHRyaWJ1dGVzIG1lbWJlciBmcm9tIHRoZSBJR2VuZXJpY1NGSW1wbCBjbGFzcywgaXQncwoJbm90IG5lZWRlZCBhbmQgY2FuJ3QgYmUgaW5pdGlhbGlzZWQgaW4gSW5pdGlhbGl6ZSBhbmQgSW5pdGlhbGl6ZUV4LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IHBhc3MgYXQgd3JpdGluZyBvdXQgQ3VyVmVyIGtleXMgZm9yIFByb2dJZHMuIEFsc28gcHJpbnQgYQoJbWVzc2FnZSBmb3IgdGhlIGFjdGlvbnMgd2Ugc2tpcC4gTGluZXMgdXAgd2l0aCBuYXRpdmUgTVNJIG91dHB1dCBsb2dzCglmb3IgZWFzZSBvZiBjb21wYXJpc29uLgoKCSogZGxscy9vZGJjY3AzMi9vZGJjY3AzMi5jLCBkbGxzL29kYmNjcDMyL29kYmNjcDMyLnNwZWMsCgkgIGluY2x1ZGUvb2RiY2luc3QuaDoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglBZGQgYSBzdHViIGZvciBPREJDQ1BsQXBwbGV0LgoKCSogZGxscy9wb3dycHJvZi9wb3dycHJvZi5jLCBkbGxzL3Bvd3Jwcm9mL3Bvd3Jwcm9mLnNwZWM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJQWRkIGEgc3R1YiBmb3IgSXNBZG1pbk92ZXJyaWRlQWN0aXZlLgoKCSogZGxscy9udGRsbC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDYWxsIGZpbGVpb190ZXJtaW5hdGUgZm9yIEZJTEVfQXN5bmNXcml0ZVNlcnZpY2UuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglDcm9wIHRoZSB1cGRhdGUgcmVnaW9uIHRvIHRoZSBuZXcgd2luZG93IHJlY3RhbmdsZSB3aGVuIHJlc2l6aW5nIGEKCXdpbmRvdy4KCgkqIGRsbHMvdXNlci9zcHkuYzoKCURvbid0IGZldGNoIHRoZSB3aW5kb3cgY2xhc3MgbmFtZSBpZiBpdCdzIG5vdCBuZWVkZWQgdG8gY29tcHV0ZSB0aGUKCW1lc3NhZ2UgbmFtZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgYmlnIHJld3JpdGUgb2YgdGhlIHdob2xlIFJlZ2lzdGVyQ2xhc3MsIFJlZ2lzdGVyUHJvZ0lkLAoJUmVnaXN0ZXJFeHRlbnNpb24gYW5kIFJlZ2lzdGVyTUlNRSBhY3Rpb25zLiBXZSBub3cgaGFuZGxlIHZlcmJzCglwcm9wZXJseSwgaGFuZGxlIGRlcGVuZGFuY2llcyBhbmQgc3VjaCBwcm9wZXJseSBhbmQga2VlcCB0cmFjayBvZiB3aGF0Cgl3ZSBuZWVkIHRvIHJlZ2lzdGVyIGFuZCB3aGF0IHdlIGRvIG5vdCBwcm9wZXJseS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIElTaGVsbEZvbGRlcjo6R2V0RGlzcGxheU5hbWVPZiBpbnN0ZWFkIG9mIFNIR2V0UGF0aEZyb21JRExpc3QgdG8KCWJlIGFibGUgdG8gYnJvd3NlIHNoZWxsIG5hbWVzcGFjZSBleHRlbnNpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBLb3VqaSBTYXNha2kgPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJQWRkZWQgdGhlIGNhbGxiYWNrIGl0ZW0gcHJvY2Vzc2luZyBmb3IgTElTVFZJRVdfRW5kRWRpdExhYmVsVAoJZnVuY3Rpb24uCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUveG1sZG9tLmlkbCwKCSAgaW5jbHVkZS94bWxkb21kaWQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgaWRsIGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueToKCVdvcmthcm91bmQgdG8gYWxsb3cgdXNpbmcgdGhlIGFzeW5jIGtleXdvcmQgYXMgbWV0aG9kIG5hbWUuCgoyMDA1LTA1LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jLCBkbGxzL3VzZXIvbWlzYy5jLAoJICBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCU1vdmVkIGZ1bmN0aW9ucyBmcm9tIHdpbmRvd3MvdXNlci5jIHRvIG1vcmUgYXBwcm9wcmlhdGUgcGxhY2VzLCBhbmQKCWdldCByaWQgb2YgdGhhdCBmaWxlLgoKCSogc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYWlsc2xvdC5jLAoJICBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlZ2lvbi5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywKCSAgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RpbWVyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFVzZSBOVUxMIGluc3RlYWQgb2YgMCBmb3IgYWxsIG5vbi1oYW5kbGUgcG9pbnRlcnMuCgktIEZpeCBub24tQU5TSSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgktIE1ha2UgYSBmdW5jdGlvbiBzdGF0aWMuCgoJKiBkbGxzL3VzZXIvdXNlcjE2LmM6CglNb3ZlZCBhIGNvdXBsZSBvZiAxNi1iaXQgZnVuY3Rpb25zIHRvIGRsbHMvdXNlci91c2VyMTYuYy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVVzZSB0aGUgc2NyZWVuIHJlc29sdXRpb24gdG8gY29udmVydCBmcm9tIHR3aXBzICgxNDQwIHR3aXBzIGlzIG9uZQoJaW5jaCkgdG8gcGl4ZWxzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oOgoJTW92ZWQgdGhlIHN5c2NvbG9yIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIvc3lzcGFyYW1zLmMuCgoJKiBkbGxzL21zaS9mb3JtYXQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgWyFmaWxlXSBmb3JtYXQgdG8gcHJvZHVjZSB0aGUgc2hvcnQgZmlsZW5hbWUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeCBzbWFsbCB0eXBvLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9pZGlzcGlkcy5oLCBpbmNsdWRlL3htbGRvbWRpZC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbW9yZSBoZWFkZXJzLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaCwgdG9vbHMvbWFrZV9jdGVzdHMuYzoKCUJldHRlciBzdXBwb3J0IGZvciBidWlsZGluZyBzdGFuZC1hbG9uZSB0ZXN0cy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL2dkaW9iai5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglUdXJuIGEgR0RJIG9iamVjdCBpbnRvIGEgc3lzdGVtIG9iamVjdCB2aWEgYW4gZXhwbGljaXQgV2luZSBleHRlbnNpb24KCXJhdGhlciB0aGVuIHRocm91Z2ggbWFnaWNhbCBwb2tlcyBpbiBtZW1vcnkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmMsCgkgIGRsbHMvbHpleHBhbmQvdGVzdHMvbHpleHBhbmRfbWFpbi5jOgoJUmVtb3ZlZCBTVEFOREFMT05FIGlmZGVmcy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBHZXRTb2Z0d2FyZVVwZGF0ZUluZm8uCgoJKiBzZXJ2ZXIvdHJhY2UuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBQcmludCBjb21tYXMgYmV0d2VlbiBBQ0Uncy4KCS0gRHVtcCBhY2Nlc3MgbWFza3MgZnJvbSBhbGwgQUNFJ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEtvdWppIFNhc2FraSA8dGFyby14QGp1c3RzeXN0ZW0uY28uanA+CglDb3JyZWN0ZWQgdGhlIHByaW9yaXR5IG9mIG9wZXJhdG9ycyBmb3IgTElTVFZJRVdfR2V0TmV4dEl0ZW0KCWZ1bmN0aW9uLgoKMjAwNS0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA1MDUyNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xY2FwL3FjYXBfbWFpbi5oLCBkbGxzL3FjYXAveXV2LmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglBZGRlZCBZVVYgcm91dGluZXMgbmVlZGVkIGZvciB2NGwgZHJpdmVyLCBhbmQgaW4gdGhlIGZ1dHVyZSBwb3NzaWJseQoJb3RoZXIgY2FwdHVyZSBkcml2ZXJzIHRvby4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVdvcmsgYXJvdW5kIGEgcHJvYmxlbSB3aGVyZSBXcml0ZUZpbGUgaXMgYXNrZWQgdG8gd3JpdGUgbWVtb3J5Cglwcm90ZWN0ZWQgYnkgRElCU2VjdGlvbiBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2l0c3MvY2htX2xpYi5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggdW5pbml0aWFsaXplZCB3YXJuaW5ncy4KCgkqIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3Rva2VuLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE50QWNjZXNzQ2hlY2suCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgbWlzc2luZyBpbnRlcmZhY2UgbWV0aG9kIFByb21wdEFjdGlvbiB0bwoJSUludGVybmV0Wm9uZU1hbmFnZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc3ZjcnQvdGltZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIGRldGVjdGlvbiBvZiBwbGF0Zm9ybXMgd2hpY2ggZG9uJ3QgaGF2ZSBleHRlcm5hbCB0aW1lem9uZSBhbmQKCWRheWxpZ2h0IHZhcmlhYmxlcywgYW5kIGVtdWxhdGlvbiBvZiB0aGVzZSB2YXJpYWJsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEtvdWppIFNhc2FraSA8dGFyby14QGp1c3RzeXN0ZW0uY28uanA+CglBZGRlZCBoYW5kbGluZyBvZiBXTV9FTkFCTEUgbWVzc2FnZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvYmVfYWxwaGEuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9iZV9jcHUuaCwgcHJvZ3JhbXMvd2luZWRiZy9iZV9pMzg2LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvYmVfcHBjLmMsIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsIHByb2dyYW1zL3dpbmVkYmcvdGd0X2FjdGl2ZS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHN0YXJ0ZWQgaW5mcmFzdHJ1Y3R1cmUgZm9yIHByb3BlciBtdWx0aS10YXJnZXQgc3VwcG9ydCAoYWN0aXZlCgkgIHByb2Nlc3MsIG1pbmlkdW1wLi4uKQoJLSBhbGwgcmVhZC93cml0ZSBtZW1vcnkgb3BzIGFyZSBub3cgZG9uZSB0aHJ1IGEgY2VudHJhbGl6ZWQgcHJvY2Vzc19pbwoJICBmYWNpbGl0eQoJLSBtaW5vciBmaXhlcyAmIGNsZWFudXBzIGluIENQVSBiYWNrZW5kcwoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3JlZ3N2ci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkIGEgbmV3IENMU0lEIGZvciBVbml4RG9zRm9sZGVyLCB3aGljaCBpcyBpZGVudGljYWwgdG8gVW5peEZvbGRlciwKCWJ1dCBkb2VzIHVuaXggPC0+IGRvcyBwYXRoIGNvbnZlcnNpb24gZm9yIEdldERpc3BsYXlOYW1lT2YgYW5kCglQYXJzZURpc3BsYXlOYW1lLgoKCSogdG9vbHMvd2luZWR1bXAvZHVtcC5jLCB0b29scy93aW5lZHVtcC9taW5pZHVtcC5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IGRhdGEgb2Zmc2V0IGFkZGl0aW9uYWxseSB0byBwcmVmaXggd2hpbGUgZHVtcGluZyBkYXRhLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZXRQYXJlbnQgbmVlZHMgdG8gY2xlYXIgJ21hbmFnZWQnIGZsYWcgZm9yIGZvcm1lciB0b3AgbGV2ZWwgd2luZG93LgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBPTEVJVkVSQl9VSUFDVElWQVRFIGhhbmRsaW5nLgoKCSogaW5jbHVkZS91cmxtb24uaWRsOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgR2V0U29mdHdhcmVVcGRhdGVJbmZvIGFuZCBJU29mdERpc3RFeHQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUhhbmRsZSBtb3JlIEVzY2FwZSBzaXR1YXRpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRnJlZSBkZWxheWVkIGltcG9ydCBtb2R1bGVzIG9uIFBST0NFU1NfREVUQUNILgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IFdpbjE2IGFuZCBXaW4zMiB0b29saGVscCBmdW5jdGlvbnMuCglDb21waWxlIG91dCB3aW44N2VtIGFuZCAxNmJpdCB0b29saGVscCBmdW5jdGlvbnMgaWYgMTYgYml0IHN1cHBvcnQgaXMKCWRpc2FibGVkLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBEYXZpZCBXZWxjaCA8d2VsY2hAY3djb20ubmV0PgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gYnJlYWsgaW50byB0aGUgcHJvZ3JhbSB3aGVuIHVzaW5nIHRoZSBnZGIgcHJveHkuCgoJKiBkbGxzL3JpY2hlZDIwL3BhaW50LmM6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglVc2UgY29ycmVjdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgd2hvbGUgcmljaGVkaXQgY29udHJvbC4KCgkqIGRsbHMvdXNlci9idXR0b24uYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBCVVRUT05fTk9USUZZX1BBUkVOVCBtYWNybyAoYXMgaW4gZWRpdC5jKS4KCU5vdGlmeSBwYXJlbnQgYWJvdXQgV01fS0lMTC9TRVRGT0NVUyBldmVudHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jcnlwdDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvcHJvdGVjdGRhdGEuYzoKCUtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUNyZWF0ZSBiYXNpYyB0ZXN0IHN1aXRlIGZvciBDcnlwdFByb3RlY3REYXRhL0NyeXB0VW5wcm90ZWN0RGF0YS4KCgkqIGRsbHMvdXNlci9ub25jbGllbnQuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IG9mZi1ieS1vbmUgaW4gbWVudSBoZWlnaHQgY2FsY3VsYXRpb24gKCYgdGhlcmVmb3JlCglBZGp1c3RXaW5kb3dSZWN0KSArIHRlc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQXVkaXQgdGhlIExpc3QtVmlldyBjb250cm9sLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBEYXZpZCBXZWxjaCA8d2VsY2hAY3djb20ubmV0PgoJRml4IGRlY29kaW5nIG9mIHRocmVhZCBJRHMgaW4gdGhlIGdkYnByb3h5LgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglVc2UgdW5pZm9ybXNpemluZyB0aGVtZSBwcm9wZXJ0eS4KCgkqIGluY2x1ZGUvZXhkaXNwLmlkbDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIENMU0lEX1NoZWxsV2luZG93cy4KCgkqIGRsbHMvbXNpL3NxbC55OiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTaW1wbGlmeSBwYXJzaW5nIG9mIHRoZSBGUk9NIGtleXdvcmQuCgoyMDA1LTA1LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIG5ldyBzZXJ2ZXIgdHlwZSAic3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3IiLgoJLSBBZGQgdHJhY2luZyBmb3IgdGhpcyBuZXcgdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNb3JlIHJvYnVzdGx5IHF1ZXJ5IHRoZSBTSEdETl9GT1JQQVJTSU5HIGZsYWcgaW4gdGhlIHNoZWxsMzIncyBmb2xkZXJzCglHZXREaXNwbGF5TmFtZU9mIG1ldGhvZHMuCgoJKiBkbGxzL29sZTMyL29sZW9iai5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvdWJsZSB0ZXJtaW5hdGUgU1pfTVVMVEkgcHJvcGVybHkuCglDbGFzc0luZm8gYW5kIEV4dGVuc2lvbkluZm8gYXJlIGFsc28gd3JpdHRlbiBmb3IgQURWRVJUSVNFRAoJY29tcG9uZW50cy4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgbGVha2luZyBoYW5kbGUuCglNYWtlIE1zaUNvbGxlY3RVc2VySW5mbyBtb3JlIGludGVybmFsbHkgY29uc2lzdGVudC4KCVRoYW5rcyB0byBNaWtlIE1jQ29ybWFjay4KCgkqIGluY2x1ZGUvd2lubnQuaDogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJVXBkYXRlIExEVF9FTlRSWSBkZWZpbml0aW9uLgoKCSogZGxscy9tc2kvc3FsLnk6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgcGFyc2VyIGVycm9yIGNoZWNraW5nLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3VybC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGVzdCBjYXNlcyBmb3IgVVJMX1VORVNDQVBFIGFuZCBzbWFsbCBmaXguCgoJKiBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy90Z3RfbWluaWR1bXAuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbm93IHN0b3JpbmcgZXhjZXB0aW9uIGluZm8gKGlmIGFueSkgaW4gdGhyZWFkIHN0cnVjdHVyZQoJLSBhZGRlZCBtaW5pZHVtcCBmdW5jdGlvbiBpbiB3aW5lZGJnICh3cml0ZSBvbmx5KQoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCVN1cHBvcnQgdW5sb2FkaW5nIDE2LWJpdCBidWlsdGluIG1vZHVsZXMsIGFuZCBwcm9wZXJseSBtYW5hZ2UgdGhlCglyZWZjb3VudCBvZiB0aGUgMzItYml0IG93bmVyIG1vZHVsZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBNb2R1bGUzMkZpcnN0Vy9OZXh0Vy4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvdXBkYXRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUcmFjayBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIFNRTCBwYXJzZXIuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFN5c3RlbUZ1bmN0aW9uMDM2LgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglNb3ZlZCB0aGUgZ2VuZXJhdGVkIGNvZGUgc2VnbWVudCBmb3IgMTYtYml0IGJ1aWx0aW5zIGluc2lkZSB0aGUgbW9kdWxlCglzdHJ1Y3R1cmUuCglHZXQgcmlkIG9mIHRoZSBCVUlMVElOMTZfREVTQ1JJUFRPUiBzdHJ1Y3R1cmUgYW5kIGRpcmVjdGx5IHJlZ2lzdGVyCgl0aGUgTVogaGVhZGVyIGluc3RlYWQuCgoJKiBkbGxzL21zaS9zcWwueTogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxpZnkgcGFyc2luZyBvZiBzZWxlY3QgcXVlcnkuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmV3cml0ZSBEaXJlY3RQbGF5RW51bWVyYXRlQSBhbmQgYWRkIFcgdmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglUZXN0cyBmb3IgVmFyTXVsKCkuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVJlaW1wbGVtZW50IFZhck11bCgpLiBJdCBjYW4gbXVsdGlwbHkgbm93IGFsbCB2YXJpYW50cyB0aGF0IHRoZSBuYXRpdmUKCShXaW5YUCkgZnVuY3Rpb24gc3VwcG9ydHMgdG9vLgoKCSogZGxscy9kYmdoZWxwL3N0YWNrLmMsIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIFJlYWRQcm9jZXNzTWVtb3J5UHJvYyBwcm90b3R5cGUKCS0gbWFkZSBTdGFja1dhbGsgd29yayB3aGVuIGRiZ2hlbHAgaXMgcnVuIGFnYWluc3QgYSBub24gcnVubmluZwoJICBwcm9jZXNzCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogQW50b2luZSBDaGF2YXNzZSA8YS5jaGF2YXNzZUBnbWFpbC5jb20+CglBZGRlZCB0cmFjZXMgaW4gR2V0UHJpdmF0ZURhdGEgYW5kIFNldFByaXZhdGVEYXRhLgoJTWFkZSBTZXRQcml2YXRlRGF0YSBhY3R1YWxseSBzdG9yZSB0aGUgZGF0YSBmcm9tIHRoZSBidWZmZXIgYXMgd2VsbCBhcwoJaXRzIHNpemUuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJTW92ZWQgdGhlIGxvYWRkbGwgdHJhY2UgaW50byB0aGUgbG9hZF9idWlsdGluX2RsbCBmdW5jdGlvbiBzbyB0aGF0IGl0CglnZXRzIHByaW50ZWQgZXZlbiB3aGVuIHdlIGRvbid0IGdldCB0aGUgZXhwZWN0ZWQgc28gZmlsZS4KCgkqIHRvb2xzL3dpbmVkdW1wL2xuay5jLCB0b29scy93aW5lZHVtcC9taW5pZHVtcC5jLAoJICB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oLCB0b29scy93bWMvbGFuZy5oLCB0b29scy93bWMvd3JpdGUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAtV3dyaXRlLXN0cmluZ3Mgd2FybmluZ3MuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvc3RyaW5nLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnQgbWluaW1hbCBfc3RyaWNvbGwuCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGVycm9yIG1lc3NhZ2VzIG9uIGZhaWx1cmUgaW4gZmlsZSBtb25pa2VyIGxvYWQgZnVuY3Rpb24uCgktIEZpeCBpbmNvcnJlY3QgcG9pbnRlciBjaGVjayBpbiBib3RoIG1vbmlrZXJzLgoJLSBGaXggbWF4IHNpemUgY2FsY3VsYXRpb24gb2YgaXRlbSBtb25pa2VyIHRvIG1hdGNoIG5hdGl2ZS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIHVzZWZ1bCB0cmFjZSBtZXNzYWdlLgoJLSBGaXggbW9yZSBwbGFjZXMgd2hlcmUgY3VzdG9tIGhlYWRlciBzaXplIHdhcyBjYWxjdWxhdGVkIGV4Y2x1c2l2ZSBvZgoJICB0aGUgZGF0YSBzaXplIG1lbWJlci4KCS0gT3B0aW1pemUgY3VzdG9tIG1hcnNoYWxpbmcgYnkgZ2V0dGluZyBzaXplIGJlZm9yZSBjYWxsaW5nIHRoZSBjdXN0b20KCSAgbWFyc2hhbGVyIHNvIHdlIGNhbiB3cml0ZSB0aGUgaGVhZGVyIGJlZm9yZSBhbmQgbm90IHVzZSBhIHNlY29uZAoJICBzdHJlYW0uCgoJKiBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSB0aGUgT1JERVIgQlkgdmlldyBpbiBhIHNpbmdsZSBjYWxsLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglCdWcgZml4ZXMgZm9yIF9OT19FWFRFTlNJT05TIG1vZGUuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIFJlbW92ZSB1bnVzZWQgbWFjcm8uCgktIENoZWNrIGZvciBWVF9JOCBiZWZvcmUgdGVzdGluZyBpdC4KCS0gVmFyTW9kIHJldHVybnMgRElTUF9FX09WRVJGTE9XIG5vdCBFX0lOVkFMSURBUkcuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgdGhlIG1hY3JvcyBmb3IgdmVyYm9zZSBtZW1vcnkgcmVhZC93cml0ZSBvcGVyYXRpb25zLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWMsIGRsbHMva2VybmVsL2NvbW0uZHJ2LnNwZWMsCgkgIGRsbHMva2VybmVsL3dpbmRlYnVnLnNwZWMsIGRsbHMvb2xlMzIvb2xlMnRoay5zcGVjLAoJICBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywKCSAgZGxscy91c2VyL2tleWJvYXJkLmRydi5zcGVjLCBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjOgoJQ29tbWVudCBvdXQgc3R1YiBXRVAgZW50cnkgcG9pbnRzIHNvIHRoYXQgd2UgY2FuIGNhbGwgV0VQIGZvciBidWlsdGluCglkbGxzIHRvby4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbW1kbGcuc3BlYywKCSAgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9tc2FjbS9tc2FjbS5zcGVjLAoJICBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL29sZTMyL29sZTE2LmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjb2RlIGluIHRoZSAxNi1iaXQgRGxsRW50cnlQb2ludCBmdW5jdGlvbiBvZiBzb21lCglkbGxzLCBhbmQgYWxzbyBmaXhlZCBpdHMgb3JkaW5hbCBpbiBhIGZldyBwbGFjZXMuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1hcnNoYWwgb2JqZWN0cyAmIG1vbmlrZXJzIGludG8gdGhlIFJPVC4KCS0gVGVzdCBmb3IgdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJLSBJbXBsZW1lbnQgRU1fTElORVNDUk9MTCBtZXNzYWdlIGhhbmRsaW5nCgktIEZpeCBhIHByb2JsZW0gd2l0aCBzY3JvbGxpbmcgb3ZlciB0aGUgZW5kIG9mIHRoZSB0ZXh0IGluCgkgIFdNX1dIRUVMTU9VU0UuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUFkZCBkZWZpbmVzIGZvciBkd0ZsYWdzIGluIHBQcm9tcHRTdHJ1Y3QgYW5kIGNhbGxzIHRvCglDcnlwdFByb3RlY3REYXRhLgoKCSogaW5jbHVkZS9udGRkc2NzaS5oOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBzb21lIHN0cnVjdHMgdG8gbnRkZHNjc2kuaC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvc3FsLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIHJlbW92ZSB0aGUgdW51c2VkIHV0ZjggZmllbGQgb2YgYW4gZXhwcmVzc2lvbgoJLSBtYWtlIHRoZSBwYXJzZSByZXN1bHQgYSBzaW5nbGUgYXNzaWdubWVudCBhdCB0b3AgbGV2ZWwgb2YgcGFyc2luZwoJLSBhYm9ydCBwYXJzaW5nIG9uIGEgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQoKCSogZGxscy91cmxtb24vdGVzdHMvdXJsLmMsIGRsbHMvdXJsbW9uL3Vtb24uYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglTZXBhcmF0ZWQgSUJpbmRpbmcgYW5kIElNb25pa2VyIGludGVyZmFjZXMuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3dpbmRvdy5jOgoJUm9iIFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHNldmVyYWwgbWVtb3J5IGxlYWtzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvQ3MucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvU3YucmMsIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudCBJRF9WSUVXX1NQTElUIGNvbW1hbmQuCgoJKiBkbGxzL3gxMWRydi9zZXR0aW5ncy5jOiBEYW5pZWwgU2NoZXBsZXIgPHNjaGVwbGVyQG1hdGguYmVya2VsZXkuZWR1PgoJSW1wbGVtZW50IENEU19URVNUIGZsYWcgaW4gQ2hhbmdlRGlzcGxheVNldHRpbmdzLgoKCSogZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IEhhc2ggZnVuY3Rpb24gb24gY29tcG9zaXRlIG1vbmlrZXIuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBubyBsb25nZXIgc3RvcmUgaW50ZXJuYWxseSB0aGUgIiBmb3Igc3RyaW5ncwoJLSBtaXNjIGNsZWFuLXVwcwoJLSBhY3RpdmF0ZSBzeW1ib2wgZGVtYW5nbGluZyBieSBkZWZhdWx0CgoJKiB0b29scy9mbnQyZm9uLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBmaXggZm9yIHRoZSBmb250IGRpcmVjdG9yeSByZXNvdXJjZSB3cml0dGVuIGJ5IGZudDJmb24uCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIExJU1RfRk9SX0VBQ0hfRU5UUlkgaW4gdmlydHVhbCBtZW1vcnkgY29kZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IFZhcmlhbnRDaGFuZ2VUeXBlOiBjYWxscyB0byBWYXJEZWNGcm9tQ3kgYW5kIFZhckRlY0Zyb21EaXNwIGhhZAoJc291cmNlIGFuZCBkZXN0aW5hdGlvbiBzd2FwcGVkLgoKCSogZGxscy9jcnlwdDMyL3Byb3RlY3RkYXRhLmM6IEtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUNvcnJlY3QgY3J5cHQgY29udGV4dCBpbml0IGluIENyeXB0UHJvdGVjdERhdGEvQ3J5cHRVbnByb3RlY3REYXRhLgoKCSogZGxscy9kYmdoZWxwL2R3YXJmLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXhtZSB3aGVuIHVuZXhwZWN0ZWQgY2hpbGRyZW4gZm91bmQKCS0gbm8gbW9yZSBkd2FyZjJfY2hlY2tfc2libGluZyBlcnJvcnMgKGllIHBlcmZlY3QgcGFyc2luZyBjb3VudCkgOikKCS0gZHdhcmYyX3BhcnNlX2lubGluZWRfc3Vicm91dGluZSwgZHdhcmYyX3BhcnNlX3ZhcmlhYmxlCgoJKiBkbGxzL21zaS92ZXJzaW9uLnJjOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVVwZGF0ZSB2ZXJzaW9uIHJlc291cmNlIG9mIG1zaS5kbGwgdG8gY3VycmVudCB2ZXJzaW9uIHNoaXBwZWQgZnJvbQoJd2luZG93cyB1cGRhdGUuCgoyMDA1LTA1LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIG1vcmUgZnVsbHkgaW1wbGVtZW50IENyeXB0UmVnaXN0ZXJPSURGdW5jdGlvbgoJLSBpbXBsZW1lbnQgQ3J5cHRVbnJlZ2lzdGVyT0lERnVuY3Rpb24KCS0gYWRkIHN0dWJzIGZvciBDcnlwdEVuY29kZU9iamVjdChFeCkvQ3J5cHREZWNvZGVPYmplY3QoRXgpCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgY29tcGlsZXIgd2FybmluZyBpbiBwYXJzZV9tb3VudF9lbnRyaWVzKCkuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvcHJvdGVjdGRhdGEuYzoKCUtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUltcGxlbWVudCBDcnlwdFVucHJvdGVjdERhdGEgY291bnRlcnBhcnQgdG8gQ3J5cHRQcm90ZWN0RGF0YS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJR2VuZXJhdGUgMTYtYml0IHJlc291cmNlcyBpbiB0aGUgcHJvcGVyIGZvcm1hdCBpbnNpZGUgdGhlIG1vZHVsZSBkYXRhLAoJYW5kIGdldCByaWQgb2YgdGhlIHNwZWNpYWwgY2FzZSBmb3IgYnVpbHRpbnMgaW4gTkVfRGVmUmVzb3VyY2VIYW5kbGVyLgoKCSogZGxscy9tc2kvdGFibGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVHVybiBoYW5kbGVkIGVycm9ycyBmcm9tIEVSUnMgdG8gV0FSTnMgb3IgVFJBQ0VzLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlIGZvciB0eXBlCglGaWxlRnNEZXZpY2VJbmZvcm1hdGlvbiBvbiBGcmVlQlNELgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVNlbGVjdCB0aGUgaXRlbSB1bmRlciB0aGUgcG9pbnQgKHgseSkgaW4gTW91c2VIb3Zlci4KCgkqIGRsbHMvY3J5cHQzMi9tYWluLmMsIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jOgoJS2VlcyBDb29rIDxrZWVzQG91dGZsdXgubmV0PgoJSW1wbGVtZW50IENyeXB0UHJvdGVjdERhdGEgd2l0aCBiZXN0LWd1ZXNzIGVuY3J5cHRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQ2hlY2sgaWYgVlRfUjggYW5kIFZUX0lOVF9QVFIgYXJlIHN1cHBvcnRlZCBiZWZvcmUgdGVzdGluZyB0aGVtLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmM6IERhdmlkIEhlbW1vIDxkYXZpZC53aW5lQHBpbHNvZnQuY29tPgoJR0RJX1JlbGVhc2VPYmogd2FzIG5vdCBjYWxsZWQgd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVyLgoKCSogZGxscy9tc2kvbXNpLnNwZWM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSBoYXZlIGEgc3R1YiBmb3IgTXNpR2V0VXNlckluZm9BIHdlIHNob3VsZCB1c2UgaXQuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGxlYWtpbmcgaGFuZGxlIGluIE1zaUNvbmZpZ3VyZVByb2R1Y3RFeFcuCglJbXBsZW1lbnQgTXNpR2V0UHJvZHVjdENvZGVXLgoJSW1wbGVtZW50IE1zaUdldFVzZXJJbmZvVy4KCUltcGxlbWVudCBNc2lDb2xsZWN0VXNlckluZm9BL1cuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlIHRoZSBSZWdPd25lciBhbmQgUmVnQ29tcGFueSBrZXlzIGFzIGJsYW5rIGlmIHRoZXkgZG8gbm90IGV4aXN0Cgl3aGVuIGRvaW5nIHRoZSBSZWdpc3RlclVzZXIgYWN0aW9uLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDb25zaWRlciBvbmx5IHRoZSBHSUxfRk9SU0hPUlRDVVQgZmxhZyBpbiBTSUNfQ29tcGFyZUVudHJpZXMuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IGdkaW9iaiB0ZXN0IG9uIE5UNCwgcmVtb3ZlIGFzc2VydHMuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCAndXNlIHN0cmljdCcgYW5kIGZpeCBtYWtlX29wZW5nbCBhY2NvcmRpbmdseS4KCUFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoJV3JpdGUgIiRhICRiIiByYXRoZXIgdGhhbiB0aGUgbW9yZSBjb21wbGV4ICRhIC4gIiAiIC4gJGIuCglEb2N1bWVudCB3aGljaCBPcGVuR0wgc3BlYyBmaWxlcyBuZWVkIHRvIGJlIGRvd25sb2FkZWQuCglVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIE9wZW5HTCB2ZXJzaW9ucy4KCVR3ZWFrIHRoZSB1c2FnZSBzbyBpdCBhbHdheXMgcmVwb3J0cyB0aGUgcmlnaHQgY29tbWFuZCBuYW1lLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBidW5jaCBvZiBtaXNzaW5nIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NyeXB0MzIvcHJvdGVjdGRhdGEuYzogS2VlcyBDb29rIDxrZWVzQG91dGZsdXgubmV0PgoJSW1wbGVtZW50IHNlcmlhbGl6YXRpb24gYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIENyeXB0UHJvdGVjdERhdGEuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVXBkYXRlIExWR1JPVVAgc3RydWN0IHRvIG1hdGNoIE1TRE4uCgoJKiB0b29scy9mbnQyZm9uLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIC5mb24gZmlsZXMgZ2VuZXJhdGVkIGJ5IGZudDJmb24gc2xpZ2h0bHkgbW9yZSBjb21wYXRpYmxlIHdpdGgKCWZvbnRmb3JnZSwgZnJlZXR5cGUgYW5kIFdpbmRvd3MgZm9udCB2aWV3ZXIuCgoJKiB0b29scy9zZm50MmZudC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBBbHdheXMgaW5pdGlhbGl6ZSB3aWR0aCB0YWJsZS4KCS0gRlRfR2V0X05leHRfQ2hhciBmb3Igc29tZSByZWFzb24gcmV0dXJucyB0b28gaGlnaCBudW1iZXIgKDEwNDApIGlmCgkgIHRoZSB3aW5lX2NvdXJpZXIgZm9udCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZm9udGZvcmdlLCB1c2UgMzIgYXMgdGhlCgkgIDFzdCBjaGFyIGluc3RlYWQuCgoJKiB0b29scy93aW5lZHVtcC9uZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgYWxzbyBmbGFncyBhbmQgbGVuZ3RoIG9mIE5FIHJlc291cmNlcy4KCgkqIGRsbHMvZGJnaGVscC9kd2FyZi5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYmV0dGVyIHRyYWNlcwoJLSBoYW5kbGUgaW5jbHVzaW9uICJsZXZlbHMiCgktIGJldHRlciBwYXJzaW5nIG9mIHN1YnByb2dyYW0sIHR5cGVkZWYsIHBvaW50ZXIsIC4uLiBlbnRyaWVzCgktIGFycmF5cywgZW51bXMsIGNvbnN0X3R5cGUsIHJlZmVyZW5jZV90eXBlIHBhcnNpbmcKCS0gY2hlY2tzIHBhcnNpbmcgY3Vyc29ycyBlcnJvcnMgKHdoZW4gc2libGluZyB2YWx1ZSBhdmFpbGFibGUpCgktIG1vcmUgdXRpbGl0aWVzIGZ1bmN0aW9ucyAoZHdhcmYyX3BhcnNlX2F0dHJfYXNfZGF0YSkKCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJUmVuYW1lIFN5c3RlbURyaXZlckluZm9ybWF0aW9uIHRvIFN5c3RlbU1vZHVsZUluZm9ybWF0aW9uLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggcXVvdGluZyBvbiBxdWVyaWVzLgoJUmVzcGVjdCAnKycgYW5kICcqJyBpbiBXcml0ZVJlZ2lzdHJ5VmFsdWVzIHRvIG9ubHkgY3JlYXRlIHRoZSBrZXkgaWYKCWl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIFByZXZlbnRzIG92ZXJ3cml0aW5nIHZhbHVlcyB3aXRoIE5VTEwuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglRdW90aW5nIGZpeGVzLgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHF1ZXJ5IHF1b3RpbmcgYmFzZWQgb24gTWlrZSdzIHBhdGNoLgoJQWxzbyBtb3JlIGVycm9yIG1lc3NhZ2VzIGFib3V0IHJldHVybiBjb2RlcyBmcm9tIGN1c3RvbSBhY3Rpb25zIGFuZAoJaWdub3JlIGFuIGVycm9yIHRoYXQgd2Ugc2hvdWxkIGJlIGlnbm9yaW5nLgoKMjAwNS0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW46CglSZXZlcnQgcHJldmlvdXMgcGF0Y2gsIHdlIHN0aWxsIG5lZWQgdGhlIHdpbmVkb3MgaW1wb3J0IGxpYiBmb3Igbm93LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglEaXNhYmxlIFdpbjE2IHN1cHBvcnQgYnkgZGVmYXVsdCBvbiBub24teDg2IHBsYXRmb3Jtcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW46CglXZSBubyBsb25nZXIgbmVlZCBhIHdpbmVkb3MgaW1wb3J0IGxpYnJhcnkuCgoJKiBwcm9ncmFtcy93aW5ldmRtL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYzoKCUZhaWwgbW9yZSBncmFjZWZ1bGx5IGlmIDE2LWJpdCBzdXBwb3J0IGlzIG1pc3NpbmcuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJVGhlIGNhbGwgdG8gU2NyZWVuVG9DbGllbnQoKSBjaGFuZ2VzIHRoZSBjb250ZW50IG9mIHRoZSAncHQnIHZhcmlhYmxlLAoJc28gaXQgY2FuJ3QgYmUgdXNlZCBmb3IgdGhlIGZvbGxvd2luZyBTaGVsbEZvbGRlckNvbnRleHRNZW51KCkgY2FsbC4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmgsIGRsbHMvb2xlMzIvb2xlcHJveHkuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgZ2VuZXJpYyBtb25pa2VyIG1hcnNoYWxlciB0aGF0IHdvcmtzIGJ5IHNhdmluZyAmIGxvYWRpbmcKCSAgbW9uaWtlcnMgdG8gJiBmcm9tIHRoZSBzdHJlYW0uCgktIFVzZSB0aGUgZ2VuZXJpYyBtb25pa2VyIG1hcnNoYWwgaW4gdGhlIGZpbGUgJiBpdGVtIG1vbmlrZXJzIGFuZCBhZGQKCSAgYSBjbGFzcyBmYWN0b3J5IGZvciBlYWNoLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglEbyBub3QgY29tcHV0ZSB0aGUgaGl0IHRlc3QgaWYgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgaXQuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IF9YY3B0RmlsdGVyIHVzaW5nIHNpZ25hbCBoYW5kbGVycywgYW5kIGFkZCBhIGNvdXBsZSB0cmFjZXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3NtZW0uYywgZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglSZWZ1c2UgdG8gbG9hZCBpZiAxNi1iaXQgc3VwcG9ydCBpcyBtaXNzaW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJVXNlIFJhaXNlRXhjZXB0aW9uIGluc3RlYWQgb2YgUnRsUmFpc2VFeGNlcHRpb24gaW4gMTYtYml0IHNwZWMgZmlsZXMKCXNpbmNlIHRoZXkgYWxyZWFkeSBkZXBlbmQgb24ga2VybmVsMzIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJUmVuYW1lZCBfX3dpbmVfKHVuKXJlZ2lzdGVyX2RsbF8xNiB0byBfX3dpbmVfZGxsXyh1bilyZWdpc3Rlcl8xNiBmb3IKCWNvbnNpc3RlbmN5IHdpdGggdGhlIDMyLWJpdCB2ZXJzaW9uLCBhbmQgYWxzbyBtYWtlIHRoZSByZWdpc3RlcgoJZnVuY3Rpb24gdXNlIHRoZSBzYW1lIHByb3RvdHlwZSBhcyB0aGUgMzItYml0IG9uZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jOgoJVXNlIGEgbWVtb3J5IG1hcHBpbmcgaW5zdGVhZCBvZiBmaWxlIEkvTyB0byBsb2FkIDE2LWJpdCBtb2R1bGVzLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2hhbmdlIHJlbWFpbmluZyBibG9ja3Mgb2YgY29kZSB3aXRoIDItc3BhY2UgaW5kZW50YXRpb24gdG8gNC1zcGFjZQoJICBpbmRlbnRhdGlvbi4KCS0gTWFrZSB2dGFibGVzIGNvbnN0LgoJLSBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgbWVtY3B5IGFuZCBsZXQgdGhlIGNvbXBpbGVyIGRvIHRoZSB3b3JrLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlIGN1c3RvbSBoZWFkZXIgdXAgdG8gYW5kIGluY2x1ZGluZyBzaXplLCBub3QgZXhjbHVkaW5nLgoKCSogZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvdGVzdHMvZGIuYywKCSAgZGxscy9tc2kvdG9rZW5pemUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgdGFibGVzIGNhbiBiZSBiYWNrcXVvdGVkLCBzdHJpbmdzIG11c3QgYmUgc2luZ2xlIHF1b3RlZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEb24ndCBmYWlsIGluIFJlZ2lzdGVyRm9udHMgaWYgdGhlIEZvbnRzIHRhYmxlIGlzIG1pc3NpbmcuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglMb2FkIFNob3cvSGlkZSBBZHZhbmNlZCBzdHJpbmdzIGZyb20gcmVzb3VyY2VzLgoKCSogZGxscy9kYmdoZWxwL2R3YXJmLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBiYXNpYyBwYXJzaW5nIG9mIHN1YnByb2dyYW0sIHR5cGVkZWYsIHBvaW50ZXIsIGNsYXNzLCBzdHJ1Y3QsIGVudW0KCSAgZW50cmllcwoJLSBpbmRpcmVjdCBzdHJpbmdzIHN1cHBvcnQKCS0gdXRpbGl0aWVzIGZ1bmN0aW9ucyAocGFyc2VfYnl0ZSwgcGFyc2VfdTIsIC4uLikKCgkqIGluY2x1ZGUvd2luZS9ycGNmYy5oOiBFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCURlZmluZSBSUENfRkNfSUdOT1JFLgoKCSogaW5jbHVkZS9zaGxvYmouaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGRlZCBtaXNzaW5nIEFXIGRlZmluZS4KCgkqIGluY2x1ZGUvcmljaG9sZS5pZGw6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIG1pc3NpbmcgdHlwZWRlZnMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGluY2x1ZGUvbG9jYWwuaDogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJUmVuYW1lIGJhY2sgbG9jYWxfY29tcGFjdCB0byBMT0NBTF9Db21wYWN0IGZvciBjb25zaXN0ZW5jeS4KCUdldCByaWQgb2Ygbm8gbG9uZ2VyIHVzZWQgbG9jYWwuaC4KCgkqIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3VzZXIuYzoKCURpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCVJlbW92ZSBMT0NBTF8qKCkgY2FsbHMgZnJvbSBVU0VSLCB1c2UgTG9jYWwqMTYoKSBpbnN0ZWFkLgoKCSogdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ3JlYXRlIGxpbmsgZm9yIG1zaWV4ZWMuZXhlIGluIHN5c3RlbSBkaXJlY3RvcnkuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgZ2V0X2RlZmF1bHRfZHJpdmVfZGV2aWNlIGZvciBGcmVlQlNELgoKMjAwNS0wNS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jLCBpbmNsdWRlL3RocmVhZC5oOgoJUmVtb3ZlZCBsYXN0IGRlcGVuZGVuY2llcyBvbiAxNi1iaXQgaGVhZGVycyBmcm9tIG50ZGxsLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSVJPVERhdGE6OkdldENvbXBhcmlzb25EYXRhIGZvciBmaWxlICYgaXRlbSBtb25pa2Vycy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgaW5jbHVkZS9tb2R1bGUuaDoKCU1vdmVkIGVudHJ5IHBvaW50IGRlZmluaXRpb25zIGZyb20gbW9kdWxlLmggdG8ga2VybmVsMTZfcHJpdmF0ZS5oLgoKCSogZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkIHZmd2luZGV4IHdoZW4gZW51bWVyYXRpbmcgZGV2aWNlcywgYW5kIG1ha2Ugc3VyZSBldmVyeSBkZXZpY2UgaGFzCglhIHVuaXF1ZSByZWdpc3RyeSBrZXksIHNvIG11bHRpcGxlIGRldmljZXMgd2l0aCBzYW1lIG5hbWUgYXJlIGFsbG93ZWQuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglHZW5lcmF0ZSB0aGUgMTYtYml0IG1vZHVsZSBoZWFkZXIgaW4gdGhlIHN0YW5kYXJkIG9uLWRpc2sgZm9ybWF0LCBzbwoJdGhhdCB3aW5lYnVpbGQgZG9lc24ndCBuZWVkIHRvIGtub3cgYWJvdXQga2VybmVsIGludGVybmFsIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglQYXNzIHByb3BlcnR5IGJhZyB0byBJUGVyc2lzdFByb3BlcnR5QmFnLCBpZiBzdXBwb3J0ZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvY3B1LmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCUVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUFkZGVkIERhcndpbiA4LjAgc3BlY2lmaWMgaGVhZGVycy4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOgoJU3BsaXQgdGhlIG1vZHVsZSBidWlsZGluZyBmdW5jdGlvbmFsaXR5IG9mIE5FX0xvYWRFeGVIZWFkZXIgaW50bwoJc2VwYXJhdGUgZnVuY3Rpb25zLgoKCSogZGxscy9tc2kvY29uZC55OiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSBmZXcgc21hbGwgZml4ZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGNhbm5vdCBpbnRlcm5hbGx5IGxvYWQgdGhlIGZpbGVzIGluIEZpbGVDb3N0IGJlY2F1c2UgdGhhdCBhY3Rpb24KCW1heSBiZSBza2lwcGVkIG9yIG5vdCBjYWxsZWQuIFNvIGRvIGl0IGluIENvc3RJbml0aWFsaXplLgoJUXVvdGUgdGhlIGZpbGUgcGF0aCBpbiBTZWxmUmVnTW9kdWxlcy4KCURvIG5vdCB3cml0ZSBzcXVpc2hlZCBudWxsIGd1aWRzIHRvIHRoZSBmZWF0dXJlIHJlZ2lzdHJhdGlvbi4KCgkqIGRsbHMvcWNhcC9jYXB0dXJlZ3JhcGguYzogTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJRml4ZWQgU2V0RmlsdGVyR3JhcGggZmFpbHVyZS4KCUFkZGVkIGRlYnVnIGluZm8uCglBZGRlZCBPYmplY3RSZWZDb3VudCBpbmZvIGZvciBEbGxDYW5VbmxvYWROb3cuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jLAoJICBkbGxzL3VzZXIvdXNlcjE2LmMsIGluY2x1ZGUvbW9kdWxlLmg6CglSZW1vdmVkIGltcGxlbWVudGF0aW9uIG9mIExvYWRESUJJY29uSGFuZGxlcjE2IGFuZAoJTG9hZERJQkN1cnNvckhhbmRsZXIxNiBzaW5jZSB0aGV5IGFyZSBubyBsb25nZXIgdXNlZCwgYW5kIHN0b3AKCWV4cG9ydGluZyBORV9EZWZSZXNvdXJjZUhhbmRsZXIuCgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9waW4uYywgZGxscy9xY2FwL3Bpbi5oOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkIHBpbiBmdW5jdGlvbnMgZnJvbSBxdWFydHouCgoJKiBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jOgoJS2VlcyBDb29rIDxrZWVzQG91dGZsdXgubmV0PgoJRGVmaW5lIHN0cnVjdHVyZXMgZm9yIENyeXB0UHJvdGVjdERhdGEvQ3J5cHRVbnByb3RlY3REYXRhIGNhbGxzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9jbHNpZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jLCBwcm9ncmFtcy9leHBhbmQvZXhwYW5kLmMsCgkgIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJUmVtb3ZlIHN0ZGxpYi5oIGluY2x1c2lvbiBpZiB3aW5zb2NrLmggaXMgaW5jbHVkZWQuCgoJKiBkbGxzL3FjYXAvZW51bXBpbnMuYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJRGxsQ2FuVW5sb2FkTm93IGZpeC4KCUZpeGVkIE9ialJlZkNvdW50IGZvciBFbnVtUGlucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFN0b3JlIHRoZSBjbGljayBwb2ludCBpbiBMSVNUVklFV19JTkZPLgoJLSBNb3ZlIG1vdXNlIHRyYWNraW5nIHRvIE1vdXNlTW92ZS4KCS0gVXNlIERyYWdEZXRlY3QgaW5zdGVhZCBvZiBUcmFja01vdXNlLgoJLSBSZW1vdmUgdGhlIHVudXNlZCBUcmFja01vdXNlIGZ1bmN0aW9uLgoKCSogZGxscy9kYmdoZWxwL21zYy5jOiBGaXhlZCBhIGNvdXBsZSBvZiB3YXJuaW5ncy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglBZGRlZCByZWNvbm5lY3QgZnVuY3Rpb24gZm9yIGZpbHRlcmdyYXBoLgoKCSogZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglGaXhlZCBmcmVlaW5nIG9mIG1lZGlhdHlwZS4KCgkqIGluY2x1ZGUvd2luZS9saXN0Lmg6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCURvY3VtZW50IHRoZSBtb3JlIGNvbnZlbmllbnQgaXRlcmF0aW9uIG1ldGhvZC4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogS2VlcyBDb29rIDxrZWVzQG91dGZsdXgubmV0PgoJRGVmaW5lIENyeXB0UHJvdGVjdERhdGEvQ3J5cHRVbnByb3RlY3REYXRhIGNyeXB0MzIuZGxsIGNhbGxzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RseSB1c2Ugc2hvcnQgZmlsZW5hbWVzIGZyb20gdW5jb21wcmVzc2VkIGZpbGUgc291cmNlcy4gQWxzbwoJZGVmYXVsdCBmZWF0dXJlIGFuZCBjb21wb25lbnQgaW5zdGFsbCBzdGF0ZXMgdG8gQUJTRU5UIGluc3RlYWQgb2YKCVVOS05PV04uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9zbm9vcDE2LmM6CglDaGFuZ2VkIFNOT09QMTZfUmVnaXN0ZXJETEwgdG8gdGFrZSBhIG1vZHVsZSBoYW5kbGUgaW5zdGVhZCBvZgoJcG9pbnRlci4gTW92ZWQgc25vb3AgZnVuY3Rpb24gcHJvdG90eXBlcyB0byBrZXJuZWwxNl9wcml2YXRlLmguCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJTW92ZWQgaW1wb3J0IHRyYWNpbmcgdG8gYSBzZXBhcmF0ZSBjaGFubmVsIHNvIHRoYXQgK21vZHVsZSB0cmFjZXMKCWRvbid0IGNvbnRhaW4gdG9vIG11Y2ggbm9pc2UuCgoJKiBkbGxzL2dkaS9nZGlvYmouYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJUmVtb3ZlIHRoZSBMT0NBTF8qKCkgZnVuY3Rpb25zIGZyb20gR0RJLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIGhhbmRsaW5nIGZvciBkcml2ZSBvcHRpb25zLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJUmVtb3ZlIHRoZSBMT0NBTF8qKCkgZnVuY3Rpb24gY2FsbHMgZnJvbSBLRVJORUwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVJlc2l6ZSBsaXN0dmlldyBjb2x1bW4gdG8gYXV0b2ZpdCBvbiBhIGRvdWJsZWNsaWNrIG9uIHRoZQoJaGVhZGVyLWRpdmlkZXIuCgoJKiBkbGxzL2RiZ2hlbHAvZHdhcmYuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCBzb21lIER3YXJmMiBlbnVtcwoJLSBhYmJyZXYgZW50cmllcyBwYXJzZXIgKHdpdGggYXR0cmlidXRlcykKCS0gZGVidWcgaW5mbyBwYXJzZXIgc2tlbGV0b24gKHNlZSBiaWcgdGFnIHN3aXRoIGluIGR3YXJmMl9wYXJzZSkuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglVc2UgdGhlIG1vcmUgaWRpb21hdGljIGZvcm0gb2YgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGxpc3QuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJTWFrZSB0aGUgYXJndW1lbnQgY29tbWVudHMgb3V0LW9mLWxpbmUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgZXJyb3IgbWVzc2FnZXMgYW5kIHN0cmNtcCBjaGFuZ2VzIHN1Z2dlc3RlZCBieSBEbWl0cnkuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglCaWcgRW5kaWFuIHNwZWNpZmljIGNvZGUgZml4ZXMgaW4gb3JkZXIgdG8gY29uZm9ybSB3aXRoCglOT05BTUVMRVNTU1RSVUNULgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBLb3VqaSBTYXNha2kgPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJQWRkZWQgdGhlIHByb2Nlc3NpbmcgZm9yIGRldGVybWluYXRpb24gb2YgU0ZHQU9fSEFTU1VCRk9MREVSIGZsYWcgaW4KCVNIRUxMMzJfR2V0SXRlbUF0dHJpYnV0ZSBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogS291amkgU2FzYWtpIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUV4Y2hhbmdlZCB0aGUgdmFsdWVzIGZvciBMVkFfQUxJR05MRUZUIHN0eWxlIGFuZCBMVkFfREVGQVVMVCBzdHlsZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jOiBLb3VqaSBTYXNha2kgPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJQ29ycmVjdGVkIFJMRSBkZWNvbXByZXNzaW9uIHByb2Nlc3NpbmcuCgoJKiBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9wYXRoLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBvcGVuX3BkYl9maWxlICh1c2VkIGZvciBsb2NhdGUvb3BlbiBwZGJzKToKCS0gcGRiX21hdGNoIGhldXJpc3RpYyBub3cgb25seSBzdG9wIHdoZW4gImZpcnN0IGZpbGUiIGV4aXN0cwoJLSBTeW1GaW5kRmlsZUluUGF0aCBub3cgZmlsbCBvdXRwdXQgYnVmZmVyIHdpdGggYSB2YWxpZCB2YWx1ZSBvbgoJICBzdWNjZXNzLgoKMjAwNS0wNS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvcy5zcGVjLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9yZWdzdnIuYywgZGxscy9kbWltZS9kbWltZS5zcGVjLAoJICBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9yZWdzdnIuYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGUuc3BlYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLAoJICBkbGxzL2Rtc3R5bGUvcmVnc3ZyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9yZWdzdnIuYywKCSAgZGxscy9oaGN0cmwub2N4L2hoY3RybC5vY3guc3BlYywgZGxscy9oaGN0cmwub2N4L3JlZ3N2ci5jLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5zcGVjLCBkbGxzL3NoZG9jdncvcmVnc3ZyLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZSBNT0RVTEVOQU1FX0RsbCogZnVuY3Rpb25zIHRvIERsbCogZm9yIGJldHRlciBjb25zaXN0ZW5jeSBhbmQKCXR5cGUgY2hlY2tpbmcuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xvY2FsMTYuYywKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsCgkgIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy9rZXJuZWwvdGFzay5jOgoJUmVuYW1lZCBzb21lIGZpZWxkcyBpbiBORV9NT0RVTEUgdG8gdXNlIHRoZSBzYW1lIG5hbWUgYXMgaW4gdGhlCglleHBvcnRlZCBJTUFHRV9PUzJfSEVBREVSIHN0cnVjdHVyZS4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglVc2Ugc3RhbmRhcmQgVFJBQ0UgbWFjcm8uCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIHRvIGF2b2lkIGNvbmZ1c2lvbgoJd2l0aCB0aGUgQ09NIGZ1bmN0aW9ucyBvZiBkaWZmZXJlbnQgc2lnbmF0dXJlcy4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgV2luZS1vbmx5IHR5cGUgY2hlY2tpbmcgZm9yIERsbFJlZ2lzdGVyU2VydmVyIGFuZAoJRGxsVW5yZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvZGJnaGVscC9NYWtlZmlsZS5pbiwgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvZHdhcmYuYywgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQmVnaW5uaW5nIG9mIGRiZ2hlbHAgZHdhcmYyIHN1cHBvcnQ6CgktIGFkZCBlbGZfbW9kdWxlIGVudHJ5IGZvciBkd2FyZjJfcGFyc2UKCS0gc3R1YmJlZCBkd2FyZjJfcGFyc2UgaW4gbmV3IGR3YXJmLmMgZmlsZQoKCSogZGxscy91c2VyL2VkaXQuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJVXNlIHN0YW5kYXJkIExvY2FsKjE2KCkgZnVuY3Rpb25zIGluc3RlYWQgb2YgTE9DQUxfKigpIG9uZXMuCgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9lbnVtcGlucy5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkZWQgRW51bVBpbnMgZnJvbSBxdWFydHogZm9yIGludGVybmFsIHVzZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGluY2x1ZGUvbW9kdWxlLmgsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVVzZSB0aGUgZXhwb3J0ZWQgSU1BR0VfT1MyX0hFQURFUiB0byBnZW5lcmF0ZSB0aGUgbW9kdWxlIGhlYWRlciBpbiB0aGUKCXNwZWMgZmlsZSwgYW5kIG1vdmVkIHRoZSBORV9NT0RVTEUgc3RydWN0dXJlIGRlZmluaXRpb24gdG8KCWtlcm5lbDE2X3ByaXZhdGUuaC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIFNob3dEaXJTeW1MaW5rIGFuZCBTaG93RG90RmlsZXMgdG8gdGhlIGRyaXZlIHVpLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXhlZCBjZW50ZXJpbmcgb2YgdGFiIHRleHQuCgoJKiBkbGxzL3FjYXAvZGxsc2V0dXAuYzogTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJRml4ZWQgaW5pdGlhbGlzYXRpb24gY3Jhc2ggb24gbG9hZGluZyBxY2FwIGRsbC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglPYnZpb3VzIGZpeGVzIHRvIFByb3BWYXJpYW50Q2xlYXIgYW5kIFByb3BWYXJpYW50Q29weSBmb3IgdmVjdG9yCgl0eXBlcy4KCgkqIGRsbHMvcWNhcC9lbnVtbWVkaWEuYzogTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJRml4ZWQgcWNhcCdzIGluaGVyaXRlZCBlbnVtbWVkaWEgYnVncy4KCjIwMDUtMDUtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGNvbW1lbnQsIGFuZCBhIG5vLW9wIGNsZWFudXAuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgaW5jbHVkZS9tc2lkZWZzLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBhIHByb2JsZW0gd2l0aCBwYXJzZV9kYXRhIGlmIGJpbmFyeSBkYXRhIHdhcyBub3QgaW4gZnVsbCBieXRlcy4KCU1vcmUgcHJvcGVybHkgaGFuZGxlIHVuY29tcHJlc3NlZCBmaWxlIHNvdXJjZXMsIGZpeCB0aGUgY3JlYXRpbmcgYW5kCglwYXJzaW5nIG9mIFNvdXJjZSBEaXJlY3Rvcmllcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Tdi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IGNvbm5lY3RpbmcgYW5kIGRpc2Nvbm5lY3Rpbmcgb2YgbmV0d29yayBkcml2ZXMuCgoJKiBkbGxzL2tlcm5lbC9hdG9tMTYuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywKCSAgZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMva2VybmVsL3JlbGF5MTYuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglNb3ZlZCBhIGJ1bmNoIG9mIGRlZmluaXRpb25zIG91dCBvZiBtb2R1bGUuaCBpbnRvIGEgbmV3CglrZXJuZWwxNl9wcml2YXRlLmggaGVhZGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2RiY2NwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vZGJjY3AzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjY3AzMi9vZGJjY3AzMi5jLAoJICBkbGxzL29kYmNjcDMyL29kYmNjcDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsIG1vc3RseSBzdHViIGltcGxlbWVudGF0aW9uIG9mIE9EQkMgY29udHJvbCBwYW5lbC4KCgkqIHNlcnZlci90b2tlbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgdXNlciBhdHRyaWJ1dGUgdG8gdG9rZW4gb2JqZWN0cy4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHZlcnNpb24gMCBhbmQgdmVyc2lvbiAxIHByb3BlcnR5IHN0b3JhZ2VzLgoKCSogZGxscy9kYmdoZWxwL3N0YWNrLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMva2VybmVsL3N5c2xldmVsLmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvdXNlci93aW5wcm9jLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJlbW92ZWQgdGhlIHNwZWNpYWwgY2FzaW5nIG9mIGtlcm5lbDMyIGFuZCBudGRsbCBmb3IgdGhlIFRFQgoJZGVmaW5pdGlvbiBpbiB3aW50ZXJubC5oLgoKCSogZGxscy9rZXJuZWwvYXRvbTE2LmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2Vycm9yMTYuYywKCSAgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbG9jYWwxNi5jLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy9rZXJuZWwvc3lzdGVtLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgaW5jbHVkZS9sb2NhbC5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaDoKCU1vdmVkIHRoZSByZW1haW5pbmcgc3RhY2sgZnJhbWUgZGVmaW5pdGlvbnMgdG8ga2VybmVsX3ByaXZhdGUuaCBhbmQKCXJlbW92ZWQgc3RhY2tmcmFtZS5oLgoKCSogZGxscy9kYmdoZWxwL3N0YWNrLmMsIGRsbHMvdXNlci93aW5wcm9jLmMsIGRsbHMvdXNlci93bmQxNi5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglBdm9pZCByZWZlcmVuY2luZyBzdGFja2ZyYW1lLmggZnJvbSBvdXRzaWRlIGtlcm5lbDMyLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJfMTYuYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIHRoZSBEbGwgaW5pdCBmdW5jdGlvbiB0byBjb21wb2JqLmMgdG8gYXZvaWQgaGF2aW5nIGdsb2JhbAoJdmFyaWFibGVzLiBSZW1vdmUgbmVlZCBvZiBvbGUzMl9tYWluLmguCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgbWVudSBlbnRyeSAiZm9ybWF0IGRpc2siIChkZXJpdmVkIGZyb20gUm9iZXJ0IERpY2tlbnNvbidzCgljb2RlKS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBSZWdOb3RpZnlDaGFuZ2VLZXlWYWx1ZSBvbiB0b3Agb2YgTnROb3RpZnlDaGFuZ2VLZXkuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbDE2LmM6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCVVzZSB0aGUgc3RhbmRhcmQgTG9jYWwqMTYoKSBpbnN0ZWFkIG9mIExPQ0FMXyooKSBmdW5jdGlvbnMuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUVmZmVjdCBvYmplY3RzIGFyZSBub3Qgc3VwcG9ydGVkIHlldCBzbyBkb24ndCBjcmFzaCB3aGVuIHRyeWluZyB0bwoJZW51bWVyYXRlIHRoZW0uCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy93aW5lZG9zL3JlbGF5LmMsCgkgIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCU1vdmVkIGRhdGEgc3RydWN0dXJlcyBmb3IgMTYtYml0IHJlbGF5IGNhbGxzIHRvIHdpbmJhc2UxNi5oIGFuZAoJcmVtb3ZlZCBidWlsdGluMTYuaC4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBLZWVzIENvb2sgPGtlZXNAb3V0Zmx1eC5uZXQ+CglBdm9pZCBzZWdmYXVsdCBpbiBoYXNoIHVwZGF0ZSB3aXRoIGNvcnJ1cHRlZCBkZWNyeXB0IGRhdGEuCgoJKiBkbGxzL3JpY2hlZDIwL3J1bi5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ2hhbmdlIGFuIGFzc2VydCB0byBhIFdBUk4uCgoJKiBkbGxzL2dkaS9wYXRoLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJS2VlcCB3aWR0aCBmb3IgY29zbWV0aWMgcGVucywgZG9uJ3QgdXNlIExQdG9EUCgpIGZvciB3aWR0aHMgYW5kCgljb252ZXJ0IHRoZSBkYXNoZXMgZm9yIFBTX1VTRVJTVFlMRSBwZW5zIGludG8gZGV2aWNlIHVuaXRzLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUHJvdmlkZSBtaW5pbWFsIEFQSSBkb2N1bWVudGF0aW9uIGluIGFkdmFwaS9ldmVudGxvZy5jIHRvIHNpbGVuY2Ugc29tZQoJd2luYXBpX2NoZWNrIG91dHB1dC4KCU1vdmUgYXJvdW5kIGZ1bmN0aW9ucyBpbiByaWNoZWQyMCwgcmljaGVkaXQgYW5kIHJwY3J0NCB0byBhY2hpZXZlIHRoZQoJc2FtZSBnb2FsLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IEtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUF2b2lkIHNlZ2ZhdWx0IHdoZW4gZGV0ZWN0aW5nIGRlY3J5cHRpb24gYnVmZmVyIHNpemUuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNvcnJlY3QgcmV0dXJuIHZhbHVlIG9mIGZzZXRwb3MuCgoJKiBkbGxzL3NldHVwYXBpL3F1ZXVlLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCU1pbm9yIGZpeCBpbiBTZXR1cFF1ZXVlQ29weVNlY3Rpb25XLgoKCSogZGxscy9rZXJuZWwvbG9jYWwxNi5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglBdm9pZCB1c2luZyBzb21lIExPQ0FMXyooKSBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Tdi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTd2VkaXNoIHRyYW5zbGF0aW9uIG9mIHdpbmVmaWxlIHJlc291cmNlcyBieSBEYXZpZCBOb3JkZW5iZXJnLAoJcHJvb2ZyZWFkIGJ5IEFuZHJlYXMgQmplcmtlaG9sdC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgc3dpdGNoaW5nIG9mIGZpbGUgc29ydCBvcmRlci4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgZmxhZ3MgZm9yIFNIRm9ybWF0RHJpdmUoKS4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVNpbGVuY2Ugc29tZSB1bmtub3duIHN0YWIgdHlwZSBtZXNzYWdlcy4KCgkqIGRsbHMvb2xlMzIvb2xlMTYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIF94bWFsbG9jMTYoKSBzdGF0aWMuCgoJKiBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0YXRpY2lmeSBGVE1hcnNoYWxJbXBsIGRlZmluaXRpb24uCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIEhHTE9CQUxTdHJlYW1fKiBmdW5jdGlvbnMgc3RhdGljLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zeG1sLmlkbCwKCSAgaW5jbHVkZS9tc3htbGRpZC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSB4bWwgaGVhZGVycy4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgd2luMTYuYXBpIGFuZCB3aW4zMi5hcGkgdG8ga2VlcCB1cCB3aXRoIGN1cnJlbnQgV2luZQoJZGV2ZWxvcG1lbnQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdW5pY293cy91bmljb3dzLnNwZWM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IGFyZyBjb3VudCBmb3IgMyBmdW5jdGlvbnMgaW4gbnRkbGwuc3BlYyBhbmQgdW5pY293cy5zcGVjLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgc29tZSBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyBTUElfKiBkZWZpbmVzLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jLAoJICBkbGxzL2RpbnB1dC90ZXN0cy9qb3lzdGljay5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVBhc3MgYXJvdW5kIHJlYWwgdmVyc2lvbiBhbmQgZG8gY29ycmVjdCB0aGluZyBiYXNlZCBvbiBpdC4KCUNoYW5nZSBjb29wZXJhdGl2ZSBsZXZlbCB0byBwYXNzIG9uIHdpbmRvd3MuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVN0b3JlIHByb3BlcnR5IG5hbWVzIGluIHRoZSBjb2RlIHBhZ2Ugb2YgdGhlIHByb3BlcnR5IHNldC4KCjIwMDUtMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHNwZWxsaW5nIGZpeGVzIChwcmVmZXJlZCAtPiBwcmVmZXJyZWQpCgktIGFkZCAiLCB7MCwgMH0sIDAsIDAiIGluIGNvbW1lbnQgbGluZXMKCS0gdXBkYXRlIGNvcHlyaWdodCBzdGF0ZW1lbnQKCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL3Rlc3RzL21vbmlrZXIuYzoKCUplZmYgTGF0aW1lciA8amVmZmxAZGVmY2VuLmdvdi5hdT4KCUltcGxlbWVudCB0aGUgSUVudW1Nb25pa2VyIGludGVyZmFjZSBmb3IgdGhlIFJPVCBhbmQgcHJvdmlkZSB0ZXN0cyB0bwoJZXhlcmNpc2UgdGhlIGludGVyZmFjZS4KCgkqIGRsbHMvZ2RpL3BhdGguYzogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglDb252ZXJ0IHBlbiB3aWR0aCB0byBEUCBpbiBTdHJva2VQYXRoKCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aHJlYWQgcHJpb3JpdGllcyB0byB0aW1lIGNyaXRpY2FsLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3VzZXIvd2luLmM6CglQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJQ2hlY2sgZm9yIGEgTlVMTCBwb2ludGVyIGluIEdldFdpbmRvd1RleHRBL1cuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglJbXBsZW1lbnQgZ2V0X2RlZmF1bHRfZHJpdmVfZGV2aWNlIGZvciBTb2xhcmlzLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsMTYuYywKCSAgaW5jbHVkZS9sb2NhbC5oLCB3aW5kb3dzL3VzZXIuYzoKCURpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCU1ha2UgTE9DQUxfKigpIGp1c3Qgd3JhcHBlcnMgYXJvdW5kIExvY2FsKjE2KCkgZnVuY3Rpb25zLgoKCSogZGxscy9kYmdoZWxwL3N0YWNrLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy91c2VyL3dpbnByb2MuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oOgoJU3RvcmUgdGhlIDE2LWJpdCBzdGFjayBwb2ludGVyIGluIHRoZSBXT1czMlJlc2VydmVkIFRFQiBmaWVsZC4KCgkqIGRsbHMvbnRkbGwvYXRvbS5jLCBzZXJ2ZXIvYXRvbS5jOgoJRml4ZWQgYSBudW1iZXIgb2YgYXRvbSB0ZXN0IGZhaWx1cmVzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3RocmVhZC5oOgoJU3RvcmUgdGhlIHdpbnNvY2sgcGVyLXRocmVhZCBkYXRhIGluIE50Q3VycmVudFRlYigpLT5XaW5Tb2NrRGF0YQoJaW5zdGVhZCBvZiB1c2luZyBUbHNBbGxvYy4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJRml4ZWQgYW5vdGhlciBjYXNlIHdoZXJlIGEgbW91c2UgbWVzc2FnZSBjb3VsZCBnZXQgYXNzaWduZWQgdG8gYQoJZGlmZmVyZW50IHRocmVhZCBpbnB1dC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEaXNwbGF5IGZyZWUgYW5kIHRvdGFsIGRpc2sgc3BhY2UgaW4gc3RhdHVzIGJhci4KCgkqIGRsbHMvZ2RpL3BhdGguYzogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEcmF3IGVhY2ggZmlndXJlIGFzIGEgc2luZ2xlIHByaW1pdGl2ZSBpbiBTdHJva2VQYXRoKCkuCgoJKiBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBtb3ZlIF90aW1lem9uZSB0byB0aW1lLmMsIGFuZCBjb3JyZWN0IGl0cyB0eXBlCgktIGltcGxlbWVudCBfdHpzZXQsIGFuZCBpbml0aWFsaXplIF9kYXlsaWdodCwgX3RpbWV6b25lLCBhbmQgX3R6bmFtZQoJICBmcm9tIGxpYmMgdmFsdWVzCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIG9ubHkgbG9nIHVuc3VwcG9ydGVkIGZsYWdzIGluIFNoZWxsRXhlY3V0ZQoJLSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGV4cGFuZGVkLCBzbyBTRUVfTUFTS19ET0VOVlNVQlNUIGlzCgkgIHN1cHBvcnRlZAoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBtYWludGFpbiBwcm9wZXIgYnl0ZSBvcmRlcgoJLSBtYWludGFpbiBQUk9QU0VURkxBR19BTlNJIGZsYWcgYmFzZWQgb24gY29kZXBhZ2UKCS0gdXBkYXRlIGNvbW1lbnRzCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLCBkbGxzL2NhYmluZXQvZmNpLmM6CglHZXJvbGQgSmVucyBXdWNoZXJwZmVubmlnIDxnand1Y2hlcnBmZW5uaWdAZ214Lm5ldD4KCUluaXRpYWwgRkNJIHdvcmsgKEZDSUNyZWF0ZSBhbmQgRkNJRGVzdHJveSkuCgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9lbnVtbWVkaWEuYywgZGxscy9xY2FwL3FjYXBfbWFpbi5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHIua2FsYmVybWF0dGVyQGhjY25ldC5ubD4KCUFkZCBJRW51bU1lZGlhVHlwZSBvYmplY3QgZm9yIHVzZSBieSBvdGhlciBjbGFzcyBvYmplY3RzLiBUaGlzIGlzCgl0YWtlbiBmcm9tIHF1YXJ0eiB3aXRoIG9ubHkgbWlub3IgYWRhcHRpb25zLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXdyb3RlIGl0ZW0gbGF5b3V0aW5nIC0gbmV3IGNvZGUgZml4ZXMgYml0bWFwL2ltYWdlIHBvc2l0aW9uIGZvcgoJbm9uLWxlZnQtYWxpZ25lZCB0ZXh0LCBwcmV2ZW50cyBqdW1waW5nIHdoZW4gcmVzaXppbmcgbm9uLWxlZnQtYWxpZ25lZAoJdGV4dCwgaW1wbGVtZW50cyBjbGlwcGluZyBmb3IgaW1hZ2VzIGFuZCBjb3JyZWN0bHkgYWxpZ25zIGJpdG1hcHMgd2hlbgoJYW4gaW1hZ2UgaXMgYWxyZWFkeSB0aGVyZS4KCjIwMDUtMDUtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJRG9uJ3QgY29udmVydCB0aGUgdGVtcGxhdGUgbmFtZSB0byBVbmljb2RlLCBpdCdzIG5vdCB1c2VkIGJ5IHRoZQoJZGlhbG9nIGFueXdheS4gQ2xlYXIgdGhlIHdpbmRvdyBwcm9wZXJ0eSBvbiBXTV9ERVNUUk9ZLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgdG9vbHMvd2luZS5pbmY6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJT3ZlcmxheSBpY29ucyBmb3IgLmxuayBmaWxlcyB3aXRoIGEgc21hbGwgYXJyb3cgaW4gdGhlIGxvd2VyIGxlZnQKCWNvcm5lci4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEaXNwbGF5IHNvdXJjZSBwYXRoIGluICJtb3ZlIGZpbGUiIGRpYWxvZy4KCgkqIGRsbHMvb2xlMzIvZ2l0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglBZGRlZCBzdHVicyBmb3IgYSBjb3VwbGUgb2YgbWlzc2luZyAyLjAgYW5kIDMuMCBtZXNzYWdlcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9SdS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJlcGxhY2UgbnVtZXJpYyByZXNvdXJjZSBpZGVudGlmaWVycyBieSB0aGVpciBkZWZpbmVkIGNvbnN0YW50cy4KCgkqIGRsbHMvc2VjdXIzMi9NYWtlZmlsZS5pbiwgZGxscy9zZWN1cjMyL3NjaGFubmVsLmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2VjdXIzMi9zZWN1cjMyX3ByaXYuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUJlZ2luIHN0dWJzIG9mIGJ1aWx0LWluIHNjaGFubmVsIHByb3ZpZGVyLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L2Zsb2F0LmgsIGluY2x1ZGUvbXN2Y3J0L3NpZ25hbC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IHNpZ25hbHMuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURvbid0IGltcG9ydCBmcm9tIG50ZGxsLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglQcm9jZXNzIHRoZSBwZW5kaW5nIGV4cG9zZSBldmVudHMgb24gUkRXX1VQREFURU5PVyBiZWZvcmUgZG9pbmcgdGhlCglyZWRyYXdfd2luZG93IHNlcnZlciBjYWxsIHNvIHRoYXQgdGhlIHBhcmVudCB3aW5kb3dzIGdldCBwcm9wZXJseQoJdmFsaWRhdGVkIGlmIG5lY2Vzc2FyeS4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJT25seSBzZXQgdGhlIG5ldyB3aW5kb3cgb2YgYSBoYXJkd2FyZSBtZXNzYWdlIGlmIHRoZSB3aW5kb3cgYmVsb25ncyB0bwoJdGhlIHNhbWUgdGhyZWFkIGlucHV0LCBvdGhlcndpc2UganVzdCBkcm9wIHRoZSBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZSBmaWxlcy4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oOiBBZGRlZCB5ZXQgYW5vdGhlciBtaXNzaW5nIE9wZW5HTCBkZWZpbmUuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLAoJICBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIGEgc3RyZWFtIGNhbid0IGJlIGNyZWF0ZWQgaW4gcmVhZCBvbmx5IHN0b3JhZ2UuCgoJKiBkbGxzL3VzZXIvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhIGNyYXNoIGluIGZyZWVfd2luZG93X2hhbmRsZSgpIG9uIGFuIGludmFsaWQgd2luZG93IGhhbmRsZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJQnVpbGQgaW1wb3J0IGxpYnJhcmllcyBhbHNvIHdoZW4gb25seSBkb2luZyBhbiBpbnN0YWxsLWxpYi4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L3Rlc3RzL2pveXN0aWNrLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IFNldFByb3BlcnR5IGVycm9yIHJldHVybmVkLgoJQWRkIEVudW1EZXZpY2Ugam95c3RpY2sgdmVyc2lvbiBjaGVjay4KCVRlc3QgbXVsdGlwbGUgdmVyc2lvbnMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglNYWtlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gbWVzc2FnZSBhIGJpdCBwcmV0dGllci4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBFeGVjdXRlQWN0aW9uIHJ1bnMgdGhlIHdob2xlIEV4ZWN1dGUgdGFibGUgYW5kIG5vdCBqdXN0IGZyb20KCSAgSW5zdGFsbFZhbGlkYXRlIG9ud2FyZC4gIFRvIGRvIHRoaXMgbWFrZSBzdXJlIHdlIGRvIG5vdCBkbyB0aGUKCSAgY29zdGluZyBpbml0aWFsaXphdGlvbiB3b3JrIGFnYWluIGlmIGl0IGlzIGFscmVhZHkgZG9uZSAoYnkgY2hlY2tpbmcKCSAgdGhlIENvc3RpbmdDb21wbGV0ZSBQcm9wZXJ0eSkuCgktIEEgbG90IG9mIHdvcmsgdG8gcmVmaW5lIGZlYXR1cmUgc3RhdGVzLCBzZXR0aW5nIHRoZSBzdGF0ZSBhZmZlY3RzCgkgIHRoZSBzdGF0ZSBvZiBhbGwgY2hpbGQgZmVhdHVyZXMgYW5kIGFsc28gcmVzcGVjdCBmZWF0dXJlcyB0aGF0IHdhbnQKCSAgdG8gZGVmYXVsdCB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBMT0NBTC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIChzdHViYmVkKSBTeXN0ZW1Ecml2ZXJJbmZvcm1hdGlvbiBhbmQKCVN5c3RlbUludGVycnVwdEluZm9ybWF0aW9uLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRW5hYmxlL2Rpc2FibGUgbWVudSBpdGVtcyBiYXNlZCBvbiBlZGl0IGNvbnRyb2wgc3RhdGUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IFJwY1NlcnZlckxpc3RlbiBzbyB0aGF0IGl0IGRvZXNuJ3QgcmV0dXJuCgkgIFJQQ19TX0FMUkVBRFlfTElTVEVOSU5HIHdoZW4gdGhlIG9ubHkgaW50ZXJmYWNlcyBpdCBpcyBsaXN0ZW5pbmcgb24KCSAgYXJlIGF1dG8gbGlzdGVucy4KCS0gT25seSBzeW5jaHJvbml6ZSB3aXRoIHNlcnZlciB0aHJlYWQgd2hlbiBuZWNlc3NhcnkgYW5kIG1vdmUgdGhpcwoJICBpbnRvIFJwY01nbXRXYWl0U2VydmVyTGlzdGVuLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlcGxhY2UgJ1xcJyBieSAnLycgaW4gc3RyaW5ncyBwYXNzZWQgdG8gUGFyc2VEaXNwbGF5TmFtZSB0byBiZSBhYmxlCgl0byBoYW5kbGUgRE9TLXN0eWxlIHJlbGF0aXZlIHBhdGhzLgoKMjAwNS0wNS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBkZWNsYXJhdGlvbnMgYW5kIG1ha2UgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgV01fTkNDQUxDU0laRSBpbiB0aGUgdGFiIGNvbnRyb2wuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwbGl0IFNIR2V0RmlsZUluZm9XIGludG8gdHdvIGZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHBhc3MgYW4gaW52YWxpZCB0YXJnZXQgYnVmZmVyIGluZm8gdG8gV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglGaXggcmV0dXJuIGNvZGUgYWJ1c2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBNaWNoYWVsIExpbiA8bWxpbkBjb3J2dS5jb20uYXU+CgktIEltcGxlbWVudCBJUGVyc2lzdEZvbGRlcjIuCgktIFJldHJpZXZlIHRoZSBjb3JyZWN0IGF0dHJpYnV0ZXMgaW4gUGFyc2VEaXNwbGF5TmFtZSgpLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYmV0dGVyIHJvYnVzdG5lc3Mgb2YgcGJ1ZmZlciBjb2RlIChjaGVja3MsIFNldExhc3RFcnJvciBhcyBzcGVjcywgZXRjLi4uKS4KCS0gYmV0dGVyIGhldXJpc3RpYyBmb3IgV0dMX3JlbmRlcl90ZXh0dXJlIGFuZCBmaXJzdCB0cnkgb2YKCSAgV0dMX3JlbmRlcl90ZXh0dXJlICJlbXVsYXRpb24iIHVzaW5nIFBidWZmZXJzIChkZWFjdGl2YXRlZCBieQoJICBkZWZhdWx0KQoJLSBtb3JlIHRyYWNlcwoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zY2hhbm5lbC5oLCBpbmNsdWRlL3NjaG5sc3AuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIHNjaGFubmVsIGhlYWRlciBmaWxlcy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogPHdpbmUubGFycnkuZW5naG9sbUB4b3h5Lm5ldD4KCUZsdXNoIG91dHB1dCBidWZmZXJzIGZyb20gX2Nsb3NlKCkgcmF0aGVyIHRoYW4gTVNWQ1JUX2ZjbG9zZSgpLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEdhYnJpZWwgR2FtYmV0dGEgPGdhYnJpZWxATXlzdGVyeVN0dWRpby5jb20+CglBZGRlZCBVWVQgdG8gVFpfSU5GTy4KCjIwMDUtMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvcHJvcGVydHkuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJQWxsb3cgcGFzc2luZyBhIHN0cmluZyB0byB0aGUgd2luZG93IHByb3BlcnR5IHNlcnZlciByZXF1ZXN0cyBpbnN0ZWFkCglvZiBhbiBhdG9tIHRvIGF2b2lkIHJlZHVuZGFudCBzZXJ2ZXIgcm91bmQtdHJpcHMuCgoJKiBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglDaGFuZ2VkIGF0b20gaGFuZGxpbmcgdG8gdXNlIGNvdW50ZWQgc3RyaW5ncyBpbnN0ZWFkIG9mCgludWxsLXRlcm1pbmF0ZWQgb25lcywgYXZvaWRpbmcgdGhlIG5lZWQgZm9yIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglGaXggc3BlbGxpbmcgZXJyb3JzIGRpc2NvdmVyZWQgYnkgTWFyY2VsbyBEdWFydGUuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglTb3J0ZWQgc29tZSBvZiB0aGUgc3RydWN0cyBhbmQgbWFkZSB0aGVtIGNvbnNpc3RlbnQuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wcm92ZWQgdmVyc2lvbiBvZiBQaW90ciBDYWJhbidzIGJ1Z2ZpeCBwYXRjaCAiRml4ZWQgZGlzcGxheSBidWciLgoKCSogaW5jbHVkZS9ldm50cmFjZS5oOiBBZGRlZCBhIGZldyBtaXNzaW5nIHN0cnVjdHVyZSBuYW1lcy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIElfUnBjR2V0QnVmZmVyIGluc3RlYWQgb2YgSGVhcFJlQWxsb2MgZm9yIGdldHRpbmcgdGhlIEJ1ZmZlcgoJbWVtb3J5LgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgZnVuY3Rpb25zIHN0YXRpYyBhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvcmljaGVkMjAvcnVuLmMsIGRsbHMvcmljaGVkMjAvc3R5bGUuYzoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUZpeCBjcmFzaCBpbiBNRV9HZXRSdW5TaXplQ29tbW9uKCkuIFR1cm4gYSBGSVhNRSBpbnRvIGEgVFJBQ0UuCgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvYXRvbS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTb21lIHRlc3RzIGZvciBOVERMTCBhdG9tIHN1cHBvcnQgKGJ5IEd59nJneSAnTm9nJyBKZW5leSkuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2F0b20uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIE5URExMIGF0b20gc3VwcG9ydC4KCgkqIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmg6CglTdG9yZSBhIGJpdG1hcCBvZiBhY3RpdmUgaG9va3Mgb24gdGhlIGNsaWVudCBzaWRlIHRvIHRyeSB0byBhdm9pZAoJc2VydmVyIGNhbGxzIGZvciBob29rcyB0aGF0IGFyZSBub3Qgc2V0LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsCgkgIGluY2x1ZGUvZXZudHJhY2UuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdGVyVHJhY2VHdWlkcy4KCgkqIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBzb21lIG5vbi1zdGFuZGFyZCBzdHIgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBHZXRHZW9JbmZvLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgQ29Jc0hhbmRsZXJDb25uZWN0ZWQuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gYSBjb21tZW50LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvdGVzdHMvZGlucHV0X3Rlc3QuaCwgZGxscy9kaW5wdXQvdGVzdHMvam95c3RpY2suYywKCSAgZGxscy9kaW5wdXQvdGVzdHMva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvdGVzdHMvbW91c2UuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZGlucHV0IHRlc3RzLgoKCSogZGxscy9nZGkvZW5obWZkcnYvYml0Ymx0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoYXQgR2V0T2JqZWN0IGlzIHN1Y2Nlc3NmdWwuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVp3UXVlcnlUaW1lciBzaG91bGQgZm9yd2FyZCB0byBOdFF1ZXJ5VGltZXIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgTW9kdWxlMzJGaXJzdFcgYW5kIE1vZHVsZTMyTmV4dFcgZXhwb3J0cy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCU1ha2UgaXQgbW9yZSBleHBsaWNpdCBob3cgd2UgZGVhbCB3aXRoIFdTX0RJU0FCTEVELgoKCSogZGxscy9tc2kvbXNpLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgbWluaW1hbCBpbXBsZW1lbnRhdGlvbiBvZiBNc2lDcmVhdGVBbmRWZXJpZnlJbnN0YWxsZXJEaXJlY3RvcnkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcHJvZ3JhbXMvdGFza21nci9wZXJmZGF0YS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUge0FCT1ZFLEJFTE9XfV9OT1JNQUxfUFJJT1JJVFlfQ0xBU1MgdG8gd2luYmFzZS5oLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmM6IDx3aW5lLmxhcnJ5LmVuZ2hvbG1AeG94eS5uZXQ+CglBZGQgdGVzdCBmb3IgY29ycmVjdGx5IGludGVycHJldGluZyAlJSBwcmludGYgZm9ybWF0IHN0cmluZyBjb252ZXJzaW9uCglzcGVjaWZpZXIuCgoyMDA1LTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZGUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmVzLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglVcGRhdGUgUkVBRE1FIHRyYW5zbGF0aW9ucyB0byBtYXRjaCB0aGUgbGF0ZXN0IGNoYW5nZXMgdG8gdGhlIEVuZ2xpc2gKCVJFQURNRS4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9tYWtlX3Byb2dzOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUluc3RhbGwgbXNpZXhlYyBpbiB0aGUgYmluIGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsIGRsbHMvd2luZWRvcy9pbnQwOS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9pbnQxOS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MWEuYywgZGxscy93aW5lZG9zL2ludDI5LmMsIGRsbHMvd2luZWRvcy9pbnQyZi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL2ludDY3LmMsIGRsbHMvd2luZWRvcy9wcGRldi5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglHZXQgcmlkIG9mIGluY2x1ZGUvbWlzY2VtdS5oLgoKCSogZGxscy9tc2kvZGF0YWJhc2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBtYWtlIHN1cmUgdG8gZnJlZSB0aGUgc3RyaW5nIHRhYmxlIHdoZW4gY2xvc2luZyB0aGUgZGF0YWJhc2UKCS0gZG9uJ3QgZnJlZSBzelBlcnNpc3QgaW4gTXNpT3BlbkRhdGFiYXNlIGlmIGl0J3Mgbm90IGEgc3RyaW5nCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgb2xlIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9kb3NtZW0uYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzEuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL21pc2NlbXUuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgRE9TIG1lbW9yeSBoYW5kbGluZyB0byB3aW5lZG9zLgoKCSogZGxscy9rZXJuZWwvYXRvbS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9hdG9tLmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGNoYW5nZWQgQVRPTSBzdXBwb3J0IGluIHdpbmVzZXJ2ZXIgdG8gbWF0Y2ggTlRETEwgbmVlZHMKCS0gYWRhcHRlZCBhY2NvcmRpbmdseSBrZXJuZWwzMiBhdG9tIHN1cHBvcnQKCgkqIGxpYnMvd2luZS9sb2FkZXIuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c25ldC5jb20uYXU+CglBZGQgUlRMRF9GSVJTVCBmbGFnIHRvIGRsb3BlbiBjYWxscy4KCgkqIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwKCSAgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hZGRyZXNzLXNwYWNlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZGRyYXcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nbG9zc2FyeS5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZmFxLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWRldi1jb2Rpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWdyYXBoaWNhbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1vdGhlcmRlYnVnLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi13aW5kb3dpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCURpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCU1vdmVkIHRoZSBTR01MIGRvY3VtZW50YXRpb24gb3ZlciB0byBTb3VyY2VGb3JnZS4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy9tYWtlX2RsbHMsIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCUJ1aWxkIGFuZCBsb2FkIGltcG9ydCBsaWJyYXJpZXMgZGlyZWN0bHkgZnJvbSB0aGUgZGxsIGRpcmVjdG9yeSB3aGVyZQoJcG9zc2libGUsIGFuZCBvbmx5IGNyZWF0ZSBzeW1saW5rcyBmb3IgZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBoYXZlIHRoZQoJY29ycmVjdCBuYW1lLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21lbnUuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglNdWx0aSBjb2x1bW4gcG9wdXAgbWVudXMgaGF2ZSA0IHBpeGVsIHNwYWNlIGJldHdlZW4gdGhlIGNvbHVtbnMuIFdpdGgKCWNvbmZvcm1hbmNlIHRlc3QuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggam95c3RpY2sgY3Jhc2ggd2hlbiBhIGJ1dHRvbiBndWlkIGlzIHNwZWNpZmllZCBpbiB0aGUgZGF0YQoJZm9ybWF0LgoJQWRkIHNvbWUgcGFyYW1ldGVyIGNoZWNraW5nLgoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglBZGRlZCBTeXN0ZW1IYW5kbGVJbmZvcm1hdGlvbiB0ZXN0cy4KCVJlbW92ZWQgSGVhcEFsbG9jIGluIHRlc3RfYmFzaWMuCglSZW5hbWVkIHRlc3RfYmFzaWMgdG8gdGVzdF9xdWVyeV9iYXNpYy4KCgkqIGRsbHMvbnRkbGwvbnQuYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIChzdHViYmVkKSBTeXN0ZW1IYW5kbGVJbmZvcm1hdGlvbi4KCVNvcnRlZCB0aGUgbGlzdC4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUNoYW5nZWQgU3lzdGVtSGFuZGxlTGlzdCBpbnRvIFN5c3RlbUhhbmRsZUluZm9ybWF0aW9uCglVbmtub3duMTggaXMgbm93IFN5c3RlbVBhZ2VGaWxlSW5mb3JtYXRpb24KCVNvbWUgY29uc2lzdGVuY3kgKGFkZGVkIG51bWJlcnMgdG8gdGhlIGRlZmluaXRpb25zKS4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IGFsbG9jYXRlZCBidWZmZXIgc2l6ZSB0byBhdm9pZCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFJlbW92ZSB1c2VsZXNzIExWTl9JVEVNQUNUSVZBVEUgbm90aWZpY2F0aW9uIGhhbmRsaW5nLgoJLSBVcGRhdGUgY29udHJvbHMgaW4gcmVzcG9uc2UgdG8gYSBOTV9DTElDSyBub3RpZmljYXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmUgb2xkIGxpc3Rib3ggY29kZSBmcm9tIGRyaXZldWkuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVNldCBsaXN0dmlldyBzdHlsZSBMVlNfU0lOR0xFU0VMIHNvIG9ubHkgb25lIGRyaXZlIGNhbiBiZSBzZWxlY3RlZC4KCgkqIGluY2x1ZGUvbWFwaWRlZnMuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IEZJTEVUSU1FIHRvIG1hdGNoIHdpbmJhc2UuaCBvbiBiaWctZW5kaWFuIG1hY2hpbmVzLgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4ZXMgdG8gSVNoZWxsRm9sZGVyOjpHZXRBdHRyaWJ1dGVzT2YgaW1wbGVtZW50YXRpb25zLCBzcG90dGVkIGJ5CglzaWx2ZXJibGFkZV86CgktIGEgY291bnQgb2YgemVybyBpcyBhbGxvd2VkIHRvIEdldEF0dHJpYnV0ZXNPZiBpZiBhcGlkbCBpcyBOVUxMCgktIFNGR0FPX1ZBTElEQVRFIG11c3QgYmUgY2xlYXJlZCB1cG9uIHJldHVybgoKCSogZGxscy9tc3ZjcnQvd2NzLmM6IDx3aW5lLmxhcnJ5LmVuZ2hvbG1AeG94eS5uZXQ+CglJbnRlcnByZXQgJSUgY29ycmVjdGx5IGluIHByaW50ZiBmb3JtYXQgc3RyaW5nLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IFNIRUxMX0dldFBhdGhGcm9tSURMaXN0W0FXXSB0byByZXR1cm4gdGhlIGRlc2t0b3AgcGF0aCBnaXZlbiBhbgoJZW1wdHkgUElETC4KCgkqIGRsbHMvbXNpL2FwcHNlYXJjaC5jLCBpbmNsdWRlL21zaWRlZnMuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgQXBwU2VhcmNoIGZvciBSZWdMb2NhdG9yLXR5cGUgc2VhcmNoZXMuCgoJKiBkbGxzL3gxMWRydi9vcGVuZ2wuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggWDExRFJWX0Nob29zZVBpeGVsRm9ybWF0ICB0byBjaG9vc2UgMjQgYnBwIGFzIDMyIGJwcCBmb3IgZGVwdGgKCWJ1ZmZlcnMgKG5lZWRlZCBhcyBtYW55IFgxMSBkcml2ZXJzIG9ubHkgc3VwcG9ydCAyNGJwcCkuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgSXJpc2ggU3VtbWVyIFRpbWUuCgoyMDA1LTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2RpYWxvZy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZldyBsZWFraW5nIG9iamVjdCBoYW5kbGVzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRGV0ZWN0IGRyaXZlIGxldHRlcnMsIHdoaWNoIGhhdmUgdG8gaGF2ZSBhIGJhY2tzbGFzaCBhcHBlbmRlZCwgaW4gYQoJbW9yZSByb2J1c3Qgd2F5LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVN1cHBvcnQgZm9sZGVyIHJlbGF0aXZlIHBhdGhzIGluIFVuaXhGb2xkZXJzJyBQYXJzZURpc3BsYXlOYW1lCgltZXRob2QuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBEYW5pZWwgTHVuZCA8ZHJtZXJjQGdtYWlsLmNvbT4KCUFkZGVkIEQzRERFVkNBUFNfSFdSQVNURVJJWkFUSU9OIHRvIHRoZSBEZXZDYXBzIGZvciBzY2VuZQoJcmFzdGVyaXphdGlvbi4gQWxsb3dzIEd1aWxkV2FycyB0byBzdGFydC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXggZm9yIENvbW1Db25maWdEaWFsb2cqKCkgaHduZCBhcmd1bWVudC4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCVJlbW92ZSBIQU5ETEVJTkZPIHN0cnVjdC4KCUFkZCBTWVNURU1fSEFORExFX0lORk9STUFUSU9OIGFuZCBTWVNURU1fSEFORExFX0VOVFJZIHN0cnVjdHMuCgoJKiBkbGxzL29wZW5nbDMyL3dnbF9leHQuYzogQXJpYyBDeXIgPGFjeXJAYWx1bW5pLnV3YXRlcmxvby5jYT4KCUZpeCBXR0xfQUNDRUxFUkFUSU9OX0FSQiBxdWVyaWVzIGZyb20gYXBwbGljYXRpb25zLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVNvbWUgZml4ZXMgb24gYXN5bmMgc2h1dGRvd24uCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBHTFhfU0FNUExFX0JVRkZFUlNfQVJCIGFuZCBHTFhfU0FNUExFU19BUkIgaWYgdGhleSB3ZXJlIG5vdAoJZGVmaW5lZCBieSB0aGUgT3BlbkdMIGhlYWRlcnMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2cGFjay9NYWtlZmlsZS5pbiwgZGxscy9hbXN0cmVhbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdGwvTWFrZWZpbGUuaW4sIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY2FiaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jYXBpMjAzMi9NYWtlZmlsZS5pbiwgZGxscy9jYXJkcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jZmdtZ3IzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J5cHRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3RsM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q5L01ha2VmaWxlLmluLCBkbGxzL2QzZGltL01ha2VmaWxlLmluLAoJICBkbGxzL2QzZHJtL01ha2VmaWxlLmluLCBkbGxzL2QzZHg4L01ha2VmaWxlLmluLAoJICBkbGxzL2QzZHhvZi9NYWtlZmlsZS5pbiwgZGxscy9kYmdoZWxwL01ha2VmaWxlLmluLAoJICBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dDgvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2RtY29tcG9zL01ha2VmaWxlLmluLCBkbGxzL2RtaW1lL01ha2VmaWxlLmluLAoJICBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLCBkbGxzL2Rtc2NyaXB0L01ha2VmaWxlLmluLAoJICBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sIGRsbHMvZG1zeW50aC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLAoJICBkbGxzL2RwbmV0L01ha2VmaWxlLmluLCBkbGxzL2RwbmhwYXN0L01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc3dhdmUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHhkaWFnbi9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2ljY3ZpZC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL01ha2VmaWxlLmluLAoJICBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2lwaGxwYXBpL01ha2VmaWxlLmluLCBkbGxzL2l0c3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9tbGFuZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0NDAvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0ZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGMzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLAoJICBkbGxzL21zd3NvY2svTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV3ZGV2L01ha2VmaWxlLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhY2MvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvcG93cnByb2YvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcmljaGVkMjAvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JzYWJhc2UvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnNhZW5oL01ha2VmaWxlLmluLCBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2Vuc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zbm1wYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3N0aS9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sIGRsbHMvdW5pY293cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmwvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXh0aGVtZS9NYWtlZmlsZS5pbiwgZGxscy92ZG1kYmcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50YWIzMi9NYWtlZmlsZS5pbiwgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL01ha2VmaWxlLmluLAoJICBkbGxzL3d0c2FwaTMyL01ha2VmaWxlLmluOgoJQWRkZWQgcnVsZXMgZm9yIGJ1aWxkaW5nIGltcG9ydCBsaWJyYXJpZXMgaW4gdGhlIGluZGl2aWR1YWwgZGxsCgltYWtlZmlsZXMsIGFuZCBhZGRlZCBzdXBwb3J0IGZvciBidWlsZGluZyBhIC5kZWYuYSBzdGF0aWMgaW1wb3J0CglsaWJyYXJ5IHRvby4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRm9yIGVhY2ggaW1wb3J0ZWQgZGxsLCBjaGVjayBpZiB0aGVyZSBpcyBhIHN0YXRpYyBsaWJyYXJ5IHdpdGggdGhlCglzYW1lIGJhc2UgbmFtZSBhcyB0aGUgaW1wb3J0IGxpYnJhcnksIGFuZCBpZiB5ZXMgYWRkIGl0IHRvIHRoZSBsaWJyYXJ5CglsaXN0LgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJUmVtb3ZlIHRoZSBub3QgdXNlZCBQUk9DRVNTX0lORk8gc3RydWN0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVzZSBhIGxpc3R2aWV3IGluc3RlYWQgb2YgYSBsaXN0Ym94IGZvciBkcml2ZXMgbGlzdC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6IExhdXJlbnQgQmx1bWUgPGxhdXJlbnRAZWxhbm9yLm9yZz4KCVJlcGxhY2UgdGhlIHRlc3Qgb2YgdGhlIHdoaWNoIGNvbW1hbmQgZm9yIHR5cGUgY29tbWFuZCB0byBnZXQgc2ltaWxhcgoJYmVoYXZpb3VyIG9uIGFsbCBPU2VzLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb3JyZWN0L2ltcHJvdmUgZXJyb3IgY2hlY2tpbmcgaW4gSVByb3BlcnR5U3RvcmFnZS4KCgkqIHNlcnZlci90b2tlbi5jLCB0b29scy93cmMvd3JjdHlwZXMuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDaGFuZ2UgdGhlIHR5cGUgb2YgMSBiaXQgd2lkZSBiaXRmaWVsZHMgdG8gdW5zaWduZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWx3YXlzIHBhc3MgZnVsbHkgcXVhbGlmaWVkIHBhdGhzIHRvIHN0YXQgc3lzdGVtIGNhbGwuCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGEgd3Jvbmcgb3BzIHdoZW4gY3JlYXRpbmcgbmFtZWQgcGlwZSBjbGllbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJdCBtYWtlcyBubyBzZW5zZSB0byBoYXZlIGEgbGVmdCBwb2ludGluZyBhcnJvdyBhcyB0aGUgZGVza3RvcCBpY29uLgoJUmVwbGFjZSBpdCB3aXRoIHNvbWV0aGluZyBtb3JlIGFwcHJvcGlhdGUuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBXaW5kb3dzIHJlcG9ydHMgMHg4MCBvbiBwcmVzc2VkIGJ1dHRvbnMgbm90IDB4RkYKCS0gdHJhY2UgdGhlIGV2ZW50cyByZXBvcnRlZCB0byB0aGUgYXBwbGljYXRpb24KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUltcGxlbWVudGVkIFdNX0VOQUJMRS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSBkZWFkIGNvZGUgYW5kIHJlZHVuZGFudCB2YXJpYWJsZXMgZnJvbSBEU09VTkRfQ2FsY1BsYXlQb3NpdGlvbgoJYW5kIGNhbGxlcnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZXNvdXJjZSBmaWxlcy4KCjIwMDUtMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgc3VwcG9ydCBmb3IgMzItYml0IHJlZ2lzdGVyIGVudHJ5IHBvaW50cy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgdG9vbHMvYzJtYW4ucGw6CglXaWxsaWFtIFBvZXRyYSBZb2dhIEggPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJU3VwcG9ydCBidWlsZGluZyBtYW4gcGFnZXMgb3V0c2lkZSBvZiB0aGUgc291cmNlIGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3Z4ZC5jOgoJQ29udmVydGVkIGFsbCB0aGUga2VybmVsMzIgcmVnaXN0ZXIgZnVuY3Rpb25zIHRvIHRoZQoJREVGSU5FX1JFR1NfRU5UUllQT0lOVCBtZWNoYW5pc20uCgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9jYXB0dXJlZ3JhcGguYywKCSAgZGxscy9xY2FwL3FjYXBfbWFpbi5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnQgSUNhcHR1cmVHcmFwaEJ1aWxkZXIgYW5kIEljYXB0dXJlR3JhcGhCdWlsZGVyMiBiYXNlZCBvbgoJTWFhcnRlbiBMYW5raG9yc3QncyBwYXRjaC4KCgkqIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJUHJlZml4IHRoZSBpbnRlcm5hbCBuYW1lIG9mIGFsbCByZWdpc3RlciBmdW5jdGlvbnMgd2l0aCBfX3JlZ3NfIGZvcgoJYmV0dGVyIGNvbnNpc3RlbmN5IGFuZCB0byBtYWtlIGF1dG9tYXRlZCBjaGVja2luZyBwb3NzaWJsZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCUdldCByaWQgb2YgdGhlIERPUyB2ZXJzaW9uIGNvbWJvYm94LCBub3JtYWwgdXNlcnMgc2hvdWxkIG5ldmVyIG5lZWQgdG8KCWNoYW5nZSBpdC4KCgkqIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xY2FwL2RsbHNldHVwLmMsIGRsbHMvcWNhcC9kbGxzZXR1cC5oLAoJICBkbGxzL3FjYXAvcWNhcC5zcGVjLCBkbGxzL3FjYXAvcWNhcF9tYWluLmMsIGRsbHMvcWNhcC9xY2FwX21haW4uaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IERMTCByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZyBmdW5jdGlvbnMsIGNsYXNzIGZhY3RvcnkKCWFuZCBzZXJ2ZXIgbG9ja2luZyBiYXNlZCBvbiBob3cgaXQgaXMgZG9uZSB3aXRoIERpcmVjdFggc2FtcGxlcy4KCgkqIGRsbHMveDExZHJ2L2dyYXBoaWNzLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglEb24ndCBzZXQgdGhlIHBlbiB3aWR0aCB0byAxIGluIFgxMURSVl9Qb2x5TGluZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCVVzZSBSYWlzZUV4Y2VwdGlvbiBpbnN0ZWFkIG9mIFJ0bFJhaXNlRXhjZXB0aW9uIGZvciBkZWxheWVkIGVudHJ5Cglwb2ludHMgbG9hZCBmYWlsdXJlIHRvIGF2b2lkIGNyZWF0aW5nIGEgZGVwZW5kZW5jeSBvbiBudGRsbC4KCgkqIGRsbHMvdXNlci93aW4uYywgc2VydmVyL3VzZXIuYzoKCVRyZWF0IDB4ZmZmZiB0aGUgc2FtZSBhcyAwIGZvciB0aGUgaGFuZGxlIGdlbmVyYXRpb24gZmllbGQgdG8gYXZvaWQKCXNpZ24gZXh0ZW5zaW9uIHByb2JsZW1zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnMvcG9ydC9mdXRpbWVzLmM6CglSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglJbXBsZW1lbnQgZnV0aW1lcyBmb3IgU29sYXJpcyB1c2luZyBmdXRpbWVzYXQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgJ1dlc3Rlcm4gRXVyb3BlYW4gU3VtbWVyIFRpbWUnIChXRVNUKSB0aW1lem9uZSAocmVwb3J0ZWQgYnkKCUpvc+kgTWVsbykuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCXdpbmVtZW51YnVpbGRlci5jIGlzIHRoZSBvbmx5IFdpbmUgc291cmNlIGZpbGUgY2hlY2tpbmcgZm9yCglIQVZFX1NUUklOR19ILiBSZW1vdmUgdGhhdCBjaGVjayBmb3IgY29uc2lzdGVuY3kuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVGhlIHVuaXhmcyBleHRlbnNpb24gZG9lc24ndCBoYXZlIGEgZGlzdGluZ3Vpc2hlZCAnLycgbm9kZSBhbnltb3JlLgoJTW92ZWQgVUkgc3RyaW5nIGludG8gdGhlIHJlc291cmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCU1ha2UgcmVmZXJlbmNlcyB0byBOQU1FX01BWCByZWZlciB0byBQQVRIX01BWCBpbnN0ZWFkLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvYWR2cGFjay8uY3ZzaWdub3JlLCBkbGxzL2Ftc3RyZWFtLy5jdnNpZ25vcmUsCgkgIGRsbHMvYXRsLy5jdnNpZ25vcmUsIGRsbHMvYXZpY2FwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2NhYmluZXQvLmN2c2lnbm9yZSwKCSAgZGxscy9jYXBpMjAzMi8uY3ZzaWdub3JlLCBkbGxzL2NhcmRzLy5jdnNpZ25vcmUsCgkgIGRsbHMvY2ZnbWdyMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jYXQvLmN2c2lnbm9yZSwgZGxscy9tYWtlX2RsbHMsCgkgIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsCgkgIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NyeXB0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3RsM2QvLmN2c2lnbm9yZSwKCSAgZGxscy9kM2Q4Ly5jdnNpZ25vcmUsIGRsbHMvZDNkOS8uY3ZzaWdub3JlLCBkbGxzL2QzZGltLy5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkcm0vLmN2c2lnbm9yZSwgZGxscy9kM2R4OC8uY3ZzaWdub3JlLCBkbGxzL2QzZHhvZi8uY3ZzaWdub3JlLAoJICBkbGxzL2RiZ2hlbHAvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLAoJICBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dDgvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWJhbmQvLmN2c2lnbm9yZSwgZGxscy9kbWNvbXBvcy8uY3ZzaWdub3JlLAoJICBkbGxzL2RtaW1lLy5jdnNpZ25vcmUsIGRsbHMvZG1sb2FkZXIvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXNjcmlwdC8uY3ZzaWdub3JlLCBkbGxzL2Rtc3R5bGUvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXN5bnRoLy5jdnNpZ25vcmUsIGRsbHMvZG11c2ljLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG11c2ljMzIvLmN2c2lnbm9yZSwgZGxscy9kcGxheS8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2RwbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBuaHBhc3QvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvLmN2c2lnbm9yZSwKCSAgZGxscy9kc3dhdmUvLmN2c2lnbm9yZSwgZGxscy9keGRpYWduLy5jdnNpZ25vcmUsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2x1MzIvLmN2c2lnbm9yZSwgZGxscy9nbHV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9pY2N2aWQvLmN2c2lnbm9yZSwgZGxscy9pY21wLy5jdnNpZ25vcmUsCgkgIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2lwaGxwYXBpLy5jdnNpZ25vcmUsIGRsbHMvaXRzcy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbWxhbmcvLmN2c2lnbm9yZSwgZGxscy9tcHIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zY21zLy5jdnNpZ25vcmUsIGRsbHMvbXNkbW8vLmN2c2lnbm9yZSwKCSAgZGxscy9tc2h0bWwvLmN2c2lnbm9yZSwgZGxscy9tc2kvLmN2c2lnbm9yZSwgZGxscy9tc2ltZzMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQyMC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydDQwLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0ZC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmlkYzMyLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLAoJICBkbGxzL21zd3NvY2svLmN2c2lnbm9yZSwgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL25ld2Rldi8uY3ZzaWdub3JlLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhY2MvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLCBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9wb3dycHJvZi8uY3ZzaWdub3JlLAoJICBkbGxzL3BzYXBpLy5jdnNpZ25vcmUsIGRsbHMvcWNhcC8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei8uY3ZzaWdub3JlLAoJICBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvcmljaGVkMjAvLmN2c2lnbm9yZSwKCSAgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLAoJICBkbGxzL3JzYWJhc2UvLmN2c2lnbm9yZSwgZGxscy9yc2FlbmgvLmN2c2lnbm9yZSwKCSAgZGxscy9zZWN1cjMyLy5jdnNpZ25vcmUsIGRsbHMvc2Vuc2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NubXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zdGkvLmN2c2lnbm9yZSwgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy90d2Fpbi8uY3ZzaWdub3JlLCBkbGxzL3VuaWNvd3MvLmN2c2lnbm9yZSwgZGxscy91cmwvLmN2c2lnbm9yZSwKCSAgZGxscy91cmxtb24vLmN2c2lnbm9yZSwgZGxscy91c2VyLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXh0aGVtZS8uY3ZzaWdub3JlLCBkbGxzL3ZkbWRiZy8uY3ZzaWdub3JlLAoJICBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luZWQzZC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwgZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwKCSAgZGxscy93aW50YWIzMi8uY3ZzaWdub3JlLCBkbGxzL3dpbnRydXN0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvd3RzYXBpMzIvLmN2c2lnbm9yZToKCUFkZGVkIHJ1bGVzIHRvIGJ1aWxkIGltcG9ydCBsaWJyYXJpZXMgaW4gdGhlIGluZGl2aWR1YWwgZGxsIG1ha2VmaWxlcy4KCUdlbmVyYXRlIGltcG9ydCBsaWJyYXJpZXMgd2l0aCB0aGUgcmlnaHQgbmFtZSByaWdodCBhd2F5IGluc3RlYWQgb2YKCXVzaW5nIGFuIGludGVybWVkaWF0ZSAuc3BlYy5kZWYgZmlsZS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUF2b2lkIHBhc3NpbmcgTlVMTCBidWZmZXIgZWxlbWVudHMgYW5kIHN0YXR1cyBwb2ludGVycyB0bwoJWG1iTG9va3VwU3RyaW5nLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglBZGRlZCBhIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgZGVmaW5pdGlvbiBvZiBJTkFERFJfTk9ORSBmb3IgcGxhdGZvcm1zCgl0aGF0IGRvbid0IGRlZmluZSBpdC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJJzAnIG1lYW5zICdkZWZhdWx0IHJlZnJlc2ggcmF0ZScgYW5kIG5vdCBhIHJlYWwgcmVmcmVzaCByYXRlIG9mICcwJy4KCgkqIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJRml4IHNlZ21lbnRhdGlvbiBmYXVsdCBjYXVzZWQgYnkgaW5jb3JyZWN0IHJlZmVyZW5jaW5nIG9mIGNsaWVudCBhdWRpbwoJZm9ybWF0IHNwZWNpZmljYXRpb25zIGFycmF5LgoKCSogZGxscy9zaGVsbDMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTWFrZSB0aGUgcm9vdCBvZiB0aGUgc2hlbGwgZXh0ZW5zaW9uIG1hcCB0byB0aGUgcm9vdCBvZiB0aGUgdW5peAoJZmlsZXN5c3RlbS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglJbXBsZW1lbnQgTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uIGZvciBTb2xhcmlzLgoKCSogc2VydmVyL21haWxzbG90LmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUluY2x1ZGUgPHN5cy9maWxpby5oPiBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0LgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglIYW5kbGUgbm90ZXBhZCBsb2cgZmVhdHVyZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIGEgZmV3IG1pc3NpbmcgYWNjZWxlcmF0b3JzLgoKCSogZGxscy9tc2kvcmVjb3JkLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBtaXNzaW5nIG1zaW9ial9yZWxlYXNlIHRoYXQgd2FzIHJlc3VsdGluZyBpbiBhIGxlYWtlZCBvYmplY3QKCXdpdGggZWFjaCBNc2lDcmVhdGVSZWNvcmQgY2FsbC4KCgkqIGRsbHMvbXNpL3Rlc3RzL2RiLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGEgbWlzc2luZyBNc2lDbG9zZUhhbmRsZSgpLgoKCSogZGxscy9xdWFydHovZW51bW1lZGlhLmM6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIHR3byBzbWFsbCBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL3N0Z19wcm9wLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2Ugb2xlMzIgdGVzdHMgbG9hZGFibGUgb24gTlQ0LgoKMjAwNS0wNS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVwcy93aW5lcHMuZHJ2LnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVJlbmFtZWQgd2luZXBzLmRsbCB0byB3aW5lcHMuZHJ2IGZvciBjb25zaXN0ZW5jeS4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglTdG9yZSB0aGUgbW9kdWxlIGluc3RhbmNlIHdlIGdldCBpbiBEbGxNYWluIHRvIGF2b2lkIGV4dHJhIExvYWRMaWJyYXJ5CgljYWxscy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q5L2QzZDlfbWFpbi5jLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMvbWFrZV9kbGxzLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLAoJICBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3dpbmV0dHkuZHJ2LnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLmMsCgkgIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi93aW5leDExLmRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVJlbmFtZWQgdHR5ZHJ2IGFuZCB4MTFkcnYgdG8gd2luZXR0eS5kcnYgYW5kIHdpbmV4MTEuZHJ2IHJlc3BlY3RpdmVseQoJdG8gZm9sbG93IHRoZSBuYW1lc3BhY2UgY29udmVudGlvbnMgYW5kIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQoJZHJpdmVycyBhbmQgbm90IGRsbHMuCglNb3ZlZCB0aGUgZ3JhcGhpY3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24gdG8gSEtMTVxTb2Z0d2FyZVxXaW5lXERyaXZlcnMuCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYzoKCVJlbW92ZWQgYSBidW5jaCBvZiBvYnNvbGV0ZSBtYWtlZmlsZSBoYWNraW5nIHNlZCBjb2RlLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW92ZSBpbml0aWFsaXphdGlvbiB0byBJRGlyZWN0U291bmRfSW5pdGlhbGl6ZS4KCUZpeCBlcnJvciBwYXRocyB0byBoYW5kbGUgYSBmYWlsZWQgSURpcmVjdFNvdW5kX0luaXRpYWxpemUuCglBZGQgdGVzdHMgZm9yIElEaXJlY3RTb3VuZF9Jbml0aWFsaXplLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZXR1cm4gYSBjbG9uZWQgUElETCBieSBTSEJyb3dzZUZvckZvbGRlciB0byBhdm9pZCBoZWFwIGNvcnJ1cHRpb24uCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglEaXNwbGF5IGEgZHJpdmUgaWNvbiBmb3IgdGhlIHVuaXggcm9vdCBkaXJlY3RvcnkuCgoJKiBkbGxzL3dpbm1tL3RpbWUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZSBGSVhNRSB0byBXQVJOLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL3N0YWJzLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvb2xkY29uZmlnLmMsCgkgIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL21zYWNtL3dpbmVtcDMvY29tbW9uLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MvcHBkZXYuYywgZGxscy93aW5lZG9zL3Z4ZC5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGxvYWRlci9wcmVsb2FkZXIuYywgdG9vbHMvd2luYXBpL25hdGl2ZWFwaS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjazoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IG5hdGl2ZWFwaS5wbSBzbyBpdCBrbm93cyBhYm91dCBBQ19IRUFERVJfU1RBVCgpLgoJTWFrZSB0aGUgZXJyb3IgbWVzc2FnZSBhYm91dCB1bmV4cGVjdGVkICcjaWZkZWYgSEFWRV9YWFgnIGNsZWFyZXIuCglQcm90ZWN0IHN5cy9zdGF0LmggI2luY2x1ZGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgJyNpZmRlZiBIQVZFX1hYWCcKCWNoZWNrLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgc3VwcG9ydCBpbiB3aW5lYnVpbGQgZm9yIHNwZWNpZnlpbmcgaW1wb3J0IGxpYnJhcmllcyBkaXJlY3RseSBvbgoJdGhlIGNvbW1hbmQgbGluZSB3aXRob3V0IHRoZSAtbCBvcHRpb24uCglDaGFuZ2VkIHRoZSAtZCBvcHRpb24gdG8gb25seSBtYXJrIHRoZSBsaWJyYXJ5IGFzIGRlbGF5ZWQsIHRoZSBhY3R1YWwKCWxvYWRpbmcgaXMgbm93IGRvbmUgc2VwYXJhdGVseS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2dkaS9iaXRibHQuYywgZGxscy9nZGkvcGFsZXR0ZS5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL29wZW5nbDMyL3dnbF9leHQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3gxMWRydi9wYWxldHRlLmMsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWNvZGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtb3RoZXJkZWJ1Zy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3NldHVwYXBpL21pc2MuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBpbmNsdWRlL3NldHVwYXBpLmgsIGluY2x1ZGUvd2lubnQuaDoKCUVyaWMgS29obCA8ZXJpYy5rb2hsX2F0X3Qtb25saW5lLmRlPgoJSW1wbGVtZW50IENhcHR1cmVBbmRDb252ZXJ0QW5zaUFyZywgQ2FwdHVyZVN0cmluZ0FyZywKCU9wZW5BbmRNYXBGb3JSZWFkLCBSZXRyZWl2ZUZpbGVTZWN1cml0eSwgU3RhbXBGaWxlU2VjdXJpdHksCglUYWtlT3duZXJzaGlwT2ZGaWxlLCBhbmQgVW5tYXBBbmRDbG9zZUZpbGUuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9waW4uYzoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIGEgZG96ZW4gb2YgcmVmZXJlbmNlIChhbmQgc29tZSBtZW1vcnkpIGxlYWtzLgoJSW1wbGVtZW50ZWQgZmlsdGVyZ3JhcGhfcGF1c2Uvc3RvcC4KCgkqIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJRml4ZWQge0NvcHkvRGVsZXRlL0ZyZWV9TWVkaWFUeXBlIGZ1bmN0aW9ucyB0byBzaG93IHByb3BlciBiZWhhdmlvdXIuCglGaXhlZCBFbnVtTWVkaWFUeXBlcyB0byBjb3B5IHBiRm9ybWF0IHRvby4KCUFkZGVkIEZyZWVNZWRpYVR5cGUuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhBVkVfVjRMMiBpcyBub3QgYW4gYXV0b2NvbmYgZGVmaW5lIHNvIHRlbGwgd2luYXBpX2NoZWNrIG5vdCB0bwoJY29tcGxhaW4gY29tcGxhaW4gYWJvdXQgaXQuCgoJKiBkbGxzL3JwY3J0NC9ycGNzc19ucF9jbGllbnQuYzogSGFydG11dCBCaXJyIDxoYXJ0bXV0LmJpcnJAZ214LmRlPgoJQ2xlYW4gdXAgaWYgbmFtZWQgcGlwZSBpcyBub3QgYXZhaWxhYmxlLgoKCSogZGxscy9tc2kvcmVnaXN0cnkuYywgZGxscy94MTFkcnYvb3BlbmdsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR3ZWFrIHRoZSBkb2N1bWVudGF0aW9uIHRvIG1ha2Ugd2luYXBpX2NoZWNrIGhhcHB5LgoKCSogZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgaW5jbHVkZS91cmxtb24uaWRsLAoJICB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgd2luMzIuYXBpIHRvIG1hdGNoIHRoZSBjdXJyZW50IHNvdXJjZXMuCglEZWNsYXJlIENvR2V0Q2xhc3NPYmplY3RGcm9tVVJMKCkgaW4gdXJsbW9uLmguCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNYXR0aGV3IE1hc3RyYWNjaSA8bWF0dEBhY2xhcm8uY29tPgoJUmVwbGFjZSBzdHViIGVudHJ5IGZvciBTdGdPcGVuU3RvcmFnZUV4IHdpdGggY2FsbCB0byBTdGdPcGVuU3RvcmFnZS4KCjIwMDUtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggYWNjZXNzIHJpZ2h0cyBmb3IgUmVnT3BlbktleUV4IGFuZCBSZWdDcmVhdGVLZXlFeCBjYWxscy4KCS0gQWRkIHByaXZpbGVnZSBjaGVja3MgZm9yIFJlZ0xvYWRLZXksIFJlZ1VubG9hZEtleSAmIFJlZ1NhdmVLZXkKCSAgY2FsbHMuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCURvbid0IHJldHJpZXZlIGEgd2luZG93IERDIGluIEdldFVwZGF0ZVJlY3QgaWYgdGhlcmUgaXMgbm90aGluZyB0bwoJZXJhc2UsIHRvIGF2b2lkIHNldHRpbmcgYSBudWxsIHVwZGF0ZSByZWdpb24gaW4gYW4gb3duZWQgREMuCglBdm9pZCBwb3RlbnRpYWwgZG91YmxlIGRlbGV0ZSBvZiB0aGUgdXBkYXRlIHJlZ2lvbiBvbiByZXR1cm4gZnJvbQoJc2VuZF9lcmFzZS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogPHdpbmUubGFycnkuZW5naG9sbUB4b3h5Lm5ldD4KCVJldHVybiBFTk9FTlQgcmF0aGVyIHRoYW4gRUJBREYgZnJvbSBNU1ZDUlRfZm9wZW4oKSB3aGVuIGZpbGUgZG9lc24ndAoJZXhpc3QuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBSZWdEZWxldGVLZXl7QSxXfSB0byBvcGVuIHRoZSBzcGVjaWZpZWQga2V5IHdpdGggdGhlIERFTEVURSBhY2Nlc3MKCXJpZ2h0LgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglvdXRwdXRfbmFtZSBhbHJlYWR5IGNvbnRhaW5zIC5leGUgZXh0ZW5zaW9uLCBkb24ndCBhZGQgaXQgYWdhaW4gZm9yIC1GCglvcHRpb24uCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBpbmNsdWRlL29iamJhc2UuaDoKCU1hdHRoZXcgTWFzdHJhY2NpIDxtbWFzdHJhY0BjYW5hZGEuY29tPgoJUmVwbGFjZSBTdGdDcmVhdGVTdG9yYWdlRXggc3R1YiB3aXRoIGNhbGwgdG8gU3RnQ3JlYXRlRG9jZmlsZSBhbmQgYWRkCglyZXF1aXJlZCBTVEdGTVRfKiBlbnVtZXJhdGlvbnMuCgoJKiBkbGxzL2dkaS9iaXRibHQuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIE1hc2tCbHQgZGVsZXRlIGNvcnJlY3QgYml0bWFwLgoKCSogZGxscy91c2VyL3dpbnByb2MuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUFkZCAxNjwtPjMyIGJpdCBtZXNzYWdlIG1hcHBpbmdzIGZvciBXTV9DT1BZREFUQSBtZXNzYWdlcy4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCS0gSW4gTVpfRG9Mb2FkSW1hZ2UgaWYgYW4gZW52aXJvbm1lbnQgc2VnbWVudCBpcyBzcGVjaWZpZWQgaW4gdGhlCgkgIHBhcmFtZXRlciBibG9jaywgdXNlIHRoYXQgYW5kIGRvIG5vdCBpbmhlcml0IGZyb20gdGhlIGNhbGxpbmcKCSAgcHJvY2Vzcy4KCS0gQ2FsbCBGcmVlRW52aXJvbm1lbnRTdHJpbmdzIHdoZW4gdGhlIHN0cmluZ3MgYXJlIG5vIGxvbmdlciB1c2VkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBHZXREaXNwbGF5TmFtZU9mIG1ldGhvZCB0byBub3QgZGVwZW5kIG9uIGluY29ycmVjdCBiZWhhdmlvdXIKCXJlZ2FyZGluZyB0aGUgU0hHRE5fSU5GT0xERVIgZmxhZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBNeUNvbXB1dGVyJ3MgR2V0RGlzcGxheU5hbWVPZiBtZXRob2QuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkbyBub3QgZmx1c2ggdGhlIGJ1ZmZlciB3aGVuIHRoZSBhcHBsaWNhdGlvbiBvbmx5IHdhbnRzIHRvIHBlZWsgdGhlCgkgIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUKCS0gdHJhY2UgdGhlIEdldERldmljZVN0YXRlIHZhbHVlcyBiZWZvcmUgdGhleSBhcmUgcmVzZXQKCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgQ29HZXRDbGFzc09iamVjdEZyb21VUkwuCgoJKiBkbGxzL3VybG1vbi91bW9uLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQ29ycmVjdCBidWcgdHJ1bmNhdGluZyBkb3dubG9hZGVkIGZpbGVzIHRvIDQwOTYgYnl0ZXMuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRm9yd2FyZCBDTFNJRF9GaWx0ZXJHcmFwaE5vVGhyZWFkIHRvIENMU0lEX0ZpbHRlckdyYXBoLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJRml4IGNvbXBpbGUgb24gbm9uLUVMRiBob3N0LgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG1vcmUgcHJldHR5IHByaW50IGZvciB0aGUgdHlwZXMgZmxhZwoJLSBtb3JlIFdpbmRvd3MtYWxpZ25lZCBjaGVjayBmb3Igb2JqZWN0IGluc3RhbmNlcwoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluaXRpYWxpemUgaW9zYi4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglTZXQgd2luMmszIHNlcnZpY2UgcGFjayBudW1iZXIgdG8gMS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJLSBGaXggTlRETExfd2FpdF9mb3JfbXVsdGlwbGVfb2JqZWN0cyBjYWxsIGluIHVzcjFfaGFuZGxlci4KCS0gRml4IGFuIGVycm9yIGR1ZSB0byAiaW52YWxpZCBsdmFsdWUgaW4gYXNzaWdubWVudCIgd2l0aCBnY2MgNCBvbgoJICBEYXJ3aW4gOC4wLgoKMjAwNS0wNS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaS9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaS9zZXR1cC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglHZXQgcmlkIG9mIHRoZSB3aW5hcGlfY2hlY2tfZGlyIGNvbmZpZyBwYXJhbWV0ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJU2V0IGlJdGVtIHRvIGluZGV4IGJlZm9yZSBub3RpZnlpbmcgY2FsbGJhY2sgaXRlbXMuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IFBoeXNpY2FsTWVtb3J5IHByb3BlcnR5IGZyb20gc3lzdGVtIGRhdGEuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91bXN0cmVhbS5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oOgoJVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglJbXBsZW1lbnQgVVJMTW9uaWtlckltcGxfQmluZFRvU3RvcmFnZS4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUNyZWF0ZSBVUkwgQ2FjaGUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5hcGkvbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaS9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaS9wcmVwcm9jZXNzb3IucG0sIHRvb2xzL3dpbmFwaS9zZXR1cC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9wYXJzZXIucG06CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1vdmUgYWxsIGZpbGVzIGZyb20gd2luYXBpX2NoZWNrLyB0byB3aW5hcGkvLCBhbmQgcmVtb3ZlIHJlZmVyZW5jZXMgdG8KCXdpbmFwaV9jaGVjayBkaXJlY3RvcnkuICBNZXJnZSB3aW5hcGlfY2hlY2sgcHJvZ3JhbXMuCgoJKiBkbGxzL21zaS9tc2lfRnIucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRnIucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Gci5yYywgZGxscy9zaGRvY3Z3L0ZyLnJjLCBwcm9ncmFtcy90YXNrbWdyL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlIFNVQkxBTkdfTkVVVFJBTCBmb3IgRnJlbmNoIHJlc291cmNlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvQ3MucmMsIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRnIucmMsIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvTmwucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUVubGFyZ2UgdGhlIGxpY2Vuc2UgdGV4dCBjb250cm9sIGxlbmd0aC4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHN0YXRpYyB2YXJpYWJsZXMgaW4gU0hCcm93c2VGb3JGb2xkZXIgaW1wbGVtZW50YXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdHJ5IGVudHJ5IHdoZW4gZGVsZXRpbmcgYSBkcml2ZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglEb24ndCBhZGQgdGhlIHNhbWUgcHJvZ3JhbSBpbiBBcHBEZWZhdWx0cyBtb3JlIHRoYW4gb25jZS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBTZXR1cENvcHlPRU1JbmZXLgoKCSogZGxscy9rZXJuZWwvdmVyc2lvbi5yYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglCdW1wIHZlcnNpb24gbnVtYmVyIHRvIFhQIFNQMi4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgb3duZXIgZHJhd24gY29udGV4dCBtZW51cy4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNldCBkcml2ZXIgdHlwZSBwcm9wZXJseS4KCgkqIGluY2x1ZGUvYXhleHRlbmQuaWRsOiBNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglBZGRlZCBJQU1WaWRlb1Byb2NBbXAuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS5jOiBKYW1lcyBEZWFuIEFuZGVyc29uIDxwZXRyQHBhbnRlay5vcmc+CglSZXBvcnQgYW4gZXJyb3IgaWYgdHJ5aW5nIHRvIGdldCBkYXRhIGZyb20gYW4gdW5hY3F1aXJlZCBtb3VzZS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBJdmFuIFdvbmcgPGVtYWlsQGl2YW53b25nLmluZm8+CglBZGRlZCBIb25nIEtvbmcgU3RhbmRhcmQgVGltZSAoSEtUKS4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUxldCB0aGUgZGVmYXVsdCB3aW5wcm9jIGhhbmRsZSBXTV9NT1VTRUFDVElWQVRFLgoKMjAwNS0wNC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmgsIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5jLAoJICBkbGxzL29wZW5nbDMyL3dnbF9leHQuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBpbXBsZW1lbnQgd2dsR2V0Q3VycmVudFJlYWREQ0FSQiwgd2dsTWFrZUNvbnRleHRDdXJyZW50QVJCIG9uCgkgIG9wZW5HTDMyICh3Z2xfZXh0KQoJLSBhZGQgY29kZSB0byBkaXNhYmxlIHNvbWUgb3BlbkdMIGV4dGVuc2lvbnMgc3VwcG9ydCB1c2luZyB3aW5lCgkgIHJlZ2lzdHJ5IGtleSBIS0xNXFNvZnR3YXJlXFdpbmVcT3BlbkdMXERpc2FibGVkRXh0ZW5zaW9ucyAobGlzdAoJICBzZXBhcmF0ZWQgYnkgc3BhY2VzKQoJLSB2YWxpZC9yb2J1c3QgaW1wbGVtZW50YXRpb24gb2Ygd2dsQ2hvb3NlUGl4ZWxGb3JtYXRBUkIgYW5kCgkgIHdnbEdldFBpeGVsRm9ybWF0QXR0cmliaXZBUkIgKHdnbF9leHQpCgoJKiBkbGxzL3gxMWRydi9vcGVuZ2wuYywgZGxscy94MTFkcnYveHJhbmRyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gdmFsaWQgaW1wbGVtZW50YXRpb24gb2YgWDExRFJWX0Nob29zZVBpeGVsRm9ybWF0IHVzaW5nIEdMWDEuMyBBUEkKCSAgKGllLiB1c2luZyByZWFsIGNhcmQgY2FwcyBhbmQgbm90IHVnbHkgd2F5IHVzaW5nIHZpc3VhbHMgYXJyYXkpIHRvCgkgIGJlIGNvbXBhdGlibGUgd2l0aCBvcGVuZ2wzMiBwaXhlbCBmb3JtYXRzICh3Z2wqUGl4ZWxGb3JtYXQqIEFQSXMpIGFzCgkgIHRoZXkgbmVlZCB0byBiZSB0aGUgc2FtZQoJLSBhZGQgbW9yZSB0cmFjZXMgdG8geHJhbmRyCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCB1c2VyIGNvbXBvbmVudCBwdWJsaWNhdGlvbi4KCUltcGxlbWVudCBNc2lFbnVtQ29tcG9uZW50UXVhbGlmaWVycy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgc3RhY2sgb3ZlcndyaXRlIGJ5IHVzaW5nIHNpemVvZihXU19zb2NrYWRkcl9pcHgpLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTcGxpdCB1cCB0aGUgd2luZG93IHByb2NlZHVyZS4KCgkqIGRsbHMvdXNlci9pbnB1dC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEdldExhc3RJbnB1dEluZm8uCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW1wbGVtZW50IG1lbW9yeSBhY2Nlc3MgQVBJcyB0byBWZXJ0ZXhCdWZmZXJzCgktIG1vcmUgdmFsaWQgaW1wbGVtZW50YXRpb24gZm9yIElXaW5lRDNESW1wbF9DaGVjayogQVBJcyAobm90IG1vcmUKCSAgU19PSyBmb3IgYWxsIGNhc2VzKQoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDogSmVmZiBMYXRpbWVyIDxqZWZmbEBkZWZjZW4uZ292LmF1PgoJRGVmaW5lIHN0cm5jcHlXIHRvIGVuc3VyZSB0aGF0IHVzZXJzIGtub3cgd2h5IGl0IGlzIG5vdCBwcmVzZW50LgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpUXVlcnlGZWF0dXJlU3RhdGVXLgoKMjAwNS0wNC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgd2luZG93cy91c2VyLmM6CglNb3ZlZCB0aGUgVVNFUiBzeXNsZXZlbCB0byBkbGxzL3VzZXIvdXNlcl9tYWluLmMuCglNb3ZlZCBhIGJ1bmNoIG9mIHN0dWJzIHRvIGRsbHMvdXNlci9taXNjLmMuCgoJKiBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgaW5jbHVkZS9taXNjZW11Lmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZGVsYXllZCBpbml0aWFsaXNhdGlvbiBvZiBCSU9TIGFuZCBTWVNURU0gaW5mb3JtYXRpb24gdW50aWwgc29tZW9uZQoJICBhY3R1YWxseSBuZWVkcyBpdAoJLSBub3cgdXNpbmcgc29tZSBtYW5pZmVzdCBjb25zdGFudHMgdG8gbWFrZSBjb2RlIGNsZWFyZXIKCgkqIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkZWQgdGhlIHZpZGVvIGlucHV0IGRldmljZSBjYXRlZ29yeS4KCgkqIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jLCBkbGxzL3VzZXIvZGVmd25kLmMsCgkgIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9ob29rMTYuYywKCSAgZGxscy91c2VyL2lucHV0LmMsIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci9tZGkuYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuaCwgZGxscy91c2VyL21zZzE2LmMsCgkgIGRsbHMvdXNlci9zY3JvbGwuYywgZGxscy91c2VyL3NweS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy91c2VyL3dpbi5jLCBkbGxzL3VzZXIvd2lucG9zLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmMsIHdpbmRvd3MvdXNlci5jOgoJTW92ZWQgcmVtYWluaW5nIG1lc3NhZ2luZyBkZWZpbml0aW9ucyB0byB1c2VyX3ByaXZhdGUuaCBhbmQgcmVtb3ZlZAoJbWVzc2FnZS5oLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9kaWFsb2cuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgZGlhbG9ncyBhcmUgb25seSBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgaW4gYSBzaW5nbGUKCXRocmVhZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUltcGxlbWVudGVkIGNhcEdldERyaXZlckRlc2NyaXB0aW9uLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbXVsdGltZWRpYSB0aHJlYWRzIGhpZ2ggcHJpb3JpdHkuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svdGVzdHMvYWR2cGFjay5jOgoJU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglBZGRlZCBpbml0aWFsIHZlcnNpb24gb2YgRGVsbm9kZSBwbHVzIHNvbWUgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL2N1cnNvcmljb24uYywgZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL2hvb2sxNi5jLAoJICBkbGxzL3VzZXIvaW5wdXQuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuaCwKCSAgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL3duZDE2LmMsIGluY2x1ZGUvdGhyZWFkLmgsIHdpbmRvd3MvcXVldWUuYzoKCVJlbW92ZWQgdGhlIE1FU1NBR0VRVUVVRSBzdHJ1Y3R1cmUsIGFuZCBzdG9yZSB0aGUgY29ycmVzcG9uZGluZwoJaW5mb3JtYXRpb24gZGlyZWN0bHkgaW4gdGhlIFRFQiwgaW4gdGhlIFdpbjMyQ2xpZW50SW5mbyBmaWVsZC4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogQWRkZWQgcHJvcGVyIG5hbWVzIGZvciB0aGUgcmVtYWluaW5nIFRFQiBmaWVsZHMuCgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBXSU5NTV9JRGF0YSBzdGF0aWNhbGx5IGFsbG9jYXRlZC4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBjcmFzaCBvbiBkcmF3U3RyaWRlZFNsb3cuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJSW5jbHVkZSA8bGltaXRzLmg+IHRvIGdldCBhIGRlZmluaXRpb24gb2YgTkFNRV9NQVguCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgYSBsZWFraW5nIGhrZXkgaGFuZGxlLgoKMjAwNS0wNC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGhjdGwuYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jOgoJUmVtb3ZlZCBhIGZldyBtb3JlIHN0cm5jcHkgY2FsbHMuCgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jOgoJTWFrZSBzdXJlIGEgdGhyZWFkIGhhcyBhIHF1ZXVlIGFzIHNvb24gYXMgaXQgY3JlYXRlcyBhIHdpbmRvdy4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRXhwYW5kIHNvbWUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBwcm9wZXJ0aWVzIGluIE1zaUdldFByb2R1Y3RJbmZvLgoKCSogZGxscy9tc2kvZGF0YWJhc2UuYywgZGxscy9tc2kvbXNpLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIE1zaUV4cG9ydERhdGFiYXNlKiBpbiB0aGUgc3BlYyBmaWxlLCBhbmQgZml4IGEgdHlwby4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgZmxhZ3MgaGFuZGxpbmcgaW4gTUNJQVZJX21jaUluZm8uCgoJKiBkbGxzL3VzZXIvaW5wdXQuYywgZGxscy91c2VyL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJTW92ZWQgc29tZSBtZXNzYWdpbmcgYW5kIGlucHV0IGZ1bmN0aW9ucyB0byBtZXNzYWdlLmMgYW5kIGlucHV0LmMKCXJlc3BlY3RpdmVseS4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2luZG93LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglTZXRQYXJlbnQgc2hvdWxkIG5vdCByZW1vdmUgbWVudSBmcm9tIG5vbi1jaGlsZCB3aW5kb3dzLgoKCSogZGxscy91c2VyL2NvbWJvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgYW5zaSB2ZXJzaW9uIG9mIENCX0FERFNUUklORyBzaG91bGRuJ3Qgb3ZlcndyaXRlIHRoZSBzdHJpbmcgaWYKCWNvbnZlcnRpbmcgY2FzZS4KCgkqIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYzoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIGEgcmVmZXJlbmNlIGxlYWsuCgoyMDA1LTA0LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglEZWZpbmUgc3RybmNweSB0byBhbiBlcnJvciB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCBjcmVlcCBiYWNrIGluLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYzoKCU1vdmVkIHRoZSBTY3JvbGxXaW5kb3cgYW5kIFNjcm9sbERDIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIvcGFpbnRpbmcuYywKCWFuZCByZW1vdmVkIHdpbmRvd3Mvc2Nyb2xsLmMuCgoJKiBkbGxzL2dkaS9kYy5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVByZXZlbnQgQ3JlYXRlRENBIGZyb20gY3Jhc2hpbmcgaWYgYSBiYWQgbHBJbml0RGF0YSBwYXJhbWV0ZXIgaXMKCXByb3ZpZGVkLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZCBwYXJhbWV0ZXIgY2hlY2tpbmcgdG8gTnRSZWFkRmlsZS9OdFdyaXRlRmlsZS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGxpYnMvd2luZS9kZWJ1Zy5jLCBsaWJzL3dpbmUvbG9hZGVyLmMsIHRvb2xzL3NmbnQyZm50LmMsCgkgIHRvb2xzL3dpbmVkdW1wL2R1bXAuYzoKCVJlbW92ZSBhIGZldyBtb3JlIGluc3RhbmNlcyBvZiBzdHJuY3B5LgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY2xhc3MuYywgZGxscy91c2VyL2NsaXBib2FyZC5jLAoJICBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jLCBkbGxzL3VzZXIvZGVmZGxnLmMsIGRsbHMvdXNlci9kZWZ3bmQuYywKCSAgZGxscy91c2VyL2RpYWxvZy5jLCBkbGxzL3VzZXIvaW5wdXQuYywgZGxscy91c2VyL21kaS5jLAoJICBkbGxzL3VzZXIvbXNnYm94LmMsIGRsbHMvdXNlci9ub25jbGllbnQuYywgZGxscy91c2VyL3NweS5jLAoJICBkbGxzL3VzZXIvd2luLmMsIGRsbHMvdXNlci93aW5oZWxwLmMsIGRsbHMvdXNlci93aW5wb3MuYywKCSAgZGxscy91c2VyL3dpbnByb2MuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywKCSAgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmM6CglNb3ZlZCBtb3N0IGZpbGVzIGZyb20gdGhlIHdpbmRvd3MgZGlyZWN0b3J5IHRvIGRsbHMvdXNlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTdXBwb3J0IGZvciByZWd1bGFyIGZpbGVzIChhcyBvcHBvc2VkIHRvIGRpcmVjdG9yaWVzKS4KCgkqIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXByb3ZlZCBlcnJvcnMgaGFuZGxpbmcgYSBiaXQgaW4gZHNvdW5kIHJlbmRlcmVyLgoKCSogaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJZ2NjNCBhbGlhcyBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvZGlucHV0L2RldmljZS5jLAoJICBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIDMgbWVtc2V0KClzIHdoaWNoIHVzZWQgdGhlIHdyb25nIHNpemUgKHRvbyBsYXJnZSkuCgoyMDA1LTA0LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3RzIGZvciBTaWduYWxPYmplY3RBbmRXYWl0LgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTaWduYWxPYmplY3RBbmRXYWl0LgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZXZlbnQuYywKCSAgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLAoJICBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvbWFpbHNsb3QuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc2lnbmFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdG9rZW4uYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBOdFNpZ25hbEFuZFdhaXRGb3JTaW5nbGVPYmplY3QuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgcHJpb3JpdHkgYm9vc3Qgc3R1ZmYuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogRHlsYW4gVGFmdCA8c291bmRtYW5va0B5YWhvby5jb20+CglTZXQgZGlzcGxheSBmcmVxdWVuY3kgdG9vIGluIFNldERpc3BsYXlNb2RlLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktLXVwZGF0ZSBpcyBubyBsb25nZXIgbmVlZGVkIHdpdGggd2luZXByZWZpeGNyZWF0ZS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEZWZpbmUgYW5kIHVzZSBlbmRpYW4gY29udmVyc2lvbiBtYWNyb3MgZm9yIGJpZy1lbmRpYW4gbWFjaGluZXMuCgoyMDA1LTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUV4cG9ydCBfdHpuYW1lLCBleHBlY3RlZCBieSBNb3ppbGxhLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglFeGNsdWRlZCB0ZXN0cyBjcmFzaGluZyBvbiBOVDQgZnJvbSBjb21waWxpbmcuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gY29udmVydCBzdHJpbmdzIGJldHdlZW4gcHJvcGVydHkgc3RvcmFnZSdzIGNvZGUgcGFnZSBhbmQgc3lzdGVtIGNvZGUKCSAgcGFnZQoJLSBhZGQgdGVzdHMgZm9yIHNldHRpbmcgY29kZSBwYWdlCgktIGZpeCB0ZXN0cyBhbmQgYmVoYXZpb3IgdG8gbWF0Y2ggV2luWFAKCgkqIGRsbHMvd2lubW0vdGVzdHMvdGltZXIuYywgZGxscy93aW5tbS90aW1lLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2V0IHRocmVhZCBwcmlvcml0eSBmb3IgdGltZXIgdGhyZWFkLgoJQWRkIHRpbWVyIHRocmVhZCBwcmlvcml0eSB0ZXN0LgoKMjAwNS0wNC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2UgdGhlIHNoZWxsMzIgdHlwaWNhbCBiaW5hcnkgZm9ybWF0IGZvciBJVEVNSURMSVNUcy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUltcG9ydCBEUEFfU2VhcmNoIGJ5IG9yZGluYWwgbGlrZSBvdGhlciBEUEEgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYSBwb3dycHJvZiBzZWN0aW9uLgoJVXBkYXRlIHdpbjMyLmFwaSB0byBtYXRjaCB0aGUgY3VycmVudCBzb3VyY2UuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBQcml2aWxlZ2VDaGVjay4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWN1cml0eS5oLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3Rva2VuLmMsIHNlcnZlci90cmFjZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDbGVhbiB1cCB3ZWxsLWtub3duIHByaXZpbGVnZXMuCgktIEltcGxlbWVudCBjaGVja2luZyB0b2tlbnMgZm9yIHByaXZpbGVnZXMgaW4gdGhlIHNlcnZlci4KCS0gSW1wbGVtZW50IE50UHJpdmlsZWdlQ2hlY2suCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGluY29ycmVjdCBJU2hlbGxGb2xkZXI6OkVudW1PamVjdHMgQVBJIHVzYWdlLgoKCSogZGxscy94MTFkcnYvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiBYU2htQXR0YWNoIGZhaWxzIHRoZW4gcmVzZXQgc2htaWQgdG8gLTEgc28gdGhhdCB3ZSBkb24ndCB0cnkgdG8gdXNlCglpdCBsYXRlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTVNJIGFkdmVydGlzZWQgc2hvcnRjdXRzIGRvbid0IHJlcXVpcmUgYSBwcm9kdWN0IElELgoKCSogZGxscy9vbGUzMi90ZXN0cy9zdGdfcHJvcC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIG9sZTMyIHRlc3RzIGxvYWRhYmxlIG9uIE5UNC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVBlcmZvcm0gb25lIG1vcmUgY29tbWl0IGluIEFMU0Egbm9uLWVtdWxhdGlvbiBpZiB0aGVyZSBhcmUgc3RpbGwKCWZyYW1lcyB0byBiZSB0cmFuc21pdHRlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJLSBGaXggbGVmdG92ZXIgbmVnYXRpdmUgc2lnbiBpbiBoZWlnaHQgcGFyYW1ldGVyIGZvciB0cmFuc3BhcmVudAoJICBiaXRtYXAuCgktIFByb3Blcmx5IGFubm91bmNlIHdoZXRoZXIgYml0bWFwIGlzIHRyYW5zcGFyZW50IGluIGdldF9BdHRyaWJ1dGVzLgoJLSBHSUYgdHJhbnNwYXJlbmN5IGlzIG5vdyBwYWxldHRlLWluZGV4IGJhc2VkLCBpbnN0ZWFkIG9mIFJHQiBiYXNlZC4KCS0gS2VlcCBvcmlnaW5hbCBiaXRtYXAgYW5kIFhPUiBtYXNrIHNlcGFyYXRlLCBzbyB0aGF0IGdldF9IYW5kbGUKCSAgcmV0dXJucyBvcmlnaW5hbCBiaXRtYXAuCgoJKiBkbGxzL21zaS9tc2kuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUd2VhayB0aGUgQVBJIGRvY3VtZW50YXRpb24gdG8gc2lsZW5jZSB3aW5hcGlfY2hlY2sgd2FybmluZ3MuCgoJKiBkbGxzL2F0bC9hdGxfbWFpbi5jLCBkbGxzL2F0bC9hdGxiYXNlLmgsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhIGRlZmluaXRpb24gZm9yIF9BVExfUkVHTUFQX0VOVFJZIGluIGF0bGJhc2UuaC4KCUZpeCB0aGUgcHJvdG90eXBlIG9mIEF0bE1vZHVsZVVwZGF0ZVJlZ2lzdHJ5RnJvbVJlc291cmNlRCgpIHNvIGl0IHVzZXMKCXRoZSByaWdodCBwb2ludGVyIHR5cGVzLgoKMjAwNS0wNC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCU1vdmVkIHRoZSBVc2VQcmltYXJ5IGNvbmZpZyBwYXJhbWV0ZXIgdG8gdGhlIHgxMWRydiBzZWN0aW9uLCByZW5hbWVkCglhcyBVc2VQcmltYXJ5U2VsZWN0aW9uLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIHRoZSByZXR1cm4gY29kZXMgZm9yIHRoZSBRdWFsaWZpZWQgY29tcG9uZW50IGNhbGxzLiBUaGV5IGFyZQoJbm90IElOU1RBTExTVEFURXMgYnV0IHJhdGhlciBzdWNjZXNzIHZhbHVlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywKCSAgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJR2V0IHJpZCBvZiB0aGUgcmVtYWluaW5nIGNhbGxzIHRvIHN0cm5jcHlXLCBhbmQgcmVtb3ZlIHRoYXQgZnVuY3Rpb24KCWZyb20gd2luZS91bmljb2RlLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVJld3JpdHRlbiBEb0Vudmlyb25tZW50U3Vic3QxNi4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJlbW92ZSBUSFJFQURfSU5GTyBzdHJ1Y3QuCglSZW5hbWUgVEhSRUFESU5GTyBpbnRvIFNZU1RFTV9USFJFQURfSU5GT1JNQVRJT04uCgoyMDA1LTA0LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcG93cnByb2YvLmN2c2lnbm9yZSwgZGxscy9wb3dycHJvZi9NYWtlZmlsZS5pbiwKCSAgZGxscy9wb3dycHJvZi9wb3dycHJvZi5jLCBkbGxzL3Bvd3Jwcm9mL3Bvd3Jwcm9mLnNwZWM6CglCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJQWRkZWQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBwb3dycHJvZi5kbGwuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJSGFuZGxlIHBvc3RlZCBpbnRlcm5hbCBtZXNzYWdlcyBkaXJlY3RseSBpbiBQZWVrTWVzc2FnZVcgdG8gYXZvaWQKCWhhdmluZyB0byByZXR1cm4gdGhlbSB0byB0aGUgYXBwbGljYXRpb24uCglDYWxsIE50WWllbGRFeGVjdXRpb24gZm9yIG5pY2VyIGJlaGF2aW9yIHdoZW4gUE1fTk9ZSUVMRCBpcyBub3QKCXNwZWNpZmllZC4KCgkqIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDogQXZvaWQgYSBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RjaWRkaS5oLAoJICBpbmNsdWRlL2RjaW1hbi5oLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIERDSUNyZWF0ZVByaW1hcnkoKSBwcm90b3R5cGUuIEl0J3Mgc3VwcG9zZWQgdG8gcmV0dXJuIGFuIGludAoJc28gaGF2ZSBpdCByZXR1cm4gRENJX0ZBSUxfVU5TVVBQT1JURUQuCglBZGQgdGhlIG5lZWRlZCBlcnJvciBjb2RlcyBhbmQgdGhlIERDSVNVUkZBQ0VJTkZPIGRlZmluaXRpb24gdG8KCWRjaWRkaS5oLgoJQWRkIGRjaW1hbi5oIGFuZCBwdXQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgdGhlcmUuCglkY2lkZGkuaCBhbmQgZGNpbWFuLmggc2hvdWxkIGJlIGluc3RhbGxlZCB3aXRoIHRoZSBvdGhlciBXaW5kb3dzCgloZWFkZXJzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC92aXJ0dWFsLmM6CglSZW1vdmUgYWxsIHRyYWNlcyBvZiB0aGUgVklSVFVBTF9TZXRGYXVsdEhhbmRsZXIgc3VwcG9ydC4KCgkqIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgdmVjdG9yZWQgZXhjZXB0aW9ucyB0byBnZXQgcmlkIG9mIFZJUlRVQUxfU2V0RmF1bHRIYW5kbGVyKCkuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVjaWZ5IHRoZSBwcm9wZXIgY2FsbCBjb252ZW50aW9uIGluIHRoZSBQcm9wU3lzRnJlZVN0cmluZygpCglpbXBsZW1lbnRhdGlvbi4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvb2xkY29uZmlnLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdm9sdW1lLmM6CglNb3ZlIGFsbCB0aGUgb2xkIGNvbmZpZyBjb252ZXJzaW9uIGNvZGUgdG8gYSBuZXcgb2xkY29uZmlnLmMgZmlsZSwgYW5kCglnZXQgcmlkIG9mIG1pc2MvcmVnaXN0cnkuYyBhbmQgdGhlIG1pc2MgZGlyZWN0b3J5LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvZ2RpL3BhbGV0dGUuYywKCSAgZGxscy9tc2h0bWwvbWFpbi5jLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3VzZXIvbWlzYy5jLAoJICBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHdlYWsgdGhlIEFQSSBkb2N1bWVudGF0aW9uIHRvIHNpbGVuY2Ugd2luYXBpX2NoZWNrIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCVByb3Blcmx5IHN1cHBvcnQgb3V0LW9mLXRyZWUgYnVpbGRzIChiYXNlZCBvbiBwYXRjaCBieSBQYXVsIE1pbGxhcikuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgYW4gZXJyb3IgaW4gbXkgcHJldmlvdXMgY29tbWl0IHdoaWNoIGNhdXNlZCBhbiBpbmZpbml0ZSBsb29wIGluCglJRTYgaW5zdGFsbGVyLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9kb2N1bWVudGF0aW9uLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUcnkgdG8gY2xhcmlmeSB0aGUgJ25vIHRyYW5zbGF0aW9uIGRlZmluZWQnIGVycm9yLgoJUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KCgkqIGRsbHMvbXNpL3Rlc3RzL3N1bWluZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBNc2lTdW1tYXJ5SW5mb0dldFByb3BlcnR5IHJlYWRpbmcgYW4gZW1wdHkgcHJvcGVydHkuCgoJKiBkbGxzL21zaS9zdW1pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBsb2FkaW5nIG9mIHRoZSBzdW1tYXJ5IGluZm9ybWF0aW9uLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYywgdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbiwgdG9vbHMvd2luZXdyYXBwZXI6CglSZXBsYWNlIHRoZSB3aW5lcHJlZml4Y3JlYXRlIC0tdXBkYXRlIG9wdGlvbiBieSBhIC0td2FpdCBvcHRpb24sIGFuZAoJbWFrZSB0aGUgbm9uLXdhaXQgYmVoYXZpb3IgdGhlIGRlZmF1bHQuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFsbG93IG5lc3RlZCBoYXJkd2FyZSBtZXNzYWdlIHByb2Nlc3NpbmcgYnkgc3RvcmluZyBhIHVuaXF1ZSBpZCBpbgoJZXZlcnkgbWVzc2FnZSBhbmQgdXNpbmcgaXQgdG8gbWFuYWdlIHRoZSBjdXJyZW50IHF1ZXVlIHBvc2l0aW9uLgoJQmV0dGVyIGZpbHRlcmluZyBvZiBoYXJkd2FyZSBtZXNzYWdlcyB0byBhdm9pZCByZXR1cm5pbmcgbWVzc2FnZXMgdGhhdAoJaGF2ZSBubyBjaGFuY2UgdG8gbWF0Y2ggdGhlIGZpbHRlci4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJTG9hZCBzeXN0ZW0ucmVnIGFuZCB1c2VyZGVmLnJlZyBhdCBzZXJ2ZXIgaW5pdCB0aW1lLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmMsIGRsbHMveDExZHJ2L2JydXNoLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglEaXRoZXIgc29saWQgY29sb3VycyBvbiBtb25vY2hyb21lIGJpdG1hcHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2V2bnRyYWNlLmgsIGluY2x1ZGUvd21pc3RyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBldm50cmFjZS5oIGFuZCB3bWlzdHIuaC4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgTFBDR1VJRC4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHdpbjMyLmFwaSB0byBtYXRjaCB0aGUgY3VycmVudCBzb3VyY2UuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglNaXNjIHJlY3RhbmdsZSBmaXhlcy4KCVRoZSBkYXRlIHNob3VsZCBiZSBpbml0aWFsaXplZCBmcm9tIGxvY2FsIHRpbWUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggY29tcGlsYXRpb24gcHJvYmxlbSBjYXVzZWQgYnkgVUxPTkdfTUFYLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9yZWdpc3RyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBQdWJsaXNoIENvbXBvbmVudHMgaW4gb3JkZXIgZm9yIE1zaUdldFF1YWxpZmllZENvbXBvbmVudAoJYXBpcyB0byB3b3JrLiBBbHNvIGltcGxlbWVudCBNc2lHZXRRdWFsaWZpZWRDb21wb25lbnQsIG9yIGF0IGxlYXN0IHNvbWUKCW9mIHRoZSBmdW5jdGlvbmFsaXR5IGFzIGl0IGlzIHN1cHBvc2VkIHRvIGluc3RhbGwgc3R1ZmYgaWYgaXQgaXMKCWFic2VudCwgd2hpY2ggaXQgZG9lcyBub3QgZG8geWV0LgoKMjAwNS0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA1MDQxOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuYywgZGxscy93dHNhcGkzMi93dHNhcGkzMi5zcGVjLAoJICBpbmNsdWRlL3d0c2FwaTMyLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV1RTRnJlZU1lbW9yeSBzdHViLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVNldCB0aGUgYmFja3VwL3Jlc3RvcmUgcHJpdmlsZWdlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglFeGNsdWRlIGNyYXNoaW5nIENyZWF0ZUZpbGVXIHRlc3Qgb24gTlQ0LgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL21hcHBpbmcuYzoKCUNsZWFuZWQgdXAgaGFuZGxpbmcgb2YgNjQtYml0IGZpbGUgc2l6ZXMuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglGaXggU0VHVnMgaW4gTnRDcmVhdGVTZWN0aW9uIGFuZCBOdE1hcFZpZXdPZlNlY3Rpb24uCgoJKiBkbGxzL2FkdnBhY2svcmVnLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJUHJldmVudCBTRUdWIGluIFJlZ0luc3RhbGwgd2hlbiBwc3RUYWJsZSBpcyBOVUxMLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQ29ycmVjdCB0ZXN0IG9mIEJPT0wgcmV0dXJuIHZhbHVlIGluIENvbnRyb2xTZXJ2aWNlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbW92ZSB0d28gdW5uZWNlc3NhcnkgdHJhY2VzLgoJQnJlYWsgdXAgb25lIHRlc3QgaW50byB0d28uCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdHdhaW4vdHdhaW4uaCwgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwKCSAgaW5jbHVkZS9jdXN0Y250bC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglGaXggU0VHViBmb3Igbm9uLWZ1bGx5LXF1YWxpZmllZCBkZXN0aW5hdGlvbiBwYXRocy4KCURvbid0IGZhaWwgU2hGaWxlT3BlcmF0aW9uVyBpZiBGT0ZfQUxMT1dVTkRPIGlzIHBhc3NlZC4KCgkqIGRsbHMvbXNpL3Rlc3RzL2RiLmMsIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxsaW5rLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURQU0VUX1JFTU9URSBpcyAwIHNvIHdlIGNhbm5vdCBkbyAoZmxhZ3MgJiBEUFNFVF9SRU1PVEUpLiBJbnN0ZWFkCgljaGVjayB0aGF0IHRoZSBEUFNFVF9MT0NBTCBmbGFnIGlzIG5vdCBzZXQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTQlNQX0FCU09MVVRFIGlzIDAgc28gd2UgY2Fubm90IGRvICh3RmxhZ3MgJiBTQlNQX0FCU09MVVRFKS4KCUFkZCBDT01ETEczMl9EdW1wU0JTUEZsYWdzKCkuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkZXYtb3RoZXJkZWJ1Zy5zZ21sOgoJQWFyb24gQXJ2ZXkgPGFhcnZleUBjcy5obWMuZWR1PgoJQWRkZWQgc2VjdGlvbiAiV2hpY2ggY29kZSBoYXMgYmVlbiB0ZXN0ZWQ/IiBkZXNjcmliaW5nIGdjb3YgdXNhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIFJlZ1VuTG9hZEtleSB0ZXN0LgoKCSogZGxscy91c2VyL21lbnUuYzogSm9zZSBBbG9uc28gPGFsb25zb0Blc3RhZGFvLmNvbS5icj4KCUNoYW5nZSB0aGUgb3JkZXIgb2YgRGlzcGF0Y2hNZXNzYWdlIGFuZCBtZXNzYWdlIHJlbW92YWwuCgoyMDA1LTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2lkbC93aWRsLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFsd2F5cyBpbml0aWFsaXplIGhlYWRlciBmaWxlIG5hbWUsIHRvIHByZXZlbnQgIiNpbmNsdWRlIChudWxsKSIKCXN0YXRlbWVudHMgaW4gZ2VuZXJhdGVkIGZpbGVzLgoKCSogdG9vbHMvd2luZS5pbmY6IEJlbmphbWluIEN1dGxlciA8Y3V0bGVyQGNzLmNvbG9zdGF0ZS5lZHU+CglBZGQgZGVmYXVsdCByZWdpc3RyeSBlbnRyaWVzIGZvciBwb3dlciBtYW5hZ2VtZW50LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvcGllZCB0aGUgYXRvbSB0ZXN0cyBmb3IgZ2xvYmFsIGF0b20gc28gdGhhdCB3ZSBjYW4gdGVzdCBsb2NhbCBhdG9tcwoJdG9vLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6CglSZW1vdmVkIHVudXNlZCBkYXRhIGZpZWxkcyBpbiB0aGUgTEFOR19GSU5EX0RBVEEgc3RydWN0dXJlLgoKCSogZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZjoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCB0aGUgbm8gbG9uZ2VyIHVzZXIgQVBDX0FTWU5DIGtpbmQgb2YgQVBDLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRml4IGFkZHJlc3NpbmcgdGhlIG1hZ2ljIEdESU9CSkhEUiBmaWVsZCBpbgoJU1lTQ09MT1JfTWFrZU9iamVjdFN5c3RlbS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglFbGltaW5hdGUgc3RybmNweS4gQ29ycmVjdCBhIFwwIGFzc2luZ21lbnQgdG8gdGhlIG1vZHN0ciB2YXJpYWJsZS4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJUmVtb3ZlIDIgaWRlbnRpY2FscyBjYWxscyB0byBzdHJsZW5XLgoKCSogZGxscy9kbWxvYWRlci9jb250YWluZXIuYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVN0cm5jcHkgZWxpbWluYXRpb24uCgoJKiBkbGxzL2RiZ2hlbHAvdHlwZS5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJRWxpbWluYXRlIHN0cm5jcHkgYW5kIGNvcnJlY3Qgc29tZSBOYW1lTGVuIGJ1Z3MuCgoJKiBkbGxzL2RiZ2hlbHAvbW9kdWxlLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglFbGltaW5hdGlvbiBvZiBsc3RyY3B5biwgYW5kIGNvcnJlY3RlZCBhIHBvdGVudGlhbCBwb2ludGVyIGJ1Zy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglFbGltaW5hdGUgYSBzdHJuY3B5IGFuZCByZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG1vdmVkIG5hbWVkIHBpcGUgY3JlYXRpb24gdG8gbnRkbGwKCS0gc2VydmVyIG5vdyBoYW5kbGVzIHRoZSBuYW1lZCBwaXBlIGZsYWdzIGFzIHRoZSBOVERMTCB2YWx1ZXMgKG5vdCB0aGUKCSAgS0VSTkVMMzIgb25lcykKCS0gbmFtZWQgcGlwZXMgaW4gc2VydmVyIG5vdyB1c2UgdGhlIGFzeW5jIElPIG1lY2hhbmlzbSBmb3IKCSAgY29ubmVjdC93YWl0IG9wcwoKCSogZGxscy9kaW5wdXQvZGF0YV9mb3JtYXRzLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBrZXlib2FyZCBkYXRhIGZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYywgZGxscy9kbWJhbmQvYmFuZC5jLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2dkaS9mb250LmMsCgkgIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvaXRzcy9jaG1fbGliLmMsIGRsbHMvbXNpL2NvbmQueSwKCSAgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2aWRlby9tY2l3bmQuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL29sZWRsZy9pbnNvYmpkbGcuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy91c2VyL2VkaXQuYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLAoJICB0b29scy9zZm50MmZudC5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbWNweSBvciBsc3RyY3B5bi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglEb24ndCByZWRyYXcgaWYgbm8gaW5mb3JtYXRpb24gaGFzIGNoYW5nZWQuCglGaXhlZCBlbmRsZXNzIHJlZHJhdyBsb29wIGlmIGFwcCB1c2luZyBjYWxsYmFjayBmb3IgaW1hZ2VzIGFuZC9vcgoJdGV4dC4KCUtlZXAgY29sb3IgY2hhbmdlcyBtYWRlIGJ5IGFwcCBmb3IgdGhlIGN1cnJlbnQgZHJhdyBjeWNsZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgcHJvcGVyIGRlZmluaXRpb24gZm9yIFBSSU5URExHRVhbQVddIHN0cnVjdHVyZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmgsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LnJjOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglFbmZvcmNlIHZhbGlkIHRhZyBzeW50YXggZHVyaW5nIGlucHV0LgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHNpZ25lZCAvIHVuc2lnbmVkIHBvaW50ZXIgY2FzdHMuCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWw6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gVXNpbmcgdW5pZm9ybSBEb2NCb29rIHRhZ3MgZm9yIERMTHMsIGNvbW1hbmRzLCBlbnZpcm9ubWVudCB2YXJzLi4uCgktIE1vdmVkIGRldGFpbGVkIG1lbW9yeSBtYW5hZ2VtZW50IGZyb20gYXJjaGkgdG8ga2VybmVsKHMpIHBhcnQuCgktIEVuaGFuY2VkIHByb2Nlc3MgaGFuZGxpbmcgZGVzY3JpcHRpb24uCgktIEFkZGVkIHNlY3Rpb24gYWJvdXQgMTYgYml0IHByb2Nlc3Nlcycgc3VwcG9ydC4KCS0gQWRkZWQgc2VjdGlvbiBhYm91dCBET1Mgc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNaW5vciBjbGVhbnVwcy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRmFpbCBncmFjZWZ1bGx5IG9uIHBlcm1pc3Npb24gZGVuaWVkLgoKCSogZGxscy9udGRsbC9udC5jOiBCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJQWRkIHNlbWktc3R1YiBmb3IgTnRQb3dlckluZm9ybWF0aW9uKFN5c3RlbVBvd2VyQ2FwYWJpbGl0aWVzLCAuLi4pLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVGhlIGRhdGV0aW1lIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIGxvY2FsIHRpbWUuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjLCBpbmNsdWRlL2FkdnB1Yi5oOgoJU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglBZGRlZCBzdHVicyBmb3IgUnVuU2V0dXBDb21tYW5kIGFuZCBEZWxOb2RlLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29ycmVjdG5lc3MgZm9yIGNvbnN0IHBvaW50ZXIgY2FzdHMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lZWRlZCBjYXN0cy4KCjIwMDUtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIGFuZCBkZWZpbmUgYSBzdHViIGZvciBOdFNpZ25hbEFuZFdhaXRGb3JTaW5nbGVPYmplY3QuCgoJKiBkbGxzL2dkaS9nZGkxNi5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglDcmVhdGVCaXRtYXAxNiBzaG91bGQgdXNlIG9ubHkgdGhlIGZpcnN0IGJ5dGUgb2YgcGxhbmVzICYgYnBwLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlZ0RlbGV0ZUtleSBmYWlscyBpZiB0aGUgbHBTdWJLZXkgcGFyYW0gaXMgTlVMTC4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9wYXJhLmMsIGRsbHMvcmljaGVkMjAvcnVuLmMsCgkgIGRsbHMvcmljaGVkMjAvc3R5bGUuYywgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gcmVtb3ZlZCB0cmFpbGluZyBzcGFjZXMgZnJvbSBzb21lIGZpbGVzCgktIHRhYiBzdXBwb3J0CgktIGluZGVudCBzdXBwb3J0CgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgc3VwcG9ydCBmb3IgZGlyZWN0IGtleWJvYXJkIGlucHV0IHRvIG51bWVyaWMgZmllbGRzLgoKCSogZGxscy9oaGN0cmwub2N4L2hoY3RybC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CgktIEFkZCB0ZXh0IGR1bXBpbmcgb2YgdGhlIHJlcXVlc3RlZCBjb21tYW5kLgoJLSBNYWtlIHRoZSBzdHViIG1lc3NhZ2UgYXBwZWFyIGZvciBtb3JlIGNvbW1hbmRzLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUJlbmphbWluIEN1dGxlciA8Y3V0bGVyQGNzLmNvbG9zdGF0ZS5lZHU+CgktIENvcnJlY3QgYXJncyBmb3IgTnRQb3dlckluZm9ybWF0aW9uLgoJLSBBZGQgc3R1YiBmb3IgTnRJbml0aWF0ZVBvd2VyQWN0aW9uLgoKMjAwNS0wNC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzogQWFyb24gQXJ2ZXkgPGFhcnZleUBjcy5obWMuZWR1PgoJQWRkZWQgX19iYl9pbml0X2Z1bmMgZm9yIGxpbmtpbmcgcHVycG9zZXMuCgoJKiBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsCgkgIGRsbHMvbXNodG1sL29sZW9iai5jLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBNb3JlIGltcGxlbWVudGF0aW9uIG9mIHZpZXcKCS0gQWRkZWQgSU9sZUluUGxhY2VBY3RpdmVPYmplY3QKCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRVJST1JfUFJJVklMRUdFX05PVF9IRUxEIGNhbiBiZSByZXR1cm5lZCBmb3IgTlQ0LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglXaW45OCBjYW4gcmV0dXJuIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVELgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmM6CglCcmlhbiBWaW5jZW50IDx2aW5uQHRoZXNoZWxsLmNvbT4KCUFkZCBzdHViIGZvciBEQ0lDcmVhdGVQcmltYXJ5LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB3ZSdyZSBoaWRpbmcgZmlsZSBleHRlbnNpb25zIHRoZW4gU2V0TmFtZU9mIHNob3VsZCBhcHBlbmQgdGhlCglvcmlnaW5hbCBleHRlbnNpb24gaWYgU0hHRE5fRk9SUEFSU0lORyBpc24ndCBzZXQuCglUaGUgZmxhZ3MgcGFzc2VkIHRvIFNldE5hbWVPZiByZWZlciB0byB0aGUgZHN0IHN0cmluZyBub3QgdGhlIHNyYwoJcGlkbC4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJWmVybyBvdXQgYW4gaW52YWxpZGF0ZWQgcnVubmluZ09iamVjdFRhYmxlSW5zdGFuY2UgcG9pbnRlci4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1lbnRpb24gdGhlICdlbWYnIGFuZCAnbG5rJyBtb2RlcyBpbiB0aGUgdXNhZ2Ugc3VtbWFyeS4KCUFkZCAtPyBhbmQgLS1oZWxwIHN5bm9ueW1zIGZvciAtaCBhcyBpcyBjdXN0b21hcnkuCglwdXRzKCIiKSBhbHJlYWR5IHByaW50cyBhICdcbicgc28gd2UgZG9uJ3QgbmVlZCBhIHNlY29uZCBvbmUuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgd2luZW1lbnVidWlsZGVyIGlzIGdpdmVuIGEgbGlzdCBvZiBtZW51cyB0byByZWNyZWF0ZSwgaXQgc2hvdWxkIG5vdAoJZ2l2ZSB1cCBvbiB0aGUgZmlyc3QgbWVudSB0aGF0IGZhaWxzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJSG91ciAnMCcgY29ycmVzcG9uZHMgdG8gMTJBTS4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglTdGFydCBvZiB1bml0IHRlc3RzIGZvciAqSW5mbyogZnVuY3Rpb25zLgoJQ2hlY2sgbmVlZGVkIGxlbmd0aCByZWdhcmRsZXNzIG9mIGdpdmVuIGxlbmd0aC4KCVJldHVybiBTVEFUVVNfSU5WQUxJRF9JTkZPX0NMQVNTIGZvciBub24taW1wbGVtZW50ZWQgY2xhc3Nlcy4KCVJldHVybiBTVEFUVVNfQUNDRVNTX1ZJT0xBVElPTiBpZiBubyBidWZmZXIgZ2l2ZW4uCgoJKiBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTaW1wbGUgdW5pdCB0ZXN0cyBmb3IgR2RpSXMqREMgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93dHNhcGkzMi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtb3JlIFdpbmRvd3MgVGVybWluYWwgU2VydmVyIEFQSSBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpZGwvY2xpZW50LmMsIHRvb2xzL3dpZGwvc2VydmVyLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQdXQgc3BhY2UgYmV0d2VlbiBpbmNsdWRlIGRpcmVjdGl2ZSBhbmQgaW5jbHVkZSBmaWxlLgoKCSogdG9vbHMvd2lkbC93aWRsLm1hbjogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIHByb3h5L3N0dWIgb3B0aW9ucyB0byB3aWRsIG1hbiBwYWdlLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0Z19wcm9wLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBGbXRJZFRvUHJvcFN0Z05hbWUgJiBQcm9wU3RnTmFtZVRvRm10SWQsIHdpdGggdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IFRCX0dFVEJVVFRPTlNJWkUgdG8gcmV0dXJuIHRoZSBjb3JyZWN0IHdpZHRoL2hlaWdodCBmb3Igbm8KCWJ1dHRvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVXNlIFNldFdpbmRvd1BvcyB0byBtb3ZlIHRoZSBidWRkeSB3aW5kb3cgaW50byBwb3NpdGlvbiBpbnN0ZWFkIG9mCgkgIGRlc3Ryb3lpbmcgaXQgYW5kIHJlY3JlYXRpbmcgaXQgYXQgdGhlIG5ldyBwb3NpdGlvbi4KCS0gQ2xlYXIgdGhlIGJhY2tncm91bmQgaW4gV01fVlNDUk9MTCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoCgkgIGFudGlhbGlhc2VkIHRleHQgZHJhd2luZyBvbiB0b3Agb2YgaXRzZWxmIG11bHRpcGxlIHRpbWVzLgoKCSogaW5jbHVkZS93aW5nZGkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3RvdHlwZXMgZm9yIHNvbWUgR2RpKiBmdW5jdGlvbnMuCgoyMDA1LTA0LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUtlZXAgdHJhY2sgb2YgV1NfRElTQUJMRUQgZXhwbGljaXRlbHksIGFzIGl0IGRvZXNuJ3QgZ2VuZXJhdGUgYQoJV01fU1RZTEVDSEFOR0VEIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgTFZOX09EU1RBVEVDSEFOR0VELgoJTWlub3IgdHlwbyBmaXhlcy4KCgkqIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgR2RpSXMqREMgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL21lbnUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGEgbWVudSBwcm9ibGVtIEkgZm91bmQuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZWNhbGN1bGF0ZSB0aGUgbWVudSBvbiBjYWxsaW5nIE1vZGlmeU1lbnUgc28gdGhhdCB0aGUgbWVudSBpdGVtcyBhcmUKCXNob3duIGF0IHRoZSBjb3JyZWN0IHdpZHRoLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVNlbmQgbm90aWZpZXMgYWZ0ZXIgaW52YWxpZGF0aW5nIGNoYW5nZWQgYXJlYXMuCglEb24ndCB1c2UgY3VzdG9tIGRyYXcgcmV0dXJuZWQgY29sb3JzIGZvciBjb250cm9sLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jOiBGaXhlZCBhIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSW4gWDExRFJWX0RJQl9TZXRJbWFnZUJpdHMgYXZvaWQgQmFkTWF0Y2ggZXJyb3JzIHdoZW4gY2FsbGluZwoJWEdldFN1YkltYWdlLgoKCSogZGxscy94MTFkcnYvb3BlbmdsLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJSW5jbHVkZSBYbWQuaCBpbiB4MTFkcnYuaCB3aXRoIHRoZSBwcm9wZXIgZGVmaW5lcyB0byBtYWtlIGl0IHdvcmssIGFuZAoJcmVtb3ZlIHJlbGF0ZWQgaGFja3MgaW4gdmFyaW91cyBDIGZpbGVzLgoKCSogZGxscy9tc3ZjcnQvd2NzLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglGaXggZGVjb2RpbmcgcHJpbnRmIGZvcm1hdCBpbiBjYXNlIHRoZSBmaWVsZCB3aWR0aCBzcGVjaWZpZXIgaXMgYSAnKicuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IE1pY2hhZWwgTGluIDxtbGluQGNvcnZ1LmNvbS5hdT4KCUNoYW5nZSBtZW51IGl0ZW0gb3B0aW9ucyB0byB1c2Ugb3B0aW9uYWwgY29tbWEuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogTWljaGFlbCBMaW4gPG1saW5AY29ydnUuY29tLmF1PgoJRGVmaW5lIFdJTlVTRVJBUEkuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGluIF9jb3B5X2FyZy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJQmV0dGVyIGhhbmRsaW5nIG9mIGhJbnRlcm5ldCA9PSBOVUxMIGZvciBJTlRFUk5FVF9PUFRJT05fUFJPWFkgaW4KCUlORVRfUXVlcnlPcHRpb25IZWxwZXIuIE1TRE4gc2F5cyB0byByZXR1cm4gJ2dsb2JhbCBwcm94eSBpbmZvJyB3aGVuCgloSW50ZXJuZXQgPT0gTlVMTC4gVGhhbmtzIHRvIEp1YW4gTGFuZyBmb3IgaGVscGluZyB3aXRoIHRoaXMuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglNb25kYXkgaXMgZGF5IG51bWJlciAnMScuCglTZXQgZGF5IG9mIHdlZWsgd2hlbiBhIGRheSBpcyBzZWxlY3RlZCBpbiB0aGUgY2FsZW5kZXIuCglVc2UgZml4ZWQgd2lkdGggZmllbGRzIGluIGRhdGV0aW1lLgoJRFRTX1RJTUVGT1JNQVQgaXMgYSB0d28gYml0IGZpZWxkLCBzbyB0ZXN0IGFjY29yZGluZ2x5LgoJUmVwb3NpdGlvbiBhbmQgcmVzaXplIHRoZSB1cGRvd24gY29udHJvbCB3aGVuIHRoZSBkYXRldGltZSBjb250cm9sIGlzCglyZXNpemVkLgoJUmVzcG9uZCB0byB1cGRvd24gaW5wdXRzLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbW9yZSBpbXBsZW1lbnRhdGlvbiBvZiBJRG9jdW1lbnRWaWV3LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvaGV4ZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIG5ldXRyYWwgRW5nbGlzaCByZXNvdXJjZXMuCgktIEFkZCBhIGNvbnRyb2wgZm9yIGVkaXRpbmcgYmluYXJ5IGRhdGEuCgktIEFkZCBhIGJpbmFyeSB2YWx1ZSBlZGl0b3IgZGlhbG9nLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIEFsbG9jQ29uc29sZSgpIHBhc3MgdGhlIHdTaG93V2luZG93IHZhbHVlIGFuZCBTVEFSVEZfVVNFU0hPV1dJTkRPVwoJZmxhZyBmcm9tIHRoZSBjYWxsaW5nIHByb2Nlc3MgdG8gdGhlIGNvbnNvbGUgcHJvY2Vzcy4gTWFrZSB3aW5lY29uc29sZQoJdXNlIHRoZSBDbWRTaG93IHBhcmFtZXRlciBpbiB0aGUgU2hvd1dpbmRvdyBjYWxsLgoKMjAwNS0wNC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdWl0b29scy5jLAoJICBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3Mvc3lzY29sb3IuYzoKCU1vdmVkIGhhbmRsaW5nIG9mIHRoZSA1NUFBIHBhdHRlcm4gYnJ1c2ggdG8gc3lzY29sb3IuYyBzbyB0aGF0IGl0IGNhbgoJYmUgbWFkZSBhIHN5c3RlbSBvYmplY3QgKGZvdW5kIGJ5IFJlaW4gS2xhemVzKS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJQ2hlY2sgZm9yIGFuIGludmFsaWQgaEludGVybmV0IGhhbmRsZSBpbiBJTkVUX1F1ZXJ5T3B0aW9uSGVscGVyIGZvcgoJSU5URVJORVRfT1BUSU9OX1BST1hZIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHVzZSBpdC4KCgkqIGRsbHMvZ2RpL2JpdG1hcC5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS93aW5nLmMsCgkgIGluY2x1ZGUvZ2RpLmg6CglNb3ZlZCB0aGUgQklUTUFQT0JKIHN0cnVjdHVyZSB0byBnZGlfcHJpdmF0ZS5oLgoKCSogZGxscy94MTFkcnYveGltLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVRlcm1pbmF0ZSBYQ3JlYXRlSUMoKSBhcmd1bWVudCBsaXN0IHdpdGggTlVMTCBpbnN0ZWFkIG9mIGp1c3QgMC4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jOgoJVXNlIGFuIFggY29udGV4dCB0byBhc3NvY2lhdGUgdGhlIHBoeXMgYml0bWFwIGRhdGEgdG8gYSBiaXRtYXAgaGFuZGxlCglpbnN0ZWFkIG9mIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgYml0bWFwIHN0cnVjdHVyZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQgdGFrZXMgYSB1bmljb2RlIHN0cmluZyBub3cuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCS0gRml4IGxlZnRvdmVyIG5lZ2F0aXZlIHNpZ24gaW4gaGVpZ2h0IHBhcmFtZXRlciBmb3IgdHJhbnNwYXJlbnQKCSAgYml0bWFwLgoJLSBQcm9wZXJseSBhbm5vdW5jZSB3aGV0aGVyIGJpdG1hcCBpcyB0cmFuc3BhcmVudCBpbiBnZXRfQXR0cmlidXRlcy4KCS0gR0lGIHRyYW5zcGFyZW5jeSBpcyBub3cgcGFsZXR0ZS1pbmRleCBiYXNlZCwgaW5zdGVhZCBvZiBSR0IgYmFzZWQuCgktIEtlZXAgb3JpZ2luYWwgYml0bWFwIGFuZCBYT1IgbWFzayBzZXBhcmF0ZSwgc28gdGhhdCBnZXRfSGFuZGxlCgkgIHJldHVybnMgb3JpZ2luYWwgYml0bWFwLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IGNvbW1lbnRzIG9mIHNvbWUgZXhwb3J0IG9yZGluYWxzLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9vbGUzMi9vbGUyXzE2LmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgbmVlZCBmb3IgdGhlIG5vbi1zdGFuZGFyZCAoQ2xvc2V8RGVsZXRlKU1ldGFGaWxlMTYoKS4KCgkqIGRsbHMvZ2RpL2RpYi5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJTW92ZWQgdGhlIGRyaXZlci1pbmRlcGVuZGVudCBwYXJ0IG9mIENyZWF0ZURJQlNlY3Rpb24gaW50byBHREkuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaHRtbGRvYy5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9vbGVvYmouYywKCSAgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgSU9sZURvY3VtZW50VmlldyBpbnRlcmZhY2UuCgktIEFkZGVkIGltcGxlbWVudGF0aW9uIG9mIERvVmVyYiBhbmQgQ3JlYXRlVmlldy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQYXNzIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mIE5VTEwgdG8gUmVnRGVsZXRlS2V5IHRvIGRlbGV0ZSBoS2V5LgoKCSogd2luZG93cy9zcHkuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglEdW1wIHdob2xlIE5NSEVBREVSQSBub3RpZnkgc3RydWN0dXJlIGZvciBUcmVlVmlld3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLWRldmVsQGtpZXZpbmZvLmNvbT4KCURyYXcgb25seSB2aXNpYmxlIHRhYnMuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGdWxseSBpbXBsZW1lbnQgV0FWRURFVklDRU1BUFBJTkcgcHJvcGVydHkgc2V0LgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSB1bmljb2RlIHBpZGwgdHlwZS4KCUltcHJvdmUgc3VwcG9ydCBmb3IgUFRfWUFHVUlELgoJSW1wcm92ZSBJU2hlbGxMaW5rIGRlYnVnZ2luZy4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglTdG9yZSBESUIgc2VjdGlvbiBpbmZvcm1hdGlvbiBkaXJlY3RseSBpbiB0aGUgcGh5cyBiaXRtYXAgc3RydWN0dXJlCglhbmQgZ2V0IHJpZCBvZiB0aGUgWDExRFJWX0RJQlNFQ1RJT04gc3RydWN0dXJlLgoJR2V0IHJpZCBvZiB0aGUgdW51c2VkIEF1eE1vZCBESUIgc3RhdGUuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlIGNvcnJlY3QgbW92dyBpbnN0ZWFkIG9mIG1vdmwgd2hlbiBoYW5kbGluZyBzZWdtZW50IHJlZ2lzdGVycy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgUHJvcFN5c3tBbGxvY3xGcmVlfVN0cmluZywgYW5kIHN1cHBvcnQgQlNUUnMgaW4KCVByb3BWYXJpYW50e0NsZWFyfENvcHl9IHVzaW5nIHRoZW0uCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglNYWtlIFJURiByZWFkZXIgZmFsbCBiYWNrIHRvIHNpbXBsZSB0ZXh0IGlmIGEgY29ycmVjdCBSVEYgaGVhZGVyIGlzCglub3QgZGV0ZWN0ZWQuIFRoaXMgc2hvdWxkIGZpeCBzb21lIGluc3RhbGxlcnMuCgoJKiBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsIGluY2x1ZGUvc2hsZ3VpZC5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVnaXN0ZXIgU2hlbGwgRHJhZyBhbmQgRHJvcCBIZWxwZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Tdi5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJQW5kcmVhcyBCamVya2Vob2x0IDxoYXJ0ZWV4QGdtYWlsLmNvbT4KCVN3ZWRpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgQ3JlYXRlUHJvY2Vzc0FzVXNlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCB0aGUgVW5peEZvbGRlcidzIElTaGVsbEZvbGRlcjI6OkNvbXBhcmVJRHMgbWV0aG9kLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJSW1wbGVtZW50ZWQgVmFySWRpdi4KCgkqIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBzY2FsaW5nIHdoZW4gY29udmVydGluZyBNRiAtPiBFTUYuCgktIFRlc3RzIGZvciBjb252ZXJzaW9ucyAoYWx0aG91Z2ggbm90IGZvciB0aGUgYWJvdmUgYnVnKS4KCjIwMDUtMDQtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBpY29uIGhhbmRsaW5nIGZvciBzb21lIHNwZWNpYWwgZm9sZGVycy4KCUlkZW50aWZ5IGFuZCBhZGQgZGVmaW5lcyBmb3IgYSBidW5jaCBvZiBzaGVsbCBpY29ucy4KCgkqIGRsbHMveDExZHJ2L2JpdGJsdC5jLCBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVN0b3JlIGEgcG9pbnRlciB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHBoeXMgYml0bWFwIGluIHRoZSBkZXZpY2UKCXN0cnVjdHVyZS4gQ3JlYXRlIGEgcGh5cyBiaXRtYXAgZm9yIHRoZSBkZWZhdWx0IHN0b2NrIGJpdG1hcCB0b28uCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZGVkIHR5cGVkZWYgZm9yIERFVklDRV9QT1dFUl9TVEFURS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBlbm91Z2ggb2YgSVNoZWxsRm9sZGVyMiB0byBtYWtlIFVuaXhGb2xkZXIgd29yayB3aXRoaW4gdGhlCglvcGVuL3NhdmUtZGlhbG9ncy4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvb2xlb2JqLmMsCgkgIGRsbHMvbXNodG1sL3BlcnNpc3QuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIElPbGVPYmplY3QgYW5kIElPbGVEb2N1bWVudC4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglTdG9yZSB0aGUgYml0bWFwIGhhbmRsZSBpbiB0aGUgcGh5cyBiaXRtYXAgc3RydWN0dXJlLCBhbmQgYXZvaWQgYSBmZXcKCW1vcmUgR0RJX0dldE9ialB0ciBjYWxscy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiBJQ29tbURsZ0Jyb3dzZXJfT25EZWZhdWx0Q29tbWFuZCByZXR1cm5zIGFueXRoaW5nIG90aGVyIHRoYW4gU19PSwoJdGhlbiB3ZSBzaG91bGQgY2FsbCB0aGUgZGVmYXVsdCBoYW5kbGVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglVc2UgRVNfQVVUT0hTQ1JPTEwgZm9yIGVkaXQgYm94LgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IERhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJUmV0dXJuIERJU1BfRV9ESVZCWVpFUk8gaW5zdGVhZCBvZiBjcmFzaGluZyB3aGVuIGFza2VkIHRvIGRpdmlkZSBhCgl2YXJpYW50IGJ5IHplcm8uCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIFVuaWNvZGUgc3RyaW5nIHJlc3VsdCBmcm9tIEdldERpc3BsYXlOYW1lT2YgaWYgaXQgaXNuJ3QKCXJlcHJlc2VudGFibGUgdXNpbmcgQU5TSS4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglMb2cgbWlzc2luZyBlbnZpcm9ubWVudCB2YXJzIGZvciBlYXNpZXIgZGVidWdnaW5nLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVN0dWIgb3V0IERSVk1fTUFQUEVSX1JFQ09ORklHVVJFIHN1cHBvcnQuCgoyMDA1LTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JydXNoLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVN0b3JlIHRoZSBwaXhtYXAgZGVwdGggYW5kIHRoZSBESUJTRUNUSU9OIHBvaW50ZXIgaW4gdGhlIHBoeXMgYml0bWFwCglzdHJ1Y3R1cmUuIEF2b2lkIGEgZmV3IEdESV9HZXRPYmpQdHIgY2FsbHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBBZGQgbmV3IHBvd3Jwcm9mLmggaGVhZGVyLgoKCSogZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBhbiBlcnJvciBpbnN0ZWFkIG9mIGNyYXNoaW5nIGxhdGVyIG9uIGEgZGl2aWRlIGJ5IHplcm8KCWV4Y2VwdGlvbiB3aGVuIGFuIGFsaWdubWVudCBvZiAwIGlzIHNwZWNpZmllZC4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy9vbGUzMi90ZXN0cy9zdGdfcHJvcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBhZGQgd3JpdGUgc3VwcG9ydCB0byBJUHJvcGVydHlTdG9yYWdlLCB3aXRoIHRlc3RzCgktIG1pc2MuIGNsZWFudXBzIHRoZSB0ZXN0cyB0dXJuZWQgdXAKCgkqIGluY2x1ZGUvc2hvYmppZGwuaWRsOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbWlzc2luZyBTRkdBT18gZGVmaW5lcyBhbmQgZml4IFNGR0FPX0dIT1NURUQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEaXJlY3RvcnkgaXRlbXMgc2hvdWxkIGhhdmUgdGhlIFNGR09BX0ZJTEVTWVNBTkNFU1RPUiBhdHRyaWJ1dGUuCglBZGQgYSB0ZXN0IGZvciB0aGlzIGFuZCBjbGVhbnVwIHRoZSBzaGxmb2xkZXIgdGVzdCBhIGJpdC4KCgkqIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IHJlZmVyZW5jZSBjOlx3aW5kb3dzIGRpcmVjdGx5LgoKCSogdG9vbHMvd2luZS5pbmY6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlZ2lzdGVyIGNvbnRyb2xcY2xhc3Nce0dVSURfREVWSU5URVJGQUNFX1NFUkVOVU1fQlVTX0VOVU1FUkFUT1J9LgoKCSogaW5jbHVkZS9wb3dycHJvZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJQWRkZWQgZnVuY3Rpb24vZW51bS9zdHJ1Y3RzIGZvciBwb3dlciBtYW5hZ2VtZW50IEFQSS4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL3BlcnNpc3QuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglTdHViIGltcGxlbWVudGF0aW9uIG9kIElQZXJzaXN0LCBJUGVyc2lzdE1vbmlrZXIsIElQZXJzaXN0RmlsZSwKCUlNb25pa2VyUHJvcC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsIHNlcnZlci9tYWlsc2xvdC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBuZXh0IG1haWxzbG90IG1lc3NhZ2UgY29ycmVjdGx5LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIEEtPlcgdmVyc2lvbiBvZiBJbnRlcm5ldENyYWNrVVJMIHBhc3NlcyBjb3JyZWN0IGxlbmd0aCB2YWx1ZXMsCglhbmQgYXNzb2NpYXRlZCB0ZXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvZm9ybWF0LmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBdm9pZCB1c2luZyB2ZXIuaCBpbiBmYXZvciBvZiB3aW52ZXIuaC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0Lmg6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCVVzZSB0aGUgc2FtZSBtYXhpbXVtIGxlbmd0aCBmb3IgdGFncyBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGFuZAoJdGFncyBlbnRlcmVkIGluIHRoZSBHVUkuCgoJKiBkbGxzL29sZTMyL2RpY3Rpb25hcnkuYywgZGxscy9vbGUzMi9kaWN0aW9uYXJ5LmgsCgkgIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy9vbGUzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL3Rlc3RzL3N0Z19wcm9wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgdHJhY2VzLCBhZGQgdW5pdCB0ZXN0cyBmb3IgSVByb3BlcnR5U3RvcmFnZSwgYW5kIGZpeCB0aGUgcHJvYmxlbXMKCXRoZXkgY2F1Z2h0LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gc2V0IHNpemUgcmVxdWlyZWQgY29ycmVjdGx5IGZvciBhbGwgc3VwcG9ydGVkIG9wdGlvbnMKCS0gdGlkeSB1cCBhIGZldyBsaW5lcyBvZiBpbmRlbnRpbmcgaW4gSU5FVF9RdWVyeU9wdGlvbkhlbHBlcgoJLSBpbXBsZW1lbnQgcXVlcnlpbmcgSU5URVJORVRfT1BUSU9OX1BST1hZCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBNYXR0aGV3IE1hc3RyYWNjaSA8bWF0dEBhY2xhcm8uY29tPgoJQ29ycmVjdGx5IGxvY2sgYW5kIHVubG9jayBzdXJmYWNlIGZvciBhIHNpbmdsZS1zdXJmYWNlIEJsdCgpIGFuZAoJQmx0RmFzdCgpIGNhbGwuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IEdldE5hbWVkU2VjdXJpdHlJbmZvLgoKCSogZGxscy94MTFkcnYvZGliLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglGaXggWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfUkxFKDR8OCkgd2hlbiBhbiBub24temVybyB4LW9mZnNldAoJKGFyZ3VtZW50IGxlZnQpIGlzIHNwZWNpZmllZC4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBnbWFpbC5jb20+CglTeW5jIHRvIHRoZSBsYXRlc3Qgb3BlbmdsIHNwZWNzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCUFkZGVkIG1vdXNld2hlZWwgc3VwcG9ydC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcmVnLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglGbGFncyBzaG91bGQgYmUgb3ItZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGFiIHVuaWNvZGlmaWNhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vbnRoQ2FsIHVuaWNvZGlmaWNhdGlvbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgbWFpbHNsb3Qgc2V0IGFuZCBxdWVyeSBpbmZvIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBpY29uIHJlc291cmNlIGlkcyAobW9zdCB3ZXJlIG9mZiBieSBvbmUpLgoJRml4IElFeHRyYWN0SWNvbl97R2V0SWNvbkxvY2F0aW9uLEV4dHJhY3R9IHRvIHVzZSAtdmUgaWNvbiByZXNvdXJjZQoJaWRzIGFuZCBmaXggYnVncyByZWxhdGluZyB0byBjb25mdXNpb24gYmV0d2VlbiByZXNvdXJjZSBpZHMgYW5kIHRoZQoJc3lzdGVtIGltYWdlbGlzdCBpbmRpY2llcy4KCUV4dGVuZCB0aGUgc3lzdGVtIGltYWdlbGlzdCBpbml0aWFsaXphdGlvbiBoYWNrIHRvIGxvYWQgYm90aCArdmUgYW5kCgktdmUgcmVzb3VyY2UgaWRzLgoJQWRkIGEgcHJpbnRlciBpY29uICh0aGF0J2xsIGJlIHVzZWQgYnkgYW4gdXBjb21pbmcgcHJpbnRlciBmb2xkZXIKCXBhdGNoKS4KCgkqIGRsbHMvbXByL21wcl9Fcy5yYywgZGxscy9tc2kvbXNpX0VzLnJjLCBkbGxzL3NoZG9jdncvRXMucmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9Fcy5yYywKCSAgZGxscy93aW5tbS93aW5tbV9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglTcGFuaXNoIHRyYW5zbGF0aW9ucyB1cGRhdGVkLgoKCSogaW5jbHVkZS9vbGUyLmg6IE1pY2hhZWwgTGluIDxtbGluQGNvcnZ1LmNvbS5hdT4KCUFkZGVkIG1pc3NpbmcgT2xlRHJhdygpIGRlY2xhcmF0aW9uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTWFrZSBzdGF0aWMgc29tZSBmdW5jdGlvbnMgdXNlZCBvbmx5IGluIGEgc2luZ2xlIGZpbGUuCgoJKiBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglJbml0aWFsaXplIHByaW1hcnkgYnVmZmVyIG9uIG9wZW4uCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgaW5jbHVkZS9jZmdtZ3IzMi5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IFNldHVwRGlDbGFzc05hbWVGcm9tR3VpZEV4QS4KCgkqIGluY2x1ZGUvcHJvcGlkbC5pZGw6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGZldyBtaXNzaW5nIGRlY2xhcmF0aW9ucy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVJlbW92ZWQgaW5jbHVzaW9uIG9mIHByb2Nlc3MuaCAobm90IG5lZWRlZCBhbmQgYnJlYWtzIHdpdGggZ2NjNCkuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHViIGZvciBGYXVsdEluSUVGZWF0dXJlLgoKCSogaW5jbHVkZS93dHlwZXMuaWRsOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdUNMU1NQRUMsIENTUExBVEZPUk0gYW5kIFFVRVJZQ09OVEVYVCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9jb21jdGwzMi9zeXNsaW5rLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgY29kZSBhZ2FpbnN0IENvbWN0bDMyLmRsbCB2ZXJzaW9uIDYuMC4KCUhhbmRsZSBub3RpZmljYXRpb24gYW5kIHN0eWxlcyBhcyBpbiB0aGUgb3RoZXIgY29udHJvbHMuCglNYWludGFpbiB0aGUgY29uc3QgZm9yIHN0cmluZ3MgdGhyb3VnaG91dCBwYXJzaW5nLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSByZWZlcmVuY2UgdG8gbm9uZXhpc3RhbnQgc3RybWlmLmguCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFyIHN5c3RlbXRpbWUgc3RydWN0IHNvIHdlIGRvbid0IHJldHVybiBnYXJiYWdlIGluIHVuaW5pdGlhbGl6ZWQKCWZpZWxkcy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL0VuLnJjOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJRml4IGEgdHlwbyBpbiB1bmluc3RhbGxlcidzIGVuZ2xpc2ggYXBwbmFtZS4KCgkqIHRvb2xzL3dpbmUuaW5mOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJUnVuIG1zaSBmaWxlcyB3aXRoIG1zaWV4ZWMuCglDaGFuZ2UgQ29udHJvbCBQYW5lbFxEZXNrdG9wIHRvIGNvcnJlY3QgY2FzZS4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglGaXggYXJyYXkgaW5kZXggY3Jhc2ggaW4gYnVpZGxpbmcgR0RJIHBhbGV0dGUgZnJvbSBsb2dpY2FsIHBhbGV0dGUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuaCwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBjcnlwdCBmdW5jdGlvbnMgbW9yZSByb2J1c3QgaW4gY2FzZSBvZiBpbmNvcnJlY3QgYXBpIHVzYWdlLgoKCSogc2VydmVyL3dpbmRvdy5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBwb3RlbnRpYWwgcmVnaW9uIGxlYWsuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ3JlYXRlIHRoZSAnVGVzdCcgdmFsdWUgaW4gYSB0ZW1wb3Jhcnkgc3Via2V5IHRvIGF2b2lkIGNvbmZsaWN0cwoJYmV0d2VlbiB0ZXN0cy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBjcnlwdGRsbC8gYW5kIHN0ZG9sZTMyLnRsYi8uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGluY2x1ZGUvZHNvdW5kLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbW92ZSBub25zdGFuZGFyZCB0eXBlIExQTFBWT0lELgoKCSogZG9jdW1lbnRhdGlvbi9vbGUuc2dtbDogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJTW9yZSBub3RlcyBhYm91dCB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgRENPTS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ3JlYXRlIHRoZSBHTCB0ZXh0dXJlIGlkIGF0IHRleHR1cmUtYmluZGluZyB0aW1lLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CgktIEVNX0NBTlBBU1RFIGltcGxlbWVudGVkCgktIHVwZGF0ZWQgVE9ETyBsaXN0IChpbmNsdWRpbmcgbGlzdCBvZiAodW4paW1wbGVtZW50ZWQgbWVzc2FnZXMpCgktIGZpeGVkIFdNX1BBU1RFICh0aGUgcHJldmlvdXMgdmVyc2lvbiBtaWdodCBub3QgY2xvc2UgdGhlIGNsaXBib2FyZAoJICBpZiBpdCBkaWRuJ3QgY29udGFpbiBhIHVzYWJsZSBmb3JtYXQpCgktIHNjcm9sbGJhciBvcGVyYXRpb25zIChsaWtlIGNsaWNraW5nIG9uIGFycm93cykgc2hvdWxkIHVwZGF0ZQoJICBzY3JvbGxiYXIncyBjdXJyZW50IHBvc2l0aW9uCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggYSB0eXBvIGluIGEgY29tbWVudC4KCgkqIGRsbHMvZ2RpL21ldGFmaWxlLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIHRoZSBBUEkgZG9jcy4gRmV3IGluZGVudGF0aW9uL2Zvcm1hdHRpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZWQgcmVncmVzc2lvbiB0ZXN0IHRvIG1ha2Ugc3VyZSBwb3NpdGlvbiBpcyBjb3JyZWN0bHkgY2hlY2tlZAoJd2hlbiBhIGRpZmZlcmVudCB0eXBlIGlzIHJldHVybmVkLgoJQWRkZWQgSmVyZW15IFdoaXRlJ3MgV0FWRV9GT1JNQVRfRElSRUNUL1dBVkVfTUFQUEVSIGZpeC4KCUFkZGVkIHdhdmVJbkdldFBvc2l0aW9uIGNoZWNrcy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDb3JyZWN0bHkgaGFuZGxlIHdoZXJlIHdhdmVPdXRHZXRQb3NpdGlvbiBjaGFuZ2VzIHRpbWVwb3Mud1R5cGUKCWJlY2F1c2UgdGhlIHJlcXVlc3RlZCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuCglBZGRlZCBKZXJlbXkgV2hpdGUncyB3YXZlT3V0R2V0UG9zaXRpb24gZml4IHRvIHdhdmVJbkdldFBvc2l0aW9uLgoKCSogZGxscy9oaGN0cmwub2N4L2hoY3RybC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglPbmx5IGRvIHVuaWNvZGUgY29udmVyc2lvbiBpbiBIVE1MIEhlbHAgY29udHJvbCB3aGVuIGZpbGVuYW1lIGlzCglzcGVjaWZpZWQuCgoJKiBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgYW5kIGRpc3BsYXkgYml0bWFwcyBpbiB0aGUgZGlhbG9ncy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy9zY3JvbGwuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBTY3JvbGxXaW5kb3dFeCwgaWYgdGhlIHdpbmRvdyBhbHJlYWR5IGhhcyBhbiB1cGRhdGUgcmVnaW9uIHRoZW4gYWRkCgl0aGlzIHRvIGhyZ25VcGRhdGUuIFdpdGggYSBjb25mb3JtYW5jZSB0ZXN0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJU2lsZW5jZSBzb21lIHNpZ25lZG5lc3Mgd2FybmluZ3MuCgoyMDA1LTAzLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUludHJvZHVjZWQgYW4gWF9QSFlTQklUTUFQIHN0cnVjdHVyZSB0byBhbGxvdyBzdG9yaW5nIG1vcmUgeDExZHJ2CglpbmZvcm1hdGlvbiBhYm91dCBhIGJpdG1hcCB0aGFuIGp1c3QgdGhlIHBpeG1hcCBpZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLAoJICBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRml4IHNvbWUgaW5jb3JyZWN0IHVzZXMgb2YgdGhlIG9rIG1hY3JvIHdoZXJlIHRoZSByZXN1bHQgZGVwZW5kcyBvbgoJdGhlIGV2YWx1YXRpb24gb3JkZXIgb2YgaXRzIGFyZ3VtZW50cy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYW5kIHRlc3QgX2Noc2l6ZS4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUF2b2lkIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgQklUTUFQT0JKIHN0cnVjdHVyZS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVJlbW92ZWQgdGhlIG5vIGxvbmdlciBuZWVkZWQgWDExRFJWX2dldF9jbGllbnRfYXJlYV9vZmZzZXQgZnVuY3Rpb24uCgoJKiBkbGxzL3gxMWRydi9kY2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJUmV0dXJuIHRoZSBjb29yZGluYXRlcyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2V0dXAgdGhlIERDIHBhcmFtZXRlcnMKCWluIHRoZSBnZXRfdmlzaWJsZV9yZWdpb24gcmVxdWVzdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2xpZW50IHRvCgljb21wdXRlIGl0IGFnYWluLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUlmIFNjcm9sbFdpbmRvd0V4IGRvIG5vdCB1c2UgdGhlIERDWF9VU0VTVFlMRSB0byBnZXQgYSBEQy4gSW5zdGVhZAoJY2FsY3VsYXRlIERDWF9DTElQU0lCTElOR1MsIERDWF9QQVJFTlRDTElQIGFuZCBEQ1hfQ0xJUENISUxEUkVOLiBUaGUKCURDWF9DTElQQ0hJTERSRU4gaXMgbm90IHVzZWQgd2hlbiBTY3JvbGxXaW5kb3dFeCBpcyBjYWxsZWQgd2l0aCBhCglTV19TQ1JPTExDSElMRFJFTiBmbGFnLiBXaXRoIGEgY291cGxlIG9mIHJlZ3Jlc3Npb24gdGVzdHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0MTYuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUZpeCBhIGNvcHkmcGFzdGUgYnVnIGluIGdldF9idWZmZXJfcGUuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIGZvcndhcmQgZGVjbGFyYXRpb25zLCBtYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5yYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJQXNrIGZvciBhIHRhZyBpZiBvbmUgd2FzIG5vdCBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgoKCSogZGxscy9nZGkvY2xpcHBpbmcuYywgZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBEQyBtZXRhIHJlZ2lvbi4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIEhUTUxEb2N1bWVudDIgaW50ZXJmYWNlLgoKCSogZGxscy91c2VyL3Rlc3RzL3RleHQuYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCVVzZSB0ZXh0bGVuIGluc3RlYWQgb2YgbGVuLgoJVXNlIHRleHRoZWlnaHQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBEcmF3VGV4dEEuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCBHZXRGaWxlU2VjdXJpdHlBIHRlc3Qgb24gV2luOTguCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFBhdWwgdmFuIFNjaGF5Y2sgPHBvbGxla2VAZ21haWwuY29tPgoJRG9uJ3Qgc3RvcCBsb29raW5nIGZvciBkZXZpY2VzIGlmIG9uZSBjYW4ndCBiZSBvcGVuZWQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aGUgcmVnaXN0cnkga2V5cyB1bmRlciBIQ1VcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MKCU5UXEN1cnJlbnRWZXJzaW9uIHRvIG1pbWljIHRoZSB3aW4uaW5pIHZhbHVlcy4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdXAgUElETCBkdW1waW5nIGNvZGUuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBBcmljIEN5ciA8YWN5ckBhbHVtbmkudXdhdGVybG9vLmNhPgoJSmFwYW5lc2UgMTA2IEtleWJvYXJkIGZpeC4KCjIwMDUtMDMtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvbWFpbHNsb3QuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgbWFpbHNsb3RzLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBHZXRTeXN0ZW1NZW51IHJlc3BlY3QgQ1NfTk9DTE9TRS4KCS0gRW5hYmxlTWVudUl0ZW0gc2hvdWxkIG5vdCBnZW5lcmF0ZSBXTV9XSU5ET1dQT1NDSEFOR0lORyBtZXNzYWdlLgoJLSBNYWtlIG5vbmNsaWVudCBjb2RlIGNoZWNrIGZvciBwcmVzZW5jZSBvZiBTQ19DTE9TRSwgbm90IENTX05PQ0xPU0UKCSAgd2luZG93IGNsYXNzIHN0eWxlLgoJLSBBZGQgYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgdGhlIGluY29tcGxldGUgc2lnbmF0dXJlIGNoZWNraW5nIGNvZGUuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Rlc3RzL2RjZS5jLCBkbGxzL3gxMWRydi9kY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJVGhlIHVwZGF0ZSByZWdpb24gcGFzc2VkIGluIFdNX05DUEFJTlQgYW5kIHRoZSBjbGlwcGluZyByZWdpb24gcGFzc2VkCgl0byBHZXREQ0V4IGhhdmUgdG8gYmUgaW4gc2NyZWVuIGNvb3JkaW5hdGVzLgoKCSogZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGRsbHMvZ2RpL3BhbGV0dGUuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9yc2FlbmgvbXBpLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGluY2x1ZGUvdXJsbW9uLmlkbDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIElNb25pa2VyUHJvcCBhbmQgSUludGVybmV0UHJpb3JpdHkgaW50ZXJmYWNlcy4KCgkqIGluY2x1ZGUvbXNodG1kaWQuaDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHNvbWUgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZXR1cm4gYSBjb21wdXRlcm5hbWUgY29uc3RydWN0ZWQgZnJvbSB0aGUgaG9zdG5hbWUuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCUJldHRlciBoYW5kbGluZyBvZiAxNi1iaXQgbmF0aXZlIGRsbHMgd2hlbiBhIDMyLWJpdCBidWlsdGluIHdpdGggdGhlCglzYW1lIG5hbWUgZXhpc3RzOyBzaG91bGQgaGVscCB3aXRoIHRoZSAxNi1iaXQgY2FyZHMuZGxsIGlzc3VlLgoJUmVwbGFjZSBzb21lIG1hZ2ljIGVycm9yIG51bWJlcnMgYnkgdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXMuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Rlc3RzL2RjZS5jLAoJICBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2RjZS5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgaW5jbHVkZS93aW4uaDoKCU9ubHkgcmVzZXQgdGhlIGNsaXAgcmVnaW9uIGluIEdldERDKCkgaWYgYSBuZXcgcmVnaW9uIGlzIHNwZWNpZmllZC4KCURvbid0IHJlbGVhc2UgdGhlIGNsaXAgcmVnaW9uIGZvciB3aW5kb3cgRENzIGluIFJlbGVhc2VEQygpLCBleGNlcHQKCXdoZW4gY2FsbGVkIGZyb20gRW5kUGFpbnQoKS4KCUFkZGVkIGEgYnVuY2ggb2YgdGVzdHMuCgoJKiBkbGxzL3VzZXIvbWVudS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWmVybyBvdXQgcmV0dXJuIHN0cmluZyBpbiBHZXRNZW51U3RyaW5nQS9XLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBSdGxBYnNvbHV0ZVRvU2VsZlJlbGF0aXZlU0QuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUtlZXAgZHNvdW5kOC5jIGFuZCBkc291bmQuYyBpbiBzeW5jLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbml0aWFsaXplIFtvcmlnfGhpbWV0cmljXVtXaWR0aHxIZWlnaHRdIGZvciBQSUNUWVBFX0lDT04gY2FzZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgc2F2ZV9yZWdpc3RyeSBhbmQgdW5sb2FkX2tleSBzZXJ2ZXIgY2FsbHMgdG8gbnRkbGwuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGUgR1VJRCBvZiB0aGUgdHlwZWxpYiB3ZSBhcmUgcmVnaXN0ZXJpbmcgbWF0Y2hlcyB0aGUgZ3VpZAoJcmVxdWVzdGVkIGZyb20gTVNJLiBJZiBub3Qgc2VhcmNoIHRoZSBnaXZlbiB0eXBlbGliIGZpbGUgdG8gZmluZCB0aGUKCXR5cGVsaWIgcmVxdWVzdGVkIHRvIHJlZ2lzdGVyLgoKMjAwNS0wMy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglUcnkgdXNpbmcgYSBzdGFibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhdCBmaXJzdCB0byBzaWxlbmNlIFpvbmVBbGFybQoJd2FybmluZ3MuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENoYW5nZVNlcnZpY2VDb25maWcuCgoJKiBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy91c2VyL3RleHQuYywKCSAgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglKYW5pdG9yaWFsOiBHZXQgcmlkIG9mIHN0cm5jcHkvc3RybmNweVcuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglKZXJyeSBKZW5raW5zIDxqZXJyeV9qX2plbmtpbnNAeWFob28uY29tPgoJSW1wcm92ZSB3aW5lYWxzYSBkc291bmQgZHJpdmVyIGJ5IGFjY2Vzc2luZyBzb3VuZCBkcml2ZXIncyBidWZmZXIKCWRpcmVjdGx5IGluIGFuIHVuZG9jdW1lbnRlZCB3YXkuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92b2x1bWUuYywgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3ZvbHVtZS5jLCBkbGxzL3dpbmVkM2Qvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJLSBWb2x1bWUgbm93IGluaGVyaXRzIFJlc291cmNlLiBUaGlzIGlzbid0IHRoZSB3YXkgTWljcm9zb2Z0IGltcGxlbWVudHMKCSAgdGhlIGludGVyZmFjZSBidXQgaXQgaXMgbW9yZSBjb3JyZWN0IHdheSAoTWljcm9zb2Z0IGV2ZW4gaGF2ZSBhCgkgIHJlc291cmNlIHR5cGUgb2Ygdm9sdW1lKS4KCS0gTW92ZWQgdXNhZ2UsIGZvcm1hdCwgYWxsb2NhdGVkTWVtb3J5IGFuZCBzaXplIG9udG8gdGhlIHJlc291cmNlCgkgIGNsYXNzIHN0cnVjdHVyZS4KCS0gUmVmYWN0b3JlZCBQcmVsb2FkIGZvciBjbGFzc2VzIHRoYXQgaW5oZXJpdCBCYXNlVGV4dHVyZSwgcHJlbG9hZCBub3cKCSAgYmluZHMgdGhlIHRleHR1cmUgaW5zdGVhZCBvZiBiaW5kIHRleHR1cmUgY2FsbGluZyBwcmVsb2FkLCBiaW5kVGV4dHVyZQoJICBhbGxvY2F0ZWQgYSBnbFRleHR1cmUgaWYgdGhlcmUgaXNuJ3Qgb25lLgoJLSBBZGRlZCB0d28gbmV3IGNsYXNzIHN0YXRpYyBtZW1iZXJzIEJhc2VUZXh0dXJlX0NsZWFuVXAgYW5kCgkgIFJlc291cmNlX0NsZWFuVXAgdGhhdCBzaG91bGQgYmUgY2FsbGVkIGJ5IGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQKCSAgQmFzZVRleHR1cmUgb3IgUmVzb3VyY2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvZGNlLmMsIGRsbHMveDExZHJ2L2RjZS5jOgoJT25seSByZXN0b3JlIHRoZSBEQyBhdHRyaWJ1dGVzIG9uIHRoZSBuZXh0IEdldERDLCBhbmQgYWRkIHN1cHBvcnQgZm9yCgl0aGUgRENYX05PUkVTRVRBVFRSUyBmbGFnLgoJR2V0IHJpZCBvZiB0aGUgRENFIGZsYWdzLCBzaW1wbGlmeSB0aGUgY29kZSBhIGJpdC4KCUFkZCBzb21lIHRlc3QgY2FzZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUZpeCBmYWlsdXJlIHRvIG5vdGljZSB0aGUgdXNlIG9mIGEgR0lGIHBhbGV0dGUgaW5kZXggZ3JlYXRlciBvciBlcXVhbAoJdG8gMTI4IGZvciB0cmFuc3BhcmVuY3kuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0NzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0phLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIEVTX0FVVE9IU0NST0xMIHN0eWxlIHRvIHRoZSBlZGl0dGV4dCBjaGFuZ2luZyB0ZXh0IGRhdGEuCgoJKiBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIGEgY2FsbCB0byBFbnVtRW5oTWV0YUZpbGUgd2hlbiBoZGMgaXMgTlVMTCwgbHBSZWN0IG1heSBiZSBOVUxMLiBBZGQKCWEgdGVzdCBmb3IgdGhpcy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXcml0ZUZtdFVzZXJUeXBlU3RnIGRvZXNuJ3QgcHVsbCBhIENMU0lEIGZyb20gdGhlIHJlZ2lzdHJ5IC0gaXQncwoJdW5jbGVhciB3aGVuIChpZiBhdCBhbGwpIHRoaXMgZ2V0cyB3cml0dGVuLgoKCSogZGxscy91c2VyL2tiZDE2LmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci91c2VyMTYuYzoKCU1vdmVkIDE2LWJpdCBzdHJpbmcgZnVuY3Rpb25zIHRvIHVzZXIxNi5jIGFuZCBrYmQxNi5jLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvbWluaWR1bXAuYywgZGxscy9kYmdoZWxwL21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvcGF0aC5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIFZhcmlvdXMgaW1wcm92ZW1lbnRzIGZvciBtaW5pZHVtcCBtb2R1bGUgaW5mb3JtYXRpb24KCSAgLiBhZGRlZCB0aW1lc3RhbXAgJiBjaGVja3N1bSBpbiBQRSBtb2R1bGUKCSAgLiBhZGRlZCBzaXplICYgY2hlY2tzdW0gaW4gRUxGIG1vZHVsZQoJICAuIHdpbmUgbG9hZGVyIG5vdyBhcHBlYXJzIHdpdGggaXRzIHBhdGhuYW1lLgoJLSBJbXBsZW1lbnRlZCBQRSAmIEVMRiB0aW1lc3RhbXAgJiBjaGVja3N1bSB2YWxpZGF0aW9uIGluCgkgIFN5bUZpbmRGaWxlSW5QYXRoLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdWl0b29scy5jLCB3aW5kb3dzL3JlY3QuYzoKCU1vdmVkIHJlY3RhbmdsZSBmdW5jdGlvbnMgdG8gdWl0b29scy5jIGFuZCByZW1vdmVkIHJlY3QuYy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pY29kaWZ5IFdJTlNQT09MX09wZW5Ecml2ZXJSZWcoKS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2xvc2UgcmVnIGtleSBpZiB0aGUgb3BlbiBmYWlsZWQuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVNlcmlhbGl6ZSBOVUxMIHBvaW50ZXIgaW50ZXJmYWNlcyBjb3JyZWN0bHkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU2Nyb2xsV2luZG93IHNob3VsZCBjYWxsIFNjcm9sbFdpbmRvd0V4IHdpdGggdGhlIFNXX0VSQVNFIGZsYWcKCXNldC4gV2l0aCBjb25mb3JtYW5jZSB0ZXN0LgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NvY2suYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ2xlYW4tdXAgYXN5bmMgSU8gaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNlcnZlci9yZWdpc3RyeS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIEltcGxlbWVudCBOdExvYWRLZXkuCgktIEZvcndhcmQgUmVnTG9hZEtleSB0byBOdExvYWRLZXkuCgoJKiBkbGxzL3VzZXIvdXNlcjE2LmMsIHdpbmRvd3MvcmVjdC5jOgoJTW92ZWQgMTYtYml0IHJlY3RhbmdsZSBmdW5jdGlvbnMgdG8gdXNlcjE2LmMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCVRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJSW1wbGVtZW50IFNldENQR2xvYmFsIChhbiB1bmRvY3VtZW50ZWQgV2luMzIgQVBJKS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSB0ZXN0IGZvciBhZHZhcGkzMiwgd2hpY2ggZG9jdW1lbnRzIGEgY3Jhc2ggaW4gd2luZSB0cmlnZ2VyZWQKCWJ5IGluY29ycmVjdCBhcGkgdXNhZ2UuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL29sZTIuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSBwcm90b3R5cGVzIHNvIGdjYyB3aXRoIHNvbWUgd2FybmluZ3MgZG9lc24ndCBiYXJrLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJcnNhYmFzZSBkb2Vzbid0IHVzZSBhbnkgdHlwZXMgbm93LCBzbyByZW1vdmUgaXQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IEdldEZpbGVTZWN1cml0eVcgZm9yIG5vdCBleGlzdGluZyBkaXJlY3Rvcmllcy9maWxlcy4KCgkqIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3N5bWJvbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIFBEQjogYmV0dGVyIGNoZWNraW5nIGZvciBlcnJvciBjb25kaXRpb25zCgktIEZpeGVkIG5hbWUgZGVtYW5nbGluZyAod2hlbiBhY3RpdmF0ZWQpIHdoZW4gc2VhcmNoaW5nIGZvciBhIHN5bWJvbAoKCSogZGxscy9udGRsbC90ZXN0cy9yZWcuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeGVkIG50ZGxsOnJlZyB0ZXN0IG9uIHdpbjl4LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjb250cm9sIGNoYXJhY3RlcnMgaW4gVmtLZXlTY2FuRXggc2ltaWxhciB0byB3aGF0IFdpbmRvd3MKCWRvZXMuCgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgktIEdldFNjcm9sbFJhbmdlIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmFuZ2UsIGJvdGggdXBwZXIgYW5kIGxvd2VyCgkgIGxpbWl0IHplcm8sIGlmIHRoZSB3aW5kb3cgaGFzIG5vIHNjcm9sbGJhcnMgKG1zZG4pLgoJLSBHZXRTY3JvbGxJbmZvJ3MgcmV0dXJuIHZhbHVlIGlzIFRSVUUgaXMgbkJhciBpcyBTQl9DVEwgb3IgaWYKCSAgYW55dGhpbmcgaXMgZmlsbGVkIGluIHRoZSBTQ1JPTExJTkZPIHN0cnVjdHVyZSwgb3RoZXJ3aXNlIHRoZSByZXR1cm4KCSAgdmFsdWUgaXMgRkFMU0UuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIFZUX0JTVFJ8VlRfQllSRUYgbWFyc2hhbGxpbmcuCglBZGRlZCBWVF9JNHxWVF9CWVJFRiBtYXJzaGFsbGluZy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9kYXRhYmFzZS5jLCBkbGxzL21zaS9tc2kuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwbGl0IG91dCBkYXRhYmFzZSBmdW5jdGlvbnMsIHJlbW92ZSBkZXBlbmRlbmNlIG9uIHdpbmUvdW5pY29kZS5oLgoKMjAwNS0wMy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLAoJICBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2dyYXBoLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLCBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywKCSAgZGxscy9rZXJuZWwvYXRvbTE2LmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLAoJICBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsCgkgIGRsbHMvZGJnaGVscC9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlLmMsIGRsbHMvZ2RpL2Vudi5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsCgkgIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hcHBzZWFyY2guYywgZGxscy9tc2kvZGlhbG9nLmMsCgkgIGRsbHMvbXNpL2Zvcm1hdC5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmMsIGRsbHMvcXVhcnR6L3dhdmVwYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywKCSAgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy93aW5lcHMvYWZtMmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCB3aW5kb3dzL3NweS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUphbml0b3JpYWw6IEdldCByaWQgb2Ygc3RybmNweS9zdHJuY3B5Vy4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJTWVyZ2VkIFgxMURSVl9CSVRNQVBfQ3JlYXRlQml0bWFwSGVhZGVyRnJvbVBpeG1hcCBpbnRvCglYMTFEUlZfRElCX0NyZWF0ZURJQkZyb21QaXhtYXAgYW5kIHNpbXBsaWZpZWQgdGhlIGNvZGUgYSBiaXQuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDcmVhdGVNYWlsc2xvdCB1c2luZyBOdENyZWF0ZU1haWxzbG90RmlsZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZnVuY3Rpb24gcHJvdG90eXBlcywgbWFrZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogcHJvZ3JhbXMvd2NtZC9iYXRjaC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglOYXRpdmUgd2NtZC5leGUgYWNjZXB0cyBDQUxMcyB0byAuZXhlIGZpbGVzLgoKCSogdG9vbHMvd2lkbC93aWRsdHlwZXMuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJS2VlcCB0eXBlcyBzb3J0ZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBzdXBwb3J0IGZvciBzaW5nbGUgaW4gaWRsIGZpbGVzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBhIHRlc3QgZm9yIEdldEZpbGVTZWN1cml0eUEuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIHBwdk9iamVjdCBzZXJpYWxpemVyIChkZXJlZiB0d2ljZSBpbnN0ZWFkIG9mIG9uY2UpLgoJQWN0dWFsbHkgcGFzcyBiYWNrIHJldHVybiB2YWx1ZSBvZiByZW1vdGUgY2FsbCBpbiB0eXBlIG1hcnNoYWxsZXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVJlbW92ZSB0ZXN0cyB0aGF0IGZhaWwgYmFkbHkgb24gV2luZG93cyA5OC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYzogU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMyQGFyLmZpLmx0PgoJRml4IGFuIGVycm9yIGNvZGUgZm9yIE1FLgoKCSogaW5jbHVkZS9heGV4dGVuZC5pZGw6IFZsYWRkeSBJbXBhbGVyIDx2bGFkZHlAdXRjaGF0LmNvbT4KCURlZmluZSB0aGUgSUFNU3RyZWFtQ29uZmlnIGludGVyZmFjZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgY2hlY2tpbmcgZm9yIGFydHNjIGxpYnJhcnkuCgoyMDA1LTAzLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JydXNoLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglBZGRlZCBYMTFEUlZfZ2V0X3BpeG1hcCBhbmQgWDExRFJWX3NldF9waXhtYXAgZnVuY3Rpb25zIHRvIGF2b2lkCglkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIHBoeXNCaXRtYXAgZmllbGQgb2YgdGhlIGJpdG1hcCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGZ1bmN0aW9uIHByb3RvdHlwZXMsIG1ha2UgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRml4IEJTVFIgdHJhY2luZyBpbiB0aGUgdHlwZWxpYiBtYXJzaGFsbGVyLgoKCSogZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvZ2RpLmg6CglTdG9yZSB0aGUgaGFuZGxlIHRvIHRoZSBzdG9jayBiaXRtYXAgd2hlbiB0aGUgZmlyc3QgREMgaXMgY3JlYXRlZCB0bwoJYXZvaWQgZXhwb3J0aW5nIHRoZSBERUZBVUxUX0JJVE1BUCBkZWZpbmUuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZvcm1hdCBWVF9VSTEsIFZUX0kxLCBWVF9VSTIsIFZUX0kyIGNvcnJlY3RseS4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZnVuY3Rpb24gcHJvdG90eXBlcywgbWFrZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogZGxscy94MTFkcnYvZGNlLmMsIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglTdG9yZSB0aGUgRENFIHBvaW50ZXIgaW4gdGhlIERDIHBoeXNEZXYgc3RydWN0dXJlIHVzaW5nIGFuIHgxMWRydiBHREkKCWVzY2FwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIGFwaSBkZWZpbml0aW9ucywgcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlLgoKCSogZGxscy9zZXR1cGFwaS9zdHVicy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlbW92ZSBzdHJheSA4Yml0IGNoYXJhY3Rlci4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUplcnJ5IEplbmtpbnMgPGplcnJ5X2pfamVua2luc0B5YWhvby5jb20+CglEb24ndCBtaXN0YWtlIGZyYW1lcyBmb3IgYnl0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzaXplIHBhc3NlZCB0byBTUElfTk9OQ0xJRU5UTUVUUklDUy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgSURpc3BhdGNoOjpHZXRJRHNPZk5hbWVzKCkgc3BlY2lhbCBjYXNlIHNlcmlhbGl6aW5nLgoJSGFuZGxlIFZUX1BUUiAvIE5VTEwgbWFyc2hhbGxpbmcgY29ycmVjdGx5LgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW5wb3MuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gY29tcHV0aW5nIG5vbmNsaWVudCBhcmVhIHRha2UgaW50byBjb25zaWRlcmF0aW9uIHRoYXQgYSBjaGlsZAoJd2luZG93cyB3aXRoIHRoZSBXU19QT1BVUCBzdHlsZSBjYW4gaGF2ZSBhIG1lbnUgYmFyLgoKMjAwNS0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL2dkaW9iai5jLAoJICBpbmNsdWRlL2dkaS5oOgoJRXhwbGljaXRseSBzdG9yZSB0aGUgc3RhY2sgb2Ygc2F2ZWQgRENzIGluIHRoZSBEQyBzdHJ1Y3R1cmUgaW5zdGVhZCBvZgoJdXNpbmcgdGhlIDE2LWJpdCBoTmV4dCBmaWVsZCBpbiB0aGUgb2JqZWN0IGhlYWRlci4KCgkqIGRsbHMvZ2RpL2NsaXBwaW5nLmMsIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmg6CglNYWludGFpbiB0aGUgc3RhY2sgb2Ygc2F2ZWQgdmlzIHJlZ2lvbnMgaW4gdGhlIERDIHN0cnVjdHVyZSBpbnN0ZWFkIG9mCglzdG9yaW5nIGl0IGRpcmVjdGx5IGluIHRoZSByZWdpb24gb2JqZWN0cy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSB7QWxsb2MsUmVBbGxvYyxGcmVlfSgpIGluc3RlYWQgb2YgSGVhcHtBbGxvYyxSZUFsbG9jLEZyZWV9KCkuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglQcmludCByZXR2YWwgaW4gZGVjaW1hbCB0byBhdm9pZCBjb25mdXNpb24uCglOVDQgZmFpbHMgd2l0aCBFUlJPUl9JTlZBTElEX1RBUkdFVF9IQU5ETEUgaW5zdGVhZCBvZgoJRVJST1JfUkVESVJfUEFVU0VELgoJVXNlIHNvbWUgY29ycmVjdCBtZXNzYWdlcyBvbiBlcnJvci4KCUV4dHJhIHRyYWNpbmcuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglDaGlsZCB3aW5kb3dzIHdpdGggdGhlIFdTX1BPUFVQIHN0eWxlIGFyZSBhbGxvd2VkIHRvIGhhdmUgYSBtZW51LgoKCSogZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL21zaHRtaHN0LmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtc2h0bWhzdC5pZGwuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJQ2hlY2sgZGVza3RvcCB2aXNpYmlsaXR5IGFmdGVyIHByb2Nlc3NpbmcgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywKCSAgd2luZG93cy9zY3JvbGwuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTY3JvbGxEQyBhbmQgWDExRFJWX1NDUk9MTERDIHNob3VsZCBzY3JvbGwgb25seSBwaXhlbHMgY29taW5nIGZyb20KCXdpdGhpbiB0aGUgdmlzaWJsZSByZWdpb24sIGNsaXBwZWQgdG8gdGhlIGNsaXBwaW5nIHJlZ2lvbiBpZiB0aGF0CglleGlzdHMuIEFkZCB0aGUgZGVzdGluYXRpb24gb2YgcGl4ZWxzIGNvbWluZyBmcm9tIHRoZSBvdXRzaWRlIG9mIHRoaXMKCXJlZ2lvbiB0byB0aGUgdXBkYXRlIHJlZ2lvbi4gV2l0aCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiB0aGlzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3VzZXIxNi5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZGNlLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmM6CglNb3ZlZCBEQ0Ugc3VwcG9ydCB0byB0aGUgWDExIGRyaXZlci4KCgkqIGRsbHMva2VybmVsL3ZpcnR1YWwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRG9uJ3QgZmF1bHQgb24gTlVMTCBwb2ludGVycyBpbiBJcypQdHIgZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglGaXggUEFSQU1GTEFHX0ZPVVQgdHlwbyBpbiB0aGUgdG1hcnNoYWxsZXIuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2Ugc3RyZHVwLCBpbXBsZW1lbnQgTXNpRGF0YWJhc2VJbXBvcnRBLgoKCSogZGxscy91c2VyL21lbnUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgbWFwIHBvaW50IHRvIHBhcmVudCdzIGNsaWVudCB3aW5kb3cgYmVjYXVzZSB0aGUgcmVzdCBvZiB0aGUgY29kZQoJYXNzdW1lcyBzY3JlZW4gY29vcmRpbmF0ZXMuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglSZXBsYWNlIHRoZSBsaW5rX3dpbmRvdyByZXF1ZXN0IGJ5IGEgc2V0X3BhcmVudCByZXF1ZXN0IHNpbmNlIHRoYXQgaXMKCWFsbCBsaW5rX3dpbmRvdyBpcyB1c2VkIGZvciBhdCB0aGlzIHBvaW50LgoJR2V0IHJpZCBvZiB0aGUgV0lOX0xpbmtXaW5kb3cvVW5saW5rV2luZG93IGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXIgaGFuZGxpbmcgZm9yIEdXTF9TVFlMRS4KCU1pbm9yIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYSBtZW1vcnkgbGVhayBpbiB0b29sYmFyLiBBdm9pZCBjYXN0cy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZXBsYWNlIGEgdHJhY2Ugd2l0aCBhIHByZXZpb3VzbHkgcmVtb3ZlZCB0ZXN0LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zeXNsaW5rLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGFuZGxlIHdQYXJhbSBpbiBXTV9QQUlOVCBwcm9wZXJseTogaWYgbm9uLW51bGwsIGl0IGlzIHRoZSBoZGMgd2UgYXJlCglzdXBwb3NlZCB0byB1c2UgdG8gZHJhdyBpbnRvLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIFJvYmVydCBTaGVhcm1hbidzIGV4cGxhbmF0aW9uIGFib3V0IFdNX05DUEFJTlQuCglNb3ZlIHRlc3RpbmcgY29tbWVudHMgaW4gYSBtb3JlIGFwcHJvcHJpYXRlIHBsYWNlLgoKCSogZGxscy9xdWFydHovdGVzdHMvZmlsdGVyZ3JhcGguYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRG9uJ3QgcnVuIEZpbHRlckdyYXBoIHRlc3RzIGlmIEZpbHRlckdyYXBoIGZ1bmN0aW9uYWxpdHkgaXMgbm90CglhdmFpbGFibGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4IHRocmVhZCBhZmZpbml0eSB0ZXN0IGZvciBTTVAgbWFjaGluZXMuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglObyBuZWVkIGNvbnRpbnVpbmcgdGVzdHMgaWYgbm8gTmV0VXNlckdldEluZm8uCgoyMDA1LTAzLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglUcnkgYSBUcnVlQ29sb3IgdmlzdWFsIGlmIFhyZW5kZXIgZmFpbHMgd2l0aCBhIERpcmVjdENvbG9yIG9uZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGlucHV0L2RldmljZS5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jLAoJICBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9mb250LmMsCgkgIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL3BhbGV0dGUuYywgZGxscy9nZGkvcGF0aC5jLAoJICBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC9oZWFwLmMsCgkgIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21hcGkzMi91dGlsLmMsIGRsbHMvbXByL3duZXQuYywKCSAgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Rtby9kbW9yZWcuYywKCSAgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9uZXRhcGkzMi9uYmNtZHF1ZXVlLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuYywgZGxscy9uZXRhcGkzMi9uYnQuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRiaW9zLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVkbGcvaW5zb2JqZGxnLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvcnNhZW5oL2hhbmRsZS5jLCBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9zZWN1cjMyL3NlY3VyMzIuYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsCgkgIGRsbHMvc2V0dXBhcGkvZGlza3NwYWNlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLAoJICBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3ZuYnQudnhkL3ZuYnQuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jLAoJICBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy94MTFkcnYvYml0Ymx0LmMsCgkgIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3gxMWRydi94ZG5kLmMsIGRsbHMveDExZHJ2L3hmb250LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJR2V0IHJpZCBvZiBIZWFwQWxsb2MgY2FzdHMuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy93aW5wb3MuYzoKCUF2b2lkIGNhbGxpbmcgV0lOX0xpc3RDaGlsZHJlbiBmcm9tIHRoZSBncmFwaGljcyBkcml2ZXJzLgoKCSogc2VydmVyL3F1ZXVlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3B5LmM6CglBZGRlZCBzdXBwb3J0IGZvciB4YnV0dG9ucy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGRlZCBmdWxsIHN1cHBvcnQgZm9yIHhidXR0b25zIChzaWRlIG1vdXNlIGJ1dHRvbnMpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOgoJVGFrZSBpbnRvIGFjY291bnQgdGhlIG1vcmUgY29ycmVjdCBiZWhhdmlvciBvZiByZWNlbnQgTGludXgga2VybmVscy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9wYWNrYWdlLmMsCgkgIGRsbHMvbXNpL3ByZXZpZXcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgaW5zdGFuY2VzIG9mIEhlYXBBbGxvYy9NdWx0aUJ5dGVUb1dpZGVDaGFyIHdpdGggdGhlIGludGVybmFsbHkKCWRlZmluZWQgc3RyZHVwQXRvVy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWYgcnVubmluZyBpbiBVSSBtb2RlLCB0aGVuIGRpc3BsYXkgdGhlIFVJIG1vZGUgZGlhbG9ncyBhdCB0aGUgZW5kIG9mCgl0aGUgaW5zdGFsbHMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFmdGVyIEZsb2F0LT5zdHJpbmcgY29udmVyc2lvbiB2aWEgc3ByaW50ZlcoKSwgVmFyRGVjRnJvbVJbNHw4XSBpcwoJZm9yY2VkIHRvIHVzZSBVUyBsb2NhbGUgZm9yIHN0cmluZy0+RGVjaW1hbCBjb252ZXJzaW9uLCB0byBhZ3JlZSB3aXRoCglzcHJpbnRmVygpLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXggc29tZSBXaW5kb3dzIDk1IGlzc3Vlcy4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci9zY3JvbGwuYywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRG9uJ3QgbWFpbnRhaW4gYSBjbGllbnQtc2lkZSBXTkQgc3RydWN0dXJlIGZvciB0aGUgZGVza3RvcCB3aW5kb3cuCglNYWRlIFdJTl9HZXRQdHIgcmV0dXJuIFdORF9ERVNLVE9QIGluIHRoYXQgY2FzZS4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhlcmUncyBvbmx5IG9uZSBwbGFjZSB3ZSBhbGxvY2F0ZSBkaWFsb2cgY29udHJvbHMuCgoJKiBkbGxzL21zaS9yZWdpc3RyeS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCByZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgXHUga2V5d29yZCB0byBvdXRwdXQgc2lnbmVkIDE2LWJpdCB2YWx1ZXMuIEFsc28gZml4ZWQgQ1BfU1lNQk9MCgljb252ZXJzaW9uIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIHRoZSBkZWZhdWx0IGZvbnQncyBjb2RlcGFnZS4KCgkqIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglQcmV0ZW5kIHRoZXJlIGFyZSAwIHRlcm1pbmFsIHNlcnZlciBzZXNzaW9ucyBhbmQgcHJvY2Vzc2VzLgoKCSogZGxscy9udGRsbC9yZWxheS5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU3VwcG9ydCByZWxheSB0cmFjaW5nIG9mIGZ1bmN0aW9ucyB3aXRoIDE4IGFyZ3VtZW50cy4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gdXNlIFdJTkVfRElOUFVUX0tFWUJPQVJEX01BWF9LRVlTIGluc3RlYWQgaGFyZC1jb2RlZCAyNTYgdmFsdWUKCS0gYmV0dGVyIHVzZSBvZiBjcml0aWNhbCBzZWN0aW9uCgktIHNvbWUgY2xlYW51cCB0byBiZXR0ZXIgdW5kZXJzdGFuZCBjb2RlIHBhdGhzCgktIGxvZ2ljIGNvcnJlY3Rpb24gb24gU2V0V2luZG93c0hvb2tFeEEvVW5ob29rV2luZG93c0hvb2tFeCBvbgoJICBrZXlib2FyZC4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBoYW5kbGluZyBvZiB1bnNpZ25lZCB0eXBlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBkZXB0aCBvZiB0aGUgY29sb3VyIGJpdG1hcCBuZWVkcyB0byBtYXRjaCB0aGF0IG9mIHRoZSBzY3JlZW4uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHRoZSB1bmljb2RpZmljYXRpb24gb2YgY29tY3RsMzJ1bmRvYy4KCjIwMDUtMDMtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3VzZXIuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglHZXQgcmlkIG9mIHRoZSB3aW5kb3cgbG9jayBzdXNwZW5kIG1lY2hhbmlzbS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvbWluaWR1bXAuYywgZGxscy9kbWJhbmQvYmFuZC5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMvbWFwaTMyL3Byb3AuYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNpL2FwcHNlYXJjaC5jLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLAoJICBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvdXNlci9lZGl0LmMsCgkgIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lcHMvZXNjYXBlLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWwsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGxpYnMvd2luZS9sb2FkZXIuYywgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLAoJICB0b29scy9mb250X2NvbnZlcnQuc2gsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglQcmV0ZW5kIHRoZXJlIGFyZSAwIGxvZyByZWNvcmRzLgoJSW1wcm92ZSB0cmFjZXMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogUm9uIEplbnNlbiA8ZXRlY2hAamVudHJvbmljcy5jb20+CglBdm9pZCBiYWQgdmlzdWFsIGVycm9ycyBpbiB0aHJlYWRfc2VsZWN0aW9uX3duZCgpLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglHZXQgcmlkIG9mIHRoZSByZW1haW5pbmcgV0lOX0ZpbmRXbmRQdHIgY2FsbHMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIFJlZ1NhdmVLZXksIFJlZ0xvYWRLZXkgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSB0aGUgdHJlZXZpZXcgY29ycmVjdGx5IHNlYXJjaCB3aGVuIHRoZSB0b3AgaW5kZXggaXMgc2VsZWN0ZWQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglUZXN0IGZvciBQZWVrTmFtZWRQaXBlIHdpdGggemVyby1sZW5ndGggYnVmZmVyLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgZmFpbCB3aGVuIG9wZW5pbmcgYSBkZXZpY2UgaW4gZGlyZWN0IHNvdW5kIG1vZGUuIFJhdGhlciwgdHJ5CglhbHRlcm5hdGUgZm9ybWF0cyBmaXJzdCBiZWZvcmUgZmFpbGluZy4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCVRlYWNoIFZFUlNJT05fR2V0TGlua2VkRExMVmVyc2lvbiBhYm91dCBNaW5ndzMyIGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jOgoJQ3JlYXRlIGEgbmV3IHNlcnZlciByZXF1ZXN0IGZvciBhY2NlcHRpbmcgaGFyZHdhcmUgbWVzc2FnZXMgaW5zdGVhZCBvZgoJYWJ1c2luZyByZXBseV9tZXNzYWdlLgoJQWxsb3cgcGFzc2luZyB0aGUgZGV0ZXJtaW5lZCB3aW5kb3cgZm9yIGEgaGFyZHdhcmUgbWVzc2FnZSBiYWNrIHRvIHRoZQoJc2VydmVyIHRvIGhhdmUgaXQgcmVkaXNwYXRjaCB0aGUgbWVzc2FnZSB0byB0aGUgY29ycmVjdCB0aHJlYWQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBXaW5kb3cgc3R5bGVzIHBhc3NlZCB0byBDcmVhdGVXaW5kb3dFeCBtdXN0IHRoZSBzYW1lIGFzIHBhc3NlZCBpbgoJICBDUkVBVEVTVFJVQ1QgZm9yIFdNX0NSRUFURS9XTV9OQ0NSRUFURS4KCS0gRml4IGNhc2VzIHdoZXJlIFdTX0VYX1dJTkRPV0VER0Ugc3R5bGUgaXMgYXBwbGllZC4KCS0gVGVzdHMgZm9yIHRoZSBhYm92ZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgTXNpRGF0YWJhc2VJbXBvcnRBLCBNc2lEYXRhYmFzZUltcG9ydFcsIGFuZAoJTXNpQ3JlYXRlQW5kVmVyaWZ5SW5zdGFsbGVyRGlyZWN0b3J5IHN0dWIgcGFyYW1ldGVyIGNvdW50cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgdHJlZXZpZXcgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIHRvb2x0aXBzIGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIHRvb2xiYXIgY29tbW9uIGNvbnRyb2wuCglNb3ZlIGEgaGVhZGVyIGNvbW1lbnQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbnRyb2xzLgoJVmVyeSBzbWFsbCBhbGlnbm1lbnQgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIHJlYmFyIGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgcHJvcHNoZWV0IGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgaGVhZGVyIGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9mbGF0c2IuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgZmxhdHNiIGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZhbXAgdGhlIHZvbHVtZSBsb2dpYyB0byBiZSBtb3JlIHNlbGYgY29udGFpbmVkLCBmaXggYSBmZXcgYnVncyBzbwoJdGhhdCB0aGUgdm9sdW1lIGlzIGNvcnJlY3RseSByZWFkLCBhbmQgaXMgY29ycmVjdGx5IGNvbnZlcnRlZCB0bwoJd2luZG93cyBzdHlsZSB2b2x1bWUgbnVtYmVycy4KCjIwMDUtMDMtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJU2ltcGxpZnkgaGFyZHdhcmUgbWVzc2FnZSBwcm9jZXNzaW5nIGJ5IG1lcmdpbmcgdGhlICJyYXciIGFuZCAiY29va2VkIgoJcHJvY2Vzc2luZyBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzb21lIC1Xc2lnbi1jb21wYXJlIGFuZCAtV3VuaW5pdGlhbGl6ZWQgd2FybmluZ3MuCgoJKiBkbGxzL2tlcm5lbC92aXJ0dWFsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUxvZyB0byArc2VoIHdoZW4gYW4gSXNCYWQqIGZ1bmN0aW9uIGZhdWx0cy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJSWYgdGhlIGRldmljZSBnZXRzIGludGVycnVwdGVkLCB3ZSBqdXN0IGdpdmUgdXAuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVRlc3QgZml4LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUVsaW1pbmF0ZSB1c2VsZXNzIEhlYXBBbGxvYygpIGNhc3RzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJRmV0Y2ggYWdhaW4gdGhlIGZpbGUgdGltZSB0byBjb21wYXJlIGFnYWluc3QgdG8gYXZvaWQgcm91bmRpbmcgZXJyb3JzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBYm9ydCBpZiB3ZSBjYW4ndCBjcmVhdGUgYSBuYW1lZCBwaXBlIGF0IGFsbC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglFbGltaW5hdGUgSGVhcEFsbG9jIGNhc3RzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglQZWVrTmFtZWRQaXBlIG5vdyBjaGVja3MgYm90aCBmb3IgYSBOVUxMIGJ1ZmZlciBhbmQgYSB6ZXJvLWxlbmd0aAoJYnVmZmVyIGJlZm9yZSB0cnlpbmcgdG8gcmVjdigpIGZyb20gdGhlIHBpcGUuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTW9yZSB0cmFjZSBpbmZvLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3N0cmluZy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglTdHJSZXRUb1N0ck5BVyByZXR1cm5zIG9rIG9uIE5UNCwgdGhvdWdoIGl0IHNob3VsZCByZXR1cm4gRkFMU0UuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglNb3JlIHRyYWNlIGluZm8gZnJvbSBzdG9yYWdlMzIgdGVzdC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZW52LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU1vcmUgdHJhY2UgaW5mby4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBHZXRBbmNlc3RvciBpbnN0ZWFkIG9mIEdldFBhcmVudC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSdXN0YW0gQ2hlcm5vdGthY2ggPHJ1c3Rpa0B1ZnBzLmNodWtvdGthLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgQU5BVCAoQW5hZHlyIFN0YW5kYXJkIFRpbWUpIHRvIFRaX0lORk8uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUlmIHRoZSB2YXJpYWJsZSBkb2VzIG5vdCBleGlzdCwganVzdCByZXR1cm4uCgoJKiBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJV2luZG93cyA5OCBkb2Vzbid0IGxpa2UgaXQgd2hlbiB3ZSBkZWxldGUgdGhlIHRlbXBmaWxlLgoKCSogZGxscy9tc2kvdGVzdHMvZGIuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgcGFja2FnZSBjcmVhdGlvbi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZiBhbiBNREkgY2hpbGQgYmVjb21lcyBhY3RpdmUgcmVzdG9yZSBwcmV2aW91c2x5IG1heGltaXplZCBNREkKCWNoaWxkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXggcGF0Y2hpbmcgZXJyb3IgaW4gZmlsZSB0aW1lIHRlc3QuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFNlcmJpYW4gY3lyaWxsaWMgWDExIGtleWJvYXJkIGxheW91dC4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJSW5jcmVhc2UgUEUgcmVzZXJ2ZSBhcmVhIHNpemUgdG8gNTEyTWIuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaCwgZGxscy9yaWNoZWQyMC93cml0ZXIuYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglNYWRlIFJURiByZWFkZXIgYW5kIHdyaXRlciBoYW5kbGUgY29kZXBhZ2VzIG1vc3RseSBzaW1pbGFyIHRvIHRoZQoJb3JpZ2luYWwgcmljaGVkMjAuZGxsLgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3Rlc3RzL2VkaXQuYzoKCUMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJRURJVF9FTV9TZXRTZWw6IE9sZC9uZXcgc2VsZWN0aW9uIHJhbmdlIG9yZGVyaW5nIGNvZGUgd291bGQgYnJlYWsgd2hlbgoJb2xkX2VuZCA8IHN0YXJ0IDwgZW5kIDwgb2xkX3N0YXJ0LgoJUmVzZXQgRUZfVVBEQVRFIGZsYWcgYWZ0ZXIgd2UndmUgc2VudCB0aGUgdXBkYXRlLgoKCSogZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfTmwucmMsIGRsbHMvc2hkb2N2dy9ObC5yYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUR1dGNoIHJlc291cmNlIHRyYW5zbGF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXggZm9yIE5UNCBiZWhhdmlvdXIuCgoyMDA1LTAzLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglUcnkgdG8gYWx3YXlzIGtlZXAgdGhlIHNlcnZlciB3aW5kb3cgWi1vcmRlciBpbiBzeW5jIHdpdGggdGhlIFgxMSBvbmUKCXVzaW5nIGEgaGV1cmlzdGljIGJhc2VkIG9uIG1vdXNlIGFuZCBleHBvc2UgZXZlbnRzLgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGluY2x1ZGUvd2luaW5ldC5oOgoJVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglJbXBsZW1lbnQgQ3JlYXRlVXJsQ2FjaGVFbnRyeVcgYW5kIENvbW1pdFVybENhY2hlRW50cnlXLiBSZXBsYWNlIHRoZQoJZXhpc3RpbmcgJ0EnIHZlcnNpb25zIHdpdGggY2FsbHMgdG8gdGhlICdXJyB2ZXJzaW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBkaXJlY3Qgc291bmQgY2FwYWJpbGl0aWVzIHRvIG1hdGNoIGhhcmR3YXJlLgoKCSogcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHVzYWdlIHByaW50Zi4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogRml4ZWQgYSBtaXNzaW5nIHBhdGNoIGNodW5rLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQdWxsIHRoZSBXTV9USU1FUiBoYW5kbGluZyBpbnRvIGl0cyBvd24gZnVuY3Rpb24uCglBTklNQVRFX0RyYXdGcmFtZSBzaG91bGRuJ3Qgd29ycnkgYWJvdXQgbG9ja2luZywgdGhlIGxvY2sgc2hvdWxkIGJlCgloZWxkIGJ5IHRoZSBjYWxsZXIuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9vbGVvYmouYywKCSAgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIGNhc3RzIG9mIHRoZSByZXR1cm4gdmFsdWUgb2YgSGVhcEFsbG9jLgoKCSogZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBjYXN0cyBhbmQgdW51c2VkIGNvZGUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgZGlzcGxheSBwYXRoIGluIHN0YXR1cyBiYXIuCgoJKiBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUHJldmVudCBjcmFzaCB3aGVuIG5vIFVSTCBpcyBzcGVjaWZpZWQuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOiBUaG9tYXMgS2hvIDx0aG9tYXNraG9AZ21haWwuY29tPgoJQWRkZWQgdGVzdHMgZm9yIHNlbmR0bywgcmVjdmZyb20sIGFuZCBnZXRzZXJ2YnluYW1lLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW4gdXAgaGFuZGxlIHVzYWdlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglEb24ndCB0cnkgdG8gcmVzeW5jIFotb3JkZXIgb24gQ29uZmlndXJlTm90aWZ5IGV2ZW50cywgdGhpcyBjYW5ub3QKCXdvcmsgcmlnaHQgYW55d2F5LgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9pdHNzL2l0c3MuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW4xNl9tYWluLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgYW5kIGNvbXBsZXRlIHNvbWUgYXBpIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUNvcnJlY3Rpb25zIHRvIFVybElzVyBhbmQgVXJsSXNBLgoJVVJMX0lTX09QQVFVRSByZXN1bHRzIGRlcGVuZCBvbmx5IG9uIHRoZSBzY2hlbWUsIG5vdCBvbiB0aGUgVVJMLgoJVVJMX0lTX0ZJTEVVUkwgYWxzbyBvbmx5IGRlcGVuZHMgb24gdGhlIHNjaGVtZSAoImZpbGU6IikuCgoJKiBkbGxzL3gxMWRydi9wYWxldHRlLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCVJlbW92ZSBicmVhayBzdGF0ZW1lbnRzIG1pc3NlZCBpbiBsYXN0IHBhdGNoLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVRlYWNoIHdpbmFwaSBhYm91dCB0eXBlcyBuZXdseSB1c2VkIGluIHZhcmlvdXMgZGxscy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVGVhY2ggd2luYXBpX2NoZWNrIGFib3V0IG90aGVyIGNhbGxpbmcgY29udmVudGlvbiBzaG9ydGhhbmRzICh0aGV5IGFsbAoJYXJlIHJlYWxseSBzdGRjYWxsKS4KCgkqIGRsbHMvd2luZWQzZC93aW5lZDNkLnNwZWM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglXaW5lRGlyZWN0M0RDcmVhdGUgaGFzIDMgYXJncyBpbiB0aGUgc291cmNlLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSAiIiBmb3IgV2luZG93cyBpbmNsdWRlcyBpbiBkbGxzLCBpbnN0ZWFkIG9mIDw+LgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglLZXkgd29yZHMgYW5kIHJlcGxhY2VtZW50cyBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJaVNlbGVjdGVkSW1hZ2UgaXMgYWxsb3dlZCB0byBiZSAwLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggU0hDb3B5S2V5IHRvIHRyZWF0IHN0cmluZyBwYXJhbWV0ZXIgY29ycmVjdGx5IGFzIHNvdXJjZSBwYXRoCglpbnN0ZWFkIG9mIGRlc3RpbmF0aW9uIHBhdGguCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLmMsIGluY2x1ZGUvYWNsYXBpLmgsCgkgIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd3RzYXBpMzIuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHNvbWUgY2FsbGluZyBjb252ZW50aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVyIGhhbmRsaW5nIGZvciBHV0xfU1RZTEUuCglTdG9yZSBhbmQgdXNlIGh3bmRTZWxmIGluIHRoZSBQQUdFUl9JTkZPLgoJUGFzcyB0aGUgaW5mb1B0ciBhcm91bmQgaW5zdGVhZCBvZiBod25kLgoJVXNlIHByb3BlciB0eXBlcyBpbiB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcy4KCUZpeCBhIGZldyByZXR1cm4gc3RhdGVtZW50cy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRml4IHRlc3QgZm9yIFNUR01fU0hBUkVfRVhDTFVTSVZFIG9uIG5hbWVsZXNzIERvY0ZpbGVzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBpY29ucyBmb3IgdGhlIHZhbHVlIHBhbmUuCgktIERpc3BsYXkgUkVHX01VTFRJX1NaIHZhbHVlcy4KCS0gTWFrZSB0aGUgbGFjayBvZiBzdXBwb3J0IGZvciBjZXJ0YWluIHZhbHVlIHR5cGVzIG1vcmUgbm90aWNlYWJsZSB0bwoJICB0aGUgdXNlci4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBpZiBhbnkgZWRpdCBvcGVyYXRpb24gZmFpbHMuCgktIE1ha2Uga2V5IHJlbmFtaW5nIGZhaWwgaWYgdGhlIGRlc3RpbmF0aW9uIGtleSBhbHJlYWR5IGV4aXN0cy4KCS0gQmV0dGVyIGVycm9yIHJlY292ZXJ5IGluIHRoZSBjYXNlIHdoZXJlIFNIQ29weUtleSBmYWlscy4KCgkqIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZW1vdmVkIHdyb25nIEZJWE1Fcy4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglTcGVjaWZ5IGNvcnJlY3QgYnVmZmVyIHNpemUgaW4gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXIGNhbGxzLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUltcHJvdmUgcGFyYW1ldGVyIGNoZWNraW5nIGluIE50Q3JlYXRlRmlsZS4KCUFkZCBkb2N1bWVudGF0aW9uIGZvciBlYV9idWZmZXIgYW5kIGVhX2xlbmd0aC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IE1hdHRoZXcgTWFzdHJhY2NpIDxtYXR0QGFjbGFyby5jb20+CglJZiBhIEZPVVJDQyBzdXJmYWNlIHNwZWNpZmllcyBERFNEX1BJVENILCB1c2UgdGhhdCBpbnN0ZWFkIG9mCglkd0xpbmVhclNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlbGV0ZSB0aGUgY3JpdGljYWwgc2VjdGlvbiB3aGVuIGZyZWVpbmcgdXAgdGhlIGluZm9QdHIuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcmludCBvdXQgbWVzc2FnZSBuYW1lIHRvIG1ha2UgcmVhZGluZyB0cmFjZXMgZWFzaWVyLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9wYWludC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CgktIFBhZ2VVcCBrZXkgc3VwcG9ydC4KCS0gU3VwcG9ydCBmb3IgIm5vcm1hbCIgc2Nyb2xsIGJhciBmdW5jdGlvbmFsaXR5IChsaW5lIGFuZCBwYWdlCgkgIHNjcm9sbGluZykuCgoyMDA1LTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBUTFMgZXhwYW5zaW9uIHNsb3RzLCBhZGRpbmcgYW4gZXh0cmEgMTAyNAoJZW50cmllcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRmFsbCBiYWNrIHRvIGRlZmF1bHQgcHJlcGFyZS91bnByZXBhcmUgaGVhZGVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggYmxvY2sgYWxpZ24gZXJyb3IgbWVzc2FnZSB0byBzaG93IGxlbmd0aCBiZWZvcmUgZml4IHVwLgoKCSogZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdXNhZ2Ugb2YgU1RHTV8gZW51bWVyYXRpb25zLCByZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBpbnRlcmZhY2UgbWV0aG9kcy4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGFuIHVudXNlZCBmdW5jdGlvbi4KCgkqIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2kvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL3Rlc3RzL3N1bWluZm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gdGVzdCBjYXNlcyBmb3Igc3VtbWFyeSBpbmZvcm1hdGlvbgoJLSBmaXggbWVtb3J5IGxlYWtzCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJc3N1ZSBhIHdhcm5pbmcgaWYgbm8gc291bmQgc3lzdGVtIHdhcyBmb3VuZC4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9ydW4uYywgZGxscy9yaWNoZWQyMC9zdHJpbmcuYywKCSAgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gbWFkZSBzdHJpbmcgb3BlcmF0aW9ucyBjb25zaXN0ZW50IHdydCB3aGl0ZXNwYWNlIGhhbmRsaW5nICh3aGljaAoJICBzaG91bGQgZ3JlYXRseSBpbXByb3ZlIHN0YWJpbGl0eSBvZiB0aGUgd3JhcCBjb2RlIGFuZCBlbGltaW5hdGUKCSAgcmVncmVzc2lvbnMgb2YgdGhlIG1vc3QgcmVjZW50IHZlcnNpb25zKQoJLSBjb21wbGV0ZWx5IG5ldyBzY3JvbGxiYXIgaGFuZGxpbmcgKG11Y2ggbW9yZSByZWxpYWJsZSkgYW5kIHJlbGF0ZWQKCSAgcmVkcmF3IGZpeGVzCgktIFBhZ2UgRG93biBoYW5kbGVyIChubyBQYWdlIFVwIHlldCwgZml4aW5nIHdyYXAvcmVkcmF3L3Njcm9sbGJhciBidWdzCgkgIHdhcyBvZiBoaWdoZXIgcHJpb3JpdHkpCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWFkbG9jayBjYXVzZWQgYnkgbm90IGxlYXZpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb24gb24gYWxsIGNvZGUKCXBhdGhzLgoKCSogZGxscy9vbGUzMi9vbGUyaW1wbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggbWVtb3J5IGxlYWsgaW4gT2xlRHVwbGljYXRlRGF0YSBvbiBlcnJvciBwYXRoIChmb3VuZCBieSBTbWF0Y2gpLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldENQSW5mbyBzaG91bGQgcmV0dXJuIEZBTFNFIGlmIGNhbGxlZCB3aXRoIE5VTEwgaW5mbyBidWZmZXIuCgoJKiBkbGxzL2F0bC9yZWdpc3RyYXIuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIEZpbGVbVW5dUmVnaXN0ZXIgYW5kIFJlc291cmNlW1VuXVJlZ2lzdGVyU3ouCgoJKiB0b29scy93aW5lLmluZjogUGF1bCBNaWxsYXIgPHAubWlsbGFyQHBoeXNpY3MuZ2xhLmFjLnVrPgoJQnJpbmcgZGVmYXVsdCByZWdpc3RyeSBpbiBsaW5lIHdpdGggaW1wbGljaXQgZGVmYXVsdCBiZWhhdmlvdXIgYnkKCXVzaW5nIHRoZSAtLWF1dG8gb3B0aW9uIHdpdGggd2luZWRiZy4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBdm9pZCBhIG1hZ2ljIG51bWJlci4KCjIwMDUtMDMtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuYzoKCUZpeGVkIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgeHJlYWxsb2MoMCkgYnVnLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy91cGRvd24uYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCUMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJVVBET1dOX0dldEJ1ZGR5SW50IHNob3VsZCBub3QgZmFpbCB3aGVuIHRoZSBjb250cm9sIGlzIGVtcHR5LgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktV3Vuc2lnbmVkIGZpeGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglEb24ndCBjcmFzaCBvbiB4cmVhbGxvYygwKSAoZm91bmQgYnkgSm9uIEdyaWZmaXRocykuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeGVkIHZhcnR5cGUgdGVzdC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvc3VtaW5mby5jLCBpbmNsdWRlL21zaS5oLAoJICBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc3VtbWFyeSBpbmZvcm1hdGlvbiBsb2FkaW5nIGFuZCBzYXZpbmcuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBAMTg4LDE5MCwxOTUsMjAwLDI1Niw0NzgsNDgxLgoJSVVua25vd25fRW5hYmxlTW9kZWxlc3MoKSBhbHNvIGhhbmRsZXMgSU9sZUluUGxhY2VBY3RpdmVPYmplY3QuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCVJldmVydCBjaGFuZ2VzIHRvIHRoZSBwYWludGluZyBjb2RlLCB0aGUgV01fQ1RMQ09MT1JTVEFUSUMgbWVzc2FnZQoJc2hvdWxkIG5vdCBiZSBzZW50IGZyb20gdGhlIGFuaW1hdGlvbiB0aHJlYWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgc3VwcG9ydCBmb3IgbW9yZSB0aGFuIG9uZSBzb3VuZCBjYXJkLgoJRml4IHdhdmUgb3V0IHN1cHBvcnQgd2hlbiBubyB2b2x1bWUgY29udHJvbCBpcyBwcmVzZW50LgoJVXNlIHByb3BlciBzdHJ1Y3R1cmUgZm9yIHdhdmUgaW4gZGV2aWNlIGNhcHMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoZWNrIHdhdmUgb3V0IHZvbHVtZSBzdXBwb3J0LgoKCSogZGxscy9hdGwvYXRsLnJnczogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeGVkIGF0bC5yZ3MuCgoJKiBkbGxzL2F0bC9yZWdpc3RyYXIuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUtleXMgbWF5IGhhdmUgb25seSBvbmUgb2YgYXR0cmlidXRlcy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggY29tcGlsYXRpb24gb2YgdGhlIGNhc2Ugd2l0aG91dCBwcm9wZXIgTGludXggam95c3RpY2sgc3VwcG9ydC4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgc3VwcG9ydCBmb3IgUlRGIGRvY3VtZW50cyB1c2luZyBBTlNJIGNoYXJzZXQgYW5kIGFkZGVkIHN1cHBvcnQKCWZvciBtdWx0aWJ5dGUgY2hhcnNldHMsIHNvIHRoYXQgQklHNSBhbmQgVVRGLTggUlRGIGRvY3VtZW50cyBhcmUKCXdvcmtpbmcgbm93LgoKMjAwNS0wMy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwvdGVzdHMvaGVhcC5jLAoJICBkbGxzL21hcGkzMi9pbWFsbG9jLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NobHdhcGkvcmVnLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIExNRU1fIGZsYWdzIGZvciBMb2NhbEFsbG9jKCksIG5vdCBHTUVNXyAoR2xvYmFsQWxsb2MpLgoKCSogc2VydmVyL3F1ZXVlLmM6CglSZXZlcnQgdGhlIHByZXZpb3VzIGNoYW5nZSwgdGhpcyBpcyBub3Qgd29ya2luZyByaWdodCB5ZXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRm9yIFNoZWxsRXhlY3V0ZUV4QSB3ZSBuZWVkIHRvIGNvcHkgb3V0IHRoZSBoUHJvY2VzcyB2YWx1ZSBmcm9tIHRoZSBXCglzdHJ1Y3R1cmUuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2RpY3Rpb25hcnkuYywKCSAgZGxscy9vbGUzMi9kaWN0aW9uYXJ5LmgsIGRsbHMvb2xlMzIvc3RnX3Byb3AuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUJlZ2luIGltcGxlbWVudGluZyBJUHJvcGVydHlTdG9yYWdlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCU1ha2UgdGhlIHNlcnZlciBrbm93IGFib3V0IHRoZSB2aXNpYmxlIGFyZWEgb2YgYSB3aW5kb3csIHdoaWNoIGlzIHRoZQoJd2luZG93IHJlY3QgbWludXMgdGhlIGNhcHRpb24gYW5kIGJvcmRlcnMgd2hlbiB0aGV5IGFyZSBoYW5kbGVkIGJ5IHRoZQoJd2luZG93IG1hbmFnZXIuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5pbmV0LmgsCgkgIGluY2x1ZGUvd2lubnQuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYXRjaCBPVkVSTEFQUEVEIHN0cnVjdHVyZSB0byB0aGUgU0RLIGRlZmluaXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZhbGwgYmFjayB0byBkZWZhdWx0IGhlYWRlciBwcmVwYXJlIGFuZCB1bnByZXBhcmUgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSBkZWFkIGNvZGUgYW5kIHNvbWUgaWZkZWZzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBtb3JlIHRlc3RzIGFuZCBmaXggSW50ZXJuZXRUaW1lVG9TeXN0ZW1UaW1lVyBhY2NvcmRpbmdseS4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSByZWdyZXNzaW9uIGluIHRoZSBmaWxlIG9wZW4gZGlhbG9nLgoKCSogZGxscy9udGRsbC9yZWcuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkIHBhcmFtZXRlciBjaGVja2luZyBhbmQgcmVtb3ZlIGxhc3QgZml4bWUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU1vcmUgdHJhY2UgaW5mby4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSByZWFsIGRldmljZSBuYW1lLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmM6CglDb21wdXRlIHRoZSB0b3AgY2xpcHBpbmcgd2luZG93IGRpcmVjdGx5IG9uIHRoZSBzZXJ2ZXIgc2lkZS4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU1vcmUgdHJhY2UgaW5mby4KCgkqIGRsbHMvYXRsL01ha2VmaWxlLmluOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVwZW5kZW5jaWVzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgcGF0aCB0byB1bmljb2RlLCByZWFycmFuZ2UgdG8gcmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCVJlcGxhY2VkIHNsb3cgYW5kIG91dGRhdGVkIGNoYXJhY3RlciBzZXQgaGFuZGxpbmcgaW4gUlRGIHJlYWRlciBieQoJVW5pY29kZS9jb2RlcGFnZXMgc3VwcG9ydC4gQWRkZWQgY2hhcnNldC0+Y29kZXBhZ2UgY29udmVyc2lvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIGlubGluZSBzdHJpbmcgZnVuY3Rpb24gV0lOQVBJIChmb3VuZCBieSBLcnp5c3p0b2YgRm9sdG1hbikuCgoJKiBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBtaXNzaW5nIGludGVyZmFjZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywKCSAgaW5jbHVkZS9vYmpiYXNlLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBjcml0c2VjIGRlYnVnZ2luZyBpbmZvLgoJLSBNb3ZlIHRoZSBtb2RhbCBsb29wIGNhbGxlZCBkdXJpbmcgUlBDcyBpbnRvIENvV2FpdEZvck11bHRpcGxlSGFuZGxlcy4KCS0gVXNlIGEgbXV0ZXggZm9yIGxvbmcgcmVtb3RpbmcgY2FsbHMgdG8gSVJlbVVua25vd24gbWV0aG9kcy4KCS0gUmVtb3ZlIGxvY2tpbmcgaW4gYXBhcnRtZW50X2Rpc2Nvbm5lY3Rwcm94aWVzIGFzIGl0IGlzIG5vdCBuZWVkZWQuCgktIFVzZSBQb3N0TWVzc2FnZSBpbnN0ZWFkIG9mIFNlbmRNZXNzYWdlIHNvIHdlIGNhbiBydW4gdGhlIG1lc3NhZ2UKCSAgbG9vcCBvciBub3QgYXMgYXBwcm9wcmlhdGUuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZmFsbGJhY2sgdG8gZGVmYXVsdHMgaWYgYSBkcml2ZXIsIG1hcHBlciwgb3IgbWlkaSBpcyBzcGVjaWZpZWQKCWluIHRoZSByZWdpc3RyeTsgY29uc29saWRhdGUgTU1EUlZfSW5pdCgpIGludG8gYSBzaW5nbGUgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGEgY29tbWVudCBhYm91dCBieXRlIG9yZGVyLCBjaGFuZ2UgdHlwZXMgdG8gcmVkdWNlIGNhc3RpbmcgYW5kIG5vdAoJY2FzdCBhd2F5IGNvbnN0bmVzcy4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9yZWdpc3RyYXIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBEbGxDYW5VbmxvYWROb3cuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9wYXJhLmMsCgkgIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcmljaG9sZS5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oLAoJICBkbGxzL3JpY2hlZDIwL3J1bi5jLCBkbGxzL3JpY2hlZDIwL3N0cmluZy5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gUlRGIHJlYWRlciBkb2Vzbid0IHVzZSBSaWNoRWRpdCBtZXNzYWdlcyBhbnltb3JlICh3aGljaCBzYXZlcyBvbgoJICB1bm5lY2Vzc2FyeSByZXBhaW50cykKCS0gYWRkZWQgdW5pY29kZSBjaGFyYWN0ZXIgc3VwcG9ydCB0byBSVEYgaW1wb3J0IChsaWtlOiBcdTEyMzQ1ID8pCgktIHNtYWxsIGZpeGVzCgktIGZpeGVkIHdoaXRlc3BhY2UgaWRlbnRpZmljYXRpb24gYnVnCgktIHJlbW92ZWQgZHJhd2luZyBvZiBwYXJhZ3JhcGggbWFya3MKCS0gaW1wcm92ZWQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIElSaWNoRWRpdE9sZQoKMjAwNS0wMy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXByb3ZlZCBSVEYgZXhwb3J0LgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgbWlzc2luZyBQRkVfIGFuZCBQRkFfIGRlZmluaXRpb25zLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJVGVzdCBmYWlsZWQgYmVmb3JlIG9uIDk4LCBOVDQsIDIwMDAgYW5kIFhQLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYzoKCURvbid0IGZvcmNlIGluamVjdGVkIGhhcmR3YXJlIG1lc3NhZ2VzIHRvIGJlIHF1ZXVlZCBpbiB0aGUgY3VycmVudAoJdGhyZWFkLgoKCSogc2VydmVyL3F1ZXVlLmM6CglRdWV1ZSBoYXJkd2FyZSBtZXNzYWdlcyBldmVuIGlmIHdlIGRvbid0IGZpbmQgYSB3aW5kb3cgZm9yIHRoZW0gdGhlCglmaXJzdCB0aW1lIGFyb3VuZC4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHRvb2xzLy5jdnNpZ25vcmUsCgkgIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9tYWtlX2N0ZXN0cywgdG9vbHMvbWFrZV9jdGVzdHMuYzoKCUNvbnZlcnRlZCB0aGUgbWFrZV9jdGVzdHMgc2NyaXB0IHRvIEMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm95Y2UKCU1pdGNoZWxsIElJSSkuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglDb252ZXJ0ZWQgdGhlIHdpbmRvdyBjaGlsZHJlbiBsaXN0cyB0byBzdGFuZGFyZCBsaXN0cy4KCgkqIGRsbHMvYXRsLy5jdnNpZ25vcmUsIGRsbHMvYXRsL01ha2VmaWxlLmluLCBkbGxzL2F0bC9hdGwucmdzLAoJICBkbGxzL2F0bC9hdGxfbWFpbi5jLCBkbGxzL2F0bC9yZWdpc3RyYXIuYywgZGxscy9hdGwvcmVnc3ZyLmMsCgkgIGRsbHMvYXRsL3JzcmMucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVXNlIEFUTFJlZ2lzdHJhciB0byByZWdpc3RlciBhdGwuZGxsLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL3VwZG93bi5jOgoJQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglTdGFydGVkIGEgdW5pdCB0ZXN0IGNhc2UgZm9yIHRoZSB1cGRvd24gY29udHJvbC4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglfZGJnX0lMR2V0TmV4dCByZXR1cm5zIE5VTEwgaWYgcGlkbC0+bWtpZC5jYiBpcyB6ZXJvLCBmaXggdGhlIGxvb3BzCglhY2NvcmRpbmdseS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmg6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IG1lbW9yeSBhbGxvY2F0aW9uIG1hY3JvLgoKCSogaW5jbHVkZS9tc2lkZWZzLmgsIGluY2x1ZGUvcHJvcGlkbC5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvcGVydHkgSURzIGZvciBNU0kgc3VtbWFyeSBpbmZvcm1hdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4IGJyb2tlbiB0ZXN0LgoKCSogZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVNldERpc3BsYXlNb2RlIGNhbiByZXR1cm4gRERFUlJfVU5TVVBQT1JURUQuIElmIGl0IGRvZXMsIHdlIHNob3VsZG4ndAoJdHJ5IHRvIHJlc3RvcmUgc29tZXRoaW5nIGVpdGhlci4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgbWFyayBhIGZpbGUgYXMgcmVhZG9ubHkgaWYgaXQgaGFzIGFueSB3cml0ZSBiaXQgc2V0LgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldERsZ0l0ZW1UZXh0VyB0YWtlcyBidWZmZXIgbGVuZ3RoIGluIFdDSEFScyBub3QgYnl0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBjb250cm9sIGFnYWluc3QgQ29tY3RsMzIuZGxsIHZlcnNpb24gNi4wLgoJUHJvcGVyIGhhbmRsaW5nIG9mIEdXTF9TVFlMRS4KCUltcGxlbWVudCBXTV9DTE9TRS4gRml4IFdNX1NJWkUgaW1wbGVtZW50YXRpb24uCglTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IHR3byBmYWlsdXJlcyBhbmQgKGhvcGVmdWxseSkgYSBjcmFzaCB3aXRoIGVhcmx5IHZlcnNpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb3JyZWN0IHJlZ2lzdGVyaW5nIHNoZWxsIGZvbGRlcnMgKHZhbHVlcyBpbiBTaGVsbCBGb2xkZXJzIGtleSB3ZXJlbid0CglnZXR0aW5nIHdyaXR0ZW4pLgoKCSogaW5jbHVkZS9zaGxvYmouaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlZmluZXMgZm9yIFNMREYgZmxhZ3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2N1c3RvbS5jLAoJICBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVuYW1lIGR1cHN0clcgdG8gc3RyZHVwVywgYW5kIHJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbi4KCS0gTW92ZSBkZWZpbml0aW9uIG9mIHN0cmluZyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIHRvIG1zaXByaXYuaC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFjdHVhbGx5IHByaW50IGR3RXhTdHlsZSBpbiBjYXNlIG9mIGEgbWlzbWF0Y2guCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2Ygd2F2ZUluUHJlcGFyZUhlYWRlciBhbmQKCXdhdmVJblVucHJlcGFyZUhlYWRlciBpZiBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHRoZW0uCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+Cgl3YXZlSW5QcmVwYXJlSGVhZGVyIGFuZCB3YXZlSW5VbnByZXBhcmVIZWFkZXIgYXJlIG5vdCByZWFsbHkgbmVlZGVkCgliZWNhdXNlIHRoZSBjb250ZW50cyBkb24ndCBjaGFuZ2UuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYSBsaW5rIHRvIFdpbmUncyBIb3dUby4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIFVua25vd24gZGVzdGluYXRpb25zIGFyZSBub3cgY29ycmVjdGx5IHNraXBwZWQgKHNvIGxvYWRpbmcgYW4gUlRGCgkgIGZpbGUgZ2VuZXJhdGVkIGJ5LCBmb3IgZXhhbXBsZSwgT3Blbk9mZmljZSBkb2Vzbid0IHByb2R1Y2UgbG90cyBvZgoJICBnYXJiYWdlIGFueW1vcmUpLgoJLSBGb3JtYXQgc3RhY2sgZm9yIFJURiBncm91cHMgKHNvIHRoYXQgUlRGIHJlYWRlciBjYW4gY29ycmVjdGx5IHJlYWQKCSAgd2hhdCBSVEYgd3JpdGVyIHdyb3RlIDopICkKCgkqIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuYywgZGxscy93dHNhcGkzMi93dHNhcGkzMi5zcGVjLAoJICBpbmNsdWRlL3d0c2FwaTMyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBXVFNDbG9zZVNlcnZlciwgV1RTRGlzY29ubmVjdFNlc3Npb24sCglXVFNFbnVtZXJhdGVQcm9jZXNzZXN7QSxXfSwgV1RTRW51bWVyYXRlU2Vzc2lvbnN7QSxXfSwKCVdUU1F1ZXJ5U2Vzc2lvbkluZm9ybWF0aW9uQS4KCjIwMDUtMDMtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglCdWlsZCBhIHN0YXRpYyBsaXN0IG9mIGRldmljZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIEVMRgoJY29uc3RydWN0b3JzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglNb3JlIHRyYWNlIGluZm8uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUNyeXB0QWNxdWlyZUNvbnRleHRBKCkgY2FuIHJldHVybiBOVEVfRkFJTCBvbiBXaW5kb3dzIDk4LgoKCSogZGxscy9kYmdoZWxwL21zYy5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglJbml0aWFsaXplIHRoZSAidG9jIiBmaWVsZCBpbiB0aGUgcGRiX2xvb2t1cCBzdHJ1Y3R1cmUgaW4gb3JkZXIgdG8KCXByZXZlbnQgcGRiX2ZyZWVfbG9va3VwIGZyb20gdHJ5aW5nIHRvIGRlbGV0ZSBpbnZhbGlkIHBvaW50ZXJzLgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVW5jb25kaXRpb25hbGx5IGZyZWUgbWVtb3J5LiBTaG91bGQgbWFrZSBzbWF0Y2ggaGFwcHkuCgoJKiBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcGxlbWVudGVkIGhhc2ggdGFibGUgbG9va3VwIGZvciBSVEYga2V5d29yZHMgaW4gUlRGIHJlYWRlci4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJVXNlIHRoZSBjb3JyZWN0IGZpbGUgbmFtZSBpbiB0aGUgImdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IiBjb21tZW50cy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIFdNX0NPUFkgKGFuZCBXTV9DVVQpIGNhbiBub3cgcHV0IGJvdGggVW5pY29kZSBhbmQgUlRGIGZvcm1hdCAodGhhbmtzCgkgIHRvIFBoaWwgS3J5bG92J3MgUlRGIGdlbmVyYXRvciBjb2RlKS4KCS0gTmV3IG1lc3NhZ2UgaW1wbGVtZW50ZWQgLSBXTV9QQVNURS4KCS0gUlRGIHJlYWRlcjogcnRmUGxhaW4gaW1wbGVtZW50ZWQgKGtpbmQgb2YpLgoJLSBSVEYgd3JpdGVyOiByZXdyaXR0ZW4gbWFpbiBsb29wICh0aGUgb2xkIG9uZSBjcmFzaGVkIGluIHNvbWUKCSAgY2lyY3Vtc3RhbmNlcyB3aGVuIFNGRl9TRUxFQ1RJT04gd2FzIHVzZWQpLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlIHNvbWUgZ2xvYmFsIHZhcmlhYmxlIG5hbWVzLgoJQ2xlYW51cCB1c2FnZSBvZiBnbG9iYWwgZHNvdW5kIHZhcmlhYmxlIHRvIG5vdCB1c2UgbG9jYWwgdmFyaWFibGUgb2YKCXNhbWUgbmFtZS4KCUFsbW9zdCByZWFkeSB0byBhZGQgc3VwcG9ydCBmb3IgbW9yZSB0aGFuIG9uZSBzb3VuZCBjYXJkIGF0IHRoZSBzYW1lCgl0aW1lLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAZ21haWwuY29tPgoJQWRkIHRocmVlIG1pc3NpbmcgZGxscyB0byB0aGUgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCBhbmQgc2ltcGxpZnkgdGhlIHBhaW50aW5nIGNvZGUuCglGaXggYSBwb3RlbnRpYWwgYnVnIGFsb25nIHRoZSB3YXkuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL21jaS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBwYXRoLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IG1lbW9yeSBsZWFrIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IGRyaXZlcnMuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBdm9pZCB0cmFwIGluIG1peGVyR2V0TGluZUNvbnRyb2xzQSB3aGVuIGNDb250cm9scyBpcyB1bmluaXRpYWxpemVkCglhbmQgTUlYRVJfR0VUTElORUNPTlRST0xTU0ZfT05FQllUWVBFIHJlcXVlc3RlZC4KCjIwMDUtMDMtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgbWxhbmdfdGVzdC5leGUgbG9hZGFibGUgb24gTlQgNC4wLgoKCSogZGxscy9yaWNoZWQyMC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBFTV9TVFJFQU1PVVQgYW5kIFJURiB3cml0ZXIuCgoJKiBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkICJnZW5lcmF0b3IiIFJURiBkZXN0aW5hdGlvbiBoYW5kbGluZy4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIG1pc3NpbmcgUEZBX0pVU1RJRlkgZGVmaW5pdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCUF2b2lkIGFjY2Vzc2luZyBhbiB1bmluaXRpYWxpemVkIHN0cmluZyBpbiB0aGUgZmFpbHVyZSBjYXNlLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBtaXNjL3JlZ2lzdHJ5LmM6CglHZXQgcmlkIG9mIHRoZSByZW1haW5pbmcgcmVnaXN0cnkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgoKCSogc2VydmVyL3F1ZXVlLmM6CglBdm9pZCByZXR1cm5pbmcgaGFyZHdhcmUgbWVzc2FnZXMgaWYgdGhleSBoYXZlIG5vIGNoYW5jZSB0byBtYXRjaCB0aGUKCWZpbHRlci4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWM6CglNYXR0aGV3IE1hc3RyYWNjaSA8bW1hc3RyYWNAY2FuYWRhLmNvbT4KCUltcGxlbWVudCBSZWdpc3Rlck9DWC4KCVN0dWIgZm9yIERlbE5vZGVSdW5ETEwzMi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCByZWxlYXNlIGNhcHR1cmUgYmVmb3JlIHNlbmRpbmcgV01fTkNERVNUUk9ZIG1lc3NhZ2UsIHVwZGF0ZSB0aGUKCXRlc3RzIHRvIHJlZmxlY3QgdGhhdC4KCgkqIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Nob2JqaWRsLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucyB0byBzaG9iamlkbC5pZGwuCgoJKiBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFzc29ydGVkIG1lbWxlYWsgZml4ZXMuIEZvdW5kIG9uIE1pY2hhZWwgU3RlZmFuaXVjIHNtYXRjaCBsaXN0LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUdldCByaWQgb2YgdGhlIHJlZ2lzdHJ5IHNhdmluZyBsZXZlbCBoYWNrLgoJTWFrZSBwZXJpb2RpYyBzYXZpbmcgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOiBSYWxmIFMuIEVuZ2Vsc2NoYWxsIDxyc2VAZW5nZWxzY2hhbGwuY29tPgoJRml4IGluY29ycmVjdCByYW5kb20gbXVsdGljYXN0IE1BQyBhZGRyZXNzIGNyZWF0aW9uLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglVcGRhdGUgbnRkbGwuc3BlYyBhZ2FpbnN0IGN1cnJlbnQgTWljcm9zb2Z0IGJ1aWxkLgoKCSogZGxscy9hdGwvLmN2c2lnbm9yZSwgZGxscy9hdGwvTWFrZWZpbGUuaW4sIGRsbHMvYXRsL2F0bGlmYWNlLmlkbCwKCSAgZGxscy9hdGwvcmVnaXN0cmFyLmMsIGRsbHMvYXRsL3JlZ3N2ci5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIEFUTFJlZ2lzdHJhci4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRXZhbiBEZWF1YmwgPHdpbmVAd2FycGVkdmlldy5jb20+CglUUkVFVklFV19Eb1NlbGVjdEl0ZW0gc2hvdWxkIG5vdCBkbyBhbnkgb2YgdGhlIFRWR05fRklSU1RWSVNJQkxFIHdvcmsKCWlmIHRoZSBuZXdTZWxlY3QgcGFyYW1ldGVyIGlzIE5VTEwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBzd2l0Y2ggdG8gY29ycmVjdCBzaGVsbCBkZXNrdG9wIGNvbnRleHQgbWVudQoJLSBsYXVuY2ggZGVzay5jcGwgd2hlbiBhY3RpdmF0aW5nIHRoZSBkZXNrdG9wIGNvbnRleHQgbWVudSBlbnRyeQoJICAicHJvcGVydGllcyIKCS0gZG9uJ3Qgc2VuZCBXTV9DT01NQU5EIGlmIHdlIGRpZG4ndCBnZXQgYSBzaGVsbCB2aWV3IHdpbmRvdwoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueTogQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglBZGQgdFNUUklORyB0byB0aGUgcGF0aG5hbWUgcHJvZHVjdGlvbiwgc28gdGhhdCB5b3UgY2FuIHF1b3RlIGEKCXBhdGhuYW1lIHdoaWNoIGNvbnRhaW5zICdvZGQnIGNoYXJhY3RlcnMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmw6IEMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJTW92ZSBkZWZpbml0aW9uIG9mICd0UEFUSCcgdG9rZW4gdXAsIHNvIHRoYXQgJy8nLCAnLicgYW5kICcweEEnIChldGMpCglhcmUgbGV4ZWQgYXMgcGF0aHMgKGluIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0cykgaW5zdGVhZCBvZiBhcwoJb3BlcmF0b3Igb3IgbnVtYmVyIHRva2Vucy4KCUFkZCAnLScgdG8gdGhlIHNldCBvZiBjaGFyYWN0ZXJzIGxlZ2FsIGluIGEgcGF0aG5hbWUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWw6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gcmVvcmdhbmlzYXRpb24gb2YgZnVsbCBjaGFwdGVyCgktIHJld3JvdGUgdGhlIGNvbnNvbGUgcGFydAoJLSBhZGRlZCBGUyBkb2N1bWVudGF0aW9uCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jOiBKb3JpcyBIdWl6ZXIgPGpvcmlzaHVpemVyQHBsYW5ldC5ubD4KCUEgZmV3IG1lbW9yeSBjaGVja3MgYXZvaWRpbmcgbWVtb3J5IGxlYWtzLgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC92b2x1bWUuYywKCSAgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUVuY2Fwc3VsYXRlIHRleHR1cmUsIHN1cmZhY2UgZW5jYXBzdWxhdGVkLgoJQWRkZWQgQmluZFRleHR1cmUsIEdldFRleHR1cmVEaW1lbnNpb25zLCBVbkJpbmRUZXh0dXJlLgoJUHJvcGVyIEdldENvbnRhaW5lciBzdXBwb3J0IGZvciBzdXJmYWNlLgoJU2V0Q29udGFpbmVyIGFkZGVkIHRvIHN1cmZhY2UgYW5kIHZvbHVtZS4KCVNldEluUGJ1ZmZlclN0YXRlIGFkZGVkIHRvIHN1cmZhY2UgKHVudGlsIGdsIGNvbnRleHQgbWFuYWdlbWVudCBpcwoJaW1wbGVtZW50ZWQpLgoJTWlub3IgY2hhbmdlczoKCS0gQmFzZVRleHR1cmUgbm8gbG9uZ2VyICdob2xkcycgYSByZWZlcmVuY2UgdG8gSVdpbmVEM0REZXZpY2UgdG8KCSAgcHJldmVudCBjaXJjdWxhciByZWZlcmVuY2luZy4KCS0gQmV0dGVyIG1hbmFnbWVudCBvZiByZWZlcmluZ2luZyBmb3IgdGV4dHVyZS4KCS0gU29tZSBUT0RPJ3MgZm9yIGltcGxlbWVudGluZyBhIGNvbnRleHQgbWFuYWdlci4KCS0gQmV0dGVyIHByZWxvYWQgaW1wbGVtZW50YXRpb24uCgktIEZpeCBjb21waWxlIHdhcm5pbmcgaW4gZGV2aWNlLmMgU2V0L0dldFNhbXBsZXJTdGF0ZS4KCS0gQWRkIFF1ZXJ5SW50ZXJmYWNlIHN1cHBvcnQgZm9yIHN1cmZhY2UuCgktIEZvcm1hdCBYOFI4RzhCOCBhZGRlZCB0byBsb2NraW5nLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUnBjTWdtdFN0b3BTZXJ2ZXJMaXN0ZW4gc2hvdWxkIG5vdCBhZmZlY3QgYXV0by1saXN0ZW4gaW50ZXJmYWNlcy4KCS0gSW1wbGVtZW50IHN0dWIgZm9yIFJwY1JldmVydFRvU2VsZkV4LgoJLSBDaGFuZ2UgdGhlIG1vcmUgdmVyYm9zZSBmaWxlcyB0byB1c2UgYSBuZXcgZGVidWcgY2hhbm5lbCwgInJwYy4iCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL21ydS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29tbWVudCBvdXQgYSB0ZXN0IHRoYXQgY3Jhc2hlcyBvbiBlYXJseSB2ZXJzaW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdHMgYW5kIHNtYWxsIGZpeCBmb3IgUGF0aE1ha2VQcmV0dHkoKS4KCUZpeCBhIGNyYXNoIGFuZCB0ZXN0IGZhaWx1cmUgd2l0aCBlYXJseSBuYXRpdmUgZGxscy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pY29kaWZpY2F0aW9uIGFuZCB0eXBlc2FmZSBpbnRlcmZhY2VzLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBWVF9CWVJFRiB8IFZUX0JTVFIgbWFyc2hhbGxpbmcuCgktIEFkZCBtb3JlIGludGVnZXIgdHlwZXMgZm9yIG1hcnNoYWxpbmcgYW5kIHVubWFyc2hhbGluZy4KCS0gSW1wbGVtZW50IFZUX0JZUkVGIHwgVlRfQlNUUiB1bm1hcnNoYWxpbmcuCgktIERvbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgVEtJTkRfRElTUEFUQ0gvVEtJTkRfSU5URVJGQUNFCgkgIHVubWFyc2hhbGluZyBhcyBpdCB3aWxsIGJlIGxvc3QgaW4gdGhlIHN1Y2Nlc3MgY2FzZSBhbmQgaW50ZXJmZXJlcwoJICB3aXRoIHRoZSBmYWlsdXJlIGNhc2UuCgoJKiBkbGxzL250ZGxsL3JlZy5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglNYWtlIFJ0bCpSZWdpc3RyeSogZnVuY3Rpb25zIGNhc2UgaW5zZW5zaXRpdmUuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglNYWtlIE1FX0Fycm93TGVmdCgpIHJldHVybiBhIHZhbHVlIGluIGV2ZXJ5IGNhc2UuCgoJKiBpbmNsdWRlL25wYXBpLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggZnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIG1zdmMgYnVpbGQuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ2hhbmdlIGEgZml4bWUgdG8gYSB3YXJuLCBhbmQgdXNlIFcgdmVyc2lvbiBvZiBjYWxsLgoKCSogZGxscy9nZGkvbWV0YWZpbGUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSWYgYSB6ZXJvIGluZGV4IGlzIHBhc3NlZCB0byBNRVRBX1NFTEVDVENMSVBSRUdJT04gcmVzZXQgdGhlIGNsaXAKCXJlZ2lvbi4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNwZWNpYWwgY2FzZSBXaW45eCBwbGF0Zm9ybXMgaW4gdGhlIGRlc2t0b3AgdmlzaWJpbGl0eSB0ZXN0LCBpbiBXaW45OAoJR2V0VXNlck9iamVjdEluZm9ybWF0aW9uIGlzIGEgc3R1YiByZXR1cm5pbmcgRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBhIHRlc3QgdG8gcGFzcyB1bmRlciBYUC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIG1zZy5jIGFuZCB3aW4uYyBmYWlsdXJlcyBydW5uaW5nIG9uIE5UNCBhbmQgWFAuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXhlcy4KCgkqIGRsbHMvbXNjbXMvbXNjbXMuc3BlYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ29ycmVjdCBDaGVja0JpdG1hcEJpdHMgZW50cnkuCgoJKiBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTGluayBtYXBpMzIgdG8gbnRkbGwuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWRkIEVDVCB0byB0aW1lem9uZSBsaXN0LgoKCSogZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJpdmF0ZSBwcm9wZXJ0eSBzZXRzIGRvIG5vdCBleGlzdCBpbiBlYXJseSB2ZXJzaW9ucyBvZiBEaXJlY3QgU291bmQKCXNvIHNraXAgdGVzdHMgaWYgbm90IHN1cHBvcnRlZC4KCUFkZCB0ZXN0cyBmb3IgQSwgVyBhbmQgMSB2YXJpYXRpb25zIG9mIGRhdGEuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgbWlzc2luZyBmdW5jdGlvbmFsaXR5LgoJQWRkIG1vcmUgYW5kIGJldHRlciBlcnJvciBtZXNzYWdlcy4KCUFkZCBjaGVja3MgZm9yIGZhaWxlZCBIZWFwQWxsb2MuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFzc29ydGVkIG1lbWxlYWsgZml4ZXMuIEZvdW5kIG9uIE1pY2hhZWwgU3RlZmFuaXVjIHNtYXRjaCBsaXN0LgoKMjAwNS0wMy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzogUmVwbGFjZSBjYWxsb2MoKSBieSBIZWFwQWxsb2MoKS4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IEdldCByaWQgb2YgdmVyc2lvbiAjaWZkZWZzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0Z09wZW5TdG9yYWdlIHNob3VsZG4ndCBvcGVuIHplcm8gbGVuZ3RoIHN0b3JhZ2UgZmlsZXMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9Dcy5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRGUucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL0VzLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9Gci5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvSXQucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL1B0LnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJSW50ZXJuYXRpb25hbGl6YXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBtaXNjL3JlZ2lzdHJ5LmM6CglHZXQgcmlkIG9mIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5IGxvYWRpbmcgb24gc3RhcnR1cCwgdGhpcyBuZWVkcyB0byBiZQoJZG9uZSBkaWZmZXJlbnRseS4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6IFRob21hcyBLaG8gPHRob21hc2tob0BnbWFpbC5jb20+CglBZGRlZCBzZWxlY3Rfc2VydmVyKCkgdGVzdCB0aGF0IHVzZXMgc2VsZWN0KCkgaW4gc2VydmluZyBjbGllbnRzLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBc3NvcnRlZCBtZW1sZWFrIGZpeGVzLiBGb3VuZCBvbiBNaWNoYWVsIFN0ZWZhbml1YyBzbWF0Y2ggbGlzdC4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL0VuLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJQWRkIHNlYXJjaCBmaWVsZCB3aXRoIGZpbmQtYXMteW91LXR5cGUgZnVuY3Rpb24uCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSAtaXN5c3RlbSBmb3Igc3lzdGVtIGluY2x1ZGVzIGFzIHRoZXkgc2hvdWxkIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUKCS1JIGluY2x1ZGVzLiBTcG90dGVkIGJ5IEJvYXogSGFycm9zaC4KCgkqIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9yZXNvdXJjZS5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOS92b2x1bWUuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywgZGxscy9kM2Q5L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2hhbmdlIEFkZFJlZiBpbiBxdWVyeUludGVyZmFjZSB0byBJVW5rbm93bl9BZGRSZWYuCglNb3ZlIHBwVm91bG1lIHRvIGQzZDl2b2xvdW1laW1wbCBzdHJ1Y3R1cmUuCglTb21lIG1pbm9yIHN0eWxpc3RpYyBjaGFuZ2VzIChtYWtpbmcgZXZlcnl0aGluZyB0aGUgc2FtZSkuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLAoJICBkbGxzL3JpY2hlZDIwL3N0eWxlLmMsIGRsbHMvcmljaGVkMjAvdW5kby5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBFTV9TVFJFQU1JTiBjYW4gbm93IGRlYWwgd2l0aCB1bmRvIGluIGEgcmVhc29uYWJsZSBtYW5uZXIgKG5vCgkgIG11bHRpcGxlIHVuZG8gYWN0aW9ucyBpbiBvbmUgRU1fU1RSRUFNSU4pLgoJLSBSZWxhdGVkIGNoYW5nZXMgdG8gdW5kbyBjb2RlICh1bUlnbm9yZSBtb2RlIGlzIG5vdyBoYW5kbGVkCgkgIGNvcnJlY3RseSkuCgktIE51bWVyb3VzIGltcHJvdmVtZW50cyBpbiB0aGUgUlRGIHJlYWRlcjogaXQgcmVhZHMgc29tZSBjaGFyYWN0ZXIKCSAgYXR0cmlidXRlcyBub3cgKHlvdSB3aWxsIGhhdmUgcHJvcGVyIHNtYWxsIHByaW50IGluIGxpY2Vuc2UgYWdyZWVtZW50cwoJICBub3cpLgoJLSBGaXhlZCBhIG1lbW9yeSBvdmVyd3JpdGUgYnVnIGluIGNvbnZlcnNpb24gZnJvbSBDSEFSRk9STUFUMkEgdG8KCSAgQ0hBUkZPUk1BVDJXLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbmFtZSBhcGFydG1lbnQgZnVuY3Rpb25zIHRvIGJlY29tZSBtb3JlIG9iamVjdC1vcmllbnRlZC4KCS0gUmVuYW1lIHJlZ2lzdGVyX2lmc3R1YiB0byBtYXJzaGFsX29iamVjdCB0byBtb3JlIGFjY3VyYXRlbHkgZGVzY3JpYmUKCSAgd2hhdCBpdCBkb2VzLgoJLSBBZGQgbmV3IGZ1bmN0aW9uLCBhcGFydG1lbnRfZ2V0b3hpZCwgdG8gcHJlcGFyZSBmb3IgYSBwb3NzaWJsZQoJICBmdXR1cmUgcGF0Y2ggd2hlcmUgcmVtb3RpbmcgaXMgc3RhcnRlZCBvbiBkZW1hbmQuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBvdXRlciB1bmtub3duIHN1cHBvcnQgZm9yIHR5cGVsaWIgbWFyc2hhbGVyLgoKMjAwNS0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDA1MDMxMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IGEgY3Jhc2ggaWYgdGhlIE1vemlsbGEgQWN0aXZlWCBjb250cm9sIGRvZXNuJ3QgaW1wbGVtZW50CglEbGxDYW5VbmxvYWROb3cuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgRGxsQ2FuVW5sb2FkTm93LgoKCSogZGxscy9tc2kvYXBwc2VhcmNoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBhIHJlZ3Jlc3Npb24gaW4gQXBwU2VhcmNoLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9yZWdpc3RyeS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IE1zaUVudW1SZWxhdGVkUHJvZHVjdHMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglDbGVhciB0aGUgaW50ZXJuYWwgcGFpbnQgZmxhZyBpbiB0aGUgc2VydmVyIGJlZm9yZSByZXR1cm5pbmcgYQoJV01fUEFJTlQgbWVzc2FnZSB0byBhdm9pZCBhbiBleHRyYSBzZXJ2ZXIgcm91bmQtdHJpcC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhIHRlc3QgZm9yIHRoZSBkZXNrdG9wIHZpc2liaWxpdHkgYmFzZWQgb24gdGhlIE1TRE4gYXJ0aWNsZQoJcG9pbnRlZCBvdXQgYnkgUm9iZXJ0IFNoZWFybWFuLgoKCSogZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYywgd2luZG93cy93aW5wcm9jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgNTEyIGJ5dGUgYnVmZmVyIGZvciBidWZmZXIgb2YgTEJfR0VUVEVYVCBhbmQgQ0JfR0VUTEJURVhULgoJQWRkZWQgdGVzdGNhc2Ugd2l0aCA+IDI1NiBieXRlIHN0cmluZyBpbiBsaXN0Ym94LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazogQnJvdWFyZCBOaWNvbGFzIDxuaWNvbGFzLmJyb3VhcmRAbGliZXJ0eXN1cmYuZnI+CglGaXggbWVudSBiYWNrc2xhc2ggZXNjYXBpbmcuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUZXN0IGZvciAlU3lzdGVtcm9vdCUuCgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBHZXRTY3JvbGxCYXJJbmZvKCkgZnVuY3Rpb24gYW5kIFNCTV9HRVRTQ1JPTExCQVJJTkZPCgltZXNzYWdlLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5oLAoJICB3aW5kb3dzL21lc3NhZ2UuYzoKCU1lcmdlIHRoZSByZXN0IG9mIHRoZSBtZXNzYWdpbmcgY29kZSBpbnRvIGRsbHMvdXNlci9tZXNzYWdlLmMgYW5kIGdldAoJcmlkIG9mIHdpbmRvd3MvbWVzc2FnZS5jLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRW4ucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5oLCBwcm9ncmFtcy91bmluc3RhbGxlci9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJVXNlIGEgZGlhbG9nIGluc3RlYWQgb2YgYSBub3JtYWwgd2luZG93LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmM6CglQcm9wZXJseSBjb3BlIHdpdGggZ2V0X21lc3NhZ2UgYmVpbmcgY2FsbGVkIHJlY3Vyc2l2ZWx5IHdoaWxlCglwcm9jZXNzaW5nIGEgaGFyZHdhcmUgbWVzc2FnZS4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gWExpc3RJbnB1dERldmljZXMgc3BlYyBzYXkgdGhhdCBkZXZpY2UgbGlzdCBzaG91bGQgYmUgZnJlZWQgdXNpbmcKCSAgWEZyZWVEZXZpY2VMaXN0CgktIGJldHRlciByb2J1c3RuZXNzIG9uIFgxMURSVl9BdHRhY2hFdmVudFF1ZXVlVG9UYWJsZXQKCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCUFsbG93IHNjYW5mIHRvIGNvbnRpbnVlIHBhcnNpbmcgZm9ybWF0IHN0cmluZyBhZnRlciBhICclbicuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVRha2UgbWVzc2FnZSBmaWx0ZXJpbmcgaW50byBhY2NvdW50IHdoZW4gdXBkYXRpbmcgdGhlIHN0YXRpYyBkYXRhIGZvcgoJZG91YmxlIGNsaWNrIHN1cHBvcnQuCgoJKiBkbGxzL2dkaS9nZGlvYmouYzoKCUFsbG9jYXRlIGZvbnRzIGFuZCByZWdpb25zIGZyb20gdGhlIGxhcmdlIGhlYXAgdG9vLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglUbXAgd2FzIG5vdCBmcmVlZCBpbiBjYXNlIG9mIGVycm9ycyBpbiBzYXZlX2JyYW5jaCgpLgoKCSogZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9hbnNpX2dlbi5oLAoJICBkbGxzL3JpY2hlZGl0L2Fuc2lfc3ltLmgsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3JpY2hlZGl0L3J0ZjJ0ZXh0LmgsCgkgIGRsbHMvcmljaGVkaXQvc3RkY2hhcm5hbWVzLmgsIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYywKCSAgZGxscy9yaWNoZWRpdC90ZXh0X21hcC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRm9yd2FyZCB0aGUgUmljaEVkaXQgMS4wIGNvbnRyb2wgdG8gdGhlIFJpY2hFZGl0IDIuMCBjb250cm9sLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL21zaS9wcmV2aWV3LmMsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS9zdW1pbmZvLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIG1ha2Ugc3VyZSBtc2loYW5kbGUybXNpaW5mbyBpcyBjb3JyZWN0bHkgbWF0Y2hlZCB3aXRoIG1zaW9ial9yZWxlYXNlCgktIGRvbid0IGRvIHJlZHVuZGFudCBOVUxMIGNoZWNrcwoKCSogaW5jbHVkZS9wcm9waWRsLmlkbDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIHNvbWUgbWlzc2luZyBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZ1bGx5IGRlbGV0ZSBjdXN0b20gaGVhZGVycyBvbiBjb25uZWN0aW9uIG9wZW5pbmcuCgktIEZyZWUgdW5uZWVkZWQgbWVtb3J5IG9uIGNsZWFyaW5nIG9mIHN0YW5kYXJkIGhlYWRlcnMuCgktIEZpeCBpbmRleCBzYW5pdHkgdGVzdCBpbiBkZWxldGUgZnVuY3Rpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUNvcnJlY3QgaW5jb3JyZWN0IHVzZSBvZiBhcmd1bWVudHMgdG8gUXVlcnlTZXJ2aWNlQ29uZmlnQS4gU3BvdHRlZCBieQoJVHJveSBSb2xsby4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5jLAoJICBkbGxzL29wZW5nbDMyL3dnbF9leHQuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBpbXBsZW1lbnRzIFdHTF9BUkJfcmVuZGVyX3RleHR1cmUgc3VwcG9ydCAobm8gbW9yZSBzdHVicykKCS0gcGFzcyBnbFhHZXRQcm9jQWRkcmVzc0FSQiBwdHIgdG8gaW5pdGlhbGlzZSBmdW5jdGlvbgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoZWNrIGFsd2F5cyBpZiBkZXN0aW5hdGlvbiBzdXJmYWNlIGlzIGxvY2tlZC4KCjIwMDUtMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUFkZGVkIFdNX1gxMURSVl9ERUxFVEVfV0lORE9XIG1lc3NhZ2UgdG8gaGFuZGxlIGNsb3NlIHJlcXVlc3RzIHNvIHRoYXQKCXdlIGNhbiBzZW5kIHRoZSBXTV9TWVNDT01NQU5EIHdpdGggU2VuZE1lc3NhZ2UgaW5zdGVhZCBvZiBQb3N0TWVzc2FnZS4KCUFkZGVkIG1pc3NpbmcgTk9OQU1FTEVTU1VOSU9OIGRlZmluZS4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9ydW4uYywgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIE9wdGltaXplZCByZXBhaW50IG9mIHRoZSBhcmVhIGJlbG93IHRoZSB0ZXh0LgoJLSBNRV9Kb2luUnVucyBkaWRuJ3QgbWFyayB0aGUgcGFyYWdyYXBoIGZvciByZXdyYXBwaW5nLCBmaXhlZC4KCS0gUmVtb3ZlZCBQb3N0UXVpdE1lc3NhZ2UoMCkgZnJvbSBXTV9ERVNUUk9ZIGhhbmRsZXIgKGR1aCEpLgoJLSBVc2Ugb2YgRU1fR0VUT0xFSU5URVJGQUNFIGlzIHJlcG9ydGVkIHdpdGggRklYTUUgaW5zdGVhZCBvZiBUUkFDRQoJICAoYW55IGFwcCB1c2luZyB0aGlzIG1lc3NhZ2UgaXMgbGlrZWx5IHRvIGVuY291bnRlciBtYWpvciBwcm9ibGVtcykuCgoJKiBkbGxzL21zY21zL21zY21zLnNwZWMsIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYywKCSAgZGxscy9tc2Ntcy9zdHViLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gSW1wbGVtZW50YXRpb24gc3R1YnMgZm9yIEdlbmVyYXRlQ29weUZpbGVQYXRocywKCSAgU3Bvb2xlckNvcHlGaWxlRXZlbnQuCgktIENhbGwgRGlzYWJsZVRocmVhZExpYnJhcnlDYWxscyBvbiBwcm9jZXNzIGF0dGFjaC4KCS0gRG9jdW1lbnQgbW9yZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hlY2sgZm9yIE5VTEwgYmVmb3JlIHRvdWNoaW5nIHNyYy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3MvaW5wdXQuYzoKCU1vdmVkIFNlbmRJbnB1dCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdG8gdGhlIFVTRVIgZHJpdmVyIHRvIGF2b2lkIGEKCW51bWJlciBvZiBkbGwgc2VwYXJhdGlvbiBoYWNrcy4KCgkqIHdpbmRvd3Mvd2luLmM6IFJlbW92ZSBhIHRyYWNlIHRoYXQncyBjYXVzaW5nIHRvbyBtdWNoIG91dHB1dC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkICdCcm93c2UnIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBkcml2ZSBtYXBwaW5nIHByb3BlcnR5CglzaGVldC4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3JlZ3N2ci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQmVnaW5uaW5nIG9mIGEgc2hlbGwgbmFtZXNwYWNlIGV4dGVuc2lvbiB0byBicm93c2UgdGhlIHVuaXgKCWZpbGVzeXN0ZW0uCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a3J6eXN6dG9mQGZvbHRtYW4uY29tPgoJV01fQ0FOQ0VMTU9ERSByZXNldHMgbWVudSBmbGFnIGluIHRoZSBkZWZhdWx0IHdpbmRvdyBwcm9jZWR1cmUuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQ2hhbmdlZCBidWZmZXIgc2l6ZSBmb3IgRU1fU1RSRUFNSU4gbWVzc2FnZSB0byA0MDk2LCBhcyBpdCdzIHdoYXQgTSQKCXVzZXMuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBkdXBsaWNhdGUgbWVzc2FnZSBkZWZpbmVzIGluIGhlYWRlci4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRlZCBNSUlNX0JJVE1BUCBzdGF0ZS4KCUhhbmRsZSBNTlNfQ0hFQ0tPUkJNUCBzdHlsZS4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgd2luZG93cy9pbnB1dC5jOgoJTWFrZSB0aGUgU3dhcE1vdXNlQnV0dG9uIGZ1bmN0aW9uIGFuZCB0aGUgU1BJX1NFVE1PVVNFQlVUVE9OU1dBUAoJcGFyYW1ldGVyIHdvcmsgb24gdGhlIHNhbWUgZmxhZy4KCgkqIHNlcnZlci93aW5kb3cuYzoKCURvbid0IGNoZWNrIGNoaWxkcmVuIG9mIG1pbmltaXplZCB3aW5kb3dzIGluIGdldF91cGRhdGVfcmVnaW9uLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9saXN0LmMsIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9wYXJhLmMsCgkgIGRsbHMvcmljaGVkMjAvcnVuLmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJVGhlIG1lYW5pbmcgb2YgdGhlIHJld3JhcCBmbGFnIGdvdCBpbnZlcnRlZCAoTUVQRl9SRVdSQVAgaW5zdGVhZCBvZgoJTUVQRl9XUkFQUEVEKSBmb3IgY29uc2lzdGVuY3kuCglNYWpvciBjb2RlIGNsZWFudXBzIGluIHJld3JhcC9yZXBhaW50IGNvZGUsIGxlYWRpbmcgdG8gInNtYXJ0ZXIiCgliZWhhdmlvdXIgd3J0IHJlcGFpbnRpbmcgc2VsZWN0aW9ucy4KCgkqIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBdm9pZCBDb252ZXJ0VG9HbG9iYWxIYW5kbGUgY2FsbHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2hhcmVkIHJlYWRpbmcgb2Ygc3RvcmFnZSBmaWxlcyByZXF1aXJlcyBTVEdNX1RSQU5TQUNURUQuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IEdhYnJpZWwgQnVhZGVzIFJ1YmlvIDxidWJ1QGRvb3BsZXguZXM+CglXaGVuIHNlbmRpbmcgbXVsdGktbGluZSBib3hlcyB0byBjb25zb2xlIHRocm9naCBXaW5lQ29uc29sZU91dHB1dEEsCglvbmx5IHRoZSBmaXJzdCBsaW5lIHdhcyBiZWluZyB0cmFuc2xhdGVkIGludG8gd2lkZS1jaGFycy4KCgkqIGRsbHMvb2xlYXV0MzIvcmVjaW5mby5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTW9yZSBpbXBsZW1lbnRhdGlvbiBvZiBJUmVjb3JkSW5mby4KCgkqIHdpbmRvd3Mvc3B5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtZXNzYWdlIHNweSBzdXBwb3J0IGZvciBSaWNoRWRpdDIwVyBjb250cm9sLgoKMjAwNS0wMy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOgoJUHJvY2VzcyBvbmx5IHBlbmRpbmcgZXhwb3NlIGV2ZW50cyBkdXJpbmcgUkRXX1VQREFURU5PVywgbm90IGFsbCB0aGUKCW90aGVyIFggZXZlbnRzLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzoKCVRha2UgaW50byBhY2NvdW50IHRoZSBldmVudCBtYXNrIHBhc3NlZCB0byBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgKCXRvIGFsbG93IHByb2Nlc3Npbmcgb25seSBhIHN1YnNldCBvZiB0aGUgYXZhaWxhYmxlIFggZXZlbnRzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OgoJQWxsb3cgc3BlY2lmeWluZyBleHRlbmRlZCBjb250cm9sIHN0eWxlcyBhbHNvIGluIHN0YW5kYXJkIGRpYWxvZ3MKCShyZXBvcnRlZCBieSBNaWNoYWVsIExpbikuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmg6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIHNwZWNpYWxpemVkIGhhbmRsZXIgZm9yIFNGX1RFWFQgKEFOU0kgb3IgVW5pY29kZSksIHNpbXBsZSBhbmQgZmFzdAoJLSBjbGVhcnMgY29udHJvbCdzIHRleHQgb24gRU1fU1RSRUFNSU4gd2l0aCBubyBTRkZfU0VMRUNUSU9OCgoJKiBkbGxzL3JpY2hlZDIwL3JlYWRlci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIFNpbmdsZSBxdW90ZXMgYXJlIG5vdyBoYW5kbGVkIHByb3Blcmx5IChwcmV2aW91c2x5IHRoZXkgd2VyZQoJICBpbnNlcnRlZCBhcyBbWyddXSkuCgktIEJldHRlciBoYW5kbGluZyBvZiBjYWxsYmFjayBmdW5jdGlvbidzIHJlc3VsdHMuCgoJKiBkbGxzL21zY21zL2xjbXNfYXBpLmgsIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL3N0dWIuYywKCSAgZGxscy9tc2Ntcy90cmFuc2Zvcm0uYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBJbXBsZW1lbnQgVHJhbnNsYXRlQml0bWFwQml0cy4KCS0gRG9uJ3QgcGFzcyBib2d1cyBpbnRlbnQgdmFsdWVzIHRvIGxjbXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHJ1bm5pbmcgdGVzdHMgb24gYSB2aXNpYmxlIGRlc2t0b3AgYSBtYW5kYXRvcnkgcmVxdWlyZW1lbnQuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEZpeCB1bm1vdmFibGUgd2luZG93cyBpZiB0aGUgd2luZG93IHN0eWxlIGlzIHNldCB0byBXU19QT1BVUCB8CgkgIFdTX1ZJU0lCTEUgYW5kIFdTX0VYX0FQUFdJTkRPVy4KCS0gRml4IG1ldGFjaXR5IGRpc3BsYXlpbmcgZGVjb3JhdGlvbnMgd2hlcmUgaXQgc2hvdWxkIG5vdC4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglNYWtlIHN1cmUgdG8gYWx3YXlzIHBhc3MgdmFsaWQgUVNfKiBmbGFncyB0bwoJTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciAuZXhlJ3Mgd2l0aCBleHBvcnRlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi94Zm9udC5jOiBBZGRlZCBzdXBwb3J0IGZvciBpc284ODU5LTE2IGNoYXJzZXQuCgoJKiBkbGxzL3JpY2hlZDIwL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL3JpY2hvbGUuYywgZGxscy91dWlkL3V1aWQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgRU1fR0VUT0xFSU5URVJGQUNFLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG9jYXRlIHNwYWNlIGZvciB0ZXJtaW5hdGluZyBudWxsLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwKCSAgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9ydW4uYywKCSAgZGxscy9yaWNoZWQyMC9zdHlsZS5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCU9sZCBmb250IG1hbmFnZW1lbnQgcmVwbGFjZWQgYnkgdGhlIGNhY2hlLWJhc2VkIG9uZSwgd2hpY2gga2VlcHMKCW1heGltdW0gb2YgMTAgSEZPTlRzIGF0IG9uY2UsIGluc3RlYWQgb2Ygb25lIHBlciBhIGNvdXBsZSBvZiBydW5zLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglGaXhlZCBXU19GRF9DTFIgYW5kIFdTX0ZEX1NFVCBtYWNyb3MgKHNwb3R0ZWQgYnkgVGhvbWFzIEtobykuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IENETEdldExvbmdQYXRoTmFtZVtBV10gYW5kCglJc0pJVEluUHJvZ3Jlc3MgaGF2ZSBoYXJkY29kZWQgb3JkaW5hbHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgbWVtb3J5IGxlYWsuCgoyMDA1LTAzLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYveDExZHJ2Lmg6IEFkZGVkIGEgbWlzc2luZyBwcm90b3R5cGUuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jbGlwYm9hcmQuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZjoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIHRocmVhZC1zcGVjaWZpYyBzZWxlY3Rpb24gd2luZG93IHRvIG1ha2Ugc3VyZSB3ZSByZWNlaXZlIHRoZQoJc2VsZWN0aW9uIGV2ZW50cyBpbiB0aGUgY29ycmVjdCB0aHJlYWQuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBwcm9ncmFtcy93aW5ldmRtL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTdXBwb3J0IGV4ZWN1dGlvbiBvZiBwaWYgZmlsZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gQ29uc29saWRhdGUgZXJyb3IgbWVzc2FnZSBoYW5kbGluZy4KCS0gQWRkIGVycm9yIGNoZWNraW5nIHRvIGFsbCBpbml0aWFsIFN5c3RlbVBhcmFtZXRlcnNJbmZvQSBjYWxscyBpbgoJICBlYWNoIHBhcmFtZXRlciB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGlmIGEgZ2l2ZW4gcGFyYW1ldGVyIGlzbid0CgkgIHN1cHBvcnRlZCBvciBoYXMgZmFpbGVkIGluIHNvbWUgb3RoZXIgd2F5IHRoYXQgd2UgcmV0dXJuIGFuZCBkb24ndAoJICBjb250aW51ZSBvbiB3aXRoIHRoZSB0ZXN0LgoJLSBTZXRMYXN0RXJyb3IgYmVmb3JlIGNhbGxpbmcgdGVzdF9lcnJvcl9tc2cuCgktIFNQSV97R0VULFNFVH1JQ09OVElUTEVXUkFQIGlzIHN1cHBvcnRlZCBvbiBXaW45OC4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9yZWNpbmZvLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBJbXBsZW1lbnRlZCBHZXRSZWNvcmRJbmZvRnJvbVR5cGVJbmZvIGFuZCBHZXRSZWNvcmRJbmZvRnJvbUd1aWQuCgktIEJlZ2lubmlnIGltcGxlbWVudGF0aW9uIG9mIElSZWNvcmRJbmZvLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsCgkgIHdpbmRvd3MvbWVzc2FnZS5jOgoJTW92ZWQgVHJhbnNsYXRlTWVzc2FnZSBhbmQgRGlzcGF0Y2hNZXNzYWdlIHRvIGRsbHMvdXNlci9tZXNzYWdlLmMuCglBZGRlZCBzdXBwb3J0IGZvciBwb3N0aW5nIGludGVybmFsIG1lc3NhZ2VzLgoJQWRkZWQgc3VwcG9ydCBmb3IgZHJpdmVyLXNwZWNpZmljIGludGVybmFsIG1lc3NhZ2VzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOgoJU2V0IFNNX0RCQ1NFTkFCTEVEIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgaW5zdGVhZCBvZgoJaGFyZGNvZGluZyBpdCB0byAwIChmb3VuZCBieSBNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL3JpY2hlZDIwL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUG9ydCB0aGUgUlRGIHBhcnNlciB0byB0aGUgcmljaGVkaXQgMi4wIGNvbnRyb2wuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgZWFjaCBpZnByb3h5IGhhdmUgaXRzIG93biBjaGFubmVsIGJ1ZmZlciB0byBmaXggYSBidWcgd2hlcmUgYQoJcHJveHkgd2l0aCBtdWx0aXBsZSBpbnRlcmZhY2VzIGNvdWxkIGludm9rZSB0aGUgd3Jvbmcgc3R1YiBidWZmZXIgb24KCXRoZSBzZXJ2ZXIuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIHVubmVjZXNzYXJ5IHdpbmRvdyBsb2NraW5nIGluIFgxMURSVl9EZXN0cm95V2luZG93LgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL2lucHV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBDYWxsIFNldEN1cnNvclBvcyBmb3IgYW4gaW5qZWN0ZWQgbW91c2UgbWVzc2FnZSBvbmx5IGlmIHdlIHJlYWxseQoJICBuZWVkIHRvIG1vdmUgbW91c2UgcG9pbnRlci4KCS0gQWRkIGEgdGVzdCBjYXNlIGZvciBtb3VzZSBjbGljayBoYW5kbGluZy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJTWFrZSBvdXRwdXQgbGluZS1idWZmZXJlZCB0byBhdm9pZCBtZXNzaW5nIHVwIGxvZyBmaWxlcy4KCgkqIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtb3JlIGluY29ycmVjdCB1c2VzIG9mIFNUR01fIGVudW1lcmF0aW9ucy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJV2hlbiBpbml0aWFsaXppbmcgYSBsaXZlIHRhcmdldCwgYXNrIHRvIGxvYWQgbW9kdWxlIGZpbGUgbmFtZXMsIG5vdAoJbW9kdWxlIG5hbWVzIChzcG90dGVkIGJ5IFJvYmVydCBSZWlmKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hdHRoZXcgTWFzdHJhY2NpIDxtYXR0QGFjbGFyby5jb20+CglBZGRlZCBzdXJmYWNlIGxvY2tpbmcuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCVJldHJ5IHNlbmRpbmcgYSBXTV9QQUlOVCBpbiB1cGRhdGVfbm93IGFmdGVyIHdlIHNlbnQgYW4gZXJhc2UKCW1lc3NhZ2UuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBsc3RyY21waUEgaW4gcHJlZmVyZW5jZSB0byBzdHJjYXNlY21wLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzoKCUZpeGVkIERMTF9QUk9DRVNTX0RFVEFDSCBoYW5kbGVyIHRvIGFjdHVhbGx5IHVucmVnaXN0ZXIgdGhlIHdpbmRvdwoJY2xhc3Nlcy4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLAoJICB0b29scy93aW5lZHVtcC9kdW1wLmMsIHRvb2xzL3dpbmVkdW1wL21pbmlkdW1wLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmgsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNyZWF0ZWQgZHVtcC5jIGFzIGEgY2VudHJhbCBwb2ludCBmb3IgZmlsZSBkdW1waW5nIChpbmNsdWRlcyBoZWFkZXIKCWFuYWx5c2lzLCB1dGlsaXR5IGZ1bmNzLi4uKS4KCUFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgbWluaWR1bXAgZmlsZXMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvbWluaWR1bXAuYywgaW5jbHVkZS9kYmdoZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIG1pbmlkdW1wIChyZWFkICYgd3JpdGUpLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL3JlZ3N2ci5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdHViIGZvciBHZXRDbGFzc09iamVjdCBmdW5jdGlvbi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOiBNYXR0aGV3IE1hc3RyYWNjaSA8bW1hc3RyYWNAY2FuYWRhLmNvbT4KCUFkZCBERENBUFNfT1ZFUkxBWSBhbmQgRERDQVBTX09WRVJMQVlTVFJFVENIIHRvIEdldENhcHMoKS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBtc3ZjcnQgcHJpbnRmIHVzZSB0aGUgaW50ZXJuYWwgcm91dGluZXMgd2hpY2ggdW5kZXJzdGFuZCAlUyBhbmQKCSVDLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN0dWIgZm9yIFNldFNlY3VyaXR5SW5mby4KCgkqIGRsbHMvcmljaGVkMjAvcGFpbnQuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJQWRkZWQgYSBjaGVjayBmb3IgZW1wdHkgc2Nyb2xsYmFyIHJhbmdlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNYWtlIHdpbmVvc3MncyBtaXhlciBrbm93IGFib3V0IERTVF9IRUFEUEhPTkVTLCBEU1RfTElORSBhbmQKCURTVF9WT0lDRUlOLiBVc2UgcHJvcGVyIGNvbnN0YW50cyBpbnN0ZWFkIG9mIDAgYW5kIDEuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgU3RnQ3JlYXRlUHJvcFNldFN0Zy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQW5vdGhlciBhdHRlbXB0IG9mIGEgdGVzdCBmb3IgYSB2aXNpYmxlIGRlc2t0b3AuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBSZWxlYXNlREMoKSB3aXRoIGNvcnJlY3Qgd2luZG93IGhhbmRsZS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IG91dCBlcnJvciBtZXNzYWdlIGlmIHdlIGZhaWwgdG8gcmVtb3ZlIG1lc3NhZ2UgZnJvbSBxdWV1ZS4KCjIwMDUtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JpY2hlZDIwL3JpY2hvbGUuYzogRml4ZWQgRE9TIGxpbmUgZW5kaW5ncy4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW46CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDcmVhdGUgc3ltbGlua3MgbmFtZWQgd2luZWcrKyBhbmQgd2luZWNwcCB3aGlsZSBidWlsZGluZyB3aW5lZ2NjLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkMjAvLmN2c2lnbm9yZSwKCSAgZGxscy9yaWNoZWQyMC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWQyMC9jYXJldC5jLAoJICBkbGxzL3JpY2hlZDIwL2NvbnRleHQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvbGlzdC5jLCBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcGFyYS5jLAoJICBkbGxzL3JpY2hlZDIwL3JpY2hlZDIwLnNwZWMsIGRsbHMvcmljaGVkMjAvcmljaG9sZS5jLAoJICBkbGxzL3JpY2hlZDIwL3Jvdy5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLCBkbGxzL3JpY2hlZDIwL3N0cmluZy5jLAoJICBkbGxzL3JpY2hlZDIwL3N0eWxlLmMsIGRsbHMvcmljaGVkMjAvdW5kby5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgcmljaGVkMjAuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIG5vIHNvdW5kIGRldmljZSBhIGZhaWx1cmUuCgoJKiBzZXJ2ZXIvcXVldWUuYzogQXZvaWQgcG90ZW50aWFsIGNyYXNoIHdoZW4gZnJlZWluZyBhIG1lc3NhZ2UgcXVldWUuCglQcm9wZXJseSBpbml0aWFsaXplIG5ld2x5IGFsbG9jYXRlZCBtZXNzYWdlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1VTRVIgbWVzc2FnZXMgc2hvdWxkIGJlIGR1bXBlZCBpbiB0aGUgZm9ybWF0ICJXTV9VU0VSICsgJWQiIHRvIG1ha2UKCWl0IGVhc2llciB0byBzZWUgd2hhdCBtZXNzYWdlIGl0IGlzIGZvciB1bmtub3duIGNsYXNzZXMuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci55OgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVdyaXRlIHV1aWQgb2YgbGlicmFyeSBpbiBoZWFkZXIuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0LmgsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcmludCBkc291bmQuZGxsIHZlcnNpb24gZnJvbSBmaWxlIHZlcnNpb25pbmZvIHJlc291cmNlLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgYW5kIGZpeCBncmZNb2RlIGhhbmRsaW5nIGluIFN0Z09wZW5Eb2NmaWxlLgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBUFBNT0RFIGNhbiBub3cgYmUgb25lIG9mIC1td2luZG93cyBvciAtbWNvbnNvbGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglMYXN0RXJyb3IgaXMgbm90IHNldCBvbiBmYWlsdXJlIGZvciAqTU9VU0VIT1ZFUiogb24gV2luOTguCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFjY291bnQgZm9yIHBlcm1pc3Npb25zIG9uIFdpbjJrLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgdGhlIHZhbHVlIG9mIFNUR01fRElSRUNUX1NXTVIuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9wcmludGYuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgJWxzIGluIHNwcmludGYuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJTWFrZSBHZXRGaWxlU2VjdXJpdHlXIHJldHVybiBhIHN0YW5kYXJkIFNFQ1VSSVRZX0RFU0NSSVBUT1IgaW5zdGVhZCBvZgoJYW4gdW5pbml0aWFsaXNlZCAoYW5kIGludmFsaWQpIG9uZS4KCjIwMDUtMDMtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2ZkLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBhIGNoZWNrIGZvciBwb2xsLmguCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOiBBdm9pZCBhIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGZvciBzZXJ2aWNlIGRlcGVuZGVuY2llcyB3aGVuIHRoZXJlIGFyZSBubwoJZGVwZW5kZW5jaWVzLCByYXRoZXIgdGhhbiBhIE5VTEwgcG9pbnRlciwgd2hpY2ggY2F1c2VzIHNvbWUgYXBwcyB0bwoJU0VHVi4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgcmFkaW8gYnV0dG9ucy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CglFeHBhbmQgY29uZm9ybWFuY2UgcmVnaXN0cnkgZW50cnkgdGVzdCB0byBoYW5kbGUgcmVnaXN0cnkgZW50cmllcyB0aGF0CglkaWZmZXIgYm90aCBpbiBLZXkgYW5kIFZhbHVlIGZyb20gdGhlIG5vcm0uCglUYWtlIGFkdmFudGFnZSBvZiBleHBhbmRlZCByZWdpc3RyeSB0ZXN0IHRvIGFsbG93CglTUElfe0dFVCxTRVR9U0NSRUVOUkVBREVSIGFuZCBTUElfe0dFVCxTRVR9S0VZQk9BUkRQUkVGRVJFTkNFIHRvIHBhc3MKCW9uIFdpbjl4LgoKCSogZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2IgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIEFkZCByZS1lbnRyYW5jeSB0ZXN0cyB0byB0aGUgdGVzdCBzdWl0ZS4KCS0gUnVuIFJQQ3Mgb24gYSBuZXcgdGhyZWFkIGNsaWVudCBzaWRlIHNvIHdlIGNhbiBwdW1wIHRoZSBtZXNzYWdlCgkgIGxvb3AuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50cyBPbGVMb2FkUGljdHVyZVBhdGguCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJU3VwcG9ydCBzZW5kaW5nIFdNX1BBSU5UIGFjcm9zcyBwcm9jZXNzZXMgd2hlbiBpdCBkb2Vzbid0IGNvbnRhaW4gYW4KCUhEQy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTdGdTZXRUaW1lcy4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2xlYXIgRVNfQVVUT1tIVl1TQ1JPTEwgaW4gdGhlIGVkaXQgY29udHJvbCBjcmVhdGVkIGJ5CglyaWNoZWRpdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUNvcnJlY3QgaW5jb3JyZWN0IHVzZSBvZiBhcmd1bWVudHMgdG8gUXVlcnlTZXJ2aWNlQ29uZmlnVy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jLCBkbGxzL21zdmNydC93Y3MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgcHJpbnRmICVGIGZvcm1hdCBtb2RpZmllci4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQG9uZXQucGw+CgktIGFkZGVkIG1pc3NpbmcgQ0ZNXyBjb25zdGFudHMgdG8gbWFrZSBSaWNoRWRpdCAyLjAgaW1wbGVtZW50YXRpb24KCSAgcG9zc2libGUKCS0gYWRkZWQgYSBtaXNzaW5nIHN0cnVjdHVyZSBQQVJBRk9STUFUMgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZ3Jlc3Npb24gaW4gR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uIGZvciBsaW5lcyB3aXRob3V0IGFuICc9Jy4KCUFkZCB0ZXN0LgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJU3VwcHJlc3Mgc29tZSB1c2VsZXNzIHdhcm5pbmdzIGluIHRoZSBSUEMgcnVudGltZSwgYW5kIG1ha2UgYSBmZXcKCVRSQUNFcyB0aGF0IHdlcmUgcmVwb3J0aW5nIHByb2JsZW1zIGludG8gV0FSTnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglCZXR0ZXIgd2F5IG9mIGhhbmRsaW5nIG5vbi1leGlzdGVudCBTeXN0ZW1QYXJhbWV0ZXJzSW5mb1cuCglTZXRMYXN0RXJyb3IgaWYgR2V0TGFzdEVycm9yIGlzIGNoZWNrZWQgYWZ0ZXIgYSBjYWxsLgoKMjAwNS0wMy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglGaXhlZCBhIGZldyByZWdyZXNzaW9ucyBpbiB0aGUgaGFuZGxpbmcgb2Ygc2VnbWVudGVkIGFkZHJlc3Nlcy4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L3F1ZXJ5LmMsCgkgIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3F1ZXJ5LmMsCgkgIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC91dGlscy5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvZDNkOXR5cGVzLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF90eXBlcy5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkZWQgYSBzdHViYmVkIG91dCB2ZXJzaW9uIG9mIHF1ZXJ5IHRvIGQzZDkgYW5kIHdpbmVkM2QuCglVcGRhdGUgdGhlIGQzZDkgaGVhZGVycyBhbmQgY3JlYXRlcyB3aW5lZDNkIHR5cGVzIHdoZXJlIGQzZDkgYW5kIGQzZDgKCWFyZSBpbmNvbXBhdGlibGUuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcHJlcGVuZCAnXFwnIHRvIHRoZSBzdWJrZXkgbmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWNvZGlmaWNhdGlvbi4gU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUR1bXAgSGVhcFdhbGsgZW50cmllcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBJc1dpbmRvd1Zpc2libGUgaW5zdGVhZCBvZiBHZXRXaW5kb3dMb25nKEdXTF9TVFlMRSkgJiBXU19WSVNJQkxFCglhcyBhIHRlc3QgZm9yIGRlc2t0b3AgdmlzaWJpbGl0eS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2FybiB0aGUgdXNlciBpZiBoZSBpcyBydW5uaW5nIHRoZSB0ZXN0IGluIGludGVyYWN0aXZlIG1vZGUgYnV0IHRoZQoJc291bmQgaXMgdHVybmVkIG9mZi4KCjIwMDUtMDMtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBkbGxzL2dkaS9yZWdpb24uYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMvbXNpL2FjdGlvbi5jLAoJICBkbGxzL21zaS9tc2kuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywKCSAgZGxscy93aW5lZG9zL3Z4ZC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJfZGlzYXNtLmMsIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jLAoJICB0b29scy93aWRsL2NsaWVudC5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwKCSAgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmMsIHRvb2xzL3dyYy9wYXJzZXIueToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2QzZDkvZDNkOV9tYWluLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvd2luZWQzZC92b2x1bWUuYywgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIGd1aWRzIGZvciB3aW5lZDNkLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBcHBseSBKZXJlbXkgV2hpdGUncyBTTVBURSBjYWxjdWxhdGlvbiBmaXggdG8gZWFjaCBhdWRpbyBkcml2ZXIuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xvY2FsMTYuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLAoJICBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy90d2Fpbi90d2Fpbi5oLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLAoJICBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBpbmNsdWRlL2RtdXNpY2MuaCwKCSAgaW5jbHVkZS93aW5lL3JwY2ZjLmgsIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywKCSAgcHJvZ3JhbXMvdGFza21nci9wZXJmZGF0YS5jLCBwcm9ncmFtcy90YXNrbWdyL3Byb2NwYWdlLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmgsCgkgIHRvb2xzL3dyYy9wYXJzZXIueToKCUF2b2lkIHNwYWNlcyBiZWZvcmUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMsIHRoYXQncyBub3QgcG9ydGFibGUuCgoJKiBNYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW46Cgl3aW5lcHJlZml4Y3JlYXRlIGFuZCByZWxhdGVkIGZpbGVzIG5lZWQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gZG9pbmcgYW4KCWluc3RhbGwtbGliLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWdncmVzc2l2ZWx5IHJvdW5kIHVwIHRvIHRoZSBwcm9wZXIgYWxpZ25tZW50IHdoZW4gcmVwb3J0aW5nIHBvc2l0aW9uCglvbiBzdHJlYW1zIHdoZXJlIHdlIGFyZSBjb252ZXJ0aW5nIHVwLgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBc2sgZm9yIGFuIE1ESSBjaGlsZCBpZCBpbiBhbGwgY2FzZXMuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGVzdHJveU1lbnUgc2hvdWxkIG5vdCBkZXN0cm95IHN5c3RlbSBtZW51IHBvcHVwIG93bmVyLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVB1dCBhbGwgdGhlIHN0dWJzIGluIHdpbmVkM2QgaW4gcGxhY2UsIHdpdGggc29tZSBmdW5jdGlvbmFsaXR5IGNvcGllZAoJYWNyb3NzIGZyb20gZDNkOS4KCU1ha2Ugc3VyZSBhbGwgZDNkOSBkZXZpY2UgZnVuY3Rpb24gY2FsbCB0aGVpciB3aW5lZDNkIGNvdW50ZXJwYXJ0IChvcgoJcGVyZm9ybSBhIGZ1bmN0aW9uKS4KCgkqIGluY2x1ZGUvZGNlLmgsIHdpbmRvd3MvZGNlLmM6CglCZWdpbm5pbmdzIG9mIGludGVyLXByb2Nlc3MgR2V0REMgc3VwcG9ydC4KCVVzZSBhIHN0YW5kYXJkIGxpc3QgZm9yIHRoZSBEQ0UgbGlzdC4KCVNtYWxsIGNsZWFudXBzLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmg6CglDb252ZXJ0IHRoZSBwcm9jZXNzIGRsbCBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbnZlcnQgbW9yZSBBUEkgY2FsbHMgdG8gVW5pY29kZS4KCgkqIHRvb2xzL3dpbmUuZGVza3RvcDogU2NvdHQgUml0Y2hpZSA8c2NvdHRAb3Blbi12b3RlLm9yZz4KCUFkZCBhbGwga25vd24gd2luZG93cyBleGVjdXRhYmxlcyB0byBNSU1FIHR5cGUgaW4gd2luZS5kZXNrdG9wLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBvbmUgbW9yZSBwbGFjZSB3aGVyZSB0aGUgY29kZSBhc3N1bWVzIHJvdyBpbmRpY2VzIGFyZQoJICB6ZXJvLWJhc2VkLgoJLSBEb2N1bWVudCBhIGtub3duIGJ1ZyBpbiB0aGUgbGF5b3V0IGNvZGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNb3JlIGNvcnJlY3RseSBlc3RhYmxpc2ggY2FzZXMgd2hlcmUgdGhlIE9TUyBpbnB1dCBidWZmZXIgc2hvdWxkIG5vdAoJYmUgZW5hYmxlZC4KCgkqIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovdGVzdHMvZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovdHJhbnNmb3JtLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYywgZGxscy9xdWFydHovd2F2ZXBhcnNlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIEVuZCBPZiBTdHJlYW0gbm90aWZpY2F0aW9ucy4KCVNvbWUgQVZJIFNwbGl0dGVyIGZpeGVzLgoKCSogZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgcnNhZW5oX2Nyb3NzdGVzdC5leGUgbG9hZGFibGUgb24gTlQgNC4wLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFjY2VwdCAoc2hvcnRlcikgZGF0ZSBmb3JtYXQgaW4gV2luIE5UIGFuZCBXaW4gOTUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IFNldFBhcmVudCBmcm9tIGNyZWF0aW5nIGNpcmN1bGFyIHdpbmRvdyBkZXBlbmRlbmNpZXMuCglBZGQgYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGluZGVudGF0aW9uIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSByZXN0IG9mIHRoZSBmaWxlLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJV2hlbiBlbnVtZXJhdGluZyBrZXlzIHVzaW5nIEdldChQcml2YXRlKVByb2ZpbGVTdHJpbmcgZG8gbm90IGluY2x1ZGUKCWxpbmVzIHdpdGhvdXQgYW4gJz0nIGNoYXJhY3Rlci4gQWRkZWQgYSB0ZXN0IHRoYXQgc2hvd3MgdGhlIGJlaGF2aW9yLgoKMjAwNS0wMy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94ZG5kLmM6CglVc2UgYSBkaXNwYXRjaCB0YWJsZSB0byBoYW5kbGUgWCBjbGllbnQgbWVzc2FnZXMuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvdGhyZWFkLmM6CglDb252ZXJ0IHRoZSBvYmplY3Qgd2FpdCBxdWV1ZSB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0NzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0phLnJjLCBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmg6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hhbmdlIEZhdm91cml0ZShzKSBpbnRvIEZhdm9yaXRlKHMpLgoJQ2hhbmdlIHZhcmlhYmxlcyBjb250YWluaW5nIEZBVk9VUklURSBpbnRvIEZBVk9SSVRFLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gQ3JlYXRlZCBTUElfe0dFVCxTRVR9S0VZQk9BUkRQUkVGIGFuZCBTUElfe0dFVCxTRVR9U0NSRUVOUkVBREVSIHVuaXQKCSAgdGVzdHMuCgktIFJlbW92ZWQgYSB0cmFjZSB0aGF0IHNob3VsZG4ndCBoYXZlIGJlZW4gdGhlcmUuCgktIEFkZCByZXR1cm4gY2hlY2tpbmcgdG8gU1BJX3tHRVQsU0VUfVdIRUVMU0NST0xMTElORVMgYW5kCgkgIFNQSV97R0VULFNFVH1NRU5VU0hPV0RFTEFZIHVuaXQgdGVzdHMgc28gdGhleSBubyBsb25nZXIgcnVuIG9uCgkgIFdpbmRvd3MgOTUgd2hlcmUgdGhleSBhcmVuJ3Qgc3VwcG9ydGVkLgoJLSBDaGFuZ2VkIG1pbmltdW0gaG92ZXJ0aW1lIGluIFNQSV97R0VULFNFVH1NT1VTRUhPVkVSVElNRSB0byAxMCBhcwoJICBXaW5kb3dzIFhQIGRlZmF1bHRzIHRvIDEwIGFueSB2YWx1ZSBiZWxvdyB0aGF0LgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBwYXJzaW5nIG9mIElURU1JRExJU1QgaW4gSW5pdGlhbGl6ZVRyZWVWaWV3LgoJQWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgoJRml4ZWQgYSBjcmFzaCBvY2N1cmluZyB3aGVuIHRoZSB1c2VyIGRvdWJsZS1jbGlja3MgYSBsZWFmIGl0ZW0uCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRleHQgcmVmb3JtYXR0aW5nIHBhdGNoIHRvIGNsZWFuIHVwIGFsbCB0aGUgc3RhdGljIHN0cmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBGaWxpcCBOYXZhcmEgPG5hdmFyYWZAcmVhY3Rvcy5jb20+CglJbXBsZW1lbnQgU0JfU0VUQk9SREVSUy4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBpbmNsdWRlL3dpbmlvY3RsLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgU2V0dXBEaUdldENsYXNzRGV2c0EvVywgU2V0dXBEaUVudW1EZXZpY2VJbnRlcmZhY2VzLAoJU2V0dXBEaURlc3Ryb3lEZXZpY2VJbmZvTGlzdCwgYW5kIFNldHVwRGlHZXREZXZpY2VJbnRlcmZhY2VEZXRhaWxBIGZvcgoJc2VyaWFsIHBvcnRzLgoKCSogc2VydmVyL3JlcXVlc3QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHJhY2UgY29uZGl0aW9uIGluIGNyZWF0ZV9kaXIoKS4KCgkqIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuaDoKCUNvbnZlcnQgdGhlIHBlci1wcm9jZXNzIHRocmVhZCBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglBZGQgJy1yZWFkX29ubHlfcmVsb2NzIHdhcm5pbmcnIHRvIExERExMRkxBR1Mgb24gRGFyd2luLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2Ugcm93IG51bWJlciBiZSB6ZXJvLWJhc2VkLgoJLSBJbXByb3ZlbWVudHMgdG8gZHVtcGluZyBmdW5jdGlvbnMgdG8gbm90IGR1bXAgb3V0IGZpZWxkcyB0aGF0IG1heQoJICBub3QgaGF2ZSBiZWVuIGZpbGxlZCBpbi4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJZiB1bmV4cGVjdGVkIGNvbmRpdGlvbiBvY2N1cnMganVzdCByZXBvcnQgYW4gZXJyb3IuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlIGRpYnNlY3Rpb24gaXMgYmFzZWQgb24gYSBmaWxlLW1hcHBpbmcgb2JqZWN0LCB0aGVuIG1ha2Ugc3VyZQoJdGhhdCB0aGUgc2VjdGlvbiBpcyBpbiBzeW5jIHdoZW4gdGhlIGRpYnNlY3Rpb24gaXMgZGVsZXRlZC4KCgkqIGRsbHMva2VybmVsL3BhdGguYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUNvcHlGaWxlIG5lZWRzIHRvIHJldGFpbiB0aW1lc3RhbXAuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYW5vdGhlciB0ZXN0IGNhc2UgZm9yIGZpbGUgc2hhcmluZy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEb24ndCBoYXJkY29kZSB3aW5kb3dzIG9yIHN5c3RlbSBkaXJlY3RvcmllcywgY29ycmVjdCBhIHR5cG8uCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCU1vdmUgdnRibCB0byBlbmQgb2YgZmlsZSBhbmQgZ2V0IHJpZCBvZiB1bm5lY2Vzc2FyeSBwcm90b3R5cGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb252ZXJ0IHRhYnMgdG8gc3BhY2UsIHdyYXAgbG9uZyBsaW5lcywgbWFrZSBpbmRlbnRpbmcgY29uc2lzdGVudC4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNZW1vcnkgY29uc3VtcHRpb24gb3B0aW1pemF0aW9uIHdoaWxlIGxvYWRpbmcgRUxGIGRlYnVnIGluZm86CgktIGRvbid0IG1hcCB0d2ljZSBhbiBFTEYgZmlsZSBmb3Igc3ltYm9sIGxvb2t1cCAoaW4gbm9uIGRlZmVycmVkIG1vZGUpCgktIG5vIGxvbmdlciBlbnRpcmVseSBtYXAgYW4gRUxGIGZpbGUgaW50byBtZW1vcnksIGJ1dCBvbmx5IHRoZQoJICBzZWN0aW9ucyB3ZSBuZWVkLgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBFTEYgbW9kdWxlcyB0aHJ1IFN5bUxvYWRNb2R1bGUgaW4gYSBub24gbGlmZQoJcHJvY2Vzcy4KCUZhY3RvcmlzYXRpb24gb2YgY29kZSBmb3IgRUxGIG1vZHVsZSBoYW5kbGluZy4KCUZpeGVzIHRvIEVMRiBzeW1ib2wgbG9hZGluZwoJLSBkcm9wcyBzeW1ib2xzIGZyb20gc3ltdGFiIHdoaWNoIGFyZSBuZWl0aGVyIGZ1bmNzIG5vciBnbG9iYWwKCSAgdmFyaWFibGVzCgktIGZpeGVzIHNvbWUgaW5jb3JyZWN0IHNpemUgY29tcHV0YXRpb24gZm9yIGxhdGVzdCBHQ0MgdmVyc2lvbnMuCglTZXZlcmFsIGNsZWFudXBzIGFuZCBmaXhlcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBKZWZmIFNtaXRoIDx3aHlkb3VidEB5YWhvby5jb20+CglBdm9pZHMgYSBzaGlmdCB3YXJuaW5nIHRocm93biBieSBvbGRlciB2ZXJzaW9ucyBvZiBiYXNoLgoKMjAwNS0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi93aW50YWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglVc2UgYSB0YWJsZSBvZiBoYW5kbGVycyB0byBkaXNwYXRjaCBYIGV2ZW50cyBhbmQgZ2V0IHJpZCBvZiB0aGUKCXNwZWNpYWwgY2FzaW5nIGZvciBER0EgYW5kIHRhYmxldCBldmVudHMuCglVbmlmeSB0aGUgZGVjbGFyYXRpb25zIG9mIGFsbCB0aGUgZXZlbnQgaGFuZGxlcnMuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCUZpeGVkIHJlZ3Jlc3Npb24gaW4gUXVlcnlEb3NEZXZpY2VBIHdoZW4gcGFzc2VkIGEgTlVMTCBkZXZpY2UgbmFtZS4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJQ29udmVydGVkIHRoZSBkZWJ1ZyBldmVudCBxdWV1ZSB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJU3ludGF4IGZpeCBpbiBjb25maWd1cmUuYWMuCgoJKiBkbGxzL21zaS90ZXN0cy9kYi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGEgdGVtcG9yYXJ5IG1zaSBkYXRhYmFzZSBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29udmVydCBhIGZldyBjYWxscyB0byBVbmljb2RlLgoKCSogZGxscy93aW5tbS9tY2kuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtb3JlIGNhc2VzIHRvIE1DSV9NYXBNc2dBdG9XLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIExSX0xPQURUUkFOU1BBUkVOVCB3b3JrIGFuZCBnaXZlIHRyYW5zcGFyZW50IGltYWdlcy4KCjIwMDUtMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29uc29sZS5jOgoJQ29udmVydGVkIHRoZSBnbG9iYWwgc2NyZWVuIGJ1ZmZlciBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJUmVwbGFjZWQgdGhlIG1lc3NhZ2VfbGlzdCBzdHJ1Y3R1cmUgYnkgYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJTW92ZWQgY2xpcGJvYXJkIGV2ZW50IGhhbmRsaW5nIGZ1bmN0aW9ucyBhbmQgc29tZSBwcml2YXRlIGRhdGEKCXN0cnVjdHVyZXMgdG8gY2xpcGJvYXJkLmMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUNvbnZlcnQgdGhlIGdsb2JhbCB0aHJlYWQgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oOgoJQ29udmVydCB0aGUgZ2xvYmFsIHByb2Nlc3MgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBzZWNvbmRhcnkgYnVmZmVyIFNldEZyZXF1ZW5jeSB0ZXN0LgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSBuQmxvY2tBbGlnbiByYXRoZXIgdGhhbiBjYWxjdWxhdGluZyBpdC4KCUFkZCBhIGJ1ZmZlciBsZW5ndGggYWxpZ25tZW50IGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9wcmludGYuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZHZhbmNlIG92ZXIgKiBhcmd1bWVudCBmb3IgcHJlY2lzaW9uLgoJSG9ub3IgcHJlY2lzaW9uIGFyZ3VtZW50IGZvciBzdHJpbmdzLgoKCSogc2VydmVyL211dGV4LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQ29udmVydCB0aGUgcGVyLXRocmVhZCBtdXRleCBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXggUmVnT3Blbi9DbG9zZUtleS4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8dHVsbWluQGdtYWlsLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IGxhc3QgbGluZSBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZSBTZXRDb29wZXJhdGl2ZUxldmVsIEZJWE1FIHRvIFdBUk4uCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRHVtcCB0aGUgcGlkbCBvZiBhIGxuayBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxsaW5rLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudCBsb2FkaW5nIGFuZCBzYXZpbmcgb2YgTVNJIGFkdmVydGlzZWQgc2hvcnRjdXQgaW5mbwoJLSBtYWtlIG1vcmUgdGVzdCBjYXNlcyBwYXNzCgktIHJlYWQgYW5kIHdyaXRlIHRoZSBsb2NhdGlvbiBibG9jawoJLSBpbXByb3ZlIHRoZSBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBsbmsgZmlsZXMKCgkqIGxpYnMvd3BwL3BwbC5sOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJVHJlYXQgYWxyZWFkeSBwcmVwcm9jZXNzZWQgY29kZSBqdXN0IGxpa2Ugbm9ybWFsICNpbmNsdWRlJ2VkIGNvZGUuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglFeGNsdWRlIHR3byB0ZXN0cyBjcmFzaGluZyBvbiBXaW5OVDQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGNhbGxzIHRvIFRBQl9HZXRJbmZvUHRyKCksIGNvbnN0IGZpeGVzLCBpbmxpbmUgc21hbGwKCWZ1bmNzICYgcmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXJzLgoKCSogZGxscy9jb21jdGwzMi9zdHJpbmcuYywgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvYXNzb2MuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywKCSAgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jLAoJICB0b29scy93cmMvbmV3c3RydWMuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvc3B5LmMsCgkgIHdpbmRvd3MvdXNlci5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gc3BlbGxpbmcgZml4ZXMuCgoJKiBzZXJ2ZXIvZmQuYzoKCVJlZ3VsYXIgZmlsZXMgYXJlIGFsd2F5cyByZWFkeSBmb3IgSS9PLCBubyBuZWVkIHRvIHBvbGwgb24gdGhlbS4KCgkqIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQ29udmVydCB0aGUgQVBDIHF1ZXVlcyB0byB1c2Ugc3RhbmRhcmQgbGlzdHMuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUZpeCBzdGFjayBvYmplY3Qgb3ZlcnJ1biB3aGVuIGFuIGFwcGxpY2F0aW9uIGNhbGxzIENob29zZUZvbnRBLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIGFjdGlvbiBSZWdpc3RlckZvbnRzLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJSW1wbGVtZW50ZWQgIUVTX0FVVE9bSFZdU0NST0xMLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCVRBTkFCRSBIaXJvc2hpIDxoaXJva3VuX2RheW9tb25AaW5mb3NlZWsudG8+IHdyb3RlOgoJUmVtb3ZlIChidWYgJiYgIWJ1ZmxlbikgY2hlY2tpbmcuCglGaXhlZCBvdXRsaW5lIHJlbmRlcmluZyB3aXRoIEdHT19HUkFZP19CSVRNQVAgb3B0aW9uLgoJSW1wcm92ZWQgZml4ZWQtcGl0Y2ggZm9udHMgZGV0ZWN0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaDoKCVBhdWwgdmFuIFNjaGF5Y2sgPHBvbGxla2VAZ21haWwuY29tPgoJQXMgbGFzdCBvcHRpb24gZm9yIGRyaXZlIHR5cGUgZGV0ZWN0aW9uIHdlIHRyeSB0aGUgZGV2aWNlIG5vZGUgbmFtZS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGRlZCBzb21lIFRSQUNFIHN0YXRlbWVudHMuCgoyMDA1LTAyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglDb252ZXJ0IHRoZSBrZXkgbm90aWZpY2F0aW9ucyBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOgoJUmVwYWludCB0aGUgbm9uLWNsaWVudCBhcmVhIHRvIHdvcmsgYXJvdW5kIGJyb2tlbiBXTV9QQUlOVCBoYW5kbGVycwoJYWxzbyB3aGVuIGRvaW5nIGEgc3luY2hyb25vdXMgdXBkYXRlIHdpdGggUkRXX1VQREFURU5PVy4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHJ1Y3QgU3RvcmFnZUJhc2VJbXBsIGF0IHRoZSBzdGFydCBvZiBkZXJpdmVkIHN0cnVjdHVyZXMgaW5zdGVhZAoJb2YgdHJ5aW5nIHRvIGtlZXAgdGhlIGZpcnN0IG1lbWJlcnMgdGhlIHNhbWUuCgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CgktIEZpeCBzY3JvbGxiYXIgc2hvdy91cGRhdGUgY29uZGl0aW9ucyBpbiBTQ1JPTExfU2V0U2Nyb2xsSW5mbzogd2UgRE8KCSAgTk9UIHNob3cgc2Nyb2xsIGJhciBpZiBvbmx5IHBhZ2UgcGFyYW1ldGVyIGNoYW5naW5nIHdoZW4gc2Nyb2xsYmFyCgkgIGlzIGRpc2FibGVkLgoJLSBSZW1vdmVkIGJDaGFuZ2VQYXJhbXMgZnJvbSBTQ1JPTExfU2V0U2Nyb2xsSW5mbyBhcyB1bm5lZWRlZCBmbGFnLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNob3J0ZW4gdGhlIGlkIG9mIHRoZSBxdWVzdGlvbiB0byBhdm9pZCBqYWRlIGVycm9yLgoKCSogcHJvZ3JhbXMvdGFza21nci9Gci5yYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglGcmVuY2ggbG9jYWxpemF0aW9uLgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NvY2suYzoKCUNvbnZlcnQgYXN5bmMgSS9PIHF1ZXVlcyB0byBzdGFuZGFyZCBsaXN0cy4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVudXNlZCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy93aW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZWxlYXNlIGNhcHR1cmUgYmVmb3JlIHNlbmRpbmcgV01fTkNERVNUUk9ZIG1lc3NhZ2UsIGRvIG5vdCBzZW5kCglXTV9DQVBUVVJFQ0hBTkdFRCBpbiB0aGF0IGNhc2UuIEFkZCBhIHRlc3QgY2FzZSBmb3IgdGhhdCBiZWhhdmlvdXIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHZXRXaW5kb3dSZWN0IGFuZCBHZXRDbGllbnRSZWN0IGRvIG5vdCBjaGFuZ2UgUkVDVCBjb250ZW50cyBpZiB0aGUKCXBhc3NlZCB3aW5kb3cgaGFuZGxlIGlzIGludmFsaWQuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglUcnkgb2xkIGJ1ZmZlciBkZXNjcmlwdGlvbiBzdHJ1Y3R1cmUgb24gZmFpbHVyZSB3aXRoIG5ldyBvbmUuCgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYXRjaCBSYWlzZUV4Y2VwdGlvbiBhbmQgRVhDRVBUSU9OX1JFQ09SRCB0byBTREsgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29wZW5nbDMyL3dnbF9leHQuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGltcGxlbWVudCBwYXJ0aWFsIFBCdWZmZXIgc3VwcG9ydAoJLSBtaW5pbWFsIHBpeGVsIGZvcm1hdCBzdXBwb3J0CgoJKiBkbGxzL21zZG1vL2Rtb3J0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0YWJzLCByZWZvcm1hdCwgbWVyZ2UgY29tbWVudHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL21zaXByaXYuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIEV4ZWN1dGVBY3Rpb24gaGFuZGxlci4KCVN0b3JlIHRoZSBrZXlwYXRoLCBhbmQgZG8gcmVmY291bnRpbmcgYW5kIHJlZ2lzdHJhdGlvbiBvZiBTaGFyZWRETExzLgoJRml4IGEgYnVnIHdpdGggaGFuZGluZyBkd29yZCB2YWx1ZXMgaW4gdGhlIHJlZ2lzdHJ5LgoJRml4IGJ1Z3Mgd2l0aCB3cml0aW5nIHJlZ2lzdHJ5IGtleXMgd2hlcmUgdmFsdWUgPT0gTlVMTC4KCU1ha2UgdXNlIG9mIG1zaWRlZnMuaC4KCUxheSBzb21lIGdyb3VuZHdvcmsgZm9yIHVuaW5zdGFsbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBJbWFnZUxpc3RfTG9hZEltYWdle0EsV30gd2VyZSBiYXNpY2FseSBhIGN1dCduJ3Bhc3RlIG9mIGVhY2gKCSAgb3RoZXIuIFJlbW92ZWQgdGhlIEEgdmFyaWFudCBhbmQgZGlkIGEgQS0+VyB0cmFuc2xhdGlvbi4KCS0gSW1hZ2VMaXN0X0xvYWRJbWFnZVc6IGdldCB0aGUgYml0bWFwIHNpemUgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmIGFuZAoJICBub3QgZnJvbSB0aGUgbWFzayAoSW1hZ2VMaXN0X0xvYWRJbWFnZUEgZGlkIHRoYXQpLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sOiBCcmlhbiBWaW5jZW50IDx2aW5uQHRoZXNoZWxsLmNvbT4KCUNsZWFuIHVwIHJlZmVyZW5jZXMgdG8gdGhyZWFkaW5nIGluIERldmVsb3BlcidzIEd1aWRlLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNhbiB3ZSBidW5kbGUgZXZlcnRoaW5nIHRvZ2V0aGVyPwoJU3VnZ2VzdGVkIGJ5IEdyYWhhbSBUb2FsIDxndG9hbEBndG9hbC5jb20+LgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBpbmZvIG9uIGJ1aWxkaW5nIGR5bmFtaWMgc3RyaW5ncyBmb3IgbG9nZ2luZy4KCVJlb3JkZXIgc29tZSBwb2ludHMgZm9yIGEgbW9yZSBsb2dpY2FsIG9yZ2FuaXphdGlvbi4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gc29tZSBiYXNpYyB3b3JrIHdpdGggcmVnaXN0cnkgY29tcG9uZW50IHBhdGhzLgoKCSogaW5jbHVkZS9tc2lkZWZzLmg6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeSBpbiBmYWlsdXJlIGNhc2UuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCBoYW5kbGluZyBvZiB1bnVzdWFsIHZlbmRvciBzdHJpbmdzIGluIGQzZDgsIGFuZCBjaGVjayBmb3IgYQoJc3RhdGVibG9jayBiZWZvcmUgdHJ5aW5nIHRvIHJlbGVhc2UgaXQgaW4gd2luZWQzZC4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8dHVsbWluQGdtYWlsLmNvbT4KCUNvbnRyb2xzIHdpdGggRVNfUklHSFQgb3IgRVNfQ0VOVEVSIHNob3VsZG4ndCBoYXZlIEVTX0FVVE9IU0NST0xMLgoKMjAwNS0wMi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6CglSZXZlcnQgU0NfQ0xPU0UgY2hhbmdlLCB0aGlzIGlzIGNhdXNpbmcgZGVhZGxvY2tzLgoKCSogZG9jdW1lbnRhdGlvbi90aHJlYWRpbmcuc2dtbDogUmVtb3ZlZCBubyBsb25nZXIgdXNlZCB0aHJlYWRpbmcuc2dtbC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbDoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUNvcnJlY3QgYSBjb3VwbGUgb2YgbWlub3IgZG9jdW1lbnRhdGlvbiB0eXBvcy4KCgkqIHRvb2xzL3dpZGwvY2xpZW50LmMsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuaCwKCSAgdG9vbHMvd2lkbC9zZXJ2ZXIuYywgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbC5oOgoJUmVtb3ZlZCB0aGUgdXNlbGVzcyBwcm94eS5oIGhlYWRlciBmaWxlLgoJRml4ZWQgYSBjb3VwbGUgb2Ygd2FybmluZ3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNb3JlIGNvcnJlY3QgZml4IGZvciBkc3AgZW1wdHkgY2FzZS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVNtYWxsIGZpeCBmb3IgdGhlIEdlcm1hbiByZXNvdXJjZSBmaWxlLgoKCSogcHJvZ3JhbXMvdGFza21nci9EZS5yYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUFkZGVkIEdlcm1hbiBsYW5ndWFnZSBzdXBwb3J0LgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdWdnZXN0IG1ha2UgdW5pbnN0YWxsIGluIGNhc2UgdGhlIHVzZXIgdHJpZWQgbWFrZSBpbnN0YWxsLgoKCSogdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9jbGllbnQuYywgdG9vbHMvd2lkbC9oZWFkZXIuYywKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9zZXJ2ZXIuYywKCSAgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbC5oLCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CgktIEFkZCBiYXNpYyBzdXBwb3J0IGZvciBjcmVhdGluZyBjbGllbnQgYW5kIHNlcnZlciBzdHViIGZpbGVzLgoJLSBTdXBwb3J0IGltcGxpY2l0X2hhbmRsZSBhdHRyaWJ1dGUgaW4gSURMIGZpbGVzLgoJLSBCdWlsZCBtaXhlZC1tb2RlIHN0dWIgZmlsZXMuCgoJKiBkbGxzL3JzYWJhc2UvTWFrZWZpbGUuaW4sIGRsbHMvcnNhYmFzZS9tYWluLmMsCgkgIGRsbHMvcnNhYmFzZS9yc2FiYXNlLnNwZWM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNYWRlIHJzYWJhc2UgZm9yd2FyZCBldmVyeXRoaW5nIHRvIHJzYWVuaC4KCgkqIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL250ZGxsL250LmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglOdFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIHNob3VsZCByZXR1cm4gYSBmcmVxdWVuY3kgb2YgMTE5MzE4Mkh6IGFuZAoJY291bnRzIGxpa2UgaW4gV2luZG93cy4gU29tZSBhcHBsaWNhdGlvbnMgZGVwZW5kIG9uIHRoYXQuCglTaW1wbGlmeSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlciBhIGJpdC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBbiBpbnRlcmFjdGl2ZSB0ZXN0IHNob3VsZCBoYXZlIHZvbHVtZSwgZWxzZSBhIHJhdGlvbmFsIHVzZXIgd2lsbAoJZGVjaWRlIGl0IGlzIGJyb2tlbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0YWJzIGFuZCByZWZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRoZSAtbm9uYW1lIGZsYWcgdG8gbWF0Y2ggdGhlIFBsYXRmb3JtIFNESy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglJbiBjYWxjdWxhdGluZyB0aGUgU01QVEUgdGltZSwgd2Ugd291bGQgcm91bmQgaW5jb3JyZWN0bHkgKDA6MDo0LjMwCglpbnN0ZWFkIG9mIDA6MDo1LjAgW3RoZSBsYXN0IGNvbHVtbiBvbmx5IGdvZXMgdG8gMjldKS4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmgsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaGFuZGxlIElGaWxlU3lzdGVtQmluZERhdGEgaW4gSVNGX0Rlc2t0b3BfZm5QYXJzZURpc3BsYXlOYW1lCgktIG1vcmUgVW5pY29kZSBjb252ZXJzaW9uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGhhcmRjb2RlIG9yZGluYWxzIGlmIHdoaWNoIGFyZSBub3QgaGFyZGNvZGVkIG9uIFdpbmRvd3MuCgoJKiBkbGxzL21zaS9mb3JtYXQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBmb3JtYXRzIGxpa2UgW1xcXV0gYW5kIFtcXFtdIHdvcmsgcHJvcGVybHkuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFwcGFyZW50bHkgTlQ0IGNhbiBhbHNvIHJldHVybiBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5ELgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBQYXNzIG9yaWdpbmFsIHdQYXJhbSB0byBDYWxsTmV4dEhvb2tFeC4KCS0gQXZvaWQgcGxheWluZyBnYW1lcyB3aXRoIGZvY3VzIGluIGEgbmV3bHkgY3JlYXRlZCB0aHJlYWQsIHRoYXQgbGVhZHMKCSAgdG8gYWxsIGtpbmRzIG9mIG1pc2JlaGF2aW91cnMgYW5kIGZhaWx1cmVzIGluIHdpbmRvdyBhY3RpdmF0aW9uCgkgIHVuZGVyIFdpbmRvd3MuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCB0ZXN0cyBmb3Igd2luOXggYW5kIG9sZCB2ZXJzaW9ucyBvZiBEaXJlY3RYLgoKCSogZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTdHViIGZvciBDcnlwdENBVEFkbWluUmVsZWFzZUNvbnRleHQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB3ZSBnZXQgZG93biB0byB0aGUgbGFzdCBmcmFnbWVudCBvciB0d28gaW4gb3VyIG91dHB1dCB0byB0aGUgRFNQLAoJd2Ugc2hvdWxkIHVzZSB0aGUgU05EX0RTUF9QT1NUIGlvY3RsIHRvIGxldCB0aGUgc291bmQgY2FyZCBrbm93IHRvCglmbHVzaCB0aG9zZSBmcmFnbWVudHMuICBUaGlzIGFsbG93cyB1cyB0byBwcmVjaXNlbHkga25vdyB3aGVuIHRoZQoJYnVmZmVyIGlzIGVtcHR5LCBhbmQgZml4ZXMgYW5vdGhlciBzZXQgb2Ygd2lubW0gdGVzdHMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB0ZXN0aW5nIHRoZSBXQVZFX01BUFBFUiBkZXZpY2UsIGl0IHNlZW1zIGluYXBwcm9wcmlhdGUgKHRvIG1lKSB0bwoJZGVtYW5kIFdBVkVfRk9STUFUX0RJUkVDVDsgdGhpcyBmaXhlcyBhbm90aGVyIHNsZXcgb2YgdGVzdHMuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIHdlIGFyZSBjb252ZXJ0aW5nIGZyb20gb25lIHNhbXBsZSByYXRlIHRvIGFub3RoZXIsIHdlIGRvIGhhdmUgdG8KCWFkanVzdCB3aGVuIGNhbGN1bGF0aW5nIFRJTUVfU0FNUExFUy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVRha2UgaW50byBhY2NvdW50IGFkZGl0aW9uYWwgcmVxdWVzdGVkIHNwYWNpbmcgb24gYnJlYWsgY2hhcmFjdGVycy4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbmFibGUgcGFyc2luZyBvZiB2ZW5kb3Igc3RyaW5ncyBub3QgbWF0Y2hpbmcgdGhlIGV4cGVjdGVkIHRlbXBsYXRlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglDb3JyZWN0bHkgZGlzcGxheXMgdGhlIHRleHQgd2l0aCBlbGxpcHNpcyB3aGVuIHRoZXJlIGlzIG5vdCBlbm91Z2gKCXJvb20gaW4gYSBoZWFkZXIgaXRlbSBhbmQgYW4gaW1hZ2UgZnJvbSBhbiBpbWFnZWxpc3QgaXMgZGlzcGxheWVkIG9uCgl0aGUgcmlnaHQgb2YgdGhlIHRleHQuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9QbC5yYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvbXNpL21zaS5yYywgZGxscy9tc2kvbXNpX0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIE1TSSBTcGFuaXNoIHJlc291cmNlcy4KCjIwMDUtMDItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaW9uLmMsIHNlcnZlci91c2VyLmg6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGNyZWF0ZV9yZWdpb24gZnVuY3Rpb24sIGFuZCBkaXJlY3RseSBleHBvcnQKCWNyZWF0ZV9lbXB0eV9yZWdpb24gaW5zdGVhZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBzZXJ2ZXIvd2luZG93LmM6CglBbGxvdyB0aGUgY2xpZW50IHJlY3RhbmdsZSB0byBiZSBvZiBhcmJpdHJhcnkgc2l6ZSBhbmQgZGltZW5zaW9ucywKCXJlZ2FyZGxlc3Mgb2YgdGhlIHdpbmRvdyByZWN0YW5nbGUuCgoJKiBkbGxzL2dkaS9mb250LmM6IFRBTkFCRSBIaXJvc2hpIDxoaXJva3VuX2RheW9tb25AaW5mb3NlZWsudG8+CglBZGRlZCBNdWx0aWJ5dGUgY2hhcmFjdGVyIHNldCBzdXBwb3J0IGluIEdldEdseXBoT3V0bGluZUEuCgoJKiBkbGxzL2dkaS9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGhvbGQgdGhlIEdESSBsb2NrIHdoZW4gY2FsbGluZyBEQ19HZXREQ1VwZGF0ZS4KCgkqIGRsbHMvY3J5cHRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHRkbGwvY3J5cHRkbGwuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRm9yd2FyZCBNRDV7RmluYWwsSW5pdCxVcGRhdGV9IHRvIGFkdmFwaTMyLgoKCSogZGxscy9udGRsbC9oYW5kbGV0YWJsZS5jLCBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9yZWxheS5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCVJlcGxhY2UgR2V0Q3VycmVudFByb2Nlc3MoKSB3aXRoIE50Q3VycmVudFByb2Nlc3MoKSBpbiBudGRsbC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBhIGNvdXBsZSBvZiBkZWZpbmVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBzdHJpbmdzIGFyZSBudWxsIHRlcm1pbmF0ZWQuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIHJ1bm5pbmcgYSBzZWNvbmQgdGltZSwgZG9uJ3QgZmFpbCBpZiB3ZSBjYW4ndCBleHRyYWN0IGFuIGljb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcnRpam4gVmVybm9vaWogPHl1eGR3YTcwMkBzbmVha2VtYWlsLmNvbT4KCVNjcm9sbCBpbnN0ZWFkIG9mIHJlcGFpbnRpbmcgd2hlbiBleHBhbmRpbmcvY29sbGFwc2luZyB0cmVlcy4KCURvbid0IHJlcGFpbnQgb24gaG92ZXIgaWYgJ2hvdCB0cmFja2luZycgaXNuJ3Qgb24uCgoJKiBkbGxzL2l0c3MvaXRzcy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgTG9ja1NlcnZlci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIHR5cGVsaWIgY2FjaGUgc2hvdWxkIHRha2UgdGhlIHR5cGVsaWIgcmVzb3VyY2UgaW5kZXggaW50bwoJYWNjb3VudC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogQ29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC9zdHJpbmcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGxzdHIqIGZ1bmN0aW9ucyBpbmxpbmUgaW5zaWRlIFdpbmUuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGhhbmRsZSBJRmlsZVN5c3RlbUJpbmREYXRhIGluIElTaGVsbEZvbGRlcjo6UGFyc2VEaXNwbGF5TmFtZQoJLSBjb252ZXJ0IElTaGVsbEZvbGRlcjo6UGFyc2VEaXNwbGF5TmFtZSB0byB1c2UgVW5pY29kZQoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgdGhlIGluc3RhbGxlZCBzdGF0ZSBmb3IgY29tcG9uZW50cyBkdXJpbmcgQ29zdEZpbmFsaXplLiBMYXlpbmcKCWdyb3VuZHdvcmsgdG8gYmUgYWJsZSB0byBzdGFydCBwcm9jZXNzaW5nIHVuaW5zdGFsbCBsb2dpYyBhcyB3ZWxsLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCURlZldpbmRvd1Byb2MncyBXTV9OQ0NBTEMgaGFuZGxlciBtdXN0IG5vdCBzdWJ0cmFjdCBzcGFjZSBmb3IKCXNjcm9sbGJhcnMgaWYgdGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBmb3IgaXQgYW55d2F5LiBXaXRoIHRlc3RzIHRvCgljb25maXJtIHRoZSBiZWhhdmlvci4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIHVzZXIzMl9jcm9zc3Rlc3QuZXhlIGxvYWRhYmxlIG9uIE5UIDMuNTEuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJRGlzcGF0Y2hNZXNzYWdlIG5lZWRzIHRvIHJlcGFpbnQgdGhlIG5vbi1jbGllbnQgYXJlYSBpZiB0aGUgV01fUEFJTlQKCWhhbmRsZXIgZGlkbid0IGRvIGl0LgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIHdpbmRvd3MvY2xhc3MuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIFJlZ2lzdGVyQ2xhc3NFeEEgY2hlY2sgdGhhdCByZXNlcnZlZCBieXRlcyBpcyBhIHZhbGlkIHZhbHVlLgoJVGVzdHMgdG8gY29uZmlybSB0aGlzIGJlaGF2aW91ci4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CglQb2ludCBLRVlCT0FSRFBSRUYgYW5kIFNDUkVFTlJFQURFUiB0byByZWdpc3RyeSBrZXlzIGFuZCB2YWx1ZXMgdGhhdAoJbWF0Y2ggbmF0aXZlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIHZhcmlhbnQgbWFjcm9zIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSB1bmlvbiBkaXJlY3RseS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdHlwby4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHRvb2xzL3dpbmVkdW1wL2VtZi5jLCB0b29scy93aW5lZHVtcC9sbmsuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgY29uZmlnLmggJiBIQVZFXyB3aGVyZSBuZWVkZWQsIC1XIGZpeGVzLgoKCSogZGxscy9tYXBpMzIvcHJvcC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IHJhY2UgaW4gSU1BUElQcm9wX1JlbGVhc2UoKSwgLVcgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwLCBjcmVhdGUgdW5pY29kZSB2ZXJzaW9ucyBvZiBfSUxDcmVhdGVGcm9tUGF0aCwKCV9JTENyZWF0ZUd1aWRGcm9tU3RyLCBhbmQgX0lMQ3JlYXRlRnJvbUZpbmREYXRhLgoKCSogZGxscy9xdWFydHovYWNtd3JhcHBlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBBQ00gV3JhcHBlci4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOgoJRGFycnlsIERpeG9uIDxlc3JldmVyX290dWFAcHl0aG9uaGFja2VyLmlzLWEtZ2Vlay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBOWkRUIChOZXcgWmVhbGFuZCBEYXlsaWdodCBUaW1lKSB0byBUWl9JTkZPLgoKCSogZGxscy91bmljb3dzL01ha2VmaWxlLmluLCBkbGxzL3VuaWNvd3MvbWFpbi5jLAoJICBkbGxzL3VuaWNvd3MvdW5pY293cy5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgSXNEZXN0aW5hdGlvblJlYWNoYWJsZVcuCgoyMDA1LTAyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGhyZWFkLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudGF0aW9uIHN0dWIgZm9yIFF1ZXVlVXNlcldvcmtJdGVtLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9zdGdfcHJvcC5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLAoJICBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGFuZCB0ZXN0IElQcm9wZXJ0eVNldFN0b3JhZ2UuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudCAnVycgdmFyaWFudHMgb2YgUHJvY2VzczMyRmlyc3QgLyBOZXh0IEFQSXMKCgkqIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZ2RpMTYuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUltcGxlbWVudGVkIEdldEdseXBoT3V0bGluZTE2LgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gSW1wbGVtZW50IFNQSV97R0VULFNFVH1QT1dFUk9GRkFDVElWRSBhbmQgU1BJX1NFVExPV1BPV0VSQUNUSVZFLgoJLSBDb3JyZWN0ZWQgU1BJX0dFVExPV1BPV0VSQUNUSVZFIHRvIHVzZSBhbiBpbmRleCAoaW5zdGVhZCBvZiBpdHMgU1BJCgkgIHZhbHVlKSB0byBhdm9pZCBhbiBvdXQgb2YgYm91bmRzIGNvbmRpdGlvbi4KCS0gQ3JlYXRlZCB1bml0IHRlc3RzIGZvciBTUElfe0dFVCxTRVR9UE9XRVJPRkZBQ1RJVkUgYW5kCgkgIFNQSV97R0VULFNFVClTRVRMT1dQT1dFUkFDVElWRS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgYSBkZWZpbml0aW9uIGZvciBPcGVuSW5wdXREZXNrdG9wKCkuCglBZGQgY29uc3RhbnRzIGZvciBQQlRfQVBNKiBwYXJhbWV0ZXJzLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglIb3Jpem9udGFsIHNjcm9sbGJhciBpcyBoaWRkZW4gd2hlbiBlZGl0IGNvbnRyb2wgaXMgZW1wdGllZC4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1BsLnJjOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJU3luYyBQb2xpc2ggcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglUYWtlIGludG8gYWNjb3VudCB0aGUgbmV3IHNpemUgb2YgYSBjb2x1bW4gd2hlbiB0aGUgaGVhZGVyIHNpemUKCWNoYW5nZS4KCgkqIGRsbHMvcXVhcnR6L2FjbXdyYXBwZXIuYywgZGxscy9xdWFydHovYXZpZGVjLmMsCgkgIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jLCBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcHJvdmVkIEFWSURlYy4KCUFkZGVkIDIgbmV3IGNhbGxiYWNrIGZ1bmN0aW9ucyB0byB0aGUgdHJhbnNmb3JtIHRlbXBsYXRlIGFuZCBtb3ZlZCBhbGwKCW9mIHRoZW0gaW50byBhIGZ1bmNzIHRhYmxlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBSZWdPcGVuS2V5LCBSZWdDbG9zZUtleSB0ZXN0cy4KCgkqIGRsbHMvbXByL21wcl9EZS5yYywgZGxscy9tcHIvbXByX0VuLnJjLCBkbGxzL21wci9tcHJfRnIucmMsCgkgIGRsbHMvbXByL21wcl9QdC5yYywgZGxscy9zaGRvY3Z3L0RlLnJjLCBkbGxzL3NoZG9jdncvRW4ucmMsCgkgIGRsbHMvc2hkb2N2dy9Gci5yYywgZGxscy9zaGRvY3Z3L1B0LnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9TaS5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9ObC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglVc2UgIk1TIFNoZWxsIERsZyIgZXZlcnl3aGVyZSBleGNlcHQgZm9yIEphcGFuZXNlLgoKCSogZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy9oYW5kbGUuYywgZGxscy9tc2Ntcy9sY21zX2FwaS5oLAoJICBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsCgkgIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3N0dWIuYywgZGxscy9tc2Ntcy90cmFuc2Zvcm0uYywKCSAgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgdHJhbnNmb3JtIGhhbmRsZXMuCgktIEltcGxlbWVudCBDcmVhdGVDb2xvclRyYW5zZm9ybXtBLFd9LCBDcmVhdGVNdWx0aVByb2ZpbGVUcmFuc2Zvcm0sCgkgIERlbGV0ZUNvbG9yVHJhbnNmb3JtLgoJLSBEb24ndCBkZXBlbmQgb24gbGNtcyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mCgkgIElzQ29sb3JQcm9maWxlVGFnUHJlc2VudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIFJldmVydCB3cm9uZyAtbm9uYW1lIG1hcmt1cCBmb3IgRHJhZyosIERvRW52aXJvbm1lbnRTdWJzdCBhbmQKCSAgU0hHZXROZXdMaW5rSW5mb3tBLFd9LgoJLSBBbHNvIG1hcmsgc3R1YiBleHBvcnRzIC1ub25hbWUgd2hlbiB0aGV5IGFyZSBleHBvcnRlZCBieSBvcmRpbmFsCgkgIG9ubHkgb24gd2luOTgvMmsuCgktIEltcGxlbWVudGF0aW9uIGxldmVsIHN0dWJzIGZvciBTaGVDaGFuZ2VEaXJBLCBTaGVHZXREaXJBLAoJICBTSEhlbHBTaG9ydGN1dHNfUnVuRExMe0EsV30uCgktIE5ldyBzcGVjIGZpbGUgc3R1YnMgZm9yIENvbnRyb2xfUnVuRExMQXNVc2VyVywKCSAgRml4dXBPcHRpb25hbENvbXBvbmVudHMsIE9DSW5zdGFsbCwgU0hDaGFuZ2VOb3RpZnlTdXNwZW5kUmVzdW1lLAoJICBTSENyZWF0ZVByb2Nlc3NBc1VzZXJXLCBTSEV4dHJhY3RJY29uc1csCgkgIFNISW52b2tlUHJpbnRlckNvbW1hbmR7QSxXfSwgU0hJc0ZpbGVBdmFpbGFibGVPZmZsaW5lLAoJICBTSExvYWROb25sb2FkZWRJY29uT3ZlcmxheUlkZW50aWZpZXJzLCBTSFBhdGhQcmVwYXJlRm9yV3JpdGV7QSxXfSwKCSAgU2hlbGxFeGVjX1J1bkRMTHssQSxXfSwgU0hHZXRJY29uT3ZlcmxheUluZGV4e0EsV30uCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0YWJzIGFuZCBtYWtlIGZvcm1hdHRpbmcgY29uc2lzdGVudC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGluY2x1ZGUvb2xlY3RsLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgYSBzdHViIGZvciBPbGVMb2FkUGljdHVyZVBhdGgoKS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgTFdBXyBjb25zdGFudHMsIHVzZWQgaW4ge1MvR31MYXllcmVkV2luZG93QXR0cmlidXRlcygpLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGluZmluaXRlIGxvb3Agd2hlbiBkb2luZyBhIHR5cGVsaWIgbWFyc2hhbGxlZAoJSVVua25vd246OlF1ZXJ5SW50ZXJmYWNlIGJ5IG9ubHkgZG9pbmcgYW4gZXh0cmEgUUkgaWYgcmVxdWVzdGVkIElJRCBpcwoJbm90IGVxdWFsIHRvIG1hcnNoYWxsZWQgSUlELgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGxvYWRpbmcgb2YgYnVpbHRpbiB0eXBlbGlicy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IFNldEl0ZW0gc28gdGhhdCBpdGVtcyBkb24ndCBnZXQgd3JvbmdseSByZS1vcmRlcmVkLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsCgkgIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEFib3J0UHJpbnRlciwgQWRkUG9ydEV4e0EsV30sCglBZGRQcmludGVyQ29ubmVjdGlvbntBLFd9LCBDb25uZWN0VG9QcmludGVyRGxnLAoJRGVsZXRlUHJpbnRlckNvbm5lY3Rpb257QSxXfSwgRW51bUZvcm1ze0EsV30sIEVudW1QcmludGVyRGF0YXtBLFddLAoJRXh0RGV2aWNlTW9kZSwgRmluZHtDbG9zZSxGaXJzdCxOZXh0fVByaW50ZXJDaGFuZ2VOb3RpZmljYXRpb24sCglGcmVlUHJpbnRlck5vdGlmeUluZm8sIFNjaGVkdWxlSm9iLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBTaGlmdCBrZXkgc3RhdGUgaW50byBhY2NvdW50IHdoaWxlIHByb2Nlc3NpbmcgYW4gYWNjZWxlcmF0b3IuCglBZGQgYSBjb3VwbGUgb2YgdGVzdCBjYXNlcy4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvRW4ucmMsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglDbGVhbnVwIHRhc2ttZ3IgcmVzb3VyY2UgZmlsZSAoZ2V0IHJpZCBvZiBDKysgc3R5bGUgY29tZW50cywgdXNlICJNUwoJU2hlbGwgRGxnIiBmb3IgZGlhbG9ncywgZXRjKS4KCVByZXBhcmF0aW9uIGZvciB0cmFuc2xhdG9ycyAobW92ZSBlbmdsaXNoIHJlc291cmNlcyB0byBFbi5yYykuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVJldmVyc2UgdGhlIG9yZGVyIGZvciBkZWxldGluZyB0aGUgaXRlbXMgaW4gcmVzZXRjb250ZW50IHRvIGNvcnJlY3RseQoJZW1wdHkgYSBjb21ib2JveGV4LgoKCSogaW5jbHVkZS93dHlwZXMuaWRsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGRlZCBMUERXT1JEIGRlZmluaXRpb24uCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT25seSAnZml4JyB0aGUgbmFtZXMgb2Ygc291cmNlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyAodGhpcyB3YXkKCWRvY3VtZW50YXRpb24gZmlsZXMgYXJlIHVuaGFybWVkKS4KCUJldHRlciBoYW5kbGUgTWFrZWZpbGVzIGdlbmVyYXRlZCBieSBXaW5lbWFrZXIuIEluIHBhcnRpY3VsYXIsIGRvbid0CglyZW5hbWUgdGhlbSB0byBtYWtlZmlsZS53aW4hCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSB2YWx1ZXMgYXJlIHF1b3RlZCBhbmQgc3BhY2VzIGFkZGVkLCBzbyBoYXZpbmcgc3BhY2VzIGluIHRoZQoJcHJvcGVydGllcyByZXN1bHRzIGluIHNwYWNlcyBpbiB0aGUgdmFsdWVzIHdoaWNoIGlzIGluY29ycmVjdC4KCgkqIGluY2x1ZGUvcmljaG9sZS5pZGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZGVkIElSaWNoRWRpdE9sZUNhbGxiYWNrLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IHRoZSBudW1iZXIgb2YgYXJncyBvZiBTTkRNU0dBIGluIExpc3RWaWV3X0dldFN1Ykl0ZW1SZWN0LgoKCSogZGxscy9udGRsbC9udC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggTnRRdWVyeVBlcmZvcm1hbmNlQ291bnRlciBwYXJhbWV0ZXIgY2hlY2tpbmcuIFNwb3R0ZWQgYnkgQWxleAoJV29vZHMuCgoyMDA1LTAyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEJldHRlciB0cmFjaW5nLgoJLSBTbWFsbCBjbGVhbnVwIG9mIGNyZWF0aW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTWFyayBleHBvcnRzIC1ub25hbWUgd2hlbiB0aGV5IGFyZSBleHBvcnRlZCBieSBvcmRpbmFsIG9ubHkgb24KCXdpbjk4LzJrLgoKCSogTWFrZWZpbGUuaW46IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglkbGxzL19faW5zdGFsbC1saWJfXyBhbmQgcHJvZ3JhbXMvX19pbnN0YWxsX18gc2hvdWxkIG5vdCBmb3JjZSB0aGUKCWluc3RhbGxhdGlvbiBvZiB0aGUgV2luZSBoZWFkZXJzIGFzIHRoaXMgaXMgY29udHJhcnkgdG8gdGhlIHB1cnBvc2Ugb2YKCWluc3RhbGwtbGliLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1vdmUgbWFyc2hhbGluZyBzdGF0ZSBtYWNoaW5lIGludG8gc3R1YiBtYW5hZ2VyIGZyb20gaWZzdHViLgoJLSBBZGQgYWRkaXRpb25hbCBuZWVkZWQgc3RhdGVzIGZvciB0YWJsZS13ZWFrIG1hcnNoYWxpbmcsIGFzIHNob3duIGJ5CgkgIHRlc3RzLgoJLSBQcm90ZWN0IGV4dGVybmFsIHJlZmVyZW5jZSBjb3VudCBmcm9tIHVuZGVyZmxvd3Mvb3ZlcmZsb3dzLgoKCSogc2VydmVyL3F1ZXVlLmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCUVuc3VyZSB0aGF0IGNhcmV0IHBvc2l0aW9uIGlzIG5vdCByZXNldCB0byAoMCwgMCkgd2hlbiBDcmVhdGVDYXJldCBpcwoJY2FsbGVkIHNlY29uZCB0aW1lIHdpdGggdGhlIHNhbWUgd2luZG93LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWx3YXlzIHVubGluayBjaGlsZHJlbiBiZWZvcmUgc2VuZGluZyBXTV9OQ0RFU1RST1kgbWVzc2FnZS4KCS0gRml4IG9yZGVyIG9mIFdNX0RFU1RST1kgbWVzc2FnZXMgZm9yIHRoZSBjaGlsZHJlbidzIHJlY3Vyc2lvbi4KCS0gRGVzdHJveVdpbmRvdyBzaG91bGQgaGlkZSBvbmx5IHZpc2libGUgd2luZG93cy4KCS0gQWRkIGEgdGVzdCBjYXNlIGZvciB0aGUgYWJvdmUgZml4ZXMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglEdXBsaWNhdGUgV2luZG93cyBiZWhhdmlvdXIgYW5kIHVzZSBTZW5kTWVzc2FnZSBmb3IgdGhlIFNDX0NMT1NFCglzeXN0ZW0gY29tbWFuZCBpbnN0ZWFkIG9mIFBvc3RNZXNzYWdlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwcm9ibGVtcyB3aXRoIG15IGNvZGUgZm9yIGZpbmRpbmcgdGhlIFBhY2thZ2VDb2RlLgoKCSogdG9vbHMvd2luZWR1bXAvbG5rLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglVc2Ugc3RkbGliLmggaW5zdGVhZCBvZiBub24tc3RhbmRhcmQgbWFsbG9jLmguCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5udC5oOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNvbmRpdGlvbmFsbHkgYWRkIERFQ0xTUEVDX0FMSUdOKDgpIHRvIHdpbmUncyA2NC1iaXQgdHlwZXMgYW5kIGxlYXZlCgl0aGUgbW9kaWZpZXIgb2ZmIHdoZW4gY29tcGlsaW5nIHdpdGggbXN2Yy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIG9mZnNldHMgY2FsY3VsYXRpb25zLgoKCSogdG9vbHMvd2luZWR1bXAvbG5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgb3V0IG1vcmUgZGV0YWlscyBvbiB0aGUgdGFyZ2V0IG9mIGEgbGluay4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2RiY2luc3QuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG9kYmNpbnN0LmguCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBpbmRlbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBjYXB0dXJlIHRlc3QgdG8gcGFzcyBvbiB3aW5kb3dzIDk4IHdoZW4gbm8gc291bmQgY2FyZCBwcmVzZW50IG9yCglkZXZpY2UgYWxyZWFkeSBpbiB1c2UuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggdGltZXIgdGVzdHMgdG8gcGFzcyBvbiB3aW5kb3dzIDk4LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggYmxvY2sgYWxpZ24gdGVzdC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJSW1wbGVtZW50IE9sZUZvbnRJbXBsX1F1ZXJ5VGV4dE1ldHJpY3MuCgoJKiBkbGxzL21zdmNydC9kaXIuYzogR3VubmFyIERhbHNuZXMgPGhhcmRvbkBvbmxpbmUubm8+CglXaGVuIGdldHRpbmcgY3VycmVudCBkaXJlY3Rvcnkgb24gYSBkcml2ZSBkaWZmZXJlbnQgZnJvbSB0aGUgd29ya2luZwoJZHJpdmUsIF9nZXRkY3dkIGluY29ycmVjdGx5IHBhc3NlZCAiWDpcIiAoWCA9IGFueSBkcml2ZSkgYXMgcGF0aCB0bwoJR2V0RnVsbFBhdGhOYW1lLiAiWDoiICh3aXRob3V0IHRoZSBiYWNrc2xhc2gpIGlzIHRoZSBjb3JyZWN0IHRoaW5nIHRvCgl1c2UuCgoyMDA1LTAyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Njcm9sbC5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJUmVuYW1lIFNDUk9MTF9HZXRTY3JvbGxCYXJJbmZvIHRvIFNDUk9MTF9HZXRJbnRlcm5hbEluZm8gYW5kIG1ha2UKCWFsbG9jYXRpb24gb2YgYSBuZXcgaW5mbyBzdHJ1Y3R1cmUgb3B0aW9uYWwuCglBZGQgc29tZSBkZXNjcmlwdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHdpbmVtZW51YnVpbGRlciB0byB1bmljb2RlLgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL2xuay5jLAoJICB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgZHVtcGluZyBvZiBsbmsgZmlsZXMuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6IERhdmlkIFNtaXRoIDxkc21pdGhAYWxnb25ldC5zZT4KCUZpeCBmb3IgSUNJbmZvKCkgaW4gbXN2aWRlbyB3aGVuIGl0IGlzIHVzZWQgdG8gYXNrIGZvciBhIGNvZGVjIGJ5CglpbmRleC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQXBwYXJlbnRseSBOVDQgY2FuIGFsc28gcmV0dXJuIEVSUk9SX0VOVlZBUl9OT1RfRk9VTkQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6IEpvcmlzIEh1aXplciA8am9yaXNodWl6ZXJAcGxhbmV0Lm5sPgoJLSByZW5hbWVkIGZpbGVfb3BlcmF0aW9uX2RlbGV0ZSBhbmQgdG8gc2hmaWxlb3BzX2RlbGV0ZQoJLSByZW5hbWVkIGZpbGVfb3BlcmF0aW9uX2NoZWNrRmxhZ3MgdG8gc2hmaWxlb3BzX2NoZWNrX2ZsYWdzCgktIGFkZGVkIGhlbHBlciBmdW5jdGlvbiBzaGZpbGVvcHNfZG9fb3BlcmF0aW9uKCkKCS0gYWRkZWQgaGVscGVyIGZ1bmN0aW9uIHNoZmlsZW9wc19nZXRfcGFyZW50X2F0dHIoKQoJLSBhZGRlZCBoZWxwZXIgZnVuY3Rpb24gc2hmaWxlb3BzX2dldF9wYXJlbnRfYXR0cjIoKQoJLSB2YXJpb3VzIGNsZWFudXBzIGluIFNIRmlsZU9wZXJhdGlvblcgdXNpbmcgdGhlc2UgZnVuY3Rpb25zCgoyMDA1LTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VzLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvbXByL21wcl9Fcy5yYywgZGxscy9tc2FjbS9tc2FjbV9Fcy5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX0VzLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0VzLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfRXMucmMsIGRsbHMvc2VyaWFsdWkvRXMucmMsIGRsbHMvc2V0dXBhcGkvRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9Fcy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRXMucmMsIGRsbHMvd2luZXBzL3dwc19Fcy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRXMucmMsIGRsbHMvd2lubW0vd2lubW1fRXMucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9Fcy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywgcHJvZ3JhbXMvc3RhcnQvRXMucmMsIHByb2dyYW1zL3ZpZXcvRXMucmMsCgkgIHByb2dyYW1zL3djbWQvRXMucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRXMucmMsIHByb2dyYW1zL3dpbmhlbHAvRXMucmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglDaGFuZ2UgU1VCTEFOR19ERUZBVUxUIHRvIFNVQkxBTkdfTkVVVFJBTCBmb3IgTEFOR19TUEFOSVNIIGluIGFsbAoJcmVzb3VyY2VzLCBzbyB0aGF0IFNwYW5pc2ggbG9jYWxlcyBvdGhlciB0aGFuIFNwYWluIGFsc28gdXNlIFNwYW5pc2gKCXJlc291cmNlcy4KCgkqIGRsbHMvbXNpL21zaS5yYywgZGxscy9tc2kvbXNpX0ZyLnJjLCBkbGxzL3NoZG9jdncvRnIucmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJQWRkIEZyZW5jaCByZXNvdXJjZXMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvcmVnaXN0cnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgcHJvZHVjdCwgZmVhdHVyZSBhbmQgY29tcG9uZW50IGVudW1lcmF0aW9uIGZ1bmN0aW9ucyB0bwoJcmVnaXN0cnkuYy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeCBpbXByb3BlciB0eXBlLWNvbnZlcnNpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGQgRVZFTlRfUVVFUllfU1RBVEUgZGVmaW5lLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglDYWxsaW5nIFZhbGlkYXRlUmVjdCBvciBWYWxpZGF0ZVJnbiBvbiBhIHdpbmRvd3MgYWxzbyB2YWxpZGF0ZXMgdGhlCgljaGlsZHJlbi4gQWRkIGEgdGVzdCB0byBzaG93IHRoZSBiZWhhdmlvci4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYzogUGF1bCB2YW4gU2NoYXljayA8cG9sbGVrZUBnbWFpbC5jb20+CglDaGFuZ2UgZGV0ZWN0aW9uIG9yZGVyIHRvOiBPU1MtQUxTQS1BUlRTLUpBQ0suCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgRVNfQ0VOVEVSIGFuZCBFU19SSUdIVCBhbGlnbm1lbnQgc3R5bGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxsaW5rLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2V0UGF0aCgiIikgc2hvdWxkIHJldHVybiBTX09LLgoJU2V0UGF0aCgibm9uZXhpc3RlbnRfcGF0aCIpIHNob3VsZCByZXR1cm4gU19GQUxTRS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglGb3J3YXJkIHRvIHVzZXIzMiB3aGVuIGFwcHJvcHJpYXRlLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNvbWUgYmxvY2sgYWxpZ24gY2xlYW51cHMuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgYm9yZGVyIHRvIHRoZSBlZGl0IGNvbnRyb2wsIGFkZCBzb21lIG1vcmUgY29udHJvbHMuCgoJKiBkbGxzL21zaS9zdW1pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB1cCB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbiBjb2RlIGEgbGl0dGxlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBNc2lVc2VGZWF0dXJlLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBpbnZhbGlkIGJ1ZmZlciBzaXplIGJ5IHJvdW5kaW5nIHVwIHRvIG5leHQgbXVsdGlwbGUgb2YKCW5CbG9ja0FsaWduLgoJQWRkZWQgdGVzdCB0byB2ZXJpZnkgYnVmZmVyIHJvdW5kaW5nIGJlaGF2aW9yLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJTWFrZSBtaW5pbWl6ZWQgd2luZG93cyBzdGF5IG1pbmltaXplZC4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGNvbnN0IGRlY2xhcmF0aW9uIGZyb20gbm9uLWNvbnN0IGZ1bmN0aW9uLgoKCSogZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IE1zaVZpZXdFeGVjdXRlIHRvIGJlIGNhbGxlZCB0d2ljZSBvbiB0aGUgc2FtZSBxdWVyeS4KCgkqIGRsbHMvbXNpL21zaXF1ZXJ5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lEYXRhYmFzZUdldFByaW1hcnlLZXlzLgoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1zaUdldENvbXBvbmVudFBhdGggc2hvdWxkIGFsbG93IG51bGwgcG9pbnRlcnMgZm9yIHBjY2hCdWYgYW5kCglscFBhdGhCdWYuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBmaXhlcywgaW5kZW50YXRpb24gYW5kIGNvbW1lbnRzLgoKMjAwNS0wMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywKCSAgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsCgkgIGRsbHMvc2hsd2FwaS9tc2dib3guYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsCgkgIGRsbHMvdXNlci9kZXNrdG9wLmMsIGRsbHMvdXNlci9kaWFsb2cxNi5jLCBkbGxzL3VzZXIvaWNvbnRpdGxlLmMsCgkgIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luZG93c3guaCwgaW5jbHVkZS93aW51c2VyLmgsIHByb2dyYW1zL3Rhc2ttZ3IvYXBwbHBhZ2UuYywKCSAgcHJvZ3JhbXMvdGFza21nci9wcm9jbGlzdC5jLCBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHByb3RvdHlwZXMgb2YgR2V0Q2xhc3NMb25nQS9XLCBHZXRDbGFzc0xvbmdQdHJBL1cgYW5kCgkgIFNldENsYXNzTG9uZ0EvVyBhY2NvcmRpbmcgdG8gU0RLIGRlZmluaXRpb25zLgoJLSBBZGQgcHJvdG90eXBlcyBmb3IgU2V0Q2xhc3NMb25nUHRyQS9XLCBwcm90ZWN0IHNvbWUgR1dMXyBhbmQgR0NMXwoJICBjb25zdGFudHMgZnJvbSB1c2luZyBpbiBXaW5lIG9yIGluIF9XSU42NCBtb2RlLgoJLSBGaXggYWxsIHBsYWNlcyBpbiBXaW5lIGFmZmVjdGVkIGJ5IHRoZSBhYm92ZSBjaGFuZ2VzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVXNlIElfUnBjR2V0QnVmZmVyLCBpbnN0ZWFkIG9mIG91ciBvd24gYnVmZmVyIHJvdXRpbmVzIHRvIGZpeCBhbgoJICBvY2Nhc2lvbmFsIHRlc3QgY3Jhc2ggY2F1c2VkIGJ5IGhlYXAgY29ycnVwdGlvbi4KCS0gWmVybyB0aGUgbWVtb3J5IGJsb2NrIHBhc3NlZCB0byBScGNTZXJ2ZXJSZWdpc3RlcklmRXggc28gd2UgZG9uJ3QKCSAgcGFzcyBnYXJiYWdlIGluIHNvbWUgb2YgdGhlIGZpZWxkcyB3ZSBkb24ndCBmaWxsIGluLgoJLSBSZXR1cm4gdGhlIGNvcnJlY3QgZXJyb3IgY29kZSBmcm9tIGNyZWF0ZV9zZXJ2ZXIgYW5kIGZpeCB0d28gaGFuZGxlCgkgIGxlYWtzLgoJLSBUT0RPIHVwZGF0ZS4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgbG9jYWwgYnVmZmVyIGluIFJ0bFVwY2FzZVVuaWNvZGVTdHJpbmdUb0NvdW50ZWRPZW1TdHJpbmcsIGlmCglhcHByb3ByaWF0ZS4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvdGVzdHMvcmVnLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCU1vdmUgUnRsKlJlZ2lzdHJ5KiBzdHJ1Y3RzLCBkZWZpbmVzIGFuZCBwcm90b3R5cGVzIHRvIHdpbnRlcm5sLmguCglGaXggdHdvIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvbXNpL21zaS5yYywgZGxscy9tc2kvbXNpX0RlLnJjLCBkbGxzL3NoZG9jdncvRGUucmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkL3VwZGF0ZWQgR2VybWFuIHJlc291cmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVpbmRlbnQgc29tZSBjb2RlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBScGNJbXBlcnNvbmF0ZUNsaWVudC4KCS0gTW9yZSB0cmFjaW5nLCBwYXJ0aWN1bGFybHkgb24gZXJyb3IgcGF0aHMuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzogUGF1bCB2YW4gU2NoYXljayA8cG9sbGVrZUBnbWFpbC5jb20+CglPbmx5IHN0b3Agd3JpdGluZyBhIHZvbHVtZSBsYWJlbCBpZiB3ZSBmb3VuZCBhIG5vbiB3cml0YWJsZSBmYXQKCXBhcnRpdGlvbi4KCgkqIGRsbHMvb2xlMzIvZ2l0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBHbG9iYWwgSW50ZXJmYWNlIFRhYmxlIHNob3VsZCBkbyB0YWJsZS1zdHJvbmcgbWFyc2hhbGluZyBpbnN0ZWFkCglvZiBub3JtYWwgbWFyc2hhbGluZyBzbyB0aGF0IGFuIGludGVyZmFjZSBjYW4gYmUgcmV0cmlldmVkIG1vcmUgdGhhbgoJb25lIHRpbWUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSBjcnVmdCBsZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyBSUEMgYmFja2VuZCBpbXBsZW1lbnRhdGlvbiBpbgoJICB0aGUgYXBhcnRtZW50IHN0cnVjdHVyZS4KCS0gRG9uJ3QgcGFzcyBhbiBJUElEIGJ5IHZhbHVlIGZvciBwcm94eV9tYW5hZ2VyX2NyZWF0ZV9pZnByb3h5LgoJLSBEaXNhYmxlIG1vcmUgb2YgUlBDX1VucmVnaXN0ZXJJbnRlcmZhY2UgdG8gcHJldmVudCB0aGUgUlBDIHJ1bnRpbWUKCSAgdXNpbmcgZnJlZWQgbWVtb3J5LgoJLSBSZW5hbWUgdmFyaW91cyBleHRlcm5hbCBSUEMgYmFja2VuZCBmdW5jdGlvbnMgc28gdGhhdCB0aGV5IGFsbCBoYXZlCgkgIHRoZSBzYW1lICJSUENfIiBwcmVmaXguCgktIFJlZHVjZSB0aGUgdGltZW91dCBvZiB0aGUgZnVuY3Rpb24gdGhhdCBjb25uZWN0cyB0byBhIGxvY2FsIHNlcnZlcgoJICB0byAzMHMsIGxpa2UgbmF0aXZlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgc29tZSBleHRyYSBTSEZHSSB2YWx1ZXMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbW9yZSBTUEkgdmFsdWVzLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggUlBDIHNlcnZlciB0aHJlYWQgcmFjZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUVSUk9SX0lPX1BFTkRJTkcgaXMgZXhwZWN0ZWQsIHNvIGRvbid0IHJldHVybiBhbiBlcnJvci4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywKCSAgZGxscy9kaW5wdXQvbW91c2UuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIEdldFByb3BlcnR5IG1ldGhvZCBmb3Iga2V5Ym9hcmQgZGV2aWNlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIENPTSB1c2UgdGhlIFJQQyBydW50aW1lIGFzIHRoZSBiYWNrZW5kIGZvciBSUEMgY2FsbHMuIEJhc2VkIG9uIGEKCXBhdGNoIGJ5IE92ZSBL5XZlbi4KCjIwMDUtMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvcmVnLmM6CglCcmFkIERlTW9ycm93CglUZXN0cyBmb3IgdGhlIG50ZGxsIHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9yZWcuYzoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgUnRsUXVlcnlSZWdpc3RyeVZhbHVlcywgUnRsQ2hlY2tSZWdpc3RyeUtleSBhbmQKCVJ0bERlbGV0ZVJlZ2lzdHJ5VmFsdWUuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmMsCgkgIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYywgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDYXN0IHRoZSBHZXRQcm9jQWRkcmVzcygpIHJldHVybiB2YWx1ZSB0byBhdm9pZCB3YXJuaW5ncyBhYm91dCB0aGUKCWZ1bmN0aW9uIHBvaW50ZXIgYmVpbmcgb2YgdGhlIHdyb25nIHR5cGUuCglGaXggYXNzb3J0ZWQgc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLAoJICBkbGxzL3JpY2hlZGl0L3N0ZGNoYXJuYW1lcy5oLCBkbGxzL3JpY2hlZGl0L3RleHRfbWFwLmg6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CgljaGFyIC0+IGNvbnN0IGNoYXIgZml4ZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgY29tbWFuZCBsaW5lIHBhcmFtZXRlciAnL0QnIHRvIGRvIGRyaXZlIGRldGVjdGlvbgoJZnJvbSB3aW5lcHJlZml4Y3JlYXRlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW5jbHVkZSBjb25maWcuaCB0byByZWVuYWJsZSByZWFkaW5nIC9ldGMvZnN0YWIgb24gcGxhdGZvcm1zIHRoYXQKCXN1cHBvcnQgaXQuCglJbXBsZW1lbnRlZCBhIGJsYWNrIGxpc3Qgb2YgbW91bnQgZGlyZWN0b3JpZXMsIHdoaWNoIHNob3VsZCBub3QgYmUKCW1hcHBlZC4KCUVuc3VyZSB0aGF0IHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgaXMgbWFwcGVkLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUNoZWNrIHBkd0RhdGFMZW4gcGFyYW0gZm9yIG5vbiBOVUxMJ25lc3MuCglJbXBsZW1lbnRlZCBQUF9JTVBMVFlQRSBhbmQgUFBfVkVSU0lPTiBwcm92aWRlciBwYXJhbXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVNldCBwb2ludGVycyB0byBOVUxMIGluIGRlbGV0ZV9kcml2ZSB0byBwcmV2ZW50IGhlYXAgY29ycnVwdGlvbiBpbgoJbG9hZF9kcml2ZXMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgc29tZSBtaXNzaW5nIFxucy4KCgkqIGRsbHMvbXNjbXMvaGFuZGxlLmMsIGRsbHMvbXNjbXMvaWNjLmMsIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLAoJICBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBhbmQgdGVzdCBhY2Nlc3MgZmxhZ3MgZm9yIGNvbG9yIHByb2ZpbGVzLgoJV3JpdGUgdGhlIGNvbG9yIHByb2ZpbGUgYmFjayB0byBkaXNrIHdoZW4gaXQgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90ZXN0cy9wcmludGYuYywKCSAgZGxscy9tc3ZjcnQvd2NzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgaGFuZGxpbmcgb2YgJXdzLCAlUyBhbmQgJUMgdG8gX3Zucyh3KXByaW50ZiwgaW1wcm92ZSBzcHJpbnRmCgl0ZXN0cy4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJICBkbGxzL3VzZXIvZGRlL3NlcnZlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgRERFIGltcGxlbWVudGF0aW9uIGFsd2F5cyB3b3JrIGludGVybmFsbHkgaW4gVW5pY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVN1cHByZXNzIGEgd2FybmluZy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0IHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIElTaGVsbExpbms6OlNldElETGlzdCgpIGFuZAoJSVNoZWxsTGluazo6U2V0UGF0aCgpLgoJQ2hlY2sgd2hhdCBkZWZhdWx0IHZhbHVlcyBvbmUgZ2V0cyBvbiBhIGZyZXNoIElTaGVsbExpbmsgb2JqZWN0LgoJQWRkIHNvbWUgbW9yZSB0ZXN0cyB2ZXJpZnlpbmcgbm90aGluZyBpcyBsb3N0IGluIGFuIElTaGVsbExpbmsKCXNhdmUvbG9hZCBjeWNsZS4gTWVyZ2VkIHRoZSBlbXB0eSBzaGVsbGxpbmsgdGVzdCB3aXRoIHRoZXNlLgoKCSogZGxscy9nZGkvcmVnaW9uLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglSRUdJT05fRnJhbWVSZ24gY29tcHV0ZXMgdGhlIGZyYW1lIHJlZ2lvbiBpbnNpZGUgdGhlIG9yaWdpbmFsIHJlZ2lvbi4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJVXBkYXRlIHNjcm9sbCBpbmZvIG9uIFdNX1NFVFRFWFQuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCUltcGxlbWVudCB3b3JkIHdyYXAuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5wdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnI6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVXBkYXRlIFJFQURNRSBmb3IgUHRfYnIgYW5kIFB0LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUludm9rZSBvYmplY3RzIGluIFNUQSdzIGluIHRoZSBjb3JyZWN0IHRocmVhZCBieSBzZW5kaW5nIG1lc3NhZ2VzIHRvCgl0aGUgaGlkZGVuIGFwYXJ0bWVudCB3aW5kb3cuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSB0aGUgZWRpdCBmaWVsZCBjcmVhdGVkIGZyb20gYSByaWNoZWRpdCBjb250cm9sIHdoaWNoIHdhcyBjcmVhdGVkCgl3aXRoIEVTX0RJU0FCTEVOT1NDUk9MTCwgbm90IGhhdmUgdGhlIEVTX05VTUJFUiBzdHlsZSBhbmQgaGVuY2UgYWNjZXB0CglhbHBoYW51bWVyaWMgaW5wdXQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL21wci9tcHJfUHQucmMsIGRsbHMvbXNpL21zaS5yYywKCSAgZGxscy9tc2kvbXNpX1B0LnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLCBkbGxzL3NoZG9jdncvRW4ucmMsCgkgIGRsbHMvc2hkb2N2dy9QdC5yYywgZGxscy9zaGRvY3Z3L3NoZG9jdncucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVXBkYXRlIHRoZSByZXNvdXJjZXMgZm9yIFBvcnR1Z3Vlc2UuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIG1vcmUgcHJvcGVybHkgdmVyc2lvbnMgZm9yIERpcmVjdDNEIGFuZCBEaXJlY3QzRERldmljZQoJb2JqZWN0cy4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIDIgbWlzc2luZyB0YWdzIGluIGdldHRpbmcuc2dtbC4KCgkqIGRsbHMvZ2RpL2RpYi5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy93aW5lcHMvcHMuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBvdmVyZmxvd3Mgd2l0aCBDbHJVc2VkLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3V0cHV0IHNvbWUgbW9yZSBpbmZvcm1hdGlvbnMuCglNYXJrIG9uZSBnbG9iYWwgdmFyaWFibGUgc3RhdGljLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2RlbGV0ZS5jLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL21zaS9zcWwueToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTUUwgZGVsZXRlIHF1ZXJ5LgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRG9uJ3QgY3Jhc2ggaWYgU2hlbGxGb2xkZXIgZG9lc24ndCBpbXBsZW1lbnQgdGhlIElJRF9JU0ZIZWxwZXIKCWludGVyZmFjZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIGFkdmFwaTMyX3Rlc3QuZXhlIGxvYWRhYmxlIG9uIE5UIDMuNTEuCgoJKiB0b29scy93aWRsL3R5cGVsaWIuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQSBSUENfRkNfRU5VTTE2IGlzIGEgVlRfVVNFUkRFRklORUQuCgoJKiBkbGxzL3NldHVwYXBpL21pc2MuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBpbmNsdWRlL3NldHVwYXBpLmg6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBEZWxheWVkTW92ZSBhbmQgRmlsZUV4aXN0cy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglNZW50aW9uIGJ0IFthbGwgfCA8dGlkPl0uCgoJKiBkbGxzL2dkaS90ZXN0cy9icnVzaC5jOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglTbWFsbCBjaGFyIC0+IGNvbnN0IGNoYXIgZml4LgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUVycm9yIG51bWJlcnMgPj0gMzIgYXJlIHRvIGJlIGV4cGVjdGVkLgoKCSogZGxscy9udGRsbC90aW1lLmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CgktIENvcnJlY3QgdGltZSB6b25lIGZvciBCUlQgYW5kIEJSU1QuCgktIEJldHRlciBleHBsYWluZWQgZml4bWUuCgoJKiBkbGxzL2FkdnBhY2svdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2cGFjay90ZXN0cy9hZHZwYWNrLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBhZHZwYWNrLmRsbCBhdCBydW50aW1lIHRvIGF2b2lkIGxpbmsgcHJvYmxlbXMgd2l0aCB0aGUgcGxhdGZvcm0KCXNkay4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9wcm90b2NvbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3RzIGNhbm5vdCB1c2Ugd2luZS9kZWJ1Zy5oIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3Qgb24gV2luZG93cy4KCgkqIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglFU19DT01CTyBpcyBub3QgZGVmaW5lZCBpbiB0aGUgV2luZG93cyBoZWFkZXJzLiBTbyBkZWZpbmUgaXQgaWYKCW5lY2Vzc2FyeSBzbyB0aGUgdGVzdCBjYW4gYmUgY29tcGlsZWQgb24gV2luZG93cy4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIE9sZSB0ZXN0cyBydW4gb24gV2luZG93cyA5NS4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlICdleGlzdCcgaW4gd2NtZCBoYW5kbGUgYm90aCBmaWxlIGFuZCBkaXJlY3Rvcmllcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhdXRvbWF0aWMgZHJpdmUgZGV0ZWN0aW9uIGZvciB0aGUgY2FzZSB0aGF0IHRoZSByb290IGRpcmVjdG9yeQoJaXMgbm90IGFscmVhZHkgbWFwcGVkLgoKCSogZGxscy93aW5tbS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmMsIGRsbHMvd2lubW0vdGltZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHBhcmFtZXRlciBjaGVja2luZyB0byB0aW1lR2V0RGV2Q2Fwcy4KCUFkZGVkIHRpbWVyIHRlc3RzLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUmVzcGVjdCB0aGUgZmxhZ3MgbWVtYmVyIG9mIHRoZSBDSE9PU0VGT05UIHN0cnVjdHVyZSwgYW5kIGRvbid0CglhdHRlbXB0IHRvIHByb2Nlc3MgYm9ndXMgc3RyaW5ncy4KCjIwMDUtMDItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwNTAyMTEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWw6CglTY290dCBSaXRjaGllIDxzY290dEBvcGVuLXZvdGUub3JnPgoJVXNlciBHdWlkZSBDaGFwdGVyIDIgcmV3cml0ZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9udC5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90b2tlbi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IEFkanVzdFRva2VuUHJpdmlsZWdlcywgRHVwbGljYXRlVG9rZW5FeCBhbmQKCSAgR2V0VG9rZW5JbmZvcm1hdGlvbiAoZm9yIHRoZSBUb2tlblByaXZpbGVnZXMgY2FzZSkuCgktIFJldHVybiBTVEFUVVNfTk9fVE9LRU4gZm9yIE9wZW5UaHJlYWRUb2tlbiB3aGVuIHRoZXJlIGlzIG5vIHRva2VuCgkgIHNldCBmb3IgdGhlIHRocmVhZC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZWQgcHJpbnRpbmcgb2YgdGhyZWFkIGlkIGZvciBBZGRSZWYgYW5kIFJlbGVhc2UgYmVjYXVzZQoJV0lORURFQlVHPSt0aWQgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0LgoJR2VuZXJhbCBjb25zaXN0ZW5jeSBjbGVhbnVwLgoKMjAwNS0wMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzoKCUZpeGVkIHByb2ZpbGUgY2FjaGUgZmx1c2hpbmcgd2hlbiBubyBmaWxlbmFtZSBpcyBzcGVjaWZpZWQgKHJlcG9ydGVkCglieSBNaWtlIEhlYXJuKS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgbGluayB3aXRoIERpcmVjdFNvdW5kQ3JlYXRlOCBhcyB0aGlzIHByZXZlbnRzIHJ1bm5pbmcgd2l0aCBvbGRlcgoJdmVyc2lvbnMgb2YgRGlyZWN0WC4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBbHRlciB0aGUgdmVyc2lvbiBoZXVyaXN0aWNzIGEgYml0LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkZWQgdkNvbnQgc3VwcG9ydC4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglTeW5jIHRvIGxhdGVzdCBPcGVuR0wgc3BlY2lmaWNhdGlvbnMuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2V0IGZ1bGwgVUkgbW9kZSBieSBkZWZhdWx0LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByaW50IGluZm8gYWJvdXQgcHJpbWFyeSBidWZmZXIgZm9ybWF0LgoKCSogZGxscy9kM2Q5L2RldmljZS5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hlY2sgdGhhdCBwcFpTdGVuY2lsU3VyZmFjZSBpcyBub3QgbnVsbC4KCgkqIGFjbG9jYWwubTQsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYywKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLAoJICBkbGxzL2x6ZXhwYW5kL3Rlc3RzL2x6ZXhwYW5kX21haW4uYywgZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jLAoJICBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2Vudmlyb24uYywgZGxscy9xdWFydHovYWNtd3JhcHBlci5jLAoJICBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWRvcy9wcGRldi5jLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIHByb2dyYW1zL3djbWQvRW4ucmMsIHByb2dyYW1zL3djbWQvUnUucmMsIHByb2dyYW1zL3djbWQvU2kucmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogQWxleCBXb29kcyA8d2luZS1kZXZlbEBnaWJsZXRzLm9yZz4KCUhhbmRsZSBob3N0X2NwdSBvZiB4ODZfNjQgbGlrZSBvdGhlciB4ODZzLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZWFkIGFyZ3MgZnJvbSB0aGUgcmVnaXN0cnkgd2hlbiBwYXNzZWQgdGhlIC9AIGZsYWcuCgoJKiBkbGxzL21zaS9tc2kuYywgaW5jbHVkZS9tc2kuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGhlYWRlcnMsIGFkZCBNc2lHZXRVc2VySW5mb0Egc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvc2VyaWFsdWkvUHQucmMsIGRsbHMvc2V0dXBhcGkvUHQucmMsIHByb2dyYW1zL2Nsb2NrL1B0LnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywgcHJvZ3JhbXMvc3RhcnQvUHQucmMsCgkgIHByb2dyYW1zL3ZpZXcvUHQucmMsIHByb2dyYW1zL3djbWQvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9QdC5yYzoKCUFt6XJpY28gSm9z6SBNZWxvIDxtbW9kZW0wMEBuZXR2aXNhby5wdD4KCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUcmFuc2xhdGUgdGhlIFdpbmUgcmVzb3VyY2VzIHRvIFBvcnR1Z3Vlc2UuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovd2F2ZXBhcnNlci5jLCBpbmNsdWRlL3V1aWRzLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBXQVZFIHBhcnNlci4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHRvIFVuaWNvZGUuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2lnbmVkL3Vuc2lnbmVkIGZpeCBhbmQgY29kZSBjbGVhbnVwLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVzZSBhbGlhc2VzIGZvciBjYWxscyB0byBvcmRpbmFscy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBmb3IgTXNpR2V0U2hvcnRjdXRUYXJnZXRBL1cuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGZvcmdldCB0byBhbGxvY2F0ZSBpbnRlcm5hbCBPUEVORklMRU5BTUVXIHN0cnVjdHVyZSBmb3IgMTYtYml0CglHZXRPcGVuRmlsZU5hbWUsIGluaXRpYWxpemUgaXQgYnkgemVyb3MgZm9yIDE2L0EgY2FzZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgUmVnaXN0ZXJVc2VyIGFjdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWx3YXlzIGFsbG9jYXRlIGFuIGVtcHR5IGJ1ZmZlci4KCjIwMDUtMDItMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmlfcmVzLnJjLAoJICBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywKCSAgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLAoJICBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsCgkgIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLAoJICBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gcmV3cml0ZSBNQ0kgaW50ZXJmYWNlcyBhcyBVbmljb2RlIGludGVyZmFjZSAoYXMgaXQgc2hvdWxkIGJlKQoJLSBtYWRlIHNvbWUgd2lubW0gQVBJcyByZWx5IG9uIHRoZSBVbmljb2RlIHZlcnNpb24gZm9yIHRoZSBjb3JlCgkgIGltcGxlbWVudGF0aW9uIChpbnN0ZWFkIG9mIEFuc2kgZmxhdm9yKQoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgQ1BHZXRQcm92UGFyYW0ncyBQUF9FTlVNQ09OVEFJTkVSUyBwYXJhbWV0ZXIgdHlwZS4KCUFkZGVkIGNvcnJlc3BvbmRpbmcgdGVzdC4KCVJlbW92ZWQgc29tZSB0YWJzIHRoYXQgc2xpcHBlZCBpbiB3aXRoIHRoZSBsYXN0IHBhdGNoLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2Zvcm1hdC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIDAgbGVuZ3RoIGJ1ZmZlcnMgaW4gTVNJX0Zvcm1hdFJlY29yZFcuCglSZW1vdmUgdW51c2VkIGJ1ZmZlciBpbiBkZWZvcm1hdF9zdHJpbmcuCgoJKiBkbGxzL2RiZ2hlbHAvbXNjLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBhbiBFUlIgdG8gYSBXQVJOLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQdXQgZ2VuZXJhdGVkIGltcG9ydCB0YWJsZSBjb2RlIGludG8gLnRleHQgc2VnbWVudC4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIFF1b3RlIHRoZSBwYXJhbWV0ZXIgc3RyaW5ncyBwYXNzZWQgdG8gTXNpSW5zdGFsbFByb2R1Y3QuCgktIFJldHVybiB0aGUgZXJyb3IgY29kZSB0aGF0IHRoZSBNc2kqIGZ1bmN0aW9uIHJldHVybmVkIHdoZW4gd2UgcXVpdC4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHRyYWNrIHRoZSB0ZW1wIGZpbGVzIGZvciBjdXN0b20gYWN0aW9ucyBiYXNlZCBvbiB0aGUgbmFtZSBmcm9tCgl0aGUgdGFibGUgYmVjYXVzZSB0aGVuIHdlIGdldCBjb25mbGljdHMgYW5kIGZpbGVzIG5vdCB0cmFja2VkIG9yCgljbGVhbmVkIHVwLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaWxsIG5ldyBzb2Z0d2FyZSBidWZmZXJzIHdpdGggc2lsZW5jZS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1ha2UgdGhlIHdpbiBkYXRhIHBvaW50ZXIgb25seSBhdmFpbGFibGUgaW4gdGhlIHRocmVhZCB0aGF0IG93bnMgdGhlCgl3aW5kb3cuCgoJKiB0b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL2NvbmZpZy5zdWI6IFVwZ3JhZGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IG1zaWV4ZWMncyBjb21tYW5kIGxpbmUgcGFyc2luZy4KCS0gRG9uJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBmaXhlZCBzaXplIHN0cnVjdHVyZS4KCS0gUmVtb3ZlIGEgZmV3IG5vbi10YWIgaW5kZW50cywgc2luY2UgdGhlIHJlc3Qgb2YgdGhlIGZpbGUgdXNlcyB0YWJiZWQKCSAgaW5kZW50LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUmVnaXN0ZXJFeHRlbnNpb25JbmZvIGFuZCBSZWdpc3Rlck1JTUVJbmZvLgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBhIG51bWJlciBhcyBhIHBhcmFtZXRlciBmb3IgY3VzdG9tIGFjdGlvbiAxOS4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglDb25zaWRlciBhbnkgY2hhcmFjdGVyIGFib3ZlIDB4N2YgdG8gYmUgaW52YWxpZCBpbiBhIERPUyBzaG9ydCBuYW1lLgoKCSogZGxscy9pdHNzL21vbmlrZXIuYzogVG9tIEZvZ2FsIDx0Zm9nYWxAY2lzdW5peC51bmguZWR1PgoJU2ltcGxlIGFnZ3JlZ2F0aW9uIGZpeC4KCgkqIGRsbHMvbXNpL2NvbmQueTogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBsaW1pdCBwcm9wZXJ0aWVzIHRvIDI1NiBjaGFyYWN0ZXJzIHdoZW4gZXZhbHVhdGluZyB0aGVtLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBUdXJraXNoICh0cikgWDExIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCS0gRml4IHF1b3Rpbmcgb2YgLmNwbCBmaWxlbmFtZS4KCS0gVXNlICJjcGxvcGVuIiB2ZXJiIHRvIGV4ZWN1dGUgLmNwbCBmaWxlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvZGlhbG9nLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGFkZCBzdXBwb3J0IGZvciBFZGl0IGJveGVzIGluIE1TSSBkaWFsb2dzCgktIHJ1biB0aGUgbWVzc2FnZSBsb29wIHdoZW4gd2FpdGluZyBmb3IgdGhyZWFkcyBvciBwcm9jZXNzZXMKCgkqIGRsbHMvbXNpL21zaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBtZW1vcnkgbGVhayBpbiBNc2lDb25maWd1cmVQcm9kdWN0RXhXLgoKMjAwNS0wMi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQXZvaWQgY29tcGlsZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG1vZHVsZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgQ29EaXNjb25uZWN0T2JqZWN0LgoJLSBDaGFuZ2UgQ29Mb2NrT2JqZWN0RXh0ZXJuYWwgc28gdGhhdCBpdCBkb2VzIHRoZSBjb3JyZWN0IGFjdGlvbiBub3cKCSAgYW5kIGVsaW1pbmF0ZSBhIGZhaXIgZmV3IGxpbmVzIG9mIG5vdyByZWR1bmRhbnQgY29kZS4KCS0gUmVuYW1lIE9MRTMyX0RsbHtSZWdpc3RlcixVbnJlZ2lzdGVyfVNlcnZlciB0bwoJICBEbGx7UmVnaXN0ZXIsVW5yZWdpc3Rlcn1TZXJ2ZXIuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGlmIHdlJ3ZlIGFscmVhZHkgYWRkZWQgdGhlIHB0ciB0byBpZmFjZSB0eXBlZGVzYyBiZWZvcmUgYWRkaW5nIGEKCW5ldyBvbmUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU2Nyb2xsV2luZG93RXggd2hlbiBjYWxsZWQgd2l0aCB0aGUgU1dfRVJBU0UgZmxhZyBkb2VzIG5vdCBzZW5kIGEKCVdNX0VSQVNFQktHTkQgbWVzc2FnZSwgaXQganVzdCBzZXRzIHRoZSBlcmFzZSBmbGFnLiBXaXRoIHNvbWUgdGVzdHMKCXRoYXQgc2hvdyB0aGlzIGJlaGF2aW9yLgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIGEgdGVtcCBmaWxlIGZvciBlYWNoIGRsbCBzYXZlZCBmb3IgY3VzdG9tIGFjdGlvbnMuIFRoaXMgcHJldmVudHMKCW5hbWUgY29sbGlzaW9ucyBmcm9tIGNhdXNpbmcgY3VzdG9tIGFjdGlvbnMgdG8gZmFpbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGxvZ2ljIHRvIGJlIGFibGUgdG8gcmVzb2x2ZSB0aGUgU291cmNlRGlyIGJhc2VkIG9uCglDdXJyZW50UGF0aC4gQWxzbyBhZGQgbG9naWMgdG8gZ2V0IHRoZSBzb3VyY2UgbG9jYXRpb25zIG9mIGEgZmlsZSBpZgoJaXQgaXMgbm90IGluIGEgY2FiaW5ldC4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNb3ZlIG9iamVjdC10by1zdHViLW1hbmFnZXIgbWFwcGluZyBydWxlIHRvIHJlZ2lzdGVyX2lmc3R1Yi4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9kaXN0aW5jdC5jLCBkbGxzL21zaS9pbnNlcnQuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9vcmRlci5jLAoJICBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvdXBkYXRlLmMsCgkgIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggTXNpTW9kaWZ5VmlldyBhbmQgTXNpVmlld0dldENvbHVtbkluZm8gdG8gdXNlIE1TSVJFQ09SRCogbm90CglNU0lIQU5ETEUuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgcGFyc2VyIHRlbXBsYXRlIGFuZCBtYWRlIEFWSVNwbGl0dGVyIHVzZSBpdC4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBIHRlc3RzIG9uIFdpbjk1LgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVN1cHBvcnQgc29tZSBtb3JlIGF0dHJpYnV0ZXMgZm9yIGludGVyZmFjZSBwcm9wZXJ0aWVzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgRGVsZXRlVXJsQ2FjaGVDb250YWluZXJ7QSxXfSwKCUNyZWF0ZUNhY2hlQ29udGFpbmVye0EsV30sIEZpbmRGaXJzdFVybENhY2hlQ29udGFpbmVye0EsV30sCglGaW5kTmV4dFVybENhY2hlQ29udGFpbmVye0EsV30uCglIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHN1cHBsaWVkIGJ1ZmZlciBzaXplIGlzIHRvbyBzbWFsbCBpbgoJSW50ZXJuZXRRdWVyeU9wdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFNwbGl0IHVwIGFwYXJ0bWVudCBjcmVhdGlvbiBzbyB0aGF0IHRoZSBsb25nIGNvZGUgcGF0aHMgdGhhdCBkb24ndAoJICBuZWVkIGxvY2tpbmcgbm8gbG9uZ2VyIGhhdmUgbG9ja2luZy4KCS0gQWRkIHNwZWNpYWwgY2FzZXMgZm9yIHRoZSB0aHJlYWRzIHRoYXQgam9pbiBhcGFydG1lbnRzIGJ1dCBjYW4ndAoJICBpbmNyZWFzZSB0aGUgcmVmY291bnQgb2YgdGhlIGFwYXJ0bWVudC4KCS0gRnJlZSBUTFMgc3RvcmFnZSBvbiB0aHJlYWQgZGVzdHJ1Y3Rpb24gKGluY2x1ZGluZyByZWxlYXNpbmcgdGhlCgkgIGFwYXJ0bWVudCB0aGUgdGhyZWFkIGlzIGluLCBpZiBhbnksIGFuZCBzbyBtYWtpbmcgYW5vdGhlciB0ZXN0CgkgIHBhc3MpLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZCBXaW5YUCB0byBPYUJ1aWxkVmVyc2lvbi4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTdXBwb3J0IEFUVFJfUkVBRE9OTFkgZm9yIGludGVyZmFjZSBwcm9wZXJ0aWVzLgoKCSogaW5jbHVkZS9tc2lkZWZzLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgbXNpZGJDdXN0b21BY3Rpb24gYW5kIG1zaWRiRmVhdHVyZUF0dHJpYnV0ZXMgZW51bWVyYXRpb25zLgoKCSogZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL21zaXByaXYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZml4IHRoZSBkaWFsb2cgZm9udAoJLSBhbGxvdyB3YWl0aW5nIG9uIGEgaGFuZGxlIHdoaWxlIHJ1bm5pbmcgdGhlIG1lc3NhZ2UgbG9vcAoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJld29yayBSUEMgZGlzcGF0Y2ggbGF5ZXIgdG8gYmUgc2ltcGxlciBhbmQgbm90IGdldCBjb25mdXNlZCBieQoJICBzZXJ2ZXIvY2xpZW50IGR1YWxpdHkuCgktIE1ha2UgdGhyZWFkcyBzaHV0IGRvd24gYXQgdGhlIHJpZ2h0IHRpbWUgYW5kIG5vdCBhY2Nlc3MgZnJlZWQgbWVtb3J5CgkgIGFmdGVyIGFwYXJ0bWVudCBkZXN0cnVjdGlvbi4KCS0gUmVuYW1lIHN0dWJfZGlzcGF0Y2hfdGhyZWFkIHRvIGNsaWVudF9kaXNwYXRjaF90aHJlYWQuCgktIEFkZCBzb21lIG1vcmUgdHJhY2luZwoJLSBDaGVjayByZXR1cm4gdmFsdWUgb2YgV2FpdE5hbWVkUGlwZS4KCS0gQ2hhbmdlIG5hbWVkIHBpcGUgdGltZW91dHMgdG8gMC41cywgd2hpY2ggc2hvdWxkIGJlIGVub3VnaCBmb3IgZXZlbgoJICB0aGUgc2xvd2VzdCBtYWNoaW5lcy4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgV2FpdE5hbWVkUGlwZSB0aW1lb3V0cy4KCgkqIGRsbHMvbXNpL2NvbmQueTogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSWRlbnRpZmllcnMgZXZhbHVhdGUgdG8gdHJ1ZSBpZiB0aGV5IGFyZSBub24tZW1wdHksIHJlZ2FyZGxlc3Mgb2YKCXZhbHVlLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgMTAwMDAwMDAgd2l0aCBUSUNLU1BFUlNFQyB0byBtYWtlIGl0IG1vcmUgb2J2aW91cyB3aGF0IHRoZQoJY29kZSBpcyBkb2luZy4KCgkqIE1ha2UucnVsZXMuaW46IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU1ha2UgdGxiIGdlbmVyYXRpb24gZnJvbSBpZGwgZmlsZXMgZGVwZW5kZW50IG9uIHdpZGwuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBTY290dCBSaXRjaGllIDxzY290dEBvcGVuLXZvdGUub3JnPgoJUmVtb3ZlIHR3byBhbmNpZW50IEZBUSBlbnRyaWVzIHRoYXQgZGlkIG1vcmUgaGFybSB0aGFuIGdvb2QuCglSZXBsYWNlIGEgcmVmZXJlbmNlIHRvIHdpbmUuY29uZiB3aXRoIH4vLndpbmUvY29uZmlnLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIE9MRSBhdXRvbWF0aW9uIGJ1aWxkIHZhbHVlIGFzIHdpbjJrIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL21zaS8uY3ZzaWdub3JlLCBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaS5yYywgZGxscy9tc2kvbXNpX0VuLnJjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGFuZCBkb2N1bWVudCBNc2lMb2FkU3RyaW5nLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RseSBlbnN1cmUgcHJvcGVydGllcyBzZXQgZnJvbSByZXNvbHZlZCBkaXJlY3RvcnkgcGF0aHMgYXJlCgliYWNrc2xhc2ggdGVybWluYXRlZC4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOiBDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglGaXggcmVncmVzc2lvbiBpbiBGYWxsb3V0IGdhbWUuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYzoKCUNhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCUNoZWNrIHRoYXQgcHN0cmVhbSBpcyBub3QgbnVsbC4KCgkqIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUNvcnJlY3Qgc3BlYyBlbnRyeSBmb3IgRmluZEZpcnN0VXJsQ2FjaGVFbnRyeUV4LgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwKCSAgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIFZBUklBTlRfQk9PTC4KCUZpeCBDVVJSRU5DWSBhbGlnbm1lbnQuCglBIGZ1bmN0aW9uIHdpdGggYSBbcmV0dmFsXSBwYXJhbSBoYXMgYSBiaXQgc2V0IGluIHRoZSBGS0NDSUMgYml0ZmllbGQuCglUd28gZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZSBzaGFyZSB0aGUgc2FtZSBpZC4KCVRoZSBwYXJhbSBuYW1lcyBvZiBwcm9wcHV0IGFuZCBwcm9wcHV0cmVmIGZ1bmN0aW9ucyBkb24ndCBnbyBpbnRvIHRoZQoJdHlwZWxpYi4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUV4dHJhIHRyYWNpbmcgZm9yIFNQSV9HRVRJQ09OVElUTEVXUkFQLgoKCSogZGxscy9tc2kvYXBwc2VhcmNoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUlmIGEgZnVsbCBwYXRoIGlzbid0IHNwZWNpZmllZCwgc2VhcmNoIGFjcm9zcyBhbGwgZml4ZWQgZHJpdmVzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6CglLcmlzIE1hcnNoIDxtb29nbWFuQGdtYWlsLmNvbT4KCUZpeGVkIHdpbmRvdyBoZWlnaHQgdG8gc2hvdyBhbGwgZGF0YSBwcm9wZXJseS4KCUNsZWFuZWQgdXAgZHJpdmVzLT5hZHZhbmNlZCBpbmZvcm1hdGlvbiB2aXN1YWxzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGxhc3QgZXJyb3IgZnJvbSBOVFNUQVRVUyB0byBhIERPUyBlcnJvciBjb2RlIGluIFdhaXROYW1lZFBpcGUKCWFuZCBDb25uZWN0TmFtZWRQaXBlLgoKCSogc2VydmVyL3dpbmRvdy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBvdmVyd3JpdGUgbGFzdCBieXRlIG9mIHRoZSB3aW5kb3cgc3RydWN0dXJlIGFzIHdlIG1pZ2h0IG5vdCBoYXZlCglhbGxvY2F0ZWQgdGhlIG1lbW9yeSBmb3IgaXQgaWYgZXh0cmFieXRlcyB3YXMgMC4KCjIwMDUtMDItMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuYywgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgR2V0T3BlbkZpbGVOYW1lVyB3aXRoIGFuIG9sZCBzdHlsZSBvcGVuIGZpbGUgZGlhbG9nIHdvcmsgd2l0aCB0aGUKCW9yaWdpbmFsIE9QRU5GSUxFTkFNRVcgc3RydWN0dXJlLCBtYWtpbmcgc3VyZSB0aGF0IGFsbCBjaGFuZ2VzIGFyZQoJcGFzc2VkIGJhY2sgdG8gdGhlIGNhbGxlci4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJTW9yZSB2ZXJib3NpdHkgb2YgZXJyb3JzLgoKCSogZGxscy91cmxtb24vc2VjX21nci5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2F0b20uYywgZGxscy9rZXJuZWwvYXRvbTE2LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIDE2IGJpdCBhdG9tIHN1cHBvcnQgdG8gZGxscy9rZXJuZWwvYXRvbTE2LmMuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwKCSAgd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3Igd2luZXZlbnQgaG9va3MuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJUHJvcGVybHkgY29tcHV0ZSB0aGUgY2xpZW50IGFyZWEgdmFsaWQgcmVjdHMgYW5kIHBhc3MgdGhlbSB0byB0aGUKCXNlcnZlciBpbiBzZXRfd2luZG93X3BvcyB0byBhdm9pZCBpbnZhbGlkYXRpbmcgYXJlYXMgdGhhdCByZW1haW4KCXZhbGlkLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLAoJICBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmM6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCS0gSW1wbGVtZW50IFNldHVwRGlCdWlsZENsYXNzSW5mb0xpc3RFeEEsCgkgIFNldHVwRGlDbGFzc0d1aWRzRnJvbU5hbWVFeEEsIFNldHVwRGlDcmVhdGVEZXZpY2VJbmZvTGlzdEV4QSBhbmQKCSAgU2V0dXBEaU9wZW5DbGFzc1JlZ0tleUV4QSB1c2luZyBNdWx0aUJ5dGVUb1VuaWNvZGUuCgktIFJldHJpZXZlIE9TIHZlcnNpb24gdXBvbiBwcm9jZXNzIGF0dGFjaC4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvdHlwZWxpYi5jLAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb2NsYXNzIHN1cHBvcnQuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYW5kIHRlc3QgUGF0aElzVmFsaWRDaGFye0EsV30uCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jOgoJRml4ZWQgcmVmY291bnQgaGFuZGxpbmcgKHdhaXRpbmcgY2xpZW50cyBtdXN0IG5vdCBpbmNyZWFzZSB0aGUKCXJlZmNvdW50IG9mIHRoZSBwaXBlKS4KCUNvbnZlcnRlZCBsaW5rZWQgbGlzdHMgdG8gdXNlIHRoZSBzdGFuZGFyZCBmdW5jdGlvbnMuCglTbWFsbCBjbGVhbnVwcy4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9yZXF1ZXN0LmM6CglNYWtlIHN1cmUgbGVha2VkIG9iamVjdHMgYXJlIHByaW50ZWQgZXZlbiBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcwoJc3RpbGwgb3Blbi4KCgkqIHNlcnZlci9mZC5jOiBGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gZmRfZHVtcCBmdW5jdGlvbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogQXN5bmMgY2FsbGJhY2sgZnVuY3Rpb24gbXVzdCBiZSBzdGRjYWxsLgoKCSogZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL21zaXF1ZXJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudCBjaGVja2JveGVzIGluIGRpYWxvZ3MKCS0gdXNlIFRleHRTdHlsZSBlbnVtZXJhdGlvbiBpbnN0ZWFkIG9mIG51bWJlcnMKCS0gZml4IE1TSV9JdGVyYXRlUmVjb3JkcyB0byByZXR1cm4gdGhlIGNvcnJlY3QgY291bnQKCgkqIGRsbHMvbXNpL2FwcHNlYXJjaC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTaW1wbGlmeSBBcHBTZWFyY2ggZXJyb3IgY2hlY2tpbmcuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjOiBQYXVsIHZhbiBTY2hheWNrIDxwb2xsZWtlQGdtYWlsLmNvbT4KCUNsZWFuIHVwIGFib3V0IGRpYWxvZy4gUmVtb3ZlIGdyb3VwYm94LCBwb3NpdGlvbiBsb2dvIGNvcnJlY3RseS4KCjIwMDUtMDItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBQYXNzIHRoZSBvcmlnaW5hbCBJSUQgdG8gSU1hcnNoYWxfVW5tYXJzaGFsSW50ZXJmYWNlIGFuZCBxdWVyeSBmb3IKCSAgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UuCgktIFVubWFyc2hhbGluZyBJSURfTlVMTCBtZWFucyB1c2UgdGhlIElJRCB0aGUgaW50ZXJmYWNlIHdhcyBvcmlnaW5hbGx5CgkgIG1hcnNoYWxlZCB3aXRoLgoKCSogZGxscy91c2VyL2xpc3Rib3guYywgZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYzoKCUxhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJQWRkIHRlc3QgZm9yIExCX1NFTElURU1SQU5HRSBhbmQgbWFrZSBpdCBwYXNzLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCUFkZGVkIHNvbWUgbW9yZSBkZWZpbmVzLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvdHlwZWxpYi5oLAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgdHlwZWRlZnMuCgoJKiBkbGxzL3NldHVwYXBpL21pc2MuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBpbmNsdWRlL3NldHVwYXBpLmg6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCS0gSW1wbGVtZW50IERvZXNVc2VySGF2ZVByaXZpbGVnZSwgRW5hYmxlUHJpdmlsZWdlLCBJc1VzZXJBZG1pbiwKCSAgTXVsdGlCeXRlVG9Vbmljb2RlIGFuZCBVbmljb2RlVG9NdWx0aUJ5dGUuCgktIFNvcnQgcHJvdG90eXBlcyBpbiBzZXR1cGFwaS5oIGFuZCBhIGZldyBmdW5jdGlvbiBpbiBzcGVjLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogRGF2aWQgTWNDdWxsb3VnaCA8ZGF2aWRtQHNuYXBnZWFyLmNvbT4KCUhUVFBfSHR0cFNlbmRSZXF1ZXN0VyB3YXMgZ2V0dGluZyBpbnZva2VkIHdpdGggYSBudWxsIHZlcmIsIGRlZmF1bHQgdG8KCXRoZSBHRVQgbWV0aG9kLgoKCSogZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywKCSAgZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL21zaS9wcmV2aWV3LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSBkaWFsb2cgY29udHJvbHMsIGRvIHNvbWV0aGluZyB3aGVuIHRoZXkncmUgY2xpY2tlZCBvbi4KCgkqIGluY2x1ZGUvbXNpZGVmcy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIG1zaWRiVGV4dFN0eWxlU3R5bGVCaXRzIGVudW1lcmF0aW9uLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgaWRGaXJzdENoaWxkIHNwZWNpZmllZCBpbiB0aGUgTURJQ2xpZW50J3MgQ0xJRU5UQ1JFQVRFU1RSVUNUCgl3aGVuIGNyZWF0aW5nIE1ESSBjaGlsZHJlbi4gQWRkIGEgdGVzdCBjYXNlIGZvciB0aGUgZGVzaXJlZAoJYmVoYXZpb3VyLgoKCSogZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWQgcmVmIGNvdW50aW5nLgoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL21zaS9mb3JtYXQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFudXAgcHJvY2Vzc2luZyBhIGJpdCBtb3JlLgoJQWxsb3cgZm9yIG5lc3RlZCBrZXlzIHRvIHdvcmsgcHJvcGVybHkuCgoJKiBkbGxzL21zaS9hcHBzZWFyY2guYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGNvcHkgYW5kIHBhc3RlIGVycm9yLCBjaGVjayBmb3IgYSBudWxsIHZhbHVlIGFuZCBkaXNjYXJkCgl1bm5lZWRlZCBlcnJvcnMuCgoJKiBkbGxzL21zaS9jb25kLnk6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1zaUV2YWx1YXRlQ29uZGl0aW9uIHJldHVybnMgYW4gZXJyb3Igd2hlbiBwYXNzZWQgTlVMTCBhcyBhCgljb25kaXRpb24uCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbmlzaCB1cCB0aGUgZnJhbWV3b3JrIGJ5IHN0dWJiaW5nIG91dCBhbGwgdGhlIHJlbWFpbmluZyBTdGFuZGFyZAoJYWN0aW9ucy4KCUEgZml4IHRvIGRlZm9ybWF0X3N0cmluZyBzbyBpdCBvbmx5IHJldHVybnMgYSBudWxsIHJldHVybiBpZiB5b3UKCXByb3ZpZGVkIGEgbnVsbCBidWZmZXIuCgoyMDA1LTAyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJUmVtb3ZlZCB0aGUgbm8gbG9uZ2VyIHVzZWQgV0lOX1NldEV4U3R5bGUgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL3VzZXIvZm9jdXMuYywgZGxscy91c2VyL21lbnUuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvd2lucG9zLmM6CglTdG9yZSB0aGUgIm1hbmFnZWQiIGZsYWcgYXMgYSB3aW5kb3cgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUKCVdpbmUtc3BlY2lmaWMgV1NfRVhfTUFOQUdFRCBzdHlsZSBiaXQuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgaW5jbHVkZS93aW5pbmV0Lmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEZ0cEdldEZpbGVTaXplLCBGdHBDb21tYW5ke0EsV30sCgkgIEh0dHBTZW5kUmVxdWVzdEV4VywgSW50ZXJuZXRHZXRMYXN0UmVzcG9uc2VJbmZvVywKCSAgSW50ZXJuZXRDb25maXJtWm9uZUNyb3NzaW5ne0EsV30sIEludGVybmV0RGlhbHtBLFd9LAoJICBJbnRlcm5ldEdvT25saW5le0EsV30sIEludGVybmV0SGFuZ1VwLCBDcmVhdGVNRDVTU09IYXNoLAoJICBJbnRlcm5ldENsZWFyQWxsUGVyU2l0ZUNvb2tpZURlY2lzaW9ucywKCSAgSW50ZXJuZXRFbnVtUGVyU2l0ZUNvb2tpZURlY2lzaW9ue0EsV30sIEludGVybmV0R2V0Q29va2llRXh7QSxXfSwKCSAgSW50ZXJuZXRHZXRQZXJTaXRlQ29va2llRGVjaXNpb257QSxXfSwKCSAgSW50ZXJuZXRTZXRQZXJTaXRlQ29va2llRGVjaXNpb257QSxXfSwgSW50ZXJuZXRTZXRDb29raWVFeHtBLFd9LAoJICBSZXN1bWVTdXNwZW5kZWREb3dubG9hZCwgUmV0cmlldmVVcmxDYWNoZUVudHJ5RmlsZVcsCgkgIFVubG9ja1VybENhY2hlRW50cnlGaWxlVywge0NyZWF0ZSxEZWxldGV9VXJsQ2FjaGVFbnRyeVcsCgkgIENvbW1pdFVybENhY2hlRW50cnlXLCBSZXRyaWV2ZVVybENhY2hlRW50cnlTdHJlYW1XLAoJICBGaW5kQ2xvc2VVcmxDYWNoZSwgRmluZEZpcnN0VXJsQ2FjaGVFbnRyeUV4e0EsV30sCgkgIEZpbmRGaXJzdFVybENhY2hlR3JvdXAsIEZpbmROZXh0VXJsQ2FjaGVFbnRyeXssRXh9e0EsV30sCgkgIEZpbmROZXh0VXJsQ2FjaGVHcm91cCwgU2V0VXJsQ2FjaGVFbnRyeUdyb3Vwe0EsV30sCgkgIHtHZXQsU2V0fVVybENhY2hlR3JvdXBBdHRyaWJ1dGV7QSxXfSwgU2V0VXJsQ2FjaGVDb25maWdJbmZve0EsV30uCgktIFNwZWMgZmlsZSBzdHVicyBmb3IgbmV3IHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMKCSAgRm9yY2VOZXh1c0xvb2t1cHssRXhXfSwgRnRwe0dldCxQdXR9RmlsZUV4LCBIdHRwQ2hlY2tEYXZDb21wbGlhbmNlLAoJICBJbnRlcm5ldEFsZ0lkVG9TdHJpbmd7QSxXfSwgSW50ZXJuZXRGb3J0ZXp6YUNvbW1hbmQsCgkgIEludGVybmV0R2V0Q2VydEJ5VVJMQSwgSW50ZXJuZXRRdWVyeUZvcnRlenphU3RhdHVzLAoJICBJbnRlcm5ldFNlY3VyaXR5UHJvdG9jb2xUb1N0cmluZ3tBLFd9LCBJbnRlcm5ldFNldERpYWxTdGF0ZXtBLFd9LAoJICBJbnRlcm5ldFNob3dTZWN1cml0eUluZm9CeVVSTHtBLFd9LCBJc1VybENhY2hlRW50cnlFeHBpcmVke0EsV30sCgkgIFByaXZhY3l7R2V0LFNldH1ab25lUHJlZmVyZW5jZVcsIFJlZ2lzdGVyVXJsQ2FjaGVOb3RpZmljYXRpb24sCgkgIFVybFpvbmVzRGV0YWNoLgoJLSBVc2UgbWVtY3B5IGluc3RlYWQgb2Ygc3RybmNweSBpbiBJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm9BLgoJLSBBZGQgYW5kIGltcHJvdmUgc29tZSB0cmFjZXMuCgktIEZpeCBteSBvd24gY29kaW5nIHN0eWxlIGluIEludGVybmV0VGltZVRvU3lzdGVtVGltZVcuCgktIEZpeCBhIGNvdXBsZSBvZiBzaWduZWRuZXNzIHdhcm5pbmdzLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLCB0b29scy93aWRsL3dpZGx0eXBlcy5oLAoJICB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgZGlzcGludGVyZmFjZXMgKHNsaWdodGx5IGhhY2tlZCBiZWNhdXNlIHdlIGZvcmNlIHRoZQoJaW1wb3J0IG9mIHN0ZG9sZTIudGxiKS4KCUFkZCBwcm9wcHV0cmVmIGF0dHJpYnV0ZS4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIENCUl9CTE9DSyBpbiBFWEVDVVRFIGFuZCBBRFZJU0UgRERFIHRyYW5zYWN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHByaW1hcnkgYnVmZmVyIG1lbW9yeSBsZWFrLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gU1BJX0dFVFdPUktBUkVBOiBSZWFkIHdvcmsgYXJlYSBpbmZvcm1hdGlvbiBmcm9tIHN5c3RlbSBtZXRyaWNzCgkgIGluaXRpYWxseSBvbmx5IGFuZCBub3QgZnJvbSBhIFdJTkUgc3BlY2lmaWMgcmVnaXN0cnkgZW50cnkuCgktIFNQSV9TRVRXT1JLQVJFQTogRG9uJ3Qgc2F2ZSB3b3JrIGFyZWEgaW5mb3JtYXRpb24gdG8gcmVnaXN0cnkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2N1c3RvbS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnRpbnVlZCB3b3JrIHRvIHNpbXBsaWZ5IHRoZSBQcm9jZXNzQWN0aW9uIGNhbGwsIGFsc28gc3BsaXQgaXQgaW50bwoJYSBQcm9jZXNzQWN0aW9uIGFuZCBQcm9jZXNzVUlBY3Rpb24gZm9yIGZ1dHVyZSBkaWFsb2cgYm94IHdvcmsuCglBbHNvIGZpeCBhIGJ1ZyBpbiBkZWZvcm1hdF9zdHJpbmcgd2hlcmUgaSB3YXMgbm90IGZyZWVpbmcgdGhlIGNyZWF0ZWQKCXJlY29yZC4KCgkqIE1ha2UucnVsZXMuaW46IERvbid0IGNsZWFuIGFsbCB0bGIgZmlsZXMsIG9ubHkgdGhlIG9uZXMgd2UgZ2VuZXJhdGVkLgoKCSogZGxscy9keGRpYWduL2NvbnRhaW5lci5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsCgkgIGRsbHMvbXNpL2FwcHNlYXJjaC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUGFydGlhbGx5IGltcGxlbWVudCBBcHBTZWFyY2ggYWN0aW9uLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FjbXdyYXBwZXIuYywKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9xdWFydHovcmVnc3ZyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBBQ00gV3JhcHBlciBmaWx0ZXIuCglDbGVhbmVkIHVwIEFWSURlYy4KCgkqIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJRml4IGEgYnJva2VuIGxpbmsuCgoJKiBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvc3VtaW5mby5jLCBpbmNsdWRlL21zaS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgbW9yZSBzdW1pbmZvIHN0dWJzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uaCwKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBjb2RlIGZvciBkZXN0cm95aW5nIHRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBkYXRhLCBidXQgZG9uJ3QgdXNlCgkgIGl0IHlldC4KCS0gRG9uJ3QgcmVsZWFzZSBhcGFydG1lbnQgb24gY2hhbmdpbmcgbW9kZXMgYmVjYXVzZSB3ZSBkaWRuJ3QgYWRkIGEKCSAgcmVmZXJlbmNlIGFueXdoZXJlLgoJLSBRdWlldGVuIHRoZSBSUENfRV9ESVNDT05ORUNURUQgZXJyb3IgbWVzc2FnZSBhcyBpdCBpcyBhbiBleHBlY3RlZAoJICByZXR1cm4gY29kZS4KCS0gVHJlYXQgSUlEX05VTEwgdGhlIHNhbWUgYXMgSUlEX0lVbmtub3duLgoJLSBNYWtlIHRlc3RzIGNvbXBpbGUgb24gV2luOTUgYWdhaW4uCgktIEZpeCBjb3B5K3Bhc3RlIGVycm9yIHdoZXJlIHRoZSB0ZXN0IGZhaWx1cmUgc2hvdWxkIGJlIGZyb20gdGhlCgkgIENvVW5tYXJzaGFsSW50ZXJmYWNlIGZ1bmN0aW9uLgoKMjAwNS0wMS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSByZXdvcmtpbmcgb2YgZm9ybWF0LmMgdG8gcmVtb3ZlIHRoZSByZWN1cnNpb24sIGNsZWFuIHRoaW5ncyB1cCBhbmQKCXN0YWJpbGl6ZSBiZWhhdmlvciB0byBtYXRjaCB3aW5kb3dzLgoKCSogZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zeW50aC9zeW50aC5jLCBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJV0lOX0xpc3RQYXJlbnRzIG5vIGxvbmdlciBuZWVkcyB0byBiZSBleHBvcnRlZCwgbWFrZSBpdCBzdGF0aWMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJT25seSBjcmVhdGUgYW4gWCB3aW5kb3cgZm9yIHRvcC1sZXZlbCB3aW5kb3dzLCBub3QgZm9yIGNoaWxkIHdpbmRvd3MuCglHZXQgcmlkIG9mIHRoZSBYIGNsaWVudCB3aW5kb3cgdG9vLCBpdCdzIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jOiBTaWxlbmNlIGEgbm9pc3kgRklYTUUuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUR5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSB0eXBlIGRhdGEgc3RvcmFnZS4KCVNwbGl0IHRoZSBmdW5jdGlvbiBhbmQgdmFyaWFibGUgdHlwZSBkYXRhIGludG8gdHdvIC0gdGhpcyB3aWxsIGJlCgluZWVkZWQgZm9yIGRpc3BpbnRlcmZhY2VzLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovdHJhbnNmb3JtLmMsIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgdHJhbnNmb3JtIGZpbHRlciB0ZW1wbGF0ZSBhbmQgbWFkZSBBVklEZWMgdXNlIGl0LgoJRml4ZWQgbWVtb3J5IGxlYWsgaW4gcmVnaXN0ZXJfZmlsdGVycyBmdW5jdGlvbi4KCgkqIGRsbHMva2VybmVsL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBSZWFkRGlyZWN0b3J5Q2hhbmdlc1cuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSB0aGUgZ2lhbnQgaWYuLiBlbHNlIGlmIGJsb2NrIGZyb20gQUNUSU9OX1Byb2Nlc3NBY3Rpb24gaW4KCWZhdm9yIG9mIGEgdGFibGUgb2YgaGFuZGxlcnMuCglSZXR1cm4gY29kZSBvZiB0aGUgaW5zdGFsbCBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlCglmaW5hbCBhY3Rpb24uCglVcGRhdGUgY29tcG9uZW50IGluc3RhbGxlZCBzdGF0ZXMgYXMgdGhleSBhcmUgaW5zdGFsbGVkIHNvIHRoYXQKCWNvbmRpdGlvbnMgYmFzZWQgb24gY29tcG9uZW50IHN0YXRlcyBhcmUgYXQgbGVhc3QgYSBsaXR0bGUgbW9yZQoJY29ycmVjdC4KCUFkZCBpY29uIGFuZCBhcmd1bWVudCB3aGVuIHJlZ2VzdGVyaW5nIGNsc2lkcy4KCUFkZCBhIHN0dWIgZm9yIFJlc29sdmVTb3VyY2UgYmVjYXVzZSB3ZSBkbyB0aGF0IHdvcmsganVzdCBub3QgaW4KCVJlc29sdmVTb3VyY2UgbGlrZSB3ZSBzaG91bGQuCglXaGVuIHF1ZXJpbmcgYSBDb21wb25lbnQgc3RhdGUgcmV0dXJuIHRoZSBjb3JyZWN0IHN0YXRlLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVNob3cgd2luZG93IG93bmVyIHRocmVhZCBpbiB3aW5lZGJnLgoKCSogZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBpbmNsdWRlL2RiZ2hlbHAuaCwgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDbGVhbnVwIG9mIGRiZ2hlbHAuaCAoYW5kIGEgY291cGxlIG9mIGRlZmluaXRpb24gZml4ZXMpLiBUaGUKCWRpc3BsYWNlbWVudHMgKGluIG1vc3Qgb2YgdGhlIGZ1bmN0aW9ucykgYXJlIG5vdCBvcHRpb25hbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSBtZXNzYWdlIHRlbGxpbmcgdXNlcnMgdG8gY29weSBuYXRpdmUgc3Rkb2xlMzIudGxiIG92ZXIgYXMgd2UKCW5vdyBwcm92aWRlIGl0LgoJQmV0dGVyIHRyYWNlIGluIExvYWRUeXBlTGliLgoJQ2hhbmdlIGRlYnVnIG1lc3NhZ2VzIHR5cGUgdG8gcmVmbGVjdCB3ZSBwcm92aWRlIHN0ZG9sZTMyLnRsYi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXNpZGVmcy5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBtc2lkZWZzLmggaGVhZGVyLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVJlbW92ZSBvdXRkYXRlZCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbnRyb2R1Y3Rpb24gcGFnZSBhbmQgdGhlIEZBUS4KCgkqIGluY2x1ZGUvZHhkaWFnLmg6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQ29ycmVjdCBlcnJvcnMgaW4gdGhlIG1hY3JvcyBmb3IgdHdvIER4RGlhZyBtZXRob2QgY2FsbHMuCgoJKiBkbGxzL29wZW5nbDMyL3dnbF9leHQuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglBZGQgc3R1YnMgZm9yIHdnbFN3YXBJbnRlcnZhbEVYVCAmIHdnbEdldFN3YXBJbnRlcnZhbEVYVC4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU2FmZUFycmF5RGVzdHJveSgpIHJldHVybnMgc3VjY2VzcyB3aGVuIGNhbGxlZCB3aXRoIGEgTlVMTAoJcG9pbnRlci4gQWRkZWQgdG8gdGhlIHRlc3QgY2FzZXMuCgoJKiBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2V0dGluZyBhIHJlY29yZCB0byBhbiBlbXB0eSBzdHJpbmcgaXMgdGhlIHNhbWUgYXMgbWFraW5nIGl0IG51bGwuCgoJKiB3aW5kb3dzL2RjZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVwbGFjZSBhIERQUklOVEYgd2l0aCBUUkFDRS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGVjayB0aGF0IHRoZXJlIGFyZSBzb21lIG1ldGhvZHMgdG8gaXRlcmF0ZSB0aHJvdWdoIGJlZm9yZSBpdGVyYXRpbmcKCXRocm91Z2ggdGhlbS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBuZXcgdGVzdAoJLSBjaGFuZ2VkIHRlc3QgdG8gcmVmbGVjdCB3aW5kb3dzIHJlc3VsdHMKCgkqIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGVzdCB0aGF0IGZhaWxzIG9uIFdpbjk4IGFuZCBpcyBub3QgdXNlZnVsLgoKCSogZGxscy9kYmdoZWxwL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJVmFyaW91cyBmaXhlcyBmb3IgQysrIGNsYXNzIHBhcnNpbmcgKG5lc3RpbmcsIHRlbXBsYXRlcykgKGZyb20gdGVzdAoJY2FzZXMgcHJvdmlkZWQgYnkgTWljaGFlbCBMaW4pLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTW92ZWQgUEtDUzEgIzIgdW4tL3BhZGRpbmcgZnJvbSBJbXBvcnQtL0V4cG9ydEtleSB0byBoZWxwZXIKCWZ1bmN0aW9ucy4KCVN1cHBvcnQgUlNBIGVuLS9kZWNyeXB0aW9uIHZpYSBDUEVuY3J5cHQgYW5kIENQRGVjcnlwdC4KCUFkZGVkIHRlc3QgY2FzZSBmb3IgUlNBIGVuLS9kZWNyeXB0aW9uLgoKMjAwNS0wMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS93aW4uaDoKCVVzZSBhbiBYIGNvbnRleHQgdG8gYXNzb2NpYXRlZCB0aGUgeDExZHJ2IHByaXZhdGUgd2luZG93IGRhdGEgdG8gYQoJd2luZG93IGhhbmRsZSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGUgV05EIHN0cnVjdHVyZSBkaXJlY3RseS4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOgoJRml4ZWQgYnVnIHRoYXQgY2F1c2VkIHRoZSB3aG9sZSB3aW5kb3cgdG8gYmUgcmVwYWludGVkIGJ5IFJlZHJhd1dpbmRvdwoJd2hlbiB0aGUgcGFzc2VkIHJlZ2lvbiB3YXMgZW1wdHkuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGluY2x1ZGUvZHNkcml2ZXIuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggc3RydWN0dXJlIG1lbWJlciBuYW1lIHRvIG1hdGNoIHdpbmRvd3MgaGVhZGVycyBhbmQgZml4IHVwIGFsbAoJdXNlcy4KCU5hbWVsZXNzIHN0cnVjdCBmaXggZm9yIGRzb3VuZC9wcm9wc2V0LmMgdG8gY29tcGlsZSBvbiBib3RoIHdpbmRvd3MKCWFuZCB3aW5lLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbGVhc2UgdGhlIGNsaWVudCBzZWN1cml0eSBvYmplY3RzIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZCAocmVwb3J0ZWQgYnkKCU1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJV2hlbiBhIHRvb2xiYXIgZG9lc24ndCBoYXZlIHRoZSBUQlNUWUxFX0ZMQVQgc3R5bGUgcmVkcmF3aW5nIHRoZQoJYnV0dG9ucyB3aGVuIG1vdmluZyB0aGUgbW91c2UgaXMgbm90IG5lY2Vzc2FyeS4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3N0ZG9sZTMyLnRsYi8uY3ZzaWdub3JlLCBkbGxzL3N0ZG9sZTMyLnRsYi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGRvbGUzMi50bGIvcnNyYy5yYywgZGxscy9zdGRvbGUzMi50bGIvc3RkX29sZV92MS5pZGwsCgkgIGRsbHMvc3Rkb2xlMzIudGxiL3N0ZG9sZTMyLnRsYi5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0ZG9sZTMyLnRsYi4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvcXVlcnkuYywgZGxscy9kM2Q5L3RleHR1cmUuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWRkIHZlcnRleCBEZWNsYXJhdGlvbiBzdXBwb3J0ICh1c2luZyB3aW5lZDNkKQoJLSBtaW5pbWFsIGltcGwgZm9yIFNldFJlbmRlclRhcmdldCBhbmQgQ3JlYXRlUXVlcnkgKG5lZWRlZCB0byBnZXQKCSAgc29tZSBzYW1wbGVzIHdvcmtpbmcpCgktIHJlbW92ZSBubyBsb25nZXIgbmVlZGVkICN1bmRlZiBHTF9WRVJTSU9OXzFfNAoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jb21tLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYywgZGxscy9semV4cGFuZC90ZXN0cy9semV4cGFuZF9tYWluLmMsCgkgIGxvYWRlci9wcmVsb2FkZXIuYzoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCWNoYXIgLT4gY29uc3QgY2hhciBmaXhlcy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueToKCUF2b2lkIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gbG9hZGluZyBhbiBlbXB0eSBkYXRhIGZpbGUuCgoJKiB0b29scy93aWRsL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0cnVjdHMgd2l0aCBwdHJzIGFyZSBhbHNvIFZUX1VTRVJERUZJTkVELgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvbXNpL3ByZXZpZXcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lQcmV2aWV3RGlhbG9nLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9vbGUzMi90ZXN0cy9tb25pa2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1vcmUgdGVzdHMuCgktIENoYW5nZSByZXR1cm4gY29kZSBvZiBDb0dldFBTQ2xzaWQgdG8gbWF0Y2ggdGVzdCByZXN1bHQuCgktIERvIGEgc2xpZ2h0IGhhY2sgdG8gbWFrZSBJUmVtVW5rbm93biBwcm94aWVzIGJlIGFkZGVkIGFmdGVyIHRoZQoJICBwcm94eSB0aGF0IHVzZXMgdGhlbSB0byBzdG9wIHRoZW0gYmVpbmcgdXNlZCBhZnRlciB0aGV5IGFyZQoJICBkZXN0cm95ZWQuCgktIEZpeCBtdWx0aXBsZSBsb2NhbCBzZXJ2ZXIgY29ubmVjdGlvbnMuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2ludGVybmwuaDogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbiwgaGFuZGxlIHJlcXVlc3QgZm9yIGluZm9ybWF0aW9uIGNsYXNzIDEsCglub3cgbmFtZWQgU3lzdGVtQ3B1SW5mb3JtYXRpb24uIFJldHVybiBzb21lIGR1bW15IGRhdGEgZm9yIG5vdy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NlbnNhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zZW5zYXBpL01ha2VmaWxlLmluLCBkbGxzL3NlbnNhcGkvc2Vuc2FwaS5jLAoJICBkbGxzL3NlbnNhcGkvc2Vuc2FwaS5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NlbnNhcGkuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3R1YiBkbGwgZm9yIHRoZSBTeXN0ZW0gRXZlbnQgTm90aWZpY2F0aW9uIFNlcnZpY2UuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3dpbmVnY2MubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIGEgbmV3IG1hbiBwYWdlIGZvciB3aW5lZ2NjLgoKCSogZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gY29udmVydCBEM0Q4IFZlcnRleERlY2wgdG8gRDNEOSBmb3JtYXQgKEQzRFZFUlRFWEVMRU1FTlQ5IHZlY3RvcikKCSAgd2hpbGUgcGFyc2luZwoJLSBkaXNwbGF5IHJlc3VsdCBvbiB0cmFjZXMKCgkqIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBmZXcgbWlzc2luZyBSZWdDbG9zZUtleSBjYWxscy4KCgkqIGRsbHMvdXNlci9sc3RyLmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglGaXggYnVnIGluIENoYXJQcmV2RXhBKCkuCgoJKiBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSB0ZXN0IGNhc2UgZm9yIGhhc2hpbmcgd2l0aCBzY2hhbm5lbCBtYWMga2V5cy4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglGaWxsIGluIHRoZSBpbmZvcm1hdGlvbiBpbiBWZW5kb3JJZGVudGlmaWVyIGFuZCBtYWtlIGEgYmV0dGVyIGVmZm9ydAoJYXQgZmlsbGluZyBpbiBJZGVudGlmaWVyIGluIHRoZSByZWdpc3RyeSBrZXkuCgoJKiBpbmNsdWRlL21zaXF1ZXJ5Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBDb1NldFByb3h5QmxhbmtldCwgQ29RdWVyeVByb3h5QmxhbmtldCBhbmQgQ29Db3B5UHJveHkuCgktIFVwZGF0ZSB0b2RvIGxpc3QuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiBFT0YgZm9yIHRoZSAnJWMnIGFuZCAnJUMnIGNhc2VzIGluIHNjYW5mKCkuCglBZGQgY29uZm9ybWFuY2UgdGVzdHMgdG8gdmVyaWZ5IHRoZSBiZWhhdmlvciBvZiAnJWMnLgoJSW1wcm92ZSBzb21lIG9mIHRoZSB0ZXN0J3MgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTZW5kIGEgc2NhbmNvZGUgdGhyb3VnaCBmb3IgdGhlIDUga2V5IHdoZW4gbnVtbG9jayBpc24ndCBvbi4KCjIwMDUtMDEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglEb24ndCBtYWtlIHRoZSB0ZXN0IGtleSB2b2xhdGlsZSwgdGhhdCBjYW4gYnJlYWsgb3RoZXIgdGVzdHMuCgoJKiBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHNlcnZlci9ob29rLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIHRlc3RzIGZvciBvbGQgc3R5bGUgaG9va3MgYW5kIHdpbmV2ZW50IGhvb2tzLCBtYWtlIHRoZW0gcGFzcwoJdW5kZXIgV2luZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSB0aGUgdXBkYXRpbmcgb2YgRmVhdHVyZSBhbmQgdGh1cyB0aGUgcmVzdWx0aW5nIGNvbXBvbmVudAoJc3RhdGVzLgoJUnVuIHRoZSBlbmQgb2YgaW5zdGFsbCBhY3Rpb25zIGZvciBzdXNwZW5kIGFuZCB1c2VyIGV4aXQgc3RhdGVzIGFzCgl3ZWxsLgoJU3RhcnQgcHV0dGluZyBpbiBwbGFjZSBhIGN1cnJlbnRseSBydW5uaW5nIHN0YXRlIGZvciBmdXR1cmUgdWkgdXNlLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudCBNc2lPcGVuUGFja2FnZUV4LCBhbmQgZm9yd2FyZCBNc2lPcGVuUGFja2FnZSB0aGVyZQoJLSBtYWtlIGEgTVNJX0NyZWF0ZVBhY2thZ2UgZnVuY3Rpb24gYW5kIHVzZSBpdCBpbiBNU0lfT3BlblBhY2thZ2UKCS0gbW92ZSBNc2lPcGVuUGFja2FnZUEgZG93biB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEkgZnVuY3Rpb25zCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglBZGQgVFpfSU5GTyBlbnRyeSB0byBtYXRjaCAoaW5jb3JyZWN0KSBBdXN0cmFsaWFuIEVhc3Rlcm4gRGF5bGlnaHQKCVRpbWUgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgc29tZSBzeXN0ZW1zLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIENoYW5nZSBzb21lIEZJWE1FcyB0byBFUlJzIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBub3RoaW5nIG5lZWRzCgkgIGZpeGluZy4KCS0gRml4IHNvbWUgbWVtb3J5IGxlYWtzIG9uIGVycm9yIHBhdGhzIGluIF9tYXJzaGFsX2ludGVyZmFjZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoZWNrIGZvciBhdmFpbGFiaWxpdHkgb2YgU1BJX0dFVElDT05USVRMRVdSQVAuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQXZvaWQgYSBmZXcgbW9yZSB1c2VzIG9mIFdJTl9GaW5kV25kUHRyLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NlbnNldnRzLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGlkbCBmaWxlIGZvciB0aGUgU3lzdGVtIEV2ZW50IE5vdGlmY2F0aW9uIFNlcnZpY2VzIEFQSQoJKFNFTlNBUEkpLgoKCSogZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLCBkbGxzL3NoZG9jdncvZXZlbnRzLmMsCgkgIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4gTWFrZSBzdXJlIHRoZSBtb3ppbGxhCgljb250cm9sIGlzIHJlYWR5IHRvIHVubG9hZCBhcyB3ZWxsLgoKCSogZGxscy9tc2kvdGVzdHMvZGIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBkaWZmZXJlbnQgdHlwZXMgb2YgZG9kZ3kgcXVlcmllcy4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGN1c3RvbSBhY3Rpb24gdHlwZSAxOSwgSGFsdCBpbnN0YWxsIGFuZCBkaXNwbGF5IGVycm9yCgltZXNzYWdlLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTXNpR2V0UHJvcGVydHkgZG9lcyBub3QgcmV0dXJuIGFueSBlcnJvciBvbiBtaXNzaW5nIHByb3BlcnRpZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTZXQgZGVmYXVsdCB2aWRlbyBtZW1vcnkgdG8gNjRNYiAod2FzIDE2TWIpIGFzIG1hbnkgZDNkOSBkZW1vcyB1c2UKCWQzZDcgY29kZSB0byBnZXQgYXZhaWxhYmxlIHZpZGVvIG1lbW9yeSBzaXplIChleCBDb25maWdTeXN0ZW0uZXhlIG9uCglkM2Q5IHNkaykuCgoJKiBkbGxzL2R4ZGlhZ24vTWFrZWZpbGUuaW4sIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNvbWUgZml4ZXMgb24gc3ViIGNvbnRhaW5lcnMgc3VwcG9ydAoJLSBhZGQgc3VwcG9ydCBmb3IgcHJvcGVydGllcyAoVkFSSUFOVCkKCS0gaGFyZCBjb2RlZCBzaW1wbGUgaW5pdCBmb3Igcm9vdCBjb250YWluZXIgKGdldHRpbmcgc2ltcGxlIGR4OQoJICB2ZXJzaW9uIGNoZWNrcyB3b3JraW5nKQoKCSogZGxscy9rZXJuZWwvbGNmb3JtYXQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIFVURi04IG5hbWUgYmFjayB0byBJU08tODg1OS0xLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IHR5cG8gaW4gd2luZWQzZF9pbnRlcmZhY2UuaAoJLSBhZGQgbmVlZGVkIGRlZmluZXMgaW4gd2luZWQzZF9pbnRlcmZhY2UuaAoJLSBhZGQgSVdpbmVEM0RWZXJ0ZXhEZWNsYXJhdGlvbkltcGxfUGFyc2VUb2tlbjkgZm9yIGRlYnVnIHRyYWNlcwoJLSBmaXggUGFyc2VEZWNsYXJhdGlvbjkKCS0gbGltaXQgZmxvb2Qgb2YgdHJhY2VzIChzaW5nbGUgc2hvdCB0cmFjZXMpCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglHaXZlIElVbmtub3duIGl0cyBvd24gaWZzdHViIHRvIGZpeCByZWYtY291bnRpbmcgYW5kIGlwaWQgc3RvcmFnZQoJaXNzdWVzLgoKMjAwNS0wMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLAoJICBkbGxzL21zaS90YWJsZS5jLCBkbGxzL3JzYWVuaC9tcGkuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYl9kaXNhc20uYywgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgcHJveHkgbWFuYWdlciB1c2UgSU11bHRpUUkgaW5zdGVhZCBvZiBJSW50ZXJuYWxVbmtub3duIGFzIHRlc3RzCgkgIHNob3cgdGhhdCBJSW50ZXJuYWxVbmtub3duIGlzbid0IGV4cG9zZWQuCgktIEltcGxlbWVudCBJTXVsdGlRSSBvbiB0b3Agb2YgSVJlbVVua25vd24gY2FsbHMuCgktIFNpbGVuY2Ugc29tZSBmaXhtZXMgdGhhdCBvY2N1ciBkdXJpbmcgdGVzdHMgYW5kIGRvbid0IGdpdmUgdXMgYW55CgkgIHVzZWZ1bCBpbmZvcm1hdGlvbi4KCS0gRml4IHR5cG8gaW4gY2xhc3MgZmFjdG9yeSBwcm94eSB0aGF0IGNhdXNlZCB1cyB0byB1c2UgdGhlIHdyb25nCgkgIG9mZnNldCBpbnRvIHRoZSBDRlByb3h5IHN0cnVjdHVyZSwgY2F1c2luZyB1cyB0byBub3QgY2FsbCB0aGUKCSAgb3V0ZXJfdW5rbm93biBwcm9wZXJseS4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGEgdmVyeSBiYXNpYyBibGVuZGluZyBzdXBwb3J0IG9uIGZhc3QgZHJhd2luZyBwYXRoICh0byBoYXZlIGJldHRlcgoJICBwZXJmb3JtYW5jZXMgb24gbGFzdCBnYW1lcykKCS0gc29tZSBkZWZpbmVzIGZvciBWQk8gc3VwcG9ydAoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBWZXJ0ZXhEZWNsYXJhdGlvbiBkZXZpY2UgQVBJcwoJLSBEM0Q5IGRlY2xhcmF0aW9ucyBwYXJzaW5nCgktIGEgbGl0dGxlIGJldHRlciBBUElzICh0cnlpbmcgdG8gYXZvaWQgY29tcGlsZSBwcm9ibGVtcykKCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFVzZSBJbnRlcmxvY2tlZEluY3JlbWVudCBmb3IgdGhlIGlwaWQgY291bnRlciBpbnN0ZWFkIG9mIGEgY3JpdGljYWwKCSAgc2VjdGlvbiAoc3VnZ2VzdGVkIGJ5IE1pa2UgSGVhcm4pLgoJLSBSZW1vdmUgYSBsaW5lIGFkZGVkIGJ5IGEgYmFkIG1lcmdlLgoJLSBJbXBsZW1lbnQgUmVtVW5rU3R1Yl9EaXNjb25uZWN0LgoJLSBSZW1vdmUgYWxsIG9mIHRoZSBSUEMgZGlzY29ubmVjdCBjb2RlLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBJUmVtVW5rbm93bi4KCS0gVXNlIElSZW1Vbmtub3duIGZvciBsaWZlLWN5Y2xlIG1hbmFnZW1lbnQgaW5zdGVhZCBvZiB0aGUgY3VycmVudAoJICBoYWNrcy4KCgkqIGluY2x1ZGUvd2ludGVybmwuaCwgZGxscy9rZXJuZWwvY3B1LmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUdldCByaWQgb2YgdGhlIHJkdHNjIGNwdSBpbnN0cnVjdGlvbiBtZXRob2QgZm9yIGNhbGN1bGF0aW9uIG9mIHRoZQoJcGVyZm9ybWFuY2UgY291bnRlci4gUHV0IHRoZSBjYWxjdWxhdGlvbiAoYmFzZWQgb24gZ2V0dGltZW9mZGF5KSBpbgoJTnRRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpIGFuZCB1c2UgdGhhdCBpbiB0aGUga2VybmVsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVubmVlZGVkIE5VTEwgY2FzdC4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBhZGRpbmcgYW4gaW50ZXJmYWNlLCBtaWRsIGFkZHMgdGhlIGluaGVyaXRlZCBpbnRlcmZhY2UgZmlyc3QKCXVubGVzcyB0aGUgaW5oZXJpdGVkIGludGVyZmFjZSBkb2Vzbid0IGl0c2VsZiBpbmhlcml0LgoJRml4IHRoZSBpZCwgc2l6ZXZmdCBhbmQgZGF0YXR5cGUyIGZpZWxkcyBmb3IgaW50ZXJmYWNlcyB0aGF0IGluaGVyaXQuCglQcmV2ZW50IGEgY3Jhc2ggaWYgdGhlIHR5cGVsaWIgaXMgZW1wdHkuCglDbGFyaWZ5IGEgZmV3IG1vcmUgZW50cmllcyBvbiB0eXBlbGliX3N0cnVjdC5oCgoJKiBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggTXNpUmVjb3JkU2V0U3RyaW5nIGZvciBOVUxMIHN0cmluZ3MgYW5kIHVwZGF0ZSB0ZXN0IGNhc2UuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCURpc2FibGUgYW50aWFsaWFzaW5nIG9mIGZvbnRzIHdoaWxlIHdvcmtpbmcgaW4gYSBwYWxldHRlLgoKCSogZGxscy9zZXR1cGFwaS9ObC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9ObC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9ObC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywgcHJvZ3JhbXMvc3RhcnQvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLCBwcm9ncmFtcy93aW5oZWxwL05sLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEb24ndCB1c2UgdXRmOCBpbiByYyBmaWxlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgdHlwbywgcHJvcGFnYXRlIGVycm9ycyBiZXR0ZXIgZnJvbSBpbnNpZGUgdGhlIHR5cGVsaWIKCW1hcnNoYWxsZXIuCgoJKiBkbGxzL2dkaS9tZXRhZmlsZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0TWV0YUZpbGUgY2hlY2tzIGJvdGggdGhlIHZlcnNpb24gYW5kIHRoZSBoZWFkZXIgc2l6ZSB3aGVuIGl0IHRyaWVzCgl0byBsb2FkIGEgbWV0YWZpbGUuICBQb3dlcnBvaW50IFhQIGRlcGVuZHMgb24gdGhpcy4KCgkqIGRsbHMvZG11c2ljL2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9jbG9jay5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL3BvcnQuYywgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcmVnaXN0cnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGZldyBtb3JlIHN0dWIgaW1wbGVtZW50YXRpb25zLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jLAoJICB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbC5oLAoJICB0b29scy93aWRsL3dpZGwubWFuOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBlbGliIG9ubHkgb3B0aW9uLgoJTWFrZSAtdCBhbmQgLWggb3B0aW9ucyBpbmNsdXNpdmUuCgoyMDA1LTAxLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwKCSAgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvcmVjb3JkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBhY3Rpb24uYyBpcyBnZXR0aW5nIHRvbyBiaWcsIHNvIHNwbGl0IG91dCBhbGwgdGhlIGhhbmRsaW5nIG9mCgkgIEN1c3RvbUFjdGlvbnMgaW50byBjdXN0b20uYy4gQ2xlYW5lZCB1cCBhIGxvdCBvZiB0aGUgaGFuZGxpbmcgb2YKCSAgY3VzdG9tIGFjdGlvbnMgaW5jbHVkaW5nIHNjcmlwdGluZyBhY3Rpb25zIGFuZCBwcm9jZXNzaW5nIHJldHVybgoJICBjb2Rlcy4KCS0gTWlrZSBNY0Nvcm1hY2sgcG9pbnRlZCBvdXQgdGhhdCBNc2lGb3JtYXRSZWNvcmQgaXMgYmFzaWNhbGx5IHRoZQoJICBzYW1lIGFzIGludGVybmFsIGZ1bmN0aW9uIGRlZm9ybWF0X3N0cmluZy4gU28gYnJva2UgZGVmb3JtYXRfc3RyaW5nCgkgIG91dCBhbmQgdXBkYXRlZCBpdCB0byBmdW5jdGlvbiBhcyBNc2lGb3JtYXRSZWNvcmQgYW5kIGltcGxlbWVudGVkCgkgIE1zaUZvcm1hdFJlY29yZC4KCS0gQSBudW1iZXIgb2YgcmFuZG9tIGZpeGVzIHRvIGFjdGlvbi5jIGluY2x1ZGluZyBwcm9wZXJseSBjYWxjdWxhdGluZwoJICB0aGUgbGVuZ3RoIGZvciB0aGUgTG9jYWxQYWNrYWdlIG5hbWUsIG5vdCBmb3JjaW5nIGEgcmVib290IHdoZW4KCSAgcmVhbGx5IHdlIHNob3VsZCBqdXN0IHJldHVybiBFUlJPUl9JTlNUQUxMX1NVU1BFTkQgYW5kIGhhbmRsaW5nCgkgIFJFR19NVUxUSV9TWiBub3cgdGhhdCB3ZSBjYW4gZGVmb3JtYXQgdGhlIHByb3Blcmx5LgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglLZW4gQmVsbGVhdSA8amFtZXpAaXZpYy5xYy5jYT4KCS0gVXNlZCB3aW5lX2RiZ3N0cl9hIHRvIHByZXZlbnQgYW4gb3ZlcmZsb3cuCgktIEltcHJvdmVkIHN1cHBvcnQgdG8gY2FsbCBtYWNyb3Mgd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgoJICBwYXJhbWV0ZXJzLgoJLSBQdXQgYSBjaGVjayB0byBwcmV2ZW50IGFuIG91dCBvZiBib3VuZHMgYWNjZXNzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDb3B5IGRhdGEgc3RydWN0dXJlcyBvbmUgYXQgYSB0aW1lIHVzaW5nIHN1cHBsaWVkIHNpemUuCgoJKiB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC90eXBlbGliLmgsCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBlbnVtIHN1cHBvcnQuCglBbm90aGVyIGF0dGVtcHQgYXQgZ2V0dGluZyB0aGUgYWxpZ25tZW50IGJpdHMgY29ycmVjdC4KCgkqIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9vZGJjMzIvcHJveHlvZGJjLmg6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbXBsZW1lbnRlZCBVbmljb2RlIHByb3h5IGZvciBPREJDLgoKCSogZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9vbGVhdXQzMi9yZWdzdnIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTW92ZSBPTEUgYXV0b21hdGlvbiBpbnRlcmZhY2UgcmVnaXN0cmF0aW9uIHRvIG9sZWF1dDMyLgoJLSBBZGQgSVJlbVVua25vd24gdG8gbGlzdCBvZiBpbnRlcmZhY2VzIHRvIHJlZ2lzdGVyLgoKCSogZGxscy9vbGUzMi9vbGVwcm94eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglQcm94aWVzL3N0dWJzIGZvciBJUmVtVW5rbm93biBtZXRob2RzLCBiYXNlZCBvbiBjb2RlIHdyaXR0ZW4gYnkgT3ZlCglL5XZlbi4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGVuY29kaW5nIGZvciBWVF9SOC4KCUJ1ZyBmaXg6IEluaXRpYWxpc2UgY2hpbGRfc2l6ZS4KCgkqIGRsbHMvc2V0dXBhcGkvbWlzYy5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBEdXBsaWNhdGVTdHJpbmcgYW5kIFF1ZXJ5UmVnaXN0cnlWYWx1ZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJSW5pdGlhbGl6ZSB0ZW1wb3JhcnkgdmFyaWFudHMgYmVmb3JlIGNhbGxpbmcgVmFyaWFudENoYW5nZVR5cGVFeC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJUmVwbGFjZSAnXCcgd2l0aCAnLycgaW4gdGhlIFVSTCBpbiBIVFRQX0h0dHBTZW5kUmVxdWVzdFcuCgoJKiBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgcHJvZ3JhbXMvd2luZXBhdGggdG8gdW5pY29kZSwgcHJpbnQgdGhlIG91dHB1dCBzdHJpbmcgdXNpbmcKCVVuaXggbG9jYWxlLgoKCSogZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL3JlZ2lzdHJ5LmMsIGRsbHMvbXNpL3Rlc3RzL2RiLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQsIHRlc3QgYW5kIGRvY3VtZW50IE1zaURlY29tcG9zZURlc2NyaXB0b3IuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJdW5zaWduZWQgY2hhciBzdXBwb3J0LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBBZGRlZCBhIGNvdXBsZSBvZiBTZXRXaW5kb3dQb3MgdGVzdHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCU1ha2UgU2hvd1dpbmRvdyguLi4sU1dfU0hPV05BKSBhbHNvIHdvcmsgb24gYWxyZWFkeSB2aXNpYmxlIHdpbmRvd3MKCXdpdGggc29tZSBjb25mb3JtYW5jZSB0ZXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBuZXcgcmVnaXN0cnkgZnVuY3Rpb25zIGluIHJlZ2lzdHJ5LmMuCglEbyBub3QgZm9yY2UgYSByZWJvb3QsIGp1c3QgcmV0dXJuIEVSUk9SX0lOU1RBTExfU1VTUEVORCBhbmQgd3JpdGUKCXNvbWUga2V5cyB0byB0aGUgcmVnaXN0cnkuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcmVnaXN0cnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlIHRoZSBndWlkIHNxdWlzaGluZyBmdW5jdGlvbnMgb3V0IG9mIG1zaS5jIGFuZCBtYWtlIGEgbmV3CglyZWdpc3RyeS5jIGZpbGUuIEFsc28gY2xlYW4gdXAgYWxsIHRoZSB2YXJpb3VzIHJlZ2lzdHJ5IGtleXMgd2UgbmVlZAoJdG8gb3BlbiBhbmQgY3JlYXRlIHRvIHRoaXMgbW9kdWxlIGFuZCBtb2RpZnkgdGhlIGZ1bmN0aW9ucyBmb3IgbXNpLmMKCXRvIGNhbGwgdGhlc2UgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3Njcm9sbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdW1tYXJ5IGxpbmUgZm9yIHNldmVyYWwgc2Nyb2xsYmFyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBHZW5lcmF0ZSBtYWNoaW5lLWxvY2FsIElQSURzLgoJLSBNYWtlIHBpcGVzIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQgb25seSBieSB0aGVpciBJUElELgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgaW50ZXJmYWNlIGluaGVyaXRhbmNlLgoKCSogZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIHBpbiBkaXJlY3Rpb24gd2hlbiByZWdpc3RlcmluZyBhdWRpbyBpbnB1dCBkZXZpY2UuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3RySXNJbnRsRXF1YWwgYW5kIEludGxTdHJFcVdvcmtlciBtYXkgYmUgYWJzZW50LgoKMjAwNS0wMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3d0c2FwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvd3RzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuYywKCSAgZGxscy93dHNhcGkzMi93dHNhcGkzMi5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3d0c2FwaTMyLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBXVFNBUEkzMi5ETEwuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBzZXJ2aWNlcyB0byB1c2UgcGlwZXMgZm9yIFJQQyBpbnN0ZWFkIG9mIHNoYXJlZCBtZW1vcnkuCgoJKiBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLCBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLCBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsIGRsbHMvZG1zdHlsZS9zdHlsZS5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJRGlzYWJsZSBhbnRpYWxpYXNpbmcgaWYgdGhlIGZvbnQgZGljdGF0ZXMgaXQuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCVNwbGl0IGNhY2hpbmcgb2YgYW50aWFsaWFzZWQgYW5kIG5vbi1hbnRpYWxpYXNlZCBnbHlwaHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdGRsbC8uY3ZzaWdub3JlLAoJICBkbGxzL2NyeXB0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0ZGxsL2NyeXB0ZGxsLmMsCgkgIGRsbHMvY3J5cHRkbGwvY3J5cHRkbGwuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHViIHZlcnNpb24gb2YgY3J5cHRkbGwuZGxsLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglEb24ndCByZWZ1c2UgdG8gcHJvY2VzcyBWRE1YIHJhdGlvIGVudHJpZXMgd2l0aCBiQ2hhclNldCA9PSAwLiBUaGVzZQoJZW50cmllcyBhcmUgYXQgbGVhc3QgYXMgdXNlZnVsIGFzIHRob3NlIHdpdGggYkNoYXJTZXQgPT0gMS4gQWRkCgljb21tZW50IGNvbnRhaW5pbmcgVVJMIG9mIGRvY3VtZW50YXRpb24gZm9yIFZETVggcmVjb3Jkcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBUaW51cyA8bzExMnc4cjAyQHNuZWFrZW1haWwuY29tPgoJUHJvcGVybHkgYWxsb3cgcmVtb3ZpbmcgdG9vbGJhciBiaXRtYXBzIGJ5IGNoYW5naW5nIGl0IGludG8gMC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQdXQgQnJhemlsaWFuIEFCTlQyIGtleWJvYXJkIGxheW91dHMgaW4gbGluZSB3aXRoIGFwcHJvcHJpYXRlIHZpcnR1YWwKCWtleWJvYXJkIG1hcHMuCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJQnJpbmcgd2ludGFiIGluIGxpbmUgd2l0aCBKZXJlbXkncyBYMTEgZXZlbnQgdGltaW5nIHBhdGNoZXMgYWdhaW4uCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJQWRkIHRoZSBydWxlIHRoYXQgaW52ZXJ0ZWQgY3Vyc29yIGhhcyAtdmUgYWx0aXR1ZGUsIG1hdGNoaW5nIGJlaGF2aW91cgoJb24gV2luZG93cyB3YWNvbSB0YWJsZXRzLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCVBhY2tldHMgZnJvbSBlcmFzZXIgY3Vyc29ycyBhcmUgbWFya2VkIGFzIGludmVydGVkLCBtYXRjaGluZyBiZWhhdmlvcgoJb24gV2luZG93cyBXYWNvbSB0YWJsZXRzLgoKCSogZGxscy93aW50YWIzMi9jb250ZXh0LmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCVdURW5hYmxlLCB3aGVuIGNhbGxlZCB0byBkaXNhYmxlIHRhYmxldCBjb250ZXh0LCBjbGVhcnMgY29udGV4dCBxdWV1ZSwKCWFzIHBlciB3aW50YWIgc3BlYy4KCgkqIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gYWNjZXNzIHRoZSBwcmltYXJ5IGJ1ZmZlciB3aGlsZSB0aGUKCWZvcm1hdCBpcyBiZWluZyBjaGFuZ2VkLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCS0gSW4gd2ludGFiJ3MgZGVmYXVsdCBzeXN0ZW0gY29udGV4dCwgY2hhbmdlIGNvbnRleHQgb3B0aW9ucyB0byBtYXRjaAoJICBXYWNvbSB0YWJsZXQgaW4gd2luZG93cy4KCS0gQ2hhbmdlIGRldmljZSBvcmllbnRhdGlvbiB1bml0IGRlZmluaXRpb24gdG8gYW5ndWxhci4KCS0gVXNlIE1hY3JvcyB3aGVyZSBhcHByb3ByaWF0ZSB0byBkZWZpbmUgY3Vyc29yIGFuZCBkZXZpY2UgZGVmYXVsdHMuCgoJKiBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJLSBDb3JyZWN0IG92ZXJmbG93IDEgbWVzc2FnZSB0b28gZWFybHkuCgktIE92ZXJmbG93IG5vdyBnb2luZyBvbnRvIG1lc3NhZ2UgcXVldWUuCgktIE92ZXJmbG93IHN0YXRlIGNvcnJlY3RseSBvci1lZCB3aXRoIG90aGVyIHBhY2tldCBzdGF0dXMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL21pc2MuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgTXlGcmVlLCBNeU1hbGxvYyBhbmQgTXlSZWFsbG9jLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgcmVmZXJlbmNlZCB0eXBlcyB0aGF0IGFyZW4ndCBhbHJlYWR5IGluIHRoZSB0eXBlbGliLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9yZWdzdnIuYywKCSAgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSB1bnVzZWQgaW5jbHVkZXMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBdm9pZCB1bm5lY2Vzc2FyeSBydW4tdGltZSBpbml0aWFsaXphdGlvbnMuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTdXBwb3J0IGZvciBUTFMxIHBzZXVkbyByYW5kb20gZnVuY3Rpb24uCglTb21lIGhlbHBlciBmdW5jdGlvbnMgZm9yIERBVEFfQkxPQidzLgoJQ29tcHV0aW5nIFRMUzEgbWFzdGVyIHNlY3JldCBmcm9tIHRoZSBwcmUtbWFzdGVyIHNlY3JldC4KCURlcml2aW5nIHRoZSBtYXN0ZXIgaGFzaCBmcm9tIHRoZSBtYXN0ZXIgc2VjcmV0LgoJRGVyaXZpbmcgVExTMSBNQUMgYW5kIGVuY3J5cHRpb24ga2V5cyBmcm9tIHRoZSBtYXN0ZXIgaGFzaC4KCVRlc3RzIGZvciBtb3N0IG9mIHRoZSBhYm92ZS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgTnRMb2FkRHJpdmVyIGFuZCBOdFVubG9hZERyaXZlciBzdHVicy4KCgkqIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L2RldmljZS5jLAoJICBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZDNkOS9xdWVyeS5jLCBkbGxzL2QzZDkvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3N3YXBjaGFpbi5jLAoJICBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvZDNkOS92b2x1bWUuYywgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOC92b2x1bWUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGQgbWlzc2luZyAvJ3MgdG8gdXJscyBodHRwOi8vd3d3LmN5Z3dpbi5jb20gYW5kCglodHRwOi8vd3d3Lm1pbmd3Lm9yZy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogQmVybmQgRnVocm1hbm4gPHNpbHZlcmJhbmFuYUBnbXguZGU+CglBZGRlZCBmaXhtZSBtYWNyb3MgaW4gU3lzdGVtUGFyYW1ldGVyc0luZm9XIGZvciBzZXZlcmFsIGFjdGlvbiBudW1iZXJzCgl0aGF0IGFyZSB5ZXQgdW5pbXBsZW1lbnRlZC4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIHZvaWQuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIFdpbmRvd3MgbWVtb3J5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2ludGFiMzIvY29udGV4dC5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLmMsCgkgIGRsbHMveDExZHJ2L3dpbnRhYi5jOgoJUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJLSBEb24ndCBwb3N0IG1lc3NhZ2VzIG9uIFdpbmUgbWVzc2FnZSBxdWV1ZSwgaWYgdGFibGV0IGNvbnRleHQgZmxhZ3MKCSAgcG9zdGluZyBhcmUgZGlzYWJsZWQuCgktIFdoZW4gcG9zdGluZyBtZXNzYWdlcyBvbiBXaW5lIG1lc3NhZ2UgcXVldWUsIHVzZSBtZXNzYWdlIGJhc2Ugc3RvcmVkCgkgIGluIHRhYmxldCBjb250ZXh0LCBub3QgdGhlIGRlZmF1bHQgbWVzc2FnZSBiYXNlLgoJLSBFbnN1cmUgdGhhdCBYMTEgUHJveGltaXR5IGV2ZW50cyBwdXQgbWVzc2FnZXMgb250byBXaW50YWIgbWVzc2FnZQoJICBxdWV1ZS4KCgkqIGRsbHMvZDNkcm0vdmVyc2lvbi5yYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kM2RybS5oOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFkZGVkIGEgc2ltcGxlIGQzZHJtLmggaGVhZGVyLgoJQ29ycmVjdGVkIGEgY29weS9wYXN0ZSB0eXBvIGZyb20gZDNkaW0uCgoJKiBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLCBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywKCSAgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRXMucmM6IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCBhbm90aGVyIGNoZWNrIGZvciB2YWxpZCduZXNzIG9mIGFsZ2lkLiBJdCdzIHJlZHVuZGFudC4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CgljaGFyIC0+IGNvbnN0IGNoYXIgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIENSWVBUX1NFUlZFUiBkZWZpbmUuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBoaWRkZW4gYW5kIHJlc3RyaWN0ZWQgZnVuY3Rpb24gYXR0cmlidXRlcy4KCUFkZCBzdXBwb3J0IGZvciBvZGwgaW50ZXJmYWNlIGF0dHJpYnV0ZS4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBIZWFwRnJlZShOVUxMKSBjYXNlIGZhc3RlciBieSByZXRyaWV2aW5nIGhlYXAgcG9pbnRlciBhZnRlciB0aGUKCW1lbW9yeSBibG9jayBwb2ludGVyIHRlc3QuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBtZW1vcnkgbGVhayBpbiBtaXhlciBjb2RlLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEcmF3IGEgcmVwcmVzZW50YXRpb24gb2YgYSBkb2N1bWVudCBpbiB0aGUgcGFnZSBzZXR1cCBkaWFsb2cuCgktIENoYW5nZSBzb21lIEZJWE1FJ3MgdG8gVFJBQ0UncyBiZWNhdXNlIGV2ZXJ5dGhpbmcgd2UgbmVlZCBpcwoJICBpbXBsZW1lbnRlZCBhbmQgdGhleSBmaXJlIGZvciBvbmVzIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBpbXBsZW1lbnQuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBmb3JtYXQgc3RyaW5nIGluIE50UXVlcnlWaXJ0dWFsTWVtb3J5KCkuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUaGUgbmV3IEluc2VydCBmaXhlcyBub3cgcHJvcGVybHkgcmVxdWlyZSA/LD8gaW5zdGVhZCBvZiBqdXN0ID8gZm9yCgl0aGUgSW5zZXJ0IGNhbGwuIFRoaXMgZml4IG1vZGlmaWVzIHRoZSBNU0lfU2V0UHJvcGVydHkgcXVlcnkgdG8gYmUKCWNvcnJlY3QuCgoJKiBkbGxzL21zaS9zdW1pbmZvLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBbiBpbXBsZW1lbnRhdGlvbiBvZiBNc2lTdW1tYXJ5SW5mb0dldFByb3BlcnR5VyBiYXNlZCBvZmYgb2YKCU1zaVN1bW1hcnlJbmZvR2V0UHJvcGVydHlBLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIG5ldyBmbGFnIFNPUkZQX05PTElGRVRJTUVNR01UIHRvIHRlbGwgdGhlIHByb3h5IG1hbmFnZXIgbm90IHRvCgkgIGNhbGwgYW55IElSZW1Vbmtub3duIGZ1bmN0aW9ucy4KCS0gTW92ZSB0aGUgbG93LWxldmVsIHVubWFyc2hhbGluZyBjb2RlIGludG8gYSBuZXcgZnVuY3Rpb24sCgkgIHVubWFyc2hhbF9vYmplY3QsIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSByZXVzZWQgZm9yIHVubWFyc2hhbGluZwoJICBJUmVtVW5rbm93bi4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglHZW5lcmF0ZSBXaW50YWIgcGFja2V0cyBmb3IgWElucHV0IGJ1dHRvbiB1cC9kb3duIGV2ZW50cy4KCgkqIGRsbHMvbXNpL21zaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbmRlbnRhdGlvbiBhbmQgc3R5bGUgY2xlYW51cC4KCjIwMDUtMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJVHdlYWsgU2V0V2luZG93UG9zIGZsYWdzIGhhbmRsaW5nIHRvIG1ha2UgYSBmZXcgbW9yZSBvZiB0aGUgbWVzc2FnaW5nCgl0ZXN0cyBwYXNzLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCaXQgMHgwMjAwIGFsd2F5cyBhcHBlYXJzIHRvIGJlIHNldCBpbiB0aGUgdHlwZWluZm8ncwoJdHlwZWtpbmQvYWxpZ25tZW50IG1lbWJlci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglNYXggdHJhY2tpbmcgc2l6ZSBpbiBXTV9HRVRNSU5NQVhJTkZPIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUKCXdpbmRvdyBmcmFtZS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJW2xvY2FsXSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvIHRoZSB0eXBlbGliLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgT3BlblF1ZXJ5IGludG8gbXNpcXVlcnkuYyBhbmQgbWFrZSBpdCBub24tc3RhdGljLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogR3VubmFyIERhbHNuZXMgPGhhcmRvbkBvbmxpbmUubm8+CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJU1RBVFVTQkFSX1NldFRleHRUOgoJLSBudGV4dCB3YXNuJ3QgZnJlZWQgb24gcmV0dXJuIGlmIHRleHQgd2FzIHVuaWNvZGUKCS0gcGFydC0+dGV4dCB3YXMgYWx3YXlzIGZyZWVkLCBidXQgaWYgdGhlIHByZXZpb3VzIHN0eWxlIHdhcwoJICBTQlRfT1dORVJEUkFXLCBwYXJ0LT50ZXh0IHdvdWxkIGNvbnRhaW4gMzJiaXQgZGF0YQoJLSBmcmVlIG9sZCB0ZXh0IGlmIG5ldyBzdHlsZSBpcyBTQlRfT1dORVJEUkFXIGJ1dCBvbGQgc3R5bGUgd2Fzbid0CgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gTW9yZSB2ZXJib3NlIG91dHB1dCBvZiBlcnJvcnMuCgktIEJhaWwgb3V0IGlmIGZpcnN0IHRlc3QgZmFpbHMgKHByb2R1Y2Ugb25lIGVycm9yIG9ubHkpLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9zY3JvbGwuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvd2luLmM6CglNYWtlIFdJTl9TZXRTdHlsZSBtb3JlIHRocmVhZC1zYWZlIGJ5IHNwZWNpZnlpbmcgdGhlIGJpdHMgdG8gY2hhbmdlCglpbnN0ZWFkIG9mIHRoZSBuZXcgdmFsdWUuCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCVNtYWxsIGNoYXIgLT4gY29uc3QgY2hhciBmaXguCgoJKiBkbGxzL2QzZHg4L2QzZHhidWZmZXIuYywgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIFVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gU3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3ByZXZpZXcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBNc2lQcmV2aWV3RGlhbG9nIGFuZAoJTXNpUHJldmlld0JpbGxib2FyZC4KCgkqIGRsbHMvbXNpL21zaXF1ZXJ5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvY2sgcmVjb3JkIGluIE1zaVZpZXdFeGVjdXRlLCBtb3ZlIHN0dWJzIHRvIGVuZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBHZXRBZHZpc2UgYW5kIFNldEFkdmlzZS4KCgkqIGluY2x1ZGUvbnRzZWNhcGkuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgc29tZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVZhcmlvdXMgZm9ybWF0dGluZy9zdHlsZSBjaGFuZ2VzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUluY2x1ZGUgbmV3IHRlc3RzLgoKCSogZGxscy9xdWFydHovcmVnc3ZyLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoZWFwIGNvcnJ1cHRpb24gaW4gcXVhcnR6IHNlcnZlciByZWdpc3RyYXRpb24sIGFkZCBzb21lCgl3aGl0ZXNwYWNlLCBicmVhayBvdXQgb2YgbG9vcCBpZiBvdXQgb2YgbWVtb3J5LgoKMjAwNS0wMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIEltcGxlbWVudGVkIFNQSV9TRVRJQ09OTUVUUklDUy4KCS0gRml4ZWQgU1BJX0dFVElDT05USVRMRUxPR0ZPTlQgdG8gb25seSByZXR1cm4gdmFsdWVzIHJldHJpZXZlZCBmcm9tCgkgIHdpbi5pbmkgb24gZmlyc3QgY2FsbCBhbmQgcmV0dXJuIGEgY2FjaGVkIHZlcnNpb24gaW4gc3Vic2VxdWVudAoJICBjYWxscy4KCS0gQ3JlYXRlZCB1bml0IHRlc3QgZm9yIFNQSV97R0VULFNFVH1JQ09OTUVUUklDUy4KCgkqIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvdGVzdHMvZGIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbmQgdGVzdCBpbnNlcnRpbmcgcmVjb3Jkcy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveGZvbnQuYzoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgZGVjbGFyYXRpb25zLgoKCSogZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcmVmY291bnRpbmcsIHVzZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc2V0IEFUVFJfSU4gb3IgQVRUUl9PVVQgYnkgZGVmYXVsdCAtIHRoaXMgZXNzZW50aWFsbHkgcmV2ZXJ0cwoJcmV2LiAxLjIxLiAgVGhlIHByb3h5IGNvZGUgbXVzdCBleHBsaWNpdGx5IGFkZCB0aGVzZSBpZiB0aGV5J3JlCgluZWVkZWQuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBndWlkIGhhc2guCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVJlcGxhY2UgYSBudW1iZXIgb2YgY2FsbHMgdG8gV0lOX0ZpbmRXbmRQdHIgYnkgV0lOX0dldFB0ci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2FkdnBhY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWMsCgkgIGRsbHMvYWR2cGFjay90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdnBhY2svdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2cGFjay90ZXN0cy9hZHZwYWNrLmMsIGluY2x1ZGUvYWR2cHViLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3R1YnMgZm9yIE5lZWRSZWJvb3RJbml0IGFuZCBOZWVkUmVib290LgoJQWRkZWQgaW1wbGVtZW50YXRpb25zIGZvciBHZXRWZXJzaW9uRnJvbUZpbGUgYW5kCglHZXRWZXJzaW9uRnJvbUZpbGVFeC4KCUFkZGVkIHRlc3QgZm9yIEdldFZlcnNpb25Gcm9tRmlsZS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLAoJICBpbmNsdWRlL3BzYXBpLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEVudW1QYWdlRmlsZXN7QSxXfSwgR2V0UHJvY2Vzc0ltYWdlRmlsZU5hbWV7QSxXfS4KCUltcGxlbWVudCBHZXRQZXJmb3JtYW5jZUluZm8sIEdldFByb2Nlc3NNZW1vcnlJbmZvIG9uIHRvcCBvZgoJTnRRdWVyeUluZm9ybWF0aW9uUHJvY2VzcyBhbmQgR2V0V3NDaGFuZ2VzLCBRdWVyeVdvcmtpbmdTZXR7LEV4fSBvbgoJdG9wIG9mIE50UXVlcnlWaXJ0dWFsTWVtb3J5LgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJVGFuYWJlIEhpcm9zaGkgPGhpcm9rdW5fZGF5b21vbkBpbmZvc2Vlay50bz4KCUFkZGVkIHN0dWJzIGZvciBTZW5kSU1FTWVzc2FnZUV4W0EsV10uCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBidWcgY2F1c2VkIGJ5IGZyZWVpbmcgbWVtb3J5IHRvbyBzb29uIGluIHRoZSB0YWJsZSBjb2RlLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNSURMIGFkZHMgdHdvIHNldHMgb2YgY3VzdG9tIGRhdGEgdG8gdGhlIGxpYnJhcnk6IG9uZSBpcyBhIHRpbWVzdGFtcAoJYW5kIHRoZSBzZWNvbmQgaXMgTUlETCdzIHZlcnNpb24gbnVtYmVyLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUnUucmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGNvb3JkaW5hdGVzIG9mIGEgY291cGxlIG9mIGNvbnRyb2xzLgoKCSogaW5jbHVkZS9tc2lxdWVyeS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHRoZSBwcmV2aWV3IGZ1bmN0aW9ucy4KCgkqIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9kM2R4b2ZfcHJpdmF0ZS5oOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBTdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZGVkIHRpbWUgem9uZSBpbmZvcm1hdGlvbiBmb3IgU0FNVCAoU2FtYXJhIFN0YW5kYXJkIFRpbWUpLgoKCSogZGxscy9udGRsbC9zZWMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQUNMIGZpeGVzIGFuZCBjbGVhbnVwcy4KCgkqIGRsbHMvY2ZnbWdyMzIvY2ZnbWdyMzIuc3BlYywgZGxscy9jZmdtZ3IzMi9tYWluLmM6Cgk8QXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgc3R1YiBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9kaXN0aW5jdC5jLAoJICBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvcGFja2FnZS5jLAoJICBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jLAoJICBkbGxzL21zaS93aGVyZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCURvIG5vdCBjaGVjayBmb3Igbm9uIE5VTEwgcG9pbnRlciBiZWZvcmUgSGVhcEZyZWUnaW5nIGl0LiBJdCdzCglyZWR1bmRhbnQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIENvbnNvbGlkYXRlIG1vcmUgc3R1YiBjcmVhdGlvbiBkZXRhaWxzIGludG8gcmVnaXN0ZXJfaWZzdHViLgoJLSBSZXBsYWNlIHRoZSBjdXJyZW50IHdpbmVfbWFyc2hhbF9pZCBzdHJ1Y3R1cmUgd2l0aCBTVERPQkpSRUYgZm9yIHRoZQoJICBvbi10aGUtd2lyZSBmb3JtYXQuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sbS5oLCBpbmNsdWRlL2xtam9pbi5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBOZXRHZXRKb2luSW5mb3JtYXRpb24uCgoyMDA1LTAxLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL25scy91a3IubmxzLCBkbGxzL21sYW5nL21sYW5nLmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy91bmljb2RlL2NfMjE4NjYuYywKCSAgbGlicy91bmljb2RlL2NwbWFwLnBsLCBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jOgoJT2xlaCBSLiBOeWt5Zm9yY2h5biA8bmlja0BwdS5pZi51YT4KCVVrcmFpbmlhbiBjb2RlcGFnZSAyMTg2NiBhZGRlZCBhbmQgcmVzcGVjdGl2ZSBmaWxlcyBjb3JyZWN0ZWQuIFR3bwoJa2V5Ym9hcmQgbGF5b3V0cyAoZm9yIFVrcmFpbmlhbiBhbmQgUnVzc2lhbikgYWRkZWQuCgoJKiBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglIYWNrIHRvIGZpeCB0aGUgY29tcGlsZS4KCgkqIHdpbmRvd3Mvd2luLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjYXNlIHdoZW4gb25seSBoZWlnaHQgaXMgc2V0IHRvIENXX1VTRURFRkFVTFQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkZXYtY29kaW5nLnNnbWw6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglUcml2aWFsIGxhbmd1YWdlIGNvcnJlY3Rpb25zIHRvIHRoZSBXaW5lIERldmVsb3BlcidzIEd1aWRlIGNvZGluZwoJc2VjdGlvbi4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJUmVwb3NpdGlvbiBjYXJldCBhZnRlciB3aW5kb3cgcmVzaXplLgoKCSogZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQmVnaW4gc3VwcG9ydCBvZiBWZXJ0ZXhEZWNsYXJhdGlvbiBvbiB3aW5lZDNkIHVzaW5nIGQzZDggY29kZSBiYXNlCgkoaGFuZGxpbmcgZDNkOCBhbmQgZDNkOSBzcGVjcykuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBGSVhNRSBmb3IgZmlsZSB3aXRoIGJyb2tlbiBjb3VudGVycy4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJRG9uJ3QgcmVjYWxjdWxhdGUgbGluZSBpbmRleGVzIGlmIG51bWJlciBvZiBsaW5lcyBkb2Vzbid0IGNoYW5nZS4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3BnZXQgYW5kIHByb3BwdXQgZnVuY3Rpb24gYXR0cmlidXRlcy4KCUNsYXJpZnkgdGhlIG1lYW5pbmcgb2YgdGhlIEZLQ0NJQyBiaXQgZmllbGQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVF1aXRlIGEgZmV3IGZpeGVzOgoJLSBBbGxvdyBmb3IgdGhlIHF1ZWluZyBvZiBjdXN0b20gYWN0aW9ucyB0byB0cmlnZ2VyIG9uIHRoZQoJICBJbnN0YWxsRXhlY3V0ZSBvciBJbnN0YWxsRXhlY3V0ZUFnYWluIGFjdGlvbnMuCgktIGFsbG93IGZvciB0aGUgcXVlaW5nIG9mIGN1c3RvbSBhY3Rpb25zIHRvIHRyaWdnZXIgb24KCSAgSW5zdGFsbEZpbmFsaXplLgoJLSBQcm9wZXJseSBzZXQgdGhlIEN1c3RvbUFjdGlvbkRhdGEgcHJvcGVydHkgZm9yIHNhaWQgcXVldWVkIGFjdGlvbnMuCgktIEltcGxlbWVudCBSZWdpc3RlclByb2R1Y3QuCgktIEJlZ2lubmluZyBpbXBsZW1lbnRhdGlvbiBvZiBGb3JjZVJlYm9vdC4KCS0gRG9uJ3Qga2lsbCBpbnN0YWxsIGlmIGFuIGl0ZW0gdG8gYmUgZHVwbGljYXRlZCBkb2VzIG5vdCBleGlzdC4KCS0gV3JpdGUgb3V0IFNvdXJjZUxpc3QgYW5kIExhc3RVc2VkU291cmNlIGZvciByZXN1bWluZyBpbnN0YWxscy4KCS0gVXNlIHJlZ3N2cjMyIHRvIHJlZ2lzdGVyIHNlbGYgcmVnIGRsbHMuCgoJKiBkbGxzL3NoZG9jdncvbWlzYy5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBkZWZpbml0aW9uIGZvciBPcGVuVXJsLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgV0lOX0ludGVybmFsU2hvd093bmVkUG9wdXBzIGZ1bmN0aW9uLgoKCSogZGxscy90dHlkcnYvd25kLmM6CglTdG9yZSB0aGUgd2luZG93IGlkIGFzIGEgcHJvcGVydHkgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhlIFdORAoJc3RydWN0dXJlIGRpcmVjdGx5LgoJRmV0Y2ggdGhlIHVwZGF0ZSByZWdpb24gZnJvbSB0aGUgc2VydmVyIGFuZCByZW1vdmUgYSBsb3Qgb2Ygb2Jzb2xldGUKCWNvZGUuCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVJldHVybiBhIGZpeGVkIGZyZXF1ZW5jeSBvZiAxMTkzMTgyIEh6IGZvciB0aGUgUGVyZm9ybWFuY2UgQ291bnRlci4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFRyYW5zYWN0TmFtZWRQaXBlIGZvciB0aGUgbm9uLW92ZXJsYXBwZWQgY2FzZS4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9hdGxfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3Igc29tZSBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW5pdGlhbGl6ZSBwcHYgcG9pbnRlciBpbiBDbGllbnRJZGVudGl0eV9RdWVyeUludGVyZmFjZSB0byBOVUxMIGFzCgkgIGFwcHMgZGVwZW5kIG9uIHRoaXMuCgktIERvbid0IHJlbGVhc2UgSVJwY1Byb3h5QnVmZmVyIG9uIGlmcHJveHkgZGVzdHJ1Y3Rpb24gLSB0aGUgY2FsbGVyCgkgIHdpbGwgZG8gdGhpcyBmb3IgdXMuCgktIE1ha2UgZmluZF9wcm94eV9tYW5hZ2VyIGFkZCBhIHJlZmVyZW5jZSB0byB0aGUgcHJveHkgbWFuYWdlciBhbmQKCSAgbWFrZSBwcm94eV9tYW5hZ2VyX2NvbnN0cnVjdCByZXR1cm4gYW4gb2JqZWN0IHdpdGggYSB2YWxpZAoJICByZWYtY291bnQuCgktIFJlbW92ZSBzdHJheSBub3Qgb3BlcmF0b3IgdG8gZml4IGEgbWVtb3J5IGxlYWsgLyBjcmFzaCBpbgoJICBwcm94eV9tYW5hZ2VyX2Rlc3Ryb3kuCgktIE1vcmUgZGVidWcgbWVzc2FnZXMsIGVzcGVjaWFsbHkgb24gZXJyb3JzLgoJLSBGaXggcmVmLWNvdW50IGxlYWsgaW4gdGhlIENsYXNzIEZhY3RvcnkgcHJveHkuCgktIEFkZCBhIHRlc3QgY2FzZSBmb3IgSUNsYXNzRmFjdG9yeV9DcmVhdGVJbnN0YW5jZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOiBQYXVsIHZhbiBTY2hheWNrIDxwb2xsZWtlQGdtYWlsLmNvbT4KCVJlc2V0IHRoZSB0eXBlIGRyb3Bkb3duIHdoZW4gc2VsZWN0aW5nIGFub3RoZXIgZHJpdmUuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSB0ZXN0cyBvbiBXaW5NRS4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBdm9pZCBjb2RlIGR1cGxpY2F0aW9uIGJ5IG1vdmluZyBoYW5kbGUgbG9va3VwIGludG8gZ2V0X2FsZ2lkX2luZm8uCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmM6CglKb3JpcyBIdWl6ZXIgPGpvcmlzaHVpemVyQHBsYW5ldC5ubD4KCUdldCByaWQgb2Ygc29tZSBUUkFDRSguLi4sIFRoaXMtPnJlc291cmNlLnJlZikuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhZCBzbWFsbCBzdHJpbmdzIG91dCB0byBlaWdodCBieXRlcy4KCUZpeCAnaGFzIGRlZmF1bHQgdmFsdWVzJyBmbGFnLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIGEgdmVyeSBiYXNpYyBmaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBNc2lDb25maWd1cmVQcm9kdWN0RXhXIGZvcgoJbXNpZXhlYyAvQCAgd2hlbiBydW4gYXMgYSByZWJvb3QuCglBbHNvIGFkZCBhIG51bWJlciBvZiBuZXcgc3R1YnMgZm9yIHRoZSBvZmZpY2UgeHAgYW5kIDJrMyBpbnN0YWxsIGFuZAoJc3RhcnR1cCBwcm9jZXNzLgoKCSogaW5jbHVkZS9tc2kuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgdGhlIFVTRVJJTkZPU1RBVEUgZW51bWVyYXRpb24uCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgc3R1YiBpbXBsZW1lbnRhdGlvbnMuCgoyMDA1LTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21zZzE2LmMsIGluY2x1ZGUvd2lucG9zLmgsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglNb3ZlZCBEZWZXaW5kb3dQcm9jMTYgdG8gbXNnMTYuYyBhbmQgY2xlYW5lZCB1cCBhIGZldyByZWxhdGVkIHRoaW5ncy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBpbmNsdWRlL3dpbmluZXQuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGFuZCB0ZXN0IEludGVybmV0VGltZXtGcm9tLFRvfVN5c3RlbVRpbWV7QSxXfS4KCUNvcnJlY3Qgc3BlbGxpbmcgaW4gSW50ZXJuZXRDaGVja0Nvbm5lY3Rpb25BLgoKCSogZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q5L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS9kM2Q5dHlwZXMuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBIYW5kbGUgZmFpbHVyZXMgdG8gYWxsb2NhdGUgc3RvcmFnZSBtb3JlIGdyYWNlZnVsbHkuCgktIE9ubHkgcHJvdG90eXBlIHRoZSBpbnRlcmZhY2VzIHdoaWNoIGFyZSBzdWJjbGFzc2VkIChJIG92ZXJkaWQgaXQKCSAgbGFzdCB0aW1lISkuCgktIEltcGxlbWVudCBHZXQvU2V0IFRleHR1cmUgYW5kIEdldEJhY2tCdWZmZXIsIHBsdXMgZGV2aWNlJ3MKCSAgR2V0RGlzcGxheU1vZGUgLyBHZXREZXZpY2VDYXBzLgoJLSBNYWtlIHNvbWUgb2YgdGhlIGQzZDkgc2tlbGV0b24gY29kZSBpc3N1ZSBmaXhtZSdzIHRvIGhpZ2hsaWdodCBjb2RlCgkgIHdoaWNoIGhhc24ndCBiZWVuIG1pZ3JhdGVkIHlldC4KCS0gQ29ycmVjdCB0aGUgZDNkOSBoZWFkZXJzIGZvciBEM0RTVVJGQUNFX0RFU0Mgd2hpY2ggY2F1c2VkIHN0YWNrCgkgIGNvcnJ1cHRpb24gaW4gZGVtb3MuCgoJKiBpbmNsdWRlL3dpbnN2Yy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVmaW5pdGlvbnMgZm9yIHNlc3Npb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL21wci9uZXRzcGkuaCwgZGxscy9tcHIvbnBzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvbmV0c3BpLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglNYWtlIG5ldHNwaS5oIHByaXZhdGUsIGFzIHNvbWUgb2YgaXRzIGRlY2xhcmF0aW9ucyBjb25mbGljdCB3aXRoCglucGFwaS5oLiAgU3BvdHRlZCBieSBQYXVsIFZyaWVucy4KCgkqIGRsbHMvc2V0dXBhcGkvcXVldWUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcHkgdGhlIGltcGxlbWVudGF0aW9uIGZyb20gU2V0dXBEZWZhdWx0UXVldWVDYWxsYmFja0EgYW5kIG1ha2UgaXQKCVcuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIG1pc3NpbmcgYnJlYWsgdG8gZml4IHR5cGVpbmZvIHZlcnNpb24gcmVncmVzc2lvbi4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIFBhdGhVbkV4cGFuZEVudlN0cmluZ3NTSFJlZ0VudW1VU1ZhbHVle0EsV30sCglTSFJlZ0NyZWF0ZVVTS2V5e0EsV30sIFNIUmVnRGVsZXRlRW1wdHlVU0tleXtBLFd9LAoJU0hSZWdEZWxldGVVU1ZhbHVle0EsV30sIFNIUmVnRW51bVVTVmFsdWV7QSxXfS4KCjIwMDUtMDEtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS9ub25jbGllbnQuaCwgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW5wb3MuYzoKCUdldCByaWQgb2Ygbm9uY2xpZW50LmggYW5kIG9mIHRoZSBjb3JyZXNwb25kaW5nIGV4cG9ydGVkIGZ1bmN0aW9ucyBpbgoJdXNlcjMyLnNwZWMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglXaGVuIHBhcnNpbmcgYW4gaGV4L29jdCBpbnRlZ2VyIHZhbHVlLCBjb3B5IHZhbHVlIHZlcmJhdGltIGluIFZBUklBTlQsCglyYXRoZXIgdGhhbiBhIG5lZ2F0ZWQgdmFsdWUuIEFkZCB0ZXN0IGNhc2UgZm9yIHRoaXMgYmVoYXZpb3IuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQSBzbWFsbCBzcGVsbGluZyBmaXggYW5kIGEgc21hbGwgdXBkYXRlICh0aGFuayB0byBBbmRyZWFzIE1vaHIpLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgY2xzaWQgbWVtYmVyIHRvIHRoZSBtYXJzaGFsZXIgY2xzaWQgdG8gZml4IGN1c3RvbQoJbWFyc2hhbGluZy4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJTWFrZSBsb25nIGxpbmVzIGJlaGF2ZSBuaWNlbHkuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvbW91c2UuYywKCSAgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIHdpbmRvd3MvZGVmd25kLmM6CglBdm9pZCBtb3N0IHJlZmVyZW5jZXMgdG8gdGhlIGludGVybmFscyBvZiB0aGUgV05EIHN0cnVjdHVyZSBieSBwYXNzaW5nCglhcm91bmQgYW4geDExZHJ2X3dpbl9kYXRhIHBvaW50ZXIgaW5zdGVhZC4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglSZW1vdmVkIGEgY291cGxlIG9mIHVubmVjZXNzYXJ5IGNhbGxzIHRvIFdJTl9TdXNwZW5kV25kc0xvY2suCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVzZSBhIHJlZ2lzdHJ5IGtleSBmb3IgY29weWluZywgdGhhdCdzIGtub3duIG9uIGV2ZXJ5IHN5c3RlbS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9Gci5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0ZyLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Gci5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCVVwZGF0ZWQgRnJlbmNoIHJlc291cmNlcy4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS92ZncuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIERyYXdEaWJDaGFuZ2VQYWxldHRlLCBEcmF3RGliR2V0QnVmZmVyLAoJRHJhd0RpYlRpbWUsIElDU2VxQ29tcHJlc3NGcmFtZXssRW5kLFN0YXJ0fS4KCUZvcndhcmQgR2V0T3BlbkZpbGVOYW1lUHJldmlldyB0byBHZXRPcGVuRmlsZU5hbWVQcmV2aWV3QS4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hhbmdlIHRoZSBvcmRlciBvZiBTcmMgYW5kIERzdCBpbiBDb3B5S2V5IGNhbGxzL2Z1bmN0aW9ucy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFNtYWxsIG9wdGltaXphdGlvbiBpbiBXSU5QT1NfR2V0V2luT2Zmc2V0LgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCVJlbW92ZWQgdW51c2VkIEZvcmNlV2luZG93UmFpc2UgZnVuY3Rpb24uCgoJKiBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC92b2x1bWUuYywKCSAgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEFkZCB0ZXh0dXJlIHN1cHBvcnQgZm9yIGFsbCB0aGUgdGV4dHVyZSB0eXBlcyBmb3IgZDNkOS0+d2luZWQzZC4KCS0gQWRkIHByb3RvdHlwZXMgZm9yIHRoZSBDT00gaW50ZXJmYWNlcy4KCS0gRml4IHNvbWUgaW5jb3JyZWN0IHR5cGVzIGZyb20gdGhlIGxhc3QgcGF0Y2guCgoJKiBkbGxzL3dpbm1tL3dpbm1tX0RlLnJjOiBLbGVtZW5zIEZyaWVkbCA8a2xlbWVuc19mcmllZGxAZ214Lm5ldD4KCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9tcHIvbXByX0RlLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGUgR2VybWFuIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgZGVmaW5pdGlvbnMgb2YgVExTMVBSRiBhbGdvcml0aG0gaWRlbnRpZmllcnMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglVc2Ugc3dpdGNoIHN0YXRlbWVudHMgaW5zdGVhZCBvZiBpZi1jYXNjYWRlcy4gQXZvaWQgd2FybmluZ3MuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTW92ZWQgSE1BQyBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgdG8KCWluaXRfL2ZpbmFsaXplX2hhc2guCglSZW1vdmVkIHRoZSByZWR1bmRhbnQgcEtleUNvbnRhaW5lciBmdW5jdGlvbiBwYXJhbWV0ZXIgZnJvbQoJaW5pdF9oYXNoLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgVlRfVkFSSUFOVCBzdXBwb3J0LgoJRml4IGZvciB0aGUgY2FzZSB3aGVuIHRoZXJlIGlzIG5vIGhlbHBzdHJpbmdkbGwuCglGaXggZm9yIHBhcmFtZXRlciBhcnJheXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGF0aW9ucyBmb3IgU2VsZlJlZ01vZHVsZXMgYW5kIFB1Ymxpc2hGZWF0dXJlcy4KCVNldCBkZWZhdWx0IEFDVElPTiBwcm9wZXJ0eSBmb3IgSW5zdGFsbC4KCURlZm9ybWF0IG1vcmUgdGhhbiBKVVNUIHByb3BlcnRpZXMgcHJvcGVybHkuIEFsbG93cyBmb3IgRmlsZXMgYW5kCglDb21wb25lbnQgcGF0aHMgaW4gZGVmb3JtYXQuCglQcm9wZXJseSBkZWZvcm1hdCBhIExhdW5jaENvbmRpdGlvbiBmYWlsdXJlIGRpYWxvZyBib3guCglSZXNvbHZlIGFuZCBzYXZlIHJlZ2lzdHJ5IEtleXBhdGhzLgoJV3JpdGUgdGhlIEZlYXR1cmVzIHB1Ymxpc2hlZCBrZXlzIG1vcmUgY29ycmVjdGx5LiBTdGlsbCBzb21lCglwcm9ibGVtcy4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRmlyc3QgcGFzcyBpbXBsZW1lbnQgaW9uIG9mIE1zaVF1ZXJ5UHJvZHVjdFN0YXRlW0EvV10gYXMgd2VsbCBhcyBhIGZldwoJZml4ZXMgZm9yIE1zaUdldENvbXBvbmVudFBhdGguCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGFibGUgbWFyc2hhbGluZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglJbmNsdWRlIG5ldyB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJlbW92ZSB0aGUgY2hlY2tpbmcvc2V0dGluZyBvZiB0aGUgZGVmYXVsdHMgaW4gVFJBQ0tCQVJfQ3JlYXRlLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmVtb3ZlIG5lZWRsZXNzIGNoZWNrIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHBhZ2VyLgoKMjAwNS0wMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9hc3luYy5oLAoJICBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9hc3luYy5oLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuaCwgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc2lnbmFsLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZ290IHJpZCBvZiBpbmNsdWRlL2FzeW5jLmgKCS0gZml4ZWQgc29tZSBvdmVybGFwcGVkIGlzc3VlcyBpbiBzb2NrZXQgaGFuZGxpbmcKCS0gbW92ZWQga2VybmVsMzIuQ2FuY2VsSW8gaW1wbGVtZW50YXRpb24gdG8gbnRkbGwKCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCUNyZXN0ZXogTGVvbmFyZCA8Y2xlb25hcmRAZ28ucm8+CglGaXggYWRkIGFwcGxpY2F0aW9uIChtZW1vcnkgZXJyb3IpLgoJRml4IGFwcGx5IGJ1dHRvbiBsaWdodGluZyB1cCBpbiBhdWRpbyB0YWIuCglGaXggdmlkZW8gdGFiKGNyYXNoIHdoZW4gY2hlY2tpbmcgZGVza3RvcCwgYXBwbHkgYnV0dG9uIG5vdCBsaWdodGluZwoJdXAuCglEZWFsIHdpdGggaW52YWxpZCBEZXNrdG9wIHJlZ2lzdHJ5IHZhbHVlIGluIHZpZGVvIHRhYi4KCUZpeCBhcHBseSBidXR0b24gaW4gbGlicmFyaWVzIHRhYi4KCUNsZWFuZWQgdXAgYW5kIGRvY3VtZW50ZWQgYWxsIHRoZSBjb252ZXJzaW9ucyBpbiB0aGUgbGlicmFyaWVzIHRhYi4KCgkqIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9pdHNzLnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgTU9EVUxFTkFNRSBwcmVmaXggZnJvbQoJRGxse0dldENsYXNzT2JqZWN0LFJlZ2lzdGVyU2VydmVyLENhblVubG9hZE5vd30gZnVuY3Rpb25zLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgQlNUUiBkZWZhdWx0IHZhbHVlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIG9ic29sZXRlIHN0cnVjdHMsIHJlYXJyYW5nZSB0aGluZ3MgdG8gZ3JvdXAgdGhlIHN0cnVjdHMKCSAgdG9nZXRoZXIgYW5kIHRvIGdyb3VwIHNpbWlsYXIgZnVuY3Rpb25zLgoJLSBEb2N1bWVudCB0aHJlYWQtc2FmZXR5IG9mIG1lbWJlcnMgb2Ygc3RydWN0cy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgcHJveHkgc2h1dGRvd24gdGVzdCBzdWNjZWVkIGJ5IHJlbGVhc2luZyB0aGUgY2hhbm5lbCBvbgoJZGlzY29ubmVjdC4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW50YWIuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglGaXggWDExIGV2ZW50IHRpbWluZyBzbyB0aGF0IHdlIGNvcnJlY3RseSBjb3JyZWxhdGUgWDExIHRpbWluZyBhbmQKCVdpbmUgdGltaW5nIGFuZCBkeW5hbWljYWxseSBhZGp1c3QgaXQgYXMgd2UgZ28uCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFjdHVhbGx5IHN0YXJ0IG9uIGFuIGltcGxlbWVudGlvbiBmb3IgTXNpR2V0Q29tcG9uZW50UGF0aFcgdGhhdCBzaG91bGQKCWhhbmRsZSBhbGwga2V5cGF0aHMgdGhhdCBhcmUgZmlsZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBkb2N1bWVudGF0aW9uIGZvciBtb3N0IENvKiBmdW5jdGlvbnMuCgktIE1vdmUgc2V2ZXJhbCBmdW5jdGlvbnMgaW50byBkaWZmZXJlbnQgZmlsZXMgdG8gZ3JvdXAgdGhlbSB3aXRoCgkgIHNpbWlsYXIgZnVuY3Rpb25zLgoKCSogZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvc3ludGguYywKCSAgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9kcG5ldC9jbGllbnQuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBVc2UgSW50ZXJsb2NrZWQqIGluc3RlYWQgb2YgKysvLS0gaW4gQWRkUmVmL1JlbGVhc2UuCgktIFVzZSBvbmx5IHN0b3JlZCByZXN1bHQgb2YgSW50ZXJsb2NrZWQqIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBFeHBhbmQgVFJBQ0VzIHRvIGRpc3BsYXkgdGhlIHJlZiBjb3VudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzogSm9yaXMgSHVpemVyIDxqb3Jpc2h1aXplckBwbGFuZXQubmw+CgktIGFkZCBmaWxlX29wZXJhdGlvbl9kZWxldGUKCS0gYWRkIGZpbGVfb3BlcmF0aW9uX2NoZWNrRmxhZ3MKCS0gdXNlIHRoZXNlIGluIFNIRmlsZU9wZXJhdGlvblcgcmVwbGFjaW5nIGlubGluZSBjb2RlCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS93aW5zdmMuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCwgYWRkIGFuZCByZWFycmFuZ2Ugd2luc3ZjLmggZGVjbGFyYXRpb25zLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUluaXRpYWxpemUgcmMgaW4gY3JlYXRlX2NvbXBvbmVudF9kaXJlY3RvcnkoKS4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgaW50ZXJmYWNlIHB0cnMgaW5jbHVkaW5nIHRoZSBzcGVjaWFsIGNhc2VzIGZvcgoJSVVua25vd24gYW5kIElEaXNwYXRjaC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldEZpbGVOYW1lMzFXIHNob3VsZCBjYWxsIHVuaWNvZGUgdmVyc2lvbiBvZiBGRDMxX0FsbG9jUHJpdmF0ZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CglDcmVhdGVkIHVuaXQgdGVzdCBmb3IgU1BJX3tHRVQsU0VUfU1JTklNSVpFRE1FVFJJQ1MuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBJbXBsZW1lbnRlZCBTUElfR0VUTUlOSU1JWkVETUVUUklDUyBjYWxjdWxhdGVkIGZyb20gdmFsdWVzIHJldHVybmVkCgkgIGJ5IEdldFN5c3RlbU1ldHJpY3MuCgktIEltcGxlbWVudGVkIFNQSV9TRVRNSU5JTUlaRURNRVRSSUNTLiBEZXRlcm1pbmVkIHRoYXQgdGhlIHZhbHVlcyBzZXQKCSAgaGVyZSBhcmUgdmFsaWQgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24gb25seSBhbmQgd2lsbCBub3QgcGVyc2lzdAoJICBhY3Jvc3MgcmVib290cy4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBUaGUgYXBhcnRtZW50IHJlZmVyZW5jZSBzaG91bGQgYmUgaGVsZCB3aGlsZSB0aGUgc3R1YiBtYW5hZ2VyCgkgIHJlZmVyZW5jZSBpcyBoZWxkLgoJLSBGaXggc2FtZSBhcGFydG1lbnQtdW5tYXJzaGFsIGRldGVjdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSB0aGUgTFZDRk1UX3tMRUZULFJJR0hULENFTlRFUn0gZW51bWVyYXRpb24gZmxhZ3MgcHJvcGVybHkuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIGludDIxX2lvY3RsIC0gZ2V0IGRldmljZSBkYXRhLSwgc2V0IHRoZSAiaXMgY29uc29sZSIgYml0cyBpZiB0aGUKCWRldmljZSBoYW5kbGUgaXMgYSB0dHkgb3IgYSBwcm9wZXIgY29uc29sZSBpbyBoYW5kbGUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhbGwgc2VydmljZSBzdHVicyB0b2dldGhlciwgbWFrZSB0aGVtIGNvbnNpc3RlbnQuCgoJKiBkbGxzL2RtdXNpYy9idWZmZXIuYywgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9wb3J0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsCgkgIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywKCSAgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gVXNlIEludGVybG9ja2VkKiBpbnN0ZWFkIG9mICsrLy0tIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBVc2Ugb25seSBzdG9yZWQgcmVzdWx0IG9mIEludGVybG9ja2VkKiBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gRXhwYW5kIFRSQUNFcyB0byBkaXNwbGF5IHRoZSByZWYgY291bnQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBXcml0ZUluaVZhbHVlcyBhY3Rpb24uCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IHVzZSB0aGUgcGlwZSBjYWNoaW5nIGNvZGUgYmVjYXVzZSBpdCBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IGF0CgkgIHRoZSBtb21lbnQuCgktIEFsd2F5cyB3cml0ZSBkaXNjb25uZWN0IHJlcGx5IHBhY2tldCwgZXZlbiBpbiBmYWlsdXJlIGNhc2VzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvc3B5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdNX0dFVE9CSkVDVCBkZWZpbml0aW9uLCByZW1vdmUgV01fT1RIRVJXSU5ET1dDUkVBVEVEIGRlZmluZS4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VnZ2VzdCB0ZXN0aW5nIHBhdGNoZXMgaW4gYSBnZW50bGVyIHdheS4KCUVuY291cmFnZSBwZW9wbGUgdG8gc3VibWl0IHRlc3RzIHdpdGggdGhlaXIgcGF0Y2hlcyBhcyB3ZWxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmM6IEtsZW1lbnMgRnJpZWRsIDxrbGVtZW5zX2ZyaWVkbEBnbXgubmV0PgoJVXBkYXRlIEdlcm1hbiBsYW5ndWFnZSBmaWxlLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFudXAgc2VydmljZSBoYW5kbGVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW5jcmVhc2UgdGhlIHJlcXVpcmVkIHJlY3RhbmdsZSBzaXplIGJlZm9yZSBkcmF3aW5nIGJpZyArLy0uCgoJKiBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglGaXggQlNfUEFUVEVSTiBicnVzaGVzIGluIG1mZHJ2LiAgVW4tY29tbWVudCB0aGUgY29ycmVzcG9uZGluZyB0ZXN0LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZXR1cm4gQ0xBU1NfRV9OT0FHR1JFR0FUSU9OIGlmIHBVbmtPdXRlciBpcyBub24tbnVsbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ3VzdG9tIGFjdGlvbnMgY2FuIGhhdmUgbnVsbCBpbiB0aGVpciB0YXJnZXQgcGFyYW1ldGVycywgaGFuZGxlIHRoYXQKCXdpdGhvdXQgY3Jhc2hpbmcuIEFsc28gZW5hYmxlIGRlZm9ybWF0aW5nIG9mIGxpbmVzIGdyZWF0ZXIgdGhhbiAyNTYKCWNoYXJhY3RlcnMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRGVzdHJveSBzdHVicyBvbiBhcGFydG1lbnQgc2h1dGRvd24uCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL3JwY2RjZS5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUZpeCBwcm90b3R5cGVzIGFjY29yZGluZyB0byBQU0RLLgoKCSogZGxscy9vbGUzMi9ycGMuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRm9yY2UgY29udGV4dCBzd2l0Y2ggb24gY2hhbmJ1ZiBkaXNjb25uZWN0IHRvIGF2b2lkIGEgcmFjZSBpbiB0aGUgdGVzdAoJc3VpdGUuCgoJKiBpbmNsdWRlL3dpbmUvbGlzdC5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBMSVNUX0ZPUl9FQUNIX0VOVFJZIGxpc3QgaGVscGVyLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKMjAwNS0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglDb0luaXRpYWxpemUoRXgpIHNob3VsZCByZXR1cm4gU19GQUxTRSB3aGVuIENPTSBpcyBhbHJlYWR5IGluaXRpYWxpemVkCglmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgd2luZG93cy9kY2UuYzoKCVVzZSB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIFNhdmVEQy9SZXN0b3JlREMgaW5zdGVhZCBvZiBTZXREQ1N0YXRlMTYuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBVc2UgSW50ZXJsb2NrZWQqIGluc3RlYWQgb2YgKysvLS0gaW4gQWRkUmVmL1JlbGVhc2UuCgktIFVzZSBvbmx5IHN0b3JlZCByZXN1bHQgb2YgSW50ZXJsb2NrZWQqIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBFeHBhbmQgVFJBQ0VzIHRvIGRpc3BsYXkgdGhlIHJlZiBjb3VudC4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdW1vbi5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFVzZSBvbmx5IHN0b3JlZCByZXN1bHQgb2YgSW50ZXJsb2NrZWQqIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBFeHBhbmQgVFJBQ0VzIHRvIGRpc3BsYXkgdGhlIHJlZiBjb3VudC4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVXNlIG9ubHkgc3RvcmVkIHJlc3VsdCBvZiBJbnRlcmxvY2tlZCogaW4gQWRkUmVmL1JlbGVhc2UuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9jdW1lbnQgQ29TZXRTdGF0ZSAmIENvR2V0U3RhdGUuCgktIFJld3JpdGUgdGhlbSB0byBvbmx5IHJldHJpZXZlIFRMUyBpbmZvIG9uY2UuCgktIFJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIENPTV9DdXJyZW50SW5mby4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgd2luZV9tYXJzaGFsX2RhdGE6IGl0IGlzIHVubmVlZGVkIGFuZCB0aGVyZSBpcyBubyBlcXVpdmFsZW50IGluCglTVERPQkpSRUYuCgoJKiBkbGxzL3NobHdhcGkvYXNzb2MuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIHVzZSBvbmx5IHN0b3JlZCByZXN1bHQgb2YgSW50ZXJsb2NrZWQqIGluIEFkZFJlZi9SZWxlYXNlCgktIGV4cGFuZCBUUkFDRXMgdG8gZGlzcGxheSB0aGUgcmVmIGNvdW50CgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gRml4IGxvZ2ljIGluIFN0cmVhbV9mblJlbGVhc2UsIHJlZmNvdW50IHNob3VsZCBiZSBkZWNyZW1lbnRlZCBiZWZvcmUKCSAgdGhlIHRlc3QgZm9yIDAuCgktIFVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIFN0cmVhbV9mblJlbGVhc2UgLgoJLSBTdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHRoaXMgaW4gdGhlCgkgIFRSQUNFLgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvdHlwZWxpYi5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgdHlwZSBlbmNvZGluZy4gIChJbnRlcmZhY2UgcHRycyBzdGlsbCBub3QgdGhlcmUgeWV0KS4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZvcmNlIGNyZWF0aW9uIG9mIHRocmVhZCBxdWV1ZSB0byBzdG9wIFBvc3RUaHJlYWRNZXNzYWdlIGZyb20KCSAgZmFpbGluZy4KCS0gUmVtb3ZlIGluY29ycmVjdCBjb21tZW50LgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSBvZiBib3JkZXIgbWV0cmljIHRvIHJlZmVyZW5jZSB0aGUKCSAgcmVnaXN0cnkuIFRlc3Rpbmcgb24gV2luOTgvV2luWFAgc2hvd2VkIHRoYXQgcmVnYXJkbGVzcyBvZiB0aGUKCSAgIkJvcmRlcldpZHRoIiB2YWx1ZSBDTV9De1gsWX1CT1JERVIgYWx3YXlzIHJldHVybnMgMS4KCS0gUG9pbnQgU1BJX1NFVEJPUkRFUiB0byAiQm9yZGVyV2lkdGgiIHVuZGVyICJIS0NVXENvbnRyb2wKCSAgUGFuZWxcRGVza3RvcFxXaW5kb3dNZXRyaWNzIiBpbnN0ZWFkIG9mICJIS0NVXENvbnRyb2wgUGFuZWxcRGVza3RvcCIKCSAgdG8gbWFrZSBpdCBtYXRjaCBXaW5kb3dzLgoKCSogaW5jbHVkZS93aW5lL2xpc3QuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIExJU1RfRk9SX0VBQ0hfU0FGRSAtIGEgbGlzdCBpdGVyYXRpb24gbWFjcm8gdGhhdCBpcyBzYWZlIGFnYWluc3QKCXJlbW92YWwuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUaGUgd2F5IGFwYXJ0bWVudHMgYXJlIHVzZWQgaGFzIGNoYW5nZWQsIHNvIGZpeCB1cCB0aGUgaGFja3MgaW4gdGhlCglSUEMgY29kZSB0aGF0IGhhdmVuJ3QgeWV0IGJlZW4gdXBkYXRlZC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgTVRBIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzbyB0aGF0IHByb3hpZXMgYW5kIG90aGVyIHJlc291cmNlcwoJICBhcmUgZnJlZWQgYXQgdGhlIHByb3BlciB0aW1lLgoJLSBDaGFuZ2VkL3JlbW92ZWQgc29tZSBpbmNvcnJlY3QgY29tbWVudHMgcmVnYXJkaW5nIGFwYXJ0bWVudHMuCgoJKiBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoyMDA1LTAxLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDUwMTExLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTAxLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglHaXZlIGEgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciB3aGVuIGEgRExMIGZhaWxzIHRvIGluaXRpYWxpemUgZHVyaW5nCglzdGFydHVwLgoKCSogZGxscy91c2VyL21lbnUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgQWx0IHByZXNzL3JlbGVhc2UgdGVzdCBhY3R1YWxseSBwYXNzIGZvciBub3QgbWFuYWdlZCB3aW5kb3dzLgoKCSogZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9tc2kvbXNpLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IFdtQ3JlYXRlQ3VzdG9tRGlhbG9nU2VxIG1lc3NhZ2Ugc2VxdWVuY2UgZm9yIDI1NiBjb2xvciBtb2RlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUNvcnJlY3RlZCB0ZXN0aW5nIGZvciBtdWx0aXRocmVhZGVkIChiYXNlZCB1cG9uIG9ic2VydmF0aW9ucyBieSBQYXVsCglWcmllbnMsIENocmlzdGlhbiBDb3N0YSBhbmQgUm9iZXJ0IFNoZWFybWFuKS4KCUFkZGVkIFRSQUNFIGZvciBpbnZlc3RpZ2F0aW5nIE9YSUQgZXJyb3JzLgoKCSogZGxscy9xdWFydHovcmVnc3ZyLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGQgYW4gZXh0cmEgY2xhc3MgdG8gcmVnaXN0ZXIuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLCBzZXJ2ZXIvd2luZG93LmM6CglEZXNrdG9wIHdpbmRvdyBpcyByZXBhaW50ZWQgb24gV01fRVJBU0VCS0dORCwgaXQgbXVzdCBuZXZlciBnZXQgYQoJV01fUEFJTlQuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBXYXJuaW5nIGZpeC4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJUmVhZC93cml0ZSBjb21wbGV0aW9uIGZ1bmN0aW9ucyBnZXQgV2luZG93cyBlcnJvciBjb2Rlcywgbm90IE5UIHN0YXR1cwoJY29kZXMuCgoJKiBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgd2luZG93cy9jbGlwYm9hcmQuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIFctPkEgY2FsbHMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgltZW1pY21wVygpIGNvdW50IGFyZSBXQ0hBUidzIG5vdCBieXRlcy4gRml4ZXMgb3BlbmluZyBDT04gZGV2aWNlLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3RzIGFuZCBmaXhlcyBmb3IgU3RnT3BlblN0b3JhZ2UuCgoJKiBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVdhaXQgdW50aWwgdGhlIHRocmVhZCBoYXMgY3JlYXRlZCBpdHMgbWVzc2FnZSBxdWV1ZSBiZWZvcmUgcG9zdGluZyBhCgltZXNzYWdlIG90aGVyd2lzZSBpdCB3aWxsIGJlIGxvc3QuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3dwcC9wcmVwcm9jLmM6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIGRlY2xhcmF0aW9ucyBpbiBzb21lIGhlYWRlcnMuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRlc3RzIGZvciB0cnlpbmcgdG8gdW5tYXJzaGFsIGZyb20gYSBiYWQgc3RyZWFtIGFuZCBmb3IgdGVzdGluZwoJd2hhdCBpbnRlcmZhY2VzIHRoZSBwcm94eSBleHBvc2VzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9jdW1lbnQgaG93IHRocmVhZC1zYWZldHkgaXMgZW5zdXJlZCBmb3IgZWFjaCBtZW1iZXIgb2YgdGhlCgkgIHN0dWJfbWFuYWdlciBhbmQgaWZzdHViIHN0cnVjdHMuCgktIE1ha2Ugc3R1Yl9tYW5hZ2VyIHJlZiBjb3VudGVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGdldCBmcmVlZCB3aGlsc3QKCSAgaXQgaXMgc3RpbGwgYmVpbmcgdXNlZC4KCS0gaWZzdHVicyBhcmUgbm93IGZyZWVkIG9ubHkgd2hlbiB0aGUgY29udHJvbGxpbmcgc3R1Yl9tYW5hZ2VyIGlzIGZyZWVkLgoJLSBSZW5hbWUgc3R1Yl9tYW5hZ2VyX3JlZi91bnJlZiB0byBzdHViX21hbmFnZXJfZXh0X2FkZHJlZi9yZWxlYXNlCgkgIHJlc3BlY3RpdmVseSBhbmQgbWFrZSB0aGVuIHRha2UgYW4gdW5zaWduZWQgbG9uZyB0byBwcmV2ZW50CgkgIG1hbGljaW91cyBjYWxsZXJzIGZyb20gcGFzc2luZyBpbiBhIG5lZ2F0aXZlIHZhbHVlIGFuZCBjb3JydXB0aW5nCgkgIHRoZSByZWYgY291bnQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgdGVzdHMgZm9yIGtleWJvYXJkL21lbnUgYWN0aXZhdGlvbiBiZWhhdmlvdXIsIG1ha2UgdGhlIHRlc3RzCglwYXNzIHVuZGVyIFdpbmUuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgYW5kIGZpeCBhIGZldyBwcm9ibGVtcyB3aXRoIE9MRSBzdG9yYWdlIHN0cmVhbXMuCgoJKiBkb2N1bWVudGF0aW9uL29sZS5zZ21sOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglNaW5vciB0eXBvIGNvcnJlY3Rpb24gYW5kIHRlcm0gZXhwYW5zaW9uIGNoYW5nZXMuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgdXNlIGFuIGludmFsaWQgZmlsZSBoYW5kbGUuIEluIHRoaXMgY2FzZSBpbnZhbGlkIGZpbGUgaGFuZGxlCgkgIG1lYW5zIHRoYXQgdGhlIGZpbGUgaGFzbid0IHlldCBiZWVuIGNyZWF0ZWQuCgktIE9ubHkgY2FsbCBHZXRGaWxlVGltZSB3aGVuIHdlIGFyZSBiZWluZyBsb2dnZWQgZm9yIGEgdGlueQoJICBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4KCS0gUmVpbmRlbnQgdG8gNCBzcGFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgRHJhd0ZvY3VzUmVjdCBmdW5jdGlvbiB0byBkcmF3IHRoZSBmb2N1cyByZWN0LCBpbnN0ZWFkIG9mIGEKCWJyb2tlbiBob21lLWJyZXdlZCBzb2x1dGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc29ydCB0aGUgY2hpbGRyZW4gb2YgTXkgQ29tcHV0ZXIgaW4gc2hlbGwgYnJvd3NlIGZvciBmb2xkZXIKCWRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaGlnaGxpZ2h0IHRleHQgaW4gbm9uLVRWU19UUkFDS1NFTEVDVCBtb2RlLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBkbGwgaGFuZGxpbmcuCglUYWtlIERMTF9QQVRIIGFuZCBMSUJSQVJJRVMgaW50byBhY2NvdW50LgoJU2ltcGxpZnkgYSBjaGVjayBmb3IgcGF0aHMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGEgJy8nLgoKCSogdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgaGVscCogYXR0cmlidXRlcyBmb3IgdHlwZWluZm9zIGFuZCBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgdGVzdHMgZm9yIGtleWJvYXJkL21lbnUgYWN0aXZhdGlvbiBiZWhhdmlvdXIsIG1ha2UgdGhlIHRlc3RzCglwYXNzIHVuZGVyIFdpbmUuCgoyMDA1LTAxLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2xpc3Rib3guYywgZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYzoKCUxhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJRml4ZXMgdG8gdGhlIGhhbmRsaW5nIG9mIExCU19FWFRFTkRFRFNFTCBzdHlsZSwgd2l0aCB0ZXN0cy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsCgkgIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0aGUgaGVscCogYXR0cmlidXRlcyBvbiB0eXBlIGxpYnJhcmllcy4KCgkqIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUlmIHRoZSBhcmd1bWVudCBpcyBhIGxvY2FsIGZpbGUsIHBhc3MgaXRzIFVuaXggbmFtZSB0byB0aGUgYnJvd3Nlci4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCUNyZXN0ZXogTGVvbmFyZCA8Y2xlb25hcmRAZ28ucm8+CglJbXBsZW1lbnQgUmVmcmVzaC4KCUZpeCBidWcgd2l0aCBhbGwgSEtFWV8gcm9vdHMgYWx3YXlzIHNob3dpbmcgZXhwYW5kYWJsZS4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgV1BVQ29tcGxldGVPdmVybGFwcGVkUmVxdWVzdCwKCVdTQUR1cGxpY2F0ZVNvY2tldFcsIFdTQUVudW1OYW1lU3BhY2VQcm92aWRlcnN7QSxXfSwgV1NBR2V0UU9TQnlOYW1lLAoJV1NBR2V0U2VydmljZUNsYXNzSW5mb3tBLFd9LCBXU0FHZXRTZXJ2aWNlQ2xhc3NOYW1lQnlDbGFzc0lke0EsV30sCglXU0FMb29rdXBTZXJ2aWNlRW5kLCBXU0FMb29rdXBTZXJ2aWNlTmV4dHtBLFd9LAoJV1NBUHJvdmlkZXJDb25maWdDaGFuZ2UsICBXU0FTZXRTZXJ2aWNle0EsV30sIFdTQ0VuYWJsZU5TUHJvdmlkZXIsCglXU0NHZXRQcm92aWRlclBhdGgsIFdTQ0luc3RhbGxOYW1lU3BhY2UsICBXU0NXcml0ZVByb3ZpZGVyT3JkZXIuCglJbXBsZW1lbnRhdGlvbnMgZm9yIFdTQU50b2hsLCBXU0FOdG9ocywgV1NBU29ja2V0QS0+VyBjcm9zc2NhbGwuCglBdm9pZCBOVUxMIGRlcmVmZXJlbmNlcyBpbiBXU0FTdHJpbmdUb0FkZHJlc3N7QSxXfSBhbmQKCVdTQUFkZHJlc3NUb1N0cmluZ3tBLFd9LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGltYWdlIGxpc3QgbWFzayBhbmQgYmxlbmRpbmcuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCU9ubHkgcmVwb3J0IHRoZSB1bnN1cHBvcnRlZCBmbGFncy4KCUtlZXAgcXVpZXQgYWJvdXQgaGludHMuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9Fbi5yYywgZGxscy9tcHIvbXBycmVzLmgsCgkgIGRsbHMvbXByL25wcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3h5IGF1dGhlbnRpY2F0aW9uIGRpYWxvZy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEZWxldGUgdGhlIFxyIG5vdCB0aGUgXG4gaW4gUFJJTlRFUlJPUi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRG8gbm90IGFwcGx5IGNoYW5nZXMganVzdCBiZWNhdXNlIFF1ZXJ5RG9zRGV2aWNlIHJldmVyc2VkIHRoZQoJc2xhc2hlcy4KCUNoYW5nZSBhbiBFUlIgdG8gYSBXQVJOLCBpdCdzIGNvbW1vbiBmb3IgaXQgdG8gb2NjdXIuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBFdmFuIERlYXVibCA8d2luZUB3YXJwZWR2aWV3LmNvbT4KCUdldEl0ZW1BL1cgb24gaGVhZGVyIGNvbnRyb2xzIHNob3VsZCBoYW5kbGUgbWVzc2FnZSBldmVuIGlmIGluZGV4IGlzCglpbnZhbGlkLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG9wdGlvbmFsIGFyZ3VtZW50cyBhbmQgc29tZSBzdXBwcG9ydCBmb3IgdGhlCglkZWZhdWx0dmFsdWUgYXR0cmlidXRlcy4KCUJldHRlciBjYWxjdWxhdGlvbiBvZiB0aGUgdHlwZWluZm8ncyByZXMzIG1lbWJlciAoYXQgbGVhc3QgZm9yCglpbnRlcmZhY2VzKS4KCgkqIGRsbHMvbXNodG1sL21haW4uYywgZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS8uY3ZzaWdub3JlLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zaHRtZGlkLmgsIGluY2x1ZGUvbXNodG1sLmlkbCwKCSAgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS91dWlkcy5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIG1zaHRtbC5pZGwuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvbWFwaTMyL3Byb3AuYywKCSAgZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvdGVzdHMvZGIuYywKCSAgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglPbmx5IHVzZSBBbHNhIGlmIDEuMCBpcyBkZXRlY3RlZC4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIFctPkEgY2FsbHMuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBoaWRkZW4sIHJlc3RyaWN0ZWQgYW5kIHZlcnNpb24gYXR0cmlidXRlcyBvbgoJdHlwZWluZm9zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbm90aGVyIHdhcm5pbmcgZml4LgoKCSogZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaDoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUltcGxlbWVudGVkIEdldExheW91dCBhbmQgU2V0TGF5b3V0LgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgYW5kIGV4cG9ydGluZyBQQ1QxLCBTU0wyLzMgYW5kIFRMUzEgbWFzdGVyCglzZWNyZXRzLiBFbnN1cmUgdGhhdCB0aGVzZSBhcmUgbm90IHVzZWQgaW4gQ1BFbmNyeXB0LCBDUERlY3J5cHQgb3IKCUNQRGVyaXZlS2V5LgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCBjaGVjayBmb3IgdmFsaWQnbmVzcyBvZiBhbGdpZC4gSXQncyByZWR1bmRhbnQuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFNDSEFOTkVMX0FMRyB0eXBlZGVmLgoJQ29ycmVjdGVkIHN0cnVjdCB0YWcgaW4gSE1BQ19JTkZPIHR5cGVkZWYuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBhbmQgZml4IFN0Z0NyZWF0ZURvY0ZpbGUgZ3JmTW9kZXMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSB1bm5lZWRlZCBpbmNsdWRlcy4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9jb21jYXQvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCjIwMDUtMDEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gR3JhcGhidWlsZGVyX1JlbmRlckZpbGUuCglJbXByb3ZlZCB0cmFjZXMuCgoJKiBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpUmVjb3JkU2V0U3RyZWFtQS9XIGFuZCBhZGQgdGVzdHMgZm9yIHJlY29yZHMgY29udGFpbmluZwoJc3RyZWFtcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQXZvaWQgd2FybmluZ3MuCgoJKiBsaWJzL3dwcC9wcmVwcm9jLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEZpeGVkIGluZmluaXRlIGxvb3AgYnVnLgoJLSBDb2RlIGNsZWFudXAuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUZpeCBhIG1lbW9yeSBtYW5hZ2VtZW50IGJ1ZyBpbiBhcHBseV9kcml2ZV9jaGFuZ2VzIHRvIHN0b3Agd2luZWNmZwoJZGVsZXRpbmcgYWxsIHRoZSBkcml2ZSBkZWZpbml0aW9ucyBpbiBzb21lIGNhc2VzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCU1ha2UgdGhlIFVJIHVwZGF0ZSBwcm9wZXJseSB3aGVuIHRoZSB1c2VyIGFkZHMvcmVtb3ZlcyBkcml2ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSB2YWx1ZSBvZiBhIHBhY2tlZCBWQVJJQU5UIGNhbiBiZSB1cCB0byAxTCA8PCAyNiAtIDEuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oLAoJICB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYXR0cmlidXRlcyBjb250cm9sLCBoaWRkZW4gYW5kIHJlc3RyaWN0ZWQuCglDb3JyZWN0bHkgc2V0IHRoZSBsaWJmbGFncyBmb3IgdGhlc2UgYXR0cmlidXRlcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBIRUFQX3N0cmR1cFd0b0EgY2FsbHMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2QzZDl0eXBlcy5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgcmVuZGVyIHRhcmdldCBzdXBwb3J0LCBhbmQgZW5zdXJlIHRoZXJlIGlzIGEgZnJvbnQgYW5kIGJhY2sgYnVmZmVyCgljcmVhdGVkIGR1cmluZyBkZXZpY2UgY3JlYXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9vbGVvYmouYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZGxscy9xdWFydHovcmVnc3ZyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHJlZ2lzdHJhdGlvbiBmb3IgcXVhcnR6IGZpbHRlcnMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHdpbmRvd3MgbWVzc2FnZXMuCgoJKiBsaWJzL3dwcC93cHAuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGluaXRpYWxpemluZyBwcF9zdGF0dXMuaW5wdXQgYXQgYmVnaW4gb2Ygd3BwX3BhcnNlLgoKCSogZGxscy9tYXBpMzIvcHJvcC5jLCBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmMsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywgZGxscy9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsCgkgIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsCgkgIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3gxMWRydi93aW50YWIuYywgZGxscy94MTFkcnYveGZvbnQuYywKCSAgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsCgkgIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsCgkgIGRsbHMvZG1pbWUvZ3JhcGguYywgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLAoJICBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc3dhdmUvZHN3YXZlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgZXhjZXNzaXZlIHN0YXRlbWVudCAoYnJlYWsgYWZ0ZXIgcmV0dXJuIG9yIGdvdG8sIG5vdCB1c2VmdWwKCWJyZWFrLCBub3QgbmVlZGVkIHZhcnMuLi4pCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGRlZCBoYW5kbGluZyBvZiBTQk1fR0VUU0NST0xMQkFSSU5GTyBtZXNzYWdlLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglJbml0aWFsaXplIGFuZCB1bmluaXRpYWxpemUgQ09NIHByb3Blcmx5LgoKCSogZGxscy9jb21tZGxnL2NkbGdfRXMucmM6IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIFNwYW5pc2ggcmVzb3VyY2UuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDb3JyZWN0IGxvb3AgY2hlY2sgZm9yIGVudW0gZGlzcGxheSBhbmQgaW5jbHVkZSAzMmJpdCBtb2RlcyBpbiAyNGJpdC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1vdmVkIHNhdmUqIHN0cmluZ3MgdG8gcmVzb3VyY2VzLgoKMjAwNS0wMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmV2ZXJ0IEdldFNjcm9sbEJhckluZm8gc3BlYyBlbnRyeSBiYWNrIHRvIGEgc3R1YiB0byBmaXggY29tcGlsYXRpb24KCWZhaWx1cmUuCgoyMDA1LTAxLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYzJtYW4ucGw6IENyZWF0ZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpZiBuZWVkZWQuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgdGhlIHNvdXJjZSBkaXIgYXMgdGhlIGRvY3VtZW50YXRpb24gcm9vdCBkaXIuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvd2lubmxzMzIuaDoKCURpZWdvIFBldHRlbvIgPGZsYW1lZXllc0B1c2Vycy5iZXJsaW9zLmRlPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgV0lOTkxTKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCURpZWdvIFBldHRlbvIgPGZsYW1lZXllc0B1c2Vycy5iZXJsaW9zLmRlPgoJR2V0IHJpZCBvZiBEUFJJTlRGLgoKCSogZGxscy9rZXJuZWwvbGNmb3JtYXQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlIEdldExvY2FsVGltZSAodHotZGVwZW5kYW50KSBpbnN0ZWFkIG9mIEdldFN5c3RlbVRpbWUgKFVUQykgaW4KCUdldFRpbWVGb3JtYXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYWxsIGN1c3RvbSB0eXBlIDEgYWN0aW9ucyBoYXBwZW4gaW4gYSBzZXBlcmF0ZSB0aHJlYWQgYW5kIGNsb3NlCglhbGwgaGFuZGxlcyBmb3IgdGhhdCB0aHJlYWQgd2hlbiBpdCBleGl0cy4gSG9ub3JzIHRoZSBjb25jZXB0IG9mCgl0ZW1wb3JhcnkgTVNJIGhhbmRsZXMgZm9yIGN1c3RvbSBhY3Rpb25zLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIENyZWF0ZUV2ZW50VyBpbiBwcmVmZXJlbmNlIHRvIENyZWF0ZUV2ZW50QSBmb3IgdW5uYW1lZCBldmVudHMuCgoJKiBkbGxzL3F1YXJ0ei9yZWdzdnIuYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCS0gTWVkaWEgVHlwZXMgKGFuZCBFeHRlbnNpb25zKSBzaG91bGQgdXNlICJTb3VyY2UgRmlsdGVyIiBpbnN0ZWFkIG9mCgkgICJGaWxlIFNvdXJjZSIuCgktIFJlbW92ZWQgZmlsZXNvdXJjZV92YWx1ZW5hbWUuCgktIEZpeGVkIHR5cG8gZm9yIHNvbWUgY2xhc3MtbmFtZXMuCgktIEZpeGVkIHR5cG8gaW4gTVBFRzFTeXN0ZW0gTWVkaWEgVHlwZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQ3Jlc3RleiBMZW9uYXJkIDxjbGVvbmFyZEBnby5ybz4KCUZpeCBidWcgd2l0aCBUcmVldmlld19TZWxlY3RJdGVtIHJlc2VsZWN0aW5nIHRoZSBzYW1lIGl0ZW0uCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgY29tcGxldGUsIHNvcnRlZCBsaXN0ZWQgb2YgSU9DVExTIGltcGxlbWVudGVkIGluIHRoZSBmaWxlLgoJLSBEdW1wIHRyYWNrIG51bWJlcnMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZmlsbGVkIGluLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZSBpaWQgaW4gd2luZV9tYXJzaGFsX2lkIHRvIGlwaWQgYW5kIHVzZSBJUElEcyBpbnN0ZWFkIG9mIElJRHMgaW4KCXRoZSBzdHViIG1hbmFnZXIuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUaGUgY3VycmVudCBhcmNoaXRlY3R1cmUgY2Fubm90IGhhbmRsZSBwaXBlcyBjaGFuZ2luZyBhZGRyZXNzLCBzbyB1c2UKCWEgc3RhdGljIGFycmF5LiBGaXhlcyBtZW1vcnkgY29ycnVwdGlvbiB0aGF0IHNvbWV0aW1lcyBvY2N1cnMgd2hlbgoJdXNpbmcgbXVsdGlwbGUgcGlwZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9jYXBpMjAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb2FkIGxpYmNhcGkyMC5zby4qIGR5bmFtaWNhbGx5IG9uIGRlbWFuZC4KCjIwMDUtMDEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL2hhc2guYywgdG9vbHMvd2lkbC9oYXNoLmgsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvdHlwZWxpYi5jLAoJICB0b29scy93aWRsL3R5cGVsaWIuaCwgdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsIHN1cHBvcnQgZm9yIHR5cGVsaWIgZ2VuZXJhdGlvbi4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJT24gTGludXgsIHVzZSBmc3RhdGZzIGluc3RlYWQgb2YgZnN0YXR2ZnMuIEl0IGlzIHRvbyBidWdneS4KCgkqIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTm8gbmVlZCB0byBhZGQgYSByZWZlcmVuY2UgdG8gdGhlIGFwYXJ0bWVudCBmcm9tIG5ld19zdHViX21hbmFnZXIgYXMKCXdlIGRvbid0IGhvbGQgb24gdG8gYW4gYXBhcnRtZW50IHBvaW50ZXIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB3aW5kb3dzIGV2ZW50cyBob29rIHRvIHRoZSBtZXNzYWdlIHRlc3QuCgoJKiBkbGxzL21zaS9oYW5kbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTXNpQ2xvc2VBbGxIYW5kbGVzIG9ubHkgY2xvc2VzIGhhbmRsZXMgYWxsb2NhdGVkIGluIHRoZSBjYWxsaW5nCgl0aHJlYWQuCgoJKiBkbGxzL21zaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zaS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGVzdCBmb3IgcmVjb3Jkcy4KCgkqIGRsbHMvbXNpL3JlY29yZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcmVjb3JkcyBhY2NvcmRpbmcgdG8gdGVzdCBjYXNlcy4KCgkqIHRvb2xzL3dpbmUuaW5mOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkIFZNTTMyRmlsZXMgc2VjdGlvbi4KCgkqIGluY2x1ZGUvbXNpLmgsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgbW9yZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglXTV9HRVRURVhUTEVOR1RIIHNob3VsZCByZXR1cm4gemVybyBmb3Igb3duZXIgZHJhd24gc3RhdHVzIGJhcnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTW92ZWQgc3RyaW5nIHRvIHJlc291cmNlcy4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJlZmVyIFcgdG8gQSBmb3IgZG9jdW1lbnRhdGlvbi4gUHJlZmVyIHRoZSBub24taW5saW5lZCBzdHlsZSBvZgoJZG9jdW1lbnRhdGlvbiwgaXQncyB0aGUgbW9zdCBjb21tb25seSB1c2VkIG9uZSwgd2Ugc2hvdWxkIHN0YW5kYXJkaXplCglvbiBpdC4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgdG9vbHMvd2luZS5pbmY6CglKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gT2J0YWluIGJvcmRlciBzaXplIG9mIHdpbmRvd3MgZnJvbSByZWdpc3RyeSBpZiBhdmFpbGFibGUuCgktIE9idGFpbiBpY29uIHNpemUgZnJvbSByZWdpc3RyeSBpZiBhdmFpbGFibGUuCgktIENyZWF0ZSBhIFdpbmRvd01ldHJpY3Mgc2VjdGlvbiBpbiB0aGUgZGVmYXVsdCByZWdpc3RyeSBhbmQgcG9wdWxhdGUKCSAgaXQgd2l0aCBhbGwgY3VycmVudGx5IHN1cHBvcnRlZCBtZXRyaWNzICh0aGF0IGFyZSBzZXR1cCB0byByZWFkIGZyb20KCSAgdGhlIHJlZ2lzdHJ5KS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHN0cnVjdCBvbGV0bHMgcmVmIGNvdW50ZWQgc28gdGhhdCBpdCBpcyBvbmx5IGRldGFjaGVkIGZyb20gdGhlCgkgIGFwYXJ0bWVudCBvbiB0aGUgZmluYWwgQ29VbmluaXRpYWxpemUuCgktIERlY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBjcml0IHNlYyBvbiBkZXN0cm95aW5nIGFuIGFwYXJ0bWVudCAtIGl0IGlzCgkgIG9ubHkgbmVlZGVkIGZvciB0b3VjaGluZyB0aGUgYXBhcnRtZW50IGxpc3QuCgktIFNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ29ubmVjdE5hbWVkUGlwZSByZXR1cm5pbmcgRVJST1JfUElQRV9DT05ORUNURUQgaXMgbm90IGFuIGVycm9yLgoKCSogZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLCBkbGxzL3F1YXJ0ei9lbnVtZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZW51bXBpbnMuYywgZGxscy9xdWFydHovZW51bXJlZ2ZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsCgkgIGRsbHMvcXVhcnR6L3Bpbi5jLCBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIFN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkIEJyYXppbGlhbiBzdGFuZGFyZCB0aW1lLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlZ2lzdGVyIHJzYWVuaCBhcyBhIFJTQSBTQ2hhbm5lbCBwcm92aWRlci4KCVJlZ2lzdGVyIHJzYWVuaCBhcyBkZWZhdWx0IFJTQSBTQ2hhbm5lbCBwcm92aWRlci4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBQcm9wZXJseSBkZWZvcm1hdCBrZXlzIHdyaXR0ZW4gdG8gdGhlIHJlZ2lzdHJ5LgoJLSBCZWNhdXNlIGRpcmVjdG9yeSBtYXBwaW5ncyBjYW4gY2hhbmdlIGJldHdlZW4gdGhlIENvc3RGaW5hbGl6ZSBzdGVwCgkgIGFuZCB0aGUgSW5zdGFsbEZpbGVzIHN0ZXAgd2UgbmVlZCB0byBkbyBhIGZpbmFsIHJlc29sdXRpb24gb2YgdGhlCgkgIHRhcmdldCBmaWxlIG5hbWUgYmVmb3JlIGluc3RhbGxpbmcuCgoyMDA1LTAxLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2lkbC91dGlscy5jLCB0b29scy93aWRsL3dpZGwuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCcmluZyB0aGUgZGVidWcgZnVuY3Rpb25zIGludG8gbGluZSB3aXRoIHRoZSByZXN0IG9mIFdpbmUgYnkgbm90CglhcHBlbmRpbmcgYSAnXG4nLgoKCSogZGxscy9vbGUzMi9vbGVwcm94eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUaGUgY2hhbm5lbCBidWZmZXIgY2FuIGJlIE5VTEwgaWYgdGhlIHByb3h5IGlzIGRpc2Nvbm5lY3RlZCwgc28gY2hlY2sKCWZvciB0aGlzIGJlZm9yZSByZWxlYXNpbmcgaXQuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCByYWNlIG9uIGFwYXJ0bWVudCBjcmVhdGlvbi4KCS0gRGlzcGxheSBlcnJvcnMgaW4gZGVjaW1hbCB0byBtYWtlIHNlYXJjaGluZyBmb3IgdGhlIG1lYW5pbmcgaW4KCSAgd2luZXJyb3IuaCBlYXNpZXIuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBhcGFydG1lbnQgYWNjZXNzIHRocmVhZC1zYWZlIGJ5IGludHJvZHVjaW5nIHJlZmNvdW50aW5nIGFuZAoJICB3aWRlciB1c2FnZSBvZiB0aGUgYXBhcnRtZW50IGxvY2suCgktIFJld29yayBPTEUgVExTIG1hbmFnZW1lbnQgdG8gZWxpbWluYXRlIHVuaW5pdGlhbGlzZWQgYXBhcnRtZW50cyBhbmQKCSAgcGFyZW50IGNoYWluaW5nLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglSZXR1cm4gYSB0cnVlIGJvb2xlYW4gdmFsdWUgKDAgb3IgMSkuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcyBmb3IgU0NoYW5uZWwgcGVyc29uYWxpdHkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gY2hlY2tpbmcgZm9yIGFuIGV4aXN0aW5nIC5sbmsgc2hvcnRjdXQgZXh0ZW5zaW9uIG9uIHRoZSBmaWxlbmFtZQoJZG8gbm90IGp1c3Qgc2VhcmNoIGZvciAnLicgYnV0IGFjdHVhbGx5IHZlcmlmeSBpdCBpcyAnLmxuaycuCgoJKiB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC90eXBlbGliLmgsCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgaW50ZXJmYWNlcywgc3RydWN0cywgY29jbGFzc2VzIGFuZCBtb2R1bGVzIHRoYXQgYXJlIHRvIGJlCgl3cml0dGVuIGludG8gYSB0eXBlbGliIGluIGEgbGlzdC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaW9iai5jOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL3BhY2thZ2UuYzoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglHZXQgcmVhbCBzY3JlZW4gcHJvcGVydGllcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2kvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc2kvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpL3Rlc3RzL2RiLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzaW1wbGUgdGVzdCBjYXNlIGZvciBNU0kgZGF0YWJhc2VzLgoKCSogZGxscy9nZGkvZm9udC5jLCBpbmNsdWRlL3dpbmdkaS5oOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkIGRlc2NyaXB0aW9uIGZvciBFeHRUZXh0T3V0IChhbHNvIGluY2x1ZGUgY29tbWVudHMgZnJvbSBTaGFjaGFyCglTaGVtZXNoKSBhbmQgbWlzc2VkIGNvbnN0YW50cyBFVE9fTlVNRVJJQ1NMT0NBTCwgRVRPX05VTUVSSUNTTEFUSU4sCglFVE9fUERZIGluIHdpbmdkaS5oLgoKCSogdG9vbHMvd2luZWR1bXAvc2VhcmNoLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglGaXggYSByZXR1cm4gdHlwZSBidWcgYWZ0ZXIgYWxsb3dpbmcgJ2ZvbyAqZnVuY3Rpb25uYW1lKCknCglwcm90b3R5cGVzLiBJbiAndW5zaWduZWQgY2hhciAqZnVuY3Rpb25uYW1lKCknIGNoYXIgd2FzIG5vdCBzZWVuOwoJdGhlcmVmb3JlIGltcGxpY2l0ICd1bnNpZ25lZCBpbnQnLgoKCSogZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBoYW5kbGUgU3R5bGVSZWZzIGxpc3Qgb24gRE1TdHlsZVRyYWNrcwoJLSBoYW5kbGUgUGFydFJlZnMgbGlzdCBvbiBETVN0eWxlcwoJLSBiZWdpbiBvZiBQYXJ0cyBsaXN0IHN1cHBvcnQgb24gRE1TdHlsZXMgKGZvciBub3cgb25seSBzb21lIGFycmF5CgkgIGNoZWNrcykKCS0gZml4IElEaXJlY3RNdXNpY1N0eWxlOjpRdWVyeUludGVyZmFjZQoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU2V0IGxhc3QgZXJyb3IgaWYgZHdGbGFncyBhcmUgbm9uIHplcm8gaW4gQ1BSZWxlYXNlQ29udGV4dC4KCUFkZGVkIGNvcnJlc3BvbmRpbmcgdGVzdC4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IENPTSB0byBzdGFydCBzZXJ2aWNlcyBjb250YWluaW5nIENPTSBzZXJ2ZXJzLgoKMjAwNS0wMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBDdXN0b21BY3Rpb24gMzUgc2hvdWxkIGNhbGwgU2V0VGFyZ2V0UGF0aCBub3QganVzdCBzZXQgdGhlIHByb3BlcnR5LgoJLSBUQVJHRVRESVIgYW5kIFNPVVJDRURJUiBtYXkgbm90IGJlIGVudHJpZXMgMCBpbiB0aGUgZGlyZWN0b3J5CgkgIHRhYmxlcy4gU28gd2hlbiByZXNvbHZpbmcgdGhlIGZvbGRlciB3ZSBuZWVkIHRvIHNlZWsgdGhlbSBvdXQuCgktIFdoZW4gd2UgaGFuZGxlIFNldFRhcmdldFBhdGggd2UgbmVlZCB0byBiZSBzdXJlIHRvIHJlY2FsY3VsYXRlIHRoZQoJICByZXN1bHRpbmcgcGF0aHMgYXMgdGhpbmdzIHdpdGggdGhlIG5vdyBzZXQgRGlyZWN0b3J5IGFzIHRoZSBwYXJlbnQKCSAgd2lsbCBjaGFuZ2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBob3cgd2UgaW5zdGFsbCBmaWxlcyBzbyB0aGF0IHdlIGV4dHJhY3QgZmlsZXMgYXMgd2UgbmVlZCB0aGVtLAoJY3V0cyBkb3duIG9uIGV4dHJhY3Rpb24gdGltZSBhbmQgdW51c2VkIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvZGlucHV0L21vdXNlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IFN0YXJ0RG9jIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggJ1NlbmRBc3luY0NhbGxiYWNrJyB3aGVuIGl0J3MgcmVhbGx5IGFzeW5jaHJvbm91cy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCWZwb3NfdCBzaG91bGQgYmUgNjQgYml0cyAodmVyaWZpZWQgd2l0aCBuYXRpdmUgTVNWQ1JULkRMTCkKCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhbmRsZSBidWZmZXJpbmcgaW4gZmdldHBvcyAvIGZzZXRwb3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVlZGVkIHdoaXRlc3BhY2UsIGluZGVudCBjb3JyZWN0bHkuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByZXZlbnQgY3Jhc2ggZnJvbSBpbnZhbGlkIGxhc3QgcGFyYW1ldGVyIGluIEdldEZpbGVWZXJzaW9uSW5mby4KCVByZXZlbnQgY3Jhc2ggaW4gVmVyUXVlcnlWYWx1ZSB3aGVuIHJldHVybiBzaXplIG5vdCByZXF1ZXN0ZWQuCglHZXRGaWxlVmVyc2lvbkluZm8gYW5kIFZlclF1ZXJ5VmFsdWUgcGFyYW1ldGVyIHRlc3RzIGFkZGVkLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1RoLnJjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGRpYWxvZyB0ZW1wbGF0ZXMgdG8gbm90IGV4cGxpY2l0bHkgc3BlY2lmeSBleHRlbmRlZCB3aW5kb3cKCXN0eWxlcyBmb3IgdGhlIHN0YXRpYyByZWN0cyBvbiB0aGUgUGFnZSBTZXR1cCBkaWFsb2cgYXMgdGhlIG9uZXMKCXNwZWNpZmllZCB3ZXJlIHdyb25nIGFueXdheS4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBjbGVhckFsbFNlbGVjdGlvbnMgc2luY2Ugbm90IGNsZWFyaW5nIENMSVBCT0FSRCBjYW4gZ2V0IHVzIGludG8KCWFuIG9kZCBzdGF0ZS4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIHByZWNlZGVuY2Ugb2YgdGhlIGNvbmRpdGlvbmFsIG9wZXJhdG9yLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFsd2F5cyBzZXQgRVJST1JfU1VDQ0VTUyBpbiBjYXNlIG9mIHN1Y2Nlc3MgaW4gQ1BBY3F1aXJlQ29udGV4dC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCB0b3VjaCB0aGUgcmVjdCBpZiBod25kIGlzIGludmFsaWQuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgdHJhY2luZyBmb3IgcHJveHkgcmVmIGNvdW50IGZ1bmN0aW9ucy4KCS0gUmVsZWFzZSB0aGUgY2hhbm5lbCBvbiBwcm94eSBkZXN0cnVjdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBEQ09NIHRvZG8gbGlzdC4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9lbWYuYywKCSAgdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRXh0ZW5kIHdpbmVkdW1wIHRvIGFsbG93IGR1bXBpbmcgZW5oYW5jZWQgbWV0YSBmaWxlcy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJT24gTlQ0IHdlIGNhbiBhbHNvIGdldCBFUlJPUl9SSU5HMl9TVEFDS19JTl9VU0UgZnJvbQoJQ3J5cHRBY3F1aXJlQ29udGV4dCgpLgoKCSogaW5jbHVkZS9tc2kuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBleHRyYSBmdW5jdGlvbnMuCglSZW1vdmVkIHBhcmFtZXRlciBuYW1lIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIGRlY2xhcmF0aW9ucy4KCgkqIGluY2x1ZGUvZGNlLmgsIHdpbmRvd3MvZGNlLmM6CglSZW1vdmUgdGhlIG5vIGxvbmdlciBuZWVkZWQgRENFX0V4Y2x1ZGVSZ24gZnVuY3Rpb24gYW5kCglEQ1hfS0VFUENMSVBSR04gc3R5bGUuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCVVzZSB0aGUgREMgb3JpZ2luIHRvIG1hcCBjb29yZGluYXRlcyBpbiBFeGNsdWRlVXBkYXRlUmduIGluc3RlYWQgb2YKCWNhbGxpbmcgYW4gaW50ZXJuYWwgRENFIGZ1bmN0aW9uLgoKCSogZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglGaXhlZCB0aGUgRklYTUUgaW4gUnRsTnRTdGF0dXNUb0Rvc0Vycm9yLCBhbmQgaW1wbGVtZW50ZWQKCVJ0bEdldExhc3ROdFN0YXR1cyBhbmQgUnRsU2V0TGFzdFdpbjMyRXJyb3JBbmROdFN0YXR1c0Zyb21OdFN0YXR1cy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBzZXJ2ZXIvbWFwcGluZy5jOgoJU3VwcG9ydCBtYXBwaW5nIG5vbiBwYWdlLWFsaWduZWQgYmluYXJpZXMgZm9yIFNFQ19JTUFHRSBtYXBwaW5ncy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBwcm94eSBtYW5hZ2VyLgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB3aGl0ZXNwYWNlIGF0IGVuZCBvZiBsaW5lcywgdXBkYXRlZCBhIGJpdC4KCgkqIGluY2x1ZGUvYW1zdHJlYW0uaWRsLCBpbmNsdWRlL2Rkc3RyZWFtLmlkbCwgaW5jbHVkZS9tbXN0cmVhbS5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVW5jb21tZW50ZWQgJ29wdGlvbmFsJyBhdHRyaWJ1dGVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jZmdtZ3IzMi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNmZ21ncjMyLmggaGVhZGVyLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gbG9hZGluZyBhIGJpdG1hcCBpbnRvIGEgZGlic2VjdGlvbiB0aGUgcmVzdWx0IGNhbm5vdCBiZQoJY29tcHJlc3NlZC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgSU1FIG1lc3NhZ2VzIGluIHRoZSBkZWZhdWx0IHVuaWNvZGUgd2luZG93IHByb2NlZHVyZSB0b28uCgoJKiBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVnbWVudCB0aGUgY29tcGlsaW5nIGRvY3VtZW50YXRpbiB3aXRoIHRoZSBhY3R1YWwgY29tbWFuZHMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhpZGUgYXV0aG9ycywgd2UgZG9uJ3Qga25vdyBob3cgdG8gZm9ybWF0IHRoZW0uCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBiYXNoaW5nIG9mIHBhY2thZ2VzLCB2YWx1ZSBqdWRnbWVudHMuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5kZSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdCwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnI6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglLZWVwIGFsbCBSRUFNREVzIGluIHN5bmMuCgoJKiBkbGxzL3VzZXIvc3RhdGljLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjb2xvdXJzIHVzZWQgZm9yIFNTXypSRUNULCBTU18qRlJBTUUuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgbWFjaGluZSBrZXlzZXRzLgoKCSogZGxscy9vbGUzMi9vbGVwcm94eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBDbGFzc0ZhY3RvcnkgcHJveHkgc3VwcG9ydCBhZ2dyZWdhdGlvbi4KCjIwMDUtMDEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsCgkgIGRsbHMvd2lubW0vd2lubW0uc3BlYzoKCUdldCByaWQgb2YgdGhlIFRodW5rRGF0YSBzdHVicywgdGhlc2UgYXJlIG5vdCBmdW5jdGlvbnMuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGluY2x1ZGUvdmZ3Lmg6CglGaXhlZCBDTFNJRF9BVklTaW1wbGVVbk1hcnNoYWwgZXhwb3J0LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJQXZvaWQgZHVtcGluZyB0aGUgY29udGVudHMgb2Ygb3V0cHV0IHN0cmluZ3MuCgoJKiBkbGxzL3VuaWNvd3MvbWFpbi5jLCBkbGxzL3VuaWNvd3MvdW5pY293cy5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZW1vdmUgbW9zdCByZW1haW5pbmcgc3R1YnMgZnJvbSB1bmljb3dzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgU0hVcGRhdGVJbWFnZUEsIFNISGFuZGxlVXBkYXRlSW1hZ2UsCglTSE9iamVjdFByb3BlcnRpZXMsIFNIR2V0TmV3TGlua0luZm97QSxXfSwgU0hTdGFydE5ldENvbm5lY3Rpb25EaWFsb2csCglTSEVtcHR5UmVjeWNsZUJpbntBLFd9LCBTSEZvcm1hdERyaXZlLCBTSFF1ZXJ5UmVjeWNsZUJpbntBLFd9LgoJJ0hlYXBBbGxvYyBjYW4gZmFpbCcgZml4IGZvciBFeHRyYWN0SWNvbkV4QS4KCUltcGxlbWVudCBFeHRyYWN0QXNzb2NpYXRlZEljb25BIC0+IFcuCglDb3JyZWN0IHByb3RvdHlwZSBmb3IgU0hPYmplY3RQcm9wZXJ0aWVzLgoJRm9yd2FyZCBTSEdldE5ld0xpbmtJbmZvIHRvIFNIR2V0TmV3TGlua0luZm9BLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBBZGRNb25pdG9yVywgRGVsZXRlUHJpbnRlckRyaXZlclcsCglEZWxldGVNb25pdG9yVywgRGVsZXRlUG9ydFcsIEdldFByaW50UHJvY2Vzc29yRGlyZWN0b3J5VywKCUFkZFByaW50UHJvY2Vzc29ye0EsV30sIEFkZFByaW50UHJvdmlkb3J7QSxXfSwKCUFkdmFuY2VkRG9jdW1lbnRQcm9wZXJ0aWVze0EsV30sIEVudW1Qb3J0c1csIEFkZFBvcnR7QSxXfSwKCUNvbmZpZ3VyZVBvcnR7QSxXfSwgRGVsZXRlUHJpbnRQcm9jZXNzb3J7QSxXfSwKCURlbGV0ZVByaW50UHJvdmlkb3J7QSxXfSwgRW51bVByaW50UHJvY2Vzc29yRGF0YXR5cGVze0EsV30sCglHZXRKb2J7QSxXfS4KCgkqIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9waW4uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElNZWRpYUNvbnRyb2xfUnVuIHRoYXQgZXhwbG9yZXMgdGhlIGdyYXBoLCBjb3VudHMKCXJlbmRlcmVycyBhbmQgc3RhcnRzIGZpbHRlcnMuCglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgSUJhc2VGaWx0ZXJfUnVuIGZvciBBVkkgU1BsaXR0ZXIgYW5kIEFWSQoJRGVjb21wcmVzc29yLgoJVXNlIHRoZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdG9yIHdoZW4gYW4gb3V0cHV0IHBpbiBkb2VzIG5vdCBwcm92aWRlCglhbnkgYWxsb2NhdG9yLgoJU2V0IGFsbG9jYXRvciBwcm9wZXJ0aWVzIGZvciBBVkkgRGVjb21wcmVzc29yIG91dHB1dCBwaW4gYW5kIHVwZGF0ZQoJdGhlIGJ1ZmZlcnMgc2l6ZSBhdCBjb25uZWN0aW9uIHRpbWUuCgoJKiBkbGxzL3NobHdhcGkvc3RyaW5nLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIFctPkEgY2FsbHMuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWRkIHJldHVybiB2YWx1ZSB0byBHZXRPYmplY3QgZXJyb3IgbWVzc2FnZS4KCgkqIHRvb2xzL3dpbmVkdW1wL2Z1bmN0aW9uX2dyZXAucGw6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglDdXJyZW50bHkgYSAnLy8qKioqJyBpcyBtYXRjaGVkIGFzIGFuIC8qIGNvbW1lbnQgLSBkaXNhbGxvdyBhICcvJyBpbgoJZnJvbnQgb2YgdGhlICcvKicgbWF0Y2guIEFuICdleHRlcm4gIkMiIHsnIGNhbiBiZSBzcGxpdCBpbiBzZXZlcmFsCglsaW5lcyAtIGFsbG93ICdcbicgYXMgc3BhY2UsIGFuZCBsb29rb3V0IGZvciB0aGUgcmVzdCBpZiBwYXJ0aWFsCglmb3VuZC4KCgkqIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJSW4gZnVuY3Rpb25fZ3JlcC5wbCBhbmQgc3ltYm9sLmMvc3ltYm9sX2NsZWFuX3N0cmluZyBzcGFjZXMgYmV0d2VlbgoJdGhlIGZ1bmN0aW9uIG5hbWUgYW5kICogYXJlIHJlbW92ZWQuIEZ4LiB0aGUgdHlwZSAndm9pZCAqIGZvbygpJyBpcwoJcmV0dXJuZWQgYXMgJ3ZvaWQgKmZvbygpJy4gUmVjb2duaXplZCB0aGlzIGFzIGEgdmFsaWQgcHJvdG90eXBlIGluCglzeW1ib2xfc2VhcmNoLgoKCSogdG9vbHMvd2luZWR1bXAvc3ltYm9sLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBZGRlZCB0aGUgd29yZCAiRkxPQVQiIHRvIGJlIHJlY29nbml6ZWQgYXMgYXJndW1lbnQgdHlwZSBmbG9hdC4KCgkqIGluY2x1ZGUvZHBsb2JieS5oOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJRGVmaW5lIERpcmVjdFBsYXlMb2JieUNyZWF0ZSB0byBiZSBlaXRoZXIgdGhlIFcgb3IgQSB2ZXJzaW9uLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIGRlZmluZXMgY29uY2VybmluZyBTQ2hhbm5lbCBDU1BzLgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRoZXJlIHRvIGNvbnN0J25lc3Mgb2YgdGhlIGlucHV0IGRhdGEgaW4gZW5jcnlwdF9ibG9ja19pbXBsLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBjb21tZW50cywgZml4IG5lZ2F0aXZlIHZhbHVlIGZyb20gR2V0Q3VyRm9jdXMuCgoJKiB3aW5kb3dzL3VzZXIuYzoKCVVzZSBFeGl0UHJvY2VzcyB0byB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgaW4gRXhpdFdpbmRvd3NFeCBzbyB0aGF0IGl0CglnZXRzIGEgY2hhbmNlIHRvIGNsZWFuIHRoaW5ncyB1cC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbWlzc2luZyBkZWNsYXJhdGlvbnMgaW4gdGhlIHNwZWMgZmlsZS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIFctPkEgY2FsbHMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lZG9zL3Z4ZC5jOgoJRGllZ28gUGV0dGVu8iA8ZmxhbWVleWVzQHVzZXJzLmJlcmxpb3MuZGU+CglHZXQgcmlkIG9mIERQUklOVEYuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgcHJvZ3Jlc3MgYmFyIHRyYWNraW5nLgoKCSogdG9vbHMvd2luZWR1bXAvbGUuYywgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDogV2FybmluZyBmaXhlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgaW5jbHVkZS9sbXNlcnZlci5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbnN2Yy5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgR2V0S2VybmVsT2JqZWN0U2VjdXJpdHksCglHZXRQcml2YXRlT2JqZWN0U2VjdXJpdHksIEdldFNlcnZpY2VLZXlOYW1le0EsV30sCglJbXBlcnNvbmF0ZU5hbWVkUGlwZUNsaWVudCwgSW5pdGlhdGVTeXN0ZW1TaHV0ZG93bntBLFd9LAoJSXNUb2tlblJlc3RyaWN0ZWQsIExvZ29uVXNlcntBLFd9LCBMb29rdXBBY2NvdW50TmFtZVcsCglMb29rdXBQcml2aWxlZ2VEaXNwbGF5TmFtZXtBLFd9LCBNYXBHZW5lcmljTWFzaywKCU9iamVjdENsb3NlQXVkaXRBbGFybXtBLFd9LCBPYmplY3RPcGVuQXVkaXRBbGFybXtBLFd9LAoJT2JqZWN0UHJpdmlsZWdlQXVkaXRBbGFybXtBLFd9LCBQcml2aWxlZ2VkU2VydmljZUF1ZGl0QWxhcm17QSxXfSwKCVF1ZXJ5U2VydmljZUxvY2tTdGF0dXN7QSxXfSwgU2V0QWNsSW5mb3JtYXRpb24sCglTZXRQcml2YXRlT2JqZWN0U2VjdXJpdHksIFNldFNlY3VyaXR5RGVzY3JpcHRvckNvbnRyb2wsCglTZXRTZXJ2aWNlQml0cywgTHNhU2V0SW5mb3JtYXRpb25Qb2xpY3ksIExzYUxvb2t1cE5hbWVzLAoJTHNhRW51bWVyYXRlVHJ1c3RlZERvbWFpbnMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiBmaXguCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBhbmQgdGVzdCBVUkxJU19VUkwgZmxhZyBpbiBVcmxJcygpLgoKCSogZGxscy9xdWFydHovcmVnc3ZyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbiBvZiBtZWRpYSB0eXBlcy4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9wcm9wLmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYywgZGxscy9tYXBpMzIvdXRpbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBDcmVhdGVJUHJvcCAmIG1vc3Qgb2YgTUFQSSdzIElNQVBJUHJvcCAmIElQcm9wRGF0YSBpZmFjZXMuCglJbXBsZW1lbnQgRkJhZEVudHJ5TGlzdCBhbmQgbWFrZSBGQmFkUHJvcCB1c2UgaXQuCglUZXN0IENyZWF0ZUlQcm9wLCBzdGFydCBvZiB0ZXN0cyBmb3IgSVByb3BEYXRhIGludGVyZmFjZS4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBHZXRBbHRUYWJJbmZve0EsV30uCglGb3J3YXJkIEdldEFsdFRhYkluZm8gdG8gR2V0QWx0VGFiSW5mb0EuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJQ29udmVydGVkIHN5c3RlbSBtZXRyaWNzIHRvIFVuaWNvZGUuCgoJKiB3aW5kb3dzL3VzZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSWYgZ2l2ZW4gdGhlIEVXWF9GT1JDRSBmbGFnLCBFeGl0V2luZG93c0V4KCkgc2hvdWxkIG5vdCBzZW5kIHRoZQoJICBXTV97UVVFUll9RU5EU0VTU0lPTiBtZXNzYWdlcy4KCS0gQWRkIHN1cHBvcnQgZm9yIEVXWF9GT1JDRUlGSFVORy4KCS0gRXhpdFdpbmRvd3NFeCgpIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkcywgZXZlbiBpZiB0aGUgdXNlcgoJICBjYW5jZWxzIHRoZSBzaHV0ZG93bi4KCS0gRG9uJ3QgY3Jhc2ggaWYgdGhlcmUgYXJlIG5vIHdpbmRvd3MuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbmQgZml4IHNvbWUgc3R1YnMuCgoJKiBMSUNFTlNFLCBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJVXBkYXRlIGNvcHlyaWdodCBpbmZvIGZvciB0aGUgbmV3IHllYXIuCgoJKiBkbGxzL3VzZXIvaG9vay5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBIRUFQX3N0cmR1cFd0b0EgY2FsbHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJlIHN1cmUgdGhhdCBzZXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgd2l0aCBhIGJhY2tzbGFzaC4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9kYmdoZWxwL2NvZmYuYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRG8gbm90IGNoZWNrIGZvciBub24gTlVMTCBwb2ludGVyIGJlZm9yZSBIZWFwRnJlZSdpbmcgaXQuIEl0J3MKCXJlZHVuZGFudC4KCgkqIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTb21lIG1pc3NpbmcgY29uc3QgY29ycmVjdG5lc3MgZml4ZXMuCgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvbGUuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBwYXJ0aWFsIFZ4RCBzdXBwb3J0LgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNvbW1lbnQgYWJvdXQgQ0xJUEJPQVJEX1NldENsaXBib2FyZE93bmVyLgoKCSogZGxscy9kbWJhbmQvZG11dGlscy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVidWcgZml4ZXMgYW5kIGNsZWFudXAuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5lcywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgU3BhbmlzaCB0cmFuc2xhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CgktIEZpbmlzaCBvZmYgdGhlICJSZW1vdmUgQXBwbGljYXRpb24iIGJ1dHRvbi4KCS0gQWxsb3cgcmVtb3ZhbCBvZiBrZXlzIGZyb20gdGhlIG92ZXJsYXkuCgktIE9uZSBvciB0d28gd2hpdGVzcGFjZSBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIERvIG5vdCBwcmludCBGSVhNRSBpbiBYMTFEUlZfR2V0S2V5Ym9hcmRMYXlvdXQgaWYgZHdUaHJlYWRpZAoJICBpZGVudGlmaWVzIGN1cnJlbnQgdGhyZWFkLgoJLSBNYWtlIFgxMURSVl9HZXRLZXlib2FyZExheW91dExpc3QgZm9sbG93IHRoZSBzYW1lIHJ1bGUgYXMKCSAgWDExRFJWX0dldEtleWJvYXJkTGF5b3V0IGFuZCBYMTFEUlZfR2V0S2V5Ym9hcmRMYXlvdXROYW1lIGZvciBDSksKCSAgbG9jYWxlcy4KCS0gVGhlcmUgaXMgbm8gbmVlZCB0byBoYXZlIDB4ZTAwMSBpbiB0aGUgaGlnaCB3b3JkIG9mIEphcGFuZXNlCgkgIGtleWJvYXJkIGxheW91dHMgbGNpZHMgaW4gbWFpbl9rZXlfdGFiLCB0aGUgYWJvdmUgQVBJcyB0YWtlIGNhcmUgb2YKCSAgaXQuCgktIEhpZ2ggd29yZCBvZiBhIHJldHVybmVkIGtleWJvYXJkIGxheW91dCBkdXBsaWNhdGVzIGxvdyB3b3JkIGZvciBub24KCSAgQ0pLIGxvY2FsZXMgdW5kZXIgV2luZG93cy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvcnRsLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcmVncmVzc2lvbnMgZnJvbSB0aGUgcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgY29ycmVjdGx5IEREU0RfTElORUFSU0laRSBmbGFnIGZvciBGT1VSQ0MgdGV4dHVyZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHRlc3QgZm9yIHRoZSBsaXN0Ym94IGl0ZW0gaGVpZ2h0LgoKCSogZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL21vbmlrZXIuYywgZGxscy9pdHNzL3N0b3JhZ2UuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglJbXBsZW1lbnRlZCBEbGxDYW5VbmxvYWROb3cuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIFctPkEgY2FsbC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5tYW46CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVHlwb3MvZ3JhbW1hciBmaXhlcy4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvbnN0IGNvcnJlY3RuZXNzIGZpeC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIEFzY2lpIGZ1bmN0aW9ucyBleHBsaWNpdGx5LgoKCSogZGxscy91c2VyL3N0YXRpYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU1NfQ0VOVEVSSU1BR0UgaGFzIGJlZW4gaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgcGFyYWxsZWwgaGFzaGluZyBpbiBDUEVuY3J5cHQgYW5kIENQRGVjcnlwdC4KCUltcGxlbWVudGVkIENQSGFzaFNlc3Npb25LZXkuCgoJKiBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbW1lbnQgb3V0IGFuIGFzc2VydCwgYXMgd2UgZG9uJ3QgeWV0IGltcGxlbWVudCBJUmVtVW5rbm93bi4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3BhbGV0dGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEdldExvZ0NvbG9yU3BhY2V7QSxXfS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBFbnVtRGF0ZUZvcm1hdHNFeHtBLFd9LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBpbmNsdWRlL3Jhcy5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgUmFzQ29ubmVjdGlvbk5vdGlmaWNhdGlvbntBLFd9LAoJUmFzQ3JlYXRlUGhvbmVib29rRW50cnl7QSxXfSwgUmFzRGVsZXRlU3ViRW50cnl7QSxXfSwgUmFzRGlhbHtBLFd9LAoJUmFzRWRpdFBob25lYm9va0VudHJ5e0EsV30sIFJhc0dldENvbm5lY3RTdGF0dXN7QSxXfSwKCVJhc0dldEVudHJ5RGlhbFBhcmFtc1csIFJhc0hhbmdVcFcsIFJhc0dldEVudHJ5UHJvcGVydGllc1csCglSYXNHZXRFcnJvclN0cmluZ3tBLFd9LCBSYXNHZXRQcm9qZWN0aW9uSW5mb3tBLFd9LAoJUmFzUmVuYW1lRW50cnl7QSxXfSwgUmFzU2V0RW50cnlEaWFsUGFyYW1ze0EsV30sCglSYXNTZXRTdWJFbnRyeVByb3BlcnRpZXN7QSxXfS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGcmVlIGFsbG9jYXRlZCBidWZmZXJzLgoKCSogUkVBRE1FOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlbW92ZSBvYnNvbGV0ZSBpbmZvLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBvcHRpb25hbCwgZGVmYXVsdHZhbHVlIGFuZCB2YXJhcmcuCgoJKiBkbGxzL3JzYWVuaC9tcGkuYywgZGxscy9yc2FlbmgvcnNhLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTbWFsbCBidWdmaXhlcyBiYWNrcG9ydGVkIGZyb20gdGhlIExpYlRvbUNyeXB0IHYxLjByYzEgcmVsZWFzZS4KCgkqIGluY2x1ZGUvb2JqaWRsLmlkbDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlZmluaXRpb24gb2YgSUludGVybmFsVW5rbm93bi4KCjIwMDQtMTItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aHJlYWQgc2FmZXR5IGZvciByZWNvcmRzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTW92ZSBuYW1lZCBwaXBlIG1hY3JvcyBpbnRvIHJwYy5jLgoJLSBSZW1vdmUgdW5uZWVkZWQgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDT00gbG9jYWwgc2VydmVycyB1c2luZyB0YWJsZSBtYXJzaGFsaW5nIHRvIGF2b2lkIGRvaW5nIHRoZQoJbWFyc2hhbGluZyBpbiBhIGNoaWxkIHRocmVhZCB3aGVyZSBDT00gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgdGhlIENPTSBzdHViIG1hbmFnZXIsIHJlZmFjdG9yIHRoZSBjdXJyZW50IHN0dWIgY29kZS4KCS0gQmVnaW4gaW1wbGVtZW50aW5nIGludGVyZmFjZSBzdHVicy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUGFyc2Ugb3V0IHRoZSBmdWxsIGZlYXR1cmVzIGJ5IHVzaW5nIHRoZSAnLCcgY2hhcmFjdGVyIGFuZCBkbwoJY29tcGFyaXNvbnMgYmFzZWQgb24gdGhlIGZ1bGwgZmVhdHVyZSBuYW1lcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udGludWUgd2hlbiBhIGR1cGxpY2F0ZSBjb21wb25lbnQgaXMgZm91bmQgYW5kIGxvYWRlZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBSZXdvcmsgaG93IHdlIGhhbmRsZSBGZWF0dXJlIGFuZCBDb21wb25lbnQgU3RhdGVzLiBJIGhhdmUgY29uZmlybWVkCgkgIGZyb20gdGVzdGluZyB0aGF0LCBhbHRob3VnaCBkb2N1bWVudGVkIG5vd2hlcmUsIGhhdmluZyBBRERMT0NBTCBvbgoJICB0aGUgaW5zdGFsbCBsaW5lIG92ZXJyaWRlcyBJTlNUQUxMTEVWRUwuCgktIFRyYWNrIGFsbCBmaWxlcyBleHRyYWN0ZWQgZnJvbSBjYWJpbmVudHMgYXMgdGVtcGZpbGVzIHNvIHRoZXkgY2FuIGJlCgkgIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgaW5zdGFsbCB0byBub3QgbGVhdmUgdW5pbnN0YWxsZWQgYnV0CgkgIHVuY2FiYmVkIGZpbGVzIGxheWluZyBhcm91bmQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgSW5zdGFsbCBGZWF0dXJlcyBzZWxlY3Rpb24gYW5kIGV2YWx1YXRpb24gaW50byBDb3N0RmluYWxpemUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGZvciBlbmQgb2YgaW5zdGFsbCBhY3Rpb25zLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIENyZWF0ZSB0aGUgc2hvcnRjdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGV4aXN0LgoJLSBTZXQgdGhlIElOU1RBTExMRVZFTCBpbiBDb3N0RmluYWxpemUgaWYgaXQgaXMgbm90IHNldC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIHNvbWUgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmMsIGRsbHMvZ2RpL3Rlc3RzL2JydXNoLmMsCgkgIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jLCBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jLAoJICBkbGxzL2x6ZXhwYW5kL3Rlc3RzL2x6ZXhwYW5kX21haW4uYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUNvcnJlY3QgY2FzZXMgd2hlcmUgYXJndW1lbnRzIG9mIG9rKCkgY2FsbHMgZGVwZW5kIG9uIHRoZSBvcmRlciBpbgoJd2hpY2ggdGhleSBhcmUgZXZhbHVhdGVkLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBDcmVhdGVTZXJ2aWNlJ3MgZXJyb3IgY29kZSBmb3IgYSBzZXJ2aWNlIHRoYXQgYWxyZWFkeSBleGlzdHMuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIGEgU3lzdGVtMTZGb2xkZXIgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvdXJsbW9uLmlkbDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIElJbnRlcm5ldEJpbmRJbmZvLCBJSW50ZXJuZXRQcm90b2NvbFJvb3QsIElJbnRlcm5ldFByb3RvY29sU2luawoJYW5kIElJbnRlcm5ldFByb3RvY29sIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYywgZGxscy91c2VyL3Rlc3RzL2NsaXBib2FyZC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy90ZXh0LmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglDb3JyZWN0IGNhc2VzIHdoZXJlIGFyZ3VtZW50cyBvZiBvaygpIGNhbGxzIGRlcGVuZCBvbiB0aGUgb3JkZXIgaW4KCXdoaWNoIHRoZXkgYXJlIGV2YWx1YXRlZC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3BhbGV0dGUuYywgaW5jbHVkZS93aW5nZGkuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEdldElDTVByb2ZpbGVXLCBTZXRJQ01Qcm9maWxle0EsV30sCglVcGRhdGVJQ01SZWdLZXl7QSxXfS4KCUZvcndhcmQgVXBkYXRlSUNNUmVnS2V5IHRvIFVwZGF0ZUlDTVJlZ0tleUEuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggdHlwZWxpYiBnZW5lcmF0aW9uIG9mIENBUlJBWXMuCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBub24tUlREU0MgY2FzZSBmb3IgUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeS4KCgkqIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW5pdGlhbGl6ZSB0aGUgQ09NIGxpYnJhcmllcyBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgd29ya2VyIHRocmVhZCBpbgoJdGhlIEFWSSBzcGxpdHRlci4KCUZpeGVkIHNvbWUgcmV0dXJuZWQgZXJyb3IgY29kZXMuCglTaG93IHJlZmNvdW50IGluIHRoZSBBZGRSZWYvUmVsZWFzZSB0cmFjZXMgaW4gZmlsdGVyLgoJQWRkZWQgMjQgYml0cyBzb3VyY2UgaW4gdGhlIHZpZGVvIHJlbmRlcmVyLgoKCSogdG9vbHMvd2lkbC93aWRsLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUdlbmVyYXRlIG9ubHkgd2FudGVkIGZpbGVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRmFrZSBsaW5lIHN3ZWVwaW5nIG9mIHRoZSBtb25pdG9yLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHVzZSBSdGxDcmVhdGVVbmljb2RlU3RyaW5nRnJvbUFzY2lpeiwgaXQgZG9lc24ndCBwcmVzZXJ2ZSBOVUxMLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbmFibGUgYXN5bmNocm9ub3VzIGRsbCBjdXN0b20gYWN0aW9uIGNhbGxzLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL2F0bF9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBBdGxNb2R1bGVSZWdpc3RlclNlcnZlci4KCgkqIGRsbHMva2VybmVsL2hlYXAuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUluaXRpYWxpemUgZHdPU1ZlcnNpb25JbmZvU2l6ZSBpbiBHbG9iYWxNZW1vcnlTdGF0dXMuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXggdGVzdCBmYWlsdXJlIG9uIFdpbmRvd3MgMjAwMC4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXhlZCBkZWZpbmluZyBESUlEcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggWGxpYiBsb2NraW5nIGluIGNyZWF0ZV9kZXNrdG9wLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUHJvcGFnYXRlIGFwYXJ0bWVudHMgdGhyb3VnaCB0aGUgaW50ZXJtZWRpYXRlIHRocmVhZHMsIG1ha2UgbGlzdGVuZXIKCXRocmVhZCBhcGFydG1lbnQgc2NvcGVkLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBpbmNsdWRlL3Zmdy5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQVZJTWFrZVN0cmVhbUZyb21DbGlwYm9hcmQsIEFWSVNhdmV7QSxXfS4KCUZvcndhcmQgQVZJQnVpbGRGaWx0ZXIsIEFWSUZpbGVDcmVhdGVTdHJlYW0sIEFWSUZpbGVPcGVuLCBBVklTYXZlLAoJRWRpdFN0cmVhbVNldEluZm8sIEVkaXRTdHJlYW1TZXROYW1lIHRvIHRoZWlyIHJlc3BlY3RpdmUgKkEgdmFyaWFudHMuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS5jOiBOZWlsIE9sdmVyIDxvbHZlckBtYXRoLm1jZ2lsbC5jYT4KCVRoZSBmbGFnIGZvciBhIG1vdXNlIGJ1dHRvbiBkb3duIGluIHRoZSBzdHJ1Y3R1cmUgcmV0dXJuZWQgYnkKCUdldERldmljZVN0YXRlIHNob3VsZCBiZSAweDgwIChvbmx5IHRoZSBoaWdoIGJpdCBzZXQpLCBub3QgMHhmZi4KCjIwMDQtMTItMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYywKCSAgZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svc29ja2V0MTYuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMveDExZHJ2L3RleHQuYywKCSAgZGxscy94MTFkcnYveGZvbnQuYywgZGxscy94MTFkcnYveHJhbmRyLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsCgkgIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLAoJICBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgZGxscy9rZXJuZWwvZW52aXJvbi5jLAoJICBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsCgkgIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHNvdW5kL2J1ZmZlci5jLAoJICBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9nZGkvYml0bWFwLmMsCgkgIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9mb250LmMsCgkgIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL21ldGFmaWxlLmMsCgkgIGRsbHMvZ2RpL3BhbGV0dGUuYywgZGxscy9nZGkvcGF0aC5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9pcGhscGFwaS9pZmVudW0uYywgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLAoJICBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLAoJICBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9zaGx3YXBpL21zZ2JveC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91c2VyL2J1dHRvbi5jLAoJICBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL2xpc3Rib3guYywKCSAgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy92bmJ0LnZ4ZC92bmJ0LmMsIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9yc2FlbmgvaGFuZGxlLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCURvIG5vdCBjaGVjayBmb3Igbm9uIE5VTEwgcG9pbnRlciBiZWZvcmUgSGVhcEZyZWUnaW5nIGl0LiBJdCdzCglyZWR1bmRhbnQuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9ycGNydDQvdGVzdHMvcnBjLmMsIGluY2x1ZGUvcnBjZGNlLmg6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglJbXBsZW1lbnRlZCBEY2VFcnJvcklucVRleHQuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAga25vd24gYnV0IHVuaW1wbGVtZW50ZWQgU3lzdGVtUGFyYW1ldGVySW5mbyBhY3Rpb25zLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgU2V0TGF5ZXJlZFdpbmRvd0F0dHJpYnV0ZXMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgTXNpU2V0RXh0ZXJuYWxVSVcuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0byBpbmNsdWRlIHRyYWlsaW5nIGJhY2tzbGFzaCBpbiBwYXRoLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkL2ltcHJvdmVkIFRSQUNFaW5nLgoKMjAwNC0xMi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJsYW5rIHRoZSBwcm9wZXJ0eSBidWZmZXJzIGV2ZW4gaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBmb3VuZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhcm91bmQgYW5kIHJlbmFtZSBzb21lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL21ldGFmaWxlLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLAoJICBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDI1LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyNi5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsCgkgIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlYWRGaWxlIGFuZCBXcml0ZUZpbGUgbXVzdCBiZSBwYXNzZWQgYSBwYXJhbWV0ZXIgZm9yIHRoZSBudW1iZXIgb2YKCWhhbmRsZWQgYnl0ZXMgd2hlbiBubyBvdmVybGFwcGVkIG9wZXJhdGlvbiBpcyBkb25lLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHBlci1wcm9jZXNzIGhvc3RlbnQsIHNlcnZlbnQgYW5kIHByb3RlbnQgYnVmZmVycyBpbnRvCglwZXItdGhyZWFkIGJ1ZmZlcnMuCgoJKiBpbmNsdWRlL2FjbGFwaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIEdldFNlY3VyaXR5SW5mby4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaCBvbiB0aGUgV2luZG93cyB2b2x1bWUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbmNvcnJlY3QgcmV0dXJuIGNvZGUgY2hlY2suCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogUnVzcyBBbmRlcnNzb24gPG1hdGNobW92aWVAeWFob28uY29tPgoJVGhlIFdNX01PVVNFV0hFRUwgbWVzc2FnZSBpcyBzcGVjaWZpZWQgdG8gaGF2ZSBhYnNvbHV0ZSBzY3JlZW4KCWNvb3JkaW5hdGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVVuaWNvZGlmaWVkIGZvbnRkbGcuCgoJKiBkbGxzL3gxMWRydi9jbGlwcGluZy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyB3aXRoIHVuc2lnbmVkIGluZGV4IGluIGRlY3JlYXNpbmcgbG9vcC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvbGRlciByZXNvbHV0aW9uLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYzogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLCB0aGF0J3Mgbm90IGEgbGVhay4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRml4ZWQgcHJvdG90eXBlcyBvZiBhIGNvdXBsZSBvZiBudGRsbCBmdW5jdGlvbnMuCglSZXBsYWNlZCB0aGUgQ2FsbFdpbjMyVG9OdCBtYWNybyBieSBhIHByb3BlciBmdW5jdGlvbi4KCVBCT09MIGNhbm5vdCBiZSBjYXN0IHRvIFBCT09MRUFOLCB3ZSBuZWVkIHRvIHVzZSBhbiBpbnRlcm1lZGlhdGUKCXZhcmlhYmxlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBtb3JlIGZpeGVkIGxlbmd0aCBidWZmZXJzLCByZXdyaXRlIGZ1bmN0aW9ucyB0byByZXR1cm4KCW1hbGxvYydlZCBtZW1vcnkuCgoJKiBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNlbGVjdGluZyBzdHJpbmcgY29sdW1ucyBhbmQgbWF0Y2hpbmcgYWdhaW5zdCBhIHdpbGRjYXJkLgoKCSogZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsCgkgIGRsbHMvZG1pbWUvZ3JhcGguYywgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLAoJICBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywKCSAgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLCBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywgZGxscy9kbXN0eWxlL3N0eWxlLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsIGRsbHMvZG11c2ljL2J1ZmZlci5jLAoJICBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVubmVlZGVkIE5VTEwgY2FzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYSBsb3Qgb2YgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19UaC5yYywgZGxscy9jb21tZGxnL2NkbGdfVWsucmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgJ0FsbCB4eHggcGFnZXMnIHRleHQgaW4gY29tbW9uIHByaW50IGRpYWxvZyBieSBzaW1wbGUgJ0FsbCcuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQZXJmb3JtIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiB3aXRoIGNhY2hlZCBpbmkgZmlsZSBuYW1lLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVW5jb21tZW50IGNhbGwgdG8gRmx1c2hDb25zb2xlSW5wdXRCdWZmZXIgaW4gRmx1c2hGaWxlQnVmZmVycy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWRkIGEgY2hlY2sgaWYgd2UgYXJlIHJ1bm5pbmcgb24gYSB2aXNpYmxlIGRlc2t0b3AuIENyZWRpdHMgdG8gRG1pdHJ5CglUaW1vc2hrb3YgZm9yIHRoZSBlYXN5IHRlc3QuCgoyMDA0LTEyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvYWNsYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBBZGp1c3RUb2tlbkdyb3VwcywgQXJlQWxsQWNjZXNzZXNHcmFudGVkLAoJQ3JlYXRlUHJpdmF0ZU9iamVjdFNlY3VyaXR5LCBDcmVhdGVQcm9jZXNzQXNVc2Vye0EsV30sCglEZXN0cm95UHJpdmF0ZU9iamVjdFNlY3VyaXR5LCBEdXBsaWNhdGVUb2tlbnssRXh9LAoJRW51bURlcGVuZGVudFNlcnZpY2Vze0EsV30sIEdldEVmZmVjdGl2ZVJpZ2h0c0Zyb21BY2x7QSxXfSwKCUNvbnZlcnRTdHJpbmdTZWN1cml0eURlc2NyaXB0b3JUb1NlY3VyaXR5RGVzY3JpcHRvckEuIEltcGxlbWVudGF0aW9ucwoJZm9yIEJ1aWxkRXhwbGljaXRBY2Nlc3NXaXRoTmFtZXtBLFd9LAoJQnVpbGRUcnVzdGVlV2l0aE9iamVjdHNBbmROYW1le0EsV30sCglCdWlsZFRydXN0ZWVXaXRoT2JqZWN0c0FuZFNpZHtBLFd9LgoJQ29ycmVjdCBwcm90b3R5cGUgZm9yIEluaXRpYWxpemVBY2wsIFJ0bENvcHlTaWQgYW5kIFJ0bEdldEFjZS4KCVVzZSB0aGUgQ2FsbFdpbjMyVG9OdCBtYWNybyBvbmx5IHdpdGggZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGFuCglOVFNUQVRVUy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVBvc3Rwb25lIGNyZWF0aW9uIGRpc3Bvc2l0aW9uIGNoZWNrIGluIENyZWF0ZUZpbGUgdW50aWwgaXQncyByZWFsbHkKCXVzZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUluIE9wZW5TQ01hbmFnZXJXKCkgYWxsb3cgbHBEYXRhYmFzZU5hbWUgdG8gYmUgYW4gZW1wdHkgc3RyaW5nLgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQWRkZWQgRDNERVJSX0NPTE9SS0VZQVRUQUNIRUQgYW5kIERER0RJX0dFVEhPU1RJREVOVElGSUVSLgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmMsIHdpbmRvd3MvZGlhbG9nLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJZiBhIGRpYWxvZyB3aXRoIHRoZSBEU19DT05UUk9MIHN0eWxlIGlzIG5vdCB2aXNpYmxlIHRoZW4gaWdub3JlCglkZWZhdWx0IGZvY3VzIGFzc2lnbm1lbnQuCgoJKiBkbGxzL29sZTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3Rlc3RzL21vbmlrZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0ZXN0cyBmb3IgbW9uaWtlciBhbmQgbWFyc2hhbGluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDaGVjayB2YWx1ZXMgcGFzc2VkIGluIHRvIFNldFdpbk1ldGFGaWxlQml0cywgbm90IG91ciBsb2NhbCBjb3B5LgoKCSogZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT3V0cHV0IEVNUl9QT0xZR09OMTYgcmVjb3JkcyB3aGVuIHBvc3NpYmxlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogQ3Jlc3RleiBMZW9uYXJkIDxjbGVvbmFyZEBnby5ybz4KCUNoZWNrIGZvciBtYWxmb3JtZWQgc291cmNlIHJlY3QgaW4gRElCX0RpcmVjdERyYXdTdXJmYWN0X0JsdEZhc3QsIGFuZAoJcmV0dXJuIERERVJSX0lOVkFMSURfUkVDVC4KCgkqIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZnJlZXR5cGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGdWxseSBpbml0aWFsaXplIE5FV1RFWFRNRVRSSUNFWFcgc3RydWN0dXJlIGZvciBiaXRtYXAgZm9udHMuCgoJKiBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRG8gbm90IGNoZWNrIGZvciBub24gTlVMTCBwb2ludGVyIGJlZm9yZSBIZWVwRnJlZSdpbmcgaXQuIEl0J3MKCXJlZHVuZGFudC4KCgkqIGRsbHMvbWFwaTMyL3Rlc3RzL2ltYWxsb2MuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJVGhlcmUgbWF5IGJlIG5vIGRlZmF1bHQgTUFQSSBtYWxsb2MgaW5zdGFsbGVkLgoKCSogZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglZb3UgY2FuIG1ha2UgYW4gaW52aXNpYmxlIHdpbmRvdyB0aGUgYWN0aXZlIHdpbmRvdy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVzcGVjdCB0aGUgc0Rlc2NyaXB0aW9uIHBhcmFtZXRlciBpbiBDcnlwdFNpZ25IYXNoIGFuZAoJQ3J5cHRWZXJpZnlTaWduYXR1cmUuCgoyMDA0LTEyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2RiZ2hlbHAvbXNjdnBkYi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbWFwaTMyL3V0aWwuYywgZGxscy9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3JzYWVuaC9oYW5kbGUuYywgZGxscy9yc2FlbmgvbXBpLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBIGRyaXZlciBkb2VzIG5vdCBoYXZlIHRvIHN1cHBvcnQgYWxsIGZvcm1hdHMuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3VzZXIvZm9jdXMuYywgZGxscy91c2VyL2xpc3Rib3guYywgZGxscy91c2VyL2xzdHIuYywKCSAgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL25ldHdvcmsuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsCgkgIGRsbHMvdXNlci9zdGF0aWMuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgaGVhZGVycyB0byByZWR1Y2UgdW5uZWVkZWQgcmVidWlsZHMuCgoJKiBkbGxzL3VybG1vbi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdGVzdHMvdXJsLmMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgdGVzdCBvZiBCaW5kVG9TdG9yYWdlLgoJLSBBZGRlZCBzb21lIGRlY2xhcmF0aW9ucyB0byB1cmxtb24uaWRsLgoKCSogbGlicy93aW5lL2NvbmZpZy5jOgoJRml4IGxvbmcgc3RhbmRpbmcgcmVncmVzc2lvbiBpbiB0aGUgYnVpbGRpbmcgb2YgdGhlIHNlcnZlciBkaXJlY3RvcnkKCW5hbWUgKGZvdW5kIGJ5IE5pZ2VsIFJvd2UpLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglpeGVkIGNhbGN1bGF0aW9uIG9mIGJ1ZmZlciBzaXplIGluIENSWVBUX0FOU0lUb1VuaWNvZGUgYW5kCglDUllQVF9Vbmljb2RlVG9BTlNJLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0Lmg6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCU1TVkMgcG9ydGluZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXR1cm4gYWN0dWFsIHJlc3VsdCBvbiBlcnJvci4KCgkqIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGUgY3JlYXRpb24gb2YgdGhlIFJHQiBkZXZpY2UuCgoJKiBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBNZWRpYVNhbXBsZSBwYXNzaW5nLiBUaGlzIGlzIHRoZSB1cHN0cmVhbSBmaWx0ZXIgdGhhdCByZWxlYXNlcwoJaXQuCglTZXQgcHBNZWRpYVR5cGUgdG8gTlVMTCB3aGVuIHJldHVybmluZyBTX0ZBTFNFIGluCglJTWVkaWFTYW1wbGVfR2V0TWVkaWFUeXBlIChyZXF1aXJlZCBieSBuYXRpdmUgUXVhcnR6IGRsbCkuCglBZGRlZCBzdXBwb3J0IGZvciAzMi1iaXQgZGVwdGggc291cmNlIGluIHZpZGVvIHJlbmRlcmVyLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglGdWxseSBpbml0aWFsaXNlIHRoZSBzdHJ1Y3R1cmUgdG8gcHJldmVudCBpbGwtZGVmaW5lZCBiZWhhdmlvdXIuCgoJKiBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL21zY21zLnNwZWMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLAoJICBkbGxzL21zY21zL3N0dWIuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBhbGwgZG9jdW1lbnRlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVzcGVjdCBzRGVzY3JpcHRpb24gcGFyYW1ldGVyIGluIENQU2lnbkhhc2ggYW5kIENQVmVyaWZ5U2lnbmF0dXJlLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgdGhlIG1vbnRoIGNhbGVuZGFyIGNoaWxkIHdpbmRvdyBhdXRvLXNpemUgaW5zdGVhZCBvZiB1c2luZyBhCgkgIGhhcmQgY29kZWQgMjAwcHguCgktIFVzZSBTZXRGb2N1cyB3aGVuIHRoZSBjb250cm9sIGlzIGNsaWNrZWQgb24gdG8gZ2V0IHRoZSBjb3JyZWN0CgkgIGJlaGF2aW91ciB3aGVuIGFub3RoZXIgY29udHJvbCBjbGlja2VkIG9uLgoJLSBGb3JjZSB0aGUgV1NfRVhfQ0xJRU5URURHRSBzdHlsZSwgaW5zdGVhZCBvZiBlbXVsYXRpbmcgaXQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgktIG1ha2Ugc3VyZSB0aGF0IHRlc3RzIG1hcmtlZCBhcyB0b2RvX3dpbmUgYW5kIGFjdHVhbGx5IHN1Y2NlZWQgdW5kZXIKCSAgd2luZSB3aWxsIGJlIGNvdW50ZWQgYXMgZmFpbHVyZXMKCS0gcmVtb3ZlIHRvZG9fd2luZSBmcm9tIGEgYnVuY2ggb2YgdGVzdHMKCS0gbG9nIHRoZSBsaW5lIG51bWJlcnMgb2YgdGhlIGFjdHVhbCB0ZXN0cywgbm90IHRob3NlIG9mIGEgaGVscGVyCgkgIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgcGFydGlhbCBoYW5kbGVyIGZvciBXTV9QUklOVENMSUVOVC4KCgkqIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjbmRyLmg6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MgZm9yIHRoZSAjIG5vdCBiZWluZyBhdCB0aGUgc3RhcnQgb2YgdGhlCglsaW5lLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9zZWFyY2guYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBbGxvdyBzZXZlcmFsIC1JIHBhcmFtZXRlcnMgdG8gYmUgZ2l2ZW4gLSBjdXJyZW50bHkganVzdCB0aGUgbGFzdCBpcwoJdXNlZC4gUmVtb3ZlIG9idmlvdXMgd3JvbmcgYmluYXJpZXMgd2hlbiBzZWFyY2hpbmcgZm9yIHRoZSBkZWZpbml0aW9uCglvZiBhIGZ1bmN0aW9ucyBkZWZpbml0aW9uLiBSZWFsbHkganVzdCBzdHJpcCBhICcuZGxsJyBleHRlbnNpb24gYW5kCglub3QgYWxzbyAnLmRsbC5mb29yYmFyLnNwZWMnLgoKCSogdG9vbHMvd2luZWR1bXAvZnVuY3Rpb25fZ3JlcC5wbDogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVdhcnpvbmUgMjEwMCBoYXMgaW4gYSBoZWFkZXIgYSBkZWZpbml0aW9uIHRoYXQgZW5kcyB3aXRoIGEgc2xhc2guIEFzCgknLicgZG9lcyBub3QgaW5jbHVkZSAnXG4nIHdpbmVkdW1wIGtlZXBzIGxvb2tpbmcgYWhlYWQgdW50aWwgZW9mLgoKMjAwNC0xMi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsCgkgIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmMsIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmMsCgkgIGRsbHMvbnRkbGwvdmVyc2lvbi5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMgdG8gcmVkdWNlIHVubmVlZGVkIHJlYnVpbGRzLgoKCSogZGxscy94MTFkcnYveDExZHJ2Lmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCS0gcmVtb3ZlZCB1bnVzZWQgdGFnUEFMRVRURU9CSiBhbmQgdGFnV0lORE9XUE9TCgktIHRhZ0JJVE1BUE9CSiBpcyBkZWNsYXJlZCB0d2ljZSwgcmVtb3ZlZCBvbmUuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglSZW1vdmUgc29tZSBubyBsb25nZXIgbmVlZGVkIEFXIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJRXhwYW5kIHRoZSBDT1BZVEVTVCBtYWNybyB0byBhdm9pZCB0cm91YmxlIHdpdGggNjQtYml0IHR5cGVzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3N0b3B3YXRjaC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xzaWQuYywgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgaGVhZGVycyB0byByZWR1Y2UgdW5uZWVkZWQgcmVidWlsZHMuCgoJKiBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeGVkIGJ1aWxkIHByb2JsZW0gd2l0aCBHTF9WRVJTSU9OXzFfMi4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCZXR0ZXIgZGV0ZWN0IGEgZGxsJ3MgV2luZG93cyB2ZXJzaW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVNoZWxsRXhlY3V0ZUV4LCBFeHRyYWN0SWNvbkV4LCBTSEZpbGVPcGVyYXRpb24sIFNIR2V0RmlsZUluZm8sCglTSEdldFBhdGhGcm9tSURMaXN0IHNwZWMgZW50cmllcyBhbHdheXMgcmVmZXIgdG8gdGhlIEFuc2kKCXZlcnNpb24uIFByb2JsZW0gZm91bmQgYnkgUGF1bCBWcmllbnMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXR1cm4gZmxhZyBmb3IgRFJWTV9NQVBQRVJfUFJFRkVSUkVEX0dFVC4KCgkqIGluY2x1ZGUvbW1kZGsuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGEgbWlzc2luZyBkZWZpbmUuCgoJKiBkbGxzL2tlcm5lbC9tb2R1bGUuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgYSB0eXBvLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUdldFRlbXBQYXRoKigpIHVzZXMgRFdPUkQgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIFVJTlQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjb21tZW50IHRvIHJlZmxlY3QgcmVhbGl0eSBhbmQgaW5kZWVkIHRoZSBjb2RlLgoKCSogaW5jbHVkZS9vYmppZGwuaWRsOiBTZXJnZSBTLiBTcGlyaWRvbm9mZiA8c3NzQGNvcmJpbmEubmV0PgoJSU1lc3NhZ2VGaWx0ZXI6OkhhbmRsZUluY29taW5nQ2FsbCBtdXN0IGJlIEhhbmRsZUluQ29taW5nQ2FsbCBhcyBwZXIKCU1TIGhlYWRlcnMuCgoJKiBkbGxzL3VzZXIvc3RhdGljLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTU19DRU5URVJJTUFHRSBmb3Igc3RhdGljIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGNvZGUgZm9yIGhvdCB0cmFja2luZy4KCS0gRHJhdyBob3QgaXRlbXMgd2l0aCB1bmRlcmxpbmUgYW5kIHdpdGggaGlnaGxpZ2h0IGNvbG91ciB3aXRoCgkgIFRWU19UUkFDS1NFTEVDVCBzdHlsZS4KCS0gU2V0IGN1cnNvciB0byBoYW5kIGN1cnNvciB3aXRoIFRWU19UUkFDS1NFTEVDVCBzdHlsZS4KCS0gTWFrZSBzdXJlIHVJbnRlcm5hbFN0YXR1cyBpcyBjb25zaXN0ZW50IHdpdGggYWN0dWFsIHNjcm9sbGJhciBzdGF0ZQoJICBieSBmb3JjaW5nIHNjcm9sbGJhcnMgb2ZmIGluIFdNX0NSRUFURSBoYW5kbGVyLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBXTV9FTkFCTEUgaGFuZGxlciB0byB1cGRhdGUgY2FjaGVkIGNvbnRyb2wgc3R5bGUgd2hlbiB0aGUKCSAgY29udHJvbCBpcyBkaXNhYmxlZC4KCS0gTW92ZSBiYWNrZ3JvdW5kIGRyYXdpbmcgaW50byBXTV9FUkFTRUJLR05EIGhhbmRsZXIgYW5kIGRyYXcgdGhlCgkgIGJhY2tncm91bmQgZGlmZmVyZW50bHkgd2hlbiBkaXNhYmxlZC4KCS0gQ2hhbmdlIFdNX1BBSU5UIGhhbmRsZXIgdG8gZHJhdyB0ZXh0IHdpdGggdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBhbmQKCSAgd2l0aCB0aGUgY29ycmVjdCBjb2xvdXIgZm9yIHRoZSBzdHlsZS4KCS0gSW5pdGlhbGl6ZSBzZWxlY3RlZCBmaWVsZCB0byAtMSBpbnN0ZWFkIG9mIDAgc28gdGhhdCB0aGUgY29udHJvbAoJICBub3RpY2VzIHdoZW4gZmllbGQgMCBpcyBzZWxlY3RlZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvbW91c2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBtb3VzZSBpbnB1dCB0ZXN0IGNhc2UsIG1ha2UgdGhlIHRlc3QgcGFzcyB1bmRlciBXaW5lLgoKMjAwNC0xMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJQmV0dGVyIEVYRSB2ZXJzaW9uIGNoZWNrIGluIFZFUlNJT05fR2V0TGlua2VkRGxsVmVyc2lvbi4KCgkqIGRsbHMvdW5pY293cy9NYWtlZmlsZS5pbiwgZGxscy91bmljb3dzL21haW4uYywKCSAgZGxscy91bmljb3dzL3VuaWNvd3Muc3BlYzoKCUFkZGVkIGEgZmV3IGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMTYuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLAoJICBkbGxzL2dkaS9iaXRtYXAuYywgZGxscy9nZGkvaWNtLmMsIGRsbHMvZ2RpL3dpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgaGVhZGVycyB0byByZWR1Y2UgdW5uZWVkZWQgcmVidWlsZHMuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5mcjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIEZyZWVCU0QgaW5mb3MuCgoJKiBkbGxzL25ldGFwaTMyL25ldGJpb3MuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW4gTmV0YmlvcygpLAoJLSBzZXQgbmNiX3JldGNvZGUgYW5kIG5jYl9jbWRfY3BsdCBmb3IgTkNCX0FERE5BTUUKCS0gYWx3YXlzIG1ha2Ugc3VyZSBhZGFwdGVycyBoYXZlIGJlZW4gZW51bWVyYXRlZC4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3RzIG9mIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBIGZvciB3aW4yazMuCgoJKiBkbGxzL21zaS9zcWwueTogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUxldCBuZWdhdGl2ZSBudW1iZXIgYmUgcGFyc2VkIGNvcnJlY3RseS4gTmVlZGVkIGZvciBhY2Nlc3NpbmcgYWN0aW9ucwoJd2l0aCBzZXF1ZW5jZXMgc3VjaCBhcyAtMS4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBTY3JlZW5YLCBTY3JlZW5ZLCBDb2xvckJpdHMgaW5zdGFsbGVyIHByb3BlcnRpZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgaW5jbHVkZS9tc2lxdWVyeS5oOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBkZXNjcmlwdGlvbiBmb3IgTXNpR2V0TW9kZSwgTVNJUlVOTU9ERSBjb25zdGFudHMuCgoJKiBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywgZGxscy9xdWFydHovdGVzdHMvZmlsdGVyZ3JhcGguYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1hbnkgZml4ZXMgdG8gdGhlIHN5c3RlbSBjbG9jayBpbXBsZW1lbnRhdGlvbi4KCUVuc3VyZSB0aGVyZSBpcyBhIGNsb2NrIGJlZm9yZSBkb2luZyBhbnkgQWRkUmVmIG9yIFJlbGVhc2UgaW4gdGhlIEFWSQoJc3BsaXR0ZXIuCglJbXByb3ZlZCB0ZXN0cyBhIGJpdC4KCU1pc2MgZml4ZXMgYW5kIHRyYWNlcyBjbGVhbi11cC4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglBbGxvY2F0ZSBjb3JyZWN0IGFtb3VudCBvZiBtZW1vcnkuCgoJKiB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgd2luZXByZWZpeGNyZWF0ZSB0byBydW4gdG8gdGhlIGVuZCB3aGVuIGNvbmZpZ3VyaW5nIGZyb20gdGhlCglzb3VyY2UgdHJlZS4KCjIwMDQtMTItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHRfbWQ0LmMsCgkgIGRsbHMvYWR2YXBpMzIvY3J5cHRfbWQ1LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHRfc2hhLmMsCgkgIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmMsCgkgIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcG93ZXJtZ250LmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy9rZXJuZWwvdXR0aHVuay5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBoZWFkZXJzIHRvIHJlZHVjZSB1bm5lZWRlZCByZWJ1aWxkcy4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWMsCgkgIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmMsCgkgIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglJdCBtYWtlcyBubyBzZW5zZSB0byBleHBvcnQgdGhlIGRsbCBlbnRyeSBwb2ludCBhcyBzdHViLgoKCSogUkVBRE1FLCBsaWJzL3dpbmUvbW1hcC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJTWFrZSB1cyB3b3JrIG9uIEZyZWVCU0QgYWdhaW4gYnkgd29ya2luZyBhcm91bmQgdGhlaXIgZGlmZmVyZW50IG1tYXAoKQoJaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0cyBvZiBHZXRBY2NlcHRMYW5ndWFnZXNBIGZvciB3aW45OC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIHRoZSBBIHZlcnNpb24gb2YgY2FsbHMgd2hlbiBwYXNzaW5nIEFTQ0lJIHN0cmluZ3MuCgoJKiBpbmNsdWRlL2dkaS5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglQQ19TWVNfTUFQUEVEIGlzIHVudXNlZCwgcmVtb3ZlIGl0LgoKCSogZGxscy9zaGx3YXBpL3dzcHJpbnRmLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbmNsdWRlIHNobHdhcGkuaCB0byBnZXQgcHJvdG90eXBlcywgYW5kIGNvcnJlY3QgMiB3cm9uZyBvbmVzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgc2VydmVyL3Byb2Nlc3MuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglBIHN0YXJ0aW5nIHByb2Nlc3MgbXVzdCBvYmV5IHRoZSBTVEFSVEZfVVNFU1RESEFORExFUyBmbGFnIGFuZCB1c2UgdGhlCglzdGFuZGFyZCBpbyBoYW5kbGVzIGZyb20gdGhlIFN0YXJ0dXBJbmZvIHN0cnVjdHVyZSwgZXZlbiBpZiBpdCBpcwoJc3RhcnRpbmcgYSBuZXcgY29uc29sZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfUnUucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFJ1c3NpYW4gdHJhbnNsYXRpb25zLgoKMjAwNC0xMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUdlbmVyYXRlIHN0dWIgZW50cmllcyBvbiB0aGUgZmx5IGZvciBtaXNzaW5nIGVudHJ5IHBvaW50cyBpbnN0ZWFkIG9mCglyZXR1cm5pbmcgYSBkZWFkYmVlZiBwb2ludGVyLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbGNmb3JtYXQuYzoKCUtlbiBCZWxsZWF1IDxqYW1lekBpdmljLnFjLmNhPgoJSW1wbGVtZW50ZWQgRW51bUNhbGVuZGFySW5mbyhBL1cvRXhBL0V4VykuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgZG9jdW1lbnRhdGlvbiB0byBzZXZlcmFsIGZ1bmN0aW9ucy4KCS0gQ29kaW5nIHN0eWxlIGNoYW5nZXMgYWNjb3JkaW5nIHRvIHRoZSBzdHlsZSBNaWtlIGFuZCBJIGhhdmUgYWdyZWVkCgkgIHVwb24gZm9yIENPTSByZWxhdGVkIGZpbGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGVzIGFuZCB0aGUgdW51c2VkIENPTVBPQkpfaEluc3RhbmNlMzIgdmFyaWFibGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCU1pbm9yIGRvY3VtZW50YXRpb24gYWRkaXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ2xlYW51cCBzb21lIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIE9CSlJFRiBvbiB0aGUgd2lyZSBmb3IgZ2VuZXJpYyBtYXJzaGFsaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgX3BvcGVuIGFuZCBfcGNsb3NlLCBhbmQgdXNlIGRlYnVnc3RyX2EgdG8gYXZvaWQgYSBjcmFzaAoJdHJhY2luZyBsb25nIGNvbW1hbmQgbGluZXMuCgoJKiBkbGxzL21zdmNydC9kYXRhLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBkZWJ1Z3N0cl9hIHRvIGF2b2lkIGNyYXNoIHRyYWNpbmcgbG9uZyBjb21tYW5kIGxpbmUuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gbWFrZSBmaWxlIGZ1bmN0aW9ucyAobW9zdGx5KSB0aHJlYWQtc2FmZQoJLSB1cGRhdGUgYSBjb3VwbGUgdHJhY2VzCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIENsZWFyLCBQcmVzZW50IGFuZCBFbmRTY2VuZSBzdXBwb3J0IGFuZCBmaXggYSBidWcgaW4gdGhlIGRyYXdpbmcKCWNvZGUuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBUaG9tYXMgV2VpZGVubXVlbGxlciA8dzNzZWVrQHJlYWN0b3Mub3JnPgoJTWVzc2FnZUJveEluZGlyZWN0QSgpIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoZSBNQl9VU0VSSUNPTiBiaXQgaXMgc2V0Cgl0byBwcmV2ZW50IGFuIGV4Y2VwdGlvbi4KCgkqIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGEgdHlwbyB0aGF0IGRpZG4ndCBhbGxvdyBwY20gdG8gbXVsYXcgY29udmVyc2lvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUlBDX0VfRElTQ09OTkVDVEVEIGluIHByb3hpZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBQaW90ciBDYWJhbiA8cGlvMTNAcG9jenRhLm9uZXQucGw+CglGaXhlZCBkaXNwbGF5IGJ1Zy4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgcmVmZXJlbmNlcyB0byAuL2NvbmZpZ3VyZSBhbmQgTWFrZWZpbGUuaW4gZmlsZXMuCgoJKiBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jLAoJICBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIHRvb2xzL2ZpbmRmdW5jLCB0b29scy9mb250X2NvbnZlcnQuc2g6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSAnPScgaW5zdGVhZCBvZiAnPT0nIGluIC9iaW4vc2ggc2NyaXB0cyB0byBhdm9pZCBwb3J0YWJpbGl0eQoJcHJvYmxlbXMuCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldF9tYWluLmMsIGRsbHMvZ2RpL3JlZ2lvbi5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMveDExZHJ2L3BhbGV0dGUuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJTWlzc2luZyBIZWFwRnJlZSdzICsgMSBMb2NhbEZyZWUgKGZvdW5kIGJ5IHNtYXRjaCkuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaW5jb3JyZWN0IHVuc2lnbmVkIHRlc3QuCgoyMDA0LTEyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYywgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oLAoJICBkbGxzL2dsdTMyL2dsdS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9vbGUzMi9tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9ydGYydGV4dC5oLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBkbGxzL3V4dGhlbWUvdXh0aGVtZWRsbC5oLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaCwgZGxscy93aW5lZG9zL3ZnYS5oLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvbXNpLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2VoLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdXh0aGVtZS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGVycm9ycyBpbiBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zeW5jLmMsCgkgIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE50UXVlcnlUaW1lci4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvY2FsbGJhY2suYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5oLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRkZWQgc3VwcG9ydCBwbHVnLWluIERMTHMgZm9yIHdpbmhlbHAKCS0gYWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgcGx1Zy1pbiBjYWxsYmFjayBpbnRvIHdpbmhlbHAKCS0gcmV3cm90ZSBhbGwgdGhlIG1hY3JvcyBhY2NvcmRpbmdseSAobWFjcm8gZW50cnktcG9pbnQgaGFzIHRvIGhhdmUKCSAgV0lOQVBJIGNhbGxpbmcgY29udmVudGlvbikKCS0gc29tZSBmaXhlcyBmb3IgZW1iZWRkZWQgaW1hZ2VzIGRlY29tcHJlc3Npb24KCS0gbWlzYyBjbGVhbnVwcwoKCSogZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2QvdXRpbHMuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQge0csU31ldFJlbmRlclN0YXRlIGFuZCB7RyxTfWV0VGV4dHVyZVN0YWdlU3RhdGUgc3VwcG9ydCwgYW5kCgllbnN1cmUgdGhlIHN0YXRlYmxvY2sgaXMgZnVsbHkgcG9wdWxhdGVkIGF0IGRldmljZSBzdGFydHVwLgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1ha2UgdGhlIFBDTSBjb252ZXJzaW9uIHJvdXRpbmVzIG9mIG1zYWNtIHByb2R1Y2UgaWRlbnRpY2FsIHJlc3VsdHMgdG8KCXRoZSBuYXRpdmUgZGxsLgoJQWxsb3cgYW55IFBDTSB0byBQQ00gY29udmVyc2lvbiwgbm90IGp1c3QgYWR2ZXJ0aXNlZCBvbmVzLgoKCSogZGxscy9vbGVhdXQzMi9vYWlkbF9wLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IGNvbXBpbGF0aW9uIHdpdGggR0NDIDQuCgoJKiBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBDUFNpZ25IYXNoIGFuZCBDUFZlcmlmeVNpZ25hdHVyZS4KCUFkZGVkIHRlc3RzIGZvciBDUFZlcmlmeVNpZ25hdHVyZS4KCUZpeGVkIG1pbm9yIGJ1Z3MgaW4gaW1wbGdsdWUuYy4KCgkqIGRsbHMvbXNjbXMvaWNjLmMsIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsCgkgIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJVGVzdCBhbmQgaW1wbGVtZW50IFNldENvbG9yUHJvZmlsZUVsZW1lbnQuCglEb2N1bWVudCBtb3JlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsIGRsbHMvaXBobHBhcGkvaWZlbnVtLmgsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywKCSAgZGxscy9pcGhscGFwaS9pcHN0YXRzLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIHVzZSBIZWFwIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBsaWJjIGZvciBtZW0gYWxsb2NhdGlvbgoJLSBkb2N1bWVudCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucwoKCSogZGxscy9zZXR1cGFwaS9xdWV1ZS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVXNlIHByb3BlciB0eXBlIGZvciBmb3VydGggcGFyYW1ldGVyIHRvIFZlclF1ZXJ5VmFsdWVXKCkuCgoJKiBmb250cy93aW5lX2NvdXJpZXIuc2ZkLCBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkLCBmb250cy93aW5lX3N5c3RlbS5zZmQ6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG15IG5hbWUgdG8gdGhlIGZvbnRzIGNvcHlyaWdodCBzdHJpbmcuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgZGV2aWNlIGNsYXNzIGluIERYOCBlbnVtZXJhdGlvbiAoZm91bmQgYnkgUm9iZXJ0IFJlaWYpLgoJRml4ZWQgcmVtYWluaW5nIERYOCBkZXZpY2UgdHlwZXMuCglGYWN0b3JpemVkIGEgYml0IEdldENhcGFiaWxpdGllcyBmb3Iga2V5Ym9hcmQgYW5kIG1vdXNlLgoKCSogaW5jbHVkZS9hbXN0cmVhbS5pZGwsIGluY2x1ZGUvbWxhbmcuaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIENNdWx0aUxhbmd1YWdlIGFuZCBBTU11bHRpTWVkaWFTdHJlYW0gY29jbGFzcyBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGFsd2F5cyBmYWxzZSB0ZXN0LiAgU3BvdHRlZCBieSBFcmljIFBvdWVjaC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL2l0c3Mvc3RvcmFnZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBjb3B5JnBhc3RlIGVycm9yLgoKCSogZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGFycmF5IGluZGV4IG92ZXJmbG93LgoKCSogdG9vbHMvd2luZW1ha2VyOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBjb21waWxhdGlvbiB3aXRoIHBlcmwgNS44LgoKMjAwNC0xMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvdGVzdHMvbXJ1LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IHRoZSByZW1haW5pbmcgTVJVIGZ1bmN0aW9ucywgZml4IGEgY291cGxlIG9mIGRpZmZlcmVuY2VzCglmcm9tIG5hdGl2ZSBjb21jdGwzMiwgYWRkIHRlc3RzIG9mIE1SVSBiZWhhdmlvdXIgYW5kIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0NDAvbXN2Y3J0NDAuc3BlYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgktIGltcGxlbWVudCBfX3Bpb2luZm8sIF9fYmFkaW9pbmZvIGFuZCBfYWRqdXN0X2ZkaXYKCS0gcmVtb3ZlIGFsbCBzdHVicyBvZiBkYXRhIGl0ZW0gZnJvbSB0aGUgc3BlYyBmaWxlLCB0aG9zZSBhY3R1YWxseSBtYXkKCSAgaGlkZSBwcm9ibGVtcy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZCBtaXNzaW5nIEhlYXBGcmVlJ3MgKGZvdW5kIGJ5IHNtYXRjaCkuCgoyMDA0LTEyLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2NvbWJvLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUFkZGVkIHNvbWUgc2FuaXR5IGNoZWNrcyBvbiB3aW5kb3cgZGltZW5zaW9ucy4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglGaXhlZCByZWFkX2RpcmVjdG9yeV9nZXRkZW50cyBmb3IgbGFyZ2UgZGlyZWN0b3JpZXMgKGZvdW5kIGJ5IFJlaW4KCUtsYXplcykuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUNoZWNrIHNlcnZpY2UgZGF0YWJhc2UgbmFtZSBpbiBPcGVuU0NNYW5hZ2VyKCkuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgX2R1cCwgX2R1cDIsIGFuZCBfcGlwZQoJLSBtYWtlIG1heCBmaWxlIGRlc2NyaXB0b3JzIDIwNDggdG8gbWF0Y2ggTVMKCS0gaW5jcmVhc2UgbWF4IGZpbGUgc3RyZWFtcyB0byBtYXRjaAoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWxvYWRlci9jbGFzc2ZhY3RvcnkuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kc291bmQvc291bmQzZC5jLCBkbGxzL2l0c3MvY2htX2xpYi5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbG9jay5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywgd2luZG93cy93aW5wcm9jLmM6CglKYW5pdG9yaWFsOiBDIGJvb2xlYW5zIG11c3Qgbm90IGJlIGNvbXBhcmVkIGFnYWluc3QgVFJVRS4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglNZXJnZWQgc3lzdGVtIG1ldHJpY3Mgc3VwcG9ydCBpbnRvIHN5c3BhcmFtcy5jLCBhbmQgbW92ZWQgdGhhdCBmaWxlIHRvCgl0aGUgZGxscy91c2VyIGRpcmVjdG9yeS4KCgkqIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBzb21lIFNwYW5pc2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgd2luZG93cy9ub25jbGllbnQuYzoKCVJlbW92ZSBhIGZldyBubyBsb25nZXIgbmVlZGVkIDE2LWJpdCBleHBvcnRzIGZyb20gZ2RpMzIuCgoJKiBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3duZC5jOgoJVXNlIGFuIGVzY2FwZSBtZWNoYW5pc20gc2ltaWxhciB0byB0aGUgeDExZHJ2IG9uZSB0byBzZXQgdGhlIERDCglvcmlnaW4uCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHtHLFN9ZXRJbmRpY2VzLCB7RyxTfVZpZXdwb3J0IGFuZCBlbmFibGUgdGhlIGJhc2ljIGRyYXdpbmcKCWZ1bmN0aW9uYWxpdHkgaW50byB3aW5lZDNkIGFuZCBjYWxsIGZyb20gZDNkOS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VvLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Lby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9TaS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglLbGVtZW5zIEZyaWVkbCA8ZnJpazg1QGhvdG1haWwuY29tPgoJTW9yZSBXaW5kb3dzLWxpa2UgQWJvdXQgZGlhbG9nLgoKCSogZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJQWRkZWQgc29tZSB0ZXN0cyBmb3Igd2luLWZvcm1hdCBtZXRhZmlsZXMuCgoJKiBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUluaXRpYWxpemUgdGhlIGhrZXkgbWVtYmVyIHdoZW4gY3JlYXRpbmcgdGhlIHByb3BlcnkgYmFnIG9iamVjdC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSByZW1haW5pbmcgZGVwZW5kZW5jaWVzIG9uIGludGVybmFsIHN0cnVjdHVyZXMgZnJvbSBJbnZva2UuCgoyMDA0LTEyLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbW0zMi9pbW0uYzoKCVJldmVydCBwcmV2aW91cyBjaGFuZ2Ugc2luY2UgaXQgY2F1c2VzIGEgY3Jhc2ggaW4gZGVza3RvcCBtb2RlLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglHZXRVcGRhdGVSZWN0IGNhbiBiZSBjYWxsZWQgd2l0aCBhIE5VTEwgcmVjdC4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBHZXRMYXN0SW5wdXRJbmZvLgoKCSogZGxscy9jb21jdGwzMi9zeXNsaW5rLmM6IFRob21hcyBXZWlkZW5t/GxsZXIgPHczc2Vla0BnbWFpbC5jb20+CglGcmVlIGFsbG9jYXRlZCBmb250IGhhbmRsZXMgd2hlbiBjb250cm9sIGlzIGRlc3Ryb3llZC4KCgkqIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFsbG9jYXRlIHRoZSBwcm9wZXIgc2l6ZSBmb3IgdGhlIFN5c3RlbUNsb2NrIG9iamVjdC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0VHlwZUF0dHIgc2hvdWxkIGRlZXAgY29weSB0aGUgdHlwZWRlc2MuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmMsIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvY29tbTE2LmMsCgkgIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvZGVza3RvcC5jLCBkbGxzL3VzZXIvZGlhbG9nMTYuYywKCSAgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL2ZvY3VzLmMsCgkgIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9ob29rMTYuYywgZGxscy91c2VyL2xpc3Rib3guYywKCSAgZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuaCwKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvc2Nyb2xsLmMsCgkgIGRsbHMvdXNlci9zdGF0aWMuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VpdG9vbHMuYywKCSAgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL3duZDE2LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsCgkgIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmM6CglNb3ZlZCBwcml2YXRlIFVTRVIgZGVmaW5pdGlvbnMgdG8gYSBuZXcgdXNlcl9wcml2YXRlLmggaGVhZGVyLCBhbmQKCXJlbW92ZWQgdGhlIGdsb2JhbCB1c2VyLmguCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSB0aGUgd2luZV9tYXJzaGFsX2lkIHN0cnVjdHVyZSBtb3JlIGxpa2UgdGhlIERDT00gT0JKUkVGCgkgIHN0cnVjdHVyZSwgYnkgcmVwbGFjaW5nIHRoZSBwcm9jZXNzIGlkIGZpZWxkIGJ5IGFwYXJ0bWVudCBpZCAoT1hJRCksCgkgIGNoYW5naW5nIHRoZSB1c2VycyBvZiB0aGUgcHJvY2VzcyBpZCBmaWVsZCB0byB1c2UgdGhlIG5ldyBmaWVsZCBhbmQKCSAgcmVuYW1pbmcgdGhlIG9iamVjdGlkIGZpZWxkIHRvIG9pZC4KCS0gRml4IFN0ZE1hcnNoYWxJbXBsX1VubWFyc2hhbEludGVyZmFjZSB0byBpbnZhbGlkYXRlIGFuZCByZWxlYXNlIGl0cwoJICBzdHViIHdoZW4gZG9pbmcgYSBzYW1lIGFwYXJ0bWVudCBtYXJzaGFsLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggcmV0dXJuIHZhbHVlIG9mIEdldFZhckluZGV4T2ZNZW1JZC4KCgkqIGRsbHMvdXNlci9rYmQxNi5jLCBkbGxzL3VzZXIvbW91c2UxNi5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9zeXNjb2xvci5jLAoJICB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmM6CglNb3ZlZCBzb21lIG1vcmUgMTYtYml0IFVTRVIgZnVuY3Rpb25zIHRvIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdAoJZmlsZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS91c2VyLmgsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIHBhbGV0dGUgZnVuY3Rpb25zIHRvIHVzZXJfbWFpbi5jIGFuZCByZW1vdmVkCgl3aW5kb3dzL3BhaW50aW5nLmMuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgYSB3YXJuaW5nIG9uIEZyZWVCU0QuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBMc2EoU3RvcmUvUmV0cmlldmUpUHJpdmF0ZURhdGEuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCU5vdGlmeSBTdGFydFNlcnZpY2Ugd2hlbiBzZXJ2aWNlIGNvbnRyb2wgZGlzcGF0Y2hlciBoYXMgYmVlbgoJc3RhcnRlZC4gT3RoZXJ3aXNlIFN0YXJ0U2VydmljZSB0ZXJtaW5hdGVzIHNlcnZpY2UgcHJvY2Vzcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBERUNJTUFMX1NFVFpFUk8gbWFjcm8gdGFrZSBhIERFQ0lNQUwgaW5zdGVhZCBvZiBhIERFQ0lNQUwqIGFzCglpbiB0aGUgTWljcm9zb2Z0IGhlYWRlcnMgYW5kIGZpeCB1cCB0aGUgb25seSBjYWxsZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglNYXRjaCBQU0RLIGRlZmluaXRpb25zIGZvciBMUENXQVZFRk9STUFURVguCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0cyBvZiBHZXRBY2NlcHRMYW5ndWFnZXNBIGZvciB3aW45eC9NRS4KCgkqIGRsbHMvbmV0YXBpMzIvbmJ0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbnZlcnQgc29tZSByZWdpc3RyeSBjYWxscyBmcm9tIEEgdG8gVy4KCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLCBkbGxzL3VybG1vbi91bW9uLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBJbXBsZW1lbnRlZCBDcmVhdGVBc3luY0JpbmRDdHguCgktIEFkZGVkIHRlc3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBsaW5raW5nIGlzc3Vlcy4KCgkqIHRvb2xzL2MybWFuLnBsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUGFyYW0gZGVzY3JpcHRpb25zIGNhbiBiZSA+MSBsaW5lcy4KCUFsbG93ICctJyBpbiBjb21tZW50IG5hbWVzLCBjb252ZXJ0IGl0IHRvIHNwYWNlIG9uIGRpc3BsYXkuCglBbGxvdyBzdHJ1Y3QgbWVtYmVycyB0byBiZSBkb2N1bWVudGVkIChhdXRvbWF0aWNhbGx5LCBvbmUgZGF5KS4KCUFsbG93IGZvciBtYW55IGNvbW1lbnRzIHdoaWNoIHN0YXJ0IHdpdGggIm5hbWUgKGRsbC5vcmQpCglkZXNjcmlwdGlvbiIuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVbmljb2RlIGZpeGVzLgoKCSogZGxscy91c2VyL2hvb2suYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluZGljYXRlIHRoYXQgc3VwcG9ydCBmb3IgSENCVF9TWVNDT01NQU5EIGhvb2tzIGlzIGltcGxlbWVudGVkLgoKMjAwNC0xMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUFkZGVkIGEgYnVuY2ggb2YgdGVzdHMgZm9yIHZhcmlvdXMgYmVoYXZpb3JzIG9mIFJlZHJhd1dpbmRvdy4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmM6CglNb3ZlZCB1cGRhdGUgcmVnaW9uIGhhbmRsaW5nIHRvIHRoZSBzZXJ2ZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJQ2hlY2sgZm9yIGZlYXR1cmVzIG1pc3NpbmcgaW4gbWluZ3cgZW52aXJvbm1lbnQsIGFsbG93aW5nIHRvb2xzCglzdWJkaXJlY3RvcnkgdG8gYmUgY3Jvc3MtYnVpbHQgYWdhaW4uCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZsdXNoIGZpbGUgaW4gZnB1dGMgd2hlbiBjaGFyYWN0ZXIgaXMgJ1xuJy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZSB0aGUgU1RVQk1HUiB0aHJlYWQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgaXRzIHB1cnBvc2UuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBJbnZva2UncyBkZXBlbmRlbmNlIG9uIHRoZSBpbnRlcm5hbCBUTEJGdW5jRGVzYyBzdHJ1Y3R1cmUuCglGaXggbWVtb3J5IGxlYWtzIGluIHNvbWUgZmFpbHVyZSBjYXNlcy4KCgkqIHRvb2xzL3dyYy9nZW5yZXMuYzogUmVtb3ZlZCBhbiB1bnVzZWQgZnVuY3Rpb24uCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2hhbmRsZXRhYmxlLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGhhbmRsZSB0YWJsZXMgYW5kIGFkZCB0ZXN0cyBmb3IgdGhlbS4KCgkqIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvaWNjLmMsIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywKCSAgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLAoJICBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTW92ZSBJQ0MgcHJvZmlsZSBoYW5kbGluZyBpbnRvIGl0cyBvd24gZmlsZS4KCVRlc3QgR2V0Q29sb3JQcm9maWxlRnJvbUhhbmRsZSBhbmQgU2V0Q29sb3JQcm9maWxlSGVhZGVyLgoJVGVzdCBhbmQgcGFydGlhbGx5IGltcGxlbWVudCB7RyxTfWV0U3RhbmRhcmRDb2xvclNwYWNlUHJvZmlsZXtBLFd9LgoJSW1wcm92ZSBleGlzdGluZyB0ZXN0cyBhbmQgZml4IGFueSBidWdzIHRoZXkgcmV2ZWFsZWQuCgoJKiBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLCBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwgZGxscy9kZXZlbnVtL2ZhY3RvcnkuYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgZGV2ZW51bSBhbmQgcHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmM6IEZpeGVkIGNvbXBpbGUgZXJyb3IuCgoJKiBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDkvcmVzb3VyY2UuYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgQmFzZVRleHR1cmUgY2xhc3Mgc3VwcG9ydCwgY2FsbCBmcm9tIGQzZDkuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBEb24ndCB1c2UgRHJhd0VkZ2Ugd2l0aCBOVUxMIGRldmljZSBjb250ZXh0LCBpdCdzIGludmFsaWQgY2FsbCBhbmQKCSAgc2V0cyBsYXN0IGVycm9yLgoJLSBUb29sdGlwIGljb25zIG11c3QgYmUgZGVzdHJveWVkIHdpdGggRGVzdHJveUljb24gYW5kIG5vdCB3aXRoCgkgIERlbGV0ZU9iamVjdC4KCS0gUmViYXIgY3Vyc29ycyBtdXN0IGJlIGRlc3Ryb3llZCB3aXRoIERlc3Ryb3lDdXJzb3IgYW5kIG5vdCB3aXRoCgkgIERlbGV0ZU9iamVjdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJSW1wbGVtZW50ZWQgUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXIsIENvbnRyb2xTZXJ2aWNlLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IFRvbWFzIFZhbmVrIDxUb21hcy5WYW5la0BmYmwuY3o+CglGaXhlZCBubyBtZW1vcnkgY29uZGl0aW9uIHRlc3QgaW4gSURpcmVjdFNvdW5kSW1wbF9DcmVhdGUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBXIGNhbGxzIHJhdGhlciB0aGFuIEEgaW4gQ3JlYXRlUGlwZS4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGVudW1lcmF0aW9uIG9mIGpveXN0aWNrcyBpbiBEWDguCglGaXhlZCBzb21lIHRyYWNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0RnVuY0luZGV4T2ZNZW1JZCBzaG91bGQgcmVzcGVjdCBpbnZraW5kIGFuZCByZXR1cm4KCVRZUEVfRV9FTEVNRU5UTk9URk9VTkQgaWYgdGhlIGZ1bmN0aW9uIGNhbm5vdCBiZSBmb3VuZC4KCjIwMDQtMTItMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uaCwgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgkzMiBiaXQgbG93IGxldmVsIGRyaXZlcnMgbm93IHVzZSBhIFVuaWNvZGUgaW50ZXJmYWNlICh1c2VkIHRvIGJlIEFOU0kpOgoJLSBTZW5kIHRoZSAqX0dFVERFVkNBUFMgbWVzc2FnZXMgaW4gdW5pY29kZSBmb3JtYXQgZnJvbSB0aGUKCSAgKkdldERldkNhcHNXIGZ1bmN0aW9uIGFuZCBjYWxsIHRoZSAqR2V0RGV2Q2Fwc1cgZnJvbSB0aGVpciByZXNwZWN0aXZlCgkgIEFuc2kgdmVyc2lvbnMuCgktIE1vZGlmeSBhbGwgbG93IGxldmVsIGRyaXZlcnMgdG8gY29ycmVjdGx5IHByb2Nlc3MgdGhlICpfR0VUREVWQ0FQUwoJICBtZXNzYWdlcyBhcyB1bmljb2RlLgoJLSAqX0dFVERFVkNBUFMgbWVzc2FnZXMgYXJlIG5vdyBtYXBwZWQgZnJvbS90byB1bmljb2RlIGZvciAxNiBiaXQgY29kZS4KCS0gUmVtb3ZlZCBhbGwgU291bmRCbGFzdGVyIG5hbWluZyBvbGRpZXMuCglCZXR0ZXIgdXNlIG9mIHNvbWUgdW5pY29kZSBmdW5jdGlvbnMgKGluc3RlYWQgb2YgQW5zaSkgaW4gd2lubW0uCgoJKiBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsIGluY2x1ZGUvdXNlci5oLCBsaWJzL3VuaWNvZGUvdXRmOC5jLAoJICBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci90cmFjZS5jLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2luZWR1bXAvbWFpbi5jLAoJICB0b29scy93aW5lZHVtcC9uZS5jLCB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9zZWFyY2guYywKCSAgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd21jL21jbC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9zcHkuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQW5vdGhlciByb3VuZCBvZiBjb25zdCBjb3JyZWN0bmVzcyBmaXhlcy4KCgkqIGRsbHMvaW1tMzIvaW1tLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglSZWdpc3RlciB0aGUgSU1FIGNsYXNzIHdoZW4gaW1tMzIuZGxsIGlzIGxvYWRlZC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IG1pc3NpbmcgaW1wb3J0cyBvbiBOVDQuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXR1cm4gdGhlIGFjdHVhbCBkZXZpY2UgaW50ZXJmYWNlIG5hbWUuCglGaXhlcyBzb21lIG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEplYW4tTWljaGVsIERhdWx0IDxqbWRhdWx0QG1hbmRyYWtlc29mdC5jb20+CglBZGRlZCBhbm90aGVyIENhbmFkaWFuIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogRml4ZWQgYSBsZWFrIGluIGdldHNvY2tuYW1lLgoJUmVwbGFjZWQgbWFsbG9jIGJ5IEhlYXBBbGxvYy4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglVc2UgYSBkaXJlY3QgZ2V0ZGVudHMgc3lzY2FsbCBvbiBMaW51eCB0byBhdm9pZCByZWx5aW5nIG9uCglpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHNlZWtkaXIvdGVsbGRpci4KCgkqIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmMsCgkgIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3JlYWRyZXMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQW5vdGhlciBjb3VwbGUgb2YgbWlzc2luZyBzdGF0aWMgZGVmaW5pdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJRGllZ28gUGV0dGVu8iA8ZmxhbWVleWVzQHVzZXJzLmJlcmxpb3MuZGU+CglVcGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIHRlbGxpbmcgdG8gdXNlIHRoZQoJSEtFWV9DVVJSRU5UX1VTRVIvRW52aXJvbm1lbnQga2V5IGluc3RlYWQgb2YgdGhlIFt3aW5lXSBzZWN0aW9uIGZvcgoJUGF0aCwgVGVtcCBhbmQgU3lzdGVtIHZhcmlhYmxlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2hvd1dpbmRvdyBhY3RpdmF0ZXMgb25seSBhIGJlaW5nIG1heGltaXplZCBjaGlsZCB3aW5kb3csIGFkZCBhIGNvdXBsZQoJb2YgbWVzc2FnZSB0ZXN0cyBmb3IgTURJIGNoaWxkIGFjdGl2YXRpb24uCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSByZXNwZWN0IGEgZGlzYXNzZW1ibGUgeCx5IGNvbW1hbmQgKHByaW9yIGJlaGF2aW9yIHdvdWxkIGRvCgl5LXggaW5zdHJ1Y3Rpb25zLCBubyBtYXR0ZXIgaG93IHdpZGUgZWFjaCBpbnN0cnVjdGlvbiB3YXMpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGNyYXNoZXMgaW4gZGRyYXcuZGxsIHdoZW4gbG9hZGluZyBpdCB3aXRob3V0IHgxMWRydiwgZm9yCglpbnN0YW5jZSBmcm9tIHdpbmVwcmVmaXhjcmVhdGUgaW4gYSB0ZXh0IG1vZGUgY29uc29sZS4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBTZXR1cERpT3BlbkRldmljZUludGVyZmFjZS4KCgkqIGRsbHMvbXNpL3JlY29yZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglTZXQgdGhlIG91dCBidWZmZXIgY291bnQgdG8gemVybyBvbiByZWFkIGVycm9yLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRyYW5zcG9zaXRpb24gb2YgNCBieXRlIHZhbHVlcyB3aGVuIHJlYWRpbmcgaW4gdGFibGUgZGF0YSBmcm9tCglzdG9yYWdlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIERlY3J5cHRGaWxlLCBFbmNyeXB0RmlsZSBhbmQKCUdldFNlcnZpY2VEaXNwbGF5TmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglEcmF3U3RhdHVzVGV4dCgpIG11c3Qgbm90IHByb2Nlc3MgcHJlZml4IGNoYXJhY3RlcnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTZW5kIEVNX1NFVE1PRElGWSBhZnRlciBzYXZpbmcuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVNldCBzdF9tb2RlIGJpdHMgaW4gX2ZzdGF0aTY0LgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZGVkIHR3byBtaXNzaW5nIHN0eWxlcy4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUy9XIHZzaGFkZXIgZml4ZXMgKHNwb3R0ZWQgYnkgRXJpYyBQb3VlY2gpLgoKCSogd2luZG93cy9tZGkuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRG9uJ3QgY2FsbCBTZXRTY3JvbGxJbmZvIHdpdGggU0JfQk9USCBiYXIgdHlwZS4KCgkqIGRsbHMvY2FiaW5ldC9mZGkuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRG9uJ3QgdHJ5IHRvIGZyZWUgcG9pbnRlciBmcm9tIHVuaW9uIHRoYXQgaXNuJ3QgdXNlZC4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJbXN2Y3J0X3NwYXduIHNob3VsZCBmcmVlIFNUQVJUVVBJTkZPQSdzIGxwUmVzZXJ2ZWQyLCBub3QgaXRzIGFkZHJlc3MuCgoJKiBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJU2V0IHRoZSB2YWx1ZXMgV1RJbmZvQSByZXR1cm5zIGZyb20gc2NyZWVuIHNpemUgZm9yIENUWF9TWVNFWFRYIGFuZAoJQ1RYX1NZU0VYVFkgY29udGV4dCBmaWVsZHMsIHRvIG1hdGNoIFdpbmRvd3MgYmVoYXZpb3VyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgc29tZSB1bnVzZWQgdGVzdHMuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jLAoJICBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jLCBwcm9ncmFtcy92aWV3L2luaXQuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBXTkRQUk9DIGNhc3RzLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQmV0dGVyIGhhbmRsaW5nIG9mIGVycm9ycyBpbiBSZW5kZXJGaWxlLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggbWlzc2luZyBpbXBvcnRzIG9mIHRoZSB0ZXN0IHByb2dyYW0gb24gTlQ0LgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBkdXBsaWNhdGUgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFsd2F5cyBjcmVhdGUgYSBwcm9wZXJ0eSBzZXQgZm9yIHNlY29uZGFyeSBidWZmZXJzLgoKCSogZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbW92ZSBjKystc3R5bGUgY29tbWVudC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0byBpbnNlcnQgdGhlIHByb3h5IGF1dGhlbnRpY2F0aW9uIGhlYWRlciBpZiBuZWNlc3NhcnkuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogU3Rld2FydCBBbGxlbiA8c3JhbGxlQG13ZWIuY28uemE+CglBZGRlZCBTQVNUIChTb3V0aCBBZnJpY2FuIFN0YW5kYXJkIFRpbWUpLCBjb3JyZWN0ZWQgQ0FUIHRvIENlbnRyYWwKCUFmcmljYW4gVGltZS4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUGVyZm9ybSBob3N0IG5hbWUgaW5pdGlhbGl6YXRpb24gaWYgY29tcHV0ZXIgbmFtZSBjYW4ndCBiZSByZWFkIGZyb20KCXJlZ2lzdHJ5LgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBtaXNzaW5nIGJyZWFrIGluIGVuY3J5cHRfYmxvY2tfaW1wbC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJSW1wbGVtZW50ZWQgU2V0U2VydmljZVN0YXR1cywgUXVlcnlTZXJ2aWNlU3RhdHVzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCU9ubHkgY2FsbCB0ZXN0X3NldF9wcm92aWRlcl9leCgpIG9uY2UuCgoJKiBkbGxzL3NoZWxsMzIvdmVyc2lvbi5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZXZlcnQgc2hlbGwzMiB2ZXJzaW9uIHRvIFdpbjJLIFNQNCBsZXZlbC4KCjIwMDQtMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG9jYXRlIHRoZSBUWVBFQVRUUiByYXRoZXIgdGhhbiBjb3B5aW5nIGl0LgoJRm9yIGEgZHVhbCBpbnRlcmZhY2UgdGhlIGRpc3BpbnRlcmZhY2UncyBjZnVuY3Mgc2hvdWxkIGluY2x1ZGUgdGhlCglpbmhlcml0ZWQgZnVuY3Rpb25zLCBjYlNpemVWZnQgc2hvdWxkIGp1c3QgYmUgdGhlIHNpemUgb2YgSURpc3BhdGNoJ3MKCXZ0YmwgYW5kIHdlIHNob3VsZCBzdHJpcCBUWVBFRkxBR19GT0xFQVVUT01BVElPTi4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3BlbGxpbmcvZ3JhbW1hciBmaXhlcy4KCgkqIHRvb2xzL2ZvbnRfY29udmVydC5zaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBta3RlbXAgaWYgd2UgZG9uJ3QgaGF2ZSB0ZW1wZmlsZS4KCVVzZSB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgZm50MmJkZiBpZiBwcmVzZW50LgoJUXVvdGUgdGhlIHBhdHRlcm4gZ2l2ZW4gdG8gYGZpbmRgLgoJQ29weSB0aGUgZm9udHMgdG8gdGhlIHRlbXAgd29ya2luZyBkaXIgYmVmb3JlIHByb2Nlc3NpbmcuCglBbHdheXMgZGVsZXRlIHRoZSB0ZW1wIGRpcmVjdG9yeSBiZWZvcmUgZXhpdGluZy4KCUluc3RhbGwgZm9udHMgY29tcHJlc3NlZCBieSBkZWZhdWx0LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBzZXJ2aWNlIGNvbnRyb2wgZGlzcGF0Y2hlci4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJQ2xlYW4gdXAgdGVtcCBmaWxlcyBhbHNvIHdoZW4ga2lsbGVkIGJ5IGEgc2lnbmFsLgoKCSogZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9jcHAuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgbGlicy93aW5lL2xkdC5jLCBsb2FkZXIva3RocmVhZC5jLAoJICBsb2FkZXIvcHJlbG9hZGVyLmMsIHNlcnZlci9mZC5jOgoJUGV0ZXIgQ2hhcG1hbiA8OWdmcnllMjAyQHNuZWFrZW1haWwuY29tPgoJRml4IHVwIHNldmVyYWwgaW5saW5lIGFzc2VtYmxlciBibG9ja3Mgc28gdGhhdCB0aGV5IHByb2R1Y2UgY29ycmVjdAoJY29kZSB3aXRoIHRoZSAtZm9taXQtZnJhbWUtcG9pbnRlciBnY2MgZmxhZy4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywKCSAgaW5jbHVkZS9zZXR1cGFwaS5oOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgU2V0dXBEaUJ1aWxkQ2xhc3NJbmZvTGlzdChFeFcpLAoJU2V0dXBEaUNsYXNzR3VpZHNGcm9tTmFtZShXL0V4VyksIFNldHVwRGlDbGFzc05hbWVGcm9tR3VpZChXL0V4VyksCglTZXR1cERpR2V0QWN0dWFsU2VjdGlvblRvSW5zdGFsbFcsIFNldHVwRGlHZXRDbGFzc0Rlc2NyaXB0aW9uKFcvRXhXKSwKCVNldHVwRGlJbnN0YWxsQ2xhc3NXIHBhcnRpYWxseSwgU2V0dXBEaU9wZW5DbGFzc1JlZ0tleShFeFcpLAoJU2V0dXBPcGVuTWFzdGVySW5mLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL2V2ZW50LmMsCgkgIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VtYXBob3JlLmMsCgkgIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBtb3ZlZCBldmVudCwgc2VtYXBob3JlLCBtdXRleCBpbXBsZW1lbnRhdGlvbiBmcm9tIGtlcm5lbDMyIHRvIG50ZGxsCgktIGFkZGVkIG11dGFudCBpbXBsZW1lbnRhdGlvbiBpbiBudGRsbCwgYW5kIHVzZSBpdCBmb3IgbXV0ZXgKCSAgaW1wbGVtZW50YXRpb24gaW4ga2VybmVsMzIKCS0gYWRkZWQgYWNjZXNzIHBhcmFtZXRlciBvbiBldmVudCwgc2VtYXBob3JlLCB0aW1lciBjcmVhdGlvbiBpbgoJICB3aW5lc2VydmVyIChhcyBudGRsbCBpbnRlcmZhY2UgcmVxdWlyZXMgaXQpCgktIGFkZGVkIG1pc3NpbmcgZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS93aW50ZXJubC5oCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeCBjYWJleHRyYWN0IG1lbW9yeSBsZWFrLgoKMjAwNC0xMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MTIwMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0xMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGNyZWF0ZSBhIHN1c3BlbmRlZCB0aHJlYWQgaW4gQ3JlYXRlVGhyZWFkIGFuZCByZXN1bWUgaXQgaWYKCUNSRUFURV9TVVNQRU5ERUQgZmxhZyBpcyBub3Qgc2V0IGFzIFdpbmRvd3MgZG9lcy4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTW92ZWQgY29kZSBzcGVjaWZpYyB0byBDUEdlbktleSwgQ1BEZXJpdmVLZXkgb3IgQ1BJbXBvcnRLZXkgZnJvbQoJbmV3X2tleSBpbnRvIHRoZSByZXNwZWN0aXZlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBpbmNsdWRlL29iamJhc2UuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHNvbWUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIHRvIG9iamJhc2UuaC4KCS0gQWRkIHN0dWJzIGZvciBzZXJ2ZXIgcmVmIGNvdW50aW5nLgoJLSBJbXBsZW1lbnQgSFJFU1VMVCBtYXJzaGFsaW5nLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgZnJvbSAqX0dFVE5VTURFVlMgbWVzc2FnZSBhcyBwZXIgS0I5MDU2Mi4KCS0gRml4IHR5cG8gaW4gTU1EUlZfSW5zdGFsbE1hcC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJSW50cm9kdWNlZCBzZXJ2aWNlIHRocmVhZC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZCBzb21lIG1pcnJvcmluZyBkZWZpbmVzLgoKCSogZGxscy91c2VyL3RleHQuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJSWYgdGhlIGJ1ZmZlciBpcyBubyBsb25nZXIgc3RhdGljIHRoZSBuYW1lcyBzaG91bGQgcmVmbGVjdCB0aGF0LgoJQWxzbyBtaW5pbWlzZSB0aGUgdXNlIG9mIHRoZSBjb25zdGFudC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0Q3VycmVudEh3UHJvZmlsZVcuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCB0aGUgYW5pbWF0aW9uIHRocmVhZCBmcm9tIHdhaXRpbmcgb24gaXRzZWxmIHdoZW4gaXQgc3RvcHMuCgoyMDA0LTExLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLAoJICBkbGxzL2NyeXB0MzIvbWFpbi5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYywKCSAgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jLAoJICBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zdmNydC9kaXIuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvb2xlZGxnL2luc29iamRsZy5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9ycGNydDQvY3Byb3h5LmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsCgkgIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvdXNlci9leHRpY29uLmMsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWRvcy9wcGRldi5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L2RpYl9jb252ZXJ0LmMsIGRsbHMveDExZHJ2L2RpYl9kc3Rfc3dhcC5jLAoJICBkbGxzL3gxMWRydi9kaWJfc3JjX3N3YXAuYywgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi9vcGVuZ2wuYywKCSAgZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi94Zm9udC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgbGlicy91bmljb2RlL2NwdGFibGUuYywgbGlicy91bmljb2RlL3djdG9tYi5jLAoJICBwcm9ncmFtcy9ycGNzcy9lcG1hcF9zZXJ2ZXIuYywgcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLCBzZXJ2ZXIvZGVidWdnZXIuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvbnN0IGNvcnJlY3RuZXNzIGZpeGVzLgoKCSogd2luZG93cy9tc2dib3guYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUltcGxlbWVudCB0YXNrIG1vZGFsIG1lc3NhZ2UgYm94ZXMuCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgSUludGVybmV0Wm9uZU1hbmFnZXIgaW50ZXJmYWNlLgoJLSBBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBDb0ludGVybmV0Q3JlYXRlWm9uZU1hbmFnZXIgZnVuY3Rpb24uCgktIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgVXJsTWtHZXRTZXNzaW9uT3B0aW9uIGFuZCBjb3JyZWN0ZWQKCSAgZGVjbGFyYXRpb24gb2YgVXJsTWtTZXRTZXNzaW9uT3B0aW9uLgoJLSBDb2RlIGNsZWFudXAuCgoJKiBkbGxzL21zY21zL2hhbmRsZS5jLCBkbGxzL21zY21zL21zY21zLnNwZWMsIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLAoJICBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUluZnJhc3RydWN0dXJlIGZvciBoYW5kbGluZyBJQ0MgcHJvZmlsZXMuCglBbHdheXMgbG9hZCBjb2xvciBwcm9maWxlcyBpbnRvIG1lbW9yeS4KCUltcGxlbWVudCBhbmQgdGVzdCBHZXRDb2xvclByb2ZpbGVFbGVtZW50IGFuZCBHZXRDb2xvclByb2ZpbGVIZWFkZXIuCglJbXBsZW1lbnQgR2V0Q29sb3JQcm9maWxlRnJvbUhhbmRsZSBhbmQgU2V0Q29sb3JQcm9maWxlSGVhZGVyLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBBZGFtIEQuIE1vc3MgPGFkYW1AZ2ltcC5vcmc+CglGaXggY29tcGlsYXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUFnYWluIHJlbmFtZSBnZXRrZXkoKSBhbmQgc2V0a2V5KCkgZm9yIEZyZWVCU0QuCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvciBhIDE1LzE2IGJwcCBkaWIgd2Ugc2VuZCBSR0IgdHJpcGxlcyB0byB0aGUgcHJpbnRlciBzbyB0aGUgc2l6ZQoJbXVsdGlwbGllciBpcyAzIG5vdCAyLgoKCSogZGxscy9yc2FlbmgvTWFrZWZpbGUuaW4sIGRsbHMvcnNhZW5oL2Rlcy5jLCBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jLAoJICBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5oLCBkbGxzL3JzYWVuaC9pbXBsb3NzbC5jLAoJICBkbGxzL3JzYWVuaC9pbXBsb3NzbC5oLCBkbGxzL3JzYWVuaC9tZDIuYywgZGxscy9yc2FlbmgvbXBpLmMsCgkgIGRsbHMvcnNhZW5oL3JjMi5jLCBkbGxzL3JzYWVuaC9yYzQuYywgZGxscy9yc2FlbmgvcnNhLmMsCgkgIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3JzYWVuaC90b21jcnlwdC5oOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW5jb3Jwb3JhdGVkIExpYlRvbUNyeXB0IGNvZGUgaW50byByc2FlbmggdG8gZ2V0IHJpZCBvZiBPcGVuU1NMCglkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLCBkbGxzL2QzZHhvZi9tYWluLmMsIGRsbHMvbXByL21wci5zcGVjLAoJICBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglFbnN1cmUgRGxsQ2FuVW5sb2FkTm93IGlzIGEgdHJ1bHkgdm9pZCBmdW5jdGlvbiwgYW5kIGdpdmUgaXQgYSB1bmlxdWUKCW5hbWUgc28gaXQgY2FuIGJlIGRvY3VtZW50ZWQgcGVyLWRsbC4KCgkqIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi9pbWFsbG9jLmMsCgkgIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21hcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tYXBpMzIvdGVzdHMvaW1hbGxvYy5jLCBkbGxzL21hcGkzMi90ZXN0cy91dGlsLmMsCgkgIGRsbHMvbWFwaTMyL3V0aWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgRGxsTWFpbiwgRGxsQ2FuVW5sb2FkTm93LCBXcmFwUHJvZ3Jlc3MsCglNQVBJR2V0RGVmYXVsdE1hbGxvYywgSXNCYWRCb3VuZGVkU3RyaW5nUHRyLCBVRnJvbVN6LCBVbEZyb21TekhleCwKCUNiT2ZFbmNvZGVkLgoJQWRkIHRlc3RzIGZvciB0aGUgYWJvdmUuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFBhc3MgaW5mb1B0ciBhcm91bmQgaW4gbW9udGggY2FsZW5kYXIgY29udHJvbC4KCS0gQWRkIHN1cHBvcnQgZm9yIFdNX1NFVEZPTlQgYW5kIFdNX0dFVEZPTlQgbWVzc2FnZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeGVkIGEgZmV3IG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJTWVyZ2UgVW5pY29kZSBhbmQgQVNDSUkgdmVyc2lvbnMgb2YgU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXIuCglJbXBsZW1lbnQgU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJBIG9uIHRoZSB0b3Agb2YKCVN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyVy4KCUdldCByaWQgb2YgSEVBUF9zdHJkdXBXdG9BLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBuZXcgc3R5bGUgYmVmb3JlIHJlZHJhd2luZyBhbmQgcmVwb3NpdGlvbmluZyB0aGUgY29udHJvbC4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWxsb3cgTkNCUkVTRVQgYW5kIE5DQkFERE5BTUUgdG8gd29yayBldmVuIGlmIHRoZXJlIGFyZSBubyBhZGFwdGVycy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglHZXRNb2R1bGVIYW5kbGVBLT5HZXRNb2R1bGVIYW5kbGVXLgoKCSogREVWRUxPUEVSUy1ISU5UUzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBhIEZJWE1FIHN0eWxlIHRoYXQgd2lsbCBhY3R1YWxseSBjb21waWxlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHYXRoZXIgYWxsIERyYXdUZXh0IGZsYWdzIHRvZ2V0aGVyLCBjb252ZXJ0IHRoZW0gdG8gaGV4IGZvcgoJcmVhZGFiaWxpdHkuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRHJhd1RleHRFeCBzaG91bGQgYWxsb2NhdGUgdGV4dCBidWZmZXIgb24gc3RhY2sgZm9yIHRocmVhZCBzYWZlbmVzcy4KCjIwMDQtMTEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2Vudi5jOgoJRml4ZWQgUnRsRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX1UgdG8gbm90IGRlcGVuZCBvbiB0aGUgc3RyaW5nIGJlaW5nCgludWxsLXRlcm1pbmF0ZWQgKHNwb3R0ZWQgYnkgQWxleGFuZGVyIFlhd29yc2t5KS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSB0ZXN0cyBmb3IgdGltZXIgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmgsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYzoKCUdldCByaWQgb2YgdGhlIGNsaWVudC1zaWRlIHdpbmRvdyB0aW1lciBzdHJ1Y3R1cmVzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3RyYWNlLmM6CglDb252ZXJ0ZWQgdGhlIHRpbWVyIGxpc3QgdG8gdXNlIHN0YW5kYXJkIGxpc3QgZnVuY3Rpb25zLgoJQWxsb2NhdGUgYSB0aW1lciBpZCB3aGVuIHRoZSB3aW5kb3cgaXMgMCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlCgljbGllbnQgdG8gZG8gaXQuCglBbGxvdyBzZXR0aW5nIHRpbWVycyBvbiB3aW5kb3dzIGJlbG9uZ2luZyB0byBvdGhlciB0aHJlYWRzIChmb3VuZCBieQoJTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jLCBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywKCSAgcHJvZ3JhbXMvdmlldy92aWV3LmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTWFkZSBzb21lIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIHN0YXRpYy4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCBtaXNzaW5nIDwvc2VjdDI+IHRhZy4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJbXBsZW1lbnQgTWF0ZXJpYWwsIENsaXAgcGxhbmUgYW5kIExpZ2h0IHN1cHBvcnQgcGx1cwoJTXVsdGlwbHlUcmFuc2Zvcm0uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzogR3VubmFyIERhbHNuZXMgPGhhcmRvbkBvbmxpbmUubm8+CglBZGRlZCBhIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgQ3JlYXRlRGlyZWN0b3J5QS9XIGRvZXMgbm90IGNyZWF0ZQoJbXVsdGlwbGUgbm9uLWV4aXN0aW5nIGRpcmVjdG9yaWVzIGluIHRoZSBwYXRoIGdpdmVuLgoKCSogZGxscy91c2VyL2NvbWJvLmM6IEVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJRjQga2V5IGZsaXBzIHRoZSBsaXN0Ym94IGluIGRlZmF1bHQgKG5vdCBleHRlbmRlZCBVSSkgbW9kZS4KCgkqIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQVZJIGRlY29tcHJlc3NvcjoKCS0gTWFrZSBjb3BpZXMgb2YgYml0bWFwIGhlYWRlciBmcm9tIG1lZGlhIHR5cGUgZm9yIGlucHV0IGFuZCBvdXRwdXQKCSAgYW5kIHVwZGF0ZSB0aGVtIHdoZW4gbmVlZGVkLgoJLSBGaXhlZCBzdWJ0eXBlIGZvciAzMi1iaXQgZGVwdGggaW4gUXVlcnlBY2NlcHQuCglBVkkgc3BsaXR0ZXI6CgktIEZpeGVkIGhhbmRsaW5nIG9mIHJlYyBsaXN0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Dcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9KYS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBzb21lIG9wdGlvbnMgdG8gcG9wdXAgbWVudS4KCgkqIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmM6IEFkZGVkIG1pc3NpbmcgQ29Jbml0aWFsaXplLgoKCSogZGxscy9vbGUzMi9lcnJvcmluZm8uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVHJhY2UgdGhlIE9MRSBlcnJvciBpbmZvIHN0cmluZ3MuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBJbXByb3ZlIE9MRSBmdW5jdGlvbiBkb2N1bWVudGF0aW9uLgoJLSBCYWlsIG91dCB3aXRoIENPX0VfTk9USU5JVElBTElaRUQgd2hlbiBhcHQgaXMgbnVsbC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ0ZNX0dFVFNQRUMgYWx3YXlzIHJldHVybnMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdC4KCjIwMDQtMTEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3dpbnByb2MuaCwgZGxscy91c2VyL3duZDE2LmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdGltZXIuYzoKCVRha2UgYWR2YW50YWdlIG9mIHRoZSBuZXcgd2lucHJvYyBoYW5kbGluZyB0byBtb3ZlIHNvbWUgbW9yZSBmdW5jdGlvbnMKCXRvIDE2LWJpdCBmaWxlcy4KCVRJTUVSX0lzVGltZXJWYWxpZCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IG5vdyB0aGF0IHdpbnByb2NzIGFyZSBuZXZlcgoJZnJlZWQuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIGlzX3ZhbGlkX3dpbnByb2MgdG8gYXZvaWQgYmVpbmcgb3B0aW1pemVkIG91dCBieSByZWNlbnQgZ2NjCgl2ZXJzaW9ucy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIEdldC9TZXQgVHJhbnNmb3JtIHN1cHBvcnQsIHBsdXMgQmVnaW5TY2VuZSAoZG9lcyBub3RoaW5nKS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGZpbGUgbmFtZSB3aGVuIG9wZW5pbmcgTlVMLgoKCSogdG9vbHMvd2luZS5pbmY6IEhhamltZSBTZWdhd2EgPGhhamltZUBzaWRlbmV0LmRkby5qcD4KCU1ha2UgZm9sZGVycyBvcGVuIGNvcnJlY3RseSBpbiBXaW5kb3dzIEV4cGxvcmVyLgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVwZGF0ZWQgUEFDS0FHSU5HIGhvd3RvLgoKCSogZGxscy93aW5lcHMvcHBkLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IHNzY2FuZnMgd2l0aCBhICJDIiBsb2NhbGUgc28gdGhhdCB0aGV5IHN0aWxsIHdvcmsgd2l0aCBuZXcKCWdsaWJjcyBpbiBhIGxvY2FsZSBkb2Vzbid0IHVzZSBhICcuJyBhcyBhIGRlY2ltYWwgc2VwYXJhdG9yLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIFJlYWRGaWxlL1dyaXRlRmlsZSBmYXVsdCBoYW5kbGluZywgbWFrZSBpdCBwYXNzIHVuZGVyCglXaW5lLgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3Rlc3RzL2VkaXQuYzoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CgktIEZpeCB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiB0ZXh0IGluIHNpbmdsZS1saW5lIGVkaXQgY29udHJvbHMuCgktIEFkZCB0ZXN0cyBmb3IgdGhpcy4KCgkqIGRsbHMvd2ludGFiMzIvY29udGV4dC5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CgktIEVuc3VyZSB0aGF0IGlmIGJ1ZmZlciBwb2ludGVyIGlzIG51bGwsIHF1ZXVlIGlzIGZsdXNoZWQuCgktIEVuc3VyZSB0aGF0IGNvcnJlY3QgcGFja2V0cyBhcmUgY29waWVkIGludG8gb3V0cHV0IGJ1ZmZlci4KCS0gVXNlIG1lbW1vdmUgd2hlbiBtb3ZpbmcgcGFja2V0cyB3aXRoaW4gcXVldWUsIGFzIHNvdXJjZSBhbmQgZGVzdAoJICB3aWxsIHR5cGljYWxseSBvdmVybGFwLgoJLSBXaGVuIG1vdmluZyBwYWNrZXRzIGluIHF1ZXVlLCBlbnN1cmUgY29ycmVjdCBudW1iZXIgb2YgcGFja2V0cyBhcmUKCSAgbW92ZWQuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgbGltaXQgdGhlIHNpemUgb2YgdGhlIHByb3BlcnR5IHRoYXQgY2FuIGJlIHJldHJpZXZlZCBieQoJICBNc2lHZXRQcm9wZXJ0eS4KCS0gTWFrZSBNc2lHZXRQcm9wZXJ0eSBBL1cgaW1wbGVtZW50YXRpb25zIG1vcmUgY29uc2lzdGVudC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBjb21waWxhdGlvbiBvbiBzeXN0ZW1zIHdoaWNoIGRvIG5vdCBoYXZlIDxtbnRlbnQuaD4uCgoyMDA0LTExLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3dpbnByb2MuaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RlZmRsZy5jLAoJICB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQ2hhbmdlZCB3aW5wcm9jIGFsbG9jYXRpb24gdG8gYmUgYmFzZWQgb25seSBvbiB0aGUgcHJvY2VkdXJlIGFkZHJlc3MsCgl0byBhdm9pZCB0aGUgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHdpbnByb2NzIGZvciBlYWNoIHdpbmRvdyBhbmQgY2xhc3MuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglNb3JlIHBvcnRhYmxlIFBPSU5UU1RPUE9JTlQgbWFjcm8uCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBQcmV2ZW50IHVzZSBvZiBNQUtFUE9JTlRTIGluIFdpbmUgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglBdm9pZCB1c2luZyB0aGUgTUFLRVBPSU5UUyBtYWNybywgaXQncyBicm9rZW4gb24gYmlnIGVuZGlhbi4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIGluZGV4YnVmZmVyIHN1cHBvcnQgaW50byB3aW5lZDNkLgoKCSogZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE9sZUR1cGxpY2F0ZURhdGEuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGNvcnJlY3QgZXJyb3IgY29kZSBpbiBFbnVtUHJpbnRlcnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggb2ZuLm5GaWxlT2Zmc2V0IHdoZW4gbXVsdGlwbGUgZmlsZXMgYXJlIHNlbGVjdGVkLgoKCSogZGxscy9nZGkvYnJ1c2guYywgZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3Rlc3RzL2JydXNoLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUNyZWF0ZUJydXNoSW5kaXJlY3Qgc2hvdWxkIG5vdCByZXR1cm4gYSBzdG9jayBicnVzaC4KCgkqIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gREMgaW50ZXJuYWxzIGZyb20gbWV0YWZpbGUgZHJpdmVyLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVzZWxlc3MgY2FsbHMgdG8gSXNCYWRSZWFkUHRyIGZyb20gUmVhZEZpbGUgYW5kIFdyaXRlRmlsZS4KCjIwMDQtMTEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglGaXhlZCBoYW5kbGluZyBvZiBOVUxMIHBvaW50ZXIgaW4gUGVla01lc3NhZ2VXLCB3aXRoIHRlc3QgKHJlcG9ydGVkIGJ5CglFcmljIEZyaWFzKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJTG9vayBmb3IgbGNtcy5oIGluIGxjbXMvbGNtcy5oLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUFwcGVuZCAuZGxsIGV4dGVuc2lvbiBpbiBhbGwgY2FzZXMgKHNwb3R0ZWQgYnkgTWlrZSBIZWFybikuCgoJKiBkbGxzL2Ftc3RyZWFtL3ZlcnNpb24ucmMsIGRsbHMvY2FyZHMvdmVyc2lvbi5yYywKCSAgZGxscy9kM2Q4L3ZlcnNpb24ucmMsIGRsbHMvZDNkOS92ZXJzaW9uLnJjLCBkbGxzL2QzZGltL3ZlcnNpb24ucmMsCgkgIGRsbHMvZDNkcm0vdmVyc2lvbi5yYywgZGxscy9kM2R4b2YvdmVyc2lvbi5yYywgZGxscy9kZHJhdy92ZXJzaW9uLnJjLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywgZGxscy9kaW5wdXQvdmVyc2lvbi5yYywKCSAgZGxscy9kaW5wdXQ4L3ZlcnNpb24ucmMsIGRsbHMvZG1iYW5kL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1jb21wb3MvdmVyc2lvbi5yYywgZGxscy9kbWltZS92ZXJzaW9uLnJjLAoJICBkbGxzL2RtbG9hZGVyL3ZlcnNpb24ucmMsIGRsbHMvZG1zY3JpcHQvdmVyc2lvbi5yYywKCSAgZGxscy9kbXN0eWxlL3ZlcnNpb24ucmMsIGRsbHMvZG1zeW50aC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtdXNpYy92ZXJzaW9uLnJjLCBkbGxzL2RtdXNpYzMyL3ZlcnNpb24ucmMsCgkgIGRsbHMvZHBsYXkvdmVyc2lvbi5yYywgZGxscy9kcGxheXgvdmVyc2lvbi5yYywgZGxscy9kcG5ldC92ZXJzaW9uLnJjLAoJICBkbGxzL2RwbmhwYXN0L3ZlcnNpb24ucmMsIGRsbHMvZHNvdW5kL3ZlcnNpb24ucmMsCgkgIGRsbHMvZHN3YXZlL3ZlcnNpb24ucmMsIGRsbHMvZHhkaWFnbi92ZXJzaW9uLnJjLCBkbGxzL2dkaS92ZXJzaW9uLnJjLAoJICBkbGxzL2hoY3RybC5vY3gvdmVyc2lvbi5yYywgZGxscy9tcHIvdmVyc2lvbi5yYywgZGxscy9tc2Rtby9yc3JjLnJjLAoJICBkbGxzL21zaS92ZXJzaW9uLnJjLCBkbGxzL21zd3NvY2svdmVyc2lvbi5yYywKCSAgZGxscy9vcGVuZ2wzMi92ZXJzaW9uLnJjLCBkbGxzL3FjYXAvdmVyc2lvbi5yYywKCSAgZGxscy9xdWFydHovdmVyc2lvbi5yYywgZGxscy9zaGVsbDMyL3ZlcnNpb24xNi5yYywKCSAgZGxscy93aW5pbmV0L3ZlcnNpb24ucmMsIGRsbHMvd2luc29jay92ZXJzaW9uLnJjLAoJICBkbGxzL3dzb2NrMzIvdmVyc2lvbi5yYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVZlcnNpb24gcmVzb3VyY2VzIGNsZWFudXAuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOS9kM2Q5X21haW4uYywKCSAgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gSW1wbGVtZW50IFNldFN0cmVhbVNvdXJjZQoJLSBFbnN1cmUgd2luZWQzZCBvYmplY3RzIG1haW50YWluIGEgcmVmZXJlbmNlIGNvdW50IG9mIGF0IGxlYXN0IHRoYXQKCSAgb2YgdGhlIGQzZHggdmVyc2lvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCS0gTW9yZSBoZWFwaWZpY2F0aW9uLgoJLSBTcGxpdCBkcml2ZSBjb2RlIGludG8gY29yZSwgVUkgYW5kIGF1dG9kZXRlY3QuCgktIEltcGxlbWVudCBkcml2ZSBhdXRvZGV0ZWN0aW9uLgoJLSBTbGlnaHQgcmVkZXNpZ24gb2YgZHJpdmUgdGFiLgoJLSBDb2RlIGNsZWFudXAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBkb24ndCB1c2UgREdBIHZlcnNpb24gMSBzbyByZW1vdmUgdGhlIGNvbmZpZ3VyZSBjaGVjayBmb3IgaXQuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBjaGFuZ2luZyBmcm9tIERJQl9TdGF0dXNfR2RpTW9kIHRvIERJQl9TdGF0dXNfR2RpTW9kLCB3ZSBoYXZlIHRvCglzZXQgdGhlIHByZXZpb3VzIHN0YXR1cyB0byBESUJfU3RhdHVzX0dkaU1vZCwgb3RoZXJ3aXNlIGEKCW5vbi1jb21taXR0aW5nIHVubG9jayBjb3VsZCBpbmNvcnJlY3RseSByZXZlcnQgdGhlIERJQiB0byBhbm90aGVyCglzdGF0ZSwgcmF0aGVyIHRoYW4gdGhlIGNvcnJlY3QgRElCX1N0YXR1c19HZGlNb2QuCgoJKiBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9nZGlvYmouYywKCSAgZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU2V0IHRoZSBtaXRlciBsaW1pdCBpbiB0aGUgREMgc3RhdGUuCglPbmx5IFNldExhc3RFcnJvcigpIGluIG9iamVjdCBmdW5jdGlvbnMgd2hlcmUgbmF0aXZlIGRvZXMuCglUZXN0IHRoZSBlcnJvciBjb21kaXRpb25zIG9mIHRoZSBnZGlvYmogZnVuY3Rpb25zLgoJTWlub3IgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJVXNlIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgV2luZG93cyBsb2NhbGUgYXdhcmUuCgoyMDA0LTExLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy93aW5lL3dpbmUuZGVmLCBsaWJzL3dpbmUvd2luZS5tYXA6CglFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUV4cG9ydCB3aW5lX3B0aHJlYWRfZ2V0X2N1cnJlbnRfdGViLgoKCSogbGlicy93aW5lL3BvcnQuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXggU3BhcmMgYXNzZW1ibHkgY29kZSBpbiB3aW5lX3N3aXRjaF90b19zdGFjay4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBQYXNzIERMTEZMQUdTIHRvIHdpbmVidWlsZCB0b28uCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglEZWZpbmUgIldJTlZFUj0weDA1MDEgX1dJTjMyX1dJTk5UPTB4MDUwMSBfV0lOMzJfSUU9MHgwNjAwIiBmb3IgYWxsCgl0aGUgdGFyZ2V0cy4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zeW1ib2wuYywKCSAgZGxscy9kYmdoZWxwL3R5cGUuYywgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbnMgaW50cm9kdWNlZCB3aGVuIG1vdmluZyBhZGRyZXNzZXMgYXMgNjRiaXQgdmFsdWVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByZXZlbnQgZW52aXJvbm1lbnQgdGVzdCBmcm9tIGNyYXNoaW5nIHdoZW4gZW52aXJvbm1lbnQgaXMgbGFyZ2UuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglBZGRlZCBhZHZwYWNrLmRsbCwgcnNhZW5oLmRsbCwgc3RybWlpZHMubGliLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSGFuZGxlIHVua25vd24gcGFyYW1ldGVycyBtb3JlIGdyYWNlZnVsbHkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4ZWQgS0VZTFAgc3RydWN0dXJlIGZvciBiaWcgZW5kaWFuLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQ2hhbmdlZCBhbGxvY2F0aW9uIG9mIGFyZ3VtZW50cyBpbiBTZWFyY2hQYXRoQSBzbyBwYXRoIGlzIG5vdCBsaW1pdGVkCglieSBzaXplIG9mIFRFQiBzdGF0aWMgYnVmZmVyLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglVbmljb2RpZnkgc3RyaW5nIGNvbnN0YW50cy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3NwbGl0cGF0aC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJc3BsaXRwYXRoIG1haW50YWluYW5jZS4KCgkqIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdXBwb3J0IG1vbm8gcGF0dGVybiBicnVzaGVzIGluIEVNRidzLgoKCSogZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQXZvaWQgbWFnaWMgbnVtYmVyLgoKCSogZGxscy9nZGkvYml0bWFwLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQ3JlYXRlQml0bWFwIHVzaW5nIENyZWF0ZUJpdG1hcEluZGlyZWN0IHNvIHdlIGNhbiBoYW5kbGUKCWZ1bmt5IGFsaWdubWVudCBwYWRkaW5ncy4KCVNldExhc3RFcnJvcigpIG9uIGZhaWx1cmUsIGRvY3VtZW50YXRpb24gY2xlYW51cC4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWxsb3cgbmVnYXRpdmUgbnVtYmVycyBpbiBSQ0RBVEEgcmVzb3VyY2VzIGxpa2UgUkMuRVhFIGRvZXMuCglGaXggZmFsc2Ugb3V0IG9mIDE2IGJpdHMgcmFuZ2Ugd2FybmluZy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJVXNlIHBoeXNEZXYtPnRleHRQaXhlbCBpbnN0ZWFkIG9mIEdldFRleHRDb2xvciBmb3IgRXh0VGV4dE91dC4KCjIwMDQtMTEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL3Rlc3RzL2x6ZXhwYW5kX21haW4uYzoKCUV2YW4gRy4gUGFycnkgPGVwYXJyeUBjcy5obWMuZWR1PgoJQWRkZWQgc29tZSB0ZXN0cyBmb3IgbHpleHBhbmQuCgoJKiBkbGxzL2RiZ2hlbHAvTWFrZWZpbGUuaW4sIGRsbHMvZGJnaGVscC9jb2ZmLmMsIGRsbHMvZGJnaGVscC9tc2MuYywKCSAgZGxscy9kYmdoZWxwL21zY3ZwZGIuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBtb3ZlZCBpbnRvIG5ldyBtc2N2cGRiLmggKG91dCBvZiBtc2MuYykgYWxsIHR5cGVzIGFuZCBkZWZpbmVzIG5lZWRlZAoJICB0byBwYXJzZSBkZWJ1ZyBmaWxlcyBnZW5lcmF0ZWQgYnkgTVMgdG9vbHMKCS0gbW92ZWQgaW50byBjb2ZmLmMgKGFuZCBvdXQgb2YgbXNjLmMpIHRoZSBDT0ZGIGhhbmRsaW5nCgktIGNsZWFuZWQgbG90cyBvZiB0eXBlcyAoYWRkIGNvbnNpc3RlbmN5IGFjcm9zcyBzdHJ1Y3RzKQoJLSB2ZXJzaW9uaW5nIG9mIHNvbWUgZGVmaW5lcyBhbmQgdHlwZXMgKHRvIGZvbGxvdyBNUyB0b29scyBldm9sdXRpb24pCgktIGVuaGFuY2VkIFYyIG9mIHN5bWJvbHMgcGFyc2luZyAoc29tZSBtb3JlIHR5cGVzIHJlY29nbml6ZWQsIHN1cHBvcnQKCSAgb2YgaW1wb3J0ZWQgLnBkYiBmaWxlcykKCS0gYWRkZWQgc3VwcG9ydCBmb3IgbmV3ZXN0IC5wZGIgZm9ybWF0CgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCU1vdmUgdXAgU0VSVl8qIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIFNwYW5pc2ggdHJhbnNsYXRpb25zLgoKCSogaW5jbHVkZS9pY20uaCwgZGxscy9tc2Ntcy9sY21zX2FwaS5oLCBkbGxzL21zY21zL21zY21zLnNwZWMsCgkgIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYywKCSAgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBhbmQgdGVzdCBHZXRDb2xvclByb2ZpbGVFbGVtZW50VGFnLAoJR2V0Q291bnRDb2xvclByb2ZpbGVFbGVtZW50cyBhbmQgSXNDb2xvclByb2ZpbGVUYWdQcmVzZW50LiBTdHViCglHZXRTdGFuZGFyZENvbG9yU3BhY2VQcm9maWxle0EsV30uCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBDb21wYXJlU3RyaW5nQSB3aXRoIExPQ0FMRV9VU0VfQ1BfQUNQIGZsYWcgc2V0IGZyb20gbHN0cmNtcEEgYW5kCglsc3RyY21waUEgaW4gb3JkZXIgdG8gaW1wcm92ZSBzcGVlZC4gQWRkIGEgdGVzdCBjYXNlIGNvbmZpcm1pbmcgdGhhdAoJQ29tcGFyZVN0cmluZyBhbmQgTENNYXBTdHJpbmcgYWNjZXB0IExPQ0FMRV9VU0VfQ1BfQUNQLgoKCSogd2luZG93cy9kZWZ3bmQuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZW1vdmVkIFctPkEgZnJvbSBERUZXTkRfSW1tSXNVSU1lc3NhZ2VXLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9yZXNvdXJjZS5oLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Fbi5yYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBJbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlRXhBIG5vdCBjcmFzaCwgYnkgbWFraW5nCgkgIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGVFeFcgZmlsbCBpbiB0aGUgYnVmZmVyIGNvcnJlY3RseS4KCS0gUmVtb3ZlIHRoZSBkdW1waW5nIG9mIHN0cmluZ3MgdGhhdCB3aWxsIG9ubHkgY29udGFpbiBnYXJiYWdlLgoJLSBEb2N1bWVudCBmdW5jdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglEb24ndCBtZXNzIHVwIHRoZSBtc3ZjcnQgY29kZXBhZ2Ugb24gZS5nLiBfTUJfQ1BfQU5TSS4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUFjY2VsZXJhdG9yIHJlc291cmNlIHN0cnVjdCBmaXggZm9yIHNwYXJjLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIGRlZmF1bHQgZm9udCBmb3IgdGhlIHRyZWV2aWV3IHNob3VsZCBiZSB0aGUgaWNvbiB0aXRsZSBmb250LgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUhhbmRsZSBhIGRlZiBmaWxlIHdoZXJlIHRoZSBuYW1lcyBvZiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBsaXN0ZWQKCXdpdGhvdXQgYmVpbmcgZm9sbG93ZWQgYnkgYW4gZXF1YWxzIHNpZ24gYW5kIGFuIGFsaWFzLgoKCSogZGxscy93aW5lcHMvcHBkLmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4ZWQgZmlsZSBoYW5kbGUgbGVhay4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJUGVybWl0IHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIG9uIHNwYXJjLgoKCSogdG9vbHMvd3JjL2dlbnJlcy5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeGVkIGVycm9yIHdyaXRpbmcgY29udHJvbCBJRHMgaW4gZGlhbG9nZXggb24gc3BhcmMuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZCBzb21lIG1pc3NpbmcgZXJyb3IgdmFsdWVzIGluIFdJTk1NX0Vycm9yVG9TdHJpbmcuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeGVkIGRpYWxvZ2V4IHJlc291cmNlIGxvYWRpbmcgb24gc3BhcmMuCgoJKiBkbGxzL2dkaS9icnVzaC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU2VhcmNoIHRoZSB3aG9sZSB0YWJsZSB3aGVuIGNyZWF0aW5nIHNvbGlkIGJydXNoZXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUFkZGVkIE5PVlQgdGltZXpvbmUgaW5mby4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IGNsaXBwaW5nIGZvciBEcmF3VGhlbWVQYXJlbnRCYWNrZ3JvdW5kLgoKCSogUkVBRE1FOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVXBkYXRlIEZyZWVCU0QgaW5mby4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkZWQgc29tZSBzdHJ1Y3R1cmUgdGFncyBhbmQgZXJyb3IgZGVmaW5lcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIGtlcm5lbDMyLkRlbGV0ZUZpbGVXIGNvcmUgaW1wbGVtZW50YXRpb24gdG8gbnRkbGwuTnREZWxldGVGaWxlLgoKMjAwNC0xMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZToKCVJlbW92ZWQgYSBjb3VwbGUgb2Ygbm8gbG9uZ2VyIG5lZWRlZCBlbnRyaWVzLgoKCSogZGxscy91c2VyL2Rpc3BsYXkuYzogRml4IGNvbmZsaWN0aW5nIHN0cnVjdHVyZSB0YWcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmUgc3RlcCBjbG9zZXIgdG8gZ2V0dGluZyBoYXJkd2FyZSBhY2NlbGVyYXRlZCBjYXB0dXJlIHdvcmtpbmcuCgoJKiBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9zeXN0ZW0uc2ZkLCB0b29scy9zZm50MmZudC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGN1bGF0aW5nIHRoZSBhdmVyYWdlIHdpZHRoIGRvZXNuJ3Qgc2VlbSBwb3NzaWJsZSwgc28gc2V0IGl0CgltYW51YWxseSBpbnN0ZWFkLgoJRml4IHRoZSBjb3B5cmlnaHQgaW4gd2luZV9zeXN0ZW0uCgoJKiBkbGxzL21zY21zL21zY21zLnNwZWMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgSXNQcm9maWxlVmFsaWQuCglEb2N1bWVudCBhbGwgZnVuY3Rpb25zLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgdGVzdHMgb24gTlQuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBFbmdsaXNoIG1lbnUgdGV4dC4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElHcmFwaEJ1aWxkZXIgbWV0aG9kczogQ29ubmVjdCwgUmVuZGVyLCBSZW5kZXJGaWxlICYKCUFkZFNvdXJjZUZpbHRlci4KCUZpeGVkIGZpbHRlciBuYW1lIGdlbmVyYXRpb24gaW4gSUdyYXBoQnVpbGRlcjo6QWRkRmlsdGVyLgoKCSogZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFVzZSBtb3JlIHNwZWNpZmljIGVycm9yIGNvZGVzIHRoYW4gRV9GQUlMLCB3aGVyZSBwb3NzaWJsZS4KCS0gTW92ZSB2dGFibGUgdG8gZW5kLCBnaXZlIGl0IHRoZSBjb25zdCBtb2RpZmllciwgYW5kIHJlbW92ZSB1bm5lZWRlZAoJICBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgYmVnaW5uaW5ncyBvZiBSZWdRdWVyeVZhbHVlRXggdGVzdHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNvcnJlY3Qgb3JkZXJpbmcgb2Ygc29tZSBkZWZpbmVzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRmFsbGJhY2sgdG8gc29tZSBzZW5zaWJsZSBkZWZhdWx0IHZhbHVlcyB3aGVuIHVuZGVybGluaW5nIGFuZCBzdHJpa2luZwoJb3V0IGJpdG1hcCBmb250cy4KCVJvdGF0ZSB0aGUgc3RyaWtlb3V0IGxpbmUgaWYgdGhlIGVzY2FwZW1lbnQgaXMgbm9uLXplcm8uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJQWRkIHRoZSBEVF9OT1BSRUZJWCBmbGFnIHdoZW4gY2FsbGluZyBEcmF3VGV4dCgpIGZvciBzaW5nbGUtbGluZQoJbGlzdHZpZXcgY29udHJvbHMuCgoJKiBkbGxzL21zY21zLy5jdnNpZ25vcmUsIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvdmVyc2lvbi5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIHZlcnNpb24gaW5mb3JtYXRpb24uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBjb2xvcmtleSBjb252ZXJzaW9uLgoJSGFuZGxlIG51bGwgc3VyZmFjZSBwb2ludGVyIHdoZW4gY3JlYXRpbmcgc3VyZmFjZS4KCgkqIGRsbHMvaXRzcy9pdHNzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBpbnRlcmxvY2tlZCBmdW5jdGlvbnMgZm9yIHRocmVhZCBzYWZldHkuCgoJKiBkbGxzL3F1YXJ0ei9lbnVtcGlucy5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBJRW51bVBpbnNJbXBsX05leHQuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnQgU3ltVW5ETmFtZSBhbmQgVW5kZWNvcmF0ZVN5bWJvbE5hbWUgb24gdG9wIG9mCgkgIG1zdmNydC5fX3VuRE5hbWUKCS0gaW1wbGVtZW50IFNZTU9QVF9VTkROQU1FIHN1cHBvcnQKCgkqIGluY2x1ZGUvd2ludXNlci5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGRlZCBzb21lIHN0cnVjdHVyZSB0YWdzLgoKCSogaW5jbHVkZS9tbGFuZy5pZGwsIGluY2x1ZGUvd2lubnQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgX1dJTk5UXyBhcyBleGNsdXNpb24gZGVmaW5lIGZvciBzb3VyY2UgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFwcGVkIEFWSVN0cmVhbU9wZW5Gcm9tRmlsZSB0byBBVklTdHJlYW1PcGVuRnJvbUZpbGVBLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHRyYWlsaW5nIHdoaXRlIHNwYWNlIGludHJvZHVjZWQgaW4gcHJldmlvdXMgcGF0Y2guCglGaXhlZCBJRGlyZWN0U291bmRDYXB0dXJlQnVmZmVyX1N0b3AgdG8gYWxsb3cgYW5vdGhlciBTdGFydCB0bwoJc3VjY2VlZC4KCVJlbW92ZWQgT1NTIGNlbnRyaWMgYnVmZmVyIHJlY3JlYXRpb24gaGFjayB3aGVuIGRvaW5nIGhhcmR3YXJlCglhY2NlbGVyYXRpb24uCglDbGVhbmVkIHVwIGVycm9yIHJlcG9ydGluZyBhbmQgdHJhY2luZy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCU1ha2UgZm91ciBzaHJlZyB0ZXN0cyBwYXNzIG9uIFhQLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBmb3IgU2V0UXVlcnlOZXRTZXNzaW9uQ291bnQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUGFzcyB0aGUgYWRkcmVzcyBvZiB0aGUgaGFuZGxlIHJhdGhlciB0aGFuIGp1c3QgdGhlIGhhbmRsZSB0byBmaXggYQoJY3Jhc2ggd2l0aCBJRS4KCgkqIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBmb3J3YXJkcy4KCjIwMDQtMTEtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSB0aGUgQ2VydFN0b3JlIGNvZGUgYSBsaXR0bGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gU3R1YiBTZXRTZXJ2aWNlT2JqZWN0U2VjdXJpdHkgdG8gcHJldGVuZCB0byB3b3JrIChyZXR1cm4gdHJ1ZSkuCgktIENoYW5nZSBRdWVyeVNlcnZpY2VPYmplY3RTZWN1cml0eSBzbyBpdCBpbml0aWFsaXplcyB0aGUgQUNMIHdpdGggYQoJICBudWxsIERBQ0wsIGFuZCByZXR1cm4gYXMgdGhvdWdoIGl0IHdvcmtlZC4KCS0gQ2hhbmdlZCBRdWVyeVNlcnZpY2VTdGF0dXMgdG8gdGVsbCBpZiB0aGUgc2VydmljZSBpcyBydW5uaW5nIGJ5IHRoZQoJICBwcmVzZW5jZSBvZiBzb21lIG5hbWVkIHNoYXJlZCBzdG9yYWdlIC0gY29waWVkIGZyb20gU3RhcnRTZXJ2aWNlIHdoZW4KCSAgaXQgY2hlY2tzIHRvIHNlZSBpZiBpdHMgYWxyZWFkeSBydW5uaW5nLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVXNlIFNIRGVsZXRlS2V5IHRvIHJlbW92ZSBsZWZ0b3ZlciBrZXlzIGZyb20gdGhlIHNocmVnIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU2V0IGNhY2hlIGJpdG1hcCBkaW1lbnNpb25zIGNvcnJlY3RseSB3aGVuIGEgMHgwIGltYWdlIGxpc3QgaXMgdXNlZC4KCS0gT3B0aW1pemUgV01fU1RZTEVDSEFOR0VEIGhhbmRsZXIgdG8gb25seSByZWRyYXcgd2hlbiBhIENDU18qIHN0eWxlCgkgIGlzIGNoYW5nZWQsIGxpa2UgbmF0aXZlLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUNQQWNxdWlyZUNvbnRleHQ6IFNldCBsYXN0IGVycm9yIHRvIEVSUk9SX1NVQ0NFU1MgaW4gY2FzZSBvZiBzdWNjZXNzLgoKMjAwNC0xMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgYSBmaXJzdCBBQ19DSEVDS19IRUFERVJTLCBmb3JjaW5nIGNoZWNraW5nIG9mIHRoZSBkZWZhdWx0IGluY2x1ZGVzCglldmVuIHdoZW4gYnVpbGRpbmcgd2luZSB3aXRob3V0IFgxMS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBIYW1pc2ggPGhhbWlzaF9ub3NwYW1AeWFob28uY29tPgoJRml4IGZvciBhc3luYyB3cml0ZXMgdG8gY29tbSBwb3J0cy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3RzIG9mIEdldEFjY2VwdExhbmd1YWdlc0EgZm9yIHBsYXRmb21zIDk4LE1FLE5UNC4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBIHRlc3RzIG9uIE5UNCBwbGF0Zm9ybS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSByZWR1bmRhbnQgR1VJRCBjaGVjay4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIHdpbmRvd3Mvc3B5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBkbyBub3QgbW92ZSB1cGRvd24gY29udHJvbCBhbmQgYnVkZHkgaWYgYW4gYWxpZ25tZW50IHdhcyBub3QgcmVxdWVzdGVkCgktIGluIFVETV9TRVRBQ0NFTCBoYW5kbGVyIGRvIG5vdCBmb3JnZXQgdG8gdXBkYXRlIG51bWJlciBvZiBhY2NlbGVyYXRvcnMKCS0gdXBkYXRlIGFycm93cyBpbmZvIGluIFdNX0xCVVRUT05ET1dOIGFzIHdlbGwgYXMgaW4gV01fTU9VU0VNT1ZFCgktIHVzZSBhY2NlbGVyYXRvcnMgaW4gV01fTEJVVFRPTkRPV04gaGFuZGxlcgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRhdGlvbiBvZiBHZXRUaGVtZUJhY2tncm91bmRFeHRlbnQuCglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldFRoZW1lQmFja2dyb3VuZFJlZ2lvbi4KCUNvcnJlY3QgYSBmZXcgY29tbWVudHMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQ2hhbmdlIEFscGhhQmxlbmQgdG8gdXNlIGRlc3RpbmF0aW9uIGRpbWVuc2lvbnMgcmF0aGVyIHRoZW4gc291cmNlLgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCBjcmFzaCB3aGVuIG5vIHRoZW1lIGlzIHNldCBhbmQgYXBwbGljYXRpb24gaWdub3JlcyBlcnJvcnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJSW4gT2xlUGljdHVyZUltcGxfTG9hZCwgYWx3YXlzIHVzZSBESUJfUkdCX0NPTE9SUyBiZWNhdXNlIG5vIGluZGV4ZWQKCXBhbGV0dGUgaGFzIGJlZW4gZGVmaW5lZC4KCjIwMDQtMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBiTnRmVW5pY29kZSBpcyBhIGR1cCcgb2YgYlVuaWNvZGUgc28gcmVtb3ZlIGl0IGFuZCBmaXggdGhlIGZldwoJICBwbGFjZXMgd2hlcmUgaXQgd2FzIHVzZWQuCgktIFJlbW92ZSBhIGxvYWQgb2YgdXNlbGVzcyBOVUxMIGluZm9QdHIgY2hlY2tzLgoJLSBIYXJkY29kZSB0aGUgZGVmYXVsdCBwYWRkaW5nIGxpa2UgbmF0aXZlIGluc3RlYWQgb2YgdXNpbmcgYSB3YWNreSBmb3JtdWxhLgoJLSBSZXBsYWNlIHNvbWUgdGFicyB3aXRoIHNwYWNlcyBhbmQgcmVtb3ZlIE5NSERSIGNhc3RzLgoKCSogZGxscy91c2VyL21lbnUuYzogV2lsbGlhbSBQb2V0cmEgWW9nYSBIIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCUdpdmUgdGhlIGZpcnN0IG1lbnUgaXRlbSBvZiBhIHBvcHVwIG1lbnUgYSBkaXN0YW5jZSBvZiAxIHBpeGVsIHRvIHRoZQoJdG9wIGJvcmRlci4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFdpbGxpYW0gUG9ldHJhIFlvZ2EgSCA8d2lsbGlhbXBvZXRyYUB5YWhvby5jb20+CglGaXggdGhlIHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBzeXN0ZW0gbWVudSBpY29uIG9uIHRoZSBjYXB0aW9uIGJhci4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC90ZXN0cy9jcHAuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTm93IHRoYXQgbmFtZSB1bmRlY29yYXRpb24gd29ya3MsIGZpeCB0aGUgdHlwZSBpbmZvLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvdW5kbmFtZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBfX3VuRE5hbWUgYW5kIF9fdW5ETmFtZUV4IGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCS0gcmV0dXJuICJ3YW50IGFsbCBrZXlzIiBmb3IgV01fR0VURExHQ09ERSB3aGVuIG11bHRpLWxpbmUKCS0gc2luZ2xlLWxpbmUgZWRpdCBjb250cm9sIGRvZXMgbm90IHdhbnQgYWxsIG1lc3NhZ2VzCgktIGFkZGl0aW9uYWwgc3R5bGUgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBmb3IgYm90aCBtdWx0aS1saW5lIGFuZAoJICBzaW5nbGUtbGluZSBlZGl0IGNvbnRyb2xzCgktIHRlc3RzIHRvIGNvbmZpcm0gaXQKCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpbWVuc2lvbnMgb2YgbW9udGggY2FsZW5kYXIgY29udHJvbCBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgY2xpZW50Cgl3aW5kb3cgc2l6ZS4KCgkqIGRsbHMvaGhjdHJsLm9jeC8uY3ZzaWdub3JlLCBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaGhjdHJsLm9jeC92ZXJzaW9uLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL21lbW9yeS5jLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N0YWJzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgbG9hZGluZyBzdGFicyBmcm9tIFBFIG1vZHVsZXMgY29tcGlsZWQgd2l0aCBNaW5nVwoJLSBlbmhhbmNlIHNvbWUgbG9hZGluZyBsb2dpYyBiZXR3ZWVuIEVMRi9QRSBETEwgcGFpcnMKCS0gcmVtb3ZlZCB1bnVzZWQgaW5kaXJlY3QgbWVtb3J5IGFjY2VzcyBmdW5jdGlvbgoJLSBnZXQgcmlkIG9mIHNvbWUgR0NDIGdlbmVyYXRlZCBzeW1ib2xzCgoJKiBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgcmVncmVzc2lvbiBpbiB3YXRjaHBvaW50IHNldHRpbmcgKGJ5IGFkZHIpCgktIGluIGJhY2t0cmFjZSwgc2hvdyBhdCBsZWFzdCBtb2R1bGUgd2hlbiBubyBzeW1ib2wgaXMgZm91bmQKCS0gcHJvdGVjdCBldmVudCBwYXJzaW5nIGZyb20gY29tbWFuZCBsaW5lICh3aGVuIG5vIHJlYWwgbnVtYmVyKQoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJVHVybiBJU09fTGVmdF9UYWIgYmFjayBpbnRvIGEgdGFiIGNoYXJhY3RlciBpZiBuZWVkZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOgoJV2lsbGlhbSBQb2V0cmEgWW9nYSBIIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCVVzZSBDT0xPUl9NRU5VQkFSIChpbnN0ZWFkIG9mIENPTE9SX0dSQURJRU5USU5BQ1RJVkVDQVBUSU9OKSBhcyB0aGUKCXVwcGVyIGxpbWl0IGluIEdldFN5c0NvbG9yKCkgdmFsaWRhdGlvbi4KCgkqIGRsbHMvdXNlci91aXRvb2xzLmM6IFdpbGxpYW0gUG9ldHJhIFlvZ2EgSCA8d2lsbGlhbXBvZXRyYUB5YWhvby5jb20+CglGaXggdGhlIGJ1dHRvbiBlZGdlIGNvbG9yLCBieSB1c2luZyB0aGUgQkZfU09GVCBib3JkZXIgc3R5bGUgZm9yCglidXR0b25zLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZCBzb21lIHN0cnVjdHVyZSB0YWdzLgoKMjAwNC0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglGcmVlIHRoZSBtZW1vcnkgdmlldyBiZWZvcmUgd2UgdW5sb2FkIGEgYnVpbHRpbiBkbGwgdG8gYXZvaWQgYSByYWNlCgljb25kaXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvdGltZS5jLCBkbGxzL21zdmNydC90aW1lLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvdGltZS5jLCBkbGxzL250ZGxsL3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gUnRsVGltZUZpZWxkc1RvVGltZSBzaG91bGQgbm90IG5vcm1hbGl6ZSB0aGUgdGltZSBmaWVsZHMKCSAgc3RydWN0dXJlLiBJbnN0ZWFkIHJldHVybiBlcnJvciB3aGVuIGl0IGlzIGdpdmVuIGFuIHVub3JtYWxpemVkCgkgIGRhdGUuCgktIFVzZSBiZXR0ZXIgYWxnb3JpdGhtcyBmb3IgUnRsVGltZVRvVGltZUZpZWxkcyBhbmQKCSAgUnRsVGltZUZpZWxkc1RvVGltZS4gUnRsVGltZVRvVGltZUZpZWxkcyBpcyBhYm91dCAzIHRpbWVzIGZhc3Rlci4KCS0gQWRkIHRlc3RzIGZvciBSdGxUaW1lRmllbGRzVG9UaW1lLgoJLSBTeXN0ZW1UaW1lVG9GaWxlVGltZSBtdXN0IGZhaWwgaWYgUnRsVGltZUZpZWxkc1RvVGltZSBmYWlscy4gVXNlcnMKCSAgb2YgU3lzdGVtVGltZVRvRmlsZVRpbWUgbXVzdCBkbyBsaWtld2lzZS4KCS0gUmVtb3ZlIGEgdG9kb193aW5lIGZyb20gU3lzdGVtVGltZVRvRmlsZVRpbWUgdGVzdHMuCgktIFNpbmNlIG1zdmNydC5ta3RpbWUgbXVzdCBhY2NlcHQgdW5ub3JtYWxpemVkIGRhdGVzLCBpdCBjYW5ub3QgdXNlCgkgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lIGFuZCBkbyB0aGUgY2FsY3VsYXRpb25zIGl0c2VsZi4KCS0gQWRkIHNvbWUgdGVzdHMgZm9yIG1rdGltZSBhY2NlcHRpbmcgdW5ub3JtYWxpemVkIGRhdGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCVN1cHBvcnQgYXNzaWduaW5nIGZvbnQgb2JqZWN0cyB0byBvdGhlciBmb250IG9iamVjdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywKCSAgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWNlc3NhcnkgV05EUFJPQyBjYXN0cy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBmb3JtYXQgc3RyaW5nIGluIFdTQUFkZHJlc3NUb1N0cmluZ0EoKS4KCgkqIGluY2x1ZGUvd2luZS9saXN0Lmg6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURvY3VtZW50IHRoZSBsaW5rZWQgbGlzdCBzdXBwb3J0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFRCTl9SRVNUT1JFIG5vdGlmaWNhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTGltaXQgU3RhY2tXYWxrIGl0ZXJhdGlvbnMgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wLgoKMjAwNC0xMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3JzYWVuaC8uY3ZzaWdub3JlLAoJICBkbGxzL3JzYWVuaC9NYWtlZmlsZS5pbiwgZGxscy9yc2FlbmgvaGFuZGxlLmMsIGRsbHMvcnNhZW5oL2hhbmRsZS5oLAoJICBkbGxzL3JzYWVuaC9pbXBsb3NzbC5jLCBkbGxzL3JzYWVuaC9pbXBsb3NzbC5oLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9yc2FlbmgvcnNhZW5oLnNwZWMsIGRsbHMvcnNhZW5oL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvcnNhZW5oL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZS5pbmY6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBhIHN1YnN0YW50aWFsIHBhcnQgb2YgcnNhZW5oLmRsbC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWw6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEb2N1bWVudCBob3cgU0VIIHdvcmtzIGluIFdpbmUuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB1bml4IGxvY2FsZSB0byBjb2RlIHBhZ2UgbWFwcGluZyBmb3IgSVNPLTg4NTktMTYuCgoJKiBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IFdTQUFkZHJlc3NUb1N0cmluZ3tBLFd9LgoJQWRkIHRlc3RzIGZvciBXU0FBZGRyZXNzVG9TdHJpbmd7QSxXfSBhbmQgV1NBU3RyaW5nVG9BZGRyZXNze0EsV30uCglBZGQgVFJBQ0VzIHRvIFdTQVN0cmluZ1RvQWRkcmVzc3tBLFd9LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZUV4QS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy9wcmludGYuYywgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCUFuZXVyaW4gUHJpY2UgPHdpbmVAc2hhZG92YWxkLmR5bmRucy5vcmc+CgktIE1vdmUgcHJpbnRmIHRlc3RzIGZyb20gc2NhbmYuYyB0byBwcmludGYuYyAoYW5kIGZpeCBvbmUgb24gdGhlCgkgIHdheSkuCgktIEFkZCBzb21lIG1vcmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgUGF0aENsZWFudXBTcGVjLgoKCSogbGlicy93aW5lL21tYXAuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEaXNhYmxlIG1lbW9yeSByZXNlcnZhdGlvbiBjb2RlIG9uIEZyZWVCU0QsIHdoZXJlIGl0IGp1c3QgZG9lc24ndAoJd29yay4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYywgZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGltcGxlbWVudCBMb29rdXBQcml2aWxlZ2VOYW1lCgktIGNvcnJlY3QgTG9va3VwUHJpdmlsZWdlVmFsdWUgKGhhZCBhIGJ1ZmZlciBvdmVycnVuIGFuZCBzb21ldGltZXMKCSAgcmV0dXJuZWQgaW5jb3JyZWN0IExVSURzIGZvciB3ZWxsLWtub3duIHZhbHVlcykKCS0gbWFrZSBBbGxvY2F0ZUxvY2FsbHlVbmlxdWVJZCBsZXNzIG9idmlvdXNseSBpbmNvcnJlY3QKCS0gYWRkIGEgYnVuY2ggb2YgdGVzdCBjYXNlcwoKMjAwNC0xMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGVzdHMvY2hhbmdlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggYnJva2VuIHRocmVhZCBzdGFydCByb3V0aW5lcy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglQcm9wZXIgaW1wbGVtZW50YXRpb24gb2Ygc3lzbW9kYWwgbWVzc2FnZSBib3hlcy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUZpeCB1cCBpbml0X2ZwIHRlc3QgZm9yIGZyZW9wZW4uCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSAzIG1vcmUgY3VzdG9tIGFjdGlvbiB0eXBlcwoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQgZG9lcyBub3Qgd29yayBvbiBXaW45OC4KCgkqIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wcm92ZSB7VW5pbnN0YWxsLEluc3RhbGx9Q29sb3JQcm9maWxle0EsV30uCglCZXR0ZXIgdGVzdHMgZm9yIHRoZXNlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgYSBNTVNZU0VSUl9OT1RTVVBQT1JURUQgZmFpbHVyZSBhIHRlc3QgZmFpbHVyZS4KCjIwMDQtMTEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBSZXN0b3JlIGNodW5rIG9mIGNvZGUgbG9zdCBpbiBwcmV2aW91cyBjaGFuZ2VzLgoKCSogZGxscy9udGRsbC9zeW5jLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVR1bmUgdGhlIGJlaGF2aW9yIG9mIFNsZWVwKCkgYW5kIFdhaXR4eHgoKSB0byBtb3JlIGNsb3NlbHkgcmVzZW1ibGUKCVdpbmRvd3MgYmVoYXZpb3IuICBUaGUga2V5IGlzIHRvIHlpZWxkIGluIGEgU2xlZXAgYW5kIGluIGFueSBXYWl0IHRoYXQKCXRpbWVzIG91dC4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJRG93bmxvYWRpbmcgdGhlIHBsYXRmb3JtIHNkayBkb2Vzbid0IHJlcXVpcmUgSUUgYW55IG1vcmUuCgoJKiBkbGxzL3dpbm1tL3RpbWUuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJVGhlIFNsZWVwKDApIGluIHRoaXMgbG9vcCBpcyBpbmNvcnJlY3QsIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4gIFRoaXMKCWZpeGVzIGlUdW5lcyBhbmQgYSBnYW1lIHJlcG9ydGVkIGJ5IGNoZS4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNjYWxlIHRoZSBwYXR0ZXJucyBzbyB0aGF0IHRoZXkncmUgcmVuZGVyZWQgYXQgMzAwZHBpLgoJQ3JlYXRlIHRoZSBpbWFnZSBkaWN0aW9uYXJ5IG9uY2UsIHJhdGhlciB0aGFuIGV2ZXJ5IHRpbWUgdGhlIFBhaW50UHJvYwoJaXMgY2FsbGVkIC0gc2hvdWxkIHNwZWVkIHByaW50aW5nIHVwIHNvbWV3aGF0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglTdGVmYW4gRPZzaW5nZXIgPHN0ZWZhbmRvZXNpbmdlckBnbXguYXQ+CglBZGRlZCBXU0FBZGRyZXNzVG9TdHJpbmdBL1cgc3R1YnMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZGVkIE1TSyB0aW1lem9uZSBpbmZvLgoKCSogZGxscy93aW5zb2NrL3Byb3RvY29sLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTWFrZSBzdXJlIHdlIG1hdGNoIG91dHB1dCBvZiBXaW4yayBwcm90b2NvbCBlbnVtZXJhdGlvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgQ0VUIHRpbWV6b25lIGluZm8uCgoJKiBkbGxzL2dkaS9iaXRtYXAuYywgZGxscy9nZGkvZGliLmMsIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jLAoJICBkbGxzL3gxMWRydi9kaWIuYzoKCU1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CgktIEV4dGVuZGVkIHN1cHBvcnQgZm9yIEJJVE1BUENPUkVJTkZPIC8gQklUTUFQQ09SRUhFQURFUiBzdHJ1Y3R1cmVzLgoJLSBBbHdheXMgY2FsY3VsYXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29sb3IgdGFibGUuCgktIENyZWF0ZUNvbXBhdGlibGVCaXRtYXA6IENyZWF0ZSBhIERJQiBzZWN0aW9uIGlmIG5lY2Vzc2FyeS4KCS0gQWRkZWQgc29tZSB0ZXN0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogRmFicmljZSBN6W5hcmQgPG1lbmFyZC5mYWJyaWNlQHdhbmFkb28uZnI+CglDaGVjayB0aGUgdHlwZSBvZiBlcnJvciByZXR1cm5lZCBieSBTSENyZWF0ZURpcmVjdG9yeUV4Vy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSb2dlciBPbHNvbiA8dTYwQGNvbWNhc3QubmV0PgoJQWRkIFBhY2lmaWMgU3RhbmRhcmQgVGltZSAoUFNUKSB0byBUWl9JTkZPLgoKMjAwNC0xMS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdXNlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdGFydCB0aGUgcmVib290IHByb2Nlc3MgaW4gRXhpdFdpbmRvd3NFeC4KCgkqIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb3dubG9hZCB0aGUgTW96aWxsYSBBY3RpdmUgWCBjb250cm9sIG9uIGRlbWFuZC4KCgkqIGRsbHMvd2luc29jay9wcm90b2NvbC5jLCBkbGxzL3dpbnNvY2svdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svdGVzdHMvcHJvdG9jb2wuYywKCSAgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpbGwgV1NBUFJPVE9DT0xfSU5GTyBzdHJ1Y3R1cmVzIGluc3RlYWQgb2YgUFJPVE9DT0xfSU5GTyBzdHJ1Y3R1cmVzLgoJSW1wbGVtZW50IFdTQ0VudW1Qcm90b2NvbHMoKS4KCUFkZCBzb21lIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IE5hdGl2ZUZvbnQgY29udHJvbCB0byB1bmljb2RlLCB1c2UgaGJyQmFja2dyb3VuZCBhcyBpbiBuYXRpdmUuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgYWR2cGFjay5Eb0luZkluc3RhbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCByZXRyaWV2ZSBpbmZvUHRyIHR3aWNlIGluIFRvb2xiYXJXaW5kb3dQcm9jIGVudHJ5LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDcnlwdEdldFVzZXJLZXk6IFNldCByZXR1cm4ga2V5IGhhbmRsZSB0byB6ZXJvIGluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNlbmQgbm90aWZpY2F0aW9uIG1lc3NhZ2VzIGluIHRoZSBmb3JtYXQgZGljdGF0ZWQgYnkKCWluZm9QdHItPm5vdGlmeUZvcm1hdC4KCgkqIHRvb2xzL01ha2VmaWxlLmluOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglQdXQgJChGUkVFVFlQRUxJQlMpIGFzIHRoZSBsYXN0IHBhcnQsIGFzIGl0IGNhbiBpbmNsdWRlIHRoZSBkaXIgb2YgYW4KCW9sZGVyIFdpbmUgaW5zdGFsbCB3aGljaCBkbyBub3QgaGF2ZSB0aGUgc2FtZSBleHBvcnRzIChyZXBvcnRlZCBieQoJam9va2UpLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglTZXQgdGhlIGNvcnJlY3QgbGFzdCBlcnJvciBpbiBFbnVtVUlMYW5ndWFnZXNBLCB3aXRoIHRlc3RzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvc3lzY29sb3IuYzoKCVdpbGxpYW0gUG9ldHJhIFlvZ2EgSCA8d2lsbGlhbXBvZXRyYUB5YWhvby5jb20+CglBZGQgQ09MT1JfTUVOVUhJTElHSFQgYW5kIENPTE9SX01FTlVCQVIgdG8gdGhlIHN5c3RlbSBjb2xvcnMuCgoyMDA0LTEwLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9wYWludGluZy5jLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL21lc3NhZ2UuYzoKCUdldCByaWQgb2YgdGhlIFdJTl9ORUVEU19CRUdJTlBBSU5UIGZsYWcsIFdpbmRvd3Mgd2lsbCBoYXBwaWx5IGxvb3AKCWZvcmV2ZXIgdG9vIGlmIFdNX1BBSU5UIGlzIG5vdCBoYW5kbGVkIHByb3Blcmx5LgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglCYXNlZCBvbiB0aGUgbGFzdCAzNisgbW9udGhzIFdpbmUgaXMgcmVsZWFzZWQgb25jZSBhIG1vbnRoIG9uCglhdmVyYWdlLgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMgYW5kIHR3ZWFrcy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0NhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Dcy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RlLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fbi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW8ucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9GaS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRnIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0h1LnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9JdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSmEucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0tvLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9ObC5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTm8ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1BsLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUnUucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NpLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tay5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU3YucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1VrLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9XYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfWmgucmM6CglJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUmVtb3ZlIERTX1NZU01PREFMIGZyb20gbXNnYm94IHJlc291cmNlLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFJFR19FWFBBTkRfU1ogaW4gc2V0X3JlZ2lzdHJ5X3ZhcmlhYmxlcygpLgoJRml4IHByb2Nlc3Npbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgYXJlIHRvbyBiaWcgKD4xMDI0CgljaGFyYWN0ZXJzKTogdGhleSBzaG91bGQgYmUgdHJ1bmNhdGVkLCBub3QgaWdub3JlZC4KCgkqIHRvb2xzL2MybWFuLnBsLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbHRlciB0aGUgZnVuY3Rpb25zIGRlY2xhcmF0aW9uIG9yZGVyIG9yIHByZWRlY2xhcmUgdGhlbSBzbyBwZXJsIGNhbgoJY2hlY2sgdGhlIHByb3RvdHlwZXMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3RpbWUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgkjaWZkZWYgb3V0IHRoZSB0ZXN0cyBpZiBjb21waWxpbmcgd2l0aCB0aGUgUGxhdGZvcm0gU0RLIGhlYWRlcnMgc2luY2UKCXRoZXkgYXJlIG1pc3NpbmcgVElNRV9GSUVMRFMuCgoJKiBkbGxzL3JwY3J0NC90ZXN0cy9nZW5lcmF0ZWQuYywgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTUlETF9TVFVCX01FU1NBR0UuVW5pcXVlUHRyQ291bnQgaGFzIGJlZW4gcmVuYW1lZCBpbiB0aGUgbGF0ZXN0IFNESyBzbwoJaWdub3JlIGl0LgoKMjAwNC0xMC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWJzIGZvciBFbnVtUHJpbnRQcm9jZXNzb3JzQVcuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gU2ltcGxpZnkgdGhlIGNhbGN1bGF0aW9uIGluIFRJTUVfRGF5bGlnaHRDb21wYXJlRGF0ZTsKCS0gRXhwYW5kIHRoZSBudW1iZXIgb2YgYXBwbGljYWJsZSB0ZXN0IGNhc2VzLgoKCSogZGxscy91c2VyL3Rlc3RzL2lucHV0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCB1c2VyMzIvaW5wdXQuYyB0ZXN0LCByZW1vdmUgdGhlIHdyb25nIGFzc3VtcHRpb24gdGhhdCBhCgl3aW5kb3cgYWx3YXlzIHJlY2VpdmVzIGlucHV0IGZvY3VzIHVwb24gY3JlYXRpb24uCgoJKiBpbmNsdWRlL3dpbmluZXQuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIHNvbWUgZXh0cmEgSFRUUF9RVUVSWSB2YWx1ZXMuCgoJKiB3aW5kb3dzL3VzZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJS2lsbCBhbGwgd2luZSBwcm9jZXNzZXMgd2hlbiBkb2luZyBFeGl0V2luZG93c0V4LgoKMjAwNC0xMC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkLmM6CglUb3JiavZybiBBbmRlcnNzb24gPFRvcmJqb3JuLkUuQW5kZXJzc29uQHRpZXRvZW5hdG9yLmNvbT4KCUZpeGVkIHNpemUgY2hlY2sgaW4gR2V0RGV2aWNlRGF0YS4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVN1cHBvc2VkbHkgZml4IGh0dHAgdGVzdCBvbiBXaW5kb3dzLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFZPTFVNRV9SZWFkRkFUU3VwZXJibG9jazoKCS0gZG8gbm90IHRlc3Qgb24gdGhlIEpNUCBpbnN0cnVjdGlvbjogbW9zdCBib290IGJsb2NrcyBoYXZlIHRoYXQKCS0gdGVzdCBpbnN0ZWFkIG9uIHRoZSAiRkFUIiBzdHJpbmdzIGZpcnN0LCBiZWZvcmUgdGhlIHNpemUKCSAgY2FsY3VsYXRpb24KCS0gZG8gc29tZSBwYXJhbWV0ZXIgY2hlY2tpbmcgdG8gcHJldmVudCBhcml0aG1ldGljIGVycm9ycwoJLSB1c2UgbWVhbmluZ2Z1bCBuYW1lcyBpbnN0ZWFkIG9mIGJsb2NrIG9mZnNldHMKCShiYXNlZCBvbiBhIHJlamVjdGVkIHBhdGNoIGZyb20gVmluY2VudCBC6XJvbikuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVVzZSBTSENyZWF0ZURpcmVjdG9yeUV4IGZ1bmN0aW9uIGluc3RlYWQgb2YgZG9pbmcgZXhwbGljaXQgcmVjdXJzaXZlCglkaXJlY3RvcnkgY3JlYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCB0ZXN0IGZvciBTSENyZWF0ZURpcmVjdG9yeUV4IGZ1bmN0aW9uLgoJRml4ZWQgc29tZSB0eXBvcy4KCjIwMDQtMTAtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgaW50byBhY2NvdW50IHdpbmRvdyB2aXNpYmlsaXR5IHdoZW4gc2VhcmNoaW5nIGZvciBhIHRhcmdldCBmb3IgYQoJaGFyZHdhcmUgbW91c2UgbWVzc2FnZS4KCgkqIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzogQWRkZWQgaXNfd2luZG93X3Zpc2libGUgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCVVzZSBjb3JyZWN0IHR5cGUgaW5zdGVhZCBvZiB2b2lkKiBpbiBpdGVtIGxpbmtlZCBsaXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmM6CglGYWJyaWNlIE3pbmFyZCA8bWVuYXJkLmZhYnJpY2VAd2FuYWRvby5mcj4KCVNvbWUgRnJlbmNoIHRyYW5zbGF0aW9ucyBhZGRlZC4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgaW5jbHVkZS93aW5iYXNlLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIFJlb3JkZXJlZCBzb21lIGNvZGUgZnJvbSB0aGUgZXhpc3RpbmcgaGVscGVyIF9HZXRUaW1lWm9uZUJpYXMgdG8KCSAgbWFrZSBpdCBtb3JlIGdlbmVyYWwgdXNlZnVsIChhbmQgY2hhbmdlZCB0aGUgaGVscGVyIG5hbWVzIHRvCgkgIFRJTUVfeHl6KS4KCS0gTWFrZSBHZXRUaW1lWm9uZUluZm9ybWF0aW9uIHJldHVybiB0aGUgY29ycmVjdCB6b25lIGlkIGNvbnN0YW50cy4KCS0gQ2hhbmdlZCBzb21lICJjb25zdCBMUFhfWV9aIiBkZWNsYXJhdGlvbnMgdG8gImNvbnN0IFhfWV9aICoiLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggYmFkIG1lbW9yeSBhbGxvY2F0aW9uIGZvciB1bmljb2RlIGJ1ZmZlci4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldEFjY2VwdExhbmd1YWdlc0EgdGVzdHMgZm9yIFdpbjk4LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRmx1c2ggcGVuZGluZyBtZXNzYWdlcyBiZWZvcmUgdGVzdGluZyBwYWludGluZyBtZXNzYWdlIHNlcXVlbmNlcy4KCgkqIGRsbHMvbXN2Y3J0L3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gTVNWQ1JUX2xvY2FsdGltZSgpIHJldHVybiB0bV9pc2RzdCA9IDAgd2hlbiB0aGVyZSBhcmUgbm8gZGF5bGlnaHQKCXRpbWUgY2hhbmdlcyBpbiB0aGUgbG9jYWwgdGltZSB6b25lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglfU0hFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3Mgc2hvdWxkIHJldHVybiBpbnB1dCBzdHJpbmcgaWYgbm8gJSBmb3VuZAoJdG8gZXhwYW5kLCBhbmQgc2hvdWxkIGNhbGwgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyBpZiBpdCBkb2Vzbid0CgloYW5kbGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgZGlyZWN0bHkuICBCYXNlZCBvbiBhIHBhdGNoIGZyb20gRGFuCglLZWdlbC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3BlciBwcm90b3R5cGVzIGZvciBHZXRDbGFzc0xvbmdQdHJBL1cgZm9yIF9XSU42NCBjYXNlLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNaW5vciBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgdHlwZXNhZmUgc2lnbmF0dXJlIHdoZXJlIHBvc3NpYmxlLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbmFtZSBTVEFUVVNXSU5ET1dJTkZPIHRvIFNUQVRVU19JTkZPLCBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlcgoJY29udHJvbHMuIEZpeCBzb21lIHByb3RvdHlwZXMuIEFsd2F5cyBwYXNzIGluZm9QdHIgYXJvdW5kLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIFVuaWNvZGUgZnVuY3Rpb25zIHdoZXJlIHBvc3NpYmxlLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTGF1bmNoSU5GU2VjdGlvbihFeCkuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUNyeXB0Q3JlYXRlSGFzaDogU2V0IHJldHVybmVkIGhhc2ggaGFuZGxlIHRvIHplcm8gaW4gY2FzZSBvZiBmYWlsdXJlLgoKCSogc2VydmVyL2ZkLmM6IEFkZGVkIGZhbGxiYWNrIHN5c2NhbGxzIGZvciBlcG9sbCBmdW5jdGlvbnMuCgoJKiBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnJjLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL29sZTMycmVzLnJjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglVc2Ugb25seSBvbmUgLnJlcyBmaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIHN0cmV0Y2hpbmcgc3VwcG9ydCB0byBBbHBoYUJsZW5kLgoKMjAwNC0xMC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1jb2Rpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWdyYXBoaWNhbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1vdGhlcmRlYnVnLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi13aW5kb3dpbmcuc2dtbDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVvcmdhbml6aW5nIHdpbmUtZGV2ZWw6CgktIGtpbGxpbmcgdGhlIGFkdmFuY2VkIHBhcnQgKGFuZCBtb3ZpbmcgaXRzIGNoYXB0ZXJzIGluIGJvdGgKCSAgZGV2ZWxvcGluZyBXaW5lIGFuZCBXaW5lIGFyY2hpIHBhcnRzKQoJLSBjcmVhdGluZyBhIG5ldyBib29rIG9uIGNvZGluZyBwcmFjdGljZXMgZnJvbSBpMThuLnNnbWwsIHBhdGNoZXMuc2dtbAoJICBhbmQgcG9ydGluZy5zZ21sCgktIGNyZWF0aW5nIGEgbmV3IGJvb2sgb24gc29tZSBkZWJ1Z2dpbmcgc3RyYXRlZ2llcyBmcm9tIHRoZSBvbGQKCSAgYWR2YW5jZWQgYm9vayBhbmQgY3ZzLXJlZ3Jlc3Npb24uc2dtbAoJLSBjcmVhdGluZyBhIG5ldyBib29rIG9uIHRoZSBrZXJuZWwgbW9kdWxlcyAoTlRETEwgJiBLRVJORUwzMikgZnJvbQoJICBhcmNoaXRlY3R1cmUuc2dtbCAvIHJlbGF0ZWQgRExMcyBhbmQgYWRkcmVzcy1zcGFjZS5zZ21sLAoJICBjb25zb2xlLnNnbWwsIHRocmVhZGluZy5zZ21sCgktIGNyZWF0aW5nIGEgbmV3IGJvb2sgb24gdGhlIHdpbmRvd2luZyBmcm9tIGFyY2hpdGVjdHVyZS5zZ21sIC8gVVNFUjMyCgkgIGFuZCByZWxhdGVkCgktIGNyZWF0aW5nIGEgbmV3IGJvb2sgb24gdGhlIGdyYXBoaWNhbCBwYXJ0cyBmcm9tIGFyY2hpdGVjdHVyZS5zZ21sIC8KCSAgR0RJMzIgYW5kIHJlbGF0ZWQKCU90aGVyIGNoYW5nZXM6CgktIHJlbW92ZWQgbGlzdCBvZiBETExzIGFuZCB0aGVpciByb2xlIChmcm9tIHRoZSBtb2R1bGVzIG92ZXJ2aWV3KQoJLSByZW1vdmVkIGluIFgxMSBrZXlib2FyZCBtYXBwaW5nIHNlY3Rpb24gdGhlIHBhcnQgcmVsYXRlZCB0byBzdWJtaXQgYQoJICBwYXRjaAoKCSogZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmgsIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3BsaXQgdXAgYXVkaW8uYyBpbnRvIHRocmVlIHNlcGFyYXRlIC5jIGZpbGVzOgoJYXVkaW8uYzogT1NTIGZ1bmN0aW9ucyBhbmQgd2F2ZUluIGFuZCB3YXZlT3V0IGRyaXZlciBmdW5jdGlvbnMuCglkc2NhcHR1cmUuYzogZGlyZWN0IHNvdW5kIGNhcHR1cmUgZHJpdmVyIGltcGxlbWVudGF0aW9uLgoJZHNyZW5kZXIuYzogZGlyZWN0IHNvdW5kIHJlbmRlcmVyIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgdGVzdHMgZm9yIHRpbWUgY29udmVyc2lvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgaHduZCBzZWxmIGludG8gdGhlIGxpc3Rib3ggTEJfREVTQ1Igc3RydWN0LgoJVXNlIHByb3BlciB0eXBlcy9uYW1lcyBpbiBhbGwgY2FzZXMuCglGaXggc29tZSBiYWQgaW5kZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCXdpbiA5eCBkb2Vzbid0IGFsd2F5cyBzdXBwb3J0IHdhdmVPdXRHZXREZXZDYXBzVyBzbyBkb24ndCBnZW5lcmF0ZSBhbgoJZXJyb3IgZm9yIE1NU1lTRVJSX05PVFNVUFBPUlRFRC4KCVBsYXkgb25lIHNlY29uZCBvZiBzaWxlbmNlIGZvciBlYWNoIHNvdW5kIGNhcmQgd2hlbiBub3QgaW4gaW50ZXJhY3RpdmUKCW1vZGUuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGJ1dHRvbiByZXR1cm4gZXhhY3RseSB0aGUgc2FtZSBkaWFsb2cgY29kZXMgYXMgV2luZG93cyBkb2VzLgoJQWRkIGEgdGVzdCBjYXNlLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvdmVyc2lvbi5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXBkYXRlIHNoZWxsMzIncyB2ZXJzaW9uIHRvIFdpblhQIGxldmVsLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVmVyaWZ5Q2VydGlmaWNhdGlvbiBpcyBub3QgYWx3YXlzIGltcGxlbWVudGVkLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBDb252ZXJ0IENvbW1Db25maWdEaWFsb2cgdG8gVW5pY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRob3JzdGVuIEthbmkgPGJlZWJpeEBnbXgubmV0PgoJVXNlIGFkZHJlc3Mgb2YgdGFiX2l0ZW0uZXh0cmEgd2hlbiBidWlsZGluZyBkcmF3aXRlbXN0cnVjdC4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggQ1NJRExfQ09OVFJPTFMgYW5kIENTSURMX1BSSU5URVJTIFBJREwgdHlwZXMsIGFuZCB1cGRhdGUgdGVzdHMgbm93Cgl0aGF0IHRoZXkgcGFzcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNFUklBTFVJOiBjb252ZXJ0IHRvIFVuaWNvZGUuCgoJKiB0b29scy93aW5hcGkvY19mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvY190eXBlLnBtLCB0b29scy93aW5hcGkvY29uZmlnLnBtLAoJICB0b29scy93aW5hcGkvZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlciwKCSAgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLAoJICB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3Rlc3RzLnBtLCB0b29scy93aW5hcGkvdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3V0aWwucG0sIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9lZGl0b3IucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfc3RhdGVtZW50cy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9tb2R1bGVfdXNlci5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCUNoYW5nZSB0aGUgd2F5IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFuZCBlaXRoZXIgYWx0ZXIgdGhlaXIgZGVjbGFyYXRpb24KCW9yZGVyIG9yIHByZWRlY2xhcmUgdGhlbSBzbyBwZXJsIGNhbiBjaGVjayB0aGUgcHJvdG90eXBlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdGx5IHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIEdldFRpbWVab25lSW5mb3JtYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgcHJvcGVyIEdXTF9TVFlMRSBoYW5kbGluZywgcHJvcGVyIHJlYWN0aW9uIHRvIHN0eWxlIGNoYW5nZXMuCglNZXJnZSB7e0luYyxEZWN9cmVtZW50LFJlc2V0e1VwLERvd259fUZpZWxkIGludG8gb25lIG1ldGhvZC4gRml4IGEKCWJ1bmNoIG9mIGJ1Z3MgaW4gdGhlIHByb2Nlc3MuICBJbXBsZW1lbnQgRFRNX1tHU11FVE1DRk9OVC4gSW5kZW50YXRpb24KCWZpeGVzLCBjbGVhbnVwcy4KCjIwMDQtMTAtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy92aWV3L0NzLnJjLCBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYywgcHJvZ3JhbXMvd2NtZC9Dcy5yYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIHByb2dyYW1zL3dpbmVjZmcvQ3MucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfQ3MucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvQ3MucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmVtaW5lL0NzLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL0NzLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglEYXZpZCBLcmVkYmEgPGtyZWRiYUBpYm90LmNhcy5jej4KCU5ldyBDemVjaCByZXNvdXJjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUF2b2lkIGNvcHlpbmcgaW52YWxpZCBkYXRhIG9uIGVycm9yLgoKCSogdG9vbHMvd2luZWR1bXAvZnVuY3Rpb25fZ3JlcC5wbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc3RyaW5nIGhhbmRsaW5nLgoJRW5hYmxlIHBlcmwgd2FybmluZ3MKCUFkZCBhIHByb3BlciAtLWhlbHAgb3B0aW9uIGFuZCB1c2FnZS4KCgkqIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlcl9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSB1c2FnZSBmb3Igbm9uLWJvb2xlYW4gb3B0aW9ucywgYWx3YXlzIHByaW50IHRoZQoJZGVzY3JpcHRpb24uIFRoaXMgZml4ZXMgdGhlIG91dHB1dCBvZiAnbWFrZV9maWx0ZXIgLS1oZWxwJy4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIHdpbnRydXN0LmguCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGRlZmluZSBmb3IgQ1VSX0JMT0JfVkVSU0lPTi4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgcHJvcGVyIHR5cGVzL25hbWVzIGluIGFsbCBjYXNlcy4gRml4IHNvbWUgaW5kZW50YXRpb24uCgoJKiBkbGxzL21zdmNydC90ZXN0cy90aW1lLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3RseSB1c2UgdGhlIHJldHVybmVkIHZhbHVlIGZyb20gR2V0VGltZVpvbmVJbmZvcm1hdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBSZW1vdmUgYm9ndXMgdXNlIG9mIG5TdGF0Q291bnRlciBhbmQgaE9sZUF1dDMyIGluIENvU2V0U3RhdGUuCgktIFJlbW92ZSBhIGNvbW1lbnQgYWJvdXQgcHJvdGVjdGluZyBwZXIgdGhyZWFkIGRhdGEgYnkgYSBjcml0aWNhbCBzZWN0aW9uLgoKCSogaW5jbHVkZS90bGhlbHAzMi5oOiBQZXRlciBRdWlyaW5nIDxwcXVpcmluZ0Bob3RtYWlsLmNvbT4KCUFkZGVkIEhGMzJfREVGQVVMVCBhbmQgSEYzMl9TSEFSRUQgdmFsdWVzLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBvbmx5IFVuaWNvZGUgZnVuY3Rpb25zLCBpdCBtYWtlcyBpdCBlYXNpZXIgdG8gc2VlIHdlIGFyZSBmdWxseQoJVW5pY29kZSBjb21wbGlhbnQuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOiBTY290dCBSaXRjaGllIDxzY290dEBvcGVuLXZvdGUub3JnPgoJUmV2aXNlZCBXaW5lIFVzZXIgR3VpZGUgaW50cm9kdWN0aW9uLgoKCSogZGxscy9rZXJuZWwvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZW52LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgdGhlIHdheSBsZW5ndGggb2YgbXN2Y3J0IHJ1bnRpbWUgaW5mbyBpcyBwYXNzZWQKCS0gYWx3YXlzIHJldHVybiBhIE5VTEwgcnVudGltZSBpbmZvIGJ1ZmZlciBpbiBjaGlsZCBpZiBwYXJlbnQncwoJICBydW50aW1lIGluZm8gaXMgTlVMTAoJLSBmaXhlZCB0eXBvIGluIHN0YXJ0dXBpbmZvIHNpemUKCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgbm8gZHJpdmVyIGEgdGVzdCBmYWlsdXJlLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIGEgZGV2aWNlIGluIHVzZSBhIGZhaWx1cmUuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgU0hHZXREZXNrdG9wRm9sZGVyIGNhbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBmaWxsIGluIGFueSBtb3JlIGluZm9ybWF0aW9uIHRoYW4gbmF0aXZlIGRvZXMgZm9yIG5vdGlmaWNhdGlvbnMuCgktIFN0b3JlIGhpdCBjb2RlIGluIGEgc2lnbmVkIGludGVnZXIgc28gdGhhdCB3ZSBjYW4gc2VlIHdoZXRoZXIgaXQgaXMKCSAgbGVzcyB0aGFuIHplcm8uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgbGVhayBtZW1vcnkgd2hlbiBhbiBhcHAgc2VuZHMgVFRNX1NFVFRJVExFIHR3aWNlLgoJLSBBbiBsUGFyYW0gb2YgMCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGl0bGUgc2hvdWxkIGJlIHJlbW92ZWQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW46IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIEFkZCBpbmZvIHRoYXQgdGhlIHdpbmUgY29uZmlnIGZpbGUgaGFzL25lZWRzIGEgaGVhZGVyIGxpbmUuCgktIFJlbW92ZSBzb21lIGluZm9zIHJlZ2FyZGluZyBlbnRyaWVzIHdoaWNoIHdlcmUgcmVtb3ZlZCBsYXRlbHkgZnJvbQoJICB0aGUgY29uZmlnIGZpbGUuCgoJKiBkbGxzL3NldHVwYXBpL2RpcmlkLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBzaGVsbDMyIHRvIGdldCB0aGUgdXNlciBwcm9maWxlIGRpci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXBkYXRlIGNvbW1lbnQgZm9yIExzYU9wZW5Qb2xpY3kuCgoyMDA0LTEwLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsCgkgIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOgoJQ29udmVydGVkIG1vcmUgb2YgdGhlIChVbilSZWdpc3RlclR5cGVMaWIgY29kZSB0byBVbmljb2RlLgoJRmFjdG9yZWQgb3V0IHNvbWUgY29tbW9uIHJvdXRpbmVzLgoKCSogd2luZG93cy9tc2dib3guYzoKCVJlbW92ZWQgd3JvbmcgRklYTUUgZm9yIE1CX0FQUExNT0RBTCAocmVwb3J0ZWQgYnkgSXZhbiBMZW8gUHVvdGkpLgoKCSogdG9vbHMvdGVzdHJ1bjogR2V0IHJpZCBvZiB0aGlzIG9ic29sZXRlIHNjcmlwdC4KCgkqIHRvb2xzL3dpbmUuaW5mOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTaGVsbCByZWdpc3RyeSBlbnRyaWVzIGFyZSBub3cgY3JlYXRlZCBieSBzaGVsbDMyLCBkb24ndCBoYXJkY29kZSB0aGVtCglpbiB3aW5lLmluZi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmVyZWdpc3RlciBQcm9nSWRzIG92ZXIgYW5kIG92ZXIsIGFsc28gd3JpdGUgb3V0IHRoZSBtYWluIGtleQoJYmVmb3JlIHRyeWluZyB0byByZWdpc3RlciB0aGUgUGFyZW50LiBUaGlzIGF2b2lkcyBsb29wcyBpZiBhIFByb2dJZAoJaGFzIGl0c2VsZiBhcyBhIHBhcmVudCBvciB0aGVyZSBpcyBhIGxvb3AgaW4gZGVwZW5kZW5jaWVzLgoKCSogdG9vbHMvd2luZWNvbmY6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGZ1bmN0aW9uIHByb3RvdHlwZXMuCglDaGFuZ2UgdGhlIHdheSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhbmQgdGhlaXIgZGVjbGFyYXRpb24gb3JkZXIgc28KCXBlcmwgY2FuIGNoZWNrIHRoZSBwcm90b3R5cGVzLgoKCSogZGxscy9wc2FwaS90ZXN0cy9tb2R1bGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0TW9kdWxlQmFzZU5hbWVBIHRlc3RzIGZvciBXaW5YUC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgVW5pY29kZSBmdW5jdGlvbnMgaW4gUmVnaXN0ZXJUeXBlTGliLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVZLXzAtOSBhbmQgVktfQS1aIGFyZSBub3QgZGVmaW5lZCBpbiB0aGUgV2luZG93cyBoZWFkZXJzLCByZW1vdmVkIHRoZW0KCShzcG90dGVkIGJ5IEZyYW5jb2lzIEdvdWdldCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEF2b2lkIGNvcHlpbmcgaW52YWxpZCBkYXRhIG9uIGVycm9yLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgZnVuY3Rpb24gcG9pbnRlciBkZWNsYXJhdGlvbnMgc28gTVNWQyBsaWtlcyB0aGVtLgoJQ1NJRExfUFJPRklMRVMgaXMgbm90IGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgU0RLLgoJc25wcmludGYgYW5kIHN0cmNhc2VjbXAgZG9uJ3QgZXhpc3Qgb24gV2luZG93cy4gUmVwbGFjZSB0aGVtIHdpdGgKCXduc3ByaW50ZkEgYW5kIGxzdHJjbXBpQSByZXNwZWN0aXZlbHkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZpeGVkIGRlZmluaXRpb24gb2YgTUFYX0NPTVBVVEVSTkFNRV9MRU5HVEggKHNwb3R0ZWQgYnkgTWlrZQoJTWNDb3JtYWNrKS4KCgkqIGRsbHMvbXNjbXMvaGFuZGxlLmMsIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYywKCSAgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGluY2x1ZGUvaWNtLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZsZXNoIG91dCB0aGUgaWNtLmggaGVhZGVyIChhZGQgQ09MT1JNQVRDSFNFVFVQICYgY28pIHNvIGl0IGlzCgluZWNlc3NhcnkgdG8gZmlyc3QgaW5jbHVkZSB3aW51c2VyLmggbGlrZSBvbiBXaW5kb3dzLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJldmlldyBhbmQgZml4IHJlZ3VsYXIgZXhwcmVzc2lvbnMgb2YgdGhlIGZvcm0gL15mb298YmFyJC8uCglSZXBsYWNlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2l0aCBzaW1wbGUgc3RyaW5nIGNvbXBhcmlzb25zIHdoZXJlCglwb3NzaWJsZS4KCVVzZSAnKD86c3VicmVnZXhwKScgaW5zdGVhZCBvZiAnKHN1YnJlZ2V4cCknIHdoZXJldmVyIHBvc3NpYmxlLgoJJ2RsbHMvZ2RpJyBkb2VzIG5vdCBoYXZlIGEgd2luMTZkcnYgc3ViZGlyZWN0b3J5IGFueW1vcmUgc28gc2ltcGxpZnkKCXJlZ3VsYXIgZXhwcmVzc2lvbnMgYWNjb3JkaW5nbHkuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9zZWxlY3Rvci5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGVyZSBpcyBubyBwb2ludCBtYWtpbmcgJy0tcmVnaXN0ZXInIGZ1bmN0aW9ucyBzdGRjYWxsIHNvIGp1c3QKCWltcGxlbWVudCB0aGVtIGFzIGNkZWNsLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0QWNjZXB0TGFuZ3VhZ2VzQSB0ZXN0cyBmb3IgV2luWFAuCgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvdGltZS5jLCBkbGxzL250ZGxsL3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3QgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSB5ZWFyIGZvciB0aGUgMzEnc3Qgb2YgRGVjZW1iZXIgb2YgMjAwMAoJYW5kIGV2ZXJ5IDQwMCB5ZWFycyBhZnRlciB0aGF0LiBBZGQgYSB0ZXN0IHVzZWQgdG8gZmluZCB0aGlzIGJ1Zy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggaW5kZW50aW5nIG9mIGxhc3QgcGF0Y2ggKHRhYnMgaW5zdGVhZCBvZiBzcGFjZXMpLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgY3JlYXRpbmcgZW1wdHkgc2hlbGxsaW5rIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIERhdGUgVGltZSBDb250cm9sLiBVbmljb2RpZmljYXRpb24uCglUeXBlIHNhZmUgZnVuY3Rpb25zIChwYXNzIGluZm9QdHIgYW5kIHR5cGUgc2FmZSB2YWx1ZXMgYXJvdW5kKS4KCVNvbWUgY2xlYW51cCBhbmQgaW5kZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgYSBiYWQgZm9ybWF0IGFuIGVycm9yIHVubGVzcyB0aGUgY2FwYWJpbGl0aWVzIHNheSBpdAoJc2hvdWxkIGJlIHN1cHBvcnRlZC4KCURvbid0IGNvbnNpZGVyIGEgZGV2aWNlIGFscmVhZHkgaW4gdXNlIGFuIGVycm9yLgoKMjAwNC0xMC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJLSBTSENyZWF0ZURpcmVjdG9yeSBzaG91bGQgY3JlYXRlIGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyBpZgoJICBuZWNlc3NhcnkuCgktIFJlbW92ZSBleHRyYSBib29sZWFuIHBhcmFtZXRlciBpbiBTSE5vdGlmeU1vdmVGaWxlIGFzIGl0IGlzIG5vdAoJICB1c2VkLgoJLSBVc2UgaW4gU0hGaWxlT3BlcmF0aW9uIHRoZSBmdW5jdGlvbiBTSE5vdGlmeUNyZWF0ZURpcmVjdG9yeSBpbnN0ZWFkCgkgIG9mIFNIQ3JlYXRlRGlyZWN0b3J5RXggYXMgaXQgZG9lcyBub3QgYW55bW9yZSB3aGF0IGlzIG5lZWRlZCBoZXJlLgoJLSBGaXggc2V2ZXJhbCB1bnNpZ25lZC9zaWduZWQgbWlzbWF0Y2ggd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVN0YW5kYXJkaXplIG9uICclbG9uZyAtLXBvaW50ZXInLgoJVXBkYXRlIGl0IHRvIG1hdGNoIHRoZSBsYXRlc3Qgc291cmNlLiBGaXhlcyBtYW55IHdpbmFwaV9jaGVjawoJd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb250aGNhbF9TZXRSYW5nZTogU2V0IHByb3BlciB2YWx1ZSBmb3IgbWluIGRhdGUuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGVudiB2YWx1ZXMgZnJvbSBjb25maWcsIHRoZXkgYXJlIG5vdyBtYWludGFpbmVkIGluIHRoZQoJcmVnaXN0cnkuCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc2NhdC5oLAoJICBpbmNsdWRlL3dpbmNyeXB0LmgsIGluY2x1ZGUvd2ludHJ1c3QuaCwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjazoKCUFkZCBtc2NhdC5oIGFuZCB3aW50cnVzdC5oOyB1cGRhdGUgd2luY3J5cHQuaC4KCUZpeCB0aGUgQ3J5cHRDQVRBZG1pbkFjcXVpcmVDb250ZXh0KCkgYW5kIFdpblZlcmlmeVRydXN0KCkgcHJvdG90eXBlcwoJc28gdGhleSB1c2UgdGhlIHByb3BlciB0eXBlcy4KCVVwZGF0ZSB0aGUgd2ludHJ1c3Qgc2VjdGlvbiBvZiB3aW4zMi5hcGkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJlbW92ZSBXU19CT1JERVIgc3R5bGUgZnJvbSBDb21ib0JveEV4IGNvbnRyb2wuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJLSBEb24ndCBkb3VibGUtcXVvdGUgYW4gYWxyZWFkeSBkb3VibGUtcXVvdGVkIGFyZ3VtZW50LgoJLSBQcm9wZXJseSBpbmNyZW1lbnQgdGhlIGZtdCBwb2ludGVyLgoKCSogZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJbXBsZW1lbnQgdGhlIGJlZ2lubmluZ3Mgb2YgdGhlIHN0YXRlYmxvY2sgY2xhc3MsIGFuZCBhIGZpcnN0IG1ldGhvZAoJdG8gdXNlIGl0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFRob3JzdGVuIEthbmkgPGJlZWJpeEBnbXgubmV0PgoJRG9uJ3QgYWRkIGV4dHJhIE9GRlNFVF9YL1kgdG8gdGhlIGNhbGN1bGF0aW9uIG9mIHJjQml0bWFwLnRvcC9sZWZ0LAoJanVzdCB1c2UgR2V0U3lzdGVtTWV0cmljcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2FybiBhYm91dCBpbXBsZW1lbnRpbmcgYSAtcmVnaXN0ZXIgZnVuY3Rpb24gYXMgc3RkY2FsbC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN1cHBvcnQgZm9yIGluY2x1ZGUvbXN2Y3J0LiBGaXhlcyBhIGJ1bmNoIG9mIHNwdXJpb3VzIHdhcm5pbmdzLgoJUmVtb3ZlIGtsdWRnZXMgZm9yIGtlcm5lbF9wcml2YXRlLmgsIGdkaV9wcml2YXRlLmgsIG50ZGxsX21pc2MuaCwKCXRzX3hsaWIuaCwgeDExZHJ2LmggYW5kIHgxMWZvbnQuaC4gVGhleSBhcmUgbm90IG5lZWRlZCBhbnltb3JlLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVHJhaWxpbmcgd2hpdGUgc3BhY2UgY2xlYW51cC4KCUFkZCBJQ2xhc3NGYWN0b3J5LT5DcmVhdGVJbnN0YW5jZSBhZ2dyZWdhdGlvbiBjaGVja3MuCglJSURfSURpcmVjdFNvdW5kQ2FwdHVyZSBhbmQgSUlEX0lEaXJlY3RTb3VuZENhcHR1cmU4IGFyZSBzYW1lIHNvCglyZW1vdmUgcmVkdW5kYW50IGNoZWNrLgoJQWxsb2NhdGUgY2FwdHVyZSBidWZmZXIgZm9yIGh3IGRyaXZlciBpZiBuZWNlc3NhcnkuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENoYW5nZVNlcnZpY2VDb25maWcyQSB1c2luZyBDaGFuZ2VTZXJ2aWNlQ29uZmlnMlcuCgoJKiBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYywKCSAgaW5jbHVkZS93aW51c2VyLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIHRoZSBjb3JyZWN0IHJlZ2lzdHJ5IGxvY2F0aW9uIHRvIG92ZXJyaWRlIGlzIFVzZXIgU2hlbGwgRm9sZGVycywgbm90CgkgIFNoZWxsIEZvbGRlcnMKCS0gaWYgVXNlciBTaGVsbCBGb2xkZXJzIGRvZXNuJ3QgZXhpc3QgaW4gSEtDVSwgSEtMTSBzaG91bGQgYmUgdHJpZWQKCS0gU0hHZXRTcGVjaWFsRm9sZGVyUGF0aCBzaG91bGQgY2FsbCBTSEdldEZvbGRlclBhdGgsIG5vdCB2aWNlLXZlcnNhCgktIHRoZSBkZWZhdWx0IHZhbHVlcyBzaG91bGQgYmUgbG9jYWxpemFibGUKCS0gc29tZSBvZiB0aGUgcGFyYW1ldGVyIGNoZWNraW5nIGFuZCByZXR1cm5lZCBMUElURU1JRExJU1RzIHdlcmUgYSBiaXQKCSAgb2ZmCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlY2xhcmUgRE9fRFVNUF9GVU5DKCkgYmVmb3JlIGNhbGxpbmcgaXQgYW5kIGNhbGwgbm9ybWFsbHkgc28gdGhhdAoJcGVybCBjYW4gY2hlY2sgaXRzIHByb3RvdHlwZS4KCgkqIHRvb2xzL21ha2VfYXV0aG9yczogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTdHJpY3RpZmllZC4KCgkqIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW9pby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBIQVZFX0xJQkFVRElPSU9fTUlESSBhbmQgTElCQVVESU9JT19NaWRpSW5pdCgpLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywgZGxscy9kYmdoZWxwL3BhdGguYywKCSAgZGxscy9kYmdoZWxwL3NvdXJjZS5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGRlY2xhcmF0aW9uIG9mIFN5bUVudW1TeW1ib2xzKCkgaW4gZGJnaGVscC5zcGVjLgoJVXNlIFBWT0lEIGluc3RlYWQgb2Ygdm9pZCogZm9yIGNvbnNpc3RlbmN5LgoJVXBkYXRlIHRoZSBkYmdoZWxwIHNlY3Rpb24gaW4gd2luMzIuYXBpLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHRoZSAnd3JvbmcgYXJndW1lbnQgY291bnQnIHdhcm5pbmcgY2xlYXJlciB3aGVuIGRlYWxpbmcgd2l0aCBsb25nCgl2cy4gImxvbmcgbG9uZyIgaXNzdWVzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3QgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSB5ZWFyIGZvciB0aGUgMzEnc3Qgb2YgRGVjZW1iZXIgb2YgbGVhcAoJeWVhcnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBta3RpbWUgc2hvdWxkIGNvbXB1dGUgdGhlIHRtX3dkYXksIHRtX3lkYXkgYW5kIHJlbm9ybWFsaXplIHRoZQoJICBvdGhlciBmaWVsZHMgb2YgdGhlIHN1cHBsaWVkIHRtIHN0cnVjdHVyZS4KCS0gYWRkIHByb3RvdHlwZSBkZWNsYXJhdGlvbnMgZm9yIHRoZSB0aW1lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCB0aGUgZGF0ZSBvZiB0aGUgY29tcGxldGVuZXNzIGF1ZGl0LgoKCSogaW5jbHVkZS93aW5zdmMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIFNFUlZJQ0VfTk9fQ0hBTkdFIGFuZCBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlckV4LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBlc2NhcGVkIHF1b3RlIGhhbmRsaW5nIGluIHN0cmluZ3MuCglQcm9wZXJseSBoYW5kbGUgQyBhbmQgQysrIGNvbW1lbnQgcGFyc2luZy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCVdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCVZhclBhcnNlTnVtRnJvbVN0cjogS2VlcCB6ZXJvcyBhZnRlciBkZWNpbWFsIHBvaW50LCBjb3JyZWN0bHkga2VlcAoJdHJhY2sgb2YgdHJhaWxpbmcgemVyb3MgaW4gYSBkZWNpbWFsIG51bWJlci4KCVZhck51bUZyb21QYXJzZU51bTogRG9uJ3QgZXJyb3Igb24gZGVjaW1hbCBleHByZXNzaW9ucyBmb3IgemVyby4KCgkqIGluY2x1ZGUvc2hlbGxhcGkuaDogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgcHJvdG90eXBlIGZvciBTSEZyZWVOYW1lTWFwcGluZ3MuCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJRml4IFdUSW5mb0EgaW4gd2ludGFiLmMgc28gaXQgY2FuIG5vdyB0YWtlIGxwT3V0cHV0ID09IE5VTEwsIGFzIHBlcgoJc3RhbmRhcmQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgbW9udGggY2FsZW5kYXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEcmF3IHdpdGggSUxEX1RSQU5TUEFSRU5UIGluc3RlYWQgb2YgSUxEX05PUk1BTCB0byBkcmF3IGJpdG1hcHMgZnJvbQoJICB0aGUgbmF0aXZlIHNoZWxsIGltYWdlIGxpc3QgcHJvcGVybHkgKHJlcG9ydGVkIGJ5IFRob3JzdGVuIEthbmkpLgoJLSBSZXdyaXRlIFRPT0xCQVJfTm90aWZ5Rm9ybWF0IHRvIGF2b2lkIHNpZGUtZWZmZWN0cy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ2hhbmdlU2VydmljZUNvbmZpZ0EgdXNpbmcgQ2hhbmdlU2VydmljZUNvbmZpZ1cuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSB1c2UgSURfU0VMRUNUX0ZPTlQgaW4gZ2VybWFuIG1lbnUKCS0gbW92ZSBzdHJpbmcgY29uc3RhbnRzIGludG8gc3RyaW5nIHJlc291cmNlcwoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgYSBkZXZpY2UgdGhhdCBpcyBhbHJlYWR5IGluIHVzZSBhIHRlc3QgZmFpbHVyZS4KCjIwMDQtMTAtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDEwMTkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMTAtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy91c2VyL3dpbnByb2MuaCwgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCB2YXJpb3VzIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9pdHNzL2NobV9saWIuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvZmZzLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBmZnMoKSB0byBwb3J0aW5nIGxpYnJhcnksIG5lZWRlZCBieSBNaW5HVy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOiBBbmlzaCBNaXN0cnkgPG1pc3RyeS43QG9zdS5lZHU+CglSZW5hbWUgZ2V0a2V5IGFuZCBzZXRrZXkgZm9yIEZyZWVCU0QuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgZHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIEVudW1VSUxhbmd1YWdlc0EvVy4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6Cgl3aW5lYnVpbGQgc2hvdWxkbid0IGRlcGVuZCBvbiB0aGUgTk9fVFJBQ0VfTVNHUyBkZWZpbmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBkbGxzL2R4ZXJyOC9NYWtlZmlsZS5pbiwKCSAgZGxscy9keGVycjkvTWFrZWZpbGUuaW4sIGRsbHMvZHhndWlkL01ha2VmaWxlLmluLAoJICBkbGxzL3N0cm1paWRzL01ha2VmaWxlLmluLCBkbGxzL3V1aWQvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgYSBuZXcgRExMREVGUyB2YXJpYWJsZSBpbiBjb25maWd1cmUvTWFrZWZpbGVzIHRvIGFjdHVhbGx5IHJlbW92ZQoJYWxsIHRoZSBkZWJ1ZyBtZXNzYWdlcyAobWludXMgRVJScykgaWYgdGhlIHVzZXIgZGVjaWRlcyBzby4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNldFBhdGhXb3JkQnJlYWtQcm9jIGFuZCBNaXJyb3JJY29uLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZWJhciBjb21wbGV0ZW5lc3MgYXVkaXQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIHdpdGggV1NfRVhfVE9PTFdJTkRPVyBzdHlsZSBzaG91bGQgbm90IGhhdmUgbWluL21heCBidXR0b25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFdhcnJlbiBCYWlyZCA8d2FycmVuLmJhaXJkQGNpbW1ldHJ5LmNvbT4KCS0gYWRkZWQgLWZQSUMgdG8gdGhlIExERExMRkxBR1MgbGluZSBmb3IgSFBVWDsgd2luZWdjYyBuZWVkcyB0byBwYXNzCgkgIC1mUElDIHRvIHRoZSBsaW5rIGxpbmUgdG8ga2VlcCB0aGUgaHAgbGlua2VyIGhhcHB5CgktIHNldCBETExFWFQgdG8gLnNsIG9uIEhQVVgKCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJlZ1F1ZXJ5VmFsdWVXIG11c3QgcmV0dXJuIGNvdW50IGluIGJ5dGVzIGZvciBlbXB0eSBzdHJpbmcgdG9vLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBmYWlsdXJlIHdpdGggRFNFUlJfTk9EUklWRVIgYSB0ZXN0IGZhaWx1cmUuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBUcmFuc2xhdGVBY2NlbGVyYXRvckEgaGFuZGxlIG5hdGlvbmFsIGNoYXJhY3RlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglQYXNzIGNvcnJlY3QgdWlQYXJhbSBmb3IgU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MuCgoJKiB0b29scy93aW5lLmluZjogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIEhLTE0sJUN1cnJlbnR2ZXJzaW9uJVxTZXR1cCwiQm9vdERpciIgdG8gdGhlIGluc3RhbGxhdGlvbgoJZGVmYXVsdHMuCgoJKiBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIGtlcm5lbDMyIGFzIGltcG9ydCBmb3Igd2ludHJ1c3QuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDYWxsTmFtZWRQaXBlQSB1c2luZyBDYWxsTmFtZWRQaXBlVy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCVdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCUtlZXAgInRyYWlsaW5nIiB6ZXJvcyBvbiB3aG9sZSBudW1iZXIgcGFydCBvZiBhIGRlY2ltYWwuCglBZGQgYW4gZXhhbXBsZSBvZiB0aGlzIHRvIHRlc3RzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCVdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCVRlc3QgdGhhdCBTYWZlQXJyYXlEZXN0cm95RGF0YSBrZWVwcyB0aGUgcG9pbnRlciBpZiBGQURGX1NUQVRJQyBpcwoJc2V0LCBudWxscyBpdCBvdGhlcndpc2UuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOiBXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglTYWZlQXJyYXlEZXN0cm95RGF0YSAtIGtlZXAgcG9pbnRlciwgZG9uJ3QgZGVzdHJveSBkYXRhIGlmIEZBREZfU1RBVElDCglpcyBzZXQuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5oOgoJT3V0cHV0IHRoZSB2aXJ0dWFsIHRhYmxlcyBmb3IgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzIHVzaW5nIGFzc2VtYmx5IHNvCgl0aGF0IHRoZXkgY2FuIGhhdmUgdGhlIGNvcnJlY3QgbGF5b3V0LCBhbmQgZ2V0IHJpZCBvZiB0aGUKCWNvcnJlc3BvbmRpbmcgaGFja3MgaW4gUlRUSV9HZXRPYmplY3RMb2NhdG9yLgoJQnVpbGQgbW9yZSBvZiB0aGUgY29kZSBvbiBub24taTM4NiBwbGF0Zm9ybXMgdG9vLgoJUHJvdGVjdCBfX1JURHluYW1pY0Nhc3QgYW5kIGZyaWVuZHMgd2l0aCBleGNlcHRpb24gaGFuZGxlcnMuCglGaXggaGFuZGxpbmcgb2YgdGhlIHZ0YWJsZSBwb2ludGVyIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkZWNsYXJlCglhbGwgb2JqZWN0IHBvaW50ZXJzIGFzIHR5cGVfaW5mby4KCgkqIHNlcnZlci9tYWluLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUFkZGVkIGEgdmVyc2lvbiBvcHRpb24gdG8gdGhlIHdpbmVzZXJ2ZXIuCgoJKiBpbmNsdWRlL3RjaGFyLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIEZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UKCS0gU2VwYXJhdGUgd2ludF90IGRlZmluaXRpb24gZnJvbSB3Y3R5cGVfdCBkZWZpbml0aW9uIChuZWVkZWQgZm9yCgkgIEN5Z3dpbiB0YXJnZXQpLgoKCSogbG9hZGVyL2t0aHJlYWQuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglQcm90ZWN0IHVzZSBvZiBwdGhyZWFkIGZ1bmN0aW9ucyB3aXRoICNpZmRlZiBIQVZFX1BUSFJFQURfSC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgdGhlIHNoZWxsbWVudSBjb2RlIHRvIHVzZSB1bmljb2RlLgoKMjAwNC0xMC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgTU1TWVNFUlJfTk9UU1VQUE9SVEVEIGFuIGVycm9yIGZvciB3aWRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCURvbid0IGZyZWUgc3ViY2xhc3Mgc3RhY2sgd2hpbGUgaXQncyBzdGlsbCBpbiB1c2UuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglSZW1vdmluZyByZWZlcmVuY2VzIHRvIG5vdyBvYnNvbGV0ZSB3aW5lc2V0dXB0aywgYXMgcmVxdWVzdGVkIGJ5IHVzZXJzLgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuaDoKCUZpeGVkIF9fUlREeW5hbWljQ2FzdCB0byByZXR1cm4gdGhlIGNvcnJlY3QgcG9pbnRlciBmb3IgbXVsdGlwbGUKCWluaGVyaXRhbmNlIGhpZXJhcmNoaWVzICh0aGFua3MgdG8gTXVzZSBSZXNlYXJjaCBmb3IgaGVscCB3aXRoIHRoaXMKCW9uZSkuCglBZGRlZCBzb21lIGRlYnVnIG91dHB1dC4KCgkqIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYzoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUR1cmluZyBzdGFydHVwIG9mIHRoZSBjb25uZWN0aW9uIHRvIGFuIGV4dGVybmFsIE9EQkMgcHJvdmlkZXIKCShlLmcuIHVuaXhPREJDKSByZXBsaWNhdGUgdGhhdCBwcm92aWRlcidzIGRyaXZlciBhbmQgRFNOIGRhdGEgdG8gdGhlCglyZWdpc3RyeSBzbyB0aGF0IFdpbmRvd3MgcHJvZ3JhbXMgdGhhdCBhY3R1YWxseSBxdWVyeSB0aGUgcmVnaXN0cnkKCXJhdGhlciB0aGFuIHRoZSBPREJDIHdpbGwgZmluZCBhdCBsZWFzdCBzb21lIGluZm9ybWF0aW9uLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RiZ2hlbHAvbWVtb3J5LmMsCgkgIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvYXhjb3JlLmlkbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBzb21lIHR5cGVzIHByb2JsZW1zLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCVRlc3QgemVybyBleHBvbmVudHMgd2l0aCBhbmQgd2l0aG91dCBzaWducy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywKCSAgZGxscy93aW5lZG9zL3JlbGF5LmM6CglNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCVB1c2ggb24gc3RhY2sgaW4gMTYgYml0IG1vZGUgd2l0aCBzZWdtZW50IHdyYXAgYXJvdW5kLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3JpY2hlZGl0LmgsCgkgIGluY2x1ZGUvcmljaG9sZS5oLCBpbmNsdWRlL3JpY2hvbGUuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gSURMIGZpbGUgZm9yIFJpY2hlZGl0J3MgT0xFIGludGVyZmFjZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTW9kaWZ5IEFOU0kgZnVuY3Rpb25zIHRvIGFsbG9jYXRlIGludGVybWVkaWF0ZSBVbmljb2RlIHN0cmluZ3Mgb24gdGhlCgloZWFwIGluc3RlYWQgb2Ygc3RhY2suCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmV2aXNlIHdpbm1tL3RpbWUuYyB0byBmaXggdGltZXIgcmVzb2x1dGlvbiBhdCAxIG1zLiBUaGlzIHRoZW4gYWxsb3dzCglhIG11Y2ggbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGltZXIgZXZlbnRzIGFuZCB0aW1lR2V0VGltZSwKCWFuZCBjYWxsZXJzIHRoYXQgdXNlZCBzdWIgMTAgbXMgcmVzb2x1dGlvbiB3aWxsIG5vdyBnZXQgY29ycmVjdAoJcmVzdWx0cy4KCgkqIGxvYWRlci9rdGhyZWFkLmM6IFJlc3RvcmUgbG9zdCBjaHVuayBvZiBwcmV2aW91cyBwYXRjaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZXhkaXNwLmlkbCwgaW5jbHVkZS9leGRpc3BpZC5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgZGlzcGludGVyZmFjZXM6IERXZWJCcm93c2VyRXZlbnRzIGFuZCBEV2ViQnJvd3NlckV2ZW50czIuCgktIEFkZGVkIGNvY2xhc3M6IFdlYkJyb3dzZXIuCgktIEFkZGVkIGV4ZGlzcGlkLmguCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBsaWJzL3BvcnQvaW50ZXJsb2NrZWQuYywgbG9hZGVyL2t0aHJlYWQuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9iZV9hbHBoYS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBzb21lIG1vcmUgQWxwaGEgYXNtIGNvZGUgYW5kIEFscGhhLXNwZWNpZmljIHBhcnRzLgoKCSogZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9zeXNwYXJhbXMuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IFVTRVIzMiBhZ2FpbnN0IGVhcmx5IGdyYXBoaWNzIGRyaXZlciB1bmxvYWRpbmcuCgoJKiBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9saXN0Ym94LmMsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBMQlNfQ09NQk9CT1gsIGFuZCBtYWtlIHVzZSBvZiBpdC4KCUJldHRlciBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIExpc3Rib3ggYW5kIENvbWJvYm94LgoJSGF2ZSBhIHNpbmdsZSBzZXQgb2Ygd25kcHJvY3MsIGp1c3QgbGlrZSBXaW5kb3dzLgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6CglKb3JpcyBIdWl6ZXIgPGpvcmlzaHVpemVyQHBsYW5ldC5ubD4KCUFkZGVkIElDbGFzc0ZhY3RvcnktPkNyZWF0ZUluc3RhbmNlIGFnZ3JlZ2F0aW9uIGNoZWNrcy4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6CglQZXRlciBSaW9jcmV1eCA8cGFyK3dpbmVfcGF0Y2hlc0BzaWxpc3RpeC5jb20+CgkgTWFrZSBEcmF3RGliRHJhdyBob25vdXIgdGhlIERERl9CQUNLR1JPVU5EUEFMIGZsYWcuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJSW5pdGlhbGl6ZSAuQ09NIHN0YWNrLgoKCSogZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRDQVRBZG1pbkFjcXVpcmVDb250ZXh0LgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFJ0bFF1ZXJ5VGltZXpvbmVJbmZvcm1hdGlvbiB1c2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVnaXN0cnkgaWYgaXQKCWlzIGF2YWlsYWJsZS4KCgkqIGRsbHMvZ2RpL3BhbGV0dGUuYzogRG91ZyBQYXVsIDxkb3VnQGVsZW1lbnRhbC5hdGguY3g+CglHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglEb24ndCB1bnJlYWxpemUgdGhlIHBhbGV0dGUgYnkgY2FsbGluZyBTZXRQYWxldHRlRW50cmllcy4KCUNoZWNrIHBlRmxhZ3MgZm9yIFBDX1JFU0VSVkVELgoKCSogZGxscy94MTFkcnYvcGFsZXR0ZS5jOiBEb3VnIFBhdWwgPGRvdWdAZWxlbWVudGFsLmF0aC5jeD4KCUdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCUNoYW5nZSByZWFkaW5nIG9mIFBDXyhFWFBMSUNJVHxOT0NPTExBUFNFfFJFU0VSVkVEKSB0byBoYW5kbGUgbXVsdGlwbGUKCXZhbHVlcy4KCgkqIHByb2dyYW1zL2Nsb2NrL0NzLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9Dcy5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0NzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vQ3MucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Dcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLAoJICBwcm9ncmFtcy9zdGFydC9Dcy5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCURhdmlkIEtyZWRiYSA8a3JlZGJhQGlib3QuY2FzLmN6PgoJQWRkZWQgc29tZSBDemVjaCByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBUQk5fREVMRVRJTkdCVVRUT04gc2VuZHMgdGhlIGNvbW1hbmQgSUQsIG5vdCB0aGUgaW5kZXguCgktIEZpbGwgaW4gdGJCdXR0b24gc3RydWN0dXJlIGZvciBUQk5fREVMRVRJTkdCVVRUT04gbm90aWZpY2F0aW9uLgoJLSBEb2N1bWVudCBUQk5fUVVFUlkqIHNlbmRpbmcgaW5kaWNlcy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcG9ydCBlbnVtZXJhdGlvbi4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUF2b2lkIHVzaW5nIGdldHRpbWVvZmRheSgpLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVGVzdCB3aGV0aGVyIHRoZSBmdF9lbmNvZGluZydzIGFyZSBkZWZpbmVkLCBub3QgdGhlIEZUX0VOQ09ESU5HJ3MuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZnVuY3Rpb24gZm9yIE9wZW5JbnB1dERlc2t0b3AuCgoJKiBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgQ3JlYXRlUHJveHlGcm9tVHlwZUluZm8uCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVW5pZm9ybWl6ZSBlbmRpYW5uZXNzIGRlZmluaXRpb24uCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUHJvdGVjdCBzb21lIG1vcmUgdHlwZXMgd2hpY2ggY2FuIGJlIHJlZGVjbGFyZWQgaW4gWG1kLmguCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiBvdXQgb2YgdGhlIGRlZmF1bHQgY2FzZSwgYXNzZXJ0KCkgaXMgcmVtb3ZlZCB3aXRoIC1ETkRFQlVHLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHNvbWUgcGxhY2VzIHdoZXJlIG5vIGRyaXZlciBwcmVzZW50IGNhdXNlcyBwcm9ibGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJbWFnZUxpc3RfU2V0Q29sb3JUYWJsZS4KCgkqIGRsbHMvZ2RpL2RpYi5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlICJjb2xvcnMiIHBhcmFtZXRlciBvZiBTZXRESUJDb2xvclRhYmxlIHNob3VsZCBiZSBDT05TVC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYSB0eXBvIGluIENyeXB0RXhwb3J0S2V5LgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCB3cml0aW5nIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgZGlzcGludGVyZmFjZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHByb3h5IGRlc3RydWN0aW9uIGNvbW1lbnQuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYXNrIFNJR0NITEQgdG8gcHJldmVudCBwYXJ0aWFsIHdyaXRlcyBpbiB0aGUgbmV3X3Byb2Nlc3Mgc2VydmVyCgljYWxsLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglXaWxsaWFtIFBvZXRyYSBZb2dhIEhhZGlzb2VzZW4gPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJQWRkZWQgc29tZSBzeXN0ZW0gbWV0cmljcyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkZWQgU0hGcmVlTmFtZU1hcHBpbmdzIGltcGxlbWVudGF0aW9uLgoKCSogbG9hZGVyL2t0aHJlYWQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IHRoZSBkZWNsYXJhdGlvbiBvZiBwdGhyZWFkX211dGV4YXR0cl9nZXR0eXBlKCkuCgoyMDA0LTEwLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvY3BwLmM6IEZpeGVkIHNwZWxsaW5nIG9mICdoaWVyYXJjaHknLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZGVkIGNoZWNrIGZvciBmb3JrKCkgdG8gZml4IHRoZSBNaW5HVyBidWlsZC4KCgkqIHRvb2xzL3dpbmUuaW5mLCB3aW5kb3dzL3N5c3BhcmFtcy5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJSW1wbGVtZW50IGFjdGlvbiA4MyBpbiBTeXN0ZW1QYXJhbWV0ZXJzSW5mbygpLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29udGV4dF9hbHBoYS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ3JlYXRlIHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25zIGZvciB3aW5lc2VydmVyIGNvbnRleHRzIGZvciBBbHBoYS4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglDb21wbGV0ZWx5IGRpc2FibGUgdW51c2VkIGZ1bmN0aW9uIHNob3dfaW1hZ2UoKS4KCgkqIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsCgkgIGRsbHMvZDNkOS9yZXNvdXJjZS5jLCBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvc3dhcGNoYWluLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvdnNoYWRlcmRlY2xhcmF0aW9uLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gQWRkIHN1cHBvcnQgKGFzIGZhciBhcyB3YXMgcHJldmlvdXNseSkgZm9yIHRoZSBWZXJ0ZXhCdWZmZXIgYW5kCgkgIFJlc291cmNlIGNsYXNzZXMgaW4gd2luZWQzZCBhbmQgdXNlIHdoZW4gY2FsbGVkIGZyb20gZDNkOS4KCS0gUmVkdWNlIHRoZSBoZWFkZXIgaW5jbHVkZXMgaW4gYWxsIHRoZSBkM2Q5IGludGVyZmFjZSB0byBvbmUgY29tbW9uCgkgIHNldCBpbiB0aGUgcHJpdmF0ZSBoZWFkZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgYnVpbGQgd2luZS1wcmVsb2FkZXIgZm9yIG90aGVyIGNwdXMgdGhhbiB4ODYuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglnZXRNZXNzYWdlKCkgaXMgb25seSBkZWZpbmVkIHdoZW4gSEFWRV9PU1MgaXMgZGVmaW5lZC4KCgkqIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywKCSAgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGluY2x1ZGUvdGFwaS5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJUHJvdmlkZSBhbiAnQScgdmVyc2lvbiBvZiBhcHByb3ByaWF0ZSBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUHJlZml4IF9mc29wZW4gd2l0aCBNU1ZDUlRfIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIE1pbkdXIGhlYWRlci4KCVR5cG8gZml4LgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCB1c2UgbWFnaWMgc2l6ZXMsIGFjdHVhbGx5IGNhbGN1bGF0ZSB0aGVtLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglPbmx5IGNvbXBpbGUgQnVpbGRDYWxsRnJvbTE2RnVuYyBvbiB4ODYuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJRml4IFNIRGVsZXRlS2V5IHNvIHRoYXQgaXQgd2lsbCBoYW5kbGUgZGVsZXRpbmcgYSBrZXkgd2l0aCBtb3JlIHRoYW4KCW9uZSBzdWJrZXkuICBBbHNvIGluY2x1ZGVzIHRlc3QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlY2xhcmF0aW9ucyBmb3IgR2V0Q2xhc3NMb25nUHRye0EsV30sIEdDTFBfKiBkZWZpbmVzIGFuZCB1c2VyCglvYmplY3QgaW5mb3JtYXRpb24gZGVmaW5lcy4KCjIwMDQtMTAtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBkbGxzL2RiZ2hlbHAvc291cmNlLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kYmdoZWxwL3R5cGUuYywgaW5jbHVkZS9kYmdoZWxwLmgsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGZ1bmN0aW9uIGFuZCBzdHJ1Y3R1cmUgZmllbGQgdHlwZXMgc28gd2UgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUKCW5hdGl2ZSBkYmdoZWxwLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC92aXJ0dWFsLmMsIGRsbHMvbnRkbGwvZW52LmMsCgkgIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3JlbGF5LmMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggTnRBbGxvY2F0ZVZpcnR1YWxNZW1vcnkgZGVjbGFyYXRpb24gYW5kIGZpeCB1c2VycyBvZiB0aGUKCWZ1bmN0aW9uLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgcGlkX3QgYW5kIHNzaXplX3QgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglBbGxvdyBleHBvbmVudHMgb2YgemVybyAobGlrZSAiMS4wMDBFMCIpIHRvIHBhcnNlCgljb3JyZWN0bHkuIFByZXZpb3VzbHksIHRoZXkgY2F1c2VkIERJU1BfRV9UWVBFTUlTTUFUQ0guCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJQWRkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBzdHJ1Y3QgdGltZXZhbCBmb3IgZnV0aW1lcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgTnRZaWVsZEV4ZWN1dGlvbi4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kYmdoZWxwL21zYy5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1vdmUgaGVhZGVyIHBhcnNpbmcgdG8gY2FsbGVycyBvZiBwZV9sb2FkX2RlYnVnX2RpcmVjdG9yeS4KCS0gQWRkIHN0dWJzIGFuZCBzdHJ1Y3R1cmVzIGZvciBMRl9QUk9DRURVUkUgdHlwZXMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIEhNQUNfSU5GTyB0eXBlZGVmLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5tbS5jLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBicmluZyB0aGUgbXVsdGltZWRpYSBkb2MgdXAtdG8tZGF0ZQoJLSBtb3ZlZCB0aGUgVE9ETyBmcm9tIHRoZSBkb2MgaW50byB0aGUgY29kZQoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBXTV9NRElTRVRNRU5VIGhhbmRsZXIgc2hvdWxkIHVwZGF0ZSBuZXcgZnJhbWUgbWVudSBvbmx5IGlmIGFuIGFjdGl2ZQoJICBhbmQgbWF4aW1pemVkIE1ESSBjaGlsZCBpcyB2aXNpYmxlLgoJLSBBZGQgYSB0ZXN0IGNhc2UgZm9yIE1ESSBjaGlsZCBhY3RpdmF0aW9uIHNlcXVlbmNlLgoKCSogZGxscy9nZGkvdGVzdHMvYml0bWFwLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBcHBhcmVudGx5IHRoaXMgcG9ydGlvbiBvZiB0aGUgdGVzdCB3YXMgZmFpbGluZyB1bmRlciBzb21lIHZlcnNpb25zIG9mCgl3aW54cCwgc28gcmVtb3ZlIGl0LgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC93aWRsLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBjcmVhdGlvbiBvZiBkaXNwaW50ZXJmYWNlIGhlYWRlci4KCS0gQWRkZWQgY3JlYXRpb24gb2YgY29jbGFzcyBoZWFkZXIuCgktIEFkZGVkIG1lc3NhZ2VzIHdoZW4gZm9wZW4gZmFpbHMuCgoJKiBkbGxzL2tlcm5lbC9kb3NtZW0uYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBdm9pZCB1c2luZyBnZXR0aW1lb2ZkYXkuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW5jbHVkZSBzdGRpby5oIGZvciBNaW5HVy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ3J5cHREZXJpdmVLZXkgLSBzZXQgcmV0dXJuIGtleSBoYW5kbGUgdG8gTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVNvcnQgZmlsZXMvZm9sZGVycyBiZWZvcmUgdGVzdGluZy4KCgkqIGluY2x1ZGUvd2lubnQuaDogQWRhbSBELiBNb3NzIDxhZGFtQGdpbXAub3JnPgoJRGVmaW5lIFZFUl9TVUlURV9CTEFERS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUNvcnJlY3RseSBkZWZpbmUgV0lOVkVSLCBfV0lOMzJfV0lOTlQgYW5kIF9XSU4zMl9JRSB2ZXJzaW9ucyBpbiBhbGwKCWNhc2VzLgoKCSogd2luZG93cy9kaWFsb2cuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWNvZGlmeSBESUFMT0dfRGxnRGlyU2VsZWN0LiBVc2UgU2VuZE1lc3NhZ2VXIHdoZW5ldmVyIHBvc3NpYmxlLgoKCSogZGxscy91c2VyL2xpc3Rib3guYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBsaXN0Ym94IGNvbnRyb2wuCglGaXggc29tZSBpbmRlbnRhdGlvbiBwcm9ibGVtcy4KCgkqIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jLCBsaWJzL3dpbmUvcG9ydC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IGludGVybG9ja2VkKiBhbmQgd2luZV9zd2l0Y2hfdG9fc3RhY2sgZm9yIEFscGhhLgoKMjAwNC0xMC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJdGVtcyBhcmUgdmFyaWFibGUgc2l6ZWQsIHVzZSBhbiBhY2Nlc3NvciB0byBnZXQgYXQgdGhlbS4KCUNvbWJpbmUgQS9XIGNhbGxzIHRvZ2V0aGVyIHRvIHJlbW92ZSBkdXBsaWNhdGlvbi4KCURvbid0IGxlYWsgdGV4dCB3aGVuIHJlbW92aW5nL2NoYW5naW5nIGl0ZW1zLgoJVHVybiBvZmYgaG90IHRyYWNraW5nIHdoZW4gd2UgZGVsZXRlIHRoZSBsYXN0IGl0ZW0uCglVc2UgdGhlICdkZWxldGUgMSBpdGVtJyBsb2dpYyB3aGVuIGRlbGV0aW5nIGFsbCBpdGVtcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hZGUgTnREZWxheUV4ZWN1dGlvbiB3aXRoIGEgMCB0aW1lb3V0IHlpZWxkIHRoZSBDUFUsIGFzIGl0IGlzCglzdXBwb3NlZCB0by4KCjIwMDQtMTAtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUJ1aWxkIFdpbmUgYXMgMzItYml0IGJ5IGRlZmF1bHQgb24geDg2LTY0LCBhbmQgYWRkZWQgYSAtLWVuYWJsZS13aW42NAoJb3B0aW9uIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gcGxheSB3aXRoIDY0LWJpdCBzdXBwb3J0LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3Blcmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVuIGxhc3QgTURJIGNoaWxkIGlzIGJlaW5nIGRlc3Ryb3llZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJVW5jb25kaXRpb25hbGx5IG9wZW4gYSBmcmVzaCBjb25zb2xlIGZvciB0aGUgdGVzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3Blcmx5IGNvbXBhcmUgZmlsZSB2ZXJzaW9ucyB3aGVuIHVwZ3JhZGluZyBmaWxlcyBzbyB0aGF0IG5ldwoJdmVyc2lvbnMgZ2V0IHByb3Blcmx5IGluc3RhbGxlZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLAoJICB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUFkZGVkIC0tbGQtY21kIGFuZCAtLW5tLWNtZCBvcHRpb25zIGluIHdpbmVidWlsZCwgYW5kIG1ha2Ugd2luZWdjYwoJcGFzcyB0aGUgcHJvcGVyIGxkIGNvbW1hbmQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQmV0dGVyIGRvY3VtZW50IHNvbWUgYXBpcyBpbiBjb21tZGxnIGFuZCBtc2Ntcy4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgdHlwZXMgY2hlY2tlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL2V4ZGlzcC5pZGw6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBJV2ViQnJvd3NlMiBpbnRlcmZhY2UuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMvcXVhcnR6L21haW4uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgdGhlIGNhbGxpbmcgY29udmVudGlvbiBvZiBHZXRTeXN0ZW1Xb3c2NERpcmVjdG9yeXtBLFd9LAoJQW1wRmFjdG9yVG9EQiBhbmQgREJUb0FtcEZhY3Rvci4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS9kM2Q5dHlwZXMuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29weSBhbmQgdGlkeSB1cCB0aGUgY29kZSBmcm9tIGR4OCBjcmVhdGUgZGV2aWNlIGludG8gd2luZWQzZC4gQ2FsbAoJZnJvbSB3aW5lZDNkIGFuZCBkM2Q4LCBidXQgc2hvcnQgdGVybSBvbmx5IHVzZSB0aGUgY29kZSBmb3IgcmVhbCBmcm9tCglkM2Q5LgoKCSogZGxscy91c2VyL3Njcm9sbC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIHNjcm9sbCBjb250cm9sLgoJUmVvcmdhbml6ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiBhIG1vcmUgcmVhZGFibGUgZm9ybWF0LgoKCSogZGxscy91c2VyL2VkaXQuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglVcGRhdGUgRnJlbmNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2FibGUgcmVtYWluaW5nIHBpZWNlIG9mIHRoZSBjb2RlIHdoaWNoIGF1dG8gYXNzaWducyB2aXJ0dWFsIGtleQoJY29kZXMsIGl0IGJyZWFrcyBWS19PRU1fMTAyIGluIGZpbm5pc2gvc3dlZGlzaCBrZXlib2FyZCBsYXlvdXRzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9yZWFzb24uaCwgaW5jbHVkZS93aW5yZWcuaCwKCSAgaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgcmVhc29uIGNvZGVzIGZvciBFeGl0V2luZG93c0V4KCkuCglBbHNvIGFkZCBFV1hfRk9SQ0VJRkhVTkcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyaW5nIHVwIHRoZSBGaWxlLT5TYXZlIGRpYWxvZyB3aGVuIHJlY2VpdmluZyBXTV9RVUVSWUVORFNFU1NJT04uCgoJKiBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmMsIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwub2N4LnNwZWMsCgkgIGluY2x1ZGUvaHRtbGhlbHAuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIGRvV2luTWFpbiBzdHViCgktIEZpeGVkIGh0bWxoZWxwLmgKCgkqIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0guCgoyMDA0LTEwLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdF9tZDQuYywgZGxscy9hZHZhcGkzMi9jcnlwdF9tZDUuYzoKCVJlbW92ZWQgd3JvbmcgbWVtc2V0IGNhbGxzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJRml4ZWQgTUQ0RmluYWwvTUQ1RmluYWwgZW50cmllcyAoc3BvdHRlZCBieSBWaW5jZW50IELpcm9uKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL2hhbmRsZS5jLAoJICBkbGxzL21zY21zL2xjbXNfYXBpLmgsIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywKCSAgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLAoJICBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zY21zL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGNvbG9yIHByb2ZpbGUgaGFuZGxlcy4KCUltcGxlbWVudCBPcGVuQ29sb3JQcm9maWxle0EsV30gYW5kIENsb3NlQ29sb3JQcm9maWxlLgoJSW1wbGVtZW50IEdldENvbG9yRGlyZWN0b3J5e0EsV30gYW5kIEluc3RhbGxDb2xvclByb2ZpbGV7QSxXfS4KCUltcGxlbWVudCBVbmluc3RhbGxDb2xvclByb2ZpbGV7QSxXfS4KCUR5bmFtaWNhbGx5IGxvYWQgbGlibGNtcy4KCUFkZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svcHJlcHJvY2Vzc29yLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGZ1bmN0aW9uIHByb3RvdHlwZXMuCglNb2RpZnkgZnVuY3Rpb24gY2FsbHMgc28gdGhlIHByb3RvdHlwZXMgYXJlIGNoZWNrZWQuCgoJKiBsaWJzL3BvcnQvZnV0aW1lcy5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglOZWVkIHRvIGluY2x1ZGUgc3lzL3RpbWUuaC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSByZW1vdmUgdW51c2VkIElEU19GSUxFX01PVkVfRVJST1IKCS0gdXNlIFNldFdpbmRvd0ZvbnQoKSBpbnN0ZWFkIG9mIFNlbmRNZXNzYWdlKFdNX1NFVEZPTlQpCgktIHJlbW92ZSB1bnVzZWQgY29tbWVudAoJLSB1c2UgR0VUX1hfTFBBUkFNKCkgaW5zdGVhZCBvZiBHRVRfWF9MUEFSQU0oKQoJLSByZW1vdmUgb2xkIF9ST1NfIHByZXByb2Nlc3NvciBzdGF0ZW1lbnRzCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29uc3RpZnkgc29tZSBzdGF0aWNzIGFuZCBtYWtlIHRoZW0gc21hbGxlci4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1hZ2VMaXN0X01lcmdlIHNob3VsZCBub3QgZmFpbCBpZiBpbmRpY2VzIGFyZSBiYWQuCglBZGQgdGVzdHMgZm9yIHRoaXMgY2FzZSwgYSB2aXNpYmxlIHRlc3QgbW9kZSBhbmQgZml4IERyYXdJbmRpcmVjdCB0ZXN0Cgl1bmRlciBzb21lIG5hdGl2ZSBjb21jdGwzMi5kbGwncy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURyYXcgKy8tIGNvcnJlY3RseSBmb3IgbGFyZ2UgaWNvbiBzaXplcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIG1pc3NpbmcgT0RTXyBjb25zdGFudHMsIHRhZ25hbWUuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVmVjdG9ycyBuZWVkIGFsbCAzMiBiaXRzIHRvIGhhbmRsZSBfcmVhbGx5XyBsYXJnZSBhcHBzLgoKCSogdG9vbHMvZ2VucGF0Y2g6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIGdlbmVyYXRlZCBwYXRjaCB3YXMgbWlzc2luZyBhIGxpbmUgb2YgdGhlIGRpZmYuCglnZW5wYXRjaCB3YXMgYWxzbyBkZXBlbmRpbmcgb24gdGhlIG5ldyBmaWxlcyBiZWluZyBsaXN0ZWQgZmlyc3QgYnkKCSdjdnMgZGlmZicgKHdoaWNoIGlzIHRoZSBjYXNlIGJ1dCBJJ20gbm90IHN1cmUgdGhlcmUgaXMgYW55IGhhcmQKCWd1YXJhbnRlZSkuCglVc2UgJ3BlcmwgLXcnIGZvciBtb3JlIGNoZWNraW5nLCBmaXggdGhlIHJlc3VsdGluZyAndW5kZWZpbmVkIHZhbHVlJwoJd2FybmluZ3MuIEluIG1hbnkgY2FzZXMgd2UgZG9uJ3QganVzdCB3YW50ICRvcHRpb25ze3h4eH0gdG8gZXhpc3QsIHdlCgl3YW50IGl0IHRvIGJlIGRlZmluZWQuCglSZXN0cmljdCB0aGUgc2NvcGUgb2YgdmFyaWFibGVzIGFuZCByZW1vdmUgdW5uZWVkZWQgdmFyaWFibGVzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCAibW92ZSBmaWxlIiBpbXBsZW1lbnRhdGlvbiwgaW4gZGV0YWlsOgoJLSB1c2UgVENIQVIgdG8gbWFrZSB0aGUgY29kZSBVTklDT0RFIGNvbXBhdGlibGUKCS0gcGFzcyByZXR1cm4gc3RyaW5nIGJ1ZmZlciB0byB0aGUgZGlhbG9nIHByb2NlZHVyZQoJLSBjYWxsIGRpc3BsYXlfZXJyb3IoKSBpbiBjYXNlIG9mIGVycm9ycyB0byBkaXNwbGF5IHRoZSBXSU4zMiBlcnJvcgoJICBtZXNzYWdlCgktIHVzZSBzbGFzaCBpbnN0ZWFkIG9mIGJhY2sgc2xhc2ggZm9yIHVuaXggZmlsZSBzeXN0ZW0gY29tcGF0aWJpbGl0eQoJLSBmb3JtYXQgdGhlIGNvZGUgZXF1YWxseSB0byB0aGUgcmVtYWluaW5nIHdpbmVmaWxlIGNvZGUKCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sCgkgIGxpYnMvcG9ydC9mdXRpbWVzLmM6CglBZGRlZCBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGZ1dGltZXMuCgoJKiBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIGEgSVdpbmVEM0REZXZpY2Ugb2JqZWN0IHR5cGUgKGVtcHR5IGZvciBub3cpLCBhbmQgY3JlYXRlIG9uZSB3aGVuCglhbiBJRGlyZWN0M0REZXZpY2Ugb2JqZWN0IGlzIGNyZWF0ZWQuCgoJKiB0b29scy93aW5hcGkvbWFrZV9maWx0ZXJfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL21zdmNtYWtlcl9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Rfb3B0aW9ucy5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgaW1wb3J0IHBhcnNlX2NvbW1hX2xpc3QoKSB1bmxlc3MgbmVjZXNzYXJ5LgoJd2luYXBpX2NoZWNrX29wdGlvbnMucG06IEZpeCB0eXBvIGluIHRoZSBwYXJzZV9jb21tYV9saXN0KCkKCXJlZmVyZW5jZS4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9yZWcuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSB0aGUgcHJvcGVyICNpbmNsdWRlIGZpbGUgZGVsaW1pdGVyIGluIGFkdnBhY2suCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltbWVkaWF0ZWx5IHJlZnJlc2ggY2hpbGQgd2luZG93cyBhZnRlciBjaGFuZ2luZyB0aGUgZm9udC4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJRm9yY2UgYWxsIHRoZSB0b29scyB0byBiZSByZWJ1aWx0IGJlZm9yZSBtYWtlIGRlcGVuZCwgb3RoZXJ3aXNlIG1ha2UKCXdpbGwgdHJ5IHRvIGRvIHRoYXQgZnJvbSB0aGUgaW5jbHVkZSBkaXJlY3RvcnkuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCU9ubHkgc2VuZCBXTV9QQUlOVElDT04gYW5kIFdNX0lDT05FUkFTRUJLR05EIHRvIDE2LWJpdCB3aW5kb3dzIChmb3VuZAoJYnkgSmVyZW15IFdoaXRlKS4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvYXRsL2F0bF9tYWluLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3ZvbHVtZS5jLAoJICBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL21vbmlrZXIuYywKCSAgZGxscy9pdHNzL3N0b3JhZ2UuYywgZGxscy9tYXBpMzIvdXRpbC5jLCBkbGxzL21sYW5nL21sYW5nLmMsCgkgIGRsbHMvbXNkbW8vZG1vcnQuYywgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvZ2l0LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywKCSAgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9vbGVhdXQzMi9vYWlkbF9wLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9jc3R1Yi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGRlZmluZSBDT0JKTUFDUk9TIGluIG9iamJhc2UuaC4KCVVwZGF0ZSB0aGUgV2luZSBzb3VyY2VzIGFjY29yZGluZ2x5LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYW4gJ3VuaW5pdGlhbGl6ZWQgdmFsdWUnIHdhcm5pbmcuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFZhckk0RnJvbUkyIEFQSSBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvbmZvcm1hbmNlIHRlc3RzIG11c3Qgbm90IGluY2x1ZGUgd2luZS9kZWJ1Zy5oLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBzaWdzZWd2IHdoZW4gZG91YmxlIGNsaWNraW5nIGRpcmVjdG9yeSBlbnRyaWVzLgoKMjAwNC0xMC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZXhkaXNwLmlkbCwgdG9vbHMvd2lkbC9wYXJzZXIueToKCUFsbG93IGRlZmluZWQgdHlwZXMgdG8gYmUgdXNlZCBhcyBmdW5jdGlvbiBuYW1lcy4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9jcnlwdF9tZDQuYywgZGxscy9hZHZhcGkzMi9jcnlwdF9tZDUuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X21kNC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X21kNS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgTUR7NCw1fUluaXQgTUR7NCw1fVVwZGF0ZSBhbmQgTUR7NCw1fUZpbmFsLgoJQWRkIHRlc3RzIGZvciB0aGVzZSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3NweS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtZXNzYWdlIHNweSB0aHJlYWQgc2FmZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gRml4IFdTX2dldHNvY2tvcHQgZm9yIHRoZSBvcHRpb25zIFNPX0xJTkdFUiwgU09fUkNWVElNRU8gYW5kCgkgIFNPX1NORFRJTUVPIGJ5IGFkZGluZyBkYXRhIGNvbnZlcnNpb24gZnJvbSBVbml4IHRvIHdpbmRvd3MuCgktIEFkZGVkIGEgdGVzdCBmb3IgdGhpcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHJlbW92ZSB0cmFpbGluZyBzZW1pY29sb25zIGZyb20gY29uc3RhbnQgZGVmaW5pdGlvbnMKCS0gYWRkIHNvbWUgY29tbWVudHMKCS0gbWFrZSB0aW1lX3RvX2ZpbGV0aW1lKCkgYSBzdGF0aWMgZnVuY3Rpb24KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggZ2VuZXJhdGlvbiBvZiBjb25maWcuaC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3RvdHlwZXMgZm9yIEdldFdpbmRvd0xvbmdQdHIvU2V0V2luZG93TG9uZ1B0ci4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNraXAgaW50ZXJ0aHJlYWQgbWVzc2FnZSB0ZXN0IHVuZGVyIHdpbjl4LCBpdCBjYXVzZXMgYSBjcmFzaCB0aGVyZS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTW92ZSB0aGUgR2V0RGV2aWNlQ2FwcyBpbnRvIHRoZSB3aW5lZDNkIGxpYnJhcnkgYW5kIGNhbGwgZnJvbSBkM2Q5LgoKCSogZGxscy91c2VyL2NvbWJvLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5AY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVzZWxlc3MgRklYTUUgaW4gY29tbWVudC4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggbXN2Y21ha2VyIGltcG9ydHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBidWcgZm91bmQgYnkgUGlvdHIgQ2FiYW4sIHdoZXJlIG91ciBmdW5jdGlvbiB0cmllZCB0byBkZWxldGUgYQoJZGlyZWN0b3J5IGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBvcGVyYXRpb24uCgoyMDA0LTEwLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBhY2NlbGVyYXRvcnMsIG1ha2UgdGhlIHRlc3QgcGFzcyBvbiBXaW5lLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0ZXN0IGNhc2UgZm9yIGludGVyLXRocmVhZCBEaXNwYXRjaE1lc3NhZ2UuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVByZXZlbnQgRGlzcGF0Y2hNZXNzYWdlIGZyb20gZGlzcGF0Y2hpbmcgYSBtZXNzYWdlIHRvIGEgZGlmZmVyZW50Cgl0aHJlYWQgKHJlcG9ydGVkIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHlwZTQyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2Ugc3VyZSBQb3N0U2NyaXB0IGZsb2F0cyBhcmUgcHJpbnRlZCB3aXRoIExDX05VTUVSSUM9IkMiLgoKCSogZGxscy91c2VyL2xpc3Rib3guYywgZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEcmF3IGJhY2tncm91bmQgb2YgdGhlIGVtcHR5IHNlbGVjdGVkIGl0ZW0gaW4gZW1wdHkgbGlzdHMuCglEb24ndCBkcmF3IGEgZm9jdXMgcmVjdCBpZiB3ZSBkb250IGhhdmUgdGhlIGZvY3VzLgoJRG9uJ3Qgc2VsZWN0IGl0ZW1zIG9uIGtleSB1cC9kb3duIGluIG11bHRpLXNlbGVjdCBsaXN0cy4KCUhhbmRsZSBMQlNfTk9TRUwgY29ycmVjdGx5LCBmaXggcmVtYWluaW5nIHRvZG9fd2luZSB0ZXN0cy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUZXN0cyBmb3IgUGF0aENyZWF0ZUZyb21VcmwsIFBhdGhJc1VSTCwgVXJsQ3JlYXRlRnJvbVBhdGggYW5kCglVcmxVbmVzY2FwZS4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJld3JpdGUgVXJsQ3JlYXRlRnJvbVBhdGguCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRG9uJ3QgdXNlICIucHJldmlvdXMiIGZvciBDeWd3aW4gYnVpbGQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUlkZW50aWZ5IGNvbW0uZHJ2IGFzIGEgMTZiaXQgZGxsLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVwbGFjZSBzb21lIElVbmtub3duX1F1ZXJ5SW50ZXJmYWNlKCkgY2FsbHMgd2l0aCB0aGUgc3BlY2lmaWMgY2FsbAoJZm9yIHRoZSBvYmplY3QgYmVpbmcgdXNlZC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBwcm9ncmFtcy9jbG9jay9QbC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvUGwucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQvdXBkYXRlZCBQb2xpc2ggdHJhbnNsYXRpb25zLgoKCSogdG9vbHMvd2luYXBpL291dHB1dC5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglMaW1pdCB0aGUgbGVuZ3RoIG9mIHByb2dyZXNzIG1lc3NhZ2VzIHRvIGxlc3MgdGhhbiAkQ09MVU1OUyB8fCA4MAoJY2hhcmFjdGVycyBzbyB0aGV5IGRvbid0IHdyYXAgKHdoaWNoIHdvdWxkIGNhdXNlIHRoZW0gdG8gYmUgYmFkbHkKCWVyYXNlZCkuCglNYWtlIGdvb2QgdXNlIG9mIHRoZSAneCcsIHRoZSBwZXJsIHN0cmluZyBtdWx0aXBsaWNhdGlvbiBvcGVyYXRvci4KCUFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENyZWF0ZURpc3BUeXBlSW5mby4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJld3JpdGUgUGF0aENyZWF0ZUZyb21VcmwuCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3dpZGwuYywKCSAgdG9vbHMvd2lkbC93aWRsLmgsIHRvb2xzL3dpZGwvd2lkbC5tYW46CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgSUNPTSBjb21wYXRpYmlsaXR5IG1vZGUgaW4gd2lkbC4KCgkqIGRsbHMvdXNlci9jb21iby5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgY29tYm8gY29udHJvbCBjb2RlLgoJQ2hhbmdlIFtHU11ldFdpbmRvd0xvbmd7LFB0cn1BIHRvIFtHU11ldFdpbmRvd0xvbmd7LFB0cn1XLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q5LmgsCgkgIGluY2x1ZGUvZDNkeDhjb3JlLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwKCSAgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwgaW5jbHVkZS9kbXVzaWNpLmgsCgkgIGluY2x1ZGUvZG11c2ljcy5oLCBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL2RwbGF5LmgsCgkgIGluY2x1ZGUvZHBsYXk4LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsCgkgIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvZHhkaWFnLmgsIGluY2x1ZGUvZHhmaWxlLmgsCgkgIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9tYXBpdXRpbC5oLCBpbmNsdWRlL21hcGl4LmgsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3NobG9iai5oLAoJICBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS92ZncuaDoKCUdldCByaWQgb2YgdGhlIG5vbi1zdGFuZGFyZCBJeHh4X01FVEhPRFMgbWFjcm8gZGVmaW5pdGlvbnMsIGRlY2xhcmUKCXRoZSBpbnRlcmZhY2VzIGV4cGxpY2l0bHkgaW5zdGVhZC4KCgkqIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJQXZvaWQgZGVwZW5kaW5nIG9uIHRoZSBub24tc3RhbmRhcmQgSVVua25vd25fTUVUSE9EUyBtYWNybyBpbiBXaW5lCglpbnRlcm5hbCBoZWFkZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQXNrIGZvciBsaW5rIGlmIHBhdGNoIGlzIHJlbGF0ZWQgdG8gYSBidWcgaW4gQnVnemlsbGEuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggVXJsVW5lc2NhcGVXLgoKCSogZGxscy91c2VyL3N0YXRpYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIHN0YXRpYyBjb250cm9sIGNvZGUuCglDaGFuZ2UgW0dTXWV0V2luZG93TG9uZ3ssUHRyfUEgdG8gW0dTXWV0V2luZG93TG9uZ3ssUHRyfVcuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCBhbmQgZG9jdW1lbnQgYnV0dG9uIGNvZGUuCglDaGFuZ2UgW0dTXWV0V2luZG93TG9uZ3ssUHRyfUEgdG8gW0dTXWV0V2luZG93TG9uZ3ssUHRyfVcuCglDaGFuZ2UgV01fR0VURExHQ09ERSBhcyBwZXIgdGhlIE1TRE4gZG9jdW1lbnRhdGlvbi4KCgkqIE1ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCWNyb3NzdGVzdCB0YXJnZXQgZGVwZW5kcyBvbiBpbmNsdWRlIGZpbGVzLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9jb250cm9sLmlkbCwgaW5jbHVkZS91dWlkcy5oOgoJQ29udmVydGVkIGNvbnRyb2wuaCB0byBpZGwuCgoJKiBpbmNsdWRlL2FtdmlkZW8uaWRsLCBpbmNsdWRlL2V4ZGlzcC5pZGwsIGluY2x1ZGUvb2NpZGwuaWRsOgoJVXNlIHByb3BnZXQvcHJvcHB1dCBhdHRyaWJ1dGVzIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBwcm9wZ2V0L3Byb3BwdXQgZnVuY3Rpb24gYXR0cmlidXRlcy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC91dGlscy5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1vdmUgdGhlIENoZWNrKiB0eXBlIGZ1bmN0aW9ucyBpbnRvIHdpbmVkM2QgYW5kIGNvcHkgZnJvbSBkM2Q5LCBhbmQKCWZsYWcgdGhhdCB0aGV5IGFyZSBtb3N0bHkgc3R1YnMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVF1b3RlIGV2ZXJ5dGhpbmcgZm9yIGNvbnNpc3RlbmN5LgoJUkZDIDIwNjggZ290IHN1cGVyc2VkZWQgYnkgUkZDIDI2MTYuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXRoSXNVUkwgc2hvdWxkIHJldHVybiBUUlVFIGV2ZW4gaWYgYSBzY2hlbWUgaXMgdW5rbm93bi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZiB0aGVyZSBubyBNREkgY2hpbGQgdG8gYWN0aXZhdGUgc2V0IGh3bmRBY3RpdmVDaGlsZCB0byAwIGluCglXTV9NRElERVNUUk9ZIGhhbmRlciwgYWRkIGEgdGVzdCBjYXNlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsCgkgIGRsbHMvcnNhYmFzZS9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBhZHZhcGkzMi9jcnlwdC5jIHRlc3QgcGFzcyB1bmRlciB3aW4yayBTUDQsIGRvIHN0cmljdGVyIGVycm9yCgljaGVja2luZywgY29tbWVudCBvdXQgYSBjb3VwbGUgb2YgdGVzdHMgZmFpbGluZyB1bmRlciB3aW4yaywgYWRkIGEKCW5vdGUgd2h5IFJTQV9DUEFjcXVpcmVDb250ZXh0IG1heSBmYWlsLgoKCSogZGxscy9kYmdoZWxwL3BhdGguYzogV29sZmdhbmcgU2Nod290emVyIDx3b2xmZ2FuZy5zY2h3b3R6ZXJAZ214Lm5ldD4KCU1ha2VTdXJlRGlyZWN0b3J5UGF0aEV4aXN0czogUmVjdXJzaXZlbHkgY3JlYXRlIHBhdGggdXAgdG8gbGFzdCAnXFwnLgoKMjAwNC0xMC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogRml4ZWQgdHlwbyBpbiBQcm9ncmFtc1cuCglDaGFuZ2VkIHRoZSBjYXNlIG9mIHdpbmRvd3MgYW5kIHN5c3RlbSBkaXJlY3RvcmllcyB0byBtYXRjaCB0aGUKCWRpcmVjdG9yaWVzIHdlIGNyZWF0ZSBieSBkZWZhdWx0LgoKCSogaW5jbHVkZS9keGZpbGUuaDoKCUZpeGVkIGluY29tcGF0aWJsZSBJRElSRUNUWEZJTEVPQkpFQ1RfTUVUSE9EUyBtYWNybywgYW5kIGFkZGVkCglJVU5LTk9XTl9NRVRIT0RTLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnMvd2luZS9jb25maWcuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5AY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIGdldHVpZCBhbmQgYXZvaWQgdGhlIHVzZSBvZiBpdCBpbiBsaWJ3aW5lIGlmIHdlIGRvbid0IGhhdmUKCWl0LgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0LmgsIGRsbHMvYWR2YXBpMzIvY3J5cHRfZGVzLmMsCgkgIGRsbHMvYWR2YXBpMzIvY3J5cHRfbG1oYXNoLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHRfc2hhLmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbG1oYXNoLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBTeXN0ZW1GdW5jdGlvbjAwNigpLgoJQWRkIGEgdGVzdCBmb3IgU3lzdGVtRnVuY3Rpb24wMDYoKS4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciAuZ251X2RlYnVnbGluay4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUplcnJ5IEplbmtpbnMgPGplcnJ5X2pfamVua2luc0B5YWhvby5jb20+CglGaXggYW4gZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcG9ydCBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWYgYW4gYW5pbWF0aW9uIGlzIGFscmVhZHkgcGxheWluZyBkbyBub3QgcmVzdGFydCBpdC4KCVJlbW92ZSBXTV9DTE9TRSBoYW5kbGVyLCBpdCBsZWFkcyB0byBhIG1lbW9yeSBjb3JydXB0aW9uIGxhdGVyIG9uLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRvIG1ha2Ugc3VyZSBQcm9wU2hlZXRJbmZvKiBpcyBub3QgbnVsbCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdAoJZm9yIHNvbWUgd2luZG93cyBtZXNzYWdlcy4KCgkqIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tZWRpYW9iai5oLAoJICBpbmNsdWRlL21lZGlhb2JqLmlkbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNyZWF0ZSBtZWRpYW9iai5oIGZyb20gbWVkaWFvYmouaWRsLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIG1lc3NhZ2UgY29udmVyc2lvbiB0ZXN0cywgbWFrZSB0aGUgdGVzdHMgcGFzcyB1bmRlciBXaW5lLgoKCSogZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHVzZSBDT0JKTUFDUk9TIG9uIGludGVybmFsIGludGVyZmFjZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jazIuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IGNhbGN1bGF0aW9uIG9mIHJlcXVpcmVkIGJ1ZmZlciBzaXplLgoJLSBBZGQgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIHRoZSBJRkZfTVVMVElDQVNUIGZsYWcuCgktIFN0dWIgZm9yIFNJT19BRERSRVNTX0xJU1RfQ0hBTkdFLgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOS5oLCBpbmNsdWRlL2RkcmF3LmgsCgkgIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvZHBsYXkuaCwKCSAgaW5jbHVkZS9kcGxheTguaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvZHhkaWFnLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBpbmNvcnJlY3QgdXNhZ2Ugb2YgQ09CSk1BQ1JPUy4KCUR1cGxpY2F0ZSBhbmQgYWRhcHQgdGhlIENPTSBhY2Nlc3MgbWFjcm9zIHNvIHRoZXkgYWxzbyB3b3JrIGluIEMrKy4KCUZpeCB0aGUgSURpcmVjdFBsYXlYIGFjY2VzcyBtYWNyb3MuCgoJKiBpbmNsdWRlL2QzZHg4Y29yZS5oLCBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljYy5oLAoJICBpbmNsdWRlL2RtdXNpY2kuaCwgaW5jbHVkZS9kbXVzaWNzLmgsIGluY2x1ZGUvZHhmaWxlLmgsCgkgIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9tYXBpdXRpbC5oLCBpbmNsdWRlL21hcGl4LmgsCgkgIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Zmdy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggaW5jb3JyZWN0IHVzYWdlIG9mIENPQkpNQUNST1MuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCURvIG5vdCBvZmZlciBzdWJtaXR0aW5nIHRoZSByZXBvcnQgaWYgdGhlIC1vIG9wdGlvbiB3YXMgZ2l2ZW4uCgoJKiBwcm9ncmFtcy93Y21kL1BsLnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmM6CglQaW90ciBDYWJhbiA8cGlvMTNAcG9jenRhLm9uZXQucGw+CglBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24uCgoJKiB0b29scy93aW5lLmluZjogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpY2N2aWQuZGxsIHRvIGFuIGluaXRpYWwgV2luZSBjb25maWd1cmF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9zaGEuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhIGNyYXNoIGluIGFkdmFwaTMyL3Rlc3Rfc2hhX2N0eC5jIHRlc3QgaWYgcmVxdWlyZWQgZW50cnkgcG9pbnRzCglhcmUgbWlzc2luZy4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIENoZWNrIGZvciBzdHJpbmcgcG9pbnRlciBiZWluZyBvdXRzaWRlIG9mIHRoZSBzdHJpbmcgdGFibGUuCgktIE9ubHkgcGFyc2UgdHlwZWRlZnMgb24gc3RhYnMgZW50cmllcyB0aGF0IGNhbiBoYXZlIHRoZW0uCgoJKiBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgbG9hZGluZyAuZGJnIGZpbGVzIGJ5IG5vIGxvbmdlciB1c2luZyBSdGxJbWFnZU50SGVhZGVyIHdoaWNoCgl3b3VsZCByZXR1cm4gTlVMTCBhbmQgdXNpbmcgbG9va2luZyBhdCB0aGUgSU1BR0VfU0VQQVJBVEVfREVCVUdfSEVBREVSCglkaXJlY3RseSBpbnN0ZWFkLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQ29ycmVjdCBwcm9ibGVtIHdpdGggL2kgYXJndW1lbnQgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglKZXJyeSBKZW5raW5zIDxqZXJyeV9qX2plbmtpbnNAeWFob28uY29tPgoJRG9uJ3QgdXNlIHRoZSBTTkRfUENNX0FTWU5DIGZsYWcgZm9yIHRoZSBtb21lbnQuCgoJKiBkbGxzL2ltbTMyL2ltbS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IGNyYXNoIHVzaW5nIENKSyBsb2NhbGUgYnV0IG5vIGlucHV0IG1ldGhvZC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHVzZSBHbG9iYWxGcmVlIGZvciBhIG1lbW9yeSByZXR1cm5lZCBieSBMb2FkUmVzb3VyY2UuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJQWRkIFVUQyB0byB0aGUgdGltZSB6b25lIGxpc3QuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gVXNlIGEgbW9yZSB1bmlxdWUgc2VwYXJhdG9yIHN0cmluZy4KCS0gQWRkIHNvbWUgcXVvdGluZyB0byBwbGVhc2UgQ0dJLnBtLTMuMDUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVN3aXRjaCB0byAncGVybCAtdycgYW5kIGFkZCAndXNlIHN0cmljdDsnLgoJQWRkIHByb3RvdHlwZXMgdG8gYWxsIGZ1bmN0aW9ucy4KCVJlbW92ZSAkYmFzaHZlciBhbmQgJG91dGZsYWdzLCB0aGV5IGFyZSBub3QgdXNlZC4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIEpvYklkIGZpZWxkIGNhc2UuCgoJKiBpbmNsdWRlL3RsaGVscDMyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIEhFQVBFTlRSWTMyIGFuZCB0aGUgcmVsYXRlZCBBUElzLgoKCSogaW5jbHVkZS9sbWNvbnMuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgQVBJX1JFVF9UWVBFIGFuZCBORVRfQVBJX0ZVTkNUSU9OLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIYW5kbGUgdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGlua2VkIHRvIHVzaW5nIEVYVFJBTElCUy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBUaW1lIG91dCBvbiByZWN2IGZyb20gYW5kIHNlbmQgdG8gYmxvY2tpbmcgc29ja2V0cy4KCS0gRml4IHRpbWVvdXQgY2FsY3VsYXRpb24gaW4gV1Nfc2V0c29ja29wdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRlc3RzIGZvciBjb252ZXJzaW9uIG9mIG1lc3NhZ2UgcGFyYW1ldGVycy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVcmxFc2NhcGUgaGFzIGRpZmZlcmVudCBydWxlcyBkZXBlbmRpbmcgb24gdGhlIHByb3RvY29sLgoJQWRkZWQgYSBsb2FkIG9mIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCURvbid0IGxvb3NlIGxhc3QgYmFuZCBvbiBpbnNlcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglDYW4ndCBwYXNzIE5VTEwgYXMgZGVmYXVsdCB2YWx1ZSB0byBHZXRQcml2YXRlUHJvZmlsZVN0cmluZy4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld3JpdGUgYSBzZWN0aW9uIG9mIGNvZGUgc28gdGhhdCBpdCBkb2Vzbid0IHVzZSBleGl0KDApIHdoZW4gb3V0IG9mCgltZW1vcnkuCgoJKiBkbGxzL2RiZ2hlbHAvbW9kdWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IG91dCBhIHNsaWdodGx5IG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZSBpZiBhbiBFTEYgbW9kdWxlIGZhaWxzCgl0byBsb2FkLgoKCSogdG9vbHMvYzJtYW4ucGw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHByb3RvdHlwZXMgdG8gYWxsIGZ1bmN0aW9ucy4KCU1vdmUgJ21haW4nIHRvIHRoZSBlbmQgc28gd2UgZG9uJ3QgaGF2ZSB0byBwcmUtZGVjbGFyZSBhbGwgdGhlCglmdW5jdGlvbnMuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCAndXNlIHN0cmljdCcuCglBZGQgcHJvdG90eXBlcyB0byBhbGwgZnVuY3Rpb25zLgoJTW92ZSAnbWFpbicgdG8gdGhlIGVuZCBzbyB3ZSBkb24ndCBoYXZlIHRvIHByZS1kZWNsYXJlIGFsbCB0aGUKCWZ1bmN0aW9ucy4KCjIwMDQtMDktMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IEF2b2lkIHVzaW5nIGdldHRpbWVvZmRheS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTW92ZSBpbnRvIHdpbmVkM2QgYW5kIGNhbGwgZnJvbSBkM2Q5IHRoZSBHZXRBZGFwdGVySWQgZnVuY3Rpb24gYW5kCgljb3B5IGFsbCB0aGUgZ2wgZGVjbGFyYXRpb25zIGludG8gdGhlIG1vcmUgZ2xvYmFsIHdpbmVkM2RfZ2wgaGVhZGVyCglmaWxlLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJS2xlbWVucyBGcmllZGwgPGZyaWs4NUBob3RtYWlsLmNvbT4KCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGRyaXZlIGljb24gYXJ0d29yawoJLSBkaXNwbGF5IGRpZmZlcmVudCBkcml2ZSBpY29ucyBkZXBlbmRpbmcgb24gdGhlIGRyaXZlIHR5cGUKCgkqIGRsbHMvc2hsd2FwaS91cmwuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGFyc2VVUkwgaXMgbm93IGRvY3VtZW50ZWQsIHNvIG1vdmUgaXQgaW50byBzaGx3YXBpLmguCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIEZvY3VzT3V0IGV2ZW50IGlmIHRoZXJlIGlzIG5vIGV2ZW50IHdpbmRvdy4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUtlZXAgdGhlIG9yaWdpbmFsIHJlc291cmNlcyBpZiAhYkRlbGV0ZUV4aXN0aW5nUmVzb3VyY2VzIGluCglCZWdpblVwZGF0ZVJlc291cmNlVy4KCVBhc3MgdGhlIGNvcnJlY3QgaGFuZGxlIHRvIGNhbGxiYWNrIGZ1bmN0aW9ucyBpbgoJQmVnaW5VcGRhdGVSZXNvdXJjZVcuCglGaXggYSBidWcgd2hpbGUgc2F2aW5nIGRhdGEgaW4gbWVtb3J5IGluIFVwZGF0ZVJlc291cmNlVy4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTGltaXQgc2Nyb2xsaW5nIG9mIHRoZSBlZGl0IGNvbnRyb2wgdG8gdGhlIGxhc3QgbGluZSBvZiB0ZXh0LgoKMjAwNC0wOS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbXBsaWZ5IGdldHRpbmcgY3VzdG9tIGljb25zIGZvciBhIGZvbGRlciBieSB1dGlsaXNpbmcgdGhlIG5ldwoJU0hFTEwzMl9HZXRDdXN0b21Gb2xkZXJBdHRyaWJ1dGUgZnVuY3Rpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBzaGVsbCBmb2xkZXJzLCBzdWNoIGFzIHRoZSBIaXN0b3J5IGZvbGRlci4KCS0gQWx3YXlzIHRyeSB0byBpbml0aWFsaXplIGZvbGRlciB1c2luZyBJUGVyc2lzdEZvbGRlcjMgaW50ZXJmYWNlIGFuZAoJICB0aGVuIGZhbGwgYmFjayBvbiBJUGVyc2lzdEZvbGRlciBpZiBub3Qgc3VwcG9ydGVkLgoKCSogZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvZDNkeG9mL21haW4uYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywKCSAgZGxscy9pdHNzL2l0c3MuYywgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL3F1YXJ0ei9tYWluLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcmVmZXJlbmNlIGxlYWsgb24gZmFpbHVyZSAoc3BvdHRlZCBieSBSb2IgU2hlYXJtYW4pLgoJTW92ZSBzb21lIGNvZGUgb3ZlciB0byB0aGUgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwKCSAgaW5jbHVkZS91cmxtb24uaWRsOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgSUludGVybmV0U2VjdXJpdHlNYW5hZ2VyLgoJQWRkIGEgY2xhc3NmYWN0b3J5LgoJRml4IGNhbGxpbmcgY29udmVudGlvbiBvZiBDb0ludGVybmV0Q3JlYXRlU2VjdXJpdHlNYW5hZ2VyLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBwZXJmb3JtIGV2ZW50IGNoZWNrIGlmIGluIHN5c3RlbSBjb2RlLiBGaXhlcyBpbmZpbml0ZQoJICByZWN1cnNpb24gYnVnLgoJLSBGaXggc3RhY2sgY29ycnVwdGlvbiB0aGF0IGNvdWxkIG9jY3VyIGluIEszMldvd0NhbGxiYWNrMTZFeCBpZiBhbgoJICBldmVudCBjaGVjayB3YXMgaW5zZXJ0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CgktIG5hdGl2ZSBJbWFnZUxpc3RfUmVtb3ZlIGRvc24ndCBzcGl0IG91dCBhbiBlcnJvciBtZXNzYWdlIHdoZW4KCSAgZGVsZXRpbmcgYW4gaW5kZXggb3V0IG9mIHJhbmdlIHNvIGRvbid0IGRvIHRoYXQgZWl0aGVyCgktIGFkZCAyIEltYWdlTGlzdF9SZW1vdmUgdGVzdHMKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRGV0ZXJtaW5lIHdoZXRoZXIgdG8gZG8gbGFiZWwgZWRpdCBiZWZvcmUgc2VuZGluZyBOTV9DTElDSy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJLSBzd2l0Y2ggeDExZHJ2ZGxnIHRvIGtlcm5lbF9zdHlsZSwgYW5kIGNsZWFuIHVwIHNvbWUgc3VwZXJmbG91cyBjb2RlCgktIG1vcmUgd2luMzIgaGVhcGlmaWNhdGlvbgoJLSBtb3ZlIGdldERpYWxvZ0l0ZW1UZXh0IGludG8gaGVhZGVyIGFuZCByZW5hbWUsIHVzZSBzb21lIG1vcmUgaW4KCSAgeDExZHJ2IHBhZ2UKCS0gbWFrZSBsYWJlbCBwaHJhc2luZyBjb25zaXN0ZW50IGluIHgxMWRydiBwYWdlCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CgktIHJld3JpdGUgdGhlIHRyYW5zYWN0aW9uIHN5c3RlbSB0byBiZSBiYXNlZCBvbiBhIHNldHRpbmdzIG92ZXJsYXksCgkgIHRvIGhhdmUgYSBuaWNlciBBUEksIGFuZCB0byBhY3R1YWxseSB3b3JrIChhbHdheXMgYSBib251cykKCS0gY2hhbmdlIHRoZSBsaWJyYXJpZXMgcGFnZSB0byBiZSBiYXNlZCBvbiBhIGxpc3Rib3ggcmF0aGVyIHRoYW4gYQoJICB0cmVldmlldywgY2xlYW4gdXAgYW5kIHNocmluayB0aGUgY29kZQoJLSBhZGQgYWNjZWxlcmF0b3Iga2V5cyB0byB0aGUgbGlicmFyaWVzIHBhZ2UsIGZvY3VzIG1hbmFnZW1lbnQKCS0gbWFrZSB0aGUgd2luZG93IHRpdGxlIHJlZmxlY3Qgd2hhdCB0aGUgdXNlciBpcyBjdXJyZW50bHkgZWRpdGluZwoJLSByZW1vdmUgYm9ndXMgcm9vdCB3YXJuaW5nCgktIHJlbW92ZSBzb21lIHVudXNlZCBjb250cm9sIElEcyBpbiByZXNvdXJjZS5oCgktIHN0YXJ0IGNvbnZlcnRpbmcgdGhlIHgxMWRydiBkaWFsb2cgdG8ga2VybmVsX3N0eWxlIGZyb20gamF2YVN0eWxlCgktIGJ1Z2ZpeGluZwoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCS0gaW50cm9kdWNlIGtleXBhdGgoKSBmdW5jdGlvbgoJLSByZXdyaXRlIGFuZCBjbGVhbiB1cCBhcHBkZWZhdWx0cy5jLCB1c2UgYSBsaXN0dmlldyByYXRoZXIgdGhhbgoJICB0cmVldmlldwoJLSB1c2FiaWxpdHkgdHdlYWs6IHJldmVyc2Ugd2luZG93cyB2ZXJzaW9uIGNvbWJvIHNvIG1vcmUgcmVjZW50CgkgIHZlcnNpb25zIGNvbWUgZmlyc3QKCS0gdXNhYmlsaXR5IHR3ZWFrOiBpbXByb3ZlIHRoZSBhZGQgYXBwbGljYXRpb24gb3BlbiBkaWFsb2cgYm94CgktIGFkZCBhY2NlbGVyYXRvciBrZXlzCgktIGVuYWJsZS9kaXNhYmxlIGNvbnRyb2xzIGNvcnJlY3RseQoJLSBiZWdpbiB0byBzdGFuZGFyZGlzZSBvbiB1bmRlcnNjb3JlX3N0eWxlIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZQoJICByZXN0IG9mIHdpbmUKCS0gY29tbWVudCBvdXQgdGhlIHRyYW5zbGF0aW9ucyBmb3Igbm93LCB0aGUgVUkgd2lsbCBiZSBjaGFuZ2luZyBtb3JlCgktIGJlZ2luIHBoYXNpbmcgb3V0IGxpYmMgbWFsbG9jIGluIGZhdm91ciBvZiB0aGUgd2luMzIgaGVhcAoKCSogcHJvZ3JhbXMvd2luZWZpbGUvSXQucmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBpbmNsdWRlL3BzdG9yZS5pZGw6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBJREwgcHJvdG90eXBlcyBvZiBJUFN0b3JlOjpXcml0ZUl0ZW0gYW5kIElQU3RvcmU6OkNsb3NlSXRlbS4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9hdGxfbWFpbi5jLCBkbGxzL2F0bC9hdGxiYXNlLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgQXRsTW9kdWxlVW5yZWdpc3RlclNlcnZlckV4LgoKCSogdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBpbiBzaGVsbHBhdGguYy4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjeXJpbGxpYyBnbHlwaHMgdG8gd2luZV9zYW5zX3NlcmlmIGF0IDIwIHBwZW0uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJdGVtIGhlaWdodC9leHBhbmQgYnV0dG9uIHdpZHRoIG11c3QgYmUgPj0gdGhhbiBpbWFnZWxpc3Qgc2l6ZS4KCUF2b2lkIGEgbWFnaWMgbnVtYmVyLCBhZGQgRklYTUUgZm9yIGluY29ycmVjdCArLy0gZHJhd2luZy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEaXNwbGF5IG1lc3NhZ2UgYm94IHRvIGFsZXJ0IHVzZXJzIG1vcmUgcmVsaWFibHkgdGhhdCB3aW5lY2ZnIGlzCgl1bmZpbmlzaGVkLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLCBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jLCBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIHJlZ3Jlc3Npb24gaW4gY3RybC1jIGhhbmRsaW5nCgktIGZpeGVkIHJlZ3Jlc3Npb24gaW4gJ2luZm8gc3ltYm9sIFhYWFgnIGNvbW1hbmQgKGFuZCBlbmhhbmNlZAoJICBwcmVzZW50YXRpb24pCgktIGZpeGVkIHJlZ3Jlc3Npb24gaW4gbGluZSBzdGVwcGluZwoJLSBmaXhlZCByZWdyZXNzaW9uIGluICYgKGFkZHJlc3Mgb3BlcmF0b3IpIGhhbmRsaW5nCgktIGZpeGVkIHNvbWUgYmFkIG1vZHVsZSByZWZlcmVuY2UgZm9yIGxvY2FsIHN5bWJvbHMKCS0gZW5oYW5jZWQgcmVnaXN0ZXIgcHJlc2VudGF0aW9uIGFzIGxvY2FsIHZhcmlhYmxlcwoJLSBhZGRlZCB3YXJuaW5nIHdoZW4gbGF1bmNoaW5nIGEgZGVidWdnZWUgd2hpY2ggaXNuJ3QgYSBXaW5lIGFwcAoJLSByZW1vdmVkIHRoZSAnbG9jYWwnIGV4dGVuc2lvbiBvZiBkaXNwbGF5IGNvbW1hbmQgKGFuZCBjaGVjayB3aGVuCgkgIHNldHRpbmcgdGhlIGRpc3BsYXkgd2hldGhlciB0aGUgZXhwciBoYXMgYSBsb2NhbCBiaW5kaW5nKQoJLSBzaW1wbGlmaWVkIGV4Y2VwdGlvbiBoYW5kbGluZywgYW5kIGZhY3Rvcml6ZWQgc29tZSBjb2RlIHdoZW4KCSAgZGVidWdnZXIgc3RvcHMKCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gRm9yY2UgZGVmYXVsdCBbaW5dIGF0dHJpYnV0ZSBvbiBhbGwgcGFyYW1ldGVycyB3aGVyZSBleHBsaWNpdCBbaW5dCgkgIG9yIFtvdXRdIGF0dHJpYnV0ZXMgYXJlbid0IHNwZWNpZmllZC4KCS0gRm9yY2UgZGVmYXVsdCBbb3V0XSBhdHRyaWJ1dGUgb24gcmV0dXJuIHZhbHVlcy4KCgkqIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3V0aWxzLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIE1ha2UgZDNkOCBrbm93IGFib3V0IHRoZSB3aW5lZDNkIGRldmljZSBhbmQgc3RhcnQgdXNpbmcgaXQuCgktIE1vdmUgc29tZSBvZiB0aGUgc2NyZWVuIG1vZGUgcmVsYXRlZCBmdW5jdGlvbnMgaW50byB3aW5lZDNkIGFuZCBhZGQKCSAgdW50ZXN0ZWQgc3VwcG9ydCBmb3IgdGhlIG5ldyBkM2Q5IG9wdGlvbnMgb2YgcHJvdmlkaW5nIHRoZSBmb3JtYXQgdG8KCSAgc29tZSBvZiB0aGUgY2FsbHMuCgktIE1vdmUgb3RoZXIgZnVuY3Rpb25zIGZyb20gdGhlIGRpcmVjdHggaW50ZXJmYWNlIGludG8gdGhlIGNvbW1vbgoJICBsaWJyYXJ5IGFuZCBpbXBsZW1lbnQgdGhlIGNhbGxzIGZyb20gZDNkOSBhcyB3ZWxsLgoJLSBDb3B5IGFjcm9zcyB0aGUgZmlyc3Qgb2YgdGhlIGZ1bmN0aW9ucyB1c2VkIHRvIG1ha2UgdHJhY2VzIG1vcmUgcmVhZGFibGUsCgkgIGNyZWF0aW5nIHV0aWxzLmMgdG8gc3RvcmUgdGhlbSBpbi4gRXZlbnR1YWxseSB0aGUgb25lcyBpbiBkM2Q4IHdpbGwgYmUKCSAgcmVtb3ZlZCBidXQgZm9yIG5vdyBqdXN0IGR1cGxpY2F0ZSB0aGUgY29kZS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJRElCX0ZpeENvbG9yc1RvTG9hZGZsYWdzOiBTdXBwb3J0IGJpdG1hcHMgd2l0aCBhIEJJVE1BUENPUkVIRUFERVIKCXByb3Blcmx5LgoKMjAwNC0wOS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvd2luZS9jb25maWcuYzoKCUJhc2UgdGhlIHNlcnZlciBkaXJlY3RvcnkgbmFtZSBvbiB0aGUgdWlkLCBub3QgdGhlIHVzZXJuYW1lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2cGFjay8uY3ZzaWdub3JlLAoJICBkbGxzL2FkdnBhY2svTWFrZWZpbGUuaW4sIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsCgkgIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWMsIGRsbHMvYWR2cGFjay9yZWcuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9hZHZwdWIuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIGFkdnBhY2suUmVnSW5zdGFsbC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLnJjLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJUGlvdHIgQ2FiYW4gPHBpbzEzQHBvY3p0YS5vbmV0LnBsPgoJLSBhZGRlZCBjaG9vc2luZyBmb250cwoJLSBhZGRlZCBmaWxlIG1vdmluZwoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglTdGFydCBvbmx5IGZpcnN0IHNlcnZpY2UgaW4gdGhlIHNlcnZpY2UgdGFibGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNhbGwgR2V0UHJvY2Vzc0hlYXAoKSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXRzIGFkZHJlc3MuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQ2FsbCBHZXRQcm9jZXNzSGVhcCgpIGluc3RlYWQgb2YgcGFzc2luZyBpdHMgYWRkcmVzcy4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJIC0gQWRkIGFzIG1hbnkgZW50cmllcyB0byB0aGUgY29sb3IgbWFwIGFzIHNwZWNpZmllZCBieSB0aGUgRElCLgoJIC0gU3VwcG9ydCBiaXRtYXBzIHdpdGggYSBCSVRNQVBWezQsNX1IRUFERVIuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGdW5jdGlvbiByZXR1cm4gdHlwZXMgY2Fubm90IGJlIGNvbnN0LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgLS0gZnJvbSBzaGVsbCBlbnRyaWVzLCBzaW5jZSB3aW5lIG5vIGxvbmdlciBmaWx0ZXJzIGl0LgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3VnZ2VzdCBydW5uaW5nIGNvbmZvcm1hbmNlIHRlc3RzIHByaW9yIHRvIHNlbmRpbmcgYSBwYXRjaC4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kYmdoZWxwL21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZGJnaGVscC90eXBlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbm93IHN0b3JpbmcgdmVjdG9yIG9mIHR5cGVzIG9uIGEgcGVyIG1vZHVsZSBiYXNpcyAoYW5kIGdpdmluZyBpdAoJICBiYWNrIGluIFN5bUVudW1UeXBlcykKCS0gZmxhZ2dpbmcgbG9jYWwgcmVnaXN0ZXIgdmFycyBhcyBsb2NhbCB0b28KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN1Z2dlc3QgaW5zdGFsbGluZyBMaXR0bGVDTVMgdG8gV2luZSBwYWNrYWdlcnMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdHViIE1BQ1JPX0p1bXBDb250ZXh0IHRvIGF0IGxlYXN0IGJyaW5nIHVwIHRoZSBoZWxwIGZpbGUuCgoyMDA0LTA5LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9ob3RrZXkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgV1NfRElTQUJMRUQgc3R5bGUuCgktIElzc3VlIEVOX0NIQU5HRSBub3RpZmljYXRpb24uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDaGVjayBpbiBjbGllbnQgYXJlYSBiZWZvcmUgY2FwdGlvbiBhcmVhLCBiZWNhdXNlIHRoZSBhcHAgbWF5IGhhdmUKCWNoYW5nZWQgdGhlIE5DIGFyZWEgaW4gV01fTkNDQUxDU0laRS4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFBhdGhTZWFyY2hBbmRRdWFsaWZ5LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglTSEdldEFwcENvbXBhdEZsYWdzIHRha2VzIDQgYnl0ZXMgb2YgcGFyYW1ldGVycy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOiBLZW4gQmVsbGVhdSA8amFtZXpAaXZpYy5xYy5jYT4KCS0gUmVtb3ZlZCBjb2RlIHRoYXQgdG9vayB0aGUgZm9jdXMgYXdheSBmcm9tIHRoZSBidXR0b25zLgoJLSBNYWtlIHRoZSBidXR0b25zIGZvcndhcmQgV01fS0VZRE9XTiB0byB0aGVpciBwYXJlbnQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVJlc3RydWN0dXJlZCBjb2RlIG9mIFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyQS9XLgoKMjAwNC0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywKCSAgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvdXJsbW9uL3Vtb24uYzoKCUpvcmlzIEh1aXplciA8am9yaXNodWl6ZXJAcGxhbmV0Lm5sPgoJUmVmIGNvdW50IGluY3JlbWVudC9kZWNyZW1lbnQgY2xlYW51cC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IEhhamltZSBTZWdhd2EgPHdpbmV0aXBzQHNpZGVuZXQuZGRvLmpwPgoJQWRkZWQgU3RhdHVzRm9udFNpemUgYW5kIE1lc3NhZ2VGb250U2l6ZSBlbnRyaWVzIGluIHdpbi5pbmkuCgoJKiBkbGxzL2dkaS9nZGlvYmouYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBhIChzZWVtaW5nbHkgeHAgZGVmYXVsdCkgd2lkdGggb2YgNyBmb3Igc3lzdGVtIGZvbnRzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBVc2Ugc3lzdGVtIG1ldHJpY3MgdG8gZGV0ZXJtaW5lIGljb24gc2l6ZXMuCgktIE1vdmUgaW52YWxpZCBpbmRleCBmcm9tIDEgdG8gMC4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzoKCVN1cHBvcnQgY29tcGlsaW5nIHdpdGggLWZQSUMgZm9yIHBlb3BsZSB3aG8gc29tZWhvdyB0aGluayB0aGlzIGlzIGEKCWdvb2QgaWRlYS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIHRoZSBzYW1wbGUgYXBwIGZyb20gd2luZW1pbmUgdG8gbm90ZXBhZCBmb3Igd2luZW1ha2VyIGluIHRoZQoJV2luZWxpYiBVc2VyIEd1aWRlLgoKCSogZGxscy91c2VyL21lbnUuYywgaW5jbHVkZS93aW51c2VyLmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglNZW51SXRlbUZyb21Qb2ludCBzaG91bGRuJ3QgY3Jhc2ggaWYgdGhlcmUncyBubyBtZW51LgoKCSogZGxscy9udGRsbC9sb2Fkb3JkZXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgV0lORURMTE9WRVJSSURFUyBhbHNvIG1hdGNoIGZvciAqZGxsLgoKMjAwNC0wOS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGVmaW5lIEdXTF9VU0VSREFUQSwgR1dMX0lELCBHV0xfSFdORFBBUkVOVCwgR1dMX0hJTlNUQU5DRSBhbmQKCUdXTF9XTkRQUk9DIHdoZW4gY29tcGlsaW5nIHRoZSBXaW5lIHNvdXJjZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUtlbiBCZWxsZWF1IDxqYW1lekBpdmljLnFjLmNhPgoJLSBSZW1vdmVkIHRoZSBkZXByZWNhdGVkIE9GX1NFQVJDSCBmbGFnLgoJLSBIYW5kbGUgcXVvdGVzIGluIGNvbW1hbmQtbGluZSBwYXJzaW5nLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBoZWFwIGFsbG9jYXRlZCBidWZmZXJzIGluCglIVFRQX0ludGVycHJldEhUVFBIZWFkZXIgdG8gYXZvaWQgYnVmZmVyIG92ZXJmbG93IG9uIGxhcmdlIGhlYWRlcnMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgY3Jhc2ggb24gZG91YmxlIEludGVybmV0Q2xvc2VIYW5kbGUuCgktIFRlc3QgY2FzZSBmb3IgdGhpcy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU2tpcCBzaGVsbCB3aW5kb3cgdGVzdCBvbiBXaW45eCBhbmQgcmVzdG9yZSBpdHMgZnVuY3Rpb25hbGl0eSBvbiBOVAoJICBwbGF0Zm9ybXMuCgktIFVzZSBrZXliZF9ldmVudCBpbnN0ZWFkIG9mIFNlbmRJbnB1dCBpbiBvcmRlciB0byBwZXJmb3JtIGtleWJvYXJkCgkgIGlucHV0IHRlc3Qgb24gV2luOTUgYXMgd2VsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUF0IGxlYXN0IHByaW50IG1lc3NhZ2UgaWYgd2UncmUgbm90IHJldHVybmluZyByZXF1ZXN0ZWQgZGF0YS4KCgkqIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSB0aGUgY29udHJvbCBsb29rIG1vcmUgbGlrZSBuYXRpdmUgYnkgdXNpbmcgdGhlIHJpZ2h0IGZvbnQgYW5kCgkgIHNwYWNpbmcuCgktIFVzZSBUZXh0T3V0VyByYXRoZXIgdGhhbiBEcmF3VGV4dFcgYXMgd2UgZG9uJ3QgdXNlIGFueSBmZWF0dXJlcyBvZgoJICBEcmF3VGV4dFcuCgktIEZpeCBjYXJldCBzaXplIGFuZCBwb3NpdGlvbi4KCS0gSW1wbGVtZW50IFdNX0NIQVIgYW5kIFdNX1NZU0NIQVIgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBvYnZpb3VzbHkgd3JvbmcgY29uZGl0aW9uIGluIGFuICJpZiIgc3RhdGVtZW50LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUFkZCBub3RlIGFib3V0IHVuaW1wbGVtZW50ZWQgVEJfU0FWRVJFU1RPUkUgbWVzc2FnZS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBpbmNsdWRlIHN0YXRlbWVudHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2ZkLmM6CglBZGRlZCBzdXBwb3J0IGZvciBlcG9sbCgpIGFzIGFuIGFsdGVybmF0aXZlIHRvIHBvbGwoKSAoYmFzZWQgb24gdGhlCgl3b3JrIG9mIFNoYWNoYXIgU2hlbWVzaCBhbmQgTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9kM2Q5L01ha2VmaWxlLmluLCBkbGxzL2QzZDkvZDNkOV9tYWluLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkLnNwZWMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDcmVhdGUgYSB3aW5lZDNkIGludGVyZmFjZSwgYW5kIGdlbmVyYXRlIGEgd2luZWQzZCBvYmplY3QgaW4gdGhlIGQzZDkKCWNyZWF0ZSBtZXRob2QuIE1ha2UgdGhlIGZpcnN0IChzaW1wbGUpIGNhbGwgaW1wbGVtZW50YXRpb24gaW50byB0aGUKCW5ldyB3aW5lZDNkIGludGVyZmFjZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVNvbWUgd2luZHJlcyB2ZXJzaW9ucyBkb24ndCBsaWtlIFBPUFVQIiIsIGNoYW5nZSB0byBQT1BVUCAiIi4KCgkqIGRsbHMvZGJnaGVscC9zdGFjay5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggZGVidWdnZXIgZm9yIGZsYXQgUEMgYW5kIG5vbi1mbGF0IGZyYW1lLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgc29tZSB1bm5lZWRlZCBpbmNsdWRlIHN0YXRlbWVudHMuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglEZWZpbmUgX1dJTjMyX1dJTk5UIGFuZCBfV0lOMzJfSUUgdmVyc2lvbnMgZm9yIE1TX1ZDIEJ1aWxkLgoKMjAwNC0wOS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJR2V0V2luZG93TG9uZyAtPiBHZXRXaW5kb3dMb25nUHRyLgoKCSogZGxscy9udGRsbC9yZXNvdXJjZS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglNb3ZlIFRSQUNFIGluc2lkZSBUUlkgYmxvY2suCgoJKiBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX1BsLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9QbC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9QbC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJUGlvdHIgQ2FiYW4gPHBpbzEzQHBvY3p0YS5vbmV0LnBsPgoJQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglXYXJyZW4gQmFpcmQgPHdhcnJlbi5iYWlyZEBjaW1tZXRyeS5jb20+CglGaXggYXV0b2NvbmYgdG8gaGF2ZSBhIG5ldyBXSU5FX1RSWV9TSExJQl9GTEFHUyBmdW5jdGlvbiB0aGF0IHRlc3RzIGlmCgl0aGUgcHJvdmlkZWQgZmxhZ3MgY2FuIGJlIHVzZWQgdG8gbGluayBhIHNoYXJlZCBsaWJyYXJ5LgoJQWRkZWQgdGVzdCBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnMgb24gSFAtVVggd2l0aCBnY2MuCgoJKiBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywKCSAgZGxscy91c2VyL2RpYWxvZzE2LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tc2cxNi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJR2V0V2luZG93TG9uZyAtPiBHZXRXaW5kb3dMb25nUHRyLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtbGFuZyByZXR1cm4gdGhlIHNhbWUgY29kZSBwYWdlIGRlc2NyaXB0aW9ucyBhcyBXaW5kb3dzLCBzb21lCglhcHBsaWNhdGlvbnMgZGVwZW5kIG9uIGl0LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRGUucmMsIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvUHQucmMsIHByb2dyYW1zL3dpbmVtaW5lL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9TaS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBSZW1vdmUgb2Jzb2xldGUgaGFuZGxpbmcgb2YgV0lORV9TVFJJQ1QvTlVMTF9IQU5ETEUuCgktIEFsbG93IG1vcmUgY2hhcmFjdGVycyBmb3IgV2luZG93IHRpdGxlIChmb3IgRnIgbG9jYWxlKS4KCS0gSGFyZGNvZGUgdGhlIGljb24gbmFtZSAtIHNvIHRoYXQgaXQncyBpbmRlcGVuZGVudCBvZiBsb2NhbGUuCgktIFNob3J0ZW4gdGhlIHRleHQgaW4gdGhlIEFib3V0IGJveCBzbyB0aGF0IGl0IGRvZXNuJ3Qgd3JhcC4KCS0gVXNlIEhLQ1UgaW5zdGVhZCBvZiBIS0xNIGZvciBzYXZpbmcgc3R1ZmYuCgktIFNhdmUgWVBvcyBwcm9wZXJseS4KCS0gdXNlIEFkanVzdFdpbmRvd1JlY3QgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgd2luZG93IHNpemUgdXNpbmcKCSAgR2V0U3lzdGVtTWV0cmljcwoJLSBDb3BlIHdpdGggdGhlIHVzZXIgbW92aW5nIHRoZSB3aW5kb3cgb2Zmc2NyZWVuIGFuZCBtb3ZlIGl0IGJhY2suCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUNoYW5nZSB2YXJpYWJsZSBuYW1lIGZyb20gbCB0byBrLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyYXNoIHRoZSBkc3QgdmFyaWFudCBpZiB3ZSBjYW4ndCBkbyB0aGUgdHlwZSBjb252ZXJzaW9uLgoJQWRkIGEgdGVzdCBmb3IgdGhpcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBIYW5kbGUgIi4iIGFuZCAiLi4iIGFzIHNwZWNpYWwgY2FzZSBhbmQgbW92ZSB0aGVtIGF0IHRoZSB2ZXJ5IGZpcnN0CgkgIGJlZ2lubmluZyBvZiBkaXJlY3RvcnkgbGlzdGluZ3MuCgktIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgd1N0cmluZ1RhYmxlT2Zmc2V0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU3RvcmUgYWJzb2x1dGUgcGF0aCBpbiAubG5rIGZpbGUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF2b2lkIFctPkEgdHJhbnNpdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBub3cgaGF2ZSBJQ0NfTElOS19DTEFTUy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBubyBsb25nZXIgaGF2ZSBhIHNlcGFyYXRlIHNldHVweC8gRExMIGRpci4KCgkqIGRsbHMvY29tY3RsMzIvc3RyaW5nLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIFctPkEgdHJhbnNpdGlvbi4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglNb3ZlIFVSTF9TQ0hFTUUgdHlwZWRlZiB0byBtYXRjaCBQU0RLLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNjbXMvLmN2c2lnbm9yZSwgZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLAoJICBkbGxzL21zY21zL21zY21zX21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQmVnaW5uaW5ncyBvZiBhbiBNU0NNUyBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBMaXR0bGVDTVMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIE9MRVBpY3R1cmVJbXBsX1NhdmUuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCU1vdmVkIFRSQUNFcyB0byB0aGUgYmVnaW5uaW5nIG9mIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudCBJU2hlbGxMaW5rQTo6UmVzb2x2ZSBhbmQgSVNoZWxsTGlua1c6OlJlc29sdmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi92ZXJzaW9uLmgsCgkgIGRsbHMvc2hlbGwzMi92ZXJzaW9uLnJjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU2hhcmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBiZXR3ZWVuIERsbEdldFZlcnNpb24gYW5kIHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IFJldmVydCBicm9rZW4gY2hhbmdlIGluIHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglNb3ZlZCBjb2RlIGZyb20gQ3JlYXRlVGhyZWFkIHRvIENyZWF0ZVJlbW90ZVRocmVhZC4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL3Byb3B2YXJpYW50LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLAoJICBkbGxzL3NldHVwYXBpL2Rpc2tzcGFjZS5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91eHRoZW1lL3N0eWxlbWFwLmMsCgkgIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy93aW5lZG9zL2Rvc2NvbmYuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3Z4ZC5jLAoJICBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3R5cGUxYWZtLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jLAoJICBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5tbS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2ludGFiMzIvY29udGV4dC5jLCBsaWJzL3dpbmUvZGVidWcuYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLAoJICBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLAoJICBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCjIwMDQtMDktMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJR2V0IHJpZCBvZiB0aGUgYXNzZW1ibHkgY29kZSwgaXQgZG9lc24ndCByZWFsbHkgaW1wcm92ZSBhbnl0aGluZwoJKHJlcG9ydGVkIGJ5IFJlaW4gS2xhemVzKS4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlIENTSURMX0NPTU1PTl8qIGxvY2F0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBDU0lETF9DT01NT05fe1NUQVJUTUVOVSxQUk9HUkFNUyxERVNLVE9QRElSRUNUT1JZfSBzbyB0aGV5IGFsbCB1c2UKCXBhdGhzIGluICdBbGwgVXNlcnMnIGxpa2UgQ1NJRExfQ09NTU9OX1NUQVJUVVAuCglUaGUgQ1NJRExfQ09NTU9OX1BST0dSQU1TIGZpeCBzb2x2ZXMgbWFueSBtZW51IGNyZWF0aW9uIHByb2JsZW1zLgoKCSogZGxscy9jb21jdGwzMi9ob3RrZXkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTdGF0dXMgdXBkYXRlLgoJLSBTaG91bGQgY3JlYXRlIEhPVEtFWV9JTkZPIHN0b3JhZ2UgaW4gV01fTkNDUkVBVEUgcmF0aGVyIHRoYW4gaW4KCSAgV01fQ1JFQVRFIHNvIHRoYXQgd2UgY2FuIGFsc28gYWRkIHRoZSBXU19FWF9DTElFTlRFREdFIHN0eWxlLgoJLSBSZW1vdmUgY29kZSB0aGF0IGRyYXdzIHRoZSBjbGllbnQgZWRnZTsgaXQgaXMgYWxyZWFkeSBkcmF3biBieQoJICBEZWZXaW5kb3dQcm9jLgoKCSogZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglNYXRjaCBjbGFzcyBuYW1lIHVzZWQgYnkgV2luZG93cy4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVmFyaW91cyBmb3JtYXR0aW5nIGZpeGVzLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgZHgzIGNhcGFiaWxpdGllcy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEb24ndCBoaWRlIGFuZCByZXN0b3JlIHRoZSB3aW5kb3cgd2hlbiBjaGFuZ2luZyBpdCB0byBiZSBhIHBvcHVwCglzdHlsZS4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggV01fTURJUkVGUkVTSE1FTlUgZm9yIHRoZSBjYXNlIHdoZW4gc2VwYXJhdG9yIGlzIGF0IHRoZSBwb3NpdGlvbgoJMC4KCgkqIGRsbHMvaXRzcy8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGluY2x1ZGUvLmN2c2lnbm9yZToKCUlnbm9yZSB0aGUgZ2VuZXJhdGVkIGhlYWRlciBmaWxlcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL2l0c3MvTWFrZWZpbGUuaW4sIGRsbHMvaXRzcy9pdHNzLmgsCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvZGNvbS5oLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2FjdGl2c2NwLmgsIGluY2x1ZGUvYW1zdHJlYW0uaCwgaW5jbHVkZS9hbXZpZGVvLmgsCgkgIGluY2x1ZGUvYXVzdHJlYW0uaCwgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9kZHN0cmVhbS5oLAoJICBpbmNsdWRlL2Rpc3BleC5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2V4ZGlzcC5oLAoJICBpbmNsdWRlL21sYW5nLmgsIGluY2x1ZGUvbW1zdHJlYW0uaCwgaW5jbHVkZS9vYWlkbC5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmgsCgkgIGluY2x1ZGUvcHJvcGlkbC5oLCBpbmNsdWRlL3BzdG9yZS5oLCBpbmNsdWRlL3NlcnZwcm92LmgsCgkgIGluY2x1ZGUvc2hsZGlzcC5oLCBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc2h0eXBlcy5oLAoJICBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3VybG1vbi5oLAoJICBpbmNsdWRlL3d0eXBlcy5oOgoJQnVpbGQgdGhlIC5oIGZpbGVzIGZyb20gdGhlaXIgaWRsIHNvdXJjZSBhdCBjb21waWxlIHRpbWUsIGFuZCByZW1vdmUKCXRoZW0gZnJvbSBDVlMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVzZSBJbnRlcmxvY2tlZERlY3JlbWVudCBhbmQgSW50ZXJsb2NrZWRJbmNyZW1lbnQgaW5zdGVhZCBvZiArKy8tLS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG1lc3NhZ2UgZmxvdyBmb3IgTURJIGNyZWF0aW9uL2FjdGl2YXRpb24vZGVzdHJ1Y3Rpb24gbW9yZSBsaWtlIGluCglXaW5kb3dzLiBBZGQgYSBidW5jaCBvZiBNREkgbWVzc2FnZSB0ZXN0cy4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglNYWtlIFJ0bENyZWF0ZVVzZXJUaHJlYWQgZmFpbCBpZiBwcm9jZXNzIGhhbmRsZSBpcyBub3QgZm9yIHRoZSBjdXJyZW50Cglwcm9jZXNzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglQYXNzIGFyZ3VtZW50cyB0byB0aGUgc2VydmljZSBwcm9ncmFtLgoKMjAwNC0wOS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJQWRkZWQgL3JlZ3NlcnZlciBhbmQgL3VucmVnc2VydmVyIG9wdGlvbnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9pdHNzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluOgoJQnVpbGQgaWRsIGZpbGVzIGFzIHBhcnQgb2YgdGhlIG5vcm1hbCBidWlsZCBwcm9jZXNzLgoKCSogZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IHNldHRpbmcgb2YgZGVmYXVsdCBtZW51IGl0ZW0gaW4gc2hlbGwgY29udGV4dCBtZW51cy4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIDIwIHBwZW0gc3RyaWtlIHdpdGggY3AxMjUyIGNvdmVyYWdlIHRvIFdpbmUgU2FucyBTZXJpZi4KCUFkZCBVKzIwMWEgdG8gYWxsIHN0cmlrZXMuCgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL21lbnUuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG1lbnUgY29kZSBjb3BlIHdpdGggV01fU1lTS0VZKi9XTV9TWVNDSEFSIG1lc3NhZ2VzLgoJVW5ibG9jayBtZW51IGxvb3AgaWYgYSB3aW5kb3cgYmVpbmcgZGVzdHJveWVkIG93bnMgYSB0cmFja2VkIG1lbnUuCgoJKiBkbGxzL2dkaS9kaWIuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJRml4IGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgYW4gZWFybGllciBwYXRjaCBmb3IgQ3JlYXRlRElCaXRtYXAuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29TdXNwZW5kQ2xhc3NPYmplY3RzIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbnN2Yy5oOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQWRkZWQgc2VydmljZSBkYXRhYmFzZSBuYW1lcy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBSRUdGSUxURVIyIHN0cnVjdHVyZSB3aXRoIGR3VmVyc2lvbiBlcXVhbCB0byAxIHdoZW4KCXJlZ2lzdGVyaW5nIGZpbHRlcnMuCglGaXhlZCBkZWZhdWx0IGNhdGVnb3J5IHdoZW4gUmVnaXN0ZXJGaWx0ZXIgaXMgY2FsbGVkIHdpdGhvdXQgb25lCglzcGVjaWZpZWQuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVwbGFjZSB3aGF0ZXZlciBpcyBhbHJlYWR5IGluIHRoZSBIVFRQICJIb3N0IiBoZWFkZXIuCgoJKiBzZXJ2ZXIvZmQuYzogTW92ZWQgdGltZW91dCBwcm9jZXNzaW5nIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dbi5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfQ3MucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0ZyLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0tvLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9ObC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUGwucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1B0LnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9SdS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1RoLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Vay5yYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gSW1wbGVtZW50IFBTTV9JTkRFWFRPSUQsIFBTTV9JTkRFWFRPUEFHRSBhbmQgUFNNX1BBR0VUT0lOREVYIG1lc3NhZ2VzLgoJLSBQYXJ0aWFsbHkgaW1wbGVtZW50IHRoZSBQU0hfV0laQVJEQ09OVEVYVEhFTFAgYW5kIFBTSF9OT0NPTlRFWFRIRUxQCgkgIHN0eWxlcy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgY29ycmVjdCB0YWcgbmFtZXMgZm9yIGNvbXBhdGFiaWxpdHkgd2l0aCBmd2QgZGVjbHMuCglTb21lIG9sZCBjb2RlIGNoZWNrcyB0aGF0IF9XSU5ERUZfIGlzIGRlZmluZWQgaW4gd2luZGVmLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJTWFrZSBkcml2ZSBsZXR0ZXJzIGluIFBJRExzIGFsd2F5cyB1cHBlcmNhc2UgdG8gZW5hYmxlIFBJREwKCWNvbXBhcmlzb24uCgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzogTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCUFkZGVkIGEgM0QgYm9yZGVyIGZvciBOb3RlcGFkJ3MgZWRpdCBjb250cm9sLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAbm92ZWxsLmNvbT4KCVNhZmVBcnJheUdldEVsZW1lbnQgb24gYSBWQVJJQU5UIGFycmF5IGRvZXMgbm90IGZyZWUgdGhlIHByZXZpb3VzCglWQVJJQU5UIGluIHRoZSBwYXNzZWQgcG9pbnRlci4gQWRkZWQgdGVzdGNhc2UuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGRlZCBzdXBwb3J0IGZvciBpbnQzMyBzaG93L2hpZGUgbW91c2UgY3Vyc29yIGNhbGxzLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSB0aGUgaGFuZGxpbmcgb2YgY29tcGxleCBkYXRhIHR5cGVzIChzdHJpbmdzIGFuZCBzdHJ1Y3RzKS4KCgkqIGRsbHMveDExZHJ2L3Njcm9sbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglYMTFEUlZfU2Nyb2xsREMgc2hvdWxkIG5vdCBoYXZlIGEgV0lOQVBJIGF0dHJpYnV0ZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnQgc3RhdHVzIG9mIGNvbnRyb2wgYWdhaW5zdCB2Ni4wIG9mIG5hdGl2ZSB2ZXJzaW9uLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrIGNhbiBiZSB1c2VkIG9uIGFueSBoYW5kbGUgYW5kIGNhbGxiYWNrcyBhcmUKCWluaGVyaXRlZCBieSBkZXJpdmVkIGhhbmRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggc29tZSBUUkFDRXMKCS0gTW9yZSBBLT5XIGNvbnZlcnNpb25zIG1pc3NlZCBieSBwcmV2aW91cyBwYXRjaC4KCS0gRml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gdmFsaWRhdGluZyBkcmFnLW4tZHJvcCBmcm9tIGF2YWlsYWJsZQoJICBidXR0b25zIGxpc3QgYm94IHRvIGFjdHVhbCBidXR0b25zIGxpc3QgYm94LgoJLSBVbmljb2RlIGZsYWcgc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBub3RpZmljYXRpb24gd2luZG93LgoKMjAwNC0wOS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBzZXJ2ZXIvcmVnaW9uLmMsIHNlcnZlci91c2VyLmgsCgkgIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW5wb3MuYzoKCURvbid0IGJvdGhlciB0byByZXR1cm4gcGFydGlhbCByZWdpb24gZGF0YSBpbiBnZXRfd2luZG93X3JlZ2lvbiBhbmQKCWdldF92aXNpYmxlX3JlZ2lvbiwgcmV0dXJuIFNUQVRVU19CVUZGRVJfT1ZFUkZMT1cgaW5zdGVhZC4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9jcnlwdF9zaGEuYywgZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X3NoYS5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJSW1wbGVtZW50IEFfU0hBKiBmdW5jdGlvbnMgcHJlc2VudCBpbiBXaW5kb3dzIFhQIGFuZCBsYXRlciBzeXN0ZW1zLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBwYXRocyBlbmQgd2l0aCBhIHNsYXNoIGJlZm9yZSBjb25jYXRlbmF0aW5nIGZpbGUgbmFtZXMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgcmVmZXJlbmNlIGNvdW50aW5nLgoJQWRkUmVmIGFuZCBSZWxlYXNlIHJldHVybiBVTE9ORy4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIEludGVybG9ja2VkSW5jcmVtZW50L0ludGVybG9ja2VkRGVjcmVtZW50IGZvciByZWZlcmVuY2UgY291bnRpbmcuCglGaXggYnVnIGluIGVmZmVjdCBlbnVtZXJhdGlvbiB0aGF0IGNyYXNoZWQgZHhjYXBzdmlld2VyLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglVc2UgVW5pY29kZSB3aW5kb3cgbWVzc2FnZXMuCgoyMDA0LTA5LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfbWFybGV0dC5zZmQ6CglUcmFuc0dhbWluZwoJQWRkIGEgTWFybGV0dCByZXBsYWNlbWVudCBmb250LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJQXZvaWQgdXNpbmcgc29ja2xlbl90LgoKCSogZGxscy9nZGkvdGVzdHMvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gd2UgYmxpdCB3aXRoIGEgbW9ub2Nocm9tZSBkaWJzZWN0aW9uIGFzIHRoZSBzb3VyY2Ugd2Ugc2hvdWxkIHVzZQoJdGhlIGNvbG91ciB0YWJsZSBvZiB0aGF0IGRpYi4KCUFkZGVkIGEgdGVzdCBmb3IgdGhpcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVzZSBJbnRlcmxvY2tlZERlY3JlbWVudCBhbmQgSW50ZXJsb2NrZWRJbmNyZW1lbnQgaW5zdGVhZCBvZiArKy8tLS4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBwYWludGluZyB0aGUgYm9yZGVyIGlmIFdTX0VYX0NMSUVOVEVER0UgaXMgbm90IHNldC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGNvcnJlY3QgQ29udmVydFN0cmluZ1NpZFRvU2lkVyBhbmQgQ29udmVydFNpZFRvU3RyaW5nU2lkVywgd2l0aAoJICB0ZXN0cwoJLSBhZGQgQ29udmVydFN0cmluZ1NpZFRvU2lkQQoJLSBhZGQgbWlzc2luZyBleHBvcnRzIGZvciBDb252ZXJ0U3RyaW5nU2lkVG9TaWRBL1cKCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJUGFzcyBhcmd2WzBdIChzZXJ2aWNlIG5hbWUpIHRvIHRoZSBzZXJ2aWNlIHByb2dyYW0uCgoJKiBkbGxzL2dkaS90ZXN0cy9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUl0J3MgaW1wb3J0YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIGRpYiBjb2xvdXIgdGFibGUgYW5kIG5vdCBqdXN0IHRoZQoJY29sb3VyIG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIGEgZGliIHNlY3Rpb24gLSBpdCdzIHRoaXMgdGFibGUgdGhhdAoJR2V0RElCQ29sb3JUYWJsZSBzaG91bGQgcmV0cmlldmUuCglBZGRlZCBzb21lIEdldERJQkNvbG9yVGFibGUgdGVzdHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIFdNX0tFWSogdG8gV01fU1lTS0VZKiBtZXNzYWdlIGNvbnZlcnNpb24uCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWNjZXB0IFdNX1NZU0NIQVIgbWVzc2FnZSBmb3IgcHJvY2Vzc3NpbmcgaW4gVHJhbnNsYXRlQWNjZWxlcmF0b3JXLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUFkZGVkIHN0dWJzIGZvciBNRDQsIE1ENSBhbmQgU0hBIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIC1Xc2lnbmVkLWNvbXBhcmUgd2FybmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVc2UgSW50ZXJsb2NrZWREZWNyZW1lbnQgYW5kIEludGVybG9ja2VkSW5jcmVtZW50IGluc3RlYWQgb2YgKysvLS0uCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIHJlZmVyZW5jZSBjb3VudGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWRkIGRlLWludGVybGVhdmluZyBmb3IgR0lGIGltYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCB1c2UgVHJhY2tNb3VzZUV2ZW50cy9XTV9NT1VTRUxFQVZFIEFQSSBmb3IgaGFuZGxpbmcgdGhlIGhvdAoJICBidXR0b247IHVzZSBwbGFpbiBtb3VzZSBjYXB0dXJlIGluc3RlYWQgbGlrZSBuYXRpdmUuCgktIFJldHVybiBvbmx5IEhUVFJBTlNQQVJFTlQvSFRDTElFTlQgZnJvbSBXTV9OQ0hJVFRFU1QgYW5kIHJlbW92ZQoJICBhc3NvY2lhdGVkIGhhY2tzIG9mIFdNX1NFVENVUlNPUiwgV01fTkNMQlVUVE9ORE9XTiBhbmQKCSAgV01fTkNMQlVUVE9OVVAuCgktIFJlZmFjdG9yIHN0YXRlIGNoYW5nZSBjb2RlIHNvIHRoYXQgc3RhdGUgY2hhbmdlcyBkb24ndCBoYXBwZW4gYXMKCSAgc2lkZSBlZmZlY3RzIGZyb20gbWVzc2FnZXMgc3VjaCBhcyBXTV9OQ0NBTENTSVpFLCBpbnN0ZWFkIG9ubHkgZnJvbQoJICB1c2VyIGlucHV0IG1lc3NhZ2VzIGxpa2UgV01fTU9VU0VNT1ZFLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBVbmljb2RlIHdpbmRvdyBtZXNzYWdlcy4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9odG1saGVscC5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGh0bWxoZWxwLmguCgoyMDA0LTA5LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSB0aGUgVyB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB3ZXJlIHdlIGNhbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSB0aGUgcHJlZmVycmVkIEZUX0VOQ09ESU5HIHZhbHVlcyByYXRoZXIgdGhhbiBmdF9lbmNvZGluZy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGEgc3RyYXkgJ2Vsc2UnIGxlZnQgYnkgYSBwcmV2aW91cyBwYXRjaC4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIENMQVNTX0VfTk9BR0dSRUdBVElPTiBpZiBwVW5rT3V0ZXIgaXMgbm9uLW51bGwuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgRklMRV9TSEFSRV9ERUxFVEUgd2hlbiBsb2FkaW5nIG1vZHVsZXMsIGFzIHJ1bm5pbmcgYW4gZXhlIHRoYXQncwoJZ29pbmcgdG8gYmUgZGVsZXRlZCBzaG91bGQgd29yay4KCjIwMDQtMDktMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDA5MTQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDktMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBKZW5zIENvbGxpbiA8amVucy5jb2xsaW5AbGFraGVpLmNvbT4KCUFkZGVkIGxvb2t1cCBvZiBlbnZpcm9ubWVudCB2YXJzIGluIFNIRUxMX0FyZ2lmeVcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVByb3BlciBmaW5hbGl6YXRpb24gaW4gU3RhcnRTZXJ2aWNlVy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGxldCBhcHBsaWNhdGlvbnMgYWRkIENvbm5lY3Rpb24gaGVhZGVyIHRvIHJlcXVlc3QuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3R3YWluL1JFQURNRSwKCSAgZGxscy90d2Fpbi9kc19pbWFnZS5jLCBkbGxzL3R3YWluL2RzbV9jdHJsLmMsIGRsbHMvdHdhaW4vdHdhaW5faS5oLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5oLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkZWQgc3R1YiBmb3IgTnRTaHV0ZG93blN5c3RlbS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy93aW4uYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFN3aXRjaERlc2t0b3AuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci55OgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGV0ZXJtaW5lIFJQQyBzdHJ1Y3QgdHlwZXMgbW9yZSBleGFjdGx5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQXV0b2RldGVjdCBsaWJnaWYgc28gZXh0ZW5zaW9uIGFuZCB0cnkgdG8gbG9hZCBpdC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBRdWVyeVNlcnZpY2VPYmplY3RTZWN1cml0eS4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX2NvdXJpZXIuc2ZkOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjcDEyNTAgZ2x5cGhzIHRvIFdpbmUgQ291cmllci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgRExMVkVSU0lPTklORk8yIGluIERsbEdldFZlcnNpb24uCgoJKiBpbmNsdWRlL3dpbmUvcnBjZmMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBycGMgdHlwZS4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgbm90IHRvIGludGVyZmVyZSB3aXRoIHRoZSBsYXN0ZXJyb3IgdmFsdWUgcmV0dXJuZWQgYnkgdGhlCglDU1AgaW4gQ3J5cHRBY3F1aXJlQ29udGV4dEEuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgZGV2IGhpbnQgbGluZSBmb3IgaXRzcyAocGFydCBvZiBodG1sIGhlbHApLgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IEJlZ2luVXBkYXRlUmVzb3VyY2UgYW5kIFVwZGF0ZVJlc291cmNlLgoJU3R1YiBvdXQgYSBiaXQgbW9yZSBvZiBFbmRVcGRhdGVSZXNvdXJjZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVN0YXR1cyB1cGRhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIGN1c3RvbWl6YXRpb24gbGlzdCBib3hlcyBpbnRvIGRyYWcgbGlzdCBib3hlcy4KCS0gT3JkZXIgYXZhaWxhYmxlIGJ1dHRvbnMgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBuYXRpdmUgdmVyc2lvbi4KCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDbGVhciBkYXRhIHN0cnVjdHVyZSBhZnRlciBkcmFnZ2luZy4KCS0gV01fU0VUQ1VSU09SIGRvZXMgbm90IG5lZWQgdG8gYmUgaGFuZGxlZCBhcyBpdCBpcyBub3Qgc2VudCB3aGlsc3QKCSAgdGhlIHdpbmRvdyBpcyBjYXB0dXJlZC4KCS0gTWFrZSB1RHJhZ0xpc3RNZXNzYWdlIG5vbi1zdGF0aWMgc28gdGhhdCB3ZSBjYW4gcmUtdXNlIGl0CgkgIGVsc2V3aGVyZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUm9kZXJpY2sgQ29sZW5icmFuZGVyIDx0aHVuZGVyYmlyZDJrQGdteC5uZXQ+CglHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJTWFrZSBXUzJfc2VuZCgpLCBXU19nZXRzb2Nrb3B0KCksIGFuZCBXU19zZXRzb2Nrb3B0KCkgSVBYIHN1cHBvcnQgd29yawoJb24gRnJlZUJTRC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCVN0b3AgdGVzdGluZyBhIHNlcXVlbmNlIHVwb24gdGhlIGZpcnN0IGV4cGVjdGVkIGVycm9yLCB0byBhdm9pZAoJc3B1cmlvdXMgZXJyb3JzIGxhdGVyIG9uLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU2V0IGNsYXNzIGhickJhY2tncm91bmQgYW5kIHN0eWxlIHRvIHRoZSBzYW1lIGFzIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTZXQgaGJyQmFja2dyb3VuZCBjbGFzcyBwcm9wZXJ0eSB0byBzYW1lIHZhbHVlIGFzIG5hdGl2ZS4KCS0gVXNlIFVuaWNvZGUgd2luZG93IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIEFOU0kuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFNldCBoYnJCYWNrZ3JvdW5kIGNsYXNzIHByb3BlcnR5IHRvIHNhbWUgdmFsdWUgYXMgbmF0aXZlLgoJLSBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBXTV9FUkFTRUJLR05EIGhhbmRsZXIuCgktIFVzZSBVbmljb2RlIHdpbmRvdyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBBTlNJLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBkbyBub3QgaGF2ZSBhbiBJY29uc0RpciwgdXNlIHRoZSB0ZW1wIGRpcmVjdG9yeS4KCjIwMDQtMDktMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJSVNoZWxsRm9sZGVyOjpDb21wYXJlSURzIC0gcmV0dXJuIG9ubHkgLTEvMC8xIGluIGxvd2VyIDE2IGJpdC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvd2luZy5jLAoJICB3aW5kb3dzL2RjZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNyZWF0ZURDQSAtPiBDcmVhdGVEQ1cKCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCByZXNpemluZyBvZiB3aXphcmRzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUFuZHJlYXMgUm9zZW5iZXJnIDxhbmRyZWFzX3Jvc2VuYmVyZ0B3ZWIuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBXU0FTdHJpbmdUb0FkZHJlc3MoQS9XKSwgV1NBSHRvbmwsIFdTQUh0b25zLgoKCSogZGxscy9nZGkvZGliLmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2dkaS90ZXN0cy9iaXRtYXAuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZURJQml0bWFwIHNob3VsZCByZXR1cm4gYml0bWFwcyBhdCB0aGUgZGVwdGggb2YgdGhlIHN1cHBsaWVkIGRjLgoJQWRkIGEgdGVzdCB0byBleGVyY2lzZSB0aGlzIGJlaGF2aW91ci4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIEhUVFAgaG9zdCBoZWFkZXIgaW4gdGhlIHNhbWUgd2F5IGFzIG1vc3Qgb3RoZXIgaGVhZGVycy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgSENCVF9TWVNDT01NQU5EIGhvb2ssIGFkZCBsb2dnaW5nIGZvciBIQ0JUX1NZU0NPTU1BTkQKCWluIHRoZSBtZXNzYWdlIHRlc3QuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaElDLgoJLSBSZW1vdmUgY2hlY2sgZm9yIEhUVFAgc2lnbmF0dXJlIGluIHNlcnZlciByZXBseS4KCS0gRml4IHN0dXBpZCBlcnJvciB3aXRoIGZyZWVpbmcgdGhlIHdyb25nIGJ1ZmZlci4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglNYWtlIHN1cmUgVHJlZVZpZXcgZ2V0cyByZWRyYXduIGFmdGVyIGNhbGxpbmcgRW5zdXJlVmlzaWJsZS4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX3N5c3RlbS5zZmQ6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNwMTI1MCBnbHlwaHMgdG8gV2luZSBTeXN0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaWxsIHRoZSBhcmVhIG5leHQgdG8gd2F0ZXJtYXJrIGJpdG1hcCB3aXRoIHdpbmRvdyBjb2xvciBhbmQgc3ViY2xhc3MKCWV4dGVyaW9yIHdpemFyZCBwYWdlcyB0byBzdXBwcmVzcyBkcmF3aW5nIGJhY2tncm91bmQuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgZGV2aWNlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGJ1bmNoIG9mIG5ldyBNREkgdGVzdHMuCgoJKiBNYWtlLnJ1bGVzLmluOiBUdXJuIG9uIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgdGhlIC5kZWYgZmlsZS4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglEb24ndCB0cnkgdG8gc3RhdCBuZXR3b3JrIG1vdW50cyBpbiBwYXJzZV9tb3VudF9lbnRyaWVzLCB3ZSBjYW4ndAoJcmV0dXJuIGEgbWVhbmluZ2Z1bCBkZXZpY2UgZm9yIHRoZW0gYW55d2F5IChzdWdnZXN0ZWQgYnkgUm9iZXJ0CglTaGVhcm1hbikuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBTSFNpbXVsYXRlRHJvcCwgTUlNRV9HZXRFeHRlbnNpb25BL1csIFN0ckNweU5YQS9XLAoJU0hBbnNpVG9BbnNpLCBTSFVuaWNvZGVUb1VuaWNvZGUuCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvcHJvcC5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy91dGlsLmMsIGRsbHMvbWFwaTMyL3V0aWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgSHJHZXRPbmVQcm9wLCBIclNldE9uZVByb3AsIEZQcm9wRXhpc3RzLCBGcmVlUGFkcmxpc3QsCglGcmVlUHJvd3MsIFNjRHVwUHJvcHNldCwgSGV4RnJvbUJpbiwgRkJpbkZyb21IZXgsIEZFcXVhbE5hbWVzLgoJRml4IDIgY2FzZXMgd2hlcmUgaXRlcmF0aW5nIG92ZXIgdmFsdWUgYXJyYXlzIHJldXNlZCBhIGxvb3AgdmFyaWFibGUKCWluY29ycmVjdGx5LgoKCSogdG9vbHMvd2luZS5pbmY6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglIZWx2IHNob3VsZCBiZSBhbiBhbGlhcyBmb3IgTVMgU2FucyBTZXJpZi4gU3BvdHRlZCBieSBGcmFuY29pcy4KCgkqIGRsbHMvdHdhaW4vY2FwYWJpbGl0eS5jLCBkbGxzL3R3YWluL2RzX2F1ZGlvLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW4xNl9tYWluLmMsIGRsbHMvdHdhaW4vdHdhaW4zMl9tYWluLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW5faS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB3ZSBpbmNsdWRlIGNvbmZpZy5oIGJlZm9yZSBpbmNsdWRpbmcgdHdhaW5faS5oLgoJRml4ZXMgYW4gYWN0aXZlRFMuZGV2aWNlSGFuZGxlIGNvcnJ1cHRpb24gYnVnLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBwcm94eSBjb2RlIGdlbmVyYXRlZCBmb3Igb2FpZGwuaWRsLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglTZW5kIGNvcnJlY3QgdHJhY2luZyBub3RpZmljYXRpb24gbWVzc2FnZXMuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgKGZpbmFsbHkpIFNjcm9sbENvbnNvbGVTY3JlZW5CdWZmZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLCBkbGxzL250ZGxsL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGZvbnRzL3dpbmVfc2Fuc19zZXJpZi5zZmQ6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHNpemUgb2YgdGhlICdHJyBhdCAxNiBwcGVtLiBUaGFua3MgdG8gRG1pdHJ5IGZvciBzcG90dGluZwoJdGhpcy4KCgkqIGRsbHMvZ2RpL2RjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXaGVuIERDIG1hcHBpbmcgY2hhbmdlcyByZXNlbGVjdCBjdXJyZW50IHBlbiB0byB1cGRhdGUgcGh5c2ljYWwKCXdpZHRoLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBidWZmZXJlZCBtb2RlIHRvIGpveXN0aWNrLgoJQWRkIEpveXN0aWNrV0ltcGxfR2V0RGV2aWNlSW5mby4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTG9nIGZsYWdzIGZvciBXTV9XSU5ET1dQT1NDSEFOR0lORy9XTV9XSU5ET1dQT1NDSEFOR0VEIG1lc3NhZ2VzLCBtYWtlCgl0aGUgdGVzdHMgcGFzcyBvbiBXaW45NS9XaW45OC9XaW4yMDAwLCBmaXggc29tZSB0ZXN0IGZhaWx1cmVzIHVuZGVyCglXaW5lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJQ29ycmVjdCBkaXNwbGF5aW5nIG9mIHdpemFyZCBzdWJ0aXRsZS4KCjIwMDQtMDktMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgbG9jayBuYW1lIGZyb20gbG9jayBkZWJ1ZyBzdHJ1Y3R1cmUgYmVmb3JlIGRlbGV0aW9uIHNvIGl0IGdldHMKCWZyZWVkIHByb3Blcmx5LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVXNlIEZESSBmdW5jdGlvbnMgbGlrZSBuYXRpdmUgaW5zdGVhZCBvZiBhZHZwYWNrLkV4dHJhY3RGaWxlcyBhbmQKCSAgY2FiaW5ldC5FeHRyYWN0ICh3aGljaCBkb2Vzbid0IHdvcmsgd2l0aCBuYXRpdmUgY2FiaW5ldCkKCS0gSWYgTW92ZUZpbGUgZmFpbHMgdGhlIG1lc3NhZ2Ugbm93IGRpc3BsYXllcyB0aGUgY29ycmVjdCBsYXN0IGVycm9yCgkgIGFuZCBiYWlscyByYXRoZXIgdGhhbiBzaWxlbnRseSBicmVha2luZyB0aGUgaW5zdGFsbC4KCgkqIGRsbHMvdXNlci9tZW51LmM6IE1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CglNYWtlIHRoZSBtZW51cyBvZiBEZWxwaGkgYXBwbGljYXRpb25zIHdvcmsuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCVRoZSBpbml0aWFsIGRpYWxvZyBmb2N1cyBzaG91bGQgYmUgZXN0YWJsaXNoZWQgYnkgdGhlIGRlZmF1bHQgaGFuZGxlcgoJZm9yIFNldEZvY3VzKCksIG5vdCBpbiB0aGUgZGlhbG9nIGNyZWF0aW9uIGNvZGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCU1vZGFsIGRpYWxvZ3Mgc2hvdWxkIG5vdCBiZSBzaG93biB2aWEgU2hvd1dpbmRvdyB1bnRpbCB0aGUgbWVzc2FnZQoJcXVldWUgZmlyc3QgcnVucyBlbXB0eS4gVGhpcyBhbGxvd3MgYWxsIGluaXRpYWxpemF0aW9uIHRvIGNvbXBsZXRlCgliZWZvcmUgYSBkZWZhdWx0IGZvY3VzIGlzIGFzc2lnbmVkLgoKCSogZGxscy9rZXJuZWwvbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglEb24ndCByZWplY3QgT1MvMiBwcm9ncmFtcywgdHJ5IHRvIGNhcnJ5IG9uIGluIERPUyBtb2RlLgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmM6CglaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBkZWZhdWx0IGZvY3VzIGFzc2lnbm1lbnQgaW4gZGlhbG9ncy4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvY3VtZW50IGFsbCB0aGUgc3RydWN0dXJlIG1lbWJlcnMgdXAgdG8gU2Vzc2lvbklkIGluIHRoZSBQRUIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUltcGxlbWVudGVkIExvY2tTZXJ2aWNlRGF0YWJhc2UgYW5kIFVubG9ja1NlcnZpY2VEYXRhYmFzZS4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6IERpZWdvIFBldHRlbvIgPGRncDg1QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUFkZCBzdXBwb3J0IGZvciBmaWxlOi8vLyB1cmxzIGluIFBhdGhDcmVhdGVGcm9tVXJsLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN0cmlwIGRhbmdsaW5nIFxyXG4gZnJvbSBIVFRQX0h0dHBTZW5kUmVxdWVzdC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9QbC5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2Ugd2FudCBhbGwgMWJwcCBkaWJzZWN0aW9ucyB0byBoYXZlIGEgbW9ub2Nocm9tZSBiaXRtYXAgYW5kCglldmVyeXRoaW5nIGVsc2UgdG8gYmUgYXQgdGhlIHNjcmVlbiBkZXB0aC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIHRlc3RzIG9mIFR6U3BlY2lmaWNMb2NhbFRpbWVUb1N5c3RlbVRpbWUgYW5kCglTeXN0ZW1UaW1lVG9UelNwZWNpZmljTG9jYWxUaW1lLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXhlZCBUelNwZWNpZmljTG9jYWxUaW1lVG9TeXN0ZW1UaW1lIGFuZAoJU3lzdGVtVGltZVRvVHpTcGVjaWZpY0xvY2FsVGltZToKCS0gdGFrZSB0aGUgdGltZSBvZiBkYXkgaW50byB0aGUgY2FsY3VsYXRpb24sIHNvIHRoZSBiaWFzIGlzIGNhbGN1bGF0ZWQKCSAgY29ycmVjdGx5IGR1cmluZyB0aGUgdHJhbnNpdGlvbiBkYXlzOwoJLSB0aGUgdHJhbnNpdGlvbiB0aW1lcyBhcmUgZXhwcmVzc2VkIGFzIGxvY2FsIHRpbWUsIG5vdCBzeXN0ZW0gdGltZTsKCS0gY29ycmVjdCB0aGUgZGF5bGlnaHQgbG9naWMgZm9yIHVzZSBvbiB0aGUgc291dGhlcm4gaGVtaXNwaGVyZTsKCS0gYmVhdXRpZnkgc29tZSBMT05HTE9ORyBhcml0aG1ldGljLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEltYWdlRGlyZWN0b3J5RW50cnlUb0RhdGEgYnkgZm9yd2FyZGluZyBpdCB0byB0aGUgbnRkbGwKCWltcGxlbWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbi4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT3V0cHV0IE5kckNvbnZlcnQsIE5kckNsZWFyT3V0UGFyYW1ldGVycyBhbmQgSUlEIGNvbnN0cmFpbnRzLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXR1cm4gZXJyb3IgZnJvbSBsb3cgbGV2ZWwgZHJpdmVyIHdoZW4gbmVjZXNzYXJ5LgoKMjAwNC0wOS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGluY2x1ZGUvb2JqYmFzZS5oOgoJR2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVEhJUyBtYWNyby4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmMsIGRsbHMvZHNvdW5kL2J1ZmZlci5jLAoJICBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6CglSZW1vdmVkIHNvbWUgbW9yZSB1c2VzIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9USElTIG1hY3JvLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jOiBDb21tZW50IG91dCBhbiB1bnJlbGlhYmxlIHRlc3QuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jLAoJICBkbGxzL29sZWNsaS9vbGVjbGkxNi5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwKCSAgaW5jbHVkZS9vYmppZGwuaWRsLCBpbmNsdWRlL3Byb3BpZGwuaCwgaW5jbHVkZS9wcm9waWRsLmlkbCwKCSAgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3Nob2JqaWRsLmlkbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSB0aGUgUFJPUFZBUklBTlQgZGVjbGFyYXRpb24gZnJvbSBvYmppZGwuaWRsIHRvIHByb3BpZGwuaWRsLgoJTW92ZSByZWxhdGVkIEFQSSBkZWNsYXJhdGlvbnMgZnJvbSBpbmRpdmlkdWFsIEMgZmlsZXMgdG8gcHJvcGlkbC5pZGwuCglSZW1vdmUgdW5lZWRlZCBpbmNsdWRlIG9mIHByb3BpZGwuaCBpbiB0aGUgcHJvcHZhcmlhbnQuYyB0ZXN0LgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfTmwucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9ObC5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRHV0Y2ggcmVzb3VyY2UgdHJhbnNsYXRpb24uCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBjb3B5aW5nIHNlbGVjdGlvbiB3aGVuIGNvbnRyb2wgaXMgcmVhZCBvbmx5LgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPdXRwdXQgaW50ZXJtZWRpYXRlIHZhcmlhYmxlcyBmb3IgdGhlIG1ldGhvZCB0byB3cml0ZSBpbnRvIGluIHN0dWJzLgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIHN0dWIgZm9yIElzVmFsaWRVUkwuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJb2Zmc2V0cyBhcnJheSBpcyB0aGUgc2l6ZSBvZiB0aGUgd2luZSBkYXRhIGZvcm1hdCBzbyB0aGVyZSBpcyBubyBuZWVkCgl0byByZWFsbG9jYXRlIGl0IHdoZW4gdGhlIGZvcm1hdCBjaGFuZ2VzLgoKCSogZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglHZXQgcmlkIG9mIHRoZSBXSU5fU2V0UmVjdGFuZ2xlcyBleHBvcnQgZnJvbSB1c2VyMzIuCgoJKiBzZXJ2ZXIvZmQuYzoKCVRha2UgY2FyZSB0byBub3QgY2xvc2UgdGhlIGZpbGUgaGFuZGxlIGlmIHRoZXJlIGFyZSBvdXRzdGFuZGluZyBsb2NrcwoJYW5kIHRoZSBkaXJlY3Rvcnkgb3B0aW9ucyBkb24ndCBtYXRjaC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCUZpeGVkIHRoZSBjaGVjayBmb3IgcmVtb3ZhYmxlIG1lZGlhIGluIGxvYWRfcGVfZXhlIChzcG90dGVkIGJ5CglGcmFuY29pcyBHb3VnZXQpLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFN0YXR1cyB1cGRhdGUuCgktIFJlbW92ZSBubyBsb25nZXIgdmFsaWQgY29tbWVudC4KCS0gTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXBzLgoKCSogZGxscy9kaW5wdXQvbW91c2UuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVzIGEgbW91c2UgcmVncmVzc2lvbiBkdWUgdG8gc3RydWN0dXJlIHNpemUgY2hhbmdlLgoKMjAwNC0wOS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRml4ZWQgc29tZSBtZXNzYWdlIHNlcXVlbmNlcyB0byBzdWNjZWVkIG9uIFhQLgoJQWRkZWQgc29tZSB0ZXN0cyBmb3Igc2hvd2luZy9oaWRpbmcgYSBjaGlsZCB3aW5kb3cgd2l0aCBhbiBpbnZpc2libGUKCXBhcmVudC4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CgktIEFkZCBsaW51eCB0byBkaW5wdXQgYXhpcyBtYXBwaW5nIHVzaW5nIEhLTE0vU29mdHdhcmUvV2luZS9kaW5wdXQKCSAgcmVnaXN0cnkgc2V0dGluZ3MuCgktIEZpeCBzb21lIGZvcm1hdCBtYXBwaW5nIGJ1Z3MuCgktIEFkZHMgR2V0RGV2aWNlSW5mby4KCS0gQWRkcyAgU2V0UHJvcGVydHkgRElQSF9ERVZJQ0Ugc3VwcG9ydCBmb3Igc2V0dGluZyBhbGwgcHJvcGVydGllcy4KCS0gVXNlIHdpbmRvd3MgY29tcGF0aWJsZSBvYmplY3QgbmFtaW5nLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRG8gbm90IGRpc3Rpbmd1aXNoIGV4dGVyaW9yIHdpemFyZCBwYWdlcyBieSB0aGVpciBwb3NpdGlvbiwgYnV0CglpbnN0ZWFkIGV4cGVjdCB0aGF0IGV2ZXJ5IHBhZ2UgaW4gd2l6YXJkIHRoYXQgZG9lc24ndCBoYXZlIGhlYWRlciBpcwoJZXh0ZXJpb3IuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJTWFrZSBzdXJlIEludGVybmV0UmVhZEZpbGUgcmV0dXJucyBmdWxsIGJ1ZmZlcnMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBkc291bmQgdGVzdHMgcnVuIHdpdGggRGlyZWN0WCA8IDguCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSBnZXRfaHduZCgpIGltcGxlbWVudGF0aW9uIGZyb20gcHJvcHNldC5jIGFuZCByZXVzZSB0aGUKCWNvbW1vbiBvbmUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNldCBfV0lOMzJfV0lOTlQgdG8gMHgwNTAxIHNvIHdlIGdldCB0aGUgZGVmaW5pdGlvbiBvZgoJUFRJTUVSQVBDUk9VVElORSBmcm9tIHRoZSBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL3Byb3B2YXJpYW50LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIHVuaW9uIGluIFBST1BWQVJJQU5UIGlzIGFsd2F5cyBuYW1lbGVzcyBvbiBXaW5kb3dzLiBTbyBkZWZpbmUgYQoJbWFjcm8gdG8gZGVhbCB3aXRoIGl0IGNvcnJlY3RseS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCVJlc3BlY3QgZ2l2ZW4gYnVmZmVyIHNpemUgaW4gR0VUIEVYVEVOREVEIENPVU5UUlkgSU5GT1JNQVRJT04uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jLAoJICBkbGxzL21zdmNydC90aW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBNU1ZDUlRfQ0xPQ0tTX1BFUl9TRUMgZGVmaW5lLgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglHZW5lcmF0ZSBzb21lIG1hcnNoYWxsaW5nIGNvZGUgZm9yIHN0dWJzLgoKCSogc2VydmVyL2ZkLmM6CglDb252ZXJ0ZWQgdGhlIHRpbWVvdXQgbGlzdCB0byB1c2UgdGhlIHN0YW5kYXJkIGxpc3QgZnVuY3Rpb25zLgoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywKCSAgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3V0aWxzLmMsIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOS9kZXZpY2UuYywKCSAgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywgZGxscy9kM2Q5L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS92c2hhZGVyZGVjbGFyYXRpb24uYywgZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLAoJICBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvcXVhcnR6L2F2aWRlYy5jLAoJICBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLCBkbGxzL3F1YXJ0ei9jb250cm9sLmMsCgkgIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLCBkbGxzL3F1YXJ0ei9lbnVtZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZW51bXBpbnMuYywgZGxscy9xdWFydHovZW51bXJlZ2ZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSZW1vdmVkIHNvbWUgbW9yZSB1c2VzIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9USElTIG1hY3JvLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGlucHV0L2RldmljZS5jLAoJICBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZnJlZXR5cGUuYywKCSAgZGxscy9nZGkvZ2Rpb2JqLmMsIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvbWZkcnYvdGV4dC5jLCBkbGxzL2dkaS9wYWludGluZy5jLAoJICBkbGxzL2dkaS9wYXRoLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsCgkgIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywKCSAgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJ0LmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIHNlcnZlci9yZWdpb24uYywgc2VydmVyL3VzZXIuaDoKCUFkZGVkIHhvcl9yZWdpb24sIGZpeGVkIHJlY3RfaW5fcmVnaW9uLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9ycGNydDQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY25kci5oLCB0b29scy93aW5hcGkvY19wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhbmQgdW5pZnkgcGFyc2luZyBvZiBjYWxsaW5nIGNvbnZlbnRpb25zLgoJSGFjayBoYW5kbGluZyBvZiAnc3RydWN0IHsgfSAqTkRSX1NDT05URVhUOycgc28gd2UgZG9uJ3QgY2F1c2UgYSBwYXJzZQoJZXJyb3IgYXMgdGhpcyBpcyBhIHZhbGlkIEMgY29uc3RydWN0LgoJR2VuZXJhdGUgdHlwZSB0ZXN0cyBmb3IgcnBjcnQ0LgoJUmVtb3ZlIFBSUENfQklORElOR19WRUNUT1IgYW5kIFBVVUlEX1ZFQ1RPUiwgdGhleSBkb24ndCBleGlzdCBvbgoJV2luZG93cy4KCUZpeCB0aGUgTUlETF9TVFVCX01FU1NBR0UsIE1JRExfU0VSVkVSX0lORk8gYW5kCglNSURMX1NUVUJMRVNTX1BST1hZX0lORk8gc3RydWN0cy4KCUFkZCBORFJfQUxMT0NfQUxMX05PREVTX0NPTlRFWFQsIE5EUl9QT0lOVEVSX1FVRVVFX1NUQVRFIGFuZAoJQ1NfU1RVQl9JTkZPLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBEaWVnbyBQZXR0ZW7yIDxkZ3A4NUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglBZGQgc3VwcG9ydCBpbiBVcmxJcygpIGZvciBVUkxJU19ESVJFQ1RPUlkgYW5kIFVSTElTX0ZJTEVVUkwgZmxhZ3MuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldCBmdWxsIGJ1ZmZlcnMgaW4gSW50ZXJuZXRfUmVhZGZpbGUuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYywgZGxscy9udGRsbC9lbnYuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBjdHJsLWMgZW5hYmxpbmcgZmxhZyBpcyBub3cgaW5oZXJpdGVkCgktIGZpeGVkIGNvbnNvbGUtcmVsYXRlZCBmaWVsZHMgaW4gUlRMX1VTRVJfUFJPQ0VTU19QQVJBTUVURVJTCgktIHZhcmlvdXMgY2xlYW4tdXAgaW4ga2VybmVsMzIuU2V0Q29uc29sZUN0cmxIYW5kbGVyCgktIG9ubHkgc2VuZCBhIGNvbnNvbGUgZXZlbnQgb25jZSB0byBhIHByb2Nlc3MgYW5kIG5vdCB0byBhbGwgdGhlCgkgIHByb2Nlc3MnIHRocmVhZHMKCgkqIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKMjAwNC0wOS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aW1lci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgdGltZXJzLgoKCSogc2VydmVyL2ZkLmM6CglNYWtlIHN1cmUgdG8gcnVuIHRocm91Z2ggdGhlIHBvbGwgbG9vcCBvbmNlIGJlZm9yZSBwcm9jZXNzaW5nIG5ld2x5CglhZGRlZCB0aW1lcnMgKHJlcG9ydGVkIGJ5IE1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOgoJQXZvaWQgaW50ZWdlciBvdmVyZmxvd3MgaW4gTlRETExfZ2V0X3NlcnZlcl90aW1lb3V0IChzcG90dGVkIGJ5IE1pa2UKCU1jQ29ybWFjaykuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBpbmNsdWRlL3NobG9iai5oLCB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBjX3BhcnNlci5wbSBzbyBpdCBoYW5kbGVzICdjb25zdCcgcHJlY2VlZGluZyBhICcqJy4KCUFkZCBtaXNzaW5nICNwcmFnbWEgcGFjayBkaXJlY3RpdmVzIGZvciB0aGUgbmV3IHNobG9iai5oIHR5cGVzLgoJRml4IHNvbWUgZmllbGQgbmFtZXMgaW4gQ1NGViBhbmQgUUNNSU5GTy4KCVVwZGF0ZSB0aGUgZ2VuZXJhdGVkIHRlc3RzIHRvIGFsc28gY2hlY2sgc2h0eXBlcy5oIGFuZCB0ZXN0IHNvbWUgbW9yZQoJdHlwZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglGaXggZmlsZW5hbWUgdGVybWluYXRvciB0YWJsZSwgY29ycmVjdCBleGNsdWRlX2xhc3QgdmFsdWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5lZG9zL2ludDEzLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggY29tcGlsZSBlcnJvciB3aXRoIGluY2x1ZGUgZmlsZXMgZnJvbSBMaW51eCAyLjYuNysuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd3Nud2xpbmsuaDoKCVJvZGVyaWNrIENvbGVuYnJhbmRlciA8dGh1bmRlcmJpcmQya0BnbXgubmV0PgoJLSBzZXQgaXB4IHBhY2tldCB0eXBlCgktIGFkZCBzdXBwb3J0IGZvciByZXRyaWV2aW5nIHNvbWUgaXB4IGluZm8KCgkqIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJRmlsbCBpbiB0aGUgcHJvcGVyIG9mZnNldHMgaW4gdGhlIHJlc291cmNlIGRpcmVjdG9yeSBpbnN0ZWFkIG9mCglyZWx5aW5nIG9uIHRoZSBjb21waWxlciB0byBkbyBpdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRpdGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgMTZ4MTYgZXJyb3IsIGluZm8gYW5kIHdhcm5pbmcgaWNvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBhbmQgdHJhY2UoKSBjYWxscy4KCVBvaW50IHRvIHRoZSBwcmUtY29tcGlsZWQgd2luZXRlc3QgYmluYXJpZXMuCglBIGNvdXBsZSBvZiBzbWFsbCB0d2Vha3MgaGVyZSBhbmQgdGhlcmUuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSB0eXBlbGliIG1hcnNoYWxlciB0aHJlYWQtc2FmZSAocHJvYmxlbSByZXBvcnRlZCBieSBBcmljCgkgIFN0ZXdhcnQpLgoJLSBTZXZlcmFsIHNtYWxsIGNsZWFudXBzLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJWXZvbiBCZWxsZWF1IDxqYW1lekBpdmljLnFjLmNhPgoJLSBJbXBsZW1lbnRlZCBrZXlib2FyZCBuYXZpZ2F0aW9uIChVcCAvIERvd24gLyBQZ1VwIC8gUGdEbiAvIEVTQykuCgktIFNoYWRvdyB3aW5kb3dzIChiZWhpbmQgcG9wdXBzKSB3ZXJlIHJlYWN0aW5nIHRvIG1vdXNlIGNsaWNrcyBhbmQKCSAgd2VyZSBnb2luZyBvdmVyIHRoZSBwb3B1cC4gTWFrZSB0aGVtIGNsb3NlIHRoZSBwb3B1cCBpbnN0ZWFkLgoJLSBUaXRsZSB3YXMgbm90IGRpc3BsYXllZCB3aGVuIHRoZSBoZWxwIGZpbGUgd2FzIG9wZW5lZCBieSB0aGUgY29tbWFuZAoJICBsaW5lLgoJLSBDb3JyZWN0ZWQgaW5jb3JyZWN0IGxpbmtzIGJlaGF2aW9yIChpbiByZWxhdGlvbiB3aXRoIHRoZSBzY3JvbGxiYXIpLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJV29sZmdhbmcgU2Nod290emVyIDx3b2xmZ2FuZy5zY2h3b3R6ZXJAZ214Lm5ldD4KCUxvb2t1cEFjY291bnROYW1lQSBzdHViIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgU0lELgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBSZXZlcnQgaW5jb3JyZWN0IGNoYW5nZSB0byB0YWIgY29udHJvbCByZXNpemluZyBmcm9tIHJldmlzaW9uIDEuMTA5LgoJLSBNb3ZlIHRoZSBwcm9wZXJ0eSBzaGVldCByZXNpemluZyBjb2RlIGZyb20gUFJPUFNIRUVUX0NyZWF0ZVBhZ2UgdG8KCSAgUFJPUFNIRUVUX1NldEN1clNlbC4gSXQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgb24gZXZlcnkgcGFnZSBjaGFuZ2UKCSAgYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gY2FuIG1vZGlmeSBpdCBkdXJpbmcgdGhlIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGVzdCBzb21lIG1vcmUgZ2RpIHR5cGVzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQyNS5jLCBkbGxzL3dpbmVkb3MvaW50MjYuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gZml4IGludDIxIGJsb2NrIGRldmljZSByZWFkL3dyaXRlCgktIG1vdmVkIGRldmljZSBibG9jayBhY2Nlc3MgbG9nIG1lc3NhZ2VzIHRvIGlubmVyIGZ1bmN0aW9uIHVzZWQgYnkgdHdvCgkgIGRpZmZlcmVudCBwbGFjZXMKCS0gcmVtb3ZlZCBib2d1cyBDbG9zZUhhbmRsZSgpCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgd2FybmluZ3MgZm91bmQgd2l0aCAtV3NpZ24tY29tcGFyZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQXMgdGVzdCBydW5zIGFyZSBub3QgaW52b2tlZCBmcm9tIHRoZSBvcHRpb24gcGFyc2luZyBsb29wIGFueW1vcmUsIHdlCgljYW4gc3dpdGNoIGJhY2sgdG8gbGliYydzIHN0cnRvaygpIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRlc3Qgc29tZSBtb3JlIHVybG1vbiB0eXBlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBib2d1cyAjZGVmaW5lIHN0YXRlbWVudC4KCgkqIGRsbHMvdXNlci9idXR0b24uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc2V0IEJVVFRPTl9IQVNGT0NVUyBzdGF0ZSBpbiBXTV9LSUxMRk9DVVMgaGFuZGxlciBiZWZvcmUgY2FsbGluZwoJUmVsZWFzZUNhcHR1cmUuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbWlzc2luZyBzdHJ1Y3QuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDb25zb2xpZGF0ZSBzZWNvbmRhcnkgYnVmZmVyIGxpc3QgcHJvY2Vzc2luZyBhbmQgbG9ja2luZy4KCVR3byBuZXcgZnVuY3Rpb25zIERTT1VORF9BZGRCdWZmZXIgYW5kIERTT1VORF9SZW1vdmVCdWZmZXIKCWhhdmUgYmVlbiBhZGRlZCBhbmQgdGhlIGxvY2tpbmcgaGFzIGJlZW4gbW92ZWQgaW50byB0aGVzZSBmdW5jdGlvbnMuCglSZW5hbWVkIElEaXJlY3RTb3VuZCBsb2NrIHRvIGJ1ZmZlcl9saXN0X2xvY2suCglSZW1vdmVkIHJlZHVuZGFudCB0ZXN0IGZvciBJSURfSURpcmVjdFNvdW5kTm90aWZ5IGFuZAoJSUlEX0lEaXJlY3RTb3VuZE5vdGlmeTggYmVjYXVzZSB0aGV5IGFyZSB0aGUgc2FtZS4KCVJlbW92ZWQgY2hlY2sgZm9yIGludmFsaWQgYnVmZmVycyBvbiBsaXN0IGJlY2F1c2UgdGhhdCBzaG91bGRuJ3QKCWhhcHBlbiBhbnltb3JlIGJlY2F1c2Ugb2YgZml4ZWQgM2QgYnVmZmVyIHJlZmVyZW5jZSBjb3VudGluZy4KCU1pbm9yIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIERyYXcgdGhlIFdpemFyZDk3IGhlYWRlciBiaXRtYXBzIGJlZm9yZSBkcmF3aW5nIHRoZSBoZWFkZXIgc3RyaW5ncy4KCS0gQ2VudGVyIHRoZSBoZWFkZXIgYml0bWFwIG9mIHRoZSBuZXcgV2l6YXJkOTcgY29ycmVjdGx5LgoJLSBEaXNwbGF5IHRoZSBjb3JyZWN0IHdpemFyZCB0aXRsZSBmb3IgYW55IHdpemFyZCB0eXBlIGFuZCBkbyBub3QKCSAgY2hhbmdlIGl0IGZvciByZXF1bGFyIHByb3BlcnR5IHNoZWV0cy4KCjIwMDQtMDktMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9kM2R4b2YvZDNkeG9mLmMsIGRsbHMvZDNkeG9mL21haW4uYywgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL3N5bnRoLmMsCgkgIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsIGRsbHMvZG11c2ljL2Nsb2NrLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0LmMsIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsCgkgIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsCgkgIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jOgoJUmVtb3ZlZCBzb21lIHVzZXMgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1RISVMgbWFjcm8uCgoJKiBkbGxzL21zd3NvY2svbXN3c29jay5zcGVjLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9wcm90b2NvbC5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNb3ZlIGltcGxlbWVudGF0aW9uIG9mIEVudW1Qcm90b2NvbHN7QSxXfSBmcm9tIHdzb2NrMzIgdG8gd3MyXzMyLgoJRm9yd2FyZCB7bXN3c29jayx3c29jazMyfS5FbnVtUHJvdG9jb2xze0EsV30gdG8gd3MyXzMyLldTQUVudW1Qcm90b2NvbHN7QSxXfS4KCUltcHJvdmUgc29tZSB0cmFjZXMuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggUHJvcFZhcmlhbnRDb3B5IGZvciBWVF9MUFNUUiBhbmQgVlRfTFBXU1RSLgoJLSBUZXN0IGNhc2UgVlRfQlNUUiwgVlRfTFBTVFIgYW5kIFZUX0xQV1NUUi4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRlc3Qgc29tZSBtb3JlIG50ZGxsIHR5cGVzLgoJdGVzdHMuZGF0OiBSZW1vdmUgdHlwZXMgdGhhdCBkb24ndCBleGlzdCwgd2hldGhlciBpbiB0aGUgV2luZG93cyBvcgoJV2luZSBoZWFkZXJzLgoKCSogZGxscy9udGRsbC90aW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIGRlZmluZXMgZm9yIFRaX0lORk8uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBPYmV5IFRCQ0RSRl9OT09GRlNFVCBmb3IgdGhlIGJ1dHRvbiB0ZXh0LgoJLSBNYWtlIGFuY2hvciBoaWdobGlnaHRpbmcgYmVoYXZlIG1vcmUgbGlrZSBuYXRpdmUgdmVyc2lvbi4KCS0gRG9uJ3QgcmVjYWxjdWxhdGUgdG9vbGJhciBpbiBUT09MQkFSX1Vua3duNDYwLgoJLSBPYmV5IFdNX1NFVFJFRFJBVyBmb3IgdGhlIFdNX0VSQVNFQktHTkQgbWVzc2FnZSBhcyB3ZWxsIGFzCgkgIFdNX1BBSU5ULgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglXaGVuIGFjdHVhbCBvZmZzZXQgZG9lc24ndCBtYXRjaCB0aGUgc3BlY2lmaWVkIG9mZnNldCwgdXNlIHRoZSBhY3R1YWwKCW9mZnNldC4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvcGFja2FnZS5jLCBpbmNsdWRlL21zaS5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIE1zaUdldEZpbGVWZXJzaW9uQS9XLgoKCSogaW5jbHVkZS9ndWlkZGVmLmgsIGluY2x1ZGUvcnBjcHJveHkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgR1VJRHMgbm9uLWNvbnN0IHdoZW4gY29tcGlsaW5nIE1JREwvd2lkbCBnZW5lcmF0ZWQgcHJveGllcy4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9hbXN0cmVhbS9tYWluLmMsCgkgIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9mYWN0b3J5LmMsIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywKCSAgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYywgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywKCSAgZGxscy9kbWxvYWRlci9jbGFzc2ZhY3RvcnkuYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsCgkgIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2RwbmV0L2NsaWVudC5jLCBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL21vbmlrZXIuYywKCSAgZGxscy9pdHNzL3N0b3JhZ2UuYywgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLAoJICBkbGxzL21zaS9tc2kuYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywgZGxscy9ycGNydDQvY3N0dWIuYywKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy91cmxtb24vdW1vbi5jOgoJUmVtb3ZlZCBzb21lIHVzZXMgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1RISVMgbWFjcm8uCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VybG1vbi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGlzYWJsZSBNU1ZDIHdhcm5pbmcgNDExNiB0byBhdm9pZCB0aGUgJ3VubmFtZWQgdHlwZSBkZWZpbml0aW9uIGluCglwYXJlbnRoZXNlcycgd2FybmluZyBjYXVzZWQgYnkgVFlQRV9BTElHTk1FTlQoKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gdGhlIGNvcnJlY3QgZXJyb3Igd2hlbiBPcGVuU2VydmljZSBpcyBjYWxsZWQgd2l0aCBhCglub24tZXhpc3Rpbmcgc2VydmljZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBNdWxEaXYgcHJvdG90eXBlIGZyb20gd2luZ2RpLmggdG8gd2luYmFzZS5oIHdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBmb3IgQ3J5cHR7R2V0L1NldH1LZXlQYXJhbS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGVjayBmb3IgbW9yZSBzdGFuZGFyZCBoZWFkZXJzLgoKCSogdG9vbHMvYmluMnJlcy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggYmluMnJlcyBoZWxwIHRleHQuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgY3JpdGljYWwgc2VjdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IGJ1ZyB3aXRoIGNoYWluZWQgbWVzc2FnZXMuCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gbWFrZSB0aGUgd2lkbCBnZW5lcmF0ZWQgcHJveHktc3R1YiBjb2RlIGNvbXBpbGFibGUKCS0gZ2VuZXJhdGUgbWFyc2hhbGxpbmcgYW5kIHVubWFyc2hhbGxpbmcgY29kZSBmb3IgcHJveGllcwoJLSBnZW5lcmF0ZSBleGNlcHRpb24gaGFuZGxpbmcgY29uc3RydWN0cwoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zY2hlbWFkZWYuaCwgaW5jbHVkZS90bXNjaGVtYS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWZpbmUgdGhlIHRtc2NoZW1hLmggY29uc3RhbnRzIHVzaW5nIGVudW1lcmF0aW9ucyBhbmQgdGhlIG1hY3JvcwoJcHJvdmlkZWQgYnkgc2NoZW1hZGVmLmguCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gUmV2ZXJzZWQgdGhlIGFzc2VydGlvbiBjYXVzaW5nIEludGVybmV0Q29ubmVjdCB0byBhbHdheXMgZmFpbC4KCS0gRlRQX0NvbnZlcnRGaWxlUHJvcDogV0lOMzJfRklORF9EQVRBIGNvbnRhaW5zIHByb3BlciBtb2RpZmljYXRpb24KCSAgYW5kIGNyZWF0aW9uIHRpbWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGV4cG9ydHMgZm9yIG1pc3Npbmcgb3JkaW5hbHMgMTkxLTE5NC4KCS0gU3R1YiBmb3IgU0hVcGRhdGVJbWFnZVcuCgoJKiBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YnMgZm9yIEFtcEZhY3RvclRvREIgYW5kIERCVG9BbXBGYWN0b3IuCglBZGRlZCBHZXRQcm94eURsbEluZm8uCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGZpeCBmb3IgaW5jbHVkZXMgd2l0aCByZWxhdGl2ZSBwYXRocy4KCjIwMDQtMDktMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVVzZSBXaW5kb3dzIHNvY2tldHMgd2hlbiBidWlsZGluZyBXaW5pbmV0IG9uIE1pbmd3LgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlYWQgZGV2aWNlIG5hbWUgZnJvbSBkZXZpY2UgaWYgcG9zc2libGUuCglGaXggZW51bWVyYXRlIG9wZW4gYnVnLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luaW5ldC9jb29raWUuYywKCSAgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHNvY2tsZW5fdC4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bnVzZWQgPHNjcmVlbj4gc2VjdGlvbi4KCgkqIGRsbHMvdXh0aGVtZS9zdHlsZW1hcC5jLCBpbmNsdWRlL3Rtc2NoZW1hLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0eXBvIGluIFJCU19VTkNIRUNLRURIT1QgKHNwb3R0ZWQgYnkgSmFuIFNjaHdlaXplcikuCglGaXggdGhlIEhTQVNfIGVudW1lcmF0aW9uLgoKCSogaW5jbHVkZS9ycGNuZHIuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIG9ubHkgc3RhbmRhcmQgQyB0eXBlcyBpbiBycGNoZHIuaC4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRmlsbCBpbiB0aGUgTVogaGVhZGVyIGluIGJ1aWx0aW4gUEUgRExMcy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3Qgb2YgR2V0QWNjZXB0TGFuZ3VhZ2VzQSBvbiBOVDQuCgoJKiBkbGxzL2RpbnB1dC9kYXRhX2Zvcm1hdHMuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZWQgdHJhaWxpbmcgd2hpdGUgc3BhY2UuCglBZGRlZCBtb3VzZSBmb3JtYXRzLgoKCSogZGxscy9rZXJuZWwvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG1zdmNydDogdGhlIGZpbGUgZGVzY3JpcHRvcnMgYXJlIG5vdyBpbmhlcml0ZWQgYmV0d2VlbiBwYXJlbnQvY2hpbGQKCSAgcHJvY2Vzc2VzCgktIGtlcm5lbDMyLkNyZWF0ZVByb2Nlc3M6IG1ha2UgdXNlIG9mIHRoZSAqcmVzZXJ2ZWQyIGZpZWxkcyBmb3IKCSAgQy1SdW5UaW1lIGRhdGEgaW5oZXJpdGFuY2UKCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IFByb3BWYXJpYW50Q2xlYXIgdG8gcmVqZWN0IGludmFsaWQgdHlwZXMuCgktIERvbid0IGNyYXNoIG9uIE5VTEwgcG9pbnRlcnMuCgktIEFkZCB0ZXN0IGNhc2UuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgbm9uLXN0YW5kYXJkIHR5cGVzIGluIHJwY2RjZXAuaC4KCgkqIGluY2x1ZGUvcnBjbmRyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBmaWVsZCB0byBNSURMX1NUVUJfTUVTU0FHRS4KCgkqIGluY2x1ZGUvcnBjZGNlcC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBub24tc3RhbmRhcmQgdHlwZXMuCgoJKiBpbmNsdWRlL3JwY3Byb3h5Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBhIHVybC4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJlYWQgcGFzdCBlbmQgb2YgdGFibGUgaW4gUGF0aEZpbGVFeGlzdHNEZWZFeHRXLgoKMjAwNC0wOS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsCgkgIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYywKCSAgZGxscy9jYWJpbmV0L2ZkaS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGEgaGVhcCBjb3JydXB0aW9uIGluIE1JWF9Jbml0ICggc2l6ZW9mKCkgIT0gc3RybGVuKCkgKS4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgQUNQIGRlZmluZSBpbiBNQi9XQyBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglHZXRVcGRhdGVSZWN0IHNob3VsZCByZXR1cm4gVFJVRSBldmVuIGlmIG9ubHkgdGhlIG5vbi1jbGllbnQgYXJlYSBpcwoJaW52YWxpZCAocmVwb3J0ZWQgYnkgUmVpbiBLbGF6ZXMpLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgYWx0ZXJuYXRlIGRhdGEgZm9ybWF0cy4KCgkqIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYywKCSAgZGxscy91c2VyL3Rlc3RzL2NsaXBib2FyZC5jLCBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjZGNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2Ugc3RhbmRhcmQgdHlwZXMgaW4gcnBjcnQ0IGhlYWRlcnMgc28gdGhleSBjYW4gYmUgdXNlZCB0byBidWlsZCBNSURMCglnZW5lcmF0ZWQgcHJveHkgY29kZS4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4IGJ1ZmZlciBvdmVyZmxvdyBpbiBQYXRoU2V0RGxnSXRlbVBhdGhXIHRoYXQgbGVkIHRvIGEgdHJhc2hlZAoJc3RhY2suCgoJKiBkbGxzL2dkaS9jbGlwcGluZy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEZWZhdWx0IGNsaXBwaW5nIHJlZ2lvbiBzaG91bGQgYmUgcmVzb2x1dGlvbiBvZiB0aGUgREMsIG5vdCB0aGUKCWN1cnJlbnQgdmlzaWJsZSByZWdpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQWRkZWQgXG4gdG8gb2soKSBzdHJpbmdzIGluIHRoZSBpbWFnZWxpc3QgdGVzdHMuCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU91dHB1dCBjb2RlIHRvIGNsZWFyIE9VVCB2YXJpYWJsZXMgaW4gcHJveHkgY29kZS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0ZXN0IHNob3dpbmcgaG93IEdESSBzY2FsZXMgYml0bWFwIGZvbnQgbWV0cmljcy4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9hdGxfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHViIGZvciBBdGxNb2R1bGVVcGRhdGVSZWdpc3RyeUZyb21SZXNvdXJjZUQuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGhlIGluc3RydWN0aW9ucyBkZXNjcmliaW5nIGhvdyB0byBjb21waWxlIHRoZSBjb25mb3JtYW5jZQoJdGVzdHMgd2l0aCBNU1ZDIGFuZCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZXRlY3Qgd2hldGhlciBWaXN1YWwgU3R1ZGlvIGNhbiBjYXN0IF9fdWludDY0J3MgdG8gZmxvYXRzIGFuZCBkaXNhYmxlCgl0aGUgcmVsZXZhbnQgdGVzdHMgaWYgaXQgY2Fubm90LgoJRml4IGEgZG91YmxlIHRvIGZsb2F0IGxpdGVyYWwgY29udmVyc2lvbiB3YXJuaW5nLgoKMjAwNC0wOS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpb24uYywgc2VydmVyL3VzZXIuaDogQWRkZWQgcmVjdF9pbl9yZWdpb24gZnVuY3Rpb24uCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9rYmQxNi5jLAoJICBkbGxzL3VzZXIva2V5Ym9hcmQuZHJ2LnNwZWMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tb3VzZS5jLAoJICBkbGxzL3VzZXIvbW91c2UxNi5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCU1vdmVkIGtleWJvYXJkLmMgdG8gZGxscy91c2VyL2tiZDE2LmMuCglLZXlib2FyZCwgbW91c2UgYW5kIGRpc3BsYXkgZHJpdmVycyBhcmUgMTYtYml0IG9ubHkuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ29udmVydCBtb3N0bHkgdXNlbGVzcyBFUlIgdG8gV0FSTiBtZXNzYWdlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gcmVtb3ZlIHVubmVjZXNzYXJ5IHR5cGUgY29udmVyc2lvbnMKCS0gYWRkZWQgdGVzdHMgZm9yIGNyeXB0CgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jYWNoZS5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwKCSAgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VpdG9vbHMuYywgaW5jbHVkZS91c2VyLmgsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIHNvbWUgd2luZG93IHBhaW50aW5nIGZ1bmN0aW9ucyB0byB1aXRvb2xzLmMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5udC5oLAoJICB3aW5kb3dzL2RyaXZlci5jOgoJR2V0IHJpZCBvZiB0aGUgV0lORV9VTlVTRUQgbWFjcm8uCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVdlIHN0aWxsIG5lZWQgdG8gbG9vayBmb3IgdGhlIHRvcCBwYXJlbnQgdGhhdCBkb2Vzbid0IGNsaXAgc2libGluZ3MgaW4KCUdldERDIGJlY2F1c2Ugb2YgdGhlIFggd2luZG93IGNsaXBwaW5nLgoKCSogZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBiYXNpYyBHREkgTE9HRk9OVCB0ZXN0LCBmaXggYSBjb3VwbGUgb2YgZmFpbHVyZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUltcGxlbWVudGVkIFF1ZXJ5U2VydmljZUNvbmZpZ0EuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9zeXN0ZW0uc2ZkOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjeXJpbGxpYyBnbHlwaHMgdG8gV2luZSBTeXN0ZW0uCgoJKiBkbGxzL2F0bC9hdGxfbWFpbi5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNoZWNrIGZvciBOVUxMIGJlZm9yZSBkb2luZyBJc0VxdWFsR1VJRCgpIGluCglBdGxJbnRlcm5hbFF1ZXJ5SW50ZXJmYWNlLgoKCSogaW5jbHVkZS93aW5udC5oOiBGaXhlZCBhbGlnbm1lbnQgb2YgVE9LRU5fU1RBVElTVElDUy4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRnVuY3Rpb24gcGFyYW1ldGVycyBkb24ndCBuZWVkIFdJTkVfVU5VU0VELgoKCSogZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvcGF0aC5jLCBkbGxzL21zdmNydC9tYWluLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oOgoJSW5saW5lIGZ1bmN0aW9ucyBkb24ndCBuZWVkIFdJTkVfVU5VU0VELgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgcmVmZXJlbmNlcyB0byBJQ09NX1RISVMgYW5kIFdJTkVfVU5VU0VEIGFzIHRoZXkgZG9uJ3QgZXhpc3Qgb24KCVdpbmRvd3MuCglEZWZpbmUgQ09CSk1BQ1JPUyBzbyB3ZSBnZXQgdGhlIElSZWNvcmRJbmZvXyogbWFjcm9zLgoKCSogZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXgvdXBkYXRlIHRoZSBUT0tFTl9TVEFUSVNUSUNTIGNoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IG91dHB1dCB0aGUgREVDTFNQRUNfQUxJR04oKSBkaXJlY3RpdmVzIGluIHRoZSBUWVBFX0ZJRUxEIHRlc3RzLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBMUEMgdHlwZWRlZnMuCgoJKiBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvd2luZWNsaXBzcnYuYywgZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46Cgl3aW5lY2xpcHNydiBpcyBubyBsb25nZXIgdXNlZCwgcmVtb3ZlIGl0LgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEaXNhYmxlIHRoZSBSdGxCaXRNYXAgdGVzdHMgaWYgY29tcGlsaW5nIHdpdGggdGhlIE1pY3Jvc29mdCBoZWFkZXJzIGFzCgl0aGV5IGFyZSBtaXNzaW5nIGNyaXRpY2FsIHN0cnVjdHVyZSBhbmQgQVBJIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLAoJICBwcm9ncmFtcy90YXNrbWdyL29wdG5tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZmluZXMuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgRmlsdGVyTWFwcGVyMl9DcmVhdGVDYXRlZ29yeS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSBBVURJT0RFViBhbmQgTUlYRVJERVYgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoKMjAwNC0wOC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kYXRhX2Zvcm1hdHMuYywKCSAgZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZGVmYXVsdCBkYXRhIGZvcm1hdHMgZm9yIGNfZGZESUpveXN0aWNrIGFuZCBjX2RmRElKb3lzdGljazIuCglBZGRlZCBvYmplY3QgcHJvcGVydGllcyBmb3IgbW9yZSB0aGFuIG9uZSBvYmplY3QuCglBZGRlZCBlcnJvciBjaGVja3MgZm9yIGFjcXVpcmVkLgoJRGVmYXVsdCB0byB1c2luZyBjX2RmRElKb3lzdGljazIgZGF0YSBmb3JtYXQuCglUcnkgdG8gdXNlIHVzZXIgc3VwcGxpZWQgZGF0YSBmb3JtYXRzIChvbmx5IHdvcmtzIGlmIHNhbWUgYXMgb25lIG9mCgl0aGUgZGVmYXVsdHMpLgoJQ29kZSBjbGVhbnVwLCBlcnJvciBjaGVja2luZyBhbmQgdHJhY2luZyBhZGRlZC4KCUFkZGVkIHN1cHBvcnQgZm9yIHVwIHRvIDggYXhpcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdXNlIERTQkNBUFNfe0NUUkxERUZBVUxULENUUkxBTEx9IGluIGNhcGFiaWxpdHktZHVtcGluZwoJZnVuY3Rpb25zIHNpbmNlIHRoZXkgYXJlIG5vdGhpbmcgYnV0IGEgY29tYmluYXRpb24gb2Ygb3RoZXIgZmxhZ3MgYW5kCglhcmUgdGh1cyByZWR1bmRhbnQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUV4cGFuZCBJbWFnZVBhdGggaW4gUXVlcnlTZXJ2aWNlQ29uZmlnVy4KCgkqIGRsbHMvaXRzcy9jaG1fbGliLmMsIGRsbHMvaXRzcy9jaG1fbGliLmgsIGRsbHMvaXRzcy9senguYywKCSAgZGxscy9pdHNzL2x6eC5oOgoJR2V0IHJpZCBvZiBDVlMga2V5d29yZHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgZXhwb3J0IHRoZSBzaGVsbDMyIFNIQWxsb2NTaGFyZWQgZnVuY3Rpb25zIGJ5IG5hbWUuCglJbXBsZW1lbnQgdGhlbSBieSBjYWxsaW5nIG91dCB0aGVpciBzaGx3YXBpIGVxdWl2YWxlbnQgKHdoaWNoIGhhZCBhCgltdWNoIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gYW55d2F5KS4KCUZpeCB0aGUgcHJvdG90eXBlIG9mIHNobHdhcGkncyBTSEFsbG9jU2hhcmVkKCkuCglEb24ndCBjcmFzaCBpZiBscHZEYXRhIGlzIE5VTEwgaW4gU0hBbGxvY1NoYXJlZCgpLgoJQWRkIGEgY29uZm9ybWFuY2UgdGVzdCB0byBzaGx3YXBpLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYywKCSAgZGxscy93aW5tbS90ZXN0cy93YXZlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaW5jbHVkZSAnbW1kZGsuaCcsIGl0J3Mgbm90IG5lZWRlZC4gVGhlIHdpbm1tIHRlc3RzIGNhbiBub3cgYmUKCWNvbXBpbGVkIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgRERLLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNU1ZDIGRvZXMgbm90IGxpa2UgdGhlIHR5cGVvZigpIGluIHRoZSBmdW5jdGlvbiBwb2ludGVyIGRlY2xhcmF0aW9uLgoJRml4IGEgd2FybmluZy4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIFBTWiB0byB3aW5kZWYuaC4KCUFkZCBhIGNvdXBsZSBtaXNzaW5nIGRlY2xhcmF0aW9ucyB0byB3aW50ZXJubC5oLgoJVHdlYWsgVk1fQ09VTlRFUlMgdG8gbWF0Y2ggdGhlIGRkayBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJU2FuaXR5IGNoZWNrIHdoZW4gY2xvc2luZyBzZXJ2aWNlIGhhbmRsZS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZXQgbGFzdCBlcnJvciB2YWx1ZXMgY29tcGF0aWJsZSB3aXRoIFdpbjl4IGltcGxlbWVudGF0aW9uCglvZiBHZXRGaWxlVmVyc2lvbkluZm9TaXplLCBRdWlja2VuIGluc3RhbGxlciBkZXBlbmRzIG9uIGl0LgoKCSogZGxscy93aW5lcHMvZ2VuZXJpYy5wcGQ6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2UgMS80IiBtYXJnaW5zIGZvciBzb21lIHN0YW5kYXJkIHBhcGVyIHNpemVzLgoJVHVybiBUeXBlNDIgc3VwcG9ydCBvZmYgYnkgZGVmYXVsdC4KCUJ1bXAgdGhlIEZpbGVWZXJzaW9uLgoKCSogZm9udHMvd2luZV9jb3VyaWVyLnNmZDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBsZXRlIGNwMTI1MiBjb3ZlcmFnZS4KCUZpeCBoZWlnaHQgb2YgJ0knLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL2J1dHRvbi5jLCBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL2Rlc2t0b3AuYywKCSAgZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL2ljb250aXRsZS5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLAoJICBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvc2Nyb2xsLmMsIGRsbHMvdXNlci9zdGF0aWMuYywKCSAgZGxscy91c2VyL3VpdG9vbHMuYywgdG9vbHMvd2luYXBpL21zdmNtYWtlciwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwOgoJTW92ZWQgYWxsIGZpbGVzIGZyb20gdGhlIGNvbnRyb2xzLyBkaXJlY3RvcnkgdG8gZGxscy91c2VyLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLCBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS9nZGkxNi5jLAoJICBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9tZmRydi90ZXh0LmMsIGRsbHMvZ2RpL3Blbi5jLAoJICBkbGxzL3VzZXIvaG9vazE2LmMsIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3duZDE2LmMsCgkgIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy93aW5wb3MuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglHZXQgcmlkIG9mIHRoZSBub24tc3RhbmRhcmQgQ09OVl9QT0lOVCBhbmQgQ09OVl9SRUNUIGZ1bmN0aW9ucy4KCjIwMDQtMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTWFrZSBDcnlwdFNldFByb3ZpZGVyRXggb25seSBkZWxldGUgdGhlICdOYW1lJyB2YWx1ZSBhbmQgbm90IGRlbGV0ZQoJdGhlIGVudGlyZSAnVHlwZSBYWFgnIGtleSB3aGVuIGRlbGV0aW5nIHRoZSBkZWZhdWx0IHByb3ZpZGVyLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglDaGFuZ2VkIFNDX0hBTkRMRXMgZnJvbSBIS0VZcyB0byBwb2ludGVycyB0byBpbnRlcm5hbCBzdHJ1Y3R1cmVzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsCgkgIHdpbmRvd3Mvc3RydWN0MzIuaCwgd2luZG93cy93aW5wcm9jLmM6CglSZW1vdmVkIHN0cnVjdDMyLltjaF0uCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21zYy5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gRml4IGRlYnVnIGluZm8gbG9vay11cCAoYnVnIGluIHRyYW5zbGF0aW5nIHRoZSBSVkEgb2YgdGhlIGRlYnVnCgkgIGRpcmVjdG9yeSkuCgktIEZpeCBjb2RlIGZvciBhZGRpbmcgUEUgZXhwb3J0IHRhYmxlIGFzIGRlYnVnIGluZm8gKGNyYXNoIHdpdGggTlVMTAoJICBwYXNzZWQgdG8gUnRsSW1hZ2VEaXJlY3RvcnlFbnRyeVRvRGF0YSkuCgktIEZpeCBjb21wdXRhdGlvbiBvZiBub24tcmVsb2NhdGFibGUgRUxGIHNoYXJlZCBvYmplY3RzIHNpemUuCgktIEZpeCBsb2FkaW5nICh3aGlsZSBwYXJzaW5nIHRoZSBsaW5rIG1hcCkgb2YgbmV3IG5vbi1yZWxvY2F0YWJsZSBFTEYKCSAgc2hhcmVkIG9iamVjdHMgKG5vIGxvbmdlciB0YWtlIGFjY291bnQgbG9hZC1hZGRyZXNzIG9mIGxpbmstbWFwKS4KCS0gRmluaXNoZWQgdGhlIEFVVE9fUFVCTElDLCBOT19QVUJMSUNTIGFuZCBQVUJMSUNTX09OTFkgc3VwcG9ydCBmb3IgUEUgYW5kIEVMRi4KCS0gQ2xlYW5lZCB1cCBwdWJsaWMgc3ltYm9sIG1hbmFnZW1lbnQgKHdoaWNoIHNob3VsZCBub3cgcHJvcGVybHkgd29yaykuCgoJKiBkbGxzL2F0bC9yZWdzdnIuYywgZGxscy9tbGFuZy9NYWtlZmlsZS5pbiwgZGxscy9tbGFuZy9tbGFuZy5jLAoJICBkbGxzL21sYW5nL3JlZ3N2ci5jLCB0b29scy93aW5lLmluZjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZCBEbGxSZWdpc3RlclNlcnZlciBhbmQgZnJpZW5kcyBmb3IgbWxhbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsc28gcmVjb2duaXplICcvJyBhcyB0aGUgc3RhcnQgb2YgYW4gb3B0aW9uLgoJSW1wbGVtZW50ICdub3RlcGFkIC9wJy4KCVNpbXBsaWZ5IG1hbnkgc3RyaW5nIHBhcnNpbmcgbG9vcHMuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgbWVtb3J5IGxlYWsuCglJbXByb3ZlIHRoZSBHZXRGdWxsUGF0aE5hbWUoKSBlcnJvciBjaGVja3MuCglTdHJpY3RlciBtYXRjaCBjaGVjayBpbiBHZXRMaW5rTG9jYXRpb24oKS4KCUNsYXJpZnkgdGhlICdVbmtub3duIGxpbmsgbG9jYXRpb24nIG1lc3NhZ2UuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jOiBFdmFuIERlYXVibCA8d2luZUB3YXJwZWR2aWV3LmNvbT4KCVN0b3AgcHJvY2Vzc2luZyBpbnB1dCBzdHJlYW0gd2hlbiB0aGUgb3V0ZXJtb3N0IFJURiBncm91cCBpcyBjbG9zZWQuCgoJKiBkbGxzL3VzZXIvdXNlcjE2LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIGEgY291cGxlIG9mIDE2LWJpdCBmdW5jdGlvbnMgdG8gdXNlcjE2LmMuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9jb3VyaWVyLnNmZDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgY3lyaWxsaWMgZ2x5cGhzIHRvIFdpbmUgQ291cmllciBhdCAxMyBwaXhlbCBzaXplLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIEhlYXAgZnVuY3Rpb25zIGluc3RlYWQgb2YgbWFsbG9jL2ZyZWUuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgZGVmaW5lcyB1c2VkIGluIFJpY2hFZGl0IDIuMC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBEb24ndCBleHBlY3QgdGhhdCBkcml2ZSBDOiBleGlzdHMsIHVzZSB0aGUgZHJpdmUgV2luZG93cyBpcwoJICBpbnN0YWxsZWQgb24gaW5zdGVhZC4KCS0gUmVtb3ZlIG1pc2xlYWRpbmcgbWVzc2FnZSBhYm91dCBmaWxlIG1hcHBpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZvciBub24tb3ZlcmxhcHBlZCB3cml0ZXMgdGhlIGxwTnVtYmVyT2ZCeXRlc1dyaXR0ZW4gcGFyYW1ldGVyIG9mCglXcml0ZUZpbGUgbXVzdG4ndCBiZSBOVUxMLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQ29ycmVjdCBwYXJzaW5nIG9mIC9pIGFyZ3VtZW50LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IGxvYWRpbmcgd2l6YXJkIHRpdGxlIGFuZCBzdWJ0aXRsZSBmcm9tIHJlc291cmNlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJUG9saXNoIHRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfUGwucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9kZHJhdy9tYWluLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgQVBJIGRvY3VtZW50YXRpb24gZm9yIERpcmVjdERyYXdFbnVtZXJhdGVFeC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUQl9NQVJLSVRFTSBzaG91bGQgcmVkcmF3IGJ1dHRvbi4KCgkqIGRsbHMveDExZHJ2L2luaXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNwZWxsaW5nIGZpeC4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIE50QWRqdXN0R3JvdXBzVG9rZW4gYW5kIE50QWxlcnRUaHJlYWQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVGVzdCAzMiBiaXQgZmxvYXQgc2FtcGxlcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUm91bmQgcmVzdWx0cyBvZiBjb252ZXJzaW9ucyBiZXR3ZWVuIE9TUyBhbmQgd2luZG93cyB2YWx1ZXMuCgoyMDA0LTA4LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJUHJpbnQgYSB3YXJuaW5nIHdoZW4gRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGFyZSBub3QKCW1hcmtlZCBwcml2YXRlLgoKCSogZGxscy93aW5tbS90ZXN0cy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkcyB0ZXN0cyB0byByZWFkIGFuZCB3cml0ZSBjb250cm9sIGRldGFpbHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNldCBwcm9wZXIgdGFyZ2V0IHR5cGUuCglTZXQgcHJvcGVyIG1heCBhbmQgc3RlcCBmb3IgbXV4IGNvbnRyb2wuCgoJKiBkbGxzL21sYW5nL21sYW5nLnNwZWMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQWRkZWQgYSBmZXcgbWlzc2luZyAtcHJpdmF0ZSBmbGFncy4KCgkqIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywKCSAgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsCgkgIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBidWZmZXJzIHJhdGhlciB0aGFuIGxpbmtlZCBsaXN0cyBmb3IgaW5wdXQgYW5kIG91dCBidWZmZXJzLgoJU3RvcCByZWFkaW5nIGlucHV0IGF0IGEgbnVsIGJ5dGUuCgoJKiBkbGxzL29sZWFjYy9tYWluLmMsIGRsbHMvb2xlYWNjL29sZWFjYy5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRGxsUmVnaXN0ZXJTZXJ2ZXIvRGxsVW5yZWdpc3RlclNlcnZlciBjYWxscy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgYSBjb3VwbGUgbW9yZSBTUElfIGNvbnN0YW50cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIYWNrIHdpbmFwaV9wYXJzZXIgc28gd2UgcmVjb2duaXNlIEVsZlcoYXV4dl90KSBhcyBhIHR5cGUuIEZpeGVzIHRoZQoJc2NyaXB0cyB0aGF0IGNvbXB1dGUgQVBJIHN0YXRpc3RpY3MuCgoJKiBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgZmV3IG1vcmUgcHJvdG90eXBlcyB0byB0aGUgaGVhZGVycy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTnREZWxldGVGaWxlIGFuZCBOdENhbmNlbElvRmlsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc3Vwb3J0IGZvciBvcHRpb25hbCBhcmd1bWVudHMgaW4gSVR5cGVJbmZvOjpJbnZva2UuCgoyMDA0LTA4LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQnV0dG9uIHNob3VsZCBkbyBSZWxlYXNlQ2FwdHVyZSgpIG9uIFdNX0tJTExGT0NVUyBpZiBpdCdzIGluIGEgcHJlc3NlZAoJc3RhdGUuCglBZGQgYSBjb21wcmVoZW5zaXZlIHRlc3QgY2FzZSBmb3IgY2FwdHVyZSBiZWhhdmlvdXIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglCdXR0b24gc2hvdWxkIHNlbmQgQk1fU0VUU1RBVEUgbWVzc2FnZSBhZnRlciBpdCBoYXMgY2hhbmdlZCBpdHMKCWludGVybmFsIHN0YXRlLgoKCSogZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveGZvbnQuYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgdG9vbHMvd2luZS5pbmY6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRGVwcmVjYXRlIHRoZSAiUmVzb2x1dGlvbiIgZW50cnkgaW4gdGhlIGNvbmZpZyBmaWxlIGluIGZhdm91ciBvZgoJSEtFWV9DVVJSTkVUX0NPTkZJR1xTb2Z0d2FyZVxGb250c1xMb2dQaXhlbHMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRnJlZVR5cGUgZG9lc24ndCBzdXBwbHkgYSBjaGFybWFwIGZvciBiaXRtYXAgZm9udHMsIHNvIHdlIG11c3QgZG8gb3VyCglvd24gbWFwcGluZy4gIFRoYW5rcyB0byBEbWl0cnkgZm9yIHRlc3RpbmcuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBTeXN0ZW0gdG8gTVMgU2hlbGwgRGxnLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGZ1bGwgbmFtZSBvZiBIS0VZX0NVUlJFTlRfQ09ORklHLgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHVzZSBmcmVlZCBtZW1vcnkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgaW1hZ2UgbGlzdCB0ZXN0cyB0byBjb21waWxlIGFuZCBydW4gb24gb2xkIHBsYXRmb3Jtcy4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgZGVidWdnZXIgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IG1zZyB0ZXN0IGZhaWx1cmVzIHdoZW4gcnVuIHVuZGVyIHdpbjJrLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgZGlhbG9nIHRlbXBsYXRlcyBpbiB0aGUgcHJvcHNoZWV0Cgljb250cm9sLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IEV2YW4gRGVhdWJsIDx3aW5lQHdhcnBlZHZpZXcuY29tPgoJRml4IGFuIEVSUiBsb2cgaW4gWDExRFJWX0NyZWF0ZVdpbmRvdy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUcnkgdG8gYXZvaWQgbG9hZGluZyAxNi1iaXQgRExMcyBpbnRvIG1lbW9yeSBmb3IgYWNjZXNzaW5nIHZlcnNpb24KCWluZm8sIHRoaXMgbWlnaHQgbGVhZCB0byB1bmRlc2lyZWQgc2lkZSBlZmZlY3RzIGxpa2UgbG9hZGluZyBhIGJ1bmNoCglvZiBvdGhlciAxNi1iaXQgRExMcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJU3RhcnRTZXJ2aWNlIG11c3QgcGFzcyBmdWxsIGNvbW1hbmQgbGluZSB0byBzZXJ2aWNlIHByb2dyYW0uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglBZGRlZCBzb21lIHRlc3RzIGZvciBwYWludCBtZXNzYWdlcyBhbmQgdXBkYXRlIHJlZ2lvbnMuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgd2luZG93cy9wYWludGluZy5jOgoJR2V0VXBkYXRlUmduIHNob3VsZCBjbGlwIHRoZSByZXR1cm5lZCByZWdpb24gdG8gdGhlIGNsaWVudCBhcmVhLgoJQ2hhbmdlZCBHZXRVcGRhdGVSZWN0IGFuZCBFeGNsdWRlVXBkYXRlUmduIHRvIGNhbGwgR2V0VXBkYXRlUmduLgoJTW92ZWQgdGhlc2UgMyBmdW5jdGlvbnMgdG8gZGxscy91c2VyL3BhaW50aW5nLmMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBQcmludCB0aGUgV2luZG93IGNhcHRpb24gdXNpbmcgVW5pY29kZSBjYWxscy4KCURvbid0IHNlbmQgV01fR0VUVEVYVCB0byByZXRyaWV2ZSB0aGUgY2FwdGlvbiB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9zdWJjbGFzcy5jLCBkbGxzL21zdmNydC90ZXN0cy90aW1lLmMsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jLCBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBtaXNzaW5nIGxpbmUgYnJlYWsuCgoJKiBkbGxzL250ZGxsL250LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEb24ndCBjbGVhciB0aGUgaW5mb3JtYXRpb24gc3RydWN0dXJlIGZvciBub24gc3VwcG9ydGVkIGNhc2VzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglFdmFuIERlYXVibCA8d2luZUB3YXJwZWR2aWV3LmNvbT4KCUFkZGVkIEdldFNlY3VyaXR5SW5mbyBzdHViLgoKCSogZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgZGlnaXRzIGFyZSBwcmludGFibGUgY2hhcmFjdGVycyBmcm9tIG9sZWF1dDMyIEZvcm1hdCBjb21tYW5kLgoKMjAwNC0wOC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUFsbG93IGVuYWJsaW5nIG9yIGRpc2FibGluZyB0b2RvX3dpbmUgZm9yIGVhY2ggbWVzc2FnZSBzZXF1ZW5jZSBzbwoJdGhhdCB3ZSBjYW4gcHJvcGVybHkgdGVzdCB0aGUgc2VxdWVuY2VzIHRoYXQgYXJlIGFscmVhZHkgY29ycmVjdC4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIG1lc3NhZ2UgYm94IHRvIGluZm9ybSB1c2VyIHRoYXQgb25lIG5lZWRzIE1vemlsbGEgQWN0aXZlWC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLAoJICBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIEdldFdpbmRvd0xvbmcgYnkgR2V0V2luZG93TG9uZ1B0ci4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9kaXN0aW5jdC5jLCBkbGxzL21zaS9pbnNlcnQuYywKCSAgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvdXBkYXRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRnJlZSBtZW1vcnkgYWZ0ZXIgd2UgZmluaXNoIHVzaW5nIGl0IGluc3RlYWQgb2YganVzdCBiZWZvcmUuCgoJKiBkbGxzL2dkaS9nZGlvYmouYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIERFRkFVTFRfR1VJX0ZPTlQgc2NhbGFibGUgd2l0aCBzY3JlZW4gcmVzb2x1dGlvbiBhbmQgbGV0IGl0CgliZSA4cHQgTVMgU2hlbGwgRGxnIGZvciBzaW1wbGUgc2NyaXB0cy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gb2J2aW91cyB0eXBvIGxlYWRpbmcgdG8gYSBjcmFzaC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBTZXRUb2tlbkluZm9ybWF0aW9uIGNhbGwgTnRTZXRJbmZvcm1hdGlvblRva2VuLgoKCSogZGxscy9pY2N2aWQvaWNjdmlkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpZ25lZCBjb21wYXJlIGZpeGVzLgoKCSogZGxscy9pdHNzL2NobV9saWIuYywgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL2l0c3N0b3IuaCwKCSAgZGxscy9pdHNzL21vbmlrZXIuYywgZGxscy9pdHNzL3N0b3JhZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgSVRTIG1vbmlrZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWw6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGUgY3ZzIGNvbW1hbmQgbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFNlbmQgTk1fTERPV04gbm90aWZpY2F0aW9uLgoJLSBOTV9SREJMQ0xLIG9ubHkgbmVlZHMgdG8gc2VuZCBhIE5NSERSIHN0cnVjdHVyZS4KCS0gT24gbW91c2Ugbm90aWZpY2F0aW9ucyByZXR1cm5pbmcgMCBEZWZXbmRQcm9jIHNob3VsZCBiZSBjYWxsZWQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUJyaW5nIGNvbW1vbiBjb250cm9sIGhlYWRlciB1cCB0byBkYXRlIHdpdGggbmV3IGFkZGl0aW9ucyBpbiBYUC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIDMyIGJpdCBmbG9hdCBzdXBwb3J0LgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEaXJlY3RTb3VuZDggZG9lc24ndCBhY2NlcHQgM0Qgc3RlcmVvIHNlY29uZGFyeSBidWZmZXJzIGJ1dAoJRGlyZWN0U291bmQgZG9lcy4KCUFkZGVkIHRlc3RzLgoKCSogaW5jbHVkZS9rc21lZGlhLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBJRUVFIGZsb2F0IGF1ZGlvIGRhdGEgdHlwZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJRG8gbm90IGFzc3VtZSBIS0VZX0NVUlJFTlRfVVNFUi9FbnZpcm9ubWVudCBleGlzdHMgPT0+IGNvbmZpZyBmaWxlIHdhcwoJbWlncmF0ZWQuIEluc3RlYWQgdGVzdCBmb3IgZXZlcnkga2V5IHRvIG1pZ3JhdGUgdW5kZXIKCUhLRVlfQ1VSUkVOVF9VU0VSL0Vudmlyb25tZW50LgoKCSogZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglFbmFibGUgdGhlIGRpc2FibGVkIHRlc3RzIGluIHRlc3RzLmRhdGEgb3IgYWRkIGEgY29tbWVudCBkZXNjcmliaW5nCgl3aHkgdGhlIHR5cGUgY2Fubm90IGJlIHRlc3RlZC4KCVVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLCB0aGV5IGNvbXBpbGUgYW5kIHJ1biBzdWNjZXNzZnVsbHkgYm90aCBvbgoJV2luZG93cyAod2l0aCB0aGUgV2luZG93cyBoZWFkZXJzKSBhbmQgaW4gV2luZS4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggaGFuZGxpbmcgb2YgVkFSSUFOVCB3aXRoIFZUX0JZUkVGIGFuZCBudWxsIHBvaW50ZXIgaW4KCVZhcmlhbnRDaGFuZ2VUeXBlRXguCgoyMDA0LTA4LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaXRzcy8uY3ZzaWdub3JlLAoJICBkbGxzL2l0c3MvTWFrZWZpbGUuaW4sIGRsbHMvaXRzcy9jaG1fbGliLmMsIGRsbHMvaXRzcy9jaG1fbGliLmgsCgkgIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9pdHNzLmgsIGRsbHMvaXRzcy9pdHNzLmlkbCwKCSAgZGxscy9pdHNzL2l0c3Muc3BlYywgZGxscy9pdHNzL2x6eC5jLCBkbGxzL2l0c3MvbHp4LmgsCgkgIGRsbHMvaXRzcy9tb25pa2VyLmMsIGRsbHMvaXRzcy9zdG9yYWdlLmM6CglTdGV3YXJ0IENhaWU8a3l6QHVrbGludXgubmV0PgoJSmVkIFdpbmcgPGplZHdpbkB1Z2NzLmNhbHRlY2guZWR1PgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gaW1wbGVtZW5hdGlvbiBvZiBJVFNTLkRMTC4KCgkqIGRsbHMvbXNpL3JlY29yZC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJR2V0dGluZyB0aGUgc3RyaW5nIGZvciBhIG51bGwgZmllbGQgc2hvdWxkIG5vdCBjcmVhdGUgYW4gZXJyb3IuIEFkZCBhCgltaXNzaW5nIGJyZWFrLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhbGlnbm1lbnQgaXNzdWVzIGZvciBNRU1PUllTVEFUVVNFWCwgV0lOMzJfU1RSRUFNX0lEIGFuZAoJSU9fQ09VTlRFUlMuIFRoZSBjb3JyZXNwb25kaW5nIHRlc3RzIG5vdyBzdWNjZWVkIGJvdGggd2hlbiBjb21waWxlZAoJd2l0aCB0aGUgV2luZG93cyBoZWFkZXJzIGFuZCB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIFdpbmUgaGVhZGVycy4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVdoZW4gdGhlcmUgYXJlIG5vIHBpeGVscyB0byBzY3JvbGwsIFNjcm9sbFdpbmRvd0V4IG11c3Qgc3RpbGwgc2Nyb2xsCgljaGlsZHJlbiBhbmQgdXBkYXRlIHRoZSBocmduVXBkYXRlIGFuZCByY1VwZGF0ZSBhcmd1bWVudHMuCgoJKiBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElEaXJlY3REcmF3Q2xpcHBlcl9HZXRDbGlwTGlzdCBmb3IgY2FzZSB3aGVyZSB3ZSBoYXZlIGEKCWhhbmRsZSB0byBhIHdpbmRvdy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJSW4gR2V0REMgdXNlIHRoZSBwYXJlbnQgZHJhd2FibGUgd2hlbiBEQ1hfUEFSRU5UQ0xJUCBpcyBzZXQuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgY3lyaWxsaWMgZ2x5cGhzIHRvIHdpbmVfc2Fuc19zZXJpZiBhdCAxMyBhbmQgMTYgcGl4ZWwgc2l6ZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2V0UHJvY2Vzc0lkLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgc2FmZSBhcnJheSB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0cyBmb3IgaWNvbiBhbmQgYml0bWFwIGFkZGluZyBhbmQgcmVtb3ZpbmcgYW5kIGJpdG1hcCBkcmF3aW5nIHdpdGgKCWltYWdlIGxpc3RzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWdyZXNzaW9uIHdpdGggSUUncyBNZW51IEJhci4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Dcy5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0RlLnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRW4ucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fcy5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0ZyLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfSXQucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9ObC5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX1B0LnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfUnUucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9TaS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfQ24ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0NzLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0VzLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Gci5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfSXQucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0tvLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9ObC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUGwucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1B0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9SdS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1RoLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Vay5yYywgZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVGgucmMsIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Dcy5yYywgZGxscy9vbGVkbGcvb2xlZGxnX0RlLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfRW4ucmMsIGRsbHMvb2xlZGxnL29sZWRsZ19Fcy5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0l0LnJjLCBkbGxzL29sZWRsZy9vbGVkbGdfTmwucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19QdC5yYywgZGxscy9zZXJpYWx1aS9Dcy5yYywgZGxscy9zZXJpYWx1aS9EZS5yYywKCSAgZGxscy9zZXJpYWx1aS9Fbi5yYywgZGxscy9zZXJpYWx1aS9Fcy5yYywgZGxscy9zZXJpYWx1aS9Gci5yYywKCSAgZGxscy9zZXJpYWx1aS9JdC5yYywgZGxscy9zZXJpYWx1aS9ObC5yYywgZGxscy9zZXJpYWx1aS9QdC5yYywKCSAgZGxscy9zZXJpYWx1aS9SdS5yYywgZGxscy9zZXR1cGFwaS9Dcy5yYywgZGxscy9zZXR1cGFwaS9EZS5yYywKCSAgZGxscy9zZXR1cGFwaS9Fbi5yYywgZGxscy9zZXR1cGFwaS9Fcy5yYywgZGxscy9zZXR1cGFwaS9Gci5yYywKCSAgZGxscy9zZXR1cGFwaS9JdC5yYywgZGxscy9zZXR1cGFwaS9ObC5yYywgZGxscy9zZXR1cGFwaS9QdC5yYywKCSAgZGxscy9zZXR1cGFwaS9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW8ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0tvLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmMsCgkgIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYywgZGxscy93aW5lcHMvd3BzX0NzLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfRGUucmMsIGRsbHMvd2luZXBzL3dwc19Fbi5yYywgZGxscy93aW5lcHMvd3BzX0VzLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfRnIucmMsIGRsbHMvd2luZXBzL3dwc19JdC5yYywgZGxscy93aW5lcHMvd3BzX0tvLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfTmwucmMsIGRsbHMvd2luZXBzL3dwc19QdC5yYywgZGxscy93aW5lcHMvd3BzX1J1LnJjLAoJICBkbGxzL3dpbmVwcy93cHNfU2kucmMsIGRsbHMvd2luZXBzL3dwc19Tay5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfQ3MucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X0RlLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Fbi5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfRXMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0ZyLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9JdC5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfTmwucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X1B0LnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9SdS5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfU2kucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0RlLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9Fbi5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvRXMucmMsIHByb2dyYW1zL2NtZGxndHN0L0ZyLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9JdC5yYywgcHJvZ3JhbXMvY21kbGd0c3QvTmwucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L1B0LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9SdS5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvU2kucmMsIHByb2dyYW1zL25vdGVwYWQvRGEucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRGUucmMsIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvRmkucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRnIucmMsIHByb2dyYW1zL25vdGVwYWQvSHUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvSXQucmMsIHByb2dyYW1zL25vdGVwYWQvTmwucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUGwucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUnUucmMsIHByb2dyYW1zL25vdGVwYWQvU2kucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU2sucmMsIHByb2dyYW1zL25vdGVwYWQvU3cucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvVGgucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvWmgucmMsIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvU2kucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfTmwucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfWmgucmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGRpYWxvZ3MgdG8gdXNlIE1TIFNoZWxsIERsZyByYXRoZXIgdGhhbiBIZWx2IG9yIE1TIFNhbnMgU2VyaWYuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVdoZW4gcG9zc2libGUsIHVzZSB0aGUgWCB3aW5kb3cgb2YgdGhlIHJlcXVlc3RlZCB3aW5kb3cgaW4gR2V0REMKCWluc3RlYWQgb2YgdGhlIHBhcmVudCB0byBhdm9pZCB0cm91YmxlIHdpdGggT3BlbkdMIGNsaXBwaW5nLgoKCSogZGxscy9tYWtlX2RsbHM6IFJlbW92ZWQgZGVidWcgdHJhY2UuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXZpZGVjLmMsCgkgIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBWaWRlbyBSZW5kZXJlciAoYmFzZWQgb24gRGlyZWN0IERyYXcpLgoJQWRkZWQgRGlyZWN0IFNvdW5kIEF1ZGlvIFJlbmRlcmVyLgoJQWRkZWQgQVZJIERlY29tcHJlc3NvciAoVkZXIGRlY29tcHJlc3NvcnMgd3JhcHBlcikuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZGVkIHNpZ25hbCBzdXBwb3J0IGZvciBEYXJ3aW4vaTM4Ni4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBXU19FWF9DT05UUk9MUEFSRU5UIHdoZW4gZGlhbG9nIGhhcyBEU19DT05UUk9MLgoKMjAwNC0wOC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9hbXN0cmVhbS9tYWluLmMsCgkgIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsCgkgIGRsbHMvY29tY2F0L21hbmFnZXIuYywgZGxscy9jb21jYXQvcmVnaXN0ZXIuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L2RldmljZS5jLAoJICBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZDNkOS9xdWVyeS5jLCBkbGxzL2QzZDkvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3N3YXBjaGFpbi5jLAoJICBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvZDNkOS92b2x1bWUuYywgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZ2FtbWEuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9mYWN0b3J5LmMsIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywKCSAgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL2RtYmFuZC9iYW5kLmMsCgkgIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywgZGxscy9kbWltZS9hdWRpb3BhdGguYywKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLAoJICBkbGxzL2RtbG9hZGVyL2NsYXNzZmFjdG9yeS5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RtdXNpYy9idWZmZXIuYywKCSAgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG93bmxvYWQuYywKCSAgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0LmMsIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsCgkgIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2RwbmV0L2NsaWVudC5jLCBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywKCSAgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywKCSAgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2dpdC5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLAoJICBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLCBkbGxzL3F1YXJ0ei9lbnVtZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZW51bXBpbnMuYywgZGxscy9xdWFydHovZW51bXJlZ2ZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgaW5jbHVkZS9vYmpiYXNlLmg6CglHZXQgcmlkIG9mIHRoZSBubyBsb25nZXIgdXNlZCBJQ09NX01TVlRBQkxFX0NPTVBBVF9EdW1teVJUVElWQUxVRQoJbWFjcm8uCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSBSVExfQklUTUFQIGFuZCBSVExfQklUTUFQX1JVTiB0byBtYXRjaCB0aGUgMjAwMCBEREsuCglPbmx5IHRlc3QgdGhlIFJ0bHtJbml0aWFsaXplLFNldEFsbCxDbGVhckFsbH1CaXRzIG1hY3JvcyBpZiB0aGV5IGFyZQoJZGVmaW5lZC4KCgkqIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwgZGxscy9oaGN0cmwub2N4L2hoY3RybC5vY3guc3BlYywKCSAgZGxscy9oaGN0cmwub2N4L3JlZ3N2ci5jLCB0b29scy93aW5lLmluZjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgZW1wdHkgRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmg6CglUb2JpYXMgQnVybnVzIDxidXJudXNAZ214LmRlPgoJLSBMaW1pdCBudW1iZXIgb2YgRklYTUUoKXMgaW4gQ2xpcHBlcl9TZXRDbGlwTGlzdCBhbmQgZG9jdW1lbnQKCSAgZnVuY3Rpb24uCgktIERvY3VtZW50IENsaXBwZXJfR2V0Q2xpcExpc3QuCgoJKiBkbGxzL29sZTMyL2Rjb20uaCwgaW5jbHVkZS9hY3RpdnNjcC5oLCBpbmNsdWRlL2Ftc3RyZWFtLmgsCgkgIGluY2x1ZGUvYW12aWRlby5oLCBpbmNsdWRlL2F1c3RyZWFtLmgsIGluY2x1ZGUvY29tY2F0LmgsCgkgIGluY2x1ZGUvZGRzdHJlYW0uaCwgaW5jbHVkZS9kaXNwZXguaCwgaW5jbHVkZS9kb2NvYmouaCwKCSAgaW5jbHVkZS9leGRpc3AuaCwgaW5jbHVkZS9tbGFuZy5oLCBpbmNsdWRlL21tc3RyZWFtLmgsCgkgIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsCgkgIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9wc3RvcmUuaCwKCSAgaW5jbHVkZS9ycGNwcm94eS5oLCBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc2hsZGlzcC5oLAoJICBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc3RybWlmLmgsCgkgIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvdW5rbnduLmlkbCwgaW5jbHVkZS91cmxtb24uaCwKCSAgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCUdldCByaWQgb2YgdGhlIElDT01fTVNWVEFCTEVfQ09NUEFUIHN1cHBvcnQsIGcrKyBubyBsb25nZXIgcmVxdWlyZXMKCXRoaXMuCgoJKiBzZXJ2ZXIvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBjbGlwYm9hcmQgb3duZXIgY2FuIGJlIHNldCBieSB0aGUgdGhyZWFkIHRoYXQgaGFzIHRoZSBjbGlwYm9hcmQKCW9wZW4uCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgdGhlIGN1cnJlbnQgc291cmNlIGRpcmVjdG9yeSBhbmQgdXNlIGl0IHdoZW4gZW5jb3VudGVyaW5nIGEKCXJlbGF0aXZlIGluY2x1ZGUgc28gdGhhdCB0aGUgZnVsbCBwYXRoIHRvIGl0IGlzIHN0b3JlZCBpbnN0ZWFkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIGV4ZVBhdGggY29udGFpbnMgdGhlIHBhdGggc2luY2UgaXQgaXMgdXNlZCBsYXRlciBpbiB0aGUKCWZ1bmN0aW9uIGFzIHdlbGwuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFbnVtZXJhdGUgYWxsIGF2YWlsYWJsZSBzY3JpcHRzIGluIElNdWx0aUxhbmd1YWdlMl9FbnVtU2NyaXB0cywgYWRkCglmaXhlZC9wcm9wb3J0aW9uYWwgZm9udCBuYW1lcyBpbnRvIG1sYW5nIGRhdGFiYXNlLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHZXRDUEluZm8oRXgpIHNob3VsZCB3b3JrIG9uIENQX1VURjcvQ1BfVVRGOCBwc2V1ZG8gY29kZSBwYWdlcywgYXMKCUlzVmFsaWRDb2RlUGFnZSBkb2VzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRqdXN0IHRoZSB0YWIgY29udGVudHMgdG8gZml4IHRoZSBwcm9wc2hlZXQgYmV0d2VlbiBQU01fS0lMTEFDVElWRQoJYW5kIFBTTV9TRVRBQ1RJVkUuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9ubHkgcHJpbnQgZm9ybWF0IGluZm8gd2hlbiBpbiBpbnRlcmFjdGl2ZSBtb2RlIGZvciBjYXB0dXJlIHRlc3QuCglDbGVhbnVwIGVycm9yIGFuZCBpbmZvIG1lc3NnZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgTERUX0VOVFJZIHRvIHdpbm50LmguCgoyMDA0LTA4LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCBicmVha3BvaW50IGVuYWJsZWQvZGlzYWJsZWQgc3RhdGUgbWFuYWdlbWVudAoJLSBmaXhlZCByZWN1cnNpb24gaW4gdHlwZSBwcmludGluZwoJLSBub3cgYWxsIHR5cGUtaWQgYXJlIHN0b3JlZCB3aXRoIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIG1vZHVsZSB3aGljaAoJICBkZWZpbmVzIHRoZSB0eXBlIChzdHJ1Y3QgZGJnX3R5cGUgdGFrZXMgY2FyZSBvZiB0aGlzIHBhaXJpbmcpCgktIGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gZGlzcGxheSBoYW5kbGluZwoJLSBmaXhlZCBzdHJpbmdzIHByaW50IGFuZCBleGFtaW5hdGlvbgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9kY29tLmgsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW46CglBZGRlZCByZWN1cnNpdmUgaWRsIHRhcmdldCB0byBhbGxvdyB1cGRhdGluZyBpZGwgZmlsZXMgcHJpdmF0ZSB0byBhCglkbGwuCgoJKiBpbmNsdWRlL3Vua253bi5oLCB0b29scy93aWRsL2hlYWRlci5jOgoJT3V0cHV0IEJFR0lOL0VORF9JTlRFUkZBQ0UgZm9yIEMrKyBiYXNlIGNsYXNzZXMgdG9vLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9zdWJjbGFzcy5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglNYWtlIFNldFdpbmRvd1N1YmNsYXNzIGJlaGF2ZSB3aXRoIFNldFdpbmRvd0xvbmcgc3ViY2xhc3Nlcy4KCUFsbG93IHVubGltaXRlZCBudW1iZXIgb2Ygc3ViY2xhc3Nlcy4KCUNvcnJlY3QgaXNzdWUgd2hlbiBTZW5kTWVzc2FnZSBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYSBzdWJjbGFzcyBwcm9jLgoJQWRkIHJlZ3Jlc3Npb24gdGVzdC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvd2lubnQuaCwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIEZQT19EQVRBIGFuZCBJTUFHRV9MT0FEX0NPTkZJR19ESVJFQ1RPUlkgdG8gbWF0Y2ggdGhlIGxhdGVzdAoJcGxhdGZvcm0gU0RLLiBUaGlzIGhlbHBzIGNvbXBpbGUgdGhlIG50ZGxsIHRlc3RzIG9uIFdpbmRvd3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlZCBkZWNsYXJhdGlvbnMgZnJvbSB1bmRvY3NoZWxsLmggdG8gc2hsb2JqLmggdG8gbWF0Y2ggdGhlIGxhdGVzdAoJcGxhdGZvcm0gU0RLLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBtaXhlcnMuCglHZXQgbWl4ZXIgbmFtZSBmcm9tIE9TUy4KCU1vcmUgdHJhY2luZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglZIGNvb3JkaW5hdGUgb2YgdGhlICJtYWdpYyIgc3RhdGljIGNvbnRyb2wgc2hvdWxkIGJlIHRyZWF0ZWQKCWluY2x1c2l2ZWx5LgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtYmFuZC9kbXV0aWxzLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9kbXV0aWxzLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLCBkbGxzL2Rtc3R5bGUvZG11dGlscy5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljMzIvZG11c2ljMzJfbWFpbi5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZWF1dDMyL2hhc2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS91bmtud24uaWRsLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmg6CglEb24ndCBkZWZpbmUgQkVHSU5fSU5URVJGQUNFIGluIHVua253bi5oLgoKCSogaW5jbHVkZS9hY3RpdnNjcC5oLCBpbmNsdWRlL2Ftc3RyZWFtLmgsIGluY2x1ZGUvYW12aWRlby5oLAoJICBpbmNsdWRlL2F1c3RyZWFtLmgsIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvZGRzdHJlYW0uaCwKCSAgaW5jbHVkZS9kaXNwZXguaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9leGRpc3AuaCwKCSAgaW5jbHVkZS9tbGFuZy5oLCBpbmNsdWRlL21tc3RyZWFtLmgsIGluY2x1ZGUvb2FpZGwuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZWlkbC5oLAoJICBpbmNsdWRlL3BzdG9yZS5oLCBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc2hsZGlzcC5oLAoJICBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdW5rbnduLmlkbCwgaW5jbHVkZS91cmxtb24uaCwgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYXRlIEJFR0lOX0lOVEVSRkFDRSxFTkRfSU5URVJGQUNFIG1hY3JvcyBpbnN0ZWFkIG9mCglJQ09NX01TVlRBQkxFX0NPTVBBVF9GSUVMRFMuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubnQuaCwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHRoZXNlIFdpbmUtb25seSB0eXBlczoKCSAgRW51bUlDTVByb2ZpbGVzUHJvY0NhbGxiYWNrCgkgIFBFWENFUFRJT05fUkVHSVNUUkFUSU9OX1JFQ09SRAoJRG9uJ3QgdGVzdCB0aGVzZSBXaW5lLW9ubHkgdHlwZXM6CgkgIEVNUlNFVFRFWFRKVVNUSUZJQ0FUSU9OCgkgIEVYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVDT1JECglSZW1vdmUgRVhDRVBUSU9OX0ZSQU1FLCBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYnVnIGluIHZvbHVtZSBjb250cm9sIHN0ZXAgc2l6ZSBzbyB0aGF0IGl0IGFjdHVhbGx5IHdvcmtzLgoJQWRkZWQgYWRkaXRpb25hbCBkZWJ1ZyB0cmFjaW5nLgoJQ29kZSBjbGVhbnVwLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURFQ0xBUkVfT0xEX0hBTkRMRSBpcyBub3QgdXNlZCBhbnltb3JlLgoKCSogdG9vbHMvc2ZudDJmbnQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUluY2x1ZGUgPHN0ZGxpYi5oPiBmb3IgYSBwcm90b3R5cGUgb2YgZXhpdCgpLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9ObC5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkZWQgRHV0Y2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJVGVzdCBjYXNlIGZvciBob3RzcG90IGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gRml4IGhvdHNwb3QgaGFuZGxpbmcKCS0gUmVtb3ZlIHVudXNlZCBmbGFnIGZyb20gdGhlIEludGVybmFsRHJhZyBzdHJ1Y3QuCgoyMDA0LTA4LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBpbmNsdWRlL21tZGRrLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHdpbmUgc3BlY2lmaWMgRFJWX1FVRVJZRFNPVU5ER1VJRCBtZXNzYWdlIGFuZCBjYWxjdWxhdGUgaXQgaW4KCWRzb3VuZC5kbGwgKGxpa2UgaW4gMmsveHApLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIGZvciBJUGVyc2lzdFByb3BlcnR5QmFnX0xvYWQgb24gT0xFRm9udCAoYmFzZWQgb24KCWEgcGF0Y2ggYnkgQWxleCBWaWxsYWPtcyBMYXNzbykuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVbmljb2RpZnkgYSBsb2FkIG9mIHN0cmluZ3MuCgoJKiBkbGxzL2dkaS9icnVzaC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmV0dXJuIGEgc3RvY2sgYnJ1c2ggd2hlbiBhc2tpbmcgZm9yIGEgYnJ1c2ggd2l0aCB0aGUgc2FtZQoJY2hhcmFjdGVyaXN0aWNzLCBhcyBwZXIgbmF0aXZlLiBEb2N1bWVudCB0aGUgYnJ1c2ggZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3NobG9iai5oLAoJICB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHBhY2tpbmcgYnVnIGluIHNobG9iai5oLgoJRml4IHRoZSBkZWNsYXJhdGlvbiBvZiBiaXRmaWVsZHMgc28gdGhlaXIgbGF5b3V0IG1hdGNoZXMgd2hhdCBNU1ZDCglnZW5lcmF0ZXMuCglNb2RpZnkgd2luYXBpX3Rlc3QgdG8gY29tcHV0ZSB0aGUgYml0ZmllbGRzIHNpemUvYWxpZ25tZW50IGxpa2UgTVNWQwoJZG9lcy4KCVVwZGF0ZSB0aGUgaW1wYWN0ZWQgZ2VuZXJhdGVkLmMgZmlsZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbiBJUGVyc2lzdEZpbGVfU2F2ZSBpZiB0aGUgZXhlIGZpbGUgaXMgbm90IGZvdW5kLCB0cnVzdCB0aGUgcGF0aCB3ZQoJYXJlIGdpdmVuIGFuZCBhbGxvdyBjcmVhdGlvbiBvZiB0aGUgbGluay4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIElucHV0IHBhdGggY2FuIGhhdmUgdHJhaWxpbmcgc2xhc2guCgktIEltcHJvdmUgc29tZSBkZWJ1Z2dpbmcgbWVzc2FnZXMuCgoJKiBkbGxzL2dkaS9jbGlwcGluZy5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggdHlwZSBpbiBHZXRSYW5kb21SZWdpb24gZnVuY3Rpb24uCgktIEFkZCBwcm90b3R5cGUgdG8gaGVhZGVyLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUVuYWJsZSBFUlJPUl9NT1JFX0RBVEEgdG8gYmUgc2V0IGluIENyeXB0R2V0RGVmYXVsdFByb3ZpZGVyLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBDcnlwdFNldFByb3ZpZGVyRXguCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIGEgZmV3IG1vcmUgTmF0aXZlIEFQSSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZSBzdGVwIHNpemUgZnJvbSAwIHRvIDEgZm9yIHZvbHVtZSBjb250cm9scyB0byBzdG9wIGRpdmlkZSBieQoJemVybyBpbiBhcHAuCglDaGFuZ2UgZGVidWcgY2hhbm5lbCB0byBtaXhlci4KCUFkZCBtb3JlIHRyYWNpbmcgYW5kIGVycm9ycy4KCjIwMDQtMDgtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdHlwZXMgdGhhdCBkb24ndCBleGlzdCBmcm9tIHRlc3RzLmRhdC4KCURvbid0IHRlc3QgdHlwZXMgdGhhdCBoYXZlIGEgcGxhdGZvcm0gZGVwZW5kZW50IGxheW91dC4KCURvbid0IHRlc3QgV2luZS1vbmx5IHR5cGVzLgoJSGVscHMgZ2V0IHRoZSBnZW5lcmF0ZWQgdGVzdHMgY29tcGlsaW5nIG9uIFdpbmRvd3MuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglSZWYgY291bnRpbmcgZml4ZXMuCgoJKiBmb250cy9nZW50dGYuZmY6IEdlbmVyYXRlIHRoZSAudHRmIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHBhY2tpbmcgb2Ygc2hsd2FwaS5oCglBZGQgYSBERUNMU1BFQ19BTElHTig4KSB0byBmb3JjZSBETExWRVJTSU9OSU5GTzIgdG8gaGF2ZSB0aGUgY29ycmVjdAoJYWxpZ25tZW50LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgaW5zZXJ0IG1hcmtzLgoJLSBSZWFycmFuZ2UgVE9PTEJBUl9JTkZPLgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggdHlwZSBvZiBEZWxldGVJRTNDYWNoZSBmdW5jdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIDI0LzMyIGJpdCBzYW1wbGUgc2l6ZSBhbmQgNC82IGNoYW5uZWwgc3VwcG9ydC4KCUFkZGVkIGRzb3VuZCBjYXB0dXJlIHdpbmUgc3BlY2lmaWMgbWVzc2FnZSBzdXBwb3J0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYW1zdHJlYW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdHJtaWlkcy8uY3ZzaWdub3JlLCBkbGxzL3N0cm1paWRzL01ha2VmaWxlLmluLAoJICBkbGxzL3N0cm1paWRzL3N0cm1paWRzLmMsIGRsbHMvdXVpZC91dWlkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkICdzdHJtaWlkcy5saWInLgoJTW92ZWQgQ0xTSURfRmlsdGVyR3JhcGggYW5kIHRoZSByZWxhdGVkIEdVSURzIHRvIHN0cm1paWRzLgoKCSogZGxscy9xdWFydHovdGVzdHMvZmlsdGVyZ3JhcGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWZpbmUgQ09CSk1BQ1JPUy4gRml4ZXMgY29tcGlsYXRpb24gb24gV2luZG93cy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbmV3IGZpZWxkcyB0byB0aGUgTk9USUZZSUNPTkRBVEEgc3RydWN0dXJlIHNvIGl0IG1hdGNoZXMgdGhlCglsYXRlc3QgcGxhdGZvcm0gU0RLLgoJVXBkYXRlIHNoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMuIEl0IG5vdyB3b3JrcyB3aGVuIGNvbXBpbGVkIHdpdGggdGhlCglXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFyIHRvb2x0aXAgd2hlbiB0ZXh0IGlzIHNldCB0byBOVUxMLgoJUmVwYWludCB0b29sdGlwIHdoZW4gaXRlbSBpbmZvIGNoYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRm9yd2FyZCBmb2N1cyB0byBjb21ib2JveCwgb3RoZXJ3aXNlIGVkaXQgY29udHJvbCB3b24ndCBnZXQgZm9jdXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglUaGUgcmVjdGFuZ2xlIHBhc3NlZCBpbiBEUkFXSVRFTVNUUlVDVCBpcyBzbGlnaHRseSB0b28gbGFyZ2UgYXMKCWNvbXBhcmVkIHdpdGggV2luZG93cy4KCgkqIGZvbnRzL3dpbmVfc3lzdGVtLnNmZDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBsZXRlIGNwMTI1MiBmb3IgU3lzdGVtLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IGFuY2hvciBoaWdobGlnaHRpbmcuCgktIFJlbW92ZSByZWR1bmRhbnQgdGVzdCBpbiBUT09MQkFSX0RyYXdCdXR0b24uCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIFRSQUNFJ3MgZm9yIHNvbWUgSW50ZXJuZXQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggQnVpbGRUcnVzdGVlV2l0aFNpZCwgaW1wbGVtZW50IGFuZCB0ZXN0IEJ1aWxkVHJ1c3RlZVdpdGhOYW1lLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUNvbnNpc3RlbnRseSBzdWdnZXN0IHByb3BlciBFbXVsYXRpb24gcmF0aGVyIHRoYW4gRW11bGF0ZWQgZm9yCglIYXJkd2FyZUFjY2VsZXJhdGlvbiBpbiBbZHNvdW5kXSBzZWN0aW9uIG9mIGNvbmZpZyBmaWxlLgoKCSogZGxscy9udGRsbC9maWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBFQ09OTlJFU0VUIGluIEZJTEVfR2V0TnRTdGF0dXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBFcnJvcnMgc2hvdWxkIG9ubHkgYmUgcmVwb3J0ZWQgdG8gSS9PIGNvbXBsZXRpb24gcm91dGluZSBhZnRlcgoJICBOdFJlYWRGaWxlIGhhcyBzdWNjZWVkZWQuCgktIFRlc3QgY2FzZSBmb3IgdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L3Bpbi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGluIGZpbGUgcmVhZGVyLgoJLSBVc2UgbmV3IENyZWF0ZVNwZWNpZmljIGZ1bmN0aW9uIGZvciBmaWxlIHJlYWRlciB0aGF0IGRvZXNuJ3QgcXVlcnkKCSAgZm9yIElNZW1JbnB1dFBpbi4KCS0gR2V0IHJpZCBvZiBpbmVmZmljaWVudCB1c2Ugb2YgSU1lbUlucHV0UGluIGluIGdlbmVyYWwgcGluIGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZmlsZS5jLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCS0gVXBkYXRlIGJ1aWxkIHN5c3RlbSB0byBzdXBwb3J0IElPS2l0IGFuZCBDb3JlRm91bmRhdGlvbiBmcmFtZXdvcmtzCgkgIG9uIERhcndpbi4KCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSAtZnJhbWV3b3JrICJuYW1lIiBsaW5rZXIgb3B0aW9uLgoJLSBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlIHNldCBkZXZpY2UgaW5mbyBvbiBEYXJ3aW4uCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIDMyIGJpdCBzYW1wbGUgc2l6ZSB0ZXN0cyBhbmQgNCBhbmQgNiBjaGFubmVsIHRlc3RzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIG1lc3NhZ2VzIGluIHN1cHBvcnRlZEZvcm1hdC4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCB0cnkgdG8gZmluZCBhbHRlcm5hdGUgZm9ybWF0cyBmb3Igbm9uIFBDTSBmb3JtYXRzLgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERlbGV0ZUlFM0NhY2hlLgoKCSogd2luZG93cy9kZWZkbGcuYzogWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglXaGVuIHNlYXJjaGluZyBmb3IgdGhlIERFRlBVU0hCVVRUT04gaW4gYSBkaWFsb2csIHJlY3Vyc2UgaW50byBjaGlsZAoJd2luZG93cyB3aXRoIHRoZSBXU19FWF9DT05UUk9MUEFSRU5UIHN0eWxlIChpZiB0aGV5IGFyZSB2aXNpYmxlIGFuZAoJZW5hYmxlZCkuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IFphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJV1NfVEFCU1RPUCBzaG91bGQgbm90IGJlIGEgZGVmYXVsdCBzdHlsZSBmb3IgR1JPVVBCT1ggY29udHJvbHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU2hvdyB0aGUgcHJvcGVyIG1ha2UgY29tbWFuZCBhdCB0aGUgZW5kIG9mIGNvbmZpZ3VyZS4KCjIwMDQtMDgtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBmb3IgQ1BTZXRLZXlQYXJhbS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3RzIG9mIEdldEFjY2VwdExhbmd1YWdlc0EgZm9yIHdpbjJrIGFuZCB3aW4gWFAuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgdGhlIHVzZXIgdG8gbW92ZSBtYW5hZ2VkIHdpbmRvd3MgYnkgZHJhZ2dpbmcgb24gSFRDQVBUSU9OCglhcmVhcy4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgaGFyZGNvZGUgYzpcd2luZG93cyBwYXRocyBpbiBtc2kuZGxsLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgaGFyZGNvZGUgQzpcd2luZG93c1xzeXN0ZW1cc3RhcnQuZXhlLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJVGhlIGFyZ3YgYXJyYXkgcGFzc2VkIHRvIHRoZSBhcHAgbmVlZHMgdG8gYmUgaW4gdGhlIEFuc2kgY29kZXBhZ2UsIG5vdAoJdGhlIFVuaXggb25lLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggcHJpbnRlciBzZWxlY3Rpb24gaW4gUERfUFJJTlRTRVRVUCB0eXBlIGRpYWxvZ3MuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBPQkpfQ09MT1JTUEFDRSBkZWZpbmUuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRG8gbm90IG1ha2UgYSBkaXJlY3RvcnkgcmVhZC1vbmx5LgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBdm9pZCBjcmFzaGluZyBvbiB1bnN1Y2Nlc3NmdWwgc2VuZC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgbWVzc2FnZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFkZCBkZXRlY3Rpb24gb2YgZ3JhcGhpYyBmaWxlIGhlYWRlciBpbiBwaWN0dXJlIGxvYWQsIHRyZWF0IGl0IGFzCgluby1oZWFkZXIgY2FzZS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFsbG9jYXRlIHdhdmUgZm9ybWF0IHN0cnVjdHVyZSBkeW5hbWljYWxseSBiYXNlZCBvbiBmb3JtYXQuCglSZW1vdmUgZm9ybWF0IGNoZWNrcyB0byBhbGxvdyBkcml2ZXIgdG8gZGVjaWRlIGlmIGZvcm1hdCBzdXBwb3J0ZWQuCglDb2RlIGNsZWFudXBzLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgc29tZSBtb3JlIG1lc3NhZ2VzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTb21lIHNvdW5kIGNhcmRzIGhhdmUgZGlmZmVyZW50IGNhcGFiaWxpdGllcyB3aGVuIGRvaW5nIGZ1bGwgZHVwbGV4IHNvCglhZGQgZHVwbGV4IGNhcHMgYW5kIHJldHVybiB0aGVtIHdoZW4gbmVjZXNzYXJ5LgoJQ2xlYW4gdXAgZXZlbnQgbWVzc2FnZSBwcmludGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQXBwbHkgSElNRVRSSUMgdHJhbnNmb3JtYXRpb24gb24gaWNvbnMsIGp1c3QgbGlrZSBiaXRtYXBzLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW0ucmM6IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvd2luZWRvcy9pbnQxMy5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvZmQuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZkIHR5cGUgaXMgbm8gbG9uZ2VyIHVzZWQsIGdldCByaWQgb2YgaXQuCgoyMDA0LTA4LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS9hc3luYy5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NvY2suYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBiZXR0ZXIgc3VwcG9ydCBmb3Igbm9uLWJsb2NraW5nIENPTU0gYW5kIHNvY2tldCByZWFkL3dyaXRlczoKCSAgKyBhZGRlZCBuZWNlc3Nhcnkgc2VtYW50aWNzIHRvIGZkIGZsYWdzCgkgICsgbm8gbG9uZ2VyIHVzZXMgZmQgdHlwZSAoYnV0IGZkIGZsYWdzKSByZWFkL3dyaXRlIHNlbWFudGljIGJlaGF2aW9yCgktIGZpeGVkIHNvY2tldCBjb2RlIHRvIHVzZSB0aGUgcHJvcGVyIG1hbmlmZXN0IGNvbnN0YW50cwoJLSBmaXhlcyBmb3Iga2VybmVsMzIuR2V0T3ZlcmxhcHBlZFJlc3VsdCB3aXRob3V0IGhFdmVudCBzZXQKCS0gaW4gbnRkbGwuTnR7UmVhZHxXcml0ZX1GaWxlCgkgICsgYWx3YXlzIHJlc2V0IHRoZSBldmVudAoJICArIGFkZGVkIHN1cHBvcnQgZm9yIGxvbmdsb25nIG9mZnNldHMKCSAgKyBiZXR0ZXIgb2JqZWN0IGRpc3Bvc2FsIGluIGVycm9yIGhhbmRsaW5nIGNvZGUgcGF0aHMKCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL2dlbnR0Zi5mZiwKCSAgZm9udHMvd2luZV9jb3VyaWVyLnNmZCwgZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZCwKCSAgZm9udHMvd2luZV9zeXN0ZW0uc2ZkLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvZm50MmZvbi5jLCB0b29scy9zZm50MmZudC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IHN0YWIgYXQgV2luZSB2ZXJzaW9ucyBvZiBDb3VyaWVyLCBTeXN0ZW0gYW5kIE1TIFNhbnMgU2VyaWYKCWZvbnRzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglMZXQgU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXIgaGFuZGxlIHNlcnZpY2VzIG5vdCBzdGFydGVkIGJ5CglTdGFydFNlcnZpY2UuCgoJKiBkbGxzL250ZGxsL250LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBvZiBUb2tlblByaW1hcnlHcm91cC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCUFsbG93IHJlc2l6aW5nIHdpbmRvd3Mgd2l0aG91dCB0aGlja2ZyYW1lIHN0eWxlLgoKCSogZGxscy9tYWtlX2RsbHM6IEFMVE5BTUVTIGhhcyBiZWVuIHJlbW92ZWQsIHVzZSBTUEVDX1NSQ1MxNiBpbnN0ZWFkLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOiBGZXJnYWwgRGFseSA8ZmVyZ2FsQGVzYXRjbGVhci5pZT4KCURvY3VtZW50IGRvc2RldmljZXMvdW5jIG1hcHBpbmcuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgTnRTZXRJbmZvcm1hdGlvblRva2VuLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJlZHJhdyBkaWFsb2cgb24gY2hhbmdpbmcgYmV0d2VlbiBwYWdlcy4KCgkqIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJTmV3ZXIgZGVwZW5kZW50IGxpbnV4IGhlYWRlcnMgaGF2ZSBfX3VzZXIgbm90YXRpb25zLCB3aGljaCB3ZSBuZWVkIHRvCglwcm92aWRlLiBEZWZpbmUgaXQgdG8gYmUgZW1wdHkuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBpbnN0YWxsZWQgZm9udCBsaXN0IHRvIGxpc3QuaC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJZiBwc3pUeXBlTmFtZSBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgdHlwZSBuYW1lIGluCglDcnlwdEVudW1Qcm92aWRlclR5cGVzLCByZXR1cm4gRVJST1JfTU9SRV9EQVRBLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMgaW4gY3J5cHQgdGVzdHMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgZGlyZWN0b3J5IGxpc3QuCgoyMDA0LTA4LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIHRoZSBtbVRhc2sqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJVGhlIGRlc2t0b3AgcHJvY2VzcyBpcyBub3QgYXV0b21hdGljYWxseSByZXN0YXJ0ZWQgdW5kZXIgV2luOTUsIHNvCglzdG9wIGtpbGxpbmcgaXQuCgoJKiBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVRlcm1pbmF0ZSB0ZXN0IGxvb3Agb24gdGhlIGZpcnN0IGVycm9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBsb2cgdm9sdW1lLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUhhbmRsZSBzaGVsbCBsaW5rIGZpbGVzIGNvbnRhaW5lZCBpbiBkb3VibGUgcXVvdGVzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0RmlsZVNlY3VyaXR5IEEtPlcuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCU9LIGJ1dHRvbiBzaG91bGQgYmUgZGVmYXVsdCBpbiBub24td2l6YXJkIHByb3BlcnR5IHNoZWV0cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9xdWFydHovdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCB0ZXN0cyBmb3IgZmlsdGVyZ3JhcGguCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19UaC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVWsucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFVzZSAiTVMgU2hlbGwgRGxnIiBpbiB0aGUgT3BlbiBGaWxlIGRpYWxvZyB0ZW1wbGF0ZXMgYXMgaW4gV2luZG93cwoJLSBSZXNpemUgY2hpbGQgZGlhbG9nIHdoZW4gaXRzIGNvbnRyb2xzIGFyZSBtb3ZlZCByZWxhdGl2ZWx5IHN0YzMyCgkgICJtYWdpYyIgY29udHJvbC4KCgkqIGRsbHMvcnNhYmFzZS9tYWluLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlZ2lzdGVyIFR5cGVOYW1lIHJlZ2lzdHJ5IGtleSB2YWx1ZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXggYWxsb2MgdGVzdCBpbiBDcnlwdEVudW1Qcm92aWRlclR5cGVzVyB0aGF0IGZhaWxlZCBpZiB0aGUgYWxsb2MKCXN1Y2NlZWRlZC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXhlZCBhIGZldyBjcnlwdCB0ZXN0IGJ1Z3MuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHRlc3QgZm9yIFdBVkVGT1JNQVRFWFRFTlNJQkxFIHN1cHBvcnQuCglFcnJvciBtZXNzYWdlIGNsZWFudXAuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIFdBVkVGT1JNQVRFWFRFTlNJQkxFIHN1cHBvcnQuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2tzLmgsIGluY2x1ZGUva3NndWlkLmgsCgkgIGluY2x1ZGUva3NtZWRpYS5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZHMgZW5vdWdoIG9mIGtzLmgsIGtzZ3VpZC5oIGFuZCBrc21lZGlhLmggdG8gc3RhcnQgYWRkaW5nIHN1cHBvcnQKCWZvciBXQVZFRk9STUFURVhURU5TSUJMRS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gYW5kIGRlY2xhcmF0aW9uIGZvciBOdENyZWF0ZU5hbWVkUGlwZUZpbGUuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSU11bHRpTGFuZ3VhZ2UyX0dldENoYXJzZXRJbmZvLCBhZGQgYSB0ZXN0IGNhc2UgZm9yIGl0LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmMsCgkgIGluY2x1ZGUvYWNsYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJhdGlvbiwgaW1wbGVtZW50aW9uIGFuZCB0ZXN0IGZvciBCdWlsZFRydXN0ZWVXaXRoU2lkLgoKCSogZGxscy9xdWFydHovcGluLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwb3RlbnRpYWwgcmFjZSBpbiBJUGluSW1wbF9Db25uZWN0ZWRUby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTWFrZSBzdXJlIHdlIGNoZWNrIGZvciBlZ3JlcCBiZWZvcmUgd2UgdXNlIGl0LgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuaCwgaW5jbHVkZS93aW5kZWYuaCwKCSAgaW5jbHVkZS93aW5nZGkuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1vdmUgc29tZSBPcGVuR0wgZGVmaW5lcyBmcm9tIHRoZSBwcml2YXRlIHdnbC5oIGhlYWRlciB0byB3aGVyZSB0aGV5CgliZWxvbmcuCgoJKiBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBoYW5kbGluZyBvZiAnaWR4MScgKGluZGV4KSBjaHVuay4KCUFkZGVkIGhhbmRsaW5nIG9mICdyZWMgJyBsaXN0IHRoYXQgZW1iZWRzIHN0cmVhbXMgZGF0YS4KCURpc2FibGVkIGNoZWNraW5nIG9mIHRoZSBUV09DQyBvZiBzdHJlYW1zIGRhdGEgY2h1bmsuIEl0IGlzIG5vdAoJcmVsZXZhbnQgaW4gYXZpIGZpbGVzLgoJT25seSByZWxlYXNlIG1lZGlhIHNhbXBsZSB3aGVuIHRoZSBkZWxpdmVyeSB0byB0aGUgZG93bnN0cmVhbSBmaWx0ZXIKCWRvZXMgbm90IHN1Y2NlZWRlZC4KCVNvbWUgY2xlYW4tdXAuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfQ3MucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfQ3MucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9tcHIvbXByLnJjLAoJICBkbGxzL21wci9tcHJfQ3MucmMsIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fQ3MucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9Dcy5yYywgZGxscy9tc3JsZTMyL3JzcmMucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Dcy5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywgZGxscy9zZXJpYWx1aS9Dcy5yYywKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywgZGxscy9zZXR1cGFwaS9Dcy5yYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywgZGxscy93aW5lcHMvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvd3BzX0NzLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfQ3MucmMsIGRsbHMvd2lubW0vd2lubW1fQ3MucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJRGF2aWQgS3JlZGJhIDxrcmVkYmFAaWJvdC5jYXMuY3o+CglBZGRlZCBDemVjaCByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL3Byc2h0LmgsIHdpbmRvd3Mvc3B5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBuZXcgcHJvcHNoZWV0IG1lc3NhZ2VzLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEZWxldGUgYnVmZmVyIGFycmF5IHdoZW4gcmVsZWFzaW5nIGxhc3QgYnVmZmVyLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWxsb3cgcHJvcGVyIHJlbGVhc2Ugd2hpbGUgY2FwdHVyaW5nLgoKCSogZGxscy9udGRsbC9zZWMuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBpbmNvcnJlY3Qgc2l6ZW9mIGluIFJ0bENyZWF0ZVNlY3VyaXR5RGVzY3JpcHRvcigpLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBzdHViIGRlY2xhcmF0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVJlbW92ZSByZXdpbmQgc2VjdGlvbiBkdWUgdG8gbGFjayBvZiB1cGRhdGVzLgoJUmVtb3ZlIG9sZCBsaXN0IG9mIGNvbnRyaWJ1dG9ycyB0aGF0IGdhdmUgdG8gdGhlIHdwZi4KCUxpbmsgdG8gaGlzdG9yeSBwYWdlIGluIHF1ZXN0aW9uIGFza2luZyBhYm91dCB3aW5lJ3MgaGlzdG9yeS4KCUNoYW5nZSBXaW5lWCBuYW1lIHRvIENlZGVnYS4KCVVzZSBjdXJyZW50IHdpbmUgdmVyc2lvbiBpbiBhbnN3ZXIuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYSBjcmFzaCBzYXZpbmcgYSBmaWxlIHdpdGhvdXQgZmlsZSBuYW1lIGV4dGVuc2lvbiBhbmQgd2l0aG91dAoJZXh0ZW5zaW9uIGZpbHRlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgbWVzc3kgY29tbWVudCBpbiBTSEZpbGVPcGVyYXRpb24uCglSZWR1Y2UgdGhlIG51bWJlciBvZiBnb3RvIGxhYmVscyBpbiBTSEZpbGVPcGVyYXRpb24gYnkgb25lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglQcm9wc2hlZXQgcGFnZXMgbmVlZCBXU19FWF9DT05UUk9MUEFSRU5UIHN0eWxlLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL21sYW5nLnNwZWM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBzdHVicyBmb3IgTGNpZFRvUmZjMTc2NltBL1ddLgoKCSogZGxscy9xdWFydHovcGluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGEgYnVnIHRoYXQgbWFkZSB0aGUgY29ubmVjdGlvbiBwb3NzaWJsZSB3aGVyZWFzIG5vIHN1aXRhYmxlCgltZWRpYSB0eXBlIGhhcyBiZSBmb3VuZCBkdXJpbmcgdGhlIG5lZ290aWF0aW9uLgoJRml4ZWQgdGhlIHJlbGVhc2Ugb2YgdGhlIG1lZGlhIHNhbXBsZSBpbiBQdWxsUGluX1RocmVhZF9Qcm9jZXNzLgoJQWRkZWQgYW5kIGZpeGVkIGEgbG90IG9mIHRyYWNlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGV2Z3VpZC5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCWRldmd1aWQuaCBkZWZpbmVzIGRldmljZSBjbGFzcyBHVUlEcyB1c2VkIGluIGRldmljZSBkZXRlY3Rpb24gYW5kCgljbGFzc2lmaWNhdGlvbi4KCgkqIGluY2x1ZGUvbnRkZHN0b3IuaDogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIEdVSURzIGZyb20gdGhlIHdpbjJrIERESyB0aGF0IGFyZSB1c2VkIGZvciBVU0IgZGV2aWNlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgaW5jbHVkZS9udHNlY2FwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBkZWNsYXJhdGlvbiBvZiBMU0EqIHN0cnVjdHMgdG8gbnRzZWNhcGkuaC4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0aGUgQ0NISUxEUkVOX1RJVExFQkFSKzEgYW5kIE5VTV9QT0lOVFMgbWFjcm9zLgoJQWRkIGEgY291cGxlIGJhc2UgdHlwZXMgdGhhdCB3aW5hcGlfdGVzdCBkb2VzIG5vdCBrbm93IGhvdyB0byBwYXJzZS4KCUZpeCBhIGJ1ZyBzbyB0aGF0ICdzaWduZWQnIGFuZCAndW5zaWduZWQnIGFyZSByZWNvZ25pc2VkIGFzIHZhbGlkCgl0eXBlcy4KCjIwMDQtMDgtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDA4MTMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDgtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL3ZnYS5jOgoJTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglBZGQgRE9TIGVkaXRpbmcga2V5IHN1cHBvcnQgaW4gQlVGRkVSRUQgSU5QVVQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIHdpbmRvd3MvZGVmZGxnLmM6CglXTV9ORVhURExHQ1RMIHNob3VsZCBub3QgY2hhbmdlIHRoZSBkZWZhdWx0IGJ1dHRvbiBJRCAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgS3Jpc2huYSBNdXJ0aHkpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUGwucmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IGEgYnVnIGluIHBhc3NpbmcgcGFyYW1ldGVycyB0byBDRm5fV01Jbml0RGlhbG9nIGFuZCBDRm5fV01Db21tYW5kCglpbiBGb3JtYXRDaGFyRGxnUHJvY1cuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL3Rlc3RzL250ZGxsX3Rlc3QuaCwKCSAgZGxscy9udGRsbC90ZXN0cy9wYXRoLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmMsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUF2b2lkIGFubm95aW5nICdtYWNybyByZWRlZmluaXRpb24nIHdhcm5pbmdzIGJ5IGRlZmluaW5nCglXSU4zMl9OT19TVEFUVVMgYXQgdGhlIHJpZ2h0IHRpbWUuCglEZWZpbmUgX1dJTjMyX1dJTk5UIG90aGVyd2lzZSB3ZSBhcmUgbWlzc2luZyBzb21lIHN5bWJvbHMgd2l0aCB0aGUKCVdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3dpbm50LmgsCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgUFNJRCBhbmQgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgdHlwZXMuCglBZGQgUElTSUQgYW5kIFBJU0VDVVJJVFlfREVTQ1JJUFRPUi4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9wYXRoLmMsCgkgIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcmVsYXkuYywgZGxscy9udGRsbC9yZXNvdXJjZS5jLAoJICBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9udGRsbC92ZXJzaW9uLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW9yZSBXQVZFT1VUQ0FQU1cgdGVzdHMuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIFdpbmRvd3MgaGVhZGVycyBkb24ndCBkZWZpbmUgUEVYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVDT1JELgoJUmVtb3ZlIGl0LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL3RocmVhZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNldFRocmVhZFRva2VuIHVzaW5nIE50U2V0SW5mb3JtYXRpb25UaHJlYWQuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvd2luaW5ldC90ZXN0cy93aW5pbmV0X3Rlc3QuaCwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGNvbXBpbGF0aW9uIG9mIHRoZSB3aW5pbmV0IGdlbmVyYXRlZCB0ZXN0cyB3aXRoIHRoZSBXaW5kb3dzCgloZWFkZXJzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBXaW5kb3dzIGhlYWRlcnMgc3VwcG9ydCBmb3IgTk9OQU1FTEVTU1VOSU9OIGFuZCBOT05BTUVMRVNTU1RSVUNUCglpcyB1bnVzYWJsZS4gU28gZG9uJ3QgZm9yY2UgdGhpcyBtb2RlLiBJbnN0ZWFkIGNoZWNrIHdoZXRoZXIKCU5PTkFNRUxFU1NVTklPTiBhbmQvb3IgTk9OQU1FTEVTU1NUUlVDVCBhcmUgc2V0IChieSB0aGUgV2luZSBoZWFkZXJzKQoJYW5kIGRlZmluZSBjdXN0b20gYWNjZXNzIG1hY3JvcyBhY2NvcmRpbmdseS4KCgkqIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIGluaXRpYWxpemF0aW9uIG9mIHRoZSBmaWxlc291cmNlIG91dHB1dCBwaW4gY3JpdGljYWwKCXNlY3Rpb24uCglBdm9pZCBpbmRlZmluaXRlIHdhaXQgd2hlbiBjYWxsaW5nIEdldE92ZXJsYXBwZWRSZXN1bHQuCglGaXhlZCBpbml0aWFsIHJlZmNvdW50IG9mIHRoZSBJTWVtQWxsb2NhdG9yIG9iamVjdC4KCUltcHJvdmVkIHNvbWUgdHJhY2VzLgoKCSogZGxscy9nZGkvYml0bWFwLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiBhIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgZGV2aWNlIGJpdG1hcHMsIHRoZW4gc3RvcmUgdGhlIGJpdHMgb24gdGhlCglnZGkgc2lkZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvUGwucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGZpcnN0IHBhcmFtZXRlciBvZiBHZXREZWZhdWx0UHJpbnRlckF8Vy4KCgkqIGluY2x1ZGUvbW1yZWcuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBXQVZFX0ZPUk1BVF9FWFRFTlNJQkxFLgoKCSogZGxscy94MTFkcnYvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTeW5jIHdpdGggZGlic2VjdGlvbiBpbiBTZXRESUJpdHNUb0RldmljZS4KCgkqIGRsbHMva2VybmVsL2hlYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBCU0QgYnVpbGQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgV2luZG93cyBoZWFkZXJzIGRvbid0IGRlZmluZSB0aGUgRFJWX1FVRVJZREVWSUNFSU5URVJGQUNFKFNJWkUpCgltYWNyb3MuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbmFtZSBSZXNvdXJjZUhhbmRsZSB0byBSZXNlcnZlZCBpbiB0aGUgSU1BR0VfUkVTT1VSQ0VfREFUQV9FTlRSWQoJc3RydWN0dXJlIHRvIG1hdGNoIHRoZSBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSWYgdGhlIHBzelByb3ZOYW1lIHBhcmFtIG9mIENyeXB0RW51bVByb3ZpZGVycyBpcyB0b28gc21hbGwgdG8gaG9sZAoJdGhlIHByb3ZpZGVyIG5hbWUsIFNldExhc3RFcnJvciB0byBFUlJPUl9NT1JFX0RBVEEuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFrZSBwYXR0ZXJuIGJydXNoIGRhdGEgY29uc3QuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3JlIGRzb3VuZCB0ZXN0cyBlcnJvciBtZXNzYWdlIGNsZWFudXBzLgoJT25seSBkaXNwbGF5IHZlcmJvc2UgaW5mb3JtYXRpb24gd2hlbiBpbiBpbnRlcmFjdGl2ZSBtb2RlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglCZXR0ZXIgbW1hcCBmYWlsdXJlIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLCBkbGxzL2RtYmFuZC9kbXV0aWxzLmgsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2RtdXRpbHMuaCwKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvZG11dGlscy5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLCBkbGxzL21sYW5nL21sYW5nLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9ycGNydDQvY3Byb3h5LmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmgsIGluY2x1ZGUvb2JqYmFzZS5oOgoJTW92ZWQgSUNPTV9USElTX01VTFRJIGRlZmluaXRpb24gb3V0IG9mIG9iamJhc2UuaCBhbmQgaW50byB0aGUgZmlsZXMKCXRoYXQgdXNlIGl0LgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVdlIGRvbid0IG5lZWQgdGhlIHNoYXJlZCBoZWFwIG9uIG5vbi1pMzg2IHBsYXRmb3Jtcy4KCgkqIGRsbHMva2VybmVsL2hlYXAuYywgaW5jbHVkZS93aW5iYXNlLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIEdsb2JhbE1lbW9yeVN0YXR1c0V4IGluIEdsb2JhbE1lbW9yeVN0YXR1cyByYXRoZXIgdGhhbiB0aGUgb3RoZXIKCXdheSBhcm91bmQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglNYWtlIEZJTkRGSVJTVCB3b3JraW5nIHdpdGggLy4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgdGhlIGN1cnJlbnQgbWVudSBoYW5kbGUgaXMgYWxyZWFkeSBzZXQsIGRvIG5vdCBzZXQgaXQgYWdhaW4uCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJTWFrZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdXBwZXJjYXNlLgoKCSogZGxscy9hdGwvTWFrZWZpbGUuaW4sIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9yZWdzdnIuYywKCSAgdG9vbHMvd2luZS5pbmY6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlci4KCjIwMDQtMDgtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvYW1zdHJlYW0vbWFpbi5jLAoJICBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwgZGxscy9jb21jYXQvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsCgkgIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsCgkgIGRsbHMvZDNkOS9yZXNvdXJjZS5jLCBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvc3dhcGNoYWluLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZHg4L2QzZHg4Y29yZV9wcml2YXRlLmgsIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLAoJICBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywKCSAgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2dhbW1hLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywKCSAgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywgZGxscy9kZXZlbnVtL2ZhY3RvcnkuYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywKCSAgZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYywKCSAgZGxscy9kbWxvYWRlci9jbGFzc2ZhY3RvcnkuYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLCBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsCgkgIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLAoJICBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9kcG5ldC9jbGllbnQuYywgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsCgkgIGRsbHMvZHBuZXQvZHBuZXRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywgZGxscy9kc3dhdmUvZHN3YXZlLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsCgkgIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywKCSAgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2dpdC5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZW9iai5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvcnBjcHJveHkuaDoKCUdldCByaWQgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1ZUQUJMRSBtYWNyby4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaDogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgbW9yZSBuZWVkZWQgc3RydWN0cyBhbmQgY29uc3RhbnRzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJSW1wbGVtZW50ZWQgSXNPUyBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogVGhvbWFzIFdlaWRlbm38bGxlciA8dzNzZWVrQHJlYWN0b3MuY29tPgoJQ29ycmVjdCB0b29sdGlwcyBiZWhhdmlvci4KCgkqIGluY2x1ZGUvbnRkZHN0b3IuaDogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIDIgbW9yZSBidXMgdHlwZXMuCgoJKiBkbGxzL2dkaS9kaWIuYywgZGxscy94MTFkcnYvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZXBlY3QgdGhlIHdpZHRoIG9mIGJvdGggdGhlIHNyYyBhbmQgZHN0IHdoZW4gY2FsY3VsYXRpbmcgaG93IG1hbnkKCXBpeGVscyB0byBjb3B5IGluIGEgZGliIDwtPiBibXAgb3BlcmF0aW9uLgoKCSogbGlicy9NYWtlbGliLnJ1bGVzLmluOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglEZWZpbmUgLWluc3RhbGxfbmFtZSBmb3IgZHluYW1pY3MgbGlicmFyaWVzIHRvIHByZXZlbnQgdXNhZ2Ugb2YKCURZTERfTElCUkFSWV9QQVRILgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IGxpc3R2aWV3IGZyb20gY3Jhc2hpbmcgd2hlbiBhIG51bGwgc29ydCBmdW5jdGlvbiBpcyBwYXNzZWQgdG8KCUxWTV9TT1JUSVRFTVMuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3BlZWQgdXAgbWl4aW5nIGFuZCB1bm1peGluZyBieSBtb3Zpbmcgc2FtcGxlIHNpemUgYW5kIGJ1ZmZlciB3cmFwCgl0ZXN0cyB0byBvdXRzaWRlIHRoZSBsb29wLiAgVGhlIGNvZGUgaXMgbm90IGFzIGNvbXBhY3Qgb3IgcHJldHR5IGJ1dAoJaXQgc2hvdWxkIGJlIGZhc3Rlci4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLCBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwKCSAgZGxscy9kM2R4OC9kM2R4OGNvcmVfcHJpdmF0ZS5oLCBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywgZGxscy9kcG5ldC9kcG5ldF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwKCSAgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9naXQuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGluY2x1ZGUvb2JqYmFzZS5oOgoJR2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVkZJRUxEIG1hY3JvLgoKCSogZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwKCSAgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwKCSAgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDkuaCwKCSAgaW5jbHVkZS9kM2R4OGNvcmUuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLAoJICBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljYy5oLCBpbmNsdWRlL2RtdXNpY2kuaCwKCSAgaW5jbHVkZS9kbXVzaWNzLmgsIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvZHBsYXkuaCwKCSAgaW5jbHVkZS9kcGxheTguaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwKCSAgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9keGRpYWcuaCwgaW5jbHVkZS9keGZpbGUuaCwKCSAgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL21hcGl1dGlsLmgsIGluY2x1ZGUvbWFwaXguaCwKCSAgaW5jbHVkZS9tZWRpYW9iai5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGVkbGcuaCwKCSAgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdmZ3Lmg6CglHZXQgcmlkIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9ERUZJTkUgbWFjcm8uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVN0YXJ0IGNsZWFuaW5nIHVwIGVycm9yIG1lc3NhZ2VzLgoJRG9uJ3QgcHJpbnQgdmVyYm9zZSBpbmZvIHVubGVzcyBpbiBpbnRlcmFjdGl2ZSBtb2RlIG9yIGRlYnVnZ2luZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQXV0b21hdGljYWxseSBkaXNhYmxlIDE2LWJpdCBzdXBwb3J0IGluIHRoZSBQRSBidWlsZC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVVzZSBidWlsdGluIG1zaS5kbGwuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgdGVzdHMgZm9yIENyeXB0RW51bVByb3ZpZGVycy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDbGVhbnVwIEEtPlcgY3Jvc3MgY2FsbCBpbiBDcnlwdEVudW1Qcm92aWRlcnMuCgoyMDA0LTA4LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY3RsM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy90d2Fpbi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2ludGFiMzIvTWFrZWZpbGUuaW46CglBdm9pZCBzb21lIG5vbi1wb3J0YWJsZSBtYWtlZmlsZSBjb25zdHJ1Y3RzLCBhbmQgZ2V0IHJpZCBvZiB0aGUKCUFMVE5BTUVTIHZhcmlhYmxlLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJVXBkYXRlIHRoZSBkbGxzIHNlY3Rpb24uCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywKCSAgZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsCgkgIGRsbHMveDExZHJ2L3hmb250LmMsIGRsbHMveDExZHJ2L3hpbS5jLCBkbGxzL3gxMWRydi94cmFuZHIuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgbG9hZGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL21ha2VfcHJvZ3MsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJQXZvaWQgc29tZSBub24tcG9ydGFibGUgbWFrZWZpbGUgY29uc3RydWN0cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRG9uJ3QgdXBkYXRlIGluZm9QdHItPmR3U3R5bGUgaW4gTElTVFZJRVdfV2luZG93UHJvYy4gSXQncyBhbHJlYWR5CgloYW5kbGVkIGluIExJU1RWSUVXX1N0eWxlQ2hhbmdlZCBhbmQgTElTVFZJRVdfQ3JlYXRlIHByb2Nlc3NpbmcuCglJZ25vcmUgV1NfVlNDUk9MTC9XU19IU0NST0xMIGZsYWdzIGluIGluZm9QdHItPmR3U3R5bGUgYmVjYXVzZSB0aGV5J3JlCglub3QgYWx3YXlzIHVwLXRvLWRhdGUuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvc2hsb2JqLmgsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBMUEZJTEVTWVNURU1CSU5EREFUQSBhcyBpdCdzIG5vdCBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZAoJV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwgZGxscy9kbWJhbmQvZG11dGlscy5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvZG11dGlscy5jLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL2RtdXRpbHMuYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLAoJICBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLCBpbmNsdWRlL2FjdGl2c2NwLmgsIGluY2x1ZGUvYW1zdHJlYW0uaCwKCSAgaW5jbHVkZS9hbXZpZGVvLmgsIGluY2x1ZGUvYXVzdHJlYW0uaCwgaW5jbHVkZS9jb21jYXQuaCwKCSAgaW5jbHVkZS9kZHN0cmVhbS5oLCBpbmNsdWRlL2Rpc3BleC5oLCBpbmNsdWRlL2RvY29iai5oLAoJICBpbmNsdWRlL2V4ZGlzcC5oLCBpbmNsdWRlL21sYW5nLmgsIGluY2x1ZGUvbW1zdHJlYW0uaCwKCSAgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmgsCgkgIGluY2x1ZGUvcHN0b3JlLmgsIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zaGxkaXNwLmgsCgkgIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91cmxtb24uaCwgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW9kaWZ5IHdpZGwgdG8gcHV0IHRoZSBDIENPTSBtYWNyb3MgaW5zaWRlIGFuICNpZmRlZiBDT0JKTUFDUk9TIGJsb2NrCglhcyBpcyBkb25lIGluIHRoZSBXaW5kb3dzIGhlYWRlcnMuCglBZGQgI2RlZmluZSBDT0JKTUFDUk9TIHdoZXJlIG5lZWRlZCBpbiBXaW5lLgoJRml4ZXMgdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBvbGVhdXQzMi90ZXN0cy9vbGVmb250LmMgYW5kCgl1cmxtb24vdGVzdHMvdXJsLmMgY29uZm9ybWFuY2UgdGVzdHMgd2l0aCB0aGUgV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jLCB0b29scy93aW5hcGkvbXN2Y21ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBkZWZpbmUgX19XSU5FX1VTRV9NU1ZDUlQgaW4gdGhlIFZpc3VhbCBDKysgcHJvamVjdC4gSXQgaXMgbm90CgluZWVkZWQgYXMgaXQgaXMgZGVmaW5lZCBieSB0aGUgV2luZSBoZWFkZXJzLgoJVXNlIF9fV0lORV9VU0VfTVNWQ1JUIHRvIGRldGVjdCB3aGV0aGVyIHdlIGFyZSBiZWluZyBjb21waWxlZCB3aXRoIHRoZQoJV2luZSBNU1ZDUlQgaGVhZGVycyBvciB0aGUgV2luZG93cyBvbmVzLiBJbiB0aGUgbGF0dGVyIGNhc2U6CgkgLSBkb24ndCB0cnkgdG8gaW5jbHVkZSB0aGUgV2luZS1zcGVjaWZpYyBtc3ZjcnQgaGVhZGVycwoJIC0gc2tpcCBhbGwgdGhlIGhlYWRlcnMuYyB0ZXN0cyBzaW5jZSB0aGVyZSdzIG5vIE1TVkNSVF8qIHN5bWJvbHMgdG8KCSAgIGNoZWNrCgoJKiBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywKCSAgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc2FjbS90ZXN0cy9tc2FjbS5jLCBpbmNsdWRlL21tcmVnLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMgdG8gbW1yZWcuaC4KCUFkZCAjZGVmaW5lIE5PQklUTUFQIHdoZXJlIG5lZWRlZCBpbiB0aGUgV2luZSBzb3VyY2VzLgoJRml4ZXMgdGhlIGNvbXBpbGF0aW9uIG9mIG1zYWNtL3Rlc3RzL21zYWNtLmMgd2l0aCB0aGUgV2luZG93cwoJaGVhZGVycy4KCgkqIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBpbmNsdWRlIHdpbmUvZGVidWcuaCB3aGVuIGNvbXBpbGluZyBvbiBXaW5kb3dzLgoJR2V0Q1BJbmZvRXhBKCkgaXMgbWlzc2luZyBvbiBzb21lIFdpbmRvd3MgcGxhdGZvcm1zLCBsb2FkIGl0CglkeW5hbWljYWxseS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCB0cnkgdG8gcm90YXRlIGJpdG1hcCBmb250cy4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jLCBpbmNsdWRlL21sYW5nLmgsCgkgIGluY2x1ZGUvbWxhbmcuaWRsLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIGFkZCBzdHViYmVkIHN1cHBvcnQgZm9yIElFbnVtU2NyaXB0IGludGVyZmFjZQoJLSBDb252ZXJ0SU5ldE11bHRpQnl0ZVRvVW5pY29kZS9Db252ZXJ0SU5ldFVuaWNvZGVUb011bHRpQnl0ZSBzaG91bGQKCSAgcmV0dXJuIHJlcXVpcmVkIHRhcmdldCBsZW5ndGggaWYgdGhlIHRhcmdldCBidWZmZXIgaXMgTlVMTAoJLSBhZGQgdGhlIHRlc3RzIGZvciBhbGwgdGhlIGFib3ZlCgktIGZpeCBJTXVsdGlMYW5ndWFnZTIgdnRhYmxlIChpdCB3YXMgbWlzc2luZyBDb252ZXJ0U3RyaW5nRnJvbVVuaWNvZGVFeCkKCgkqIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJUHJvZ3JhbSBGaWxlcyBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBpbiB3aW5kb3dzIGRpcmVjdG9yeS4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlcGxhY2Ugc3RyY2FzZWNtcCgpIHdpdGggbHN0cmNtcGlBKCkgdG8gaGVscCBjb21waWxhdGlvbiB3aXRoIFdpbmRvd3MKCWhlYWRlcnMuCgoJKiBkbGxzL2dkaS9iaXRibHQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtYXNrYmx0IHRvIHdvcmsgd2l0aCBhbnkgc2V0IG9mIHJvcHMgYW5kIHRvIGFsc28gdGFrZSBpbnRvIGFjY291bnQKCXRoZSBjdXJyZW50IGJydXNoLiAgSXQgYWxzbyBub3cgd29ya3MgaWYgdGhlIG1hc2sgYml0bWFwIGlzIGFscmVhZHkKCXNlbGVjdGVkIGludG8gYSBkYy4KCgkqIGRsbHMveDExZHJ2L2JydXNoLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglFdmVyIHNpbmNlIHdpbjk4IHBhdHRlcm4gYnJ1c2hlcyBoYXZlIGJlZW4gYWJsZSB0byBiZSBsYXJnZXIgdGhhbiA4eDgKCXBpeGVscywgc28gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIF9XSU4zMl9XSU5OVCBvdGhlcndpc2Ugd2UgYXJlIG1pc3Npbmcgc29tZSBkZWZpbml0aW9ucyB3aXRoIHRoZQoJV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy93aW5tbS90ZXN0cy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25seSBwcmludCBvdXQgdmVyYm9zZSBpbmZvcm1hdGlvbiB3aGVuIGluIGludGVyYWN0aXZlIG1vZGUuCgoJKiBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmx5IHByaW50b3V0IGluZm9ybWF0aW9uIHdoZW4gaW4gaW50ZXJhY3RpdmUgbW9kZS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBldmVyIHJldHVybiBhIGJpdG1hcCBmb250IGlmIHRoZSBkcml2ZXIgY2FuJ3QgdXNlIGl0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmx5IGNvcHkgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCB1cCB0byBzaXplIG9mIERldkNhcHMgc3RydWN0dXJlLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL2F0bF9tYWluLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBBdGxNb2R1bGVUZXJtLgoKCSogZGxscy9kc291bmQvcHJpbWFyeS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBidWcgd2hlcmUgZnJlcUFkanVzdCB3YXMgbm90IGJlaW5nIHVwZGF0ZWQgcHJvcGVybHkgd2hlbiB0aGUKCXByaW1hcnkgYnVmZmVyIGZvcm1hdCBjaGFuZ2VkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdGVzdCBmb3Igc3RhdCdpbmcgYSBtZW1vcnkgYmFzZWQgc3RvcmFnZSBmaWxlLgoKMjAwNC0wOC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2F0b20uYywgZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvY3B1LmMsIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsCgkgIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgaG9sZGluZyB4MTFkcnYgbG9jayB3aGlsZSBjYWxsaW5nIGZ1bmN0aW9uIHRoYXQgZ3JhYnMgZ2RpCglsb2NrLiBQcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGx5IGVtYnJhY2UuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBFSU5UUiB3aGVuIHBvbGxpbmcuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgaG9yaXpvbnRhbCBzdHJldGNoaW5nIG9mIGJpdG1hcCBmb250cywgc28KCXdlIHNob3VsZCBpZ25vcmUgbGZXaWR0aC4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCXN0YXQgb24gbWVtb3J5IHN0b3JhZ2Ugc2hvdWxkIHJldHVybiBhIE5VTEwgbmFtZSwgbm90ICIiLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBscHN6SGVhZGVycyBmaWVsZCBpbiBIdHRwU2VuZFJlcXVlc3QuCgoyMDA0LTA4LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJRml4IEVYRUMgZnVuY3Rpb24gMDEgKGxvYWQgYnV0IGRvbid0IGV4ZWN1dGUpOiBpbml0aWFsIGF4IGhhcyB0byBiZSBvbgoJY2hpbGQncyBzdGFjay4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCUZpeGVkIGRyaXZlIG1hcHBpbmcgaW4gR0VUIEFMTE9DQVRJT04uCgoJKiBjb250cm9scy9idXR0b24uYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBidXR0b24gYmVoYXZpb3VyIG9uIFdNX1NFVEZPQ1VTL1dNX0tJTExGT0NVUyB3aXRoIGEgdGVzdCBjYXNlLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldENoYXJBQkNXaWR0aHMgc2hvdWxkIGZhaWwgZm9yIG5vbi1zY2FsYWJsZSBmb250cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggVE9PTEJBUl9EcmF3TWFza2VkIHRvIGNvcnJlY3RseSB1c2UgaW1hZ2UgbGlzdCBtYXNrLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCVJlcGxhY2VkIExJU1RCT1hfU2V0Q2FyZXRJbmRleCgpIHdpdGggTElTVEJPWF9Nb3ZlQ2FyZXQoKSBpbgoJTEJfU0VMRUNUU1RSSU5HIGhhbmRsZXIgc28gdGhhdCB0aGUgY2FyZXQgbW92ZXMgdG8gdGhlIGluZGV4IGFuZCBpdGVtCglpcyBoaWdobGlnaHRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEZWxldGUgdGhlIGFib3V0IGRpYWxvZyBmb250IHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgYXNzZXJ0KClzIHRoYXQgY2hlY2tlZCB0aGF0IElEaXJlY3RTb3VuZEJ1ZmZlcl9Mb2NrKCkgaXMKCWdpdmVuIHR3byBkaXN0aW5jdCBwb2ludGVycy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjOiBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEEtPlcgY2FsbCBmb3IgU2V0TmFtZWRTZWN1cml0eUluZm8uCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBpbmNsdWRlL3dpbmVycm9yLmg6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIENlcnRGaW5kQ2VydGlmaWNhdGVJblN0b3JlLgoKCSogZGxscy93aW5tbS90ZXN0cy9taXhlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggY29tcGlsYXRpb24gb2Ygd2lubW0gdGVzdHMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVHJ5IGhhcmRlciB0byBtYXRjaCB0byBhIGZvbnQgaWYgdGhlIGZhbWlseSBuYW1lIGlzIG1hdGNoZXMsIGJ1dCB0aGUKCXN0eWxlIGlzIGRvZXNuJ3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglVc2UgY29ycmVjdCBkaWFsb2cgdGl0bGUgZm9yIFdpemFyZCA5NyBhbmQgY29ycmVjdGx5IGRpc3BsYXkgaGVhZGVyCgliaXRtYXAgZm9yIG9sZC1zdHlsZSBXaXphcmQgOTcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTWFrZSBDcnlwdEVudW1Qcm92aWRlcnNBIHBjYlByb3ZOYW1lIHBhcmFtZXRlciBjb250YWluIHRoZSBjb3JyZWN0CglzaXplIG9mIHRoZSBwcm92aWRlciBuYW1lIG9uIHJldHVybi4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywKCSAgZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UuYywKCSAgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJTW92ZSB3YXRlcm1hcmsgYW5kIGhlYWRlciBiaXRtYXAgbG9hZGluZyBjb2RlIGZyb20KCVBST1BTSEVFVF9DcmVhdGVQYWdlIGludG8gaXRzIG93biBmdW5jdGlvbiBQUk9QU0hFRVRfTG9hZFdpemFyZEJpdG1hcHMKCWFuZCBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBwcm9wZXJ0eSBzaGVldCdzIGRpYWxvZyBwcm9jZWR1cmUuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIEhlYXAgZnVuY3Rpb24gaW4gcHJlZmVyZW5jZSB0byBtYWxsb2MvZnJlZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVmaW5pdGlvbiBvZiBMb29rdXBQcml2aWxlZ2VOYW1lVyBhbmQgZGVjbGFyZSBpdC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBnZW5lcmF0ZWQgd2l0aCAtV3NpZ24tY29tcGFyZS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCcmVhayBhbmQgZGVmYXVsdCBjaGFyIGFyZSBib3RoIHJlbGF0aXZlIHRvIGZpcnN0IGNoYXIgaW4gdGhlIHdpbmZudAoJaGVhZGVyLgoKCSogZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZGVhZCBjb2RlLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeCBhbGxvYyBmYWlsdXJlIGNoZWNrIGluIENyeXB0RW51bVByb3ZpZGVyc1cuCgoJKiBwcm9ncmFtcy9tc2lleGVjLy5jdnNpZ25vcmUsIHByb2dyYW1zL21zaWV4ZWMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL21zaWV4ZWMvdmVyc2lvbi5yYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdmVyc2lvbiByZXNvdXJjZS4KCgkqIGRsbHMveDExZHJ2L3RleHQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCBpbml0aWFsaXplIHZhcmlhYmxlcyBiZWZvcmUgZ29pbmcgaW50byB0aGUgUmVuZGVyIHNob3J0LWN1dC4KCgkqIGRsbHMvZGJnaGVscC9zeW1ib2wuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCW1vZHVsZS0+YWRkcl9zb3J0dGFiIG1heSBiZSBOVUxMIGR1ZSB0byBhIGhhY2sgaW4KCWVsZl9uZXdfd2luZV90aHVua3MuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVRlc3QgZGlmZmVyZW50IHByaW1hcnkgYnVmZmVyIGZvcm1hdHMgd2hpbGUga2VlcGluZyB0aGUgc2Vjb25kYXJ5CglidWZmZXIgZm9ybWF0IGNvbnN0YW50LgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hcmtlZCBzb21lIGZ1bmN0aW9ucyBpbiBkZWJ1Z2hscCBhcyBzdGF0aWMuCglEbyBub3QgdXNlIFJFRklJRCBhcyByZXR1cm4sIGJ1dCBJSUQqLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzogT2ZpciBQZXRydXNrYSA8aGF0a3lAdXNlcnMuc2YubmV0PgoJRGVmYXVsdCBEZXNrdG9wRG91YmxlQnVmZmVyZWQgdG8gdHJ1ZS4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCU9ubHkgdHJhY2UgRk9VUkNDIGhhbmRsZXIgd2hlbiBvbmUgaXMgc3BlY2lmaWVkCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdGVzdCBmb3IgQ29udmVydFNpZFRvU3RyaW5nU2lkVy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgQ29udmVydFNpZFRvU3RyaW5nU2lkQS9XLgoKCSogZGxscy93aW5tbS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXhlciB0ZXN0cy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9QdC5yYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZSBNSVhFUl9HZXREZXYgdG8gdGFrZSBwb2ludGVyIHRvIHJldHVybmVkIGFkZHJlc3MgcG9pbnRlciBhbmQKCXJldHVybiBvbmUgb2YgMyBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIHJhdGhlciB0aGFuIGFuIGFkZHJlc3Mgb3IKCU5VTEwuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBtaXNzaW5nIGRlZmluZS4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgV2luWFAgdmVyc2lvbiB0byBTUDIuCgoyMDA0LTA4LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJVGhvbWFzIFdlaWRlbm38bGxlciA8dzNzZWVrQHJlYWN0b3Mub3JnPgoJSW1wbGVtZW50ZWQgc3lzbGluayBjb250cm9sLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRGUucmMsIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvUGwucmMsIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9SdS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCUphY2VrIENhYmFuPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgoJLSBNb3ZlZCBjb25zdCAiTm9ib2R5IiBzdHJpbmcgdG8gcmVzb3VyY2VzIHRvIG1ha2UgdHJhbnNsYXRpb24KCSAgcG9zc2libGUuCgoJKiBkbGxzL2dkaS9iaXRibHQuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBY3R1YWxseSBwYXNzIHRoZSBibGVuZCBmdW5jdGlvbiBvbiB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9uJ3QgbGVhayBjYWNoZSBpbWFnZWxpc3RzIG9uIGV4aXQuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYW5vdGhlciB0ZXN0IGZvciBJbnRlcm5ldENyYWNrVXJsVy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGR3VXJsUGF0aExlbmd0aCByZXR1cm5lZCBieSBJbnRlcm5ldENyYWNrVXJsIHdoZW4KCWxwc3pFeHRyYUluZm8gaXMgbnVsbC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIENBUFMyIHN0cnVjdHVyZXMuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvbWxhbmcuc3BlYywgaW5jbHVkZS9tbGFuZy5oLAoJICBpbmNsdWRlL21sYW5nLmlkbDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ29udmVydElOZXRNdWx0aUJ5dGVUb1VuaWNvZGUsIENvbnZlcnRJTmV0VW5pY29kZVRvTXVsdGlCeXRlCglhbmQgSXNDb252ZXJ0SU5ldFN0cmluZ0F2YWlsYWJsZSBieSBtb3ZpbmcgY29tbW9uIGNvZGUgYXJvdW5kLCBhZGQgYQoJc3R1YiBmb3IgQ29udmVydElOZXRTdHJpbmcuCgoJKiBpbmNsdWRlL3BzdG9yZS5oLCBpbmNsdWRlL3BzdG9yZS5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVjbGFyYXRpb24gb2YgT3Blbkl0ZW0uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFpbnRhaW4gYSBjYWNoZSAoY3VycmVudGx5IG9mIHVwIHRvIDEwKSBvZiB1bnVzZWQgZm9udHMuICBUaGlzIHNwZWVkcwoJdXAgYXBwcyB0aGF0IHJlcGVhdGVkbHkgcmVjcmVhdGUgdGhlIHNhbWUgZm9udC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEEtPlcgY2FsbCBmb3IgR2V0TmFtZWRTZWN1cml0eUluZm8uCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElEaXJlY3QzRERldmljZXsyLDN9OjpHZXRMaWdodFN0YXRlLgoJRml4ZWQgdHJhY2VzIGluIGV4ZWN1dGUgYnVmZmVycy4KCVVwZGF0ZWQgY29weXJpZ2h0IGluZm8uCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3Rva2VuaXplLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgZm91bmQgd2l0aCAtV3NpZ24tY29tcGFyZS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZHMgZGVidWcgbmFtZSB0byByZW1haW5pbmcgY3JpdGljYWwgc2VjdGlvbnMuCgoyMDA0LTA4LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCWRsb3BlbiBsaWJ1bmdpZiBhbmQgbGlianBlZy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCVBhc3MgZGVidWcgZXhjZXB0aW9ucyB0byB3aW5lZG9zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWxhbmcvLmN2c2lnbm9yZSwKCSAgZGxscy9tbGFuZy9NYWtlZmlsZS5pbiwgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL21sYW5nLnNwZWMsCgkgIGRsbHMvbWxhbmcvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tbGFuZy90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIG1sYW5nLmRsbCBhbmQgdGVzdCBjYXNlcyBmb3IgaXQuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0VzLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCBzb21lIFNwYW5pc2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRGVzdHJveSBhc3NvY2lhdGVkIGxpc3R2aWV3IHdoZW4gSVNoZWxsVmlldyBpcyBkZXN0cm95ZWQuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBnZGkgZm9udCBsaXN0IHRvIHVzZSBsaXN0LmguCgoJKiBwcm9ncmFtcy93Y21kL0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZWQgdGhlIEdlcm1hbiB0cmFuc2xhdGlvbi4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRvcC1kb3duIGRpYiBzdXBwb3J0IHRvIEFscGhhQmxlbmQuCgoJKiBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlL21sYW5nLmgsIGluY2x1ZGUvbWxhbmcuaWRsOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENMU0lEIGFuZCBJSURzIGZvciBtbGFuZy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3Byb2Nlc3MuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgRmx1c2hJbnN0cnVjdGlvbkNhY2hlIHRvIG50ZGxsLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBDUklUSUNBTF9TRUNUSU9OIGRlYnVnIGluZm8uCgoyMDA0LTA4LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQbGF5IGJhY2sgd2hhdCBoYXMgYmVlbiByZWNvcmRlZCB3aGVuIGluIGludGVyYWN0aXZlIG1vZGUgc28gdGhhdCB0aGUKCXVzZXIgY2FuIHZlcmlmeSB0aGF0IHRoZSByZWNvcmRpbmcgaXMgY29ycmVjdC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvcmVsYXkuYzoKCU1ha2UgcmVsYXkgYW5kIHNub29waW5nIHdvcmsgZm9yIExvYWRMaWJyYXJ5K0dldFByb2NBZGRyZXNzIHNlcXVlbmNlCgkoYmFzZWQgb24gYSBwYXRjaCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZCBTM1RDIHN1cHBvcnQgdG8gQmx0RmFzdCAoZml4ZXMgTk9MRikKCS0gcHJvcGVyIHN1cmZhY2UgdW5sb2NraW5nIGluIGNhc2Ugb2YgZXJyb3IgaW4gdGhlIEJsdCBjYXNlCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNsZWFudXAgQS0+VyBjcm9zcyBjYWxscy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgUEJTX01BUlFVRUUgc3R5bGUuCgoJKiBkbGxzL2dkaS9iaXRibHQuYywgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQWxwaGFCbGVuZCB1c2luZyB0aGUgWFJFTkRFUiBleHRlbnNpb24uCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglGaXhlZCBzb21lIG1vcmUgZnJlZWluZyBpc3N1ZXMgaW4gQ3J5cHRBY3F1aXJlQ29udGV4dEEuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jOiBKZW5zIENvbGxpbiA8amVucy5jb2xsaW5AbGFraGVpLmNvbT4KCVVzZSBTaGVsbEV4ZWN1dGUgaW5zdGVhZCBvZiBDcmVhdGVQcm9jZXNzIGluIHJ1biBkaWFsb2cuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHN0YXRpYyB0byBub24tZXhwb3J0ZWQgbWFyc2hhbCBmdW5jdGlvbnMuCgktIFJlbW92ZSB1bnVzZWQgbWFyc2hhbCBmdW5jdGlvbnMuCgktIFJlbmFtZSBzZXZlcmFsIFJQQyBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgdXNpbmcgcm91bmQoKSwgd2hpY2ggaXMgdW5wb3J0YWJsZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2Nvbm5lY3QgcHJveGllcyBhdCBDT00gc2h1dGRvd24gdG8gcmVsZWFzZSB0aGUgY29ycmVzcG9uZGluZwoJc3R1YnMuCgoJKiBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcHJvdmVkIElEaXJlY3QzRFZpZXdwb3J0SW1wbF8zXzJfMV9UcmFuc2Zvcm1WZXJ0aWNlcyBzdHViLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIElEaXJlY3RTb3VuZEltcGxfQ3JlYXRlKCkgdG8gZGV0ZWN0IGVycm9ycy4KCUFsd2F5cyBzZXQgKnBwRFMgdG8gTlVMTCBpbiBjYXNlIG9mIGVycm9yLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBEM0RPUF9TVEFURUxJR0hUIG9wY29kZS4KCUltcGxlbWVudGVkIF9kdW1wX0QzREVYRUNVVEVCVUZGRVJERVNDLgoKCSogZGxscy93aW5lcHMvZG93bmxvYWQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayByZXR1cm4gdmFsdWUgb2YgZ2V0X2Jib3goKS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCB1bmRlZmluZWQgQyBleHByZXNzaW9uLgoKCSogZGxscy93aW50YWIzMi9jb250ZXh0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgaW5jb3JyZWN0IEMgY29tcGFyaXNvbiBjb25zdHJ1Y3QuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgdG9vbGJhciB3aXRoIGEgbm90IHplcm8gZGVmYXVsdCBzaXplLCBpdCBhbGxvd3MgYXBwbGljYXRpb25zCgl3aGljaCBjaGVjayB0b29sYmFyIHNpemUgYmVmb3JlIGFkZGluZyBidXR0b25zIHRvIGl0IHdvcmsuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFBTTV9JTkRFWFRPSFdORC4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNb3ZlZCBsaWJ0eGNfZHh0IGRlZmluaXRpb25zIGludG8gZGRyYXcgaGVhZGVycy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBGaXggY29tcGlsYXRpb24gb24gYm94ZXMgd2l0aG91dCBPcGVuR0wgaW5zdGFsbGVkLgoJLSBQcmludCB0aGUgd2FybmluZyBtZXNzYWdlIG9ubHkgb25jZS4KCjIwMDQtMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBuYXRpdmUgYW5kIGVtdWxhdGVkIFMzVEMgc3VwcG9ydC4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzoKCUZpeGVkIGJ1ZyB3aXRoICUgc2lnbnMgaW4gaGVscCBvdXRwdXQgKHJlcG9ydGVkIGJ5IEhlbm5pbmcgR2VyaGFyZHQpLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglGaXggZGxsIHZlcnNpb24gZGV0ZWN0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IG1hcnNoYWwgSUNsYXNzRmFjdG9yeSBpbnRvIHRoZSBsb2NhbCBzZXJ2ZXIgcGlwZSB1bnRpbCB3ZSBoYXZlCgljb25uZWN0ZWQsIG90aGVyd2lzZSB3ZSBtaWdodCBlbmQgdXAgd2l0aCBzdHVicyB0aGF0IGFyZSBuZXZlciB1c2VkLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglEaXNjb25uZWN0IHRoZSBzZXJ2ZXIgb2JqZWN0IGZyb20gdGhlIHN0dWIgb24gc3R1YiBkZXN0cnVjdGlvbi4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbmZpbml0ZSBsb29wcyBieSBjaGVja2luZyB0aGUgcmV0dXJuIHZhbHVlIG9mIF9pbnZva2Vfb25lcmVxIGFuZAoJYmFpbGluZyBhcHByb3ByaWF0ZWx5LgoKCSogZGxscy9kc291bmQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZWZhY3RvcmVkIGNvbW1vbiB0ZXN0IGNvZGUgaW50byBzdWJyb3V0aW5lcy4KCUFkZGVkIHRlc3RzIGZvciBjb3JyZWN0IENvbXBhY3QgYmVoYXZpb3IuCglBZGRlZCB0ZXN0cyBmb3IgYWxsIHBvc3NpYmxlIElEaXJlY3RTb3VuZFs4XSBjcmVhdGlvbiBtb2RlcyB3aXRoIGdvb2QKCWFuZCBiYWQgYXJndW1lbnRzLgoJU3BsaXQgZHNvdW5kLmMgYW5kIGRzM2QuYyBpbnRvIHNlcGFyYXRlIGZpbGVzIGZvciBJRGlyZWN0U291bmQgYW5kCglJRGlyZWN0U291bmQ4IGludGVyZmFjZXMgYW5kIGFkZGVkIGNvZGUgdG8gbm90IGV4ZWN1dGUgSURpcmVjdFNvdW5kOAoJdGVzdHMgd2hlbiBydW4gd2l0aCBhIGRzb3VuZC5kbGwgb2YgdmVyc2lvbiA3IG9yIGVhcmxpZXIuICBXZSBzaG91bGQKCW5vdyBiZSBhYmxlIHRvIHJ1biB0aGVzZSB0ZXN0cyBvbiBhIFdpbmRvd3Mgc3lzdGVtIHdpdGggRFg3IG9yIGVhcmxpZXIKCSh1bnRlc3RlZCkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGVycm9yIGNoZWNraW5nIHRvIElEaXJlY3RTb3VuZF9Db21wYWN0LgoJRml4ZWQgSURpcmVjdFNvdW5kSW1wbF9DcmVhdGUgdG8gcmV0dXJuIERTRVJSX05PRFJJVkVSIGZvciBhIGJhZAoJZGV2aWNlIElJRC4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVmYWN0b3Igc29tZSBvdGhlciBjb2RlIGluIG1zaWV4ZWMuCgoJKiBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFRvdWNoRmlsZVRpbWVzKCksIHRoYW5rcyB0byBGbG9yaWFuIFN0aW5nbG1heXIgZm9yCglzdWJtaXR0aW5nIGEgcm91Z2ggZHJhZnQuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlZmFjdG9yIHNvbWUgb2YgdGhlIHN0cmluZyBwcm9jZXNzaW5nIGluIG1zaWV4ZWMuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGluY2x1ZGUvcmljaGVkaXQuaDoKCUphY2VrIENhYmFuPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIEVNX1NDUk9MTENBUkVUIGRlZmluaXRpb24gaW4gaW5jbHVkZS9yaWNoZWRpdC5oIGFuZCBoYW5kbGluZyBpbgoJV2luZG93UHJvYy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVuZGVyIHRoZSBEcml2ZXMgdGFiLCByZW1vdmUgdGhlICdXaW5kb3dzIERyaXZlJyBzZWN0aW9uLgoKCSogcHJvZ3JhbXMvd2NtZC9EZS5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUFkZGVkIGEgR2VybWFuIHRyYW5zbGF0aW9uIHRvIHdjbWQuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3Jlc291cmNlLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgdGhlIFVJIGxhbmd1YWdlLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCVByb2Nlc3Mgc2libGluZyBrZXlzIGl0ZXJhdGl2ZWx5LCB0aGVyZWJ5IHByZXZlbnRpbmcgZXhoYXVzdGlvbiBvZiB0aGUKCXN0YWNrLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9JdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbmFtZSBYMTEgRHJpdmVyIHRhYiBvZiB3aW5lY2ZnIHRvIEdyYXBoaWNzLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgcHJvcGVyIHByb3BlcnRpZXMgaGFuZGxpbmcgb24gdGhlIGNvbW1hbmRsaW5lIGluIG1zaWV4ZWMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgcG90ZW50aWFsIGRvdWJsZSBjYWxsIHRvIENSWVBUX0ZyZWUgb24gdmFyaWFibGUgInRlbXAiLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvcnNhYmFzZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9yc2FiYXNlL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvcnNhYmFzZS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9yc2FiYXNlL3Rlc3RzL3JzYWJhc2UuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgdGlueSB1bml0IHRlc3QgZm9yIHJzYWJhc2UuZGxsLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmUuZGVza3RvcDoKCUNocmlzdGlhbiBOZXVtYWlyIDxjaHJpc0Bnbm9tZS1kZS5vcmc+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgZnJlZWRlc2t0b3Aub3JnIE1JTUUgc3lzdGVtLgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvZDNkOS92c2hhZGVyZGVjbGFyYXRpb24uYywgZGxscy9nZGkvZGliLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYzoKCUplcm9lbiBKYW5zc2VuIDxqYXBqQHhzNGFsbC5ubD4KCVVwZGF0ZWQgc29tZSBNU0ROIGxpbmtzIGluIHRoZSBjb2RlLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUVtaXQgZml4bWUgZm9yIGtub3duIGxvY2FsIHdyb25nIGJlaGF2aW91ci4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUFkZGVkIEdlcm1hbiByZXNvdXJjZXMgZm9yIGRldmVudW0uCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBjb3JyZWN0IGNhbGxpbmcgY29udmVudGlvbiBmb3IgdGhlIGN1c3RvbSBhY3Rpb24gaGFuZGxlcnMuCgoyMDA0LTA3LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvc3RyaW5nLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBtc2lzdHJpbmdfbWFrZWhhc2ggcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIGp1c3QgMSBvcgoJMC4gQWxzbyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHN0cmluZyBvciBzdG9yZWQgc3RyaW5nIGlzIG51bGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJQWRkIFJFU1RfTk9OTEVHQUNZU0hFTExNT0RFIHBvbGljeS4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGRpc2Nvbm5lY3QgZm9yIHByb3hpZXMgc28gdGhhdCBzdHVicyBhcmUgcHJvcGVybHkKCWRlc3Ryb3llZC4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJQ2hhbmdlIHRoZSBOVCBzZXJ2aWNlIHBhY2sgdmVyc2lvbiBmcm9tIDYgdG8gNmEsIGNvcnJlY3Qgd2luMmszIG5hbWUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmVkIHRoZSAnV2luZG93cyBMb29rOicgb3B0aW9uIGZyb20gd2luZWNmZy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW4gdGhlIGFic2VuY2Ugb2YgYW55IG90aGVyIG9wdGlvbiB0byBtc2lleGVjLCB0cmVhdCB0aGUgY29tbWFuZGxpbmUKCWFzIGEgcGFja2FnZSBuYW1lIHRvIGluc3RhbGwuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnQgd3JvbmcgYmVoYXZpb3VyIGZvciBJUnVubmluZ09iamVjdFRhYmxlLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWYgY291bnRpbmcgaW4gU3RkTWFyc2hhbEltcGxfTWFyc2hhbEludGVyZmFjZSBmb3IgY2FzZSB3aGVyZSB0aGUKCXN0dWIgYWxyZWFkeSBleGlzdHMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgaW5hY2N1cmFjaWVzIGluIGEgY29tbWVudCBhbmQgcmVmb3JtYXQuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjb21tZW50IG9uIHRoZSBTZW5kUmVjZWl2ZSBiZWhhdmlvdXIuIEltcHJvdmUgdHdvIG90aGVycy4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMb2NhbGl6YXRpb24gb2YgZGV2ZW51bSB0byBQb3J0dWd1ZXNlIGFuZCBtaW5vciBjb3JyZWN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vb2xlLnNnbWw6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUFkZCBEQ09NIGRvY3VtZW50YXRpb24gdG8gZGV2ZWxvcGVycyBndWlkZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2kuaCwKCSAgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgcGF0Y2hpbmcgaW4gbXNpZXhlYy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSBkZWNsYXJhdGlvbnMgbmVlZGVkIGZvciBkZXZlbG9waW5nIGNyeXB0b2dyYXBoaWMgc2VydmljZQoJcHJvdmlkZXJzLgoKCSogZGxscy9tc2kvY29uZC55OiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUZpeCBwYXJzaW5nIG9mIHN0cmluZyBsaXRlcmFscy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbW92ZSB0aGUgVXNlVGFrZUZvY3VzIG9wdGlvbiBmcm9tIHdpbmVjZmcuCgoJKiB0b29scy9jMm1hbi5wbDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGMybWFuIGZvciB0aGUgY2FzZSB3aGVyZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFyZSBvbiBtb3JlIHRoYW4gb25lCglsaW5lLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnRhdGlvbiBmb3IgV2luZSBjbGllbnQtc2lkZSBzZXJ2ZXIgaW50ZXJmYWNlLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgIkxEIiBpbnN0ZWFkIG9mICJsZCIgaW4gd2luZWJ1aWxkIHRvIGJlIGFibGUgdG8gdXNlIGEgZGlmZmVyZW50IGxkCglvciBsZCBvcHRpb25zLgoKMjAwNC0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJRG9uJ3QgY3Jhc2ggb24gTlVMTCBkYXRhIGluIFJlZ1NldFZhbHVlRXhBIChyZXBvcnRlZCBieSBNaWtlIEhlYXJuIGFuZAoJQW5kcmVhcyBNb2hyKS4KCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWNlc3NhcnkgdmVyc2lvbiBjaGVja3MuCgoJKiBsaWJzL3dpbmUvbW1hcC5jOgoJUmVzZXJ2ZSB0aGUgRE9TIGFyZWEgaW4gbW1hcF9pbml0IGlmIGl0IHdhc24ndCBhbHJlYWR5IGRvbmUgYnkgdGhlCglwcmVsb2FkZXIuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcHJvdmUgbXNpZXhlYyB1c2FnZSBwcm9tcHQuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCS0gQ2hhbmdlZCBzb21lIEZJWE1FcyB0byBUUkFDRXMsIHNpbmNlIHRoZXkgcmVwb3J0IG9uIGEgcHJvYmxlbSBpbiB0aGUKCSAgd2F5IHRoZSBjbGllbnQgdXNlcyB0aGUgZGxsIHJhdGhlciB0aGFuIGluIHRoZSBkbGwgaXRzZWxmLgoJLSBDb3ZlciB0aGUgY2FzZSwgd2hlbiB0aGUgcHN6UHJvdmlkZXIgcGFyYW1ldGVyIHBvaW50cyB0byBhbiBlbXB0eQoJICBzdHJpbmcuCgktIEZpeGVkIHNvbWUgaW1wcmVjaXNpb25zIGluIGVycm9yIHJlcG9ydGluZy4KCS0gUmVtb3ZlZCB0aGUgIndpbmVfdG9kbydzIiBhcnJvdW5kIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQtdGVzdHMuCgoJKiBjb250cm9scy9lZGl0LmM6IEtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglNb2RpZmllZCBFRElUX1dNX0NoYXIoKSB0byByZXN0cmljdCBrZXlpbmcgaW4gb2YgbGV0dGVycyBvdGhlciB0aGFuCgludW1iZXJzIHdoZW4gRVNfTlVNQkVSIHN0eWxlIGlzIHNldC4KCjIwMDQtMDctMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9tc2kuYywgaW5jbHVkZS9tc2kuaCwgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmMsCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IGxvZ2dpbmcgaW4gbXNpZXhlYy4KCUNvcnJlY3QgTXNpRW5hYmxlTG9ne0EsV30gcHJvdG90eXBlLgoKCSogaW5jbHVkZS9tc2kuaCwgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgdGhlIFVJIGxldmVsIGNoYW5nZSBwYXJ0IG9mIG1zaWV4ZWMuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCB0aGUgY29ycmVjdCBkZWZhdWx0IG1vZGUgdG8gdGhlIHJlcGFpciBvcHRpb24uCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUR1bXAgKHZpYSBUUkFDRXMpIGFsbCB0aGUgYXJndW1lbnRzIG9mIG1zaWV4ZWMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIGxhc3Qgd2luZWRlZmF1bHQucmVnIHJlZmVyZW5jZSBpbiB0aGUgY29kZS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBwcm9ncmFtcy93Y21kL0VuLnJjLCBwcm9ncmFtcy93Y21kL1J1LnJjLAoJICBwcm9ncmFtcy93Y21kL1NpLnJjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGJ5dGVzX3RvX21tdGltZSgpIHRvIGNvbnZlcnQgdGhlIHN0cmVhbSBwb3NpdGlvbiBmcm9tIGJ5dGVzIHRvCgl0aGUgcmVxdWVzdGVkIE1NVElNRSBmb3JtYXQuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGlkZW50aWNhbCBpbiBhbGwKCWRyaXZlcnMuCglSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBmcm9tIHdvZEdldFBvc2l0aW9uKCkgYW5kCgl3aWRHZXRQb3NpdGlvbigpIGFuZCB1c2UgYnl0ZXNfdG9fbW10aW1lKCkgaW5zdGVhZC4KCWJ5dGVzX3RvX21tdGltZSgpIHVzZXMgbm8gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyB0byBjb21wdXRlCglUSU1FX1NNUFRFIGFuZCBubyBsb25nZXIgdXNlcyByb3VuZCgpLiBJdCBzaG91bGQgaGF2ZSBubyBpbnRlZ2VyCglvdmVyZmxvd3MgZWl0aGVyLgoKCSogaW5jbHVkZS9tc2kuaCwgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmMsCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IHRoZSBhZHZlcnRpc2UgcGFydCBvZiBtc2lleGVjLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJTlRFUk5FVF9PUFRJT05fQ09OTkVDVEVEX1NUQVRFLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUZyZW5jaCB0cmFuc2xhdGlvbiBhbmQgb3RoZXIgYWRqdXN0bWVudHMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNtYWxsIGNsZWFudXAgaW4gSURpcmVjdFNvdW5kQnVmZmVySW1wbF9TZXRQYW4oKS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoYXQgbW9kaWZ5aW5nIHRoZSBzZWNvbmRhcnkgYnVmZmVyIHZvbHVtZS9wYW4gZG9lcyBub3QgY2hhbmdlCgl0aGUgcHJpbWFyeSBidWZmZXIncyB2b2x1bWUgYW5kIHBhbi4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBSUEMgZGF0YSByZXByZXNlbnRhdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgLUVtYmVkZGluZyBzd2l0Y2ggdG8gRVhFIHNlcnZlcnMsIG1vcmUgdHJhY2luZy4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYzoKCUF2b2lkIGx2YWx1ZSBjYXN0cyAoYmFzZWQgb24gYSBwYXRjaCBieSBNYXJjdXMgTWVpc3NuZXIpLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW0ucmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHN0cmluZ3MuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgdm9sdW1lIGFuZCBiYWxhbmNlIG9mIHByaW1hcnkgYnVmZmVycyBzbyBpdCBpcyB0aGUgc3lzdGVtJ3MKCXZvbHVtZSBhbmQgYmFsYW5jZSwgbGlrZSBvbiBXaW5kb3dzLgoKCSogZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU29ydCB0aGUgd2lubW0gdGVzdCBmb3JtYXRzIGJ5IGluY3JlYXNpbmcgc2FtcGxpbmcgcmF0ZS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVGVzdCB3YXZlSW5HZXREZXZDYXBzVy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJV2luZG93cyA5NSBkb2Vzbid0IHN1cHBvcnQgd2F2ZU91dEdldERldkNhcHNXLgoKMjAwNC0wNy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYzoKCVJlbW92ZWQgc29tZSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleGlzdCBpbiBtc3ZjcnQyMCAocmVwb3J0ZWQgYnkgSmFuCglWYW4gQnVnZ2VuaG91dCkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZW1vdmUgdW5uZWVkZWQgU1RVQk1HUl9TdGFydCBjYWxsLgoJLSBDbGVhbnVwIGNvbXBvYmpfcHJpdmF0ZS5oLgoKCSogZGxscy9xdWFydHovYXZpc3BsaXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJY2tpZEpVTksgaXMgYSBGT1VSQ0Mgbm90IGEgVFdPQ0Mgc28gcmV3cml0ZSB0aGUgY2FzZSBzdGF0ZW1lbnQKCWFwcHJvcHJpYXRlbHkuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHVwIHNvbWUgc21hbGwgcHJvYmxlbXMgaW4gdGhlIEdlcm1hbiBzdHJpbmcgdGFibGUuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIDIgbW9yZSBjYXN0ZWQgbHZhbHVlIGlzc3Vlcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBSZW1vdmUgdGhlIC11IG9wdGlvbiwgdGhlIFVSTCBpcyBpbiBhIHJlc291cmNlIG5vdy4KCS0gUmVzZXQgdGhlIFdJTkVURVNUXyogZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgdG8gdGhlaXIgZGVmYXVsdHMKCSAgYmVmb3JlIGZvcmtpbmcgdGhlIHRlc3RzLgoJLSBBZGQgdGhlIC1lIG9wdGlvbiB0byBvcHRpb25hbGx5IHByZXNlcnZlIHRoZSBlbnZpcm9ubWVudC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEZpeGVkIGEgY291cGxlIG9mIG9mZi1ieS1vbmUgZXJyb3JzLgoKCSogZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG93bmdyYWRlIHRlc3RzIHRvIERYOCBsZXZlbCBzbyBpdCBjYW4gYnVpbGQgb24gYWxsIHdpbmRvd3MKCXBsYXRmb3Jtcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RlLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9EZS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJTWlub3IgZml4ZXMgYW5kIHVwZGF0ZXMgdG8gdGhlIEdlcm1hbiByZXNvdXJjZSBmaWxlcy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSb2IgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU3RkTWFyc2hhbDo6UmVsZWFzZU1hcnNoYWxEYXRhLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxpYnMvd2luZS9NYWtlZmlsZS5pbjoKCUVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCVNldCBzZWdtZW50IGFkZHJlc3Mgb2Ygd2luZSBleGVjdXRhYmxlIGFuZCBsaWJ3aW5lLmR5bGliIG9uIERhcndpbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEcmF3IHVuZGVybGluZSBhbmQgc3RyaWtlb3V0IGxpbmVzIGluIHRoZSBub24teHJlbmRlciBjYXNlcyB0b28uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJSW5jbHVkZSB0aGUgZHNvdW5kIHRlc3RzLgoKCSogZGxscy9vbGUzMi9ycGMuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVW5yZWYgc3R1YiBhZnRlciBpbnZva2luZyBvbiBpdC4KCgkqIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVzZXMgb2YgdGhlIGNhc3QtYXMtbHZhbHVlIEdDQyBleHRlbnNpb24gd2hpY2ggaGFzIGJlZW4KCWRlcHJlY2F0ZWQuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCS0gRml4ZWQgYSBwcm9ibGVtIHdpdGggZHdQcm92VHlwZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDk5IGluCgkgIENSWVBUX0dldFR5cGVLZXlOYW1lLgoJLSBGaXhlZCBlcnJvciByZXBvcnRpbmcgaW4gdGhlIGNhc2Ugb2YgZHdQcm92VHlwZSA9PSAwLgoJLSBSZW1vdmVkICJ0b2RvX3dpbmUiIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCB0ZXN0LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdG1VbmRlcmxpbmVkIGFuZCB0bVN0cnVja091dCByZWZsZWN0IHRoZSB2YWx1ZXMgdXNlZCB0byBjcmVhdGUKCXRoZSBmb250LgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEdW1wIERpcmVjdFNvdW5kIGNhcGFiaWxpdGllcyBmbGFncy4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jLAoJICBkbGxzL2R4Z3VpZC9keGd1aWQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmVzIGRzY29uZiBJSURzIGZyb20gZHhndWlkLmxpYi4KCUZpeGVzIHByb3BzZXQgZmlsZXMgZm9yIG1pc3NpbmcgSUlEcy4KCjIwMDQtMDctMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbDoKCUl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglSZW1vdmUgcmVmZXJlbmNlcyB0byBkZWJ1Z21zZyBhbmQgd2luZWRlZmF1bHQucmVnLgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfSXQucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYzoKCUl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IENyZWF0ZU1hcHBlZEJpdG1hcCBmb3IgcGFsZXR0ZS1sZXNzIGJpdG1hcHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIFByb3Blcmx5IGNhbGN1bGF0ZSBjYXB0aW9uIGxlbmd0aCB3aGVuIGNvbnZlcnRpbmcgbXVsdGktYnl0ZSBzdHJpbmcKCSAgdG8gd2lkZSBjaGFyYWN0ZXIgb25lLgoJLSBXaXphcmQgY29udGVudHMgc2hvdWxkbid0IGJlIG1vdmVkIGJ5IHRoZSBzaXplIG9mIHdhdGVybWFyayBiaXRtYXAuCgktIEZpeCBQU0hfV0laQVJEOTdfW05FVy9PTERdIGNoZWNrcy4KCS0gQmxpdCB0aGUgd2F0ZXJtYXJrIGV2ZW4gaWYgUFNIX1VTRUhCTVdBVEVSTUFSSyBmbGFnIGlzbid0IHNldCBhbmQKCSAgYmxpdCBvbmx5IHRoZSBwYXJ0IHRoYXQgZml0cyBpbnRvIHRoZSBkaWFsb2cuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglIdHRwUXVlcnlJbmZvIHJldHVybnMgYnVmZmVyIGxlbmd0aCBpbmNsdWRpbmcgbnVsbCB0ZXJtaW5hdG9yIG9uCglpbnN1ZmZpY2llbnQgYnVmZmVyIGxlbmd0aCBhbmQgYnVmZmVyIGxlbmd0aCBleGNsdWRpbmcgbnVsbCB0ZXJtaW5hdG9yCglvbiBzdWNjZXNzOgoJLSBGaXggSFRUUF9IdHRwUXVlcnlJbmZvVyBmb3IgdGhlc2Ugc2VtYW50aWNzLgoJLSBGaXggSHR0cFF1ZXJ5SW5mb0EgdG8gY29ycmVjdGx5IGNvcHkgdGhlIG51bGwgdGVybWluYXRvciBpbiB0aGUgY2FsbAoJICB0byBXaWRlQ2hhclRvTXVsdGlCeXRlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kZSBmaWxlIGRpYWxvZ3Mgc2VuZCBhbmQgcmVjZWl2ZSB1bmljb2RlIG1lc3NhZ2VzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglWaXN1YWwgdXBkYXRlcyBhbmQgdHJhbnNsYXRpb25zIGZvciByZWdlZGl0LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIHVuaXQgdGVzdHMgZm9yIHRoZSBDcnlwdEFjcXVpcmVDb250ZXh0IEFQSSBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggbWlzbGVhZGluZyB3YXJuaW5nIG9sZSBDb0dldENsYXNzT2JqZWN0LgoKCSogZGxscy93aW5pbmV0L2Nvb2tpZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZXdyaXRlIGNvb2tpZXMgdG8gdXNlIHNoYXJlZCBsaXN0LmggbGlzdCBjb2RlLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IEhUVFAgUE9TVCByZXF1ZXN0cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvYml0bWFwLmMsCgkgIGRsbHMvZ2RpL2JydXNoLmMsIGRsbHMvZ2RpL2NsaXBwaW5nLmMsIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2RpYi5jLAoJICBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsCgkgIGRsbHMvZ2RpL2dkaW9iai5jLCBkbGxzL2dkaS9tZXRhZmlsZS5jLCBkbGxzL2dkaS9wYWxldHRlLmMsCgkgIGRsbHMvZ2RpL3Blbi5jLCBkbGxzL2dkaS9yZWdpb24uYzoKCU1vdmVkIGFsbCBmaWxlcyBmcm9tIHRoZSBvYmplY3RzLyBkaXJlY3RvcnkgdG8gZGxscy9nZGkuCglNZXJnZWQgdGV4dC5jIGludG8gZm9udC5jIGFuZCBkY3ZhbHVlcy5jIGludG8gZGMuYy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9wYWludGluZy5jOgoJTW92ZWQgTGluZUREQSBpbXBsZW1lbnRhdGlvbiB0byBkbGxzL2dkaS9wYWludGluZy5jLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgd2Ugd29uJ3QgZ2V0IGFuIG92ZXJmbG93IGluIGNoZWNrX3Bvc2l0aW9uKCkgZXZlbiBpZiB3ZSBwbGF5Cglsb25nZXIgdGVzdCB0b25lcy4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2F2ZSBlbnVtZXJhdGVkIEdVSURzIGluIGEgZ2xvYmFsIGFycmF5IHNvIHRoZXkgcGVyc2lzdCBhZnRlcgoJZW51bWVyYXRpb24uCglXaGl0ZSBzcGFjZSBjbGVhbnVwLgoJQWRkIHRlc3RzIGZvciBvcGVuaW5nIGRlZmF1bHQgZGV2aWNlcy4KCgkqIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOgoJRml4ZWQgZmxhZ3MgaGFuZGxpbmcgaW4gU3RySXNJbnRsRXF1YWxBL1cgKHNwb3R0ZWQgYnkgSmFtZXMgSGF3a2lucykuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgZGxscy93aW5tbS93aW5tbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZHMgKkdldERldkNhcHNXIGJhZCBwb2ludGVyIGNoZWNrLgoJQWRkcyB3YXZlT3V0R2V0RGV2Q2Fwc1cgdGVzdC4KCgkqIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYWN0aXZzY3AuaCwKCSAgaW5jbHVkZS9hY3RpdnNjcC5pZGwsIGluY2x1ZGUvZGlzcGV4LmgsIGluY2x1ZGUvZGlzcGV4LmlkbDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIGlkbCBmaWxlcyByZXF1aXJlZCBmb3Igc2NyaXB0aW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9wdGhyZWFkLmM6CglFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+Cgl3aW5lX3B0aHJlYWRfaW5pdF90aHJlYWQ6IHJldHJpZXZlIHRoZSBzdGFjayBpbmZvIG9uIERhcndpbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVmlzdWFsIHVwZGF0ZXMgdG8gV2luZWNmZy4KCgkqIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpbmNsdWRlL21tZGRrLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIEltcGxlbWVudGF0aW9uIG9mIG1tVGFza0NyZWF0ZS4gQmFzZWQgb24gcGF0Y2ggYnkgRXJpYyBQb3VlY2guCgktIEZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGluIHdhdmVPdXRbVW5dUHJlcGFyZUhlYWRlci4KCgkqIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbDogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUZpeCB3aW5lLnVzZXJyZWcgbmFtZSAoc3BvdHRlZCBieSBEYXZlIFdhc2hidXJuKS4KCjIwMDQtMDctMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJR2V0IHJpZCBvZiB3aW5kb3cgcmVnaW9uIG9uIHRoZSBjbGllbnQgc2lkZS4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lvbi5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL3dpbnBvcy5jOgoJTW92ZWQgdGhlIFdpbmRvd0Zyb21Qb2ludCBmdW5jdGlvbmFsaXR5IHRvIHRoZSBzZXJ2ZXIgc28gdGhhdCB3ZSBjYW4KCXByb3Blcmx5IHRha2UgaW50byBhY2NvdW50IHRoZSB3aW5kb3cgcmVnaW9uLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJUmV3cm90ZSBsb2FkX21lc3NhZ2VBL1cgdG8gZGVhbCBwcm9wZXJseSB3aXRoIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXZlcnQgbXkgcHJldmlvdXMgaW5jb3JyZWN0IGNoZWNrX3Bvc2l0aW9uKCkgcGF0Y2g6IFdpbmRvd3MgcmV0dXJucwoJZXhhY3RseSB0aGUgbnVtYmVyIG9mIHNhbXBsZXMvYnl0ZXMgcGxheWVkIChubyBwbHVzIG9uZSB0aGVyZSkuCglNb2RpZnkgY2hlY2tfcG9zaXRpb24oKSB0byB3b3JrIG9mZiB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyBhcwoJY2FsY3VsYXRlZCBieSB3YXZlX2dlbmVyYXRlX2xhKCkuIFRoaXMgZml4ZXMgcHJvYmxlbXMgZHVlIHRvIHJvdW5kaW5nCgl3aGVuIGR1cmF0aW9uIGlzIG5vdCBhIG5lYXQgaW50ZWdlci4KCVJvdW5kIHVwIHRoZSBmcmFtZSBmaWVsZCB3aGVuIGNoZWNraW5nIFRJTUVfU01QVEUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvdGV4dC5jOgoJWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglBZGQgdGVzdCB0byBkZW1vbnN0cmF0ZSBEcmF3VGV4dCgpIHdpdGggRFRfQ0FMQ1JFQ1QgaW5jb3JyZWN0IGJlaGF2aW9yCglpbiBNTV9ISUVOR0xJU0ggbWFwcGluZyBtb2RlLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9EZS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGVkIHRoZSBHZXJtYW4gdHJhbnNsYXRpb24uCgoJKiB0b29scy93cmMvcGFyc2VyLnk6CglGaXhlZCBoYW5kbGluZyBvZiBMQU5HVUFHRSBzdGF0ZW1lbnQgZm9yIG1lc3NhZ2UgdGFibGVzIChmb3VuZCBieQoJWmhhbmdyb25nIEh1YW5nKS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTm90aWZ5IHdoZW4gcG9zaXRpb24gZm9ybWF0IG5vdCBzdXBwb3J0ZWQuCglUZXN0IHRoYXQgcG9zaXRpb24gaXMgMCBhdCBzdGFydC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlIGRhdGEgdGFibGUgZm9yIGEgY2FsbGVkIGFjdGlvbiBkb2VzIG5vdCBleGlzdCAoZm9yIGV4YW1wbGUKCUNyZWF0ZUZvbGRlcnMgd2FudHMgYSBDcmVhdGVGb2xkZXIgdGFibGUgdG8gcmVhZCB0aGUgZGF0YSBmcm9tKSBkbyBub3QKCWZhaWwsIGluc3RlYWQganVzdCBkbyBub3QgcGVyZm9ybSB0aGUgYWN0aW9uLgoKCSogdG9vbHMvd21jL3dyaXRlLmM6IFpoYW5ncm9uZyBIdWFuZyA8aHpockB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglDYWxsIHdpbmVfY3Bfd2NzdG9tYnMoKSB0byByZXRyaWV2ZSBhY3R1YWwgbGVuZ3RoIG9mIGJ1ZmZlciBiZWZvcmUKCWNvbnZlcnNpb24uCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggc3RyaW5nIGxlbmd0aCByZXR1cm4gZnJvbSBIdHRwUXVlcnlJbmZvQS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJTWFrZSBTVEFSVFVQSU5GTy5scERlc2t0b3AgdGVzdHMgcGFzcyBvbiBOVC4KCjIwMDQtMDctMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBwb2ludGVycyBpbnRlcm5hbGx5IGFuZCByZWZjb3VudCBhbGwgb2JqZWN0cy4KCgkqIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVNldCBWZXJzaW9uTXNpIHByb3BlcnR5LgoJQWNjZXB0IGEgZG90IGluIGEgbnVtYmVyIHZhbHVlLgoKCSogZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvdGVzdHMvZW52aXJvbi5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgdGVzdCBjYXNlcyBmb3IgX3dwdXRlbnYsIGZpeCBkZWxldGlvbiBvZiBub24tZXhpc3RlbnQKCWVudmlyb25tZW50IHZhcmlhYmxlcywgcmV0dXJuIC0xIG9uIGVycm9yLgoKCSogY29udHJvbHMvbWVudS5jOiBaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCVNldCB0aGUgdG9wX3BvcHVwIGdsb2JhbCB2YXJpYWJsZSB0byB6ZXJvIGluIE1FTlVfRXhpdFRyYWNraW5nKCksCglmaXhpbmcgTUVOVV9Jc01lbnVBY3RpdmUoKSBhbmQgdGhlcmVmb3JlIFZLX0YxIFdNX0hFTFAgbWVzc2FnZQoJZ2VuZXJhdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGF0IHdlIGFyZSBzdGlsbCBwbGF5aW5nIGluIHdvZFVwZGF0ZVBsYXllZFRvdGFsKCkuIElmIG5vdCwKCXRoZW4gdGhlIHZhbHVlIHJldHVybmVkIGJ5IHNuZF9wY21fZGVsYXkoKSBpcyBub3QgdXNhYmxlIHNvIGFzc3VtZQoJZGVsYXk9MC4gVGhpcyBnZXRzIHRoZSB3aW5tbSB0ZXN0IHRvIGNvbXBsZXRlIGluIGludGVyYWN0aXZlIG1vZGUgd2l0aAoJd2luZWFsc2EuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBsaXN0ZW5lci9zb3VuZCBwb3NpdGlvbiB1cGRhdGUgZHVyYXRpb24gYW5kIFRJTUVfU0xJQ0UKCWluZGVwZW5kZW50LgoJU2V0IHRoZSBzb3VuZCBhbmQgbGlzdGVuZXIgdmVsb2NpdHkgYW5kIGluY3JlYXNlIHRoZSBzb3VuZCBzb3VyY2UKCXZlbG9jaXR5IHNvIHdlIG1heSBnZXQgc29tZSBkb3BwbGVyIGVmZmVjdC4KCUFkZGVkIHNvbWUgdHJhY2VzIHNvIG9uZSBjYW4gbW9uaXRvciB0aGUgbGlzdGVuZXIvc291bmQgcG9zaXRpb25zIHdpdGgKCVdJTkVURVNUX0RFQlVHPTMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIGludGVyYWN0aXZlIG1vZGUsIGNoZWNrIHRoYXQgdGhlIHRvbmUgZHVyYXRpb24gaXMgd2l0aGluIDEwJSBvZiB0aGUKCWV4cGVjdGVkIHZhbHVlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBpbmNsdWRlL21zaS5oLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCB0aGUgcmVwYWlyIG1lY2hhbmlzbSBpbiBtc2lleGVjLCBhbmQgc3R1YiBpdCBvdXQgaW4KCW1zaS5kbGwuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglIb25vdXIgSU5URVJORVRfRkxBR19OT19DT09LSUVTLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUJ1aWxkIHdpbmUtcHRocmVhZCBvbiBEYXJ3aW4uCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBIdHRwUXVlcnlJbmZvKEhUVFBfUVVFUllfUkFXX0hFQURFUlMqKSBzbyB0aGF0IGl0IHJldHVybnMgdGhlCglhY3R1YWwgaGVhZGVycyByZWNlaXZlZCwgbm90IGp1c3QgcmVjb25zdGl0dXRpbmcgdGhlbSBmcm9tIHByb2Nlc3NlZAoJZGF0YS4KCgkqIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX1B0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX1B0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVVwZGF0ZSBsb2NhbGl6YXRpb24gZm9yIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2UuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgY2hlY2tfcG9zaXRpb24oKSB0ZXN0OiBvbiBXaW5kb3dzIHdhdmVPdXRHZXRQb3NpdGlvbigpIHJldHVybnMKCXRoZSBudW1iZXIgb2Ygc2FtcGxlcyBwbGF5ZWQgcGx1cyBvbmUgKGFsc28gb25lIGV4dHJhIHNhbXBsZSBmb3IgdGhlCglieXRlIGNvdW50KS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSByb3VuZCgpIGluc3RlYWQgb2YgY2VpbCgpIGluIHdvZEdldFBvc2l0aW9uKFRJTUVfU01QVEUpLgoJRml4ZXMgdGhlIGNvcnJlc3BvbmRpbmcgd2lubW0gY29uZm9ybWFuY2UgdGVzdC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEbyBpbml0aWFsaXphdGlvbiB0byBtYXRjaCB3aW5kb3dzIGJlaGF2aW9yICh3aXRoIHRlc3QpLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDbGVhbnVwIG9mIHRoZSBwcm9wZXJ0aWVzIGxhc3Qgc3BhY2UgcmVtb3ZhbCwgc2luY2UgaXQgY2FuIGJlIHVzZWQgbm90Cglvbmx5IHdpdGggSW5zdGFsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbXNpZXhlYy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9tc2lleGVjL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYywgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXJzdCBkcmFmdCBmb3IgYSBtc2lleGVjLmV4ZSByZXBsYWNlbWVudC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBQYXVsIFZyaWVucyA8cHZyaWVuc0B4czRhbGwubmw+CglDcmVhdGUgfi8ud2luZSBpZiBub3QgcHJlc2VudCBkdXJpbmcgd2luZWluc3RhbGwuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglCZXR0ZXIgZml4IGZvciBjb2xsYXRlIGljb24gYmVoYXZpb3IuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvc3FsLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiBjb2RlIG9mIE1zaURhdGFiYXNlT3BlblZpZXcuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVzIHRoZSByaWdodCBidWdzIGFuZCBrZWVwcyBpbnRlbnQgb2YgdGVzdC4KCUFkZHMgbW9yZSByZWZlcmVuY2UgY291bnQgY2hlY2tzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRGUucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUFkZGVkIGEgR2VybWFuIHRyYW5zbGF0aW9uIGZvciBXaW5lTWluZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRGUucmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQHZsc2kuaW5mb3JtYXRpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIEdlcm1hbiB0cmFuc2xhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCVJlbW92ZSBpbXBsZW1lbnRhdGlvbiBvZiBOdEN1cnJlbnRUZWIgZm9yIHBwYyBob3N0LgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRm9yd2FyZCBzaGx3YXBpLjQ1OS80NjAgKFNIRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzQS9XKSB0bwoJa2VybmVsMzIuRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzQS9XLgoKCSogZGxscy93aW5pbmV0L2Nvb2tpZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggc2l6ZSByZXR1cm4gZnJvbSBJbnRlcm5ldEdldENvb2tpZVcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJVXNlIHN5c3RlbSBtZXRyaWNzIHZhbHVlcyBpbiBUT09MQkFSX0RyYXdQYXR0ZXJuIGluc3RlYWQgb2YgaGFyZGNvZGVkCgl2YWx1ZXMuCgoyMDA0LTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwNzE2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUltcGxlbWVudGVkIEdldFVJVmVyc2lvbiAoYmFzZWQgb24gYSBwYXRjaCBieSBTdGVmYW4gTGVpY2h0ZXIpLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCB0cnkgdG8gY3JlYXRlIGEgSURpcmVjdFNvdW5kM0RCdWZmZXIsIHBhcnRseSB0byBrZWVwIHRoaXMgdGVzdAoJc2ltcGxlIGFuZCBwYXJ0bHkgYmVjYXVzZSBpdCdzIGdvaW5nIHRvIGZhaWwgc2luY2Ugd2UgZGlkIG5vdCByZXF1ZXN0CglEU0JDQVBTX0NUUkwzRC4gRml4ZXMgYSBjcmFzaCBvbiBXaW5kb3dzLgoJRG9uJ3QgcmVxdWVzdCB1bm5lZWRlZCBjYXBzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHNoZW1lc2guYml6PgoJU3lzdGVtIGRlZmF1bHQgbG9jYWxlIGluIFdpbmRvd3MgZGV0ZXJtaW5lcyB0aGUgQU5TSSBlbmNvZGluZwoJKExDX0NUWVBFIG9uIFVuaXgpLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4ZWQgY29sbGF0ZSBpY29uIGJlaGF2aW9yLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglHZXQgYW5kIHByaW50IHRoZSBEaXJlY3RTb3VuZCBwcmltYXJ5IGJ1ZmZlciB2b2x1bWUuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJS2VlcCB0cmFjayBvZiBob3cgbXVjaCBoYXMgYmVlbiBwbGF5ZWQgYW5kIGdldCByaWQgb2YgbGFzdF9wb3MuIFRoaXMKCWZpeGVzIGEgYnVnIHdoZXJlIGJ1ZmZlcl9zZXJ2aWNlKCkgd291bGQgbm90IGRldGVjdCB0aGF0IGV2ZXJ5dGhpbmcKCWhhZCBiZWVuIHBsYXllZC4KCUNoZWNrIHRoYXQgdGhlIGFjdHVhbCBzb3VuZCBkdXJhdGlvbiB3YXMgd2l0aGluIDEwJSBvZiB0aGUgZXhwZWN0ZWQKCXZhbHVlLgoJTWFrZSBCVUZGRVJfTEVOIGFuZCBUSU1FX1NMSUNFIGluZGVwZW5kZW50LCBtYWtlIHN1cmUgVElNRV9TTElDRSBkb2VzCglub3QgZGl2aWRlIEJVRkZFUl9MRU4gdG8gc3BpY2UgdGhpbmdzIHVwIGEgYml0LgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jOgoJS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCUFkZGVkIHJlZ3Jlc3Npb24gdGVzdCBmb3IgV01fTkVYVERMR0NUTCBhbmQgZGVmYXVsdCBidXR0b24gSUQKCWJlaGF2aW9yLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByZXZlbnQgZ2FyYmFnZSBiZWluZyBwYXNzZWQgZm9yIHdpbmRvd3MgZGlyZWN0b3J5LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDYWxsIElEaXJlY3RTb3VuZDo6SW5pdGlhbGl6ZSgpIGFzIHBlciBNU0ROIGJlZm9yZSB1c2luZyB0aGUKCURpcmVjdFNvdW5kIG9iamVjdC4gRml4ZXMgYSBjcmFzaCBvbiBXaW5kb3dzLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT24gV2luZG93cyBHZXRQYW4oKSBtYXkgbm90IHJldHVybiB0aGUgdmFsdWUgdGhhdCB3YXMganVzdCBzZXQgd2l0aAoJU2V0UGFuKCkuCgoJKiBkbGxzL21zaHRtbC9tYWluLmMsIGRsbHMvbXNodG1sL21zaHRtbC5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHVicyBmb3IgRGxsSW5zdGFsbCBhbmQgRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJTWFrZSB0aGUgcGF0dGVybiBkcmF3aW5nIGluIFRPT0xCQVJfRHJhd1BhdHRlcm4gbG9vayBiZXR0ZXIuCgoJKiBkbGxzL21zcmxlMzIvbXNybGUzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGx2YWx1ZSBjYXN0cyBmb3IgbmV3IGNvbXBpbGVyLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJRml4ZWQgc29tZSBkdXBsaWNhdGUgQ1JZUFRfRnJlZSBjYWxscyAoc3BvdHRlZCBieSBNaWNoYWVsIEp1bmcpLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBQUk9WX0VOVU1BTEdTW19FWF0gc3RydWN0cyBhbmQgdHlwZWRlZnMuCglBZGRlZCBzb21lIGRlZmluZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy93aW5pbmV0L2h0dHAuYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIHRvb2xzL21ha2VfY3Rlc3RzLCB0b29scy93aW5hcGkvbXN2Y21ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtc3ZjbWFrZXIgc28gdGhlIGdlbmVyYXRlZCB0ZXN0bGlzdC5jIGZpbGVzIGluY2x1ZGUgc3RkYXJnLmguCglBZGQgY29tbWVudHMgcG9pbnRpbmcgb3V0IHRoZSByZWxhdGlvbiBiZXR3ZWVuIG1zdmNtYWtlciBhbmQKCW1ha2VfY3Rlc3RzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ2hlY2sgZm9yIGVtcHR5IFByaW50ZXJOYW1lIGluIFBSSU5URExHX1dNQ29tbWFuZFcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGlzdGluZ3Vpc2ggYmV0d2VlbiBPcGVuIGFuZCBFeHBsb3JlIGNvbW1hbmRzLgoJRXhlY3V0ZSBpdGVtcyBieSBkZWZhdWx0LgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJUGFzcyB0aGUgZW52aXJvbm1lbnQgZm9yIGEgY2hpbGQgcHJvY2VzcyB0aHJvdWdoIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZgoJcmVseWluZyBvbiB0aGUgVW5peCBlbnZpcm9ubWVudC4KCgkqIHRvb2xzL3dpbmUuaW5mOgoJU3BlY2lmeSB0aGUgUEFUSCB2YXJpYWJsZSBpbiB1cHBlcmNhc2UgdG8gYXZvaWQgZ2V0dGluZyB0d28gZmxhdm9ycyBvZgoJUEFUSCB3aGVuIGNvbnZlcnRpbmcgdGhlIFVuaXggZW52aXJvbm1lbnQuCgoJKiBkbGxzL21zdmNydC9wcm9jZXNzLmM6IEltcGxlbWVudGVkIF9zcGF3bmxlIGFuZCBfc3Bhd25scGUuCgoJKiB0b29scy93aW5ld3JhcHBlcjoKCUludm9rZSB3aW5lcHJlZml4Y3JlYXRlIGlmIHRoZSAud2luZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6CglTdXBwb3J0IGZvciBsYXJnZSBwcm9maWxlIHZhbHVlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2JlcnQKCVNoZWFybWFuKS4KCUZpeGVkIFBST0ZJTEVfRmx1c2hGaWxlIHRvIGNvcnJlY3RseSB0cnVuY2F0ZSB0aGUgZmlsZSBiZWZvcmUgc2F2aW5nCglpdC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEZWZpbmUgdGhlIGJhY2tlbmRfY3B1IHJlZ2FyZGluZyB0aGUgaG9zdCBwcm9jZXNzb3IuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZW1vdmVkIHRoZSBjcm9zc2NhbGxzICh1bmljb2RlIHRvIGFzY2lpKSBmcm9tIEdldEFjY2VwdExhbmd1YWdlc1cuCglSZW1vdmVkIHRvZG9fd2luZSBmcm9tIEdldEFjY2VwdExhbmd1YWdlc0EgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9uJ3QgY3Jhc2ggb24gTlVMTCB0YWIgdGV4dC4KCjIwMDQtMDctMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgb25lIGx2YWx1ZSBjYXN0ZWQgYXNzaWdubWVudCBmb3IgdGhlIG5ldyBjb21waWxlci4KCgkqIGRsbHMvc2hsd2FwaS9tc2dib3guYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgYXNzaWduIHRvIGNhc3RlZCB2YWx1ZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9ycGMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZldyBzZXJpb3VzIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgT0xFIG9iamVjdCBwaXBlIHNlcnZlci4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaDoKCVNldCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpbiBudGRsbCBhcyBzb29uIGFzIHdlIGhhdmUgZGV0ZXJtaW5lZCBpdC4KCgkqIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYzoKCURvbid0IGdldCBzeXN0ZW0gZGlyZWN0b3J5IGZyb20gdGhlIGVudmlyb25tZW50LCB1c2UKCUdldFN5c3RlbURpcmVjdG9yeSBpbnN0ZWFkLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZG91YmxlIGZyZWUgaW4gdGhlIG5hbWVkIHBpcGUgY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIFJlZ1F1ZXJ5VmFsdWVFeEEgaW5zdGVhZCBvZiBSZWdRdWVyeVZhbHVlQSBpbgoJQ3J5cHRFbnVtUHJvdmlkZXJUeXBlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRGFyd2luL01hYyBPUyBYIFdlYWsgaW1wb3J0IHdvcmthcm91bmQuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCS0gQmUgbW9yZSBhY2N1cmF0ZSBvbiBEYXJ3aW4gc3RhY2sgc2l6ZS4KCS0gRGVsYXkgaW1wb3J0IGZpeCBvbiBQb3dlclBDIGhvc3RzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDaGFuZ2UgdGhlIHdheSB0aGF0IHRoZSByZXNwb25zZSBoZWFkZXJzIGFyZSByZWNvbnN0cnVjdGVkIHRvIHJlZHVjZQoJICB0aGUgY2hhbmNlIG9mIG1lbW9yeSBiZWluZyBpbmNvcnJlY3RseSBhbGxvY2F0ZWQuCgktIFJldHVybiB0aGUgY29ycmVjdCBlcnJvciB3aGVuIGEgaGVhZGVyIGlzIG5vdCBmb3VuZC4KCS0gcmVtb3ZlIGFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycyBiZWZvcmUgcmVjZWl2aW5nIG5ldyBvbmVzIHNvIHRoYXQgd2UKCSAgZG9uJ3QgbWVyZ2UgaGVhZGVycyBmcm9tIHR3byByZXNwb25zZXMuCgktIEFkZCBleHRyYSBzdGFuZGFyZCBmaWVsZHMuCgktIFNwbGl0IHRoZSBzdGF0dXMgbGluZSBpbnRvIGh0dHAgdmVyc2lvbiwgc3RhdHVzIGNvZGUgYW5kIHN0YXR1cyB0ZXh0CgkgIGFuZCBzdG9yZSB0aG9zZSBpbiB0aGUgcmVzcG9uc2UgZGF0YSwgd2l0aG91dCB1c2luZyB1c2UgYSBmYWtlCgkgIGZpZWxkLgoKMjAwNC0wNy0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJQWRkIHRoZSBzZWxlY3RlZCBleHRlbnNpb24gZnJvbSBmaWxlIHR5cGUgZmlsdGVyIGlmIGZpbGUgbmFtZSBkb2VzIG5vdAoJY29udGFpbiB0aGUgZmlsZSBleHRlbnNpb24uCgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeGVkIG1lbW9yeSBhbGxvY2F0aW9uIGJ1Zy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFuIFNORENUTF9EU1BfU0VURFVQTEVYIGZhaWx1cmUgc2hvdWxkIGJlIGEgV0FSTigpLCBub3QgYW4gRVJSKCksCglzaW5jZSB0aGUgT1NTIHNwZWNpZmljYXRpb25zIHNheSB3ZSBoYXZlIHRvIGNhbGwgaXQgYmVmb3JlIGtub3dpbmcgaWYKCXRoZSBzb3VuZCBjYXJkIGlzIGZ1bGwtZHVwbGV4IGNhcGFibGUuCgoJKiBpbmNsdWRlL3dpbnJlZy5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBSZWdPcGVuQ3VycmVudFVzZXIgcHJvdG90eXBlLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXBvcnQgd2luMmsgc2VydmljZSBwYWNrIDQgaW5zdGVhZCBvZiAzLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgYWxsb3dzIG9uZSB0byBjYWxsIE1zaU9wZW5QYWNrYWdlCgl3aXRoICNubm4gd2hlcmUgbm5uIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaGFuZGxlIHRvIGFuIG9wZW4KCWRhdGFiYXNlLgoKCSogdG9vbHMvd2luZS5pbmY6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVbmNvbW1lbnQgaW1wbGVtZW50ZWQgaW4gV2luZSBtc3ZpZGMzMiAoTVNWQy9DUkFNKSBjb2RlYy4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBvcGVuIHJlYWQtb25seSBBVkkgZmlsZXMgZm9yIGEgcGxheWJhY2suCgoJKiBkbGxzL21zaS92ZXJzaW9uLnJjOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHRoZSBNU0kgdmVyc2lvbiB0byBiZSB0aGUgc2FtZSBhcyBvbiB3aW4yay4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9udCByZXBsYWNlbWVudHMgdG8gd29yayB3aXRoIGJpdG1hcCBmb250cy4KCUVudW1lcmF0ZSBTeXN0ZW0sIFRlcm1pbmFsLCBGaXhlZFN5cyBpbiB0aGF0IG9yZGVyLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEZWxheWVkIGltcG9ydCBmaXggZm9yIERhcndpbiBhbmQgUG93ZXJQQyBIb3N0LgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYzoKCVNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJQWRkZWQgdGVzdHMgZm9yIHJlZ2lzdGVyaW5nIGEgZGlhbG9nIGJveCBjcmVhdGVkIGJ5IHVzaW5nIHRoZSBDTEFTUwoJZGlyZWN0aXZlIGluIGEgcmVzb3VyY2UgZmlsZSwgdGhlbiBjcmVhdGluZyB0aGUgZGlhbG9nIHVzaW5nCglDcmVhdGVEaWFsb2dQYXJhbS4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvZGlhbG9nMTYuYywgd2luZG93cy9kZWZkbGcuYywKCSAgd2luZG93cy9kaWFsb2cuYzoKCUFsbG9jYXRlIHRoZSBkaWFsb2cgaW5mbyBpbiBESUFMT0dfQ3JlYXRlSW5kaXJlY3QgaWYgdGhpcyB3YXNuJ3QKCWFscmVhZHkgZG9uZSBieSB0aGUgZGlhbG9nIHByb2NlZHVyZS4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUHJldmVudCB0aGUgZGVidWcgYnVmZmVyIGZyb20gb3ZlcmZsb3dpbmcgb24gbG9uZyBzdGFicy4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBGaXhlZCBoYW5kbGluZyBvZiBpbmNsdWRlcyBzdGFjay4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglGaXggMTYvMzIgYml0IHNlcGFyYXRpb24uCgoyMDA0LTA3LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVkbGcvb2xlZGxnX0RlLnJjLCBkbGxzL3NlcmlhbHVpL0RlLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX0RlLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvRGUucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvRGUucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvRGUucmMsCgkgIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglNb3JlIEdlcm1hbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSBEaXJlY3RTb3VuZCByZWZlcmVuY2UgY291bnRzIGJ5IGJ1ZmZlcnMgYW5kIGFkZCBEZXN0cm95CglmdW5jdGlvbnMgdG8gYnVmZmVyIGNvbXBvbmVudHMgYW5kIERpcmVjdFNvdW5kIHRvIGFsbG93IHByb3BlcgoJZGVzdHJ1Y3Rpb24gZXZlbiB3aXRoIG91dHN0YW5kaW5nIHJlZmVyZW5jZXMuCglSZW1vdmUgdHJhaWxpbmcgd2hpdGUgc3BhY2UuCglBZGQgdGVzdHMgZm9yIHByb3BlciByZWxlYXNlIGV2ZW4gd2l0aCBhY3RpdmUgYnVmZmVycy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFjY2VwdCBoZWFkZXJzIHdpdGhvdXQgXHJcbiBlbmRpbmcgaW4gSHR0cEFkZFJlcXVlc3RIZWFkZXJzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0Lmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZWZlcmVuY2UgY291bnRpbmcgZm9yIENSWVBUUFJPViBvYmplY3RzLgoJSW1wbGVtZW50ZWQgQ3J5cHRDb250ZXh0QWRkUmVmLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIEdldFZvbHVtZUluZm9ybWF0aW9uVyBoYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgbm8gcGVybWlzc2lvbnMKCWFjY2Vzc2luZyB0aGUgZGV2aWNlIHRoZSBzYW1lIHdheSBhcyB3aGVuIG5vIGRldmljZSBpcyBmb3VuZC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCBhbmQgY2xlYW5lZCBBUEkgZG9jcy4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglBbGxvdyBzcGVjaWZ5aW5nIG11bHRpcGxlIGdyYXBoaWNzIGRyaXZlcnMgYW5kIHVzZSB0aGUgZmlyc3Qgb25lIHRoYXQKCWxvYWRzIHN1Y2Nlc3NmdWxseS4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTWFrZSB4MTFkcnYgZmFpbCB0byBsb2FkIHdoZW4gaXQgY2FuJ3Qgb3BlbiB0aGUgZGlzcGxheSwgaW5zdGVhZCBvZgoJa2lsbGluZyB0aGUgd2hvbGUgcHJvY2Vzcy4KCgkqIHRvb2xzL3dpbmVkdW1wL25lLmM6CglBZGRlZCBzdXBwb3J0IGZvciBkdW1waW5nIGV4cG9ydGVkIGVudHJ5IHBvaW50cyBpbiBORSBtb2R1bGVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy90d2Fpbi8uY3ZzaWdub3JlLCBkbGxzL3R3YWluL01ha2VmaWxlLmluLAoJICBkbGxzL3R3YWluL3R3YWluLnNwZWMsIGRsbHMvdHdhaW4vdHdhaW4xNl9tYWluLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgYSAxNiBiaXQgcGFpciBETEwgZm9yIFRXQUlOLgoKMjAwNC0wNy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHN3aXRjaCAodW5zaWduZWQgaW50KSB7IGNhc2UgLTEgLyAtMjogfSBwcm9ibGVtcy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYWRlcnMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRG9uJ3QgdGVzdCBpMzg2IHR5cGVzIG9uIG5vbiBpMzg2LgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgZmV3IHN0dWIgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUFNNX0hXTkRUT0lOREVYLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLAoJICBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIHNvbWUgbW9yZSBBUEkgZG9jcy4KCgkqIGRsbHMvbXNpL2NvbmQueTogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3Blcmx5IGhhbmRsZSBxdW90ZWQgbnVtYmVyIGxpdGVyYWxzIGluIE1TSSBjb25kaXRpb24gc3RhdGVtZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHVicyBmb3Igc29tZSBuZXcgcHJvcGVydHkgc2hlZXQgbWVzc2FnZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhY2NlbGVyYXRvcnMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBXaW5kb3dzIGFsd2F5cyBzdHJpcHMgdGhlIGhpZ2ggYml0ICgweDgwKSBvZiB0aGUgZlZpcnQgbWVtYmVyIGluIHRoZQoJICBhY2NlbGVyYXRvciBzdHJ1Y3R1cmUuCgktIElmIHRoZSBGVklSVEtFWSBiaXQgb2YgZlZpcnQgaXMgc2V0LCB0aGUgdmFsdWUgb2YgdGhlIGtleSBmaWVsZCBpcwoJICBsaW1pdGVkIHRvIHRoZSByYW5nZSBvZiBvbmUgYnl0ZS4KCS0gUmVtb3ZlIGFubm95aW5nIGZpeG1lcyBhYm91dCBhY2NlbGVyYXRvciB0YWJsZSBjaGVja2luZy4gIFdpbmRvd3MKCSAgYXBwZWFycyB0byBkbyBubyBtb3JlIGNoZWNraW5nIHRoYW4gdGhlIGFib3ZlLgoKCSogZGxscy9tc3JsZTMyL21zcmxlX0phLnJjLCBkbGxzL21zcmxlMzIvcnNyYy5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0phLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0phLnJjLAoJICBwcm9ncmFtcy93Y21kL0phLnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCUhhamltZSBTZWdhd2EgPHdpbmV0aXBzQHNpZGVuZXQuZGRvLmpwPgoJQWRkZWQgSmFwYW5lc2UgdHJhbnNsYXRpb24gZm9yIG1zcmxlMzIsIHdpbmluZXQsIHdjbWQuCglGaXhlZCB1bnRyYW5zbGF0ZWQgbWVzc2FnZXMgb2YgcmVnZWRpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIHRoZSBTcGFuaXNoIHNoZWxsMzIgdHJhbnNsYXRpb24gYW5kIG1hZGUgc29tZSBjb3JyZWN0aW9ucyB0bwoJb3RoZXIgbGFuZ3VhZ2UgZmlsZXMuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWZpbml0aW9ucyBmb3IgdjUuODAgbWVzc2FnZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggY29tbWFuZCBsaW5lIHBhcnNpbmcuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBDb3B5QWNjZWxlcmF0b3JUYWJsZSBjYW4gY2F1c2UgYSBidWZmZXIgb3ZlcmZsb3cgYmVjYXVzZSBpdCB1c2VzIGFuCgkgIGluY29ycmVjdCBjb21wYXJpc29uIGJldHdlZW4gdGhlIG51bWJlciBvZiBhY2NlbGVyYXRvciBlbnRyaWVzCgkgIGF2YWlsYWJsZSBhbmQgdGhlIG51bWJlciBvZiBhY2NlbGVyYXRvciBlbnRyaWVzIGluIHRoZSBvdXRwdXQgYnVmZmVyLgoJLSBNeSB0ZXN0cyBzaG93IHRoYXQgQ29weUFjY2VsZXJhdG9yVGFibGUgYWx3YXlzIHN0cmlwcyB0aGUgaGlnaCBiaXQKCSAgb2YgdGhlIGZWaXJ0IG1lbWJlciBvZiB0aGUgYWNjZWwgc3RydWN0LgoJLSBDYWxsaW5nIERlc3Ryb3lBY2NlbGVyYXRvclRhYmxlIHdpdGggYSBOVUxMIGFjY2VsZXJhdG9yIHNob3VsZAoJICByZXR1cm4gRkFMU0UuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9EZS5yYywgZGxscy9tc2FjbS9tc2FjbS5yYywKCSAgZGxscy9tc2FjbS9tc2FjbV9EZS5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9EZS5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0RlLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLCBkbGxzL3NlcmlhbHVpL0RlLnJjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLCBkbGxzL3NldHVwYXBpL0RlLnJjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfRGUucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVHJhbnNsYXRlZCBzb21lIEVuZ2xpc2ggcmVzb3VyY2UgZmlsZXMgaW50byBHZXJtYW4uCgoJKiBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIChMUERJUkVDVE1VU0lDTE9BREVSOCkgY2FzdC4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZldyByZWdpb24gZGVidWcgbWVzc2FnZXMuCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWlub3Igc3BlbGxpbmcgZml4LgoKCSogZGxscy91c2VyL2V4dGljb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RvcCBQcml2YXRlRXh0cmFjdEljb25zIGZyb20gY3Jhc2hpbmcgZ2l2ZW4gYW4gaW52YWxpZCBpY29uIGluZGV4LgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIGx2YWx1ZSBjYXN0cyB0aGF0IGFyZSBubyBsb25nZXIgc3VwcG9ydGVkLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGEgcGllY2Ugb2YgZGVhZCBjb2RlIGNhdXNpbmcgYSB3YXJuaW5nLgoKCSogZGxscy9zZWN1cjMyL3NlY3VyMzIuYywgZGxscy9zZWN1cjMyL3NlY3VyMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBHZXRDb21wdXRlck9iamVjdE5hbWUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NlY2V4dC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNlY2V4dC5oLgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgZG91YmxlIGFwcGxldCA9IGFwcGxldCA9IGFzc2lnbm1lbnQuCglSZW1vdmVkIHNpY19oZHBhIG9ubHkgdXNlZCBpbiAxIEMgZmlsZSBhcyBzdGF0aWMgdmFyLgoJTWFrZSBWVF9TaGVsbF9JTWFsbG9jMzIgYW5kIHJlbGF0ZWQgdmFyaWFibGVzIHN0YXRpYy4KCgkqIGRsbHMvb2xlMzIvcmVnc3ZyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSUlEX0lPYmplY3RXaXRoU2l0ZSBpcyBhbHJlYWR5IGluIGxpYnV1aWQsIG5vIG5lZWQgdG8gZGVjbGFyZSBoZXJlLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJTWFsbG9jIHZ0YWJsZXMgYXJlIHN0YXRpYy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIGRlZmluaXRpb25zIG9mIHN0YXRpYyB2dGFibGVzIGZyb20gaGVhZGVyIHRvIGRwbGF5LmMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgSEtFWV9EWU5fREFUQVxDb25maWcgTWFuYWdlclxFbnVtIHRvIHJlZ2lzdHJ5LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gb24gJ2J0IDx0aWQ+JyBjb21tYW5kLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIGhhbmRsZSB0aGUgZnJhbWUtYnVmZmVyIGxvY2tpbmcgY2FzZS4KCgkqIGRsbHMvcHNhcGkvdGVzdHMvbW9kdWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCB0ZXN0cyBvZiBHZXRNb2R1bGVGaWxlTmFtZUEgb24gOTgvWFAuCgoJKiBkbGxzL3gxMWRydi9kaWJfY29udmVydC5jLCBkbGxzL3gxMWRydi9kaWJfc3JjX3N3YXAuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgbHZhbHVlIGNhc3RzIC8gcG9zdGluY3JlbWVudCBtaXhlcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CgktIENyZWF0ZSBJRGlyZWN0U291bmQgYW5kIElEaXJlY3RTb3VuZDggb2JqZWN0cyB1c2luZyB0aGUKCSAgQ29DcmVhdGVJbnN0YW5jZSBDT00gZnVuY3Rpb24gdG8gdGVzdCB0aGUgQ2xhc3MgRmFjdG9yeSBpbnRlcmZhY2VzLgoJLSBDcmVhdGUgSURpcmVjdFNvdW5kIGFuZCBJRGlyZWN0U291bmQ4IG9iamVjdHMgdXNpbmcgQ3JlYXRlRGlyZWN0U291bmQKCSAgYW5kIENyZWF0ZURpcmVjdFNvdW5kOCB1c2luZyBhIE5VTEwgZGV2aWNlIEdVSUQuCgoyMDA0LTA3LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lWZXJpZnlQYWNrYWdlLCBjb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJSW1wbGVtZW50IE1lc3NhZ2VCb3gtYmFzZWQgUmVzdGFydERpYWxvZygpIGFuZCBSZXN0YXJ0RGlhbG9nRXgoKSwgdXNlCglzdHJpbmcgcmVzb3VyY2VzIGZvciBFeGl0V2luZG93c0RpYWxvZygpIHRvIGFsbG93CglpbnRlcm5hdGlvbmFsaXphdGlvbi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksIGRsbHMvbXNpL2NyZWF0ZS5jLAoJICBkbGxzL21zaS9kaXN0aW5jdC5jLCBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvaW5zZXJ0LmMsCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsCgkgIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvcmVjb3JkLmMsCgkgIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmMsCgkgIGRsbHMvbXNpL3VwZGF0ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZmNvdW50IGFsbCBvYmplY3RzLCBhbmQgdXNlIHBvaW50ZXJzIGludGVybmFsbHkuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IFJvYiBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBUUkFDRSB0byBSZWFkRmlsZUV4LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV3JpdGUgdGhlIGVuY29kZWQgR1VJRHMgZm9yIHByb2R1Y3QgcmVnaXN0cmF0aW9uIGluIHRoZSBJbnN0YWxsZXIKCXJlZ2lzdHJ5LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywKCSAgZGxscy9tc2kvbXNpcXVlcnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwIG9mIGFjdGlvbnMuCgoJKiBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcmVjb3JkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3R1YiBmb3IgTXNpTW9kaWZ5VmlldywgZml4IGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBsb2dnaW5nLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJT3V0cHV0IFgxMSBwcm90b2NvbCBlcnJvcnMgYmVmb3JlIGJyZWFraW5nIGludG8gZGVidWdnZXIuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUJldHRlciBlcnJvciBjaGVja2luZyBhbmQgcmVjb3ZlcnkuCgoJKiBjb250cm9scy9zY3JvbGwuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3Igc2Nyb2xsIEFQSXMsIGZpeCBhIGZldyBidWdzIHNwb3R0ZWQgYnkgaXQuCgoyMDA0LTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgV1NfSFNDUk9MTCBzdHlsZSB0byB0aGUgbm90ZXBhZCdzIGVkaXQgY29udHJvbC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZ2Rpb2JqLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTZXZlcmFsIEdESSBvYmplY3QgaGFuZGxpbmcgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHRvIHRha2UgYSBIR0RJT0JKCglpbnN0ZWFkIG9mIGEgSEFORExFLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CgktIFNldHRpbmcgdGhlIHNjcm9sbCByYW5nZSB3aXRoIHRoZSAiYlJlZHJhdyIgZmxhZyBzZXQgdG8gdHJ1ZSBvbiBhCgkgIG5vbi1jb250cm9sIHNjcm9sbGJhciByZXN1bHRlZCBpbiB0aGUgc2Nyb2xsYmFyIGJlaW5nIGRyYXduIG92ZXIgdGhlCgkgIHdob2xlIHdpbmRvdyBhcmVhLgoJLSBJZiB5b3UgZG9uJ3Qgc2V0IFdTX0hTQ1JPTEwvV1NfVlNDUk9MTCBvbiB3aW5kb3cgY3JlYXRpb24sIHNldHRpbmcgYSBzY3JvbGwKCSAgcmFuZ2UgZG9lcyBub3RoaW5nLiBTZXR0aW5nIHRoZSBzY3JvbGwgcmFuZ2UgdG8gYSBub24temVybyByYW5nZSBzaG91bGQgY2F1c2UKCSAgc2Nyb2xsIGJhcnMgdG8gYmUgZGlzcGxheWVkLiBTZXR0aW5nIHRoZSByYW5nZSB0byBhIHplcm8gcmFuZ2UKCSAgc2hvdWxkIGNhdXNlIHRoZSByZWxldmFudCBzY3JvbGwgYmFyIHRvIGJlIGhpZGRlbi4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJZiB0aGUgc2VsZWN0aW9uIG93bmVyIGRvZXNuJ3QgdW5kZXJzdGFuZCBUQVJHRVRTLCB0cnkgcmV0cmlldmluZwoJWEFfU1RSSU5HLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGNhc2Ugd2hlbiBkYXRhIHR5cGUgaXMgbm90IHJlZ2lzdGVyZWQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgSEtFWV9EWU5fREFUQSBzdXBwb3J0LgoKMjAwNC0wNy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RocmVhZC5jOgoJUm9nZXIgT2xzb24gPHU2MEBjb21jYXN0Lm5ldD4KCUFkZGVkIHN0dWIgZm9yIENyZWF0ZVJlbW90ZVRocmVhZCgpLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU51bWJlciBvZiBhcmd1bWVudHMgdG8gSURpcmVjdFNvdW5kQnVmZmVyOF9HZXRPYmplY3RJblBhdGggd2FzIHdyb25nLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBpbmNsdWRlL3dpbm50Lmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQWRkIG1pc3NpbmcgcHJpdmlsZWdlIG5hbWVzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGFsc28gQUNQLCBPRU1DUCBhbmQgTUFDQ1AgaW4gcmVnaXN0cnkgb24gbG9jYWxlIGNoYW5nZS4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUFkZGVkIERhcndpbiBzdXBwb3J0IGluIGdldF9kZWZhdWx0X2RyaXZlX2RldmljZS4KCjIwMDQtMDctMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRml4ZWQgWDExRFJWX0dldERDIGZvciB0aGUgZGVza3RvcCB3aW5kb3cuCglVc2UgdGhlIGNsaWVudCB3aW5kb3cgYXMgZHJhd2FibGUgd2hlbiBwb3NzaWJsZS4KCgkqIHNlcnZlci93aW5kb3cuYzoKCWdldF92aXNpYmxlX3JlZ2lvbjogZG8gbm90IGNsaXAgb3V0IHNpYmxpbmdzIG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL2tlcm5lbC92eGQuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUNvcnJlY3QgZXJyb3IgY29kZSByZXR1cm5lZCBieSBDcmVhdGVGaWxlIHdoZW4gZ2l2ZW4gYSBub24tZXhpc3RlbnQKCVZ4RCBvbiBOVCwgYWRkIGEgdGVzdCBjYXNlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZmNvdW50aW5nIGZpeGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIGV4cGxhbmF0aW9ucyB0byBjb21wb2JqLmMsIGltcGxlbWVudCBmbHVzaGluZyBtZXNzYWdlIHF1ZXVlCglvbiBzaHV0ZG93bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgdG9vbHRpcCBvbiBkZW1hbmQgaW4gdGhlIExpc3R2aWV3LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJUmljaGFyZCBTdG9uZWhvdXNlIDxyaWNoYXJkQHJzdG9uZWhvdXNlLmNvLnVrPgoJVXBkYXRlZCBmb3IgdGhlIG5ldyAnZG9zZGV2aWNlcycgZGlyZWN0b3J5IHN5c3RlbS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJU3VwcHJlc3Mgc29tZSBtb3JlIGVycm9yIG1lc3NhZ2UgYm94ZXMuCglUcnVuY2F0ZSByZXBvcnQgZmlsZSBpZiB0b28gYmlnLgoKCSogZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBdm9pZCBzZWdmYXVsdHMgb24gdW5pbml0aWFsaXplZCBkYXRhLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IGEgdHlwbyBpbiB0aGUgVGFiQ3RybF9TZXRJdGVtIG1hY3JvLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXRsLy5jdnNpZ25vcmUsCgkgIGRsbHMvYXRsL01ha2VmaWxlLmluLCBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYywKCSAgZGxscy9hdGwvYXRsYmFzZS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBBZHZhbmNlZCBUZW1wbGF0ZSBMaWJyYXJ5LCB3aXRoIGp1c3QgYSBmZXcKCWZ1bmN0aW9ucyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcG9ydCBOT1RfSU1QTEVNRU5URUQgZm9yIG5vdCBpbXBsZW1lbnRlZCB0b2tlbiBjbGFzc2VzLgoKCSogc2VydmVyL2ZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNsYXRlIEVOT0RFViBhbmQgRU5YSU8gZXJyb3IgY29kZXMgdG8gTlQgc3RhdHVzIGNvZGVzLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyAqKkxQTFAgdHlwZWRlZnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJQ2hlY2sgZm9yIC1scmVzb2x2IGZvciBEYXJ3aW4uCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21sYW5nLmgsIGluY2x1ZGUvbWxhbmcuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIE11bHRpIExhbmd1YWdlIHN1cHBvcnQgSURMIGFuZCBoZWFkZXJzLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgaW5jbHVkZS9kc291bmQuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggSURpcmVjdFNvdW5kQnVmZmVyOF9Jbml0aWFsaXplIGZ1bmN0aW9uIHByb3RvdHlwZSBhbmQgdXNlLgoKCSogdG9vbHMvd3JjL25ld3N0cnVjLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2VuZXJpYyBTS0lQX1RBRyB0byBza2lwIGEgbnVtYmVyIG9mIGJ5dGVzLCB1c2UgaXQgd2hlcmUgYXBwbGljYWJsZS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2UgbHZhbHVlIGNhc3RzIG9mIHBvc3QgaW5jcmVtZW50cyBmb3IgbmV3ZXIgY29tcGlsZXIuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ3JlYXRlIERpcmVjdFNvdW5kIG9yIERpcmVjdFNvdW5kOCBkZXBlbmRpbmcgb24gcmlpZC4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGJpbmFyeSBmaWVsZHMgd2l0aCBzdHJlYW0gbmFtZXMgbG9uZ2VyIHRoYW4gdGFibGUgbmFtZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIENyZWF0ZVNob3J0Y3V0IGFuZCBQdWJsaXNoUHJvZHVjdC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvZGlzdGluY3QuYywKCSAgZGxscy9tc2kvaW5zZXJ0LmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywKCSAgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3RhYmxlLmMsCgkgIGRsbHMvbXNpL3VwZGF0ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRmV0Y2ggYmluYXJ5IHN0cmVhbXMgYXQgdGhlIHRhYmxlIGxldmVsLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTXNpR2V0UHJvcGVydHkgc2hvdWxkIHJldHVybiBlbXB0eSBzdHJpbmdzIG9uIGVycm9yLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCByZWdpc3RlcmluZyBDbGFzc2VzIGFuZCBQcm9nSUQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFJlZ2lzdGVyVHlwZUxpYnJhcmllcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFByb2Nlc3NDb21wb25lbnRzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTZW5kIHByb2dyZXNzIGFuZCBhY3Rpb24gbWVzc2FnZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IEFERExPQ0FMIHRvIG92ZXJyaWRlIElOU1RBTExMRVZFTCwgaW1wbGVtZW50IExhdW5jaENvbmRpdGlvbnMuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6IEF2b2lkIHVzaW5nIHN0cmxlbi4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYWRlcnMuYzogQWRkZWQgdGVzdHMgZm9yIGRpdl90IGFuZCBsZGl2X3QuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuaDogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRGVmaW5lIE1TVkNSVF9kaXZfdCBhbmQgTVNWQ1JUX2xkaXZfdC4KCgkqIGluY2x1ZGUvYWNsYXBpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0cnVzdGVlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglHZXQgY2VydGlmaWNhdGlvbiBmb3IgVmVyaWZ5Q2VydGlmaWNhdGlvbiBmcm9tIGRyaXZlciB0byBtYXRjaAoJR2V0Q2Fwcy4KCUNoYW5nZSBPU1MgZHJpdmVyIHRvIHJlcG9ydCBjZXJ0aWZpZWQuCglDaGFuZ2UgT1NTIGRyaXZlciB0byBzaG93IG1lc3NhZ2UgbmFtZSByYXRoZXIgdGhhbiBudW1iZXIgaW4gdHJhY2VzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDT1BZX0NPTE9SS0VZX0ZYOiBEbyBub3QgdXNlIGx2YWx1ZSBjYXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGJ1Z3MgaW4gcmVzb2x2ZV9mb2xkZXIuCgoyMDA0LTA3LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBY3RpdmF0ZSBmZWF0dXJlcyBhbmQgY29tcG9uZW50cyBiYXNlZCBvbiB0aGVpciB2YXJpb3VzIGNvbmRpdGlvbnMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmVnaW5uaW5ncyBvZiBjb3N0aW5nIGFuZCBvcmdhbml6aW5nIGludG8gY29tcG9uZW50cyBhbmQgZmVhdHVyZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjb21tYW5kIGxpbmUgcHJvY2Vzc2luZyBhbmQgZm9sZGVyIHBhdGhzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBNc2lHZXRUYXJnZXRQYXRoLCBNc2lHZXRTb3VyY2VQYXRoIGFuZCBNc2lTZXRUYXJnZXRQYXRoLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIG5ld2x5IGltcGxlbWVudGVkIFVQREFURSBjb2RlIHRvIHNldCBwcm9wZXJ0aWVzLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL3F1ZXJ5LmgsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS91cGRhdGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgVVBEQVRFIHF1ZXJ5LgoKCSogZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgdGhlIFdIRVJFIHBhcnQgb2YgYSBxdWVyeSBpbiBvbmUgZnVuY3Rpb24gY2FsbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTZXRUYXJnZXRQYXRoLCBzdGFydCB0aGUgYmFzaWNzIGZvciB0cmFja2luZyBVSSBsZXZlbC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLCBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBlbmhhbmNlZCAnaW5mbyBzaGFyZScgb3V0cHV0CgktIG1hZGUgdXNlIG9mIG5ldyBkYmdoZWxwIHB1cmUgRUxGIHN5bWJvbCBsb29rdXAKCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUJ1aWxkIGh0dHAgcmVxdWVzdHMgaW4gYSBtb3JlIGNvbnNpc3RlbnQgd2F5LgoJRml4IHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGJ1ZmZlci4KCURvbid0IHRyeSBjb252ZXJ0aW5nIHRoZSBvcHRpb25hbCBpbmZvcm1hdGlvbiBmcm9tIFcgdG8gQS4KCgkqIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYzogRml4ZWQgYSB3YXJuaW5nLgoKCSogZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2VwYXJhdGVkIERpcmVjdFNvdW5kQ3JlYXRlOCBpbnRvIHR3byBmdW5jdGlvbnMgYW5kIGFkZGVkIGEKCUlEaXJlY3RTb3VuZCBpbXBsZW1lbnRhdGlvbi4KCUFkZGVkIHByb3BlciBDT00gYmVoYXZpb3IgZm9yIFF1ZXJ5SW50ZXJmYWNlIGZvciBJRGlyZWN0U291bmQgYW5kCglJRGlyZWN0U291bmQ4LgoJRml4ZWQgYSBidWcgaW4gdGhlIGRzb3VuZC5oIGhlYWRlciBmaWxlIGZvciBJRGlyZWN0U291bmQ4CglDcmVhdGVTb3VuZEJ1ZmZlciBhbmQgRHVwbGljYXRlU291bmRCdWZmZXIuCglBZGRlZCBuZXcgdGVzdHMgZm9yIHByb3BlciBDT00gYmVoYXZpb3IgYW5kIGVuYWJsZXMgc29tZSBjb21tZW50ZWQgb3V0Cgljb2RlIGZvciB0ZXN0cyB0aGF0IHdvcmsgb24gd2luZG93cy4gIEFkZGVkIG5ldyB0ZXN0cyBmb3IKCUlEaXJlY3RTb3VuZDguCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc3RyaW5nIGNvbnZlcnNpb24gYnVncy4KCgkqIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgYnVmZmVyIG92ZXJydW4gaW4gYXV0b2NvbXBsZXRlLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9zdGFicy5jLCBkbGxzL2RiZ2hlbHAvc3ltYm9sLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgR0NDIHN0YXRpYyBsb2NhbCB2YXJpYWJsZXMKCS0gZml4ZWQgc29tZSBidWdzIGluIFNZTU9QVF9OT19QVUJMSUNTIGFuZCBTWU1PUFRfUFVCTElDU19PTkxZCgkgIGhhbmRsaW5nCgktIGluIHN0YWJzIHBhcnNpbmcsIGp1c3QgZHJvcCBhbnkgZGVidWcgaW5mbyBmb3IgYSBtb2R1bGUgaWYgc3RhYnMKCSAgcGFyc2luZyBmYWlscyAoaW5zdGVhZCBvZiBhc3NlcnQoKSdpbmcpCgktIHN5bWJvbCBsb29rdXAgbm93IGFsbG93cyBsb29rdXAgaW4gcHVyZSBFTEYgbW9kdWxlcwoJLSBmaXhlZCBzb21lIGJ1Z3MgaW4gc3ltYm9sIGVudW1lcmF0aW9uCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglNb3ZlIHZhcmlhbnQgY29kZSB0byBpdHMgb3duIGRlYnVnIGNoYW5uZWwuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAYWx0bGludXgucnU+CglSZXR1cm4gcHJvcGVyIGNvZGVwYWdlIHZhbHVlIGluIEdldENQSW5mb0V4LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdGFydCBpbXBsZW1lbnRpbmcgRmVhdHVyZSBhbmQgQ29tcG9uZW50IGxldmVsIGluc3RhbGwgY29udHJvbC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvY2F0ZSB0aGUgY29ycmVjdCBzaXplIHN0cmluZyBpbiBJbnRlcm5ldENyYWNrVXJsLgoKCSogZGxscy9zaGx3YXBpL2Fzc29jLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3VybC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG1lbW9yeSBhbGxvY2F0aW9uIHByb2JsZW1zLgoKMjAwNC0wNi0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL3JlY29yZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcmV0cmlldmFsIG9mIG51bCByZWNvcmRzIGFzIHN0cmluZ3MuCgoJKiBkbGxzL21zaS9pbnNlcnQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBJTlNFUlQgcXVlcnkgd2hlbiBpbnNlcnRpbmcgaW50ZWdlcnMgaW50byBhIHRhYmxlLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdGFydCBpbXBsZW1lbnRpbmcgTXNpT3BlblBhY2thZ2UuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3N0cmluZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBzdG9yYWdlIGZpbGUncyBHVUlEIHNvIG5hdGl2ZSBNU0kgcmVjb2duaXplcyBpdC4KCUZpeCBjcmFzaCB3aGVuIGluc2VydGluZyBtdWx0aXBsZSBjb2x1bW5zIHRoYXQgYXJlIGludmFsaWQuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvc3FsLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYWNrIGZpZWxkIHR5cGVzLCBmaXggcmVmIGNvdW50aW5nLgoKCSogZGxscy9tc2kvcmVjb3JkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS9zdHJpbmcuYywKCSAgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgVVBEQVRFIHF1ZXJ5LgoKCSogZGxscy9tc2kvY3JlYXRlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggZmllbGQgbnVtYmVyaW5nIHNvIHRoZSBDUkVBVEUgcXVlcnkgd29ya3MgZm9yIG11bHRpcGxlIGNvbHVtbnMuCgoJKiBkbGxzL21zaS9pbnNlcnQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgSU5TRVJUIHF1ZXJ5LgoKCSogZGxscy9tc2kvaW5zZXJ0LmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3Rva2VuaXplLmMsCgkgIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBTUUwgaW5zZXJ0IHF1ZXJ5IHdvcmsuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbXByL3duZXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUhlYXBBbGxvYyBmb3IgV1NUUiBtdXN0IGFsbG9jYXRlIGxlbiogc2l6ZW9mKFdDSEFSUykuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4ZWQgRXh0cmFjdCBwcm90b3R5cGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSBNREkgbWVzc2FnZSB0ZXN0cy4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZG8gU2V0V2luZG93UG9zKFNXUF9GUkFNRUNIQU5HRUQpIGluIHRoZQoJRGVmRnJhbWVQcm9jKFdNX1NFVFRFWFQpIGhhbmRsZXIsIERlZldpbmRvd1Byb2MgYWxyZWFkeSB0YWtlcyBjYXJlIG9mCglpdC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggY29udHJvbCBjb29yZGluYXRlcyBpbiBHZXJtYW4gYW5kIEZyZW5jaCB2ZXJzaW9ucyBvZiBvcGVuIGZpbGUKCWRpYWxvZy4KCVJlbW92ZSBkdXBsaWNhdGUgY29udHJvbCBpZHMgaW4gQ2F0YWxhbiwgUnVzc2lhbiBhbmQgVWtyYWluaWFuCglkaWFsb2dzLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCVNldCBSVExEX0dMT0JBTCB3aGVuIGxvYWRpbmcgdGhlIG9kYmMgZHJpdmVyIG1hbmFnZXIgc28gdGhhdCB3aGVuIGl0Cglsb2FkcyAgaXRzIG93biBkcml2ZXIgdGhhdCBkcml2ZXIgY2FuIGNhbGwgYmFjayBpbnRvIHRoZSBtYW5hZ2VyIChhcwoJdGhlIE9yYWNsZSBCZXRhIGRyaXZlciBkb2VzLCBmb3IgZXhhbXBsZSkuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBhbiBlcnJvciBpbiBDb01hcnNoYWxJbnRlcmZhY2UgaWYgdGhlIElVbmtub3duIHBvaW50ZXIgaXMgTlVMTAoJYW5kIGRvbid0IGNyYXNoLgoKCSogZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLCBpbmNsdWRlL3NobG9iai5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUZpeCBJRmlsZVN5c3RlbUJpbmREYXRhIG1ldGhvZCBvcmRlci4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglMb29rdXAgZHJpdmVyIGluZm9ybWF0aW9uIGluIHJlZ2lzdHJ5IGFuZCBzeXN0ZW0uaW5pLgoJTWFrZSB0aGUgY29kZSBpbnNwZWN0IHRoZSByZWdpc3RyeS9zeXN0ZW0uaW5pIGF0IGNhbGwgdGltZSwgcmF0aGVyCgl0aGVuIGluaXRpYWxpemF0aW9uIHRpbWUuCglDb2RlIGNsZWFudXBzLgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUxvb2sgdXAgZHJpdmVyIGluZm8gaW4gdGhlIHJlZ2lzdHJ5IGFzIHdlbGwgYXMgaW4gc3lzdGVtLmluaS4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBkb2N1bWVudGF0aW9uIGNsZWFudXAuCgoyMDA0LTA2LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglMb29rIHVwIGRyaXZlciBpbmZvIGluIHRoZSByZWdpc3RyeSBhcyB3ZWxsIGFzIGluIHN5c3RlbS5pbmkuCglDbGVhbnVwIGhhbmRsaW5nIG9mIGRyaXZlciBlbnVtZXJhdGlvbiBhbmQgZm91ckNDLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lHZXRTb3VyY2VQYXRoLgoJSW1wbGVtZW50IEJpbmFyeSBhbmQgRHdvcmQgZGF0YSB0eXBlIGZvciByZWdpc3RyeSB3cml0aW5nLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgY3VzdG9tIGFjdGlvbnMgdHlwZSAxIGFuZCAyLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgZGF0YWJhc2UgdGFibGUgbmFtZXMgb24gc3RhcnR1cC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpb24uYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW5wb3MuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHdpbmRvdyByZWdpb25zIGluIHRoZSBzZXJ2ZXIuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWZjb3VudGluZyBvZiBzdHJlYW1zLgoKCSogb2JqZWN0cy9yZWdpb24uYzogSWdub3JlIGVtcHR5IHJlY3RhbmdsZXMgaW4gRXh0Q3JlYXRlUmVnaW9uLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpR2V0VGFyZ2V0UGF0aEEvVy4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcmVjb3JkLmMsCgkgIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyByZWFkaW5nIHJlY29yZHMgY29udGFpbmluZyBzdHJlYW1zLgoKMjAwNC0wNi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2NvbmQueTogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIHdheSB0aGUgcGFyc2VyIHRha2VzIGlucHV0IHN0cmluZ3MuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVVzZSBYMTFEUlZfR2V0UmVnaW9uRGF0YSB0byBpbXBsZW1lbnQgWDExRFJWX1NldFdpbmRvd1JnbiBpbnN0ZWFkIG9mCglkdXBsaWNhdGluZyB0aGF0IGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglTZXQgdGhlIHBhbGV0dGUgZm9yIGltYWdlIGxpc3QgRElCcyB0aGF0IGhhcyA4IG9yIGxlc3MgYml0cyBwZXIKCXBpeGVsLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU3RhcnQgb2YgYmFsbG9vbiB0aXAgc3VwcG9ydC4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCURvbid0IGRpc3BsYXkgdGhlIGNvbW1hbmRsaW5lIHRleHQgKEEgdHJhY2Ugc3RpbGwgZ2l2ZXMgaXQpLgoJU2V0IGEgZmV3IGZvbnRzIHRvIGF2b2lkIHVzaW5nIHRoZSBob3JyaWJsZSBzeXN0ZW0gZm9udCBvbiBuYXRpdmUKCVdpbmRvd3MuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0cyBvZiBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSBmb3Igd2luOTggLyBYUC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0eXBlbGliIG1hcnNoYWxsZXIgc2FmZSBmb3Igc3lzdGVtcyB0aGF0IGRvbid0IGFsbG93IGV4ZWN1dGFibGUKCWNvZGUgb24gdGhlIGhlYXAsIHBsdWcgYSBsZWFrIG9mIHRoZSBhc3NlbWJseSBzdHViIGJsb2NrLgoKCSogcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIHNvbWUgU3BhbmlzaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfSmEucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywgZGxscy9tcHIvbXByLnJjLAoJICBkbGxzL21wci9tcHJfSmEucmMsIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fSmEucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19KYS5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywgZGxscy9zZXJpYWx1aS9KYS5yYywKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywgZGxscy9zZXR1cGFwaS9KYS5yYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX0phLnJjLCBkbGxzL3dpbmVwcy9yc3JjLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfSmEucmMsIGRsbHMvd2lubW0vd2lubW1fSmEucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0phLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3JlZ2VkaXQvSmEucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCUhhamltZSBTZWdhd2EgPHdpbmV0aXBzQHNpZGVuZXQuZGRvLmpwPgoJQWRkZWQgc29tZSBKYXBhbmVzZSB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwKCSAgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvdGFibGUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdGFydCBpbXBsZW1lbnRpbmcgYWN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJTWF0Y2ggcHJvdG90eXBlcyB0byBQbGF0Zm9ybSBTREsuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRHVtcCBmdW5jdGlvbiByZXR1cm4gdHlwZSBpbiB0eXBlbGliIHRyYWNlcywgYWRkIHRyYWNlIHN1cHBvcnQgZm9yCglWVF9IUkVTVUxULgoKCSogZGxscy9vbGVhdXQzMi9vYWlkbF9wLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBSRUZJSUQgdG8gSUlEKiBmb3Igc3RhY2sgZGVjbGFyYXRpb25zIHRvIGF2b2lkIGluaXRpYWxpemVycwoJYmVpbmcgZGlzY2FyZGVkLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJU2tpcCB0ZXN0cyBvZiBHZXRBY2NlcHRMYW5ndWFnZXNBIGlmIGEgY29ycmVjdCBjYWxsIHRvIHRoZSBmdW5jdGlvbgoJZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nIHVzZWZ1bC4KCgkqIGRsbHMvcHNhcGkvdGVzdHMvbW9kdWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVNraXAgdGVzdHMgd2l0aG91dCBlcnJvciBpZiBwc2FwaS5kbGwgY291bGQgbm90IGJlIGxvYWRlZC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGFuZ2UgZGVza3RvcCBzaXplIGZvciBfSU5TNTU3Ni5fTVAuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQ2xlYW4gdXAgdGhlIG1hc2sgZHJhd2luZyBjb2RlLgoJLSBJbXByb3ZlIGJpdG1hcCBub3QgZm91bmQgbWVzc2FnZS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGUgZnVuY3Rpb24gbmFtZXMgaW4gc29tZSBvZiB0aGUgY29tbWVudHMuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBBVF9TWVNJTkZPXyogaWYgaXQncyBtaXNzaW5nLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29ycmVjdCBzdHJ1Y3QgdGFnIG5hbWUgZm9yIFVEQUNDRUwuCglBZGQgbWlzc2luZyBUQ0lURU1IRUFERVIgYW5kIG9sZCBuYW1lcyBUQ19JVEVNSEVBREVSL1RDX0lURU0uCgoyMDA0LTA2LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVB1bGwgdGhlIGNvZGVwYWdlIGZyb20gdGhlIHN0cmluZyB0YWJsZS4KCgkqIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGNyYXNoIHRoYXQgb2NjdXJyZWQgd2hlbiBhbiBpbnZhbGlkIHF1ZXJ5IHN0cmluZyB3YXMgZGVsZXRlZAoJdHdpY2UuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6CglSZW1vdmUgdGhlIEFUX1NZU0lORk8gYW5kIEFUX1NZU0lORk9fRUhEUiB2YWx1ZXMgaWYgdGhlIHN5c2luZm8gcGFnZQoJaXMgaW4gb25lIG9mIG91ciByZXNlcnZlZCByYW5nZXMuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3F1ZXJ5LmgsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBxdWVyaWVzIGJ5IHN0cmluZyB2YWx1ZS4KCgkqIGluY2x1ZGUvbXNpLmgsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgaGVhZGVyIGRlY2xhcmF0aW9ucyBmb3IgbXNpLgoKMjAwNC0wNi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIHNlcnZlci9jbGlwYm9hcmQuYywgd2luZG93cy9jbGlwYm9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIGNsaXBib2FyZCBmdW5jdGlvbmFsaXR5IGFuZCBmaXggc29tZSBidWdzIHJldmVhbGVkCglieSBpdC4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvY3R5cGUuYywgZGxscy9tc3ZjcnQvZGF0YS5jLAoJICBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9lcnJuby5jLAoJICBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZXhpdC5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21haW4uYywKCSAgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsCgkgIGRsbHMvbXN2Y3J0L3NjYW5mLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLAoJICBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jLCBkbGxzL21zdmNydC93Y3MuYywgaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9laC5oLCBpbmNsdWRlL21zdmNydC9lcnJuby5oLAoJICBpbmNsdWRlL21zdmNydC9mY250bC5oLCBpbmNsdWRlL21zdmNydC9mbG9hdC5oLCBpbmNsdWRlL21zdmNydC9pby5oLAoJICBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21hdGguaCwgaW5jbHVkZS9tc3ZjcnQvbWJjdHlwZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYnN0cmluZy5oLCBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLCBpbmNsdWRlL21zdmNydC9zZXRqbXAuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLCBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3RpbWViLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL21zdmNydC9zeXMvdXRpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLCBpbmNsdWRlL21zdmNydC93Y2hhci5oLAoJICBpbmNsdWRlL21zdmNydC93Y3R5cGUuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3BsaXQgdGhlIE1TVkNSVCBpbXBsZW1lbnRhdGlvbiBoZWFkZXJzIGZyb20gdGhlIHB1YmxpYyBoZWFkZXJzLgoJRml4IHNvbWUgbmFtaW5nIGNvbnZlbnRpb25zIGFiZXJyYXRpb25zLgoJQWRkIHRlc3RzIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSB0d28gc2V0cyBvZiBzeW1ib2xzLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW51c2VyLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29ycmVjdCB0YWcgbmFtZXMgZm9yIFJFQ1RMIGFuZCBTQ1JPTExJTkZPIHN0cnVjdHMuCgoJKiBkbGxzL3JzYWJhc2UvbWFpbi5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0ByYmcuaW5mb3JtYXRpay50dS1kYXJtc3RhZHQuZGU+CglDaGFuZ2VkIHR5cGUgb2YgIlNpZ25hdHVyZSIgcmVnaXN0cnkga2V5IHZhbHVlIHRvIFJFR19CSU5BUlkuCgoyMDA0LTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvaGVhcC5jOgoJSW4gR2xvYmFsTWVtb3J5U3RhdHVzLCBhbHNvIGNhcCB0aGUgc3VtIG9mIGR3QXZhaWxQaHlzIGFuZAoJZHdBdmFpbFBhZ2VGaWxlIGF0IDJHYiB0byBhdm9pZCBhIGJ1ZyBpbiBQaG90b3Nob3AgNC4KCgkqIGxvYWRlci9rdGhyZWFkLmM6CglVc2Ugd2luZV9kbHN5bSBpbnN0ZWFkIG9mIGRsc3ltIHRvIGF2b2lkIHRoZSBnbGliYyBkbGVycm9yIGJ1Zy4KCUNhbGwgZGxzeW0gd2l0aCBSVExEX0RFRkFVTFQgZm9yIHN5bWJvbHMgdGhhdCB3ZSBkb24ndCByZWRlZmluZSB0bwoJd29yayBhcm91bmQgYW5vdGhlciBnbGliYyBidWcuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCBzbWFsbCBtaXN0YWtlIGluIHRoZSBwcmV2aW91cyB2aXNpYmxlIHJlZ2lvbiBwYXRjaC4KCjIwMDQtMDYtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBwcm90b3R5cGUgZm9yIE1ESSBtZXNzYWdlIHRlc3RzLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IGJvdGggZGVhY3RpdmF0ZWQgYW5kIGFjdGl2YXRlZCBNREkgY2hpbGRyZW4gcmVjZWl2ZQoJV01fTURJQUNUSVZBVEUgbWVzc2FnZSBpbiBhbGwgY2FzZXMuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1dJTkRPV1BPU0NIQU5HRUQgc2hvdWxkIGFsd2F5cyBjb250YWluIGEgZmluYWwgd2luZG93IHBvc2l0aW9uLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaW9uLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmM6CglNb3ZlZCB2aXNpYmxlIHJlZ2lvbiBjYWxjdWxhdGlvbiB0byB0aGUgc2VydmVyLgoKCSogd2luZG93cy9tdWx0aW1vbi5jOgoJRml4ZWQgd3JvbmcgVW5pY29kZSBzdHJpbmcgc3ludGF4IGluIEdldE1vbml0b3JJbmZvVy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgRVJSIG9uIGEgdXNlZCBjb25uZWN0aW9uIGJlaW5nIGRlc3Ryb3llZC4KCS0gRG9uJ3QgcHJpbnQgYW4gZXh0cmEgbmV3bGluZSBpbiB0aGUgb2xlcmVsYXkgY29kZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJQWRkIGEgLS1jb21tYW5kIG9wdGlvbiB0byB3aW5lZGJnLCBhZGQgYW4gImFsbCIgb3B0aW9uIHRvIHRoZQoJYmFja3RyYWNlIGNvbW1hbmQuCgoyMDA0LTA2LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglXZSBubyBsb25nZXIgbmVlZCB0byBtYWtlIHRoZSBpbXBvcnQgZGlyZWN0b3J5IHdyaXRhYmxlLCB0aGUgbG9hZGVyCgl0YWtlcyBjYXJlIG9mIHRoYXQgbm93LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL3ByZWxvYWRlci5jOgoJRG8gZGlyZWN0IExpbnV4IHN5c3RlbSBjYWxscyBpbiB0aGUgcHJlbG9hZGVyIHRvIGF2b2lkIHRyb3VibGUgd2l0aAoJc29tZSBicm9rZW4gc3RhdGljIGxpYmNzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogRmlsaXAgTmF2YXJhIDxuYXZhcmFmQHJlYWN0b3MuY29tPgoJVW5wcm90ZWN0IEltcG9ydCBBZGRyZXNzIFRhYmxlIHdoaWxlIGZpbGxpbmcgaXQuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4IGNvbXBpbGUgZXJyb3Igb24gbm9uLWkzODYuCgoyMDA0LTA2LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLAoJICBwcm9ncmFtcy93aW5lbGF1bmNoZXIuaW4sIHdpbmRvd3MvbXNnYm94LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZXBsYWNlIHNvbWUgbW9yZSAtZGVidWdtc2cgcmVmZXJlbmNlcyBmb3IgV0lORURFQlVHLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURlZmF1bHQgdG8gV2luOTggaW4gRExMIGxpbmthZ2UgaGV1cmlzdGljcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VvLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Lby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9TaS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjOgoJUm95Y2UgTWl0Y2hlbGwgSUlJIDxyb3ljZTNAZXYxLm5ldD4KCVNoZWxsMzIgcnVuIGRpYWxvZyBjb21ib2JveCBzaG91bGQgYWxzbyBoYXZlIFdTX1RBQlNUT1Agc3R5bGUuCgoJKiBkbGxzL2QzZDgvdXRpbHMuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJU29tZSBtb3JlIHRleHR1cmUgb3BzIGZpeGVzLgoKMjAwNC0wNi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJT25seSB1bm1hcCB0aGUgd2luZG93IHdoZW4gaXQgZ2V0cyBtb3ZlZCBvZmYtc2NyZWVuIGJ5IHRoZSBhcHAsIG5vdCBieQoJdGhlIHdpbmRvdyBtYW5hZ2VyLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUhhcmRjb2RlICJ3aW5lc2hlbGxsaW5rIiBpbiB3aW5lbWVudWJ1aWxkZXIsIHJlbW92ZSBpdCBmcm9tIHRoZSBjb25maWcKCWZpbGUuCgoJKiBjb250cm9scy9lZGl0LmM6IEtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglNb2RpZmllZCBFRElUX0VNX1VuZG8oKTogUmVtb3ZlZCB1bmRvIGJ1ZmZlciBsZW5ndGggY2hlY2sgZm9yCgllbXB0eS4gRURJVF9FTV9SZXBsYWNlU2VsKCkgaXMgY2FsbGVkIHdpdGggc2VuZF91cGRhdGUgcGFyYW1ldGVyIHNldAoJdG8gVFJVRS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUFkZCBhIGRlZGljYXRlZCBkZWJ1ZyBjaGFubmVsIGZvciBtZXNzYWdlIGJveGVzIHdoaWNoIG91dHB1dHMgdGhlCgljb250ZW50cyBvZiB0aGUgbWVzc2FnZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2hvd1dpbmRvdyBzaG91bGRuJ3QgZml4IFNXUF8gZmxhZ3MsIGl0J3MgdGhlIGpvYiBvZiBTZXRXaW5kb3dQb3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJLSBEZXRlY3Rpb24gb2YgLnNpemUgaW5zdHJ1Y3Rpb24uCgktIERldGVjdGlvbiBvZiB0aGUgYXNzZW1ibGVyIG5hbWUgcHJlZml4LgoKCSogZGxscy9udGRsbC9yZWxheS5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglGaXggYSBjb21waWxlIGVycm9yIGZvciBTTk9PUF9HZXRQcm9jQWRkcmVzcyBhbmQgUkVMQVlfR2V0UHJvY0FkZHJlc3MKCW9uIG5vbi1pMzg2LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRlc3RzIGZvciBjaGlsZCBhY3RpdmF0aW9uIGJ5IFNob3dXaW5kb3cvU2V0V2luZG93UG9zLgoKCSogZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGFsbG93IGNyZWF0aW9uIG9mIG5vdCBhbGlnbmVkIEVNRiByZWNvcmRzIGJ5IEdESSBjb2RlLgoKCSogY29udHJvbHMvbWVudS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIGJldHRlciBkaW1lbnNpb25zIGZvciBNREkgc3lzdGVtIG1lbnUgYnV0dG9ucyB0byBhdm9pZCBNREkgY2xpZW50Cgl3aW5kb3cgcmVzaXppbmcuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGQgbG9nZ2luZyB0byB0aGUgR2V0QWNjZXB0TGFuZ3VhZ2VzQSB0ZXN0cy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJTUFHRV9GSUxFX0xBUkdFX0FERFJFU1NfQVdBUkUgZmxhZy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglNYWtlIG9sZTMyIGEgZGVsYXktbG9hZCBpbXBvcnQgb2Ygc2hlbGwzMi4KCjIwMDQtMDYtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglUYWtlIHNwaW4gY291bnQgaW50byBhY2NvdW50IGluIFJ0bEVudGVyQ3JpdGljYWxTZWN0aW9uLgoKCSogZGxscy9udGRsbC9maWxlLmM6CglEb24ndCB1c2UgbHNlZWsgd2hlbiB0cnVuY2F0aW5nIGEgZmlsZSB0byBhdm9pZCBjb3JydXB0aW5nIHRoZSBjdXJyZW50CglmaWxlIHBvc2l0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggdHlwZWxpYiBtYXJzaGFsbGVyIHJlbGF5aW5nLCBhZGQgYSBjb21tZW50IGRlc2NyaWJpbmcgd2hhdCBpdCBpcywKCWRvbid0IHByaW50IHRoZSB1Z2x5IEwiIiBwYXJ0cyBvZiBVbmljb2RlIHN0cmluZ3MgaW4gdGhlIHJlbGF5IHRyYWNlLgoKCSogZGxscy9kc291bmQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTcGxpdCB0aGUgJ2Rzb3VuZCcgdGVzdCBpbnRvIHR3byBwYXJ0czoKCS0gdGhlIHNvdW5kIGZvcm1hdCB0ZXN0LiBQbGF5cyBhIDUgc2Vjb25kIHJlZmVyZW5jZSB0b25lIHRvIGhlbHAKCSAgZGVidWcgaXNzdWVzIHdpdGggdGhlIHRvbmUgZHVyYXRpb24gYW5kIGhlbHAgZGV0ZWN0IHN0dXR0ZXIgaXNzdWVzLgoJICBQcmludHMgZXhwbGFuYXRpb25zIGRlc2NyaWJpbmcgdGhlIHNvdW5kIGZvcm1hdCBpbnRlcmFjdGl2ZQoJICB0ZXN0LiBUaGVuIHBsYXlzIGEgMSBzZWNvbmQgdGVzdCB0b25lIGZvciBlYWNoIHN1cHBvcnRlZCBzb3VuZAoJICBmb3JtYXQuCgktIHRoZSAzRCBzb3VuZCB0ZXN0cy4gUGVyZm9ybXMgdGhlIHZvbHVtZSwgcGFubmluZywgbW92aW5nIGxpc3RlbmVyCgkgIHRlc3RzLCBldGMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJSW5jbHVkZSBuZXcgb3IgZm9yZ290dGVuIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggdGhlIEdldFByaXZhdGVQcm9maWxlSW50QSB0ZXN0cyBmb3IgdGhlIHdpbjl4IHBsYXRmb3JtLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB1c2VyL3Rlc3RzL3dpbi5jIHRlc3RzIHBhc3MgdW5kZXIgV2luZG93czk4LgoKCSogc2VydmVyL3F1ZXVlLmM6CglQcm9wZXJseSByZXNldCBtc2dfdGhyZWFkIHdoZW4gcmVsZWFzaW5nIHRoZSB0aHJlYWQgaW5wdXQgc3RydWN0dXJlLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglIaWRlIHRoZSBfaW5pdCBhbmQgX2Zpbmkgd3JhcHBlcnMgb24gZGFyd2luLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglSZW1vdmVkIHRoZSB3aW5lZGVmYXVsdC5yZWcgbWVzc2FnZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCVJlbW92ZSB0aGUgUlBDIGNvbm5lY3Rpb24gY2FjaGUgYXMgV2luZG93cyBkb2VzIG5vdCBhbGxvdyBtdWx0aXBsZQoJYmluZHMgb24gdGhlIHNhbWUgY29ubmVjdGlvbi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIG1pc3Npbmcgc3RhdGljIGNvbnRyb2wgc3R5bGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6CglBZGRlZCBhIGNvdXBsZSBvZiB0ZXN0cyBmb3IgU2V0Q3VycmVudERpcmVjdG9yeUEuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUNoZWNrIGZvciBub24tZXhpc3RlbnQgZGlyZWN0b3J5IGluIElOVDIxX1NldEN1cnJlbnREaXJlY3RvcnkgdG8KCXJldHVybiBhIHByb3BlciBlcnJvciB3aGVuIHRoZSBkaXJlY3RvcnkgaXMgbm90IG9uIHRoZSBjdXJyZW50IGRyaXZlLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdGVzdHMgZm9yIEdldEFjY2VwdExhbmd1YWdlc0EuCgoyMDA0LTA2LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJQ29ycmVjdCBjb25uZWN0aW9uIHJlbGVhc2VzIG9uIGVycm9yIHBhdGggaW4gUlBDUlQ0X09wZW5CaW5kaW5nLgoKCSogZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHNvbWUgbG9nZ2luZyB0byB0aGUgR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeUEgdGVzdHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUxvZyB0aGUgZm9ybWF0IHdoZW4gbWFwcGluZyB0aGUgc291bmQgZGV2aWNlIChvciBmYWlsaW5nIHRvKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgYml0bWFwIGZvbnRzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46IEFkZGVkIG1pc3NpbmcgZGVwZW5kZW5jeS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSBpbmNvcnJlY3Qgc3VwcG9ydCBmb3IgRnJlZUJTRCBhbmQgTmV0QlNEIGluCglEVkRfU3RhcnRTZXNzaW9uKCkuCgoJKiBkbGxzL3JzYWJhc2UvbWFpbi5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYW4gaW5jb3JyZWN0IExlYXZlQ3JpdGljYWxTZWN0aW9uLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBpbGxlZ2FsIGx2YWx1ZSBjYXN0cyAvIGluY3JlbWVudHMuCgoyMDA0LTA2LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDQwNjE1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTA2LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQVVUSE9SUzogVXBkYXRlZCBhdXRob3JzIGxpc3QuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvUkVBRE1FLCBwcm9ncmFtcy93aW5ldGVzdC9kaXN0LnJjLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLnJjLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ndWlyZXMuaCwgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWtldGVzdCwgcHJvZ3JhbXMvd2luZXRlc3QvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmgsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LnJjOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBSZXNvdXJjZSBzY3JpcHQgcmVzdHJ1Y3R1cmluZy4KCS0gQnVpbGQgaW5mbyBldCBhbC4gaXMgZ2l2ZW4gYnkgZmlsZXMgaW5zdGVhZCBvZiBlbnYuIHZhcnMuCgktIFN0b3JlIHRoYXQgaW5mb3JtYXRpb24gaW4gcmVzb3VyY2VzLgoJLSBNYWtlIHRoZSBtYWluIHdpbmRvd3Mgbm90IHJlc2l6ZWFibGUuCgktIEluc2lzdCBvbiBjcmVhdGluZyBhIGZyZXNoIGxvZyBmaWxlLgoJLSBJbnRyb2R1Y2UgdGhlIG1ha2UgZGlzdCB0YXJnZXQuCgoJKiBsaWJzL3dpbmUvY29uZmlnLmMsIGxvYWRlci9wcmVsb2FkZXIuYzoKCUFkZCB0aGUgcHJlbG9hZGVyIGl0c2VsZiBhcyBhcmd2WzBdIGFuZCByZW1vdmUgaXQgYWdhaW4gYmVmb3JlIHJ1bm5pbmcKCXRoZSByZWFsIGxvYWRlciwgdGhpcyB3YXkgdGhlIHBzIG91dHB1dCBtYWtlcyBtb3JlIHNlbnNlLgoKCSogZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBsb2FkZXIvbWFpbi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBhbmQgY2FzZSBmaXhlcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBjaGVjayBmb3IgU05EQ1RMX0RTUF9HRVRDQVBTIHNvIHRoYXQgaXQgaXMgY29tcGxpYW50IHdpdGggdGhlCglPU1Mgc3BlY2lmaWNhdGlvbi4KCU9ubHkgdGVzdCB0aGUgZGlmZmVyZW50IGZvcm1hdHMgaWYgdHJhY2luZyBpcyBvbi4KCgkqIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggdGhlIHRlc3RzIG9mIEdldERlZmF1bHRQcmludGVyQSBvbiB3aW4yayBpZiBubyBkZWZhdWx0IHByaW50ZXIgaXMKCWNvbmZpZ3VyZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIHRoZSBBUlRTX0luaXQoKSBlcnJvciBtZXNzYWdlIGZyb20gYW4gRVJSKCkgdG8gYSBXQVJOKCkgc2luY2UKCWl0IGNhbiBoYXBwZW4gaW4gcGVyZmVjdGx5IG5vcm1hbCBjb25kaXRpb25zLgoKCSogaW5jbHVkZS9kcGFkZHIuaCwgaW5jbHVkZS91eHRoZW1lLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHVzZSBVbmljb2RlIHN0cmluZyBsaXRlcmFscyB1bmxlc3Mgd2Ugc3BlY2lmaWNhbGx5IGtub3cgdGhleSBkbwoJd2hhdCB3ZSB3YW50IHRvLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3BzYXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvcHNhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvdGVzdHMvbW9kdWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldE1vZHVsZUJhc2VOYW1lIGZyb20gYXNjaWkgdG8gdW5pY29kZSwgYWRkZWQKCXNvbWUgdGVzdHMgZm9yIEdldE1vZHVsZUJhc2VOYW1lQS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU0hFTExfRXhlY3V0ZVcoKSBwYXNzZXMgYSBVbmljb2RlIGVudmlyb25tZW50IHRvIENyZWF0ZVByb2Nlc3NXKCkgc28KCWl0IG11c3Qgc3BlY2lmeSB0aGUgQ1JFQVRFX1VOSUNPREVfRU5WSVJPTk1FTlQgZmxhZy4gQWxzbyB0aGUKCVNIRUxMX0V4ZWN1dGVXMzIoKSBmdW5jdGlvbnMgd2lsbCBhbHdheXMgYmUgY2FsbGVkIHdpdGggYSBVbmljb2RlCgllbnZpcm9ubWVudCBzbyBhZGp1c3QgdGhlaXIgcHJvdG90eXBlIGFjY29yZGluZ2x5LgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgY2xpZW50L25vbmNsaWVudCB3aW5kb3cgZGltZW5zaW9ucyBjYWxjdWxhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vdGhyZWFkaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRvY3VtZW50YXRpb24gb24gdGhlIFdpbmUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9zY3JvbGwuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVNjcm9sbERDIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCBvdmVybGFwcGVkIHdpbmRvd3MuIFdpdGggdGhpcyBjaGFuZ2UKCVNjcm9sbFdpbmRvd0V4IGNhbiBiZSBtb3ZlZCBvdXQgb2YgWDExZHJ2LgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBpbnRyb2R1Y2VkIGJ5IG15IGxhc3QgcGF0Y2guCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IGVycm9uZW91cyB1c2Ugb2YgTE9DQUxFX1NEQVRFIGluIHRoZSBwbGFjZSBvZiBMT0NBTEVfU1NIT1JUREFURS4KCS0gRml4IGluY29ycmVjdCBhc3N1bXB0aW9ucyBhYm91dCBmb3JtYXQgc3RyaW5ncyB3aGVuIHBhcnNpbmcgZGF0ZQoJICBmb3JtYXRzIGFuZCBzZXR0aW5nIExPQ0FMRV9JREFURSBhbmQgTE9DQUxFX0lMREFURSB2YWx1ZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglNaWNoYWVsIEZyaXRzY2hlciA8bWljaGFlbEBmcml0c2NoZXIubmV0PgoJQWRkZWQgYSBHZXJtYW4gdHJhbnNsYXRpb24gb2YgUmVnZWRpdC4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGFsbG9jYXRlIGEgZ2x5cGhzZXQgdW50aWwgd2UgYWN0dWFsbHkgbmVlZCBpdC4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzoKCUFkZGVkIG1hZ2ljIG51bWJlciBpbiB0aGUgRmluZEZpcnN0RmlsZSBzdHJ1Y3R1cmUgdG8gYWxsb3cgbW9yZSByb2J1c3QKCWRldGVjdGlvbiBvZiBiYWQgaGFuZGxlcyAod2l0aCBoZWxwIGZyb20gQXJpYyBTdGV3YXJ0KS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVN0b3JlIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBpbiB0aGUgUEVCIHN0cnVjdHVyZS4KCU1vcmUgY29ycmVjdCBzdXBwb3J0IGZvciBzZXR0aW5nIGNyaXRpY2FsIHNlY3Rpb24gc3BpbiBjb3VudHMgKGJhc2VkCglvbiBhIHBhdGNoIGJ5IFJvYmVydCBTaGVhcm1hbikuCgoJKiBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcmVsYXkuYywgZGxscy9udGRsbC9yZXNvdXJjZS5jLAoJICBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29uc3QgY29ycmVjdG5lc3MuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTdXBwb3J0IGZvciByZWFkaW5nIGVuY3J5cHRlZCBEVkRzLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3RvcmUgZGVmYXVsdCAib3BlbiIgZnVuY3Rpb25hbGl0eSBvZiBTaGVsbEV4ZWN1dGUuCgoyMDA0LTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVJld3JvdGUgU2V0RmlsZVBvaW50ZXIgdG8gdXNlIFNldEZpbGVQb2ludGVyRXguCgoJKiBkbGxzL3VzZXIvZGRlL3NlcnZlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4ICdwb2ludGVycyBhcmUgbm90IHBlcm1pdHRlZCBhcyBjYXNlIHZhbHVlcycgY29tcGlsZSBlcnJvci4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFVzZSBob3VyZ2xhc3MgY3Vyc29yIGZvciBiZXR0ZXIgZmVlZGJhY2sgd2hlbiBleHBhbmRpbmcgbm9kZXMuCgktIFR1cm4gb2ZmIHJlZHJhd2luZyB3aGVuIGV4cGFuZGluZyB0byBtYWtlIGl0IGZhc3Rlci4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJLSBzdHJpcCBzdXBwb3J0IGZvciBkYXJ3aW4KCS0gV0lORV9HRVRfU09OQU1FIHN1cHBvcnQgZm9yIGRhcndpbgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlnbm9yZSBEZGVDbGllbnRUcmFuc2FjdGlvbiBlcnJvciBpbiBTaGVsbEV4ZWN1dGUuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdGhpbmcgaW4gU2hvd1dpbmRvdyhTV19TSE9XKSBpZiBhIHdpbmRvdyBpcyBhbHJlYWR5IHZpc2libGUuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9wYXRoLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3R5cGUuYywgaW5jbHVkZS9kYmdoZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgRW51bURpclRyZWUsIFNlYXJjaFRyZWVGb3JGaWxlLCBTeW1GaW5kRmlsZUluUGF0aCwKCSAgU3ltTWF0Y2hGaWxlTmFtZQoJLSBtYWRlIHVzZSBvZiBTeW1GaW5kRmlsZUluUGF0aCB0byBsb29rdXAgLmRiZyBhbmQgLnBkYiBmaWxlcwoJLSBmaXhlZCBhIGNyYXNoIGluIENvZGVWaWV3IGVudW0gaGFuZGxpbmcKCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9ycGNydDQvY3Byb3h5LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggcmVmIGNvdW50IG9uIHN0YW5kYXJkIHByb3h5IGNyZWF0aW9uLgoJLSBSZWxlYXNlIGNoYW5uZWwgYnVmZmVyIGluIFN0ZE1hcnNoYWxfVW5tYXJzaGFsSW50ZXJmYWNlLCBzaW5jZSB3ZSBubwoJICBsb25nZXIgdXNlIGl0IGFuZCB0aGUgcHJveHkgc2hvdWxkIGhhdmUgdGFrZW4gYSByZWZlcmVuY2Ugb24gaXQuCgktIEFkZCBhIGZldyBjb21tZW50cy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgcG9pbnRlcnMgYXJvdW5kIGludGVybmFsbHkgaW5zdGVhZCBvZiBoYW5kbGVzLgoKCSogZGxscy9tc3ZjcnRkL2RlYnVnLmMsIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3R1YiBmb3IgX0NydENoZWNrTWVtb3J5LgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU2V0RmlsZVBvaW50ZXJFeC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCAzMi0+MTYgbWFwcGluZyBmb3IgU0JNX0dFVFJBTkdFL1NCTV9TRVRSQU5HRSBtZXNzYWdlcy4KCUFkZGVkIHN1cHBvcnQgZm9yIFNCTV9HRVRSQU5HRTE2IG1lc3NhZ2UgaW4gdGhlIHNjcm9sbGJhciB3aW5kb3cKCXByb2MuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgdHJhY2luZyB0byBhbGwgZnVuY3Rpb25zLgoJQWRkZWQgZXJyb3IgZXhwbGFuYXRpb25zLgoJQ2hhbmdlZCBkZWJ1ZyBjaGFubmVsIGZyb20gbXNhY20gdG8gd2F2ZW1hcCBzbyBub3QgY29uZnVzZWQgd2l0aAoJbXNhY20uCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlZCAxMSBiaXQgc2FtcGxlIHNpemUgY2FwdHVyZSB0ZXN0IGJlY2F1c2UgYXQgbGVhc3QgMgoJbWFudWZhY3R1cmVycyBzb3VuZCBjYXJkcyBvbiB0d28gZGlmZmVyZW50IE9TcyBzZWVtIHRvIHN1cHBvcnQgdGhpcy4KCUFkZGVkIHNvbWUgaW52YWxpZCBwYXJhbWV0ZXIgY2hlY2tzIHRvIHdhdmVbSW4sT3V0XUdldERldkNhcHMuCglPbmUgdGVzdCBpcyBjb21tZW50ZWQgb3V0IGJlY2F1c2Ugd2luZSBkb2Vzbid0IGhhbmRsZSBpdCBwcm9wZXJseS4KCU1pbm9yIGluZm8gcHJpbnRpbmcgY2xlYW51cC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgcXVvdGluZyAiZmlsZTovLyUxIiBsaWtlIGZvcm1hdCBzdHJpbmdzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2xvYWRlci5jLCBsb2FkZXIvbWFpbi5jOgoJWWV0IGFub3RoZXIgZml4IGZvciB0aGUgTWFjT1MgWCBlbnZpcm9uIGJyYWluIGRhbWFnZS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZG9zbWVtLmMsCgkgIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwvaGVhcC5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC9zZWxlY3Rvci5jLAoJICBkbGxzL2tlcm5lbC90aHJlYWQuYywgbWlzYy9yZWdpc3RyeS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDb25zdCBjb3JyZWN0bmVzcywgcG9pbnRlciBjYXN0IGNvcnJlY3RuZXNzLCByZW1vdmVkIGV4dHJhbmVvdXMgJzsnLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3Byb2Nlc3MuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBBZGRlZCBQcm9jZXNzQmFzaWNJbmZvcm1hdGlvbiBjbGFzcyB0byBudGRsbC5OdFF1ZXJ5SW5mb3JtYXRpb25Qcm9jZXNzLgoJLSBNYWtlIHVzZSBvZiBpdCBpbiBrZXJuZWwzMi4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURvbid0IHVzZSAucHJldmlvdXMgaW5zdHJ1Y3Rpb24gb24gRGFyd2luLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJVXNlIHRoZSBzYW1lIHBhdGggdHJhbnNmb3JtYXRpb24gZm9yIFdhaXROYW1lZFBpcGUgYW5kCglDcmVhdGVOYW1lZFBpcGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXNldCBwbGF5ZWQgdmFyaWFibGVzIG9uIG9wZW4uCgoJKiBkbGxzL2tlcm5lbC9hY3RjdHguYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJU2V0IGxhc3QgZXJyb3IgdmFsdWUgdG8gRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQgaW4gUXVlcnlBY3RDdHhXKCkKCXRvIG1ha2UgUGhvdG9zaG9wIDcuMCB3b3JrIGFnYWluLgoKCSogZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sOiBPZmlyIFBldHJ1c2thIDxoYXRreUB1c2Vycy5zZi5uZXQ+CglSZXBsYWNlIC1kZWJ1Z21zZyBieSBXSU5FREVCVUcuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglNYWtlIFVzZVhyYW5kciBkZWZhdWx0IHRvIHRydWUgaW4gdGhlIG5vIGNvbmZpZyBmaWxlIGNhc2UuCgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2V0IGxhc3QgRERFIGVycm9yIGluIFhUWVBfRVhFQ1VURSBoYW5kbGVyIGFjY29yZGluZyB0byB0aGUgdmFsdWUKCXJldHVybmVkIGJ5IGFuIGFwcGxpY2F0aW9uLgoKCSogaW5jbHVkZS9kZGVtbC5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IENCUl9CTE9DSyBkZWZpbml0aW9uLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywgZGxscy9kM2Q4L3ZlcnNpb24ucmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IHZlcnNpb24gc3RyaW5nCgktIHNvbWUgZml4ZXMgdG8gQVRJIHNwZWNpZmljIHBhdGhzIG9mIHNldF90ZXhfb3AgKENocmlzdGlhbiBuZWVkcyB0bwoJICBjb21wbGV0ZSBpdCkKCS0gZml4IHVzZSBvZiBHTF9TVVBQT1JUKE5WX1RFWEdFTl9SRUZMRUNUSU9OKS4gSSBoYXZlIHVzZWQgdGhlIHdyb25nCgkgIGRlZmluZSwgSSdsbCBnZXQgYSBicm93biBwYXBlciBiYWcgOigKCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU3VwcG9ydCAxNS0gYW5kIDE2LWJpdCBjb2xvdXIgb3V0cHV0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUmVhbERyaXZlVHlwZS4KCgkqIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIEFTQ0lJIHJlZGlyZWN0IGNhbGxiYWNrcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBTZXRTY3JvbGxSYW5nZSBiZWhhdmUgbGlrZSBHZXRTY3JvbGxSYW5nZSBkb2VzLCBpLmUuIHNlbmQKCW1lc3NhZ2VzIHRvIHRoZSBjb250cm9sIGZvciBTQl9DVEwgY2FzZS4KCgkqIGRsbHMvd2lubW0vcGxheXNvdW5kLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBQbGF5U291bmQuCgoJKiBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQXZvaWQgY3Jhc2ggYnkgcGFzc2luZyBwb2ludGVyIHRvIFJlZ1NldFZhbHVlRXguCgoJKiBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTG9nIHRoZSBsYXN0IGVycm9yIHRvbyBpZiB0aGUgdGVzdHMgZmFpbCB3aXRob3V0IGRlZmF1bHQgcHJpbnRlci4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYWNsYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIGFjbGFwaS5oIGhlYWRlciBmaWxlLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgdHJ5IHRvIG1hcCB0aGUgbWFwcGVyIGRldmljZS4KCjIwMDQtMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU1vdmUgdGhlIEZQUyBjb21wdXRhdGlvbiBmcm9tIHRoZSBEM0QgY29kZSB0byB0aGUgY29tbW9uIGNvZGUuCgoJKiBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvZDNkeG9mX3ByaXZhdGUuaCwKCSAgZGxscy9kM2R4b2YvbWFpbi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBjb21waWxhdGlvbiB3YXJuaW5ncyArIHNvbWUgZml4ZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXaW4gMjAwMCwgWFAsIGV0Yy4gZmFpbCB0aGUgc3lzcGFyYW1zIHRlc3RzIHdoZW4gcnVuCglub24taW50ZXJhY3RpdmVseSwgc28gYXZvaWQgcnVubmluZyB0aGUgdGVzdHMgaW4gdGhhdCBjYXNlLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFRDTV9TRVRJVEVNRVhUUkEuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIG5ldyBsb2dnaW5nIG9uIGRldmljZSBlbnVtZXJhdGlvbgoJLSBmaXggdmVyc2lvbiBzZXR0aW5nIGluIERpcmVjdElucHV0Q3JlYXRlKEEvVykgZnVuY3Rpb25zCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBhIGNyYXNoIHdoZW4gbGF1bmNoaW5nIFVuaXggZXhlY3V0YWJsZXMuCgoJKiB3aW5kb3dzL3NweS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgbWVhbmluZ2Z1bCBtZXNzYWdlIHZhbHVlcyBpbnN0ZWFkIG9mIHZhZ3VlIG5hbWVzIGZvciB1bmtub3duCgltZXNzYWdlcy4KCgkqIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU29tZSBvZiBvdXIgdGVzdGVycyBkb24ndCBoYXZlIGEgZGVmYXVsdCBwcmludGVyLCBzaW1wbHkgc2tpcCB0aGUKCXdpbnNwb29sIHRlc3RzIGlmIHRoYXQncyB0aGUgY2FzZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW4gV2luOXgsIHtDcmVhdGUsUmVtb3ZlfURpcmVjdG9yeSByZXR1cm5zIEVSUk9SX1BBVEhfTk9UX0ZPVU5EIHdoZW4KCWdpdmVuIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgJyonIG9yICc/Jy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXaW45eCBkb2VzIG5vdCBjb252ZXJ0IEZJWEVEIHRvIE1PVkVBQkxFLiBJdCBhbHNvIGRpc2NhcmRzIGxvY2tlZAoJbWVtb3J5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYXIgdGhlIHN0YXRlIGltYWdlIGJpdHMgb25seSBpZiBMVlNfRVhfQ0hFQ0tCT1hFUyBpcyBzZXQuCglGaXggb2J2aW91cyBsb2dpY2FsIGVycm9yIGluIGZvY3VzIGhhbmRsaW5nLgoJSW5kZW50YXRpb24gYW5kIGZvcm1hdHRpbmcgZml4ZXMuCgkoYmFzZWQgb24gYSBwYXRjaCBieSBLcmlzaG5hIE11cnRoeSkuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVRyZWF0IFdBVkVfTUFQUEVSIGFzIGEgcmVhbCBkZXZpY2UgYW5kIHBlcmZvcm1zIGFsbCB0ZXN0cyBvbiBpdC4KCUFkZGVkIDE2MDAwSHogYmVjYXVzZSB3aW45eCBoYXJkd2FyZSBzcGVjIHJlcXVpcmVzIGl0LgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUhhbmRsZSBjYXNlIHdoZXJlIHBhcnRpYWwgc3RydWN0dXJlIHVwZGF0ZSByZXF1ZXN0ZWQuCglNaW5vciB3aGl0ZSBzcGFjZSBjbGVhbnVwLgoKCSogbGlicy93aW5lL21tYXAuYzogQXZvaWQgemVybyBzaXplIGFsbG9jYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLAoJICBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL2JlX2NwdS5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2JlX2kzODYuYywgcHJvZ3JhbXMvd2luZWRiZy9iZV9wcGMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLCBwcm9ncmFtcy93aW5lZGJnL2RiX2Rpc2FzbS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZWxmLmMsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2V4dF9kZWJ1Z2dlci5jLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbnR2YXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZWRiZy9tc2MuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9wZS5jLCBwcm9ncmFtcy93aW5lZGJnL3JlZ2lzdGVycy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLm1hbjoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhbGwgc3ltYm9sIGluZm9ybWF0aW9uIHN0b3JhZ2UgaXMgbm93IG1vZHVsZSByZWxhdGl2ZSwgc28gd2UgY2FuCgkgIHVubG9hZCBhIG1vZHVsZSAoYW5kIGl0J3MgZGVidWdnaW5nIGluZm9ybWF0aW9uKSwgYW5kIGEgcHJvY2VzcwoJICB3aXRob3V0IHBhaW4KCS0gcG9ydGFiaWJsaXR5IHRvIGFub3RoZXIgQ1BVIHNob3VsZCBiZSBlYXNpZXIgbm93IChDUFUgZGVwZW5kZW50IGJhY2tlbmQpCgktIHNwZWVkIHVwIG1lbW9yeSBhbGxvY2F0aW9uCgktIHN0YWJzIHJlbGF0ZWQgZml4ZXM6CgkgICAgICArIG5vdyBjb3JyZWN0bHkgaGFuZGxpbmcgc3ltYm9sJ3Mgc2l6ZQoJICAgICAgKyBibG9ja3Mge30gaW4gZnVuY3Rpb25zIGFyZSBub3cgY29ycmVjdGx5IHJlY29nbml6ZWQgYW5kIHN0b3JlZAoJICAgICAgICAoYWxzbyBhcHBsaWVzIHRvIGxvY2FsIHZhcmlhYmxlcyBzY29waW5nKQoJICAgICAgKyBiZXR0ZXIgYmFzaWMgdHlwZXMgbWFuYWdlbWVudCAobGVzcyB3aWxkIGd1ZXNzZXMgaW4gdGhlIGNvZGUpCgkgICAgICArIGZ1bGwgc3VwcG9ydCBvZiBpbmxpbmUgZnVuY3Rpb25zIChzb3VyY2Ugc3RlcHBpbmcgbm93IHNob3dzIHRoZQoJICAgICAgICBjb2RlIGluIC5oIGZpbGVzIGZvciBleGFtcGxlKQoJLSByZW1vdmFsIG9mIGV4dGVybmFsIGRlYnVnZ2VyIChhdHRhY2hpbmcgd2l0aCBnZGIgaXMganVzdCBmaW5lIHRvCgkgIGRlYnVnIHdpbmVkYmcpCgktIGZpeGVkIGEgY291cGxlIG9mIGlzc3VlcyBmb3Igc3ltYm9sIGFkZHJlc3MgaGFuZGxpbmcgKGFkZHJlc3MKCSAgbG9va3VwLCBpbmNvcnJlY3QgdHlwZSBiaW5kaW5nKQoJLSB3aW5lZGJnIG5vdyBoYXMgYSBtYW4gcGFnZQoKMjAwNC0wNi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzoKCU1ha2UgaXQgcG9zc2libGUgdG8gYWRkIGF1eGlsaWFyeSB2YWx1ZXMgdG8gdGhlIGV4aXN0aW5nIGFycmF5OyB0aGlzCglpcyByZXF1aXJlZCBmb3Igb2xkZXIga2VybmVscy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgYXR0ZW1wdHMgdG8gaGlkZSBhbiBhbHJlYWR5IGludmlzaWJsZSB3aW5kb3cuIEFkZCBhIHRlc3QgY2FzZQoJZm9yIHRoaXMgYmVoYXZpb3VyLCBwYXNzZXMgb24gV2luZSBhbmQgV2luZG93cyAyMDAwLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIElOVDIxX0dldEZyZWVEaXNrU3BhY2UgYWRqdXN0IHRoZSBzZWN0b3JzLXBlci1jbHVzdGVyIHZhbHVlIHRvIG1ha2UKCXRoZSB0b3RhbCBudW1iZXIgb2YgY2x1c3RlcnMgZml0IGluIGEgMTYgYml0IHJlZ2lzdGVyLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGl0aW9uYWwgS0xGX3h4eCBkZWZpbmVzLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBmb3IgRHJhd0RpYlByb2ZpbGVEaXNwbGF5LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglJIGdvdCB0aGUgdGVzdCBmb3IgZmFpbHVyZSBvbiBOVCB3cm9uZyBpbiBteSBsYXN0IHBhdGNoLiBUaGUgZnVuY3Rpb24KCXJldHVybnMgMCBvbiBlcnJvciBhbmQgc2V0cyBsYXN0IGVycm9yIHRvIEVSUk9SX0lOVkFMSURfRkxBR1MuCgoJKiBkbGxzL3JzYWJhc2UvbWFpbi5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUNyZWF0ZWQgbW9yZSBuZWVkZWQgcmVnaXN0cnkga2V5IGluIERsbFJlZ2lzdGVyU2VydmVyLgoKCSogbGlicy93aW5lL21tYXAuYzoKCUNoZWNrIGZvciBleGlzdGluZyByZXNlcnZlZCBhcmVhcyBpbiBtbWFwX2luaXQgdG8gYXZvaWQgZG9pbmcKCWR1cGxpY2F0ZSB3b3JrLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIF92c253cHJpbnRmIChuZWVkZWQgYnkgc29tZSBuYXRpdmUgWFAgZGxscykuCgoJKiBkbGxzL2tlcm5lbC9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL21vZHVsZS5oOgoJU2V0IHRoZSBXSU5FUFJFTE9BRFJFU0VSVkUgdmFyaWFibGUgd2hlbiBzdGFydGluZyBhIG5ldyBwcm9jZXNzLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNaW5HVyBwb3J0YWJpbGl0eSBmaXguCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy93aW4uYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZVdpbmRvdyBzaG91bGQgbm90IHJlbW92ZSB0aGUgZm9jdXMgb2YgY2hpbGQgd2luZG93cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2QzZHhvZi8uY3ZzaWdub3JlLAoJICBkbGxzL2QzZHhvZi9NYWtlZmlsZS5pbiwgZGxscy9kM2R4b2YvZDNkeG9mLmMsCgkgIGRsbHMvZDNkeG9mL2QzZHhvZi5zcGVjLCBkbGxzL2QzZHhvZi9kM2R4b2ZfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZHhvZi9tYWluLmMsIGRsbHMvZDNkeG9mL3JlZ3N2ci5jLCBkbGxzL2QzZHhvZi92ZXJzaW9uLnJjLAoJICBkbGxzL2R4Z3VpZC9keGd1aWQuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9keGZpbGUuaCwgdG9vbHMvd2luZS5pbmY6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBkM2R4b2YgZGxsLCBwYXJ0IG9mIERpcmVjdDNELgoKMjAwNC0wNi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgdGhlIFBFIGV4ZSBhZGRyZXNzIHJhbmdlIHRocm91Z2ggdGhlCglXSU5FUFJFTE9BRFJFU0VSVkUgZW52aXJvbm1lbnQgdmFyaWFibGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogQWRkZWQgY2hlY2sgZm9yIHN0YXRpYyBsaWJjLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjYXNlIHdoZW4gaXRlbSB0ZXh0IGlzIGVtcHR5LgoJQWNjb3JkaW5nIHRvIE1TRE4sIGxlbmd0aCBzaG91bGQgYmUgcmV0dXJuZWQgd2hlbiBsUGFyYW0gaXMgTlVMTC4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB3ZSBzZW5kIG91dCBhIG5vdGlmaWNhdGlvbiB0byBhIHJlZ2lzdGVyZWQgd2luZG93IHdpdGgKCVNIQ05SRl9OZXdEZWxpdmVyeSwgd2Ugc2hvdWxkIHNlbmQgYSBMUE5PVElGSUNBVElPTkxJU1QgYW5kIHRoZQoJcHJvY2VzcyBpZCBvZiB0aGUgY2FsbGVyLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBGSUxFRExHX1NjYW5EaXIgZG8gbm90IHRyeSB0byBzZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIGEgcGF0aAoJdGhhdCBpcyBlbXB0eS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGZvciBXU0NVbkluc3RhbGxOYW1lU3BhY2UuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9wYXRoLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVNlbWkgc3R1YnMgZm9yIEdldFN5c3RlbVdvdzY0RGlyZWN0b3J5W0FXXS4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L21vdXNlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIFRSQUNFaW5nIGltcHJvdmVtZW50cwoJLSBmaXggbW91c2UgQWNxdWlyZSB3aGljaCBzd2l0Y2hlZCByaWdodCBhbmQgbWlkZGxlIGJ1dHRvbnMKCS0gcmVzZXQgdGhlIG1vdXNlIGN1cnNvciBhdCBpdHMgb3JpZ2luYWwgbG9jYXRpb24gb24gVW5hY3F1aXJpbmcgdGhlCgkgIGRldmljZQoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGZpeCB0aGUgZHJpdmUgbGV0dGVyIHRvICdDJywgaXQgZmFpbHMgb24gb3RoZXIgcGVvcGxlJ3MgYm94ZXMuCgoJKiBkbGxzL3JzYWJhc2UvbWFpbi5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQ3JlYXRlZCBuZWVkZWQgcmVnaXN0cnkga2V5IGluIERsbFJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglEb24ndCBkcmF3IHdob2xlIGJ1dHRvbiBwcmVzc2VkIHdoZW4gc2VwYXJhdGUgZHJvcGRvd24gcHJlc3NlZCwganVzdAoJdGhlIHNlcGFyYXRlIGRyb3Bkb3duIGl0c2VsZi4KCgkqIGRsbHMvZDNkOC91dGlscy5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUNvbXBpbGUgZml4LgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29weSB0aGUgdnNucHJpbnRmVyBpbXBsZW1lbnRhdGlvbiBmcm9tIGxpYnVuaWNvZGUuc28gdG8gbXN2Y3J0IGFuZAoJYWRkIGEgaGFuZGxlciBmb3IgdGhlICVTIGZsYWcuICBUaGF0IHJlcXVpcmVzIGEgY29udmVyc2lvbiB0byB1bmljb2RlCglhbmQga25vd2xlZGdlIG9mIHRoZSBjdXJyZW50IEFTQ0lJIGNvZGUgcGFnZS4KCgkqIGRvY3VtZW50YXRpb24vYWRkcmVzcy1zcGFjZS5zZ21sLCBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gb24gV2luZSBhcmNoaXRlY3R1cmUgJiBmdW5kYW1lbnRhbHMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlcGxhY2VkIHRoZSBjYWxsIHRvIEdldEZ1bGxQYXRoTmFtZUEgYnkgYSBjYWxsIHRvIEdldEZ1bGxQYXRoTmFtZVcgdG8KCWdldCByaWQgb2YgdGhlIFctPkEgY3Jvc3MgY2FsbHMuCgoyMDA0LTA2LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGNhbGN1bGF0aW9uIG9mIFNNUFRFIHRpbWUgKHJvdW5kIHVwIHRvIGZ1bGwgZnJhbWUpLgoJTW9yZSBhY2N1cmF0ZSBtcyBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYSB0ZXN0IHRvIGNoZWNrIHBsYXliYWNrIHBvc2l0aW9uIGFmdGVyIGRvbmUgcGxheWluZy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVN0dWIgZm9yIFNIRmx1c2hTRkNhY2hlV3JhcC4KCgkqIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHByb3h5IHN1cHBvcnQsIHJlbW92ZSB0eXBlY2FzdHMuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV0dXJucyBwcm9wZXIgZXJyb3IgY29kZSB3aGVuIHRyeWluZyB0byBnZXQgY2FwcyB3aGVuIG5vIGRldmljZXMKCXByZXNlbnQuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6IEEgZmV3IHNtYWxsIGZpeGVzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGVzdCB3aGV0aGVyIHdlIGNhbiBkZXN0cm95IGEgbWVudSBhc3NpZ25lZCB0byBhIHdpbmRvdy4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBQUE9JTlRMLCBhIHBvaW50ZXIgdG8gYSBQT0lOVEwgc3RydWN0LgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUxpbmsgdG8gbnRkbGwuCgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVXNlIFRSQUNFIHJhdGhlciB0aGFuIEZJWE1FIGZvciBjaGVja19yZXNvdXJjZV93cml0ZS4KCgkqIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwgZGxscy9oaGN0cmwub2N4L2hoY3RybC5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRGlzcGxheSBtb3JlIGluZm9ybWF0aXZlIG1lc3NhZ2Ugd2hlbiBIdG1sSGVscCBzdHViIGlzIGludm9rZWQsIGFkZAoJQS9XIGNvbnZlcnNpb24gY29kZSwgcmVtb3ZlIHVzZWxlc3MgKGFuZCB3cm9uZykgaHVuZ2FyaWFuIG5vdGF0aW9uCglmcm9tIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL2RtaW1lL3NlZ21lbnQuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglDb3JyZWN0IHR5cG8gaW4gTG9hZFdhdmUgKHdhdmUgaXMgYW4gRE1PYmplY3Qgbm90IGEgRE1UcmFjaykuCgoJKiB0b29scy93cmMvbmV3c3RydWMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsc28gaGFuZGxlIE9TMiB2MS54IChBS0Egd2luZG93cyAyLjApIGJpdG1hcHMuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU2V0TWl0ZXJMaW1pdDogUmV0dXJuIHN1Y2Nlc3M6IHNvbWUgY2FsbGVycyBjaGVjayB0aGlzLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIGNhc2Ugd2hlcmUgbHBzelNlYXJjaEZpbGUgaXMgTlVMTCBpbiBGdHBGaW5kRmlyc3RGaWxlLgoKCSogaW5jbHVkZS9leGRpc3AuaCwgaW5jbHVkZS9leGRpc3AuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIHRoZSBJU2hlbGxXaW5kb3dzIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvc2hsZGlzcC5oLCBpbmNsdWRlL3NobGRpc3AuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIHRoZSBJRm9sZGVyVmlld09DIGludGVyZmFjZS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIGJ1ZyB3aGVyZSB3cm9uZyBhIHJldHVybiB2YWx1ZSB3YXMgcmV0dXJuZWQgd2hlbiBtYXBwaW5nIGlzCglub3QgcG9zc2libGUuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgdHJhY2UgYW5kIGRlYnVnIHByaW50aW5nIGluZm8uCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIHRyYWNlIGFuZCBkZWJ1ZyBwcmludGluZy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhbm90aGVyIHBvc3NpYmxlIHdpbmRvd3MgZmFpbHVyZSBtb2RlLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRpYWxvZyBjbGFzcyBuYW1lIHRvIHRoZSBsaXN0IG9mIGNsYXNzZXMgaGFuZGxlZCBieSBob29rLCBhZGQgaG9vawoJbWVzc2FnZXMgdG8gdGhlIG1vZGFsIGRpYWxvZyBtZXNzYWdlIHRlc3QuCgoyMDA0LTA1LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglOVCA0LjAgZG9lc24ndCBzdXBwb3J0IE1BUF9FWFBBTkRfTElHQVRVUkVTIHNvIHNraXAgdGVzdCBpZiBpdCByZXR1cm5zCglFUlJPUl9JTlZBTElEX0ZMQUdTLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYzoKCVVzZSB3aW5lX2V4ZWNfd2luZV9iaW5hcnkgaW4gYWxsIGNhc2VzIHRvIHN0YXJ0IHRoZSBzZXJ2ZXIuCgoJKiBsaWJzL3dpbmUvY29uZmlnLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIHByZWxvYWRlcl9leGVjLgoKCSogdG9vbHMvd3JjL3dyYy5tYW46IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEb2N1bWVudCB0aGUgLS12ZXJib3NlIHN3aXRjaC4KCjIwMDQtMDUtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3dpbmUvbG9hZGVyLmMsCgkgIGxvYWRlci9tYWluLmM6CglQYXNzIHRoZSBlbnZpcm9uIHZhcmlhYmxlIGZyb20gbWFpbiB0byB0cnkgdG8gYXZvaWQgRGFyd2luJ3MKCV9OU0dldEVudmlyb24oKSB1Z2xpbmVzcy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4ZWQgQ29NYXJzaGFsSW50ZXJUaHJlYWRJbnRlcmZhY2VJblN0cmVhbSBhbmQKCUNvR2V0SW50ZXJmYWNlQW5kUmVsZWFzZVN0cmVhbS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUmVtb3ZlZCBkY29tIGxpbmsuCgoJKiBjb250cm9scy9lZGl0LmM6IEtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglFRElUX0VNX1JlcGxhY2VTZWwgc2hvdWxkIHNpbXBseSB0cnVuY2F0ZSBjaGFyYWN0ZXJzIHRoYXQgZXhjZWVkIHRoZQoJbGltaXQuCgoyMDA0LTA1LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2NvbmZpZy5jLCBsb2FkZXIvLmN2c2lnbm9yZSwKCSAgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZ2xpYmMuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21haW4uaCwKCSAgbG9hZGVyL3ByZWxvYWRlci5jOgoJSW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBXaW5lIHByZWxvYWRlciwgdXNlZCB0byByZXNlcnZlIG1lbW9yeQoJYXJlYXMgYXQgc3RhcnR1cC4gQmFzZWQgb24gdGhlIHdvcmsgb2YgTWlrZSBNY0Nvcm1hY2suCgoJKiBzZXJ2ZXIvdXNlci5jLCB3aW5kb3dzL3dpbi5jOgoJT25seSBhbGxvY2F0ZSBldmVuLW51bWJlcmVkIHdpbmRvdyBoYW5kbGVzLCBNUyBQcm9qZWN0IGRlcGVuZHMgb24gdGhhdAoJKGZvdW5kIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCU1ha2Ugc3VyZSBfX0FTTV9HTE9CQUxfRlVOQyBnZW5lcmF0ZXMgY29kZSBpbiB0aGUgdGV4dCBzZWdtZW50LgoKCSogZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglQcmludCBtb2R1bGUgbmFtZSB3aGVuIGNhbGxpbmcgTGliTWFpbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcGFzc2VkIHRvIFJlZ1NldFZhbHVlRXhXIGlzIGluCglieXRlcyBub3QgV0NIQVJzLgoKCSogd2luZG93cy9zcHkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG5ldyBtZXNzYWdlIG5hbWVzIHRvIHRoZSBtZXNzYWdlIHNweS4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCB3aW5kb3dzL2NsYXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgYWNjZXNzaW5nIGNsYXNzZXMgZnJvbSBhbm90aGVyIHRocmVhZC4KCUZpeCBVbnJlZ2lzdGVyQ2xhc3MgYmVoYXZpb3VyIHdpdGggTlVMTCBoSW5zdGFuY2UuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2FkZHJlc3Mtc3BhY2Uuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBkb2N1bWVudGF0aW9uIG9uIHRoZSBhZGRyZXNzIHNwYWNlIGxheW91dCBpbiBXaW5lLgoKCSogdG9vbHMvd2luZS5pbmY6CglVc2UgcHJvcGVyIGRpcmlkcyBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgYzpcUHJvZ3JhbSBGaWxlcy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBsaWJzL3dpbmUvbW1hcC5jOgoJRG9uJ3QgcmVseSBvbiB0aGUgcmVzZXJ2ZWQgYXJlYSBsaXN0IGJlaW5nIGVtcHR5IGluIHJlc2VydmVfYXJlYSwKCXNpbmNlIHRoZSBwcmVsb2FkZXIgd2lsbCBuZWVkIHRvIGFkZCB0aGluZ3MgdG8gdGhlIGxpc3QgYmVmb3JlCglzdGFydHVwLgoKCSogZGxscy9rZXJuZWwvZG9zbWVtLmM6CglFbnN1cmUgdGhhdCB3ZSBjYW4gaW5pdGlhbGl6ZSB0aGUgRE9TIG1lbW9yeSBhcmVhIGNvcnJlY3RseSBldmVuIGlmIGl0CgloYXMgYmVlbiBwcmUtcmVzZXJ2ZWQgYWxyZWFkeS4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvZGlyaWQuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGRpcmlkcyB0aGF0IG1hcCB0byBhIENTSURMIHZhbHVlIChiYXNlZCBvbiBhIHBhdGNoCglieSBNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL3gxMWRydi9pbml0LmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURlZmF1bHQgdG8gOTZkcGkgd2hlbiBub3Qgc3BlY2lmaWVkIGluIHRoZSBjb25maWcgZmlsZS4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC91dGlscy5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgc29tZSB0ZXh0dXJlIG9wZXJhdGlvbnMgdXNpbmcgQVRJX3RleHR1cmVfZW52X2NvbWJpbmUzLgoJRml4ZWQgRDNEVE9QX0xFUlAuCglGaXhlZCBzb21lIGNoZWNrR0xjYWxsIGVycm9yIG1lc3NhZ2VzLgoKMjAwNC0wNS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIG1pc3NpbmcgaW52ZXJzaW9uIGluIGJpdCBtYW5pcHVsYXRpb24uCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2lubW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIHByb2JsZW0gd2VyZSBhIHRyYWNlIGFjY2Vzc2VzIGEgZGF0YSBtZW1iZXIgdGhhdCBtYXkgYmUKCW91dHNpZGUgb2YgdGhlIGFjdHVhbCBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgaW4uCglBZGRlZCBzb21lIG1vcmUgZGVidWcgdHJhY2VzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQXNzdW1lIE1BWF9QQVRIIGxlbmd0aCBmb3IgcHN6RGlzcGxheU5hbWUuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCB0eXBvLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglHaXZlIGEgc3RydWN0IHRhZyB0byBPUEVOSUxFTkFNRUEvVyB0byBhbGxvdyBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Nub29wMTYuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IHRoZSBtaXNzaW5nIHRyZWFkIElEIG9mIHNvbWUgc25vb3AgcmV0dXJuIHRyYWNlcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgV0FWRV9NQVBQRUQgZmxhZyB0ZXN0LgoJQWRkZWQgODAwMCBIeiB0ZXN0IGFzIGEgdHlwaWNhbGx5IHN1cHBvcnRlZCBmb3JtYXQuCglBZGRlZCAxMjAwMCBIeiB0ZXN0IGFzIGEgdHlwaWNhbGx5IHVuc3VwcG9ydGVkIGZvcm1hdC4KCVRlc3QgZXJyb3IgcmVwb3J0aW5nIGJldHRlciBieSB0ZXN0aW5nIHVuc3VwcG9ydGVkIGZvcm1hdHMuCglUZXN0IHVzaW5nIFBDTVdBVkVGT1JNQVQgaW4gcGxhY2Ugb2YgV0FWRUZPUk1BVEVYLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0l0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvZDNkcm0vZDNkcm1fbWFpbi5jLAoJICBkbGxzL2QzZHJtL3ZlcnNpb24ucmMsIGRsbHMvbXNhY20vbXNhY21fSXQucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9JdC5yYywgZGxscy9vbGVkbGcvb2xlZGxnX0l0LnJjLAoJICBkbGxzL3FjYXAvdmVyc2lvbi5yYywgZGxscy9zZXJpYWx1aS9JdC5yYywgZGxscy9zZXR1cGFwaS9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0l0LnJjLAoJICBkbGxzL3dpbmVwcy93cHNfSXQucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X0l0LnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX0l0LnJjLCBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjLAoJICBwcm9ncmFtcy9jbG9jay9JdC5yYywgcHJvZ3JhbXMvY21kbGd0c3QvSXQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvSXQucmMsIHByb2dyYW1zL3Byb2dtYW4vSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3N0YXJ0L0l0LnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLAoJICBwcm9ncmFtcy92aWV3L0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvSXQucmMsIHRvb2xzL2J1Z19yZXBvcnQucGw6CglJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJQ2hhbmdlZCBteSBuYW1lLCBzbyB1cGRhdGUgY29weXJpZ2h0IGluZm8uCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJTWFrZSB1bmRlcmxpbmluZyBvZiBmb250cyBkcmF3biBhdCBhbiBhbmdsZSBmb2xsb3cgdGhlIHRleHQuCgoJKiBvYmplY3RzL2RpYi5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglSZXR1cm4gbGluZSBjb3VudCB3aGVuIHRoZSBiaXRzIHBhcmFtZXRlciBpcyBOVUxMLgoKCSogZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHRoZSBoYXJkd2FyZSBHTCB2ZW5kb3JzIChOVmlkaWEgYW5kIEFUSSkgY2FuIHN1cHBvcnQgbW9yZSB0aGFuIDk1Cgljb25zdGFudHMgKHRoZSBNZXNhIGJ1ZykgYW5kIFZSYWxseSB1c2UgdGhlIDAuLjk1IGluZGV4ZXMgc28gZml4IGl0CgktIGZpeCBub3JtYWxpemUgZm9yIHNvbWUgSFcgVmVydGV4U2hhZGVyIGlucHV0cwoJLSB0cnlpbmcgdG8gZml4IHRoZSBjb21iaW5hdGlvbiBvZiBOVl90ZXh0dXJlX2NvbWJpbmVfNCB3aXRoCgl0ZXh0dXJlX2NvbWJpbmVfRVhUIChpbXBsIG9mIEQzRFRPUF9ESVNBQkxFLCBEM0RUT1BfTU9EVUxBVEUgZm9yCglOVl90ZXh0dXJlX2NvbWJpbmVfNCkKCS0gaWYgc2hhZGVycyBkaXNhYmxlZCBkZWNsYXJlIHRvIHN1cHBvcnQgMCBmb3IgTWF4VmVydGV4U2hhZGVyQ29uc3QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUmVtb3ZlIHBhcnQgb2YgdGVzdCB0aGF0IGNyYXNoZXMgd2luOTUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBZGRlZCBzdHViIGZvciBHZXRSZWNvcmRJbmZvRnJvbUd1aWRzLgoKCSogbGlicy93aW5lL21tYXAuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXhlZCBsYXN0IG1tYXAgaXNzdWUgd2l0aCBtaW5ndyB3aW5kb3dzIGJ1aWxkLgoKCSogZGxscy9kbWltZS9zZWdtZW50LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU3VwcG9ydCBsb2FkaW5nIG9mIFdhdmUgc2VnbWVudHMgb24gSURpcmVjdE11c2ljU2VnbWVudDguCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBqb3lzdGljayBkZXZpY2UgdHlwZSBmb3IgZGlucHV0OC4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgc3R1YiBvZiBDb250cm9sX0ZpbGxDYWNoZV9SdW5ETEwgZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZG9uJ3QgdXNlIGEgc3R1cGlkICJ3aGlsZSAoMSk7IiB0aHJlYWQgd2hlbiBETVBlcmZvcm1hbmNlIE1TRyBRdWV1ZSBlbXB0eQoJLSB0cnkgdG8gdXNlIGxhdGVuY3kgYW5kIE1TRyBzeW5jaHJvIGZvciB0aW1lb3V0IChidXQgYXMgaSdtIG5vdCBhCgkgIHNvdW5kIGV4cGVydCBkb24ndCBleHBlY3QgdG9vIG11Y2gpCgoyMDA0LTA1LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy93aW5lL21tYXAuYzogUG9ydGFiaWxpdHkgZml4LgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy93aW5lL2NvbmZpZy5jLCBsaWJzL3dpbmUvbG9hZGVyLmM6CglNb3ZlZCBlbnZpcm9uIGRlZmluaXRpb24gdG8gcG9ydC5oLgoKCSogY29udHJvbHMvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXggdXBkYXRlIHJlZ2lvbiBjYWxjdWxhdGlvbiBmb3IgdGhlIGNhc2Ugd2hlcmUgYSB3b3JkIHdyYXBzIHVwIHRvCgl0aGUgcHJldmlvdXMgbGluZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBhIGNvdXBsZSBvZiBtaXNzaW5nIGxpc3R2aWV3IG1hY3Jvcy4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgYWN0aXZhdGUgYW4gTURJIGNoaWxkIGlmIHRoZSBjaGlsZCBpcyBpbnZpc2libGUuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsd2F5cyB1c2UgJChDQykgZm9yIGJ1aWxkaW5nIHRoZSBnZW5lcmF0ZWQgLnNwZWMuYyBmaWxlLgoKCSogZGxscy9rZXJuZWwvaGVhcC5jOgoJQWxsb2NhdGUgdGhlIHNoYXJlZCBoZWFwIGluc2lkZSB0aGUgV2luOXggc2hhcmVkIG1lbW9yeSBhcmVhLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCU9ubHkgY3JlYXRlIHRoZSBzaGFyZWQgaGVhcCB3aGVuIFdpbmRvd3MgdmVyc2lvbiBpcyBXaW45eC4KCgkqIGxpYnMvd2luZS9jb25maWcuYywgbGlicy93aW5lL2xvYWRlci5jOgoJRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJQWRkZWQgZW52aXJvbiBzdXBwb3J0IGZvciBEYXJ3aW4uCgoJKiBjb250cm9scy9zdGF0aWMuYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglSZW1vdmVkIERUX05PQ0xJUCBmb3JtYXQgZmxhZy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglXaGVuIHJlcGFpbnRpbmcgYSBzdGF0aWMgY29udHJvbCwgd2l0aCBTU19CSVRNQVAgc3R5bGUsIGRvIG5vdCBlcmFzZQoJdGhlIGJhY2tncm91bmQuIEtlZXAgc2VuZGluZyB0aGUgV01fQ1RMQ09MT1JTVEFUSUMgbm90aWZpY2F0aW9uIGFzCglXaW5kb3dzIGRvZXMuCgoJKiBsaWJzL3dpbmUvcG9ydC5jOgoJRW1tYW51ZWwgTWFpbGxhcmQgPG1haWxsYXJkLmVtbWFudWVsQGxpYmVydHlzdXJmLmZyPgoJQWRqdXN0IHN0YWNrIHBvaW50ZXIgaW4gd2luZV9zd2l0Y2hfdG9fc3RhY2sgdG8gcHJldmVudCBzZWdtZW50YXRpb24KCWZhdWx0IG9uIGRhcndpbi9wcGMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJTW92ZSBhbGwgRlRQIGZ1bmN0aW9ucyB0byB1bmljb2RlLgoJSW1wcm92ZSBGVFAgTElTVCBwYXJzaW5nLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwKCSAgbGlicy93aW5lL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvbG9hZGVyLmMsIGxpYnMvd2luZS9tbWFwLmMsCgkgIGxpYnMvd2luZS9wb3J0LmMsIGxpYnMvd2luZS93aW5lLmRlZiwgbGlicy93aW5lL3dpbmUubWFwLAoJICBsb2FkZXIvbWFpbi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbWFuYWdpbmcgcmVzZXJ2ZWQgbWVtb3J5IGFyZWFzIGluIGxpYndpbmUgYW5kIG50ZGxsLgoJVHJ5IHRvIHJlc2VydmUgZXZlcnl0aGluZyBhYm92ZSAweDgwMDAwMDAwIG9uIHN0YXJ0dXAuCgoJKiBkbGxzL3NobHdhcGkvc3RvcHdhdGNoLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIHN0dWIgb2YgU3RvcFdhdGNoIGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJV2lsbGlhbSBMYWh0aSA8Y29tcHV0ZXJtYW40MTNAZXpycy5jb20+CglJbXBsZW1lbnRlZCBBcmVBbnlBY2Nlc3Nlc0dyYW50ZWQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhIGZhaWx1cmUgdW5kZXIgV2luOXguCgoyMDA0LTA1LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBlbGZfcmVhZF93aW5lX2xvYWRlcl9kYmdfaW5mbygpIGZvciB0aGUgIV9fRUxGX18gY2FzZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtZXNzYWdlIHRlc3QgZm9yIERyYXdNZW51QmFyLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgZm9jdXMgY2hhbmdlIG9uIFNob3dXaW5kb3coY2hpbGQsIFNXX0hJREUpLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHNvbWUgbW9yZSBmaXhlcyB0byBlbGYgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlIGhhbmRsaW5nIChpbmNsdWRpbmcKCSAgc3RhdGljL2dsb2JhbCBkaWZmIGZvciB2YXJpYWJsZXMpCgktIG5vdyByZS1zeW5jaHJvbml6aW5nIEVMRiBsaXN0IGluIGFsbCBjYXNlcyAobm8gbG9uZ2VyIGRlcGVuZGluZyBvbgoJICBSVF9DT05TSVNURU5UIHN0YXRlKQoJLSBub3cgc2hvdWxkIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZSBwcm9wZXJseSBhIG5hdGl2ZSBmcm9tIGEgYnVpbHRpbgoJICBtb2R1bGUKCS0gaW4gc3ltYm9sIGxvb2t1cCwgbm93IHVzaW5nIHNpemUgb2Ygc3ltYm9sIChpZiBrbm93bikKCS0gU3ltR2V0VHlwZUluZm8gbm93IGNoZWNrcyBhbmQgdXNlcyBCYXNlQWRkcmVzcwoJLSBpbiBNU0MtQ1YsIHJlYWxseSBnZW5lcmF0ZSB0aHVuayBvYmplY3RzCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ3lnd2luJ3MgbW50ZW50LmggcmVxdWlyZXMgc3RkaW8uaCB0byBiZSBpbmNsdWRlZCBmaXJzdC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cGxpY2l0bHkgc3BlY2lmeSBuYW1lIG9mIHRoZSBwaXBlIGluIHRoZSBwaXBlIHRlc3QuCgoJKiBkbGxzL2tlcm5lbC90b29saGVscC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVNvbWUgZml4ZXMgdG8gbW9kdWxlIGJyb3dzaW5nLgoKMjAwNC0wNS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9mZC5jOgoJTWFrZSBzdXJlIHdlIGRvbid0IHRydW5jYXRlIHRoZSBmaWxlIG9uIG9wZW4gYmVmb3JlIHdlIGhhdmUgY2hlY2tlZAoJdGhlIHNoYXJpbmcgbW9kZXMgKHRoYW5rcyB0byBEbWl0cnkgVGltb3Noa292IGZvciB0aGUgdGVzdCBjYXNlKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIG9wZW5pbmcgYW4gYWxyZWFkeSBvcGVuZWQgZmlsZSBmb3Igd3JpdGluZyBpbiBhIG5vdAoJY29tcGF0aWJsZSBzaGFyaW5nIG1vZGUuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgdHJhY2VzIHRvIGtlcm5lbCBmaWxlIGZ1bmN0aW9ucy4KCjIwMDQtMDUtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy92aXJ0dWFsLmMsIGRsbHMva2VybmVsL3ZpcnR1YWwuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGluY2x1ZGUvd2luZS9saXN0Lmg6CglDb252ZXJ0ZWQgdGhlIG1lbW9yeSB2aWV3cyBsaXN0IHRvIHVzZSB0aGUgc3RhbmRhcmQgZnVuY3Rpb25zIGZyb20KCXdpbmUvbGlzdC5oLgoJUmVzdHJ1Y3R1cmVkIHNvbWUgZnVuY3Rpb25zIHRvIGFsd2F5cyByZXR1cm4gcHJvcGVyIE5UIHN0YXR1cyBjb2Rlcy4KCUEgY291cGxlIG9mIG9wdGltaXphdGlvbnMuCglBZGRlZCBhIGZldyB0ZXN0cyBmb3IgZmlsZSBtYXBwaW5ncy4KCgkqIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS92ZXJzaW9uLnJjLAoJICBkbGxzL3FjYXAvcWNhcF9tYWluLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CgktIGFkZCB2ZXJzaW9uIGluZm8gdG8gZHBsYXkuZGxsCgktIGFkZCBsaWNlbmNlIGluZm8gdG8gcWNhcAoJLSBhZGQgZDNkcm0gYW5kIGRwbmhwYXN0IHRvIGRsbCBvdmVycmlkZXMKCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBidWcgSSBpbnRyb2R1Y2VkIGluIHdhdmVJbkdldERldkNhcHNBKFdBVkVfTUFQUEVSKSB0ZXN0LgoJTW92ZWQgZm9ybWF0IHN0cnVjdHVyZSBhcnJheSB0byBoZWFkZXIgZmlsZSBhbmQgcmVzdG9yZWQKCU5CX1dJTl9GT1JNQVRTIG1hY3JvIHRvIGNhbGN1bGF0ZSBhcnJheSBzaXplLgoJQWRkZWQgbW9yZSBlcnJvciByZXN1bHRzIGFuZCB1c2VkIG1hY3JvIGFzIHN1Z2dlc3RlZCBieSBBbmRyZWFzIE1vaHIuCglDbGVhbmVkIHVwIGVycm9yIHJlc3VsdCBwcmludGluZyB0byBiZSBtb3JlIGNvbnNpc3RlbnQuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgcmV0cmlldmFsIG9mIEFUSSBpbmZvLgoKCSogZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXZlcnQgYnJva2VuIHN0cmljdCBhbGlhc2luZyBmaXguCgoJKiBvYmplY3RzL2ZvbnQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTGV0IEdldEZvbnRMYW5ndWFnZUluZm8oKSByZXR1cm4gdGhlIEdDUF9SRU9SREVSIGZsYWcgb25seSBpbiBjYXNlIHRoZQoJREMgYWxpZ25tZW50IGlzIHJpZ2h0LXRvLWxlZnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIHdpbmRvdydzIGhpbnN0YW5jZS4KCjIwMDQtMDUtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU3BsaXQgb2ZmIHRoZSB3aW5tbSBjYXB0dXJlIHRlc3QuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9tb2R1bGUuYzogRG9uJ3QgdXNlIHRoZSBXaW5lIGRlYnVnIGZ1bmN0aW9ucy4KCUZpeGVkIHdyb25nIEEvVyBsZW5ndGggY2hlY2tzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIG5ldyB0ZXN0cyBwYXNzIG9uIHdpbjJrIFNQNCBhbmQgd2luOTUgT1NSMi4KCS0gQWRkIGxvZ2dpbmcgb2Ygc29tZSB1c2VmdWwgbWVzc2FnZXMgaW4gdGhlIHBhcmVudCB3aW5kb3cuCgktIEFkZCBsb2dnaW5nIG9mIHdwYXJhbSBmb3IgV01fSU1FX1NFVENPTlRFWFQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIDUgc2Vjb25kIHRlc3QgdG9uZSB0byBoZWxwIGRlYnVnIGlzc3VlcyB3aXRoIHRoZSB0b25lIGR1cmF0aW9uCglhbmQgaGVscCBkZXRlY3Qgc3R1dHRlciBpc3N1ZXMuCglBZGQgZXhwbGFuYXRpb25zIGRlc2NyaWJpbmcgdGhlIGludGVyYWN0aXZlIHRlc3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0cmlnZ2VycyB0byBkaXNhYmxlIHRoZSBzb3VuZCBpbnB1dC9vdXRwdXQgc2lkZSB3ZSBkb24ndCBjYXJlCglhYm91dCB3aGVuIGluIHBzZXVkbyBmdWxsZHVwbGV4IG1vZGUuCgoJKiBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglCZXR0ZXIgaGFuZGxpbmcgb2YgVXNlciBJRGlyZWN0TXVzaWNUb29scy4KCjIwMDQtMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3V0aWxzLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZmlyc3QgZHJhZnQgb2YgRDNEQ0xJUFNUQVRVUzggaGFuZGxpbmcgKG5vdCByZWFsbHkgdXNlZCBmb3Igbm93KQoJLSBhZGQgYSBuZXcgREVCVUdfU0lOR0xFX01PREUgI2RlZmluZSAoZm9yIGRlYnVnIGNhcHMgbmVlZHMpCgktIGJldHRlciB0cmFjZXMgZm9yIHN1cmZhY2UgZHVtcGluZwoJLSBtdWNoIGJldHRlciBUZXh0dXJlIHN1cHBvcnQgb24gVXRpbGl0aWVzIGZ1bmN0aW9ucyBhbmQgb24KCSAgQ2hlY2tEZXZpY2VUeXBlCgktIEQzRFJTX1pWSVNJQkxFIGFzIHVuc3VwcG9ydGVkIChhcyBzZWVuIGluIG1zZG4pCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywgZGxscy9kbWltZS90ZW1wb3RyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gQmV0dGVyIGxvYWRpbmcgb2YgSURpcmVjdE11c2ljU2VnVHJpZ2dlclRyYWNrIChpbnRlcm5hbCBsaXN0IG9mCgkgIHN1YnRyYWNrcykKCS0gQmV0dGVyIHN0dWJzIGZvciBJRGlyZWN0TXVzaWNUZW1wb1RyYWNrOjpJbml0UGxheSBhbmQKCSAgSURpcmVjdE11c2ljVGVtcG9UcmFjazo6RW5kUGxheSAoSW5pdFBsYXkgc2hvdWxkIHJldHVybiBhIHZhbGlkCgkgIG1lbW9yeSBwb2ludGVyIHNvIGFsbG9jYXRlIGl0KS4gU2hvdWxkIGJlIGV4dGVuZGVkIGZvciBhbGwKCSAgSURpcmVjdE11c2ljVHJhY2sgb2JqZWN0cy4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9tb2R1bGUuYywgZGxscy9rZXJuZWwvdmVyc2lvbi5jLAoJICBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvdXNlci9ob29rLmMsCgkgIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJR2V0TW9kdWxlRmlsZU5hbWVbQVddIGRvZXNuJ3QgdGVybWluYXRlIHRoZSBzdHJpbmcgaWYgdGhlIGJ1ZmZlciBpcwoJdG9vIHNtYWxsLgoKMjAwNC0wNS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbXNjLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N0YWJzLmMsCgkgIGRsbHMvZGJnaGVscC9zdG9yYWdlLmMsIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kYmdoZWxwL3R5cGUuYywKCSAgaW5jbHVkZS9jdmNvbnN0LmgsIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHJlbW92ZWQgZmlsZSBleHRlbnNpb24gZnJvbSBtb2R1bGUgKGFuZCBzdWZmaXhlZCBFTEYgbW9kdWxlcyB3aXRoCgkgIDxlbGY+KQoJLSBhZGRlZCBnZW5lcmljIHRodW5rIHN1cHBvcnQgZm9yIGJ1aWx0aW4gbW9kdWxlcyAod2l0aCB0aGUgaGVscCBvZgoJICB3aW5lYnVpbGQncyBuZXcgbWFya2VycyBmb3IgdGh1bmtzKQoJLSBmb3IgRUxGIG1vZHVsZXMsIG5vIGxvbmdlciBnZW5lcmF0aW5nIFN5bVRhZ1B1YmxpY1N5bWJvbHMgb2JqZWN0cwoJICBmcm9tIEVMRiBwdWJsaWMgc3ltYm9sIHRhYmxlCgktIGJlY2F1c2Ugb2YgbGFzdCBwb2ludCwgcmV3cm90ZSBzdGFicyBzeW1ib2xzJyBhZGRyZXNzIGFuZCBzaXplCgkgIG1hbmFnZW1lbnQgYnkgcGFyc2luZyBkaXJlY3RseSB0aGUgc3ltdGFiIGluc3RlYWQgb2YgdXNpbmcKCSAgU3ltVGFnUHVibGljU3ltYm9scyBvYmplY3RzCgktIGNsZWFuZWQgdXAgU3ltVGFnUHVibGljU3ltYm9scyBvYmplY3QgbmFtZXMgZm9yIG5hdGl2ZSBtb2R1bGVzCgktIGZpeGVkIG9mZiBieSBvbmUgZXJyb3JzIGluIGFycmF5IG1hbmFnZW1lbnQKCS0gU3ltTG9hZE1vZHVsZShoUHJvYywwLDAsMCwwKSAod2luZSBleHRlbnNpb24pIHdpbGwgZm9yY2UgdGhlCgkgIHJlc3luY2hyb25pemF0aW9uIG9mIGludGVybmFsIEVMRiBtb2R1bGVzIGxpc3QpCgktIG5ldyBvcHRpb24gKDB4NDAwMDAwMDApIGZvciBTeW17R2V0fFNldH1PcHRpb24gdG8gcmVwb3J0IEVMRiBtb2R1bGVzCgkgIGluIFN5bUVudW1Nb2R1bGVzIChhcyB3ZWxsIGFzIGxvYWRlciB3aXRoIDx3aW5lLWxvYWRlcj4pCgktIHNvbWUgbWlub3IgaW50ZXJuYWwgY2xlYW4tdXBzCgktIGVuaGFuY2VkIGNvbnN0IGNvcnJlY3RuZXNzCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRkZWQgc2l6ZSBpbmZvcm1hdGlvbiBhYm91dCBtb3N0IG9mIHRoZSBnZW5lcmF0ZWQgdGh1bmtzIChpbXBvcnQsCgkgIDE2LzMyIHJlbGF5Li4uKQoJLSBtYXJrZWQgdGhlIHdpbmUgdGh1bmtzIGJ5IGluc2VydGluZyBzcGVjaWZpYyBzeW1ib2xzICh0byBiZSBtYW5hZ2VkCgkgIGJ5IHdpbmUncyBkYmdoZWxwKQoJLSByZW1vdmVkIHRoZSBzdGFicyBnZW5lcmF0aW9uOgoJICArIG1vc3RseSB1c2VkIGJ5IHdpbmVkYmcsIGFuZCB0aGUgcHJldmlvdXMgaXRlbSB3aWxsIHJlcGxhY2UgaXQgZm9yCgkgICAgZGJnaGVscAoJICArIHN0aWxsIGJyb2tlbiBmb3IgZ2RiIGFueXdheQoJLSBlbmhhbmNlZCBjb25zdCBjb3JyZWN0bmVzcwoKCSogd2luZG93cy9kaWFsb2cuYzoKCUFjdGl2YXRlIGFub3RoZXIgd2luZG93IHdoZW4gdGhlIGRpYWxvZyBnZXRzIGhpZGRlbiBpbiBFbmREaWFsb2cuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYzoKCUFkZGVkIHNvbWUgb3B0aW9uYWwgbWVzc2FnZXMgdG8gbWFrZSBhbGwgdGVzdHMgc3VjY2VlZCBvbiBYUC4KCUFkZGVkIHRlc3RzIGZvciBFbmREaWFsb2cgYW5kIGEgc2ltcGxlIG1vZGFsIGRpYWxvZy4KCgkqIGRsbHMvZ2RpL3BhaW50aW5nLmMsIGRsbHMva2VybmVsL3JlZ2lzdHJ5MTYuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgaW5jbHVkZS93aW5nZGkuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMuCgoJKiBkbGxzL3dpbmVwcy9jbGlwcGluZy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBidWlsZGluZyBQb3N0U2NyaXB0IHBhdGhzIHdpdGggdGhlICpfUEFUSCBlc2NhcGVzLCBkb24ndCBjbGlwIHRoZQoJcGF0aCBidWlsZGluZyBwcmltaXRpdmVzLiAgVGhlIGNsaXBwaW5nIGNvbWVzIGludG8gcGxheSB3aGVuIHdlCglhY3R1YWxseSBkcmF3IHNvbWV0aGluZy4KCgkqIGRsbHMvbXNpLy5jdnNpZ25vcmUsIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS92ZXJzaW9uLnJjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgdmVyc2lvbiBpbmZvIHRvIE1TSSBkbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc3ZjcnRkL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydGQvZGVidWcuYywgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYywKCSAgZGxscy9tc3ZjcnRkL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0ZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnRkL3Rlc3RzL2RlYnVnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcGxlbWVudGVkIHRoZSBkZWJ1ZyB2ZXJzaW9uIG9mIG9wZXJhdG9yIG5ldyAoQysrKS4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2QzZHJtLy5jdnNpZ25vcmUsIGRsbHMvZDNkcm0vTWFrZWZpbGUuaW4sIGRsbHMvZDNkcm0vZDNkcm0uc3BlYywKCSAgZGxscy9kM2RybS9kM2RybV9tYWluLmMsIGRsbHMvZDNkcm0vdmVyc2lvbi5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgZW1wdHkgKHN0dWJzIGluIHNwZWMgb25seSkgZDNkcm0uCgoJKiB3aW5kb3dzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJT25seSBjaGlsZCB3aW5kb3dzIHJlY2VpdmUgV01fU0hPV1dJTkRPVyBpbiBEZXN0cm95V2luZG93KCkgdW5kZXIKCVdpbmRvd3MuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IEFkZGVkIGEgY291cGxlIG9mIHRlc3RzIGZvciBTZXRBY3RpdmVXaW5kb3cuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGVkIHBpeGVsIHNoYWRlcnMgMS40LgoJRml4ZWQgaGFuZGxpbmcgb2YgbWFjcm9zIGF0IHRoZSBlbmQgb2YgdmVydGV4IHNoYWRlcnMuCglIYW5kbGVkIE5PUCBhbmQgUEhBU0UgaW5zdHJ1Y3Rpb25zLgoJRml4ZWQgdmVyc2lvbnMgb2Ygc2V2ZXJhbCBpbnN0cnVjdGlvbnMuCglJbXByb3ZlZCBwaXhlbCBzaGFkZXIgZHVtcCB0cmFjZXMuCglGaXhlZCB3cml0ZSBtYXNrLgoJRml4ZWQgWDIgYW5kIC1YMiBzb3VyY2UgbW9kaWZpZXJzIGFuZCBpbXBsZW1lbnRzIERaIGFuZCBEVyBvbmVzLgoJSW1wbGVtZW50ZWQgdGV4Y3JkLCB0ZXhsZCwgdGV4bTN4M3BhZCwgdGV4bTN4M3RleCwgdGV4bTN4M3NwZWMgYW5kCgl0ZXhtM3gzdnNwZWMgaW5zdHJ1Y3Rpb25zIChhbmQgcGFydGlhbGx5IHRleGJlbSkuCglBZGRlZCBjbmQsIGNtcCBhbmQgbHJwIGluc3RydWN0aW9ucy4KCVJld3JpdGUgb2YgdGhlICJhdXRvcGFyYW0iIGNvZGUgc28gd2UgY2FuIGFkZCBtb3JlIGNvbXBsaWNhdGVkCglpbnN0cnVjdGlvbnMgKG9ubHkgY25kIGFuZCBjbXAgYXMgd2VsbCBhcyBzaW1wbGUgaW5zdHJ1Y3Rpb25zIHVzZSB0aGF0Cgljb2RlIGF0IHRoZSBtb21lbnQpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFRCTl9EUkFHT1VUIGFuZCBOTV9SREJMQ0xLIG5vdGlmaWNhdGlvbnMuCgktIFJlbW92ZSB1bm5lZWRlZCBtZW1iZXIgb2YgcHJpdmF0ZSB0b29sYmFyIHN0cnVjdC4KCjIwMDQtMDUtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbWFwcGluZyBVTkMgZmlsZW5hbWVzIHRvIHRoZSBkb3NkZXZpY2VzIGRpcmVjdG9yeS4KCgkqIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywgZGxscy9keGRpYWduL3JlZ3N2ci5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9zZWN1cjMyL3NlY3VyMzIuYywgZGxscy9zZWN1cjMyL3dyYXBwZXIuYywKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0MTYuYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9zdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RyU3BuVyBkb2Vzbid0IGV4aXN0IGluIGNvbWN0bDMyLmRsbCBidXQgU3RyQ1NwblcgZG9lcy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0aGUgSUludGVybmV0U2Vzc2lvbiBpbnRlcmZhY2UuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBzY2FuZiBoYW5kbGluZyBvZiBmbG9hdCBudW1iZXJzIChiZWdpbm5pbmcgd2l0aCBhIGRvdCkuCgoJKiBjb250cm9scy9jb21iby5jOiBUaG9tYXMgV2VpZGVubXVlbGxlciA8dzNzZWVrQHJlYWN0b3MuY29tPgoJQ29tYm9ib3ggcG9wdXBzIHNob3VsZCBiZSBhbHdheXMtb24tdG9wLgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBYWVpSSFcgdmVydGV4IG1vZGUgY29ycmVjdGx5IGluIHNsb3cgcGF0aC4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gRmlyc3QgZHJhZnRzIGZvciBJRGlyZWN0TXVzaWNTZWdtZW50OjpHZXRQYXJhbSBhbmQKCSAgSURpcmVjdE11c2ljVGVtcG9UcmFjazo6R2V0UGFyYW0gKG5lZWQgbW9kaWYgb24gTG9hZCkuCgktIFJldHVybiB2YWx1ZSBmaXhlcyBmb3IgR2V0Q2xhc3NJRCBvZiBUZW1wb1RyYWNrIGFuZCBTZWdtZW50LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIExldCB0aGUgc3ViY2xhc3Npbmcgc3RhY2sgZ3JvdyB0aGUgb3Bwb3NpdGUgd2F5IHRvIG1ha2UgdGhlIGNvZGUKCSAgbW9yZSB0cmFuc3BhcmVudC4KCS0gUmVtb3ZlIFN1YmNsYXNzV25kUHJvYyBhbmQgbW92ZSBpdHMgbG9naWMgdG8gRGVmU3ViY2xhc3NQcm9jLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIElmIGEgY3J5cHRvIHByb3ZpZGVyIGRvZXMgbm90IGhhdmUgYSBTaWduYXR1cmUgaW4gdGhlIHJlZ2lzdHJ5LAoJICBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBTaWdJbkZpbGUgdmFsdWUgYmVmb3JlIGZhaWxpbmcuCgktIEdldCByaWQgb2YgYSBjb3VwbGUgcmVkdW5kYW50IGFzc2lnbm1lbnRzLgoKMjAwNC0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc21iLmMsIHNlcnZlci90cmFjZS5jOgoJUmVtb3ZlZCB0aGUgbm8gbG9uZ2VyIHVzZWQgU01CIGZpbGUgSS9PIHN1cHBvcnQsIHdlIGNhbid0IGRvIHJlbGlhYmxlCglmaWxlIEkvTyBpbiB1c2VyIHNwYWNlIGFueXdheS4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYzoKCUJldHRlciBmaXggZm9yIHJlbW92aW5nIHRyYWlsaW5nIHNwYWNlcyBpbiBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCU5lZWQgdG8gcmVtb3ZlIHRyYWlsaW5nIGRvdHMgdG9vIChyZXBvcnRlZCBieSBLZW4gQmVsbGVhdSkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglVc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluc3RlYWQgb2YgY29uZmlnIGZpbGUgZW50cmllcyB0byBzcGVjaWZ5CglwYXRoLCBwcm9maWxlLCB0ZW1wLCB3aW5kb3dzIGFuZCBzeXN0ZW0gZGlyZWN0b3JpZXMuCglDb252ZXJ0IGV4aXN0aW5nIGNvbmZpZyBmaWxlIGVudHJpZXMgdG8gcmVnaXN0cnkgdmFsdWVzIHVuZGVyCglIS0NVXEVudmlyb25tZW50LgoKCSogdG9vbHMvd2luZS5pbmY6IEFkZGVkIEVudmlyb25tZW50IHNlY3Rpb24uCglGaXhlZCBwYXRoIG9mIHNoZWxsIGZvbGRlcnMga2V5IGluIEhLRVlfVVNFUlMuCgoJKiBkbGxzL2Ftc3RyZWFtL3ZlcnNpb24ucmMsIGRsbHMvZDNkOC92ZXJzaW9uLnJjLCBkbGxzL2QzZDkvdmVyc2lvbi5yYywKCSAgZGxscy9kM2RpbS92ZXJzaW9uLnJjLCBkbGxzL2RkcmF3L3ZlcnNpb24ucmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLCBkbGxzL2RpbnB1dC92ZXJzaW9uLnJjLAoJICBkbGxzL2RpbnB1dDgvdmVyc2lvbi5yYywgZGxscy9kbWJhbmQvdmVyc2lvbi5yYywKCSAgZGxscy9kbWNvbXBvcy92ZXJzaW9uLnJjLCBkbGxzL2RtaW1lL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1sb2FkZXIvdmVyc2lvbi5yYywgZGxscy9kbXNjcmlwdC92ZXJzaW9uLnJjLAoJICBkbGxzL2Rtc3R5bGUvdmVyc2lvbi5yYywgZGxscy9kbXN5bnRoL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG11c2ljL3ZlcnNpb24ucmMsIGRsbHMvZG11c2ljMzIvdmVyc2lvbi5yYywKCSAgZGxscy9kcGxheXgvdmVyc2lvbi5yYywgZGxscy9kcG5ldC92ZXJzaW9uLnJjLAoJICBkbGxzL2RwbmhwYXN0L3ZlcnNpb24ucmMsIGRsbHMvZHNvdW5kL3ZlcnNpb24ucmMsCgkgIGRsbHMvZHN3YXZlL3ZlcnNpb24ucmMsIGRsbHMvZHhkaWFnbi92ZXJzaW9uLnJjLCBkbGxzL21zZG1vL3JzcmMucmMsCgkgIGRsbHMvcWNhcC8uY3ZzaWdub3JlLCBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC92ZXJzaW9uLnJjLAoJICBkbGxzL3F1YXJ0ei92ZXJzaW9uLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGVkIHRoZSB2ZXJzaW9uIGluZm8gb2YgYWxsIERpcmVjdFggZGxscyB0byB0aGUgdmVyc2lvbiBudW1iZXJzIG9mCglEaXJlY3RYIDkuMGIgZm9yIFdpbmRvd3MgMjAwMC9YUC4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBQYXJzZSBETVN0eWxlIG1vdGlmcyAoaWUgcGF0dGVybnMpIGFuZCBiYW5kcyAoZmlsbCBsaXN0cykuCgktIEltcGxlbWVudCAgSURpcmVjdE11c2ljU2VnbWVudDg6Okluc2VydFRyYWNrIGFuZAoJICBJRGlyZWN0TXVzaWNTZWdtZW50ODo6UmVtb3ZlVHJhY2sgKG5vdyBFbnVtVHJhY2sgR2V0UGFyYW0sIGFuZAoJICBHZXRUcmFjayBzaG91bGQgYmUgZWFzeSB0byBkbykuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglTb21lIHVwZGF0ZXMgdG8gdGhlIGZhcS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCVNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSB0aGUgSEtDVVxFbnZpcm9ubWVudCBrZXkgdG9vLgoJTW92ZWQgY3VycmVudCBkaXJlY3RvcnkgaW5pdGlhbGlzYXRpb24gdG8gcHJvY2Vzcy5jLgoJTWFrZSBzdXJlIHRvIGFsd2F5cyBwYXNzIHRoZSBjb3JyZWN0IGN1cnJlbnQgZGlyZWN0b3J5IGluIHRoZSBwcm9jZXNzCglwYXJhbWV0ZXJzIGZvciBjaGlsZCBwcm9jZXNzZXMuCgoJKiBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWJhbmQvZG11dGlscy5jLCBkbGxzL2RtYmFuZC9kbXV0aWxzLmgsIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9kbXV0aWxzLmMsIGRsbHMvZG1pbWUvZG11dGlscy5oLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL2RtdXRpbHMuYywgZGxscy9kbXN0eWxlL2RtdXRpbHMuaCwgZGxscy9kbXN0eWxlL3N0eWxlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gQWRkIHRoZSBzYW1lIG5ldyBmaWxlcyAoZG11dGlscy5jL2RtdXRpbHMuaCkgaW50byBkbWltZSxkbWJhbmQgYW5kCgkgIGRtc3R5bGUgZGlyZWN0b3J5IHRoYXQgc2hhcmUgdGhlIGRlYnVnIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBkbXVzaWMKCSAgZGxscyAoYXMgUm9rJ3MgaWRlYSBmb3IgZG1sb2FkZXIpLgoJLSBVc2UgbmV3IGhlbHBlcnMgZnVuY3Rpb25zIHRvIGxvYWQgUmVmZXJlbmNlcyBvbgoJICBJRGlyZWN0TXVzaWNTZWdUcmlnZ2VyVHJhY2sgbG9hZGluZyAoY3VycmVudGx5IHRoZXkgbGVhaykuCgktIElEaXJlY3RNdXNpY1N0eWxlIChhbG1vc3QgcGFydGlhbCkgbG9hZGluZy4KCS0gTWlub3IgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglGaXhlZCBzb21lIG9mIHRoZSBHZXRTaG9ydFBhdGhOYW1lIHRlc3RzIHRvIHVzZSB0aGUgc2hvcnQgdmVyc2lvbiBvZgoJdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdoZXJlIG5lZWRlZC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJpbnQgaHVtYW4tcmVhZGFibGUgY2FwYWJpbGl0aWVzIGZsYWcuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCU1ha2Ugc3VyZSB0byBzYXZlIHRoZSByZWdpc3RyeSBmaWxlcyBldmVuIGlmIHdlIGZhaWxlZCB0byBsb2FkIHRoZW0uCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTYW1wbGUgcmF0ZSBzYW5pdHkgY2hlY2suCglGaXggU01QVEUgdGltZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsLCB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOgoJTWFrZSB3aW5laW5zdGFsbCB1c2Ugd2luZXByZWZpeGNyZWF0ZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZQoJZnVuY3Rpb25hbGl0eS4KCjIwMDQtMDUtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jaGFuZ2UuYywgZGxscy9rZXJuZWwvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJQWRkZWQgcHJvcGVyIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBmaWxlIEFQSXMgYmV0d2VlbiBBTlNJIGFuZCBPRU0KCWNvZGVwYWdlcy4gT3B0aW1pemVkIHNvbWUgb2YgdGhlIEEtPlcgY29udmVyc2lvbnMgYnkgdXNpbmcgdGhlCglwZXItdGhyZWFkIFVuaWNvZGUgc3RyaW5nIGJ1ZmZlci4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJd2F2ZU91dEdldERldkNhcHNBIGNhbiBmYWlsIHdpdGggTU1TWVNFUlJfQkFEREVWSUNFSUQgb3IKCU1NU1lTRVJSX05PRFJJVkVSIHdoZW4gbm8gZHJpdmVycyBwcmVzZW50LgoJQWRkIGJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvZGlucHV0OC92ZXJzaW9uLnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZSB0byB2ZXJzaW9uIDkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBY2NlcHQgRU1SX0VYVFRFWFRPVVQgcmVjb3JkcyB3aXRoIGVtcnRleHQub2ZmRHggc2V0IHRvIDAuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglBZGQgbmV3IGRsbHMgYW5kIGZpeCBhbHBoYWJldGljYWwgbG9jYXRpb24gb2YgYSBjb3VwbGUgZGxscy4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYzoKCVJlbW92ZSB0cmFpbGluZyBzcGFjZXMgZnJvbSB0aGUgZmlsZW5hbWUgaW4gUnRsR2V0RnVsbFBhdGhOYW1lX1UuCgoJKiBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBGZXdlciBGSVhNRXMuCgktIEJldHRlciB0cmFjZXMuCgktIElEaXJlY3RNdXNpY0JhbmQgbG9hZGluZyBmaXhlczoKCSAgLSBsb2FkIGNvcnJlY3RseSBpbnN0cnVtZW50cyAoYW5kIFJlZmVyZW5jZXMKCSAgLSBsb2FkIElEaXJlY3RNdXNpY0NvbGxlY3Rpb24gb2JqZWN0ICh1c2luZyBETUxvYWRlcikKCSAgLSBpbnNlcnQgdGhlIHR3byBvbiB0aGUgbGlzdAoJLSBJRGlyZWN0TXVzaWNCYW5kVHJhY2sgbG9hZGluZyBmaXhlcyAoZmlsbCBPQkpFQ1RERVNDIGFuZCBwYXJzZSBVTkZPCgkgIGluZm9zKS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVNvbWUgdXBkYXRlcyB0byB0aGUgZmFxLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJRnJlZSB1cCB0aGUgb3JpZ2luYWwgYnVmZmVyIHBvaW50ZXIgaW5zdGVhZCBvZiB0aGUgb25lIHdlIGFkdmFuY2VkLgoJT25seSBjYWxsIGdldERyaXZlKCkgb25jZSBpbnNpZGUgb2YgYWRkRHJpdmUoKS4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQcmV2ZW50IG1lbW9yeSBsZWFrIGFuZCBzdXBlcmZsdW91cyBzdGF0dXMgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogRml4ZWQgY29weS9wYXN0ZSBidWcgaW4gcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwgZGxscy9kbWxvYWRlci9jbGFzc2ZhY3RvcnkuYywKCSAgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywgZGxscy9kbWxvYWRlci9kZWJ1Zy5jLAoJICBkbGxzL2RtbG9hZGVyL2RlYnVnLmgsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJZG1sb2FkZXI6IGNvbXBsZXRlIHJld3JpdGUgYW5kIGZ1bGwgaW1wbGVtZW50YXRpb24uCgoyMDA0LTA1LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kbWJhbmQvYmFuZC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUlEaXJlY3RNdXNpY0JhbmQgbG9hZGluZy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUGFzcyBjcnlwdCBwcm92aWRlciBhbmQgdHlwZSB0byBDUEFjcXVpcmVDb250ZXh0LgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjLCBkbGxzL21zdmNydDQwL21zdmNydDQwLnNwZWMsCgkgIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6CglGaXhlZCB0aGUgcHJvdG90eXBlcyBvZiB0aGUgX2Fkal9mZGl2XyogZnVuY3Rpb25zLgoKCSogZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBTZWdtZW50IGxvYWRpbmcgZml4IChjb3JyZWN0IEZPVVJDQ19SSUZGIHRyYWNrcyBoYW5kbGluZykuCgktIElEaXJlY3RNdXNpY1N0eWxlVHJhY2sgbG9hZGluZyAobmVlZCBETSBSZWZlcmVuY2VzKS4KCS0gSURpcmVjdE11c2ljQmFuZFRyYWNrIGxvYWRpbmcgKG5lZWQgSURpcmVjdE11c2ljQmFuZCBsb2FkaW5nKS4KCgkqIGRsbHMvZGlucHV0OC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dDgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0OC92ZXJzaW9uLnJjOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJQWRkZWQgdmVyc2lvbiBpbmZvLgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgUG9zdFNjcmlwdCBjbGlwIG9wZXJhdG9yIGRvZXNuJ3QgY2xlYXIgdGhlIGN1cnJlbnQgcGF0aCwgc28gYWZ0ZXIKCXRoZSBDTElQX1RPX1BBVEggZXNjYXBlIHdlIHdhbnQgdG8gY2xlYXIgaXQgb3Vyc2VsdmVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUFkZCBEVF9FTkRfRUxMSVBTSVMgYXMgZGVmYXV0IHN0eWxlIGZvciB0ZXh0LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJvcGVybHkgcmV0cmlldmUgYW5kIHJlbGVhc2UgaGFuZGxlcy4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHJld3JvdGUgdGhlIGZpbGUgY29kZSBzbyB0aGF0IHN0cmVhbXMgbWFuYWdlIGxvdyBsZXZlbCBmaWxlIGRlc2MKCSAgKHRoZSBjb2RlIHdhcyB3cml0dGVuIHRoZSBvdGhlciB3YXkgYXJvdW5kKQoJLSByZXdvcmtlZCB0aGUgZmxhZyBoYW5kbGluZyBjb2RlIChub3cgdGhlIHN0cmVhbS5fZmxhZyBpcyBjbG9zZXIgdG8KCSAgd2hhdCBNUyBkb2VzKQoJLSBzaW1wbGlmaWVkIHRlbXAgZmlsZXMgaGFuZGxpbmcgYnkgdXNpbmcgRklMRV9GTEFHX0RFTEVURV9PTl9DTE9TRSBpbgoJICBDcmVhdGVGaWxlCgktIGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvbGZnYW5nLnNjaHdvdHplckBnbXgubmV0PgoJU3VwcG9ydCBscHN0ckN1c3RvbUZpbHRlciBhbmQgcmV0dXJuIG5GaWx0ZXJJbmRleCBpbiBmaWxlIGRpYWxvZy4KCgkqIHRvb2xzL3dpbmUuaW5mOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkcyBtc2c3MTEgd2luZW1wMyB0byBsaXN0IG9mIGNvZGVjcy4KCjIwMDQtMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9kbXVzaWNmLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gVHlwbyBmaXggaW4gZG11c2ljZi5oLgoJLSBJRGlyZWN0TXVzaWNDaG9yZFRyYWNrIGxvYWRpbmcuCgktIE1hbnkgSXNEaXJ0eSBhbmQgR2V0Q2xhc3NJRCBzdHVicy4KCgkqIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJbWFnZUVudW1lcmF0ZUNlcnRpZmljYXRlcyBhbmQgSW1hZ2VHZXRDZXJ0aWZpY2F0ZUhlYWRlci4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggQ3JvYXRpYW4ga2V5Ym9hcmQgbGF5b3V0IHRvIGJldHRlciBtYXRjaCB0aGUgWEZyZWU4NiBvbmUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSB0ZXN0IGZvciBHZXRXaW5kb3dJbmZvLCBpdCBzaG91bGQgbm90IGNoZWNrIGNiU2l6ZSBtZW1iZXIgb2YKCSAgdGhlIFdJTkRPV0lORk8gc3RydWN0dXJlLgoJLSBBZGQgdGVzdHMgZm9yIHdpbmRvdyBzdGF0ZSBhdCB0aGUgdGltZSB0aGUgc3lzdGVtIGNhbGxzCgkgIEhDQlRfQ1JFQVRFV05EIChmYWlsaW5nIHVuZGVyIFdpbmUgYXQgdGhlIG1vbWVudCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjYXNlIHdoZXJlIGl0ZXJhdG9yIHJhbmdlIGNvbnRhaW5zIDAgZWxlbWVudHMuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jLCBsaWJzL3dpbmUvY29uZmlnLmMsIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglJbml0aWFsIHN1cHBvcnQgZm9yIGF1dG9tYXRpY2FsbHkgY3JlYXRpbmcgdGhlIH4vLndpbmUgZGlyZWN0b3J5IG9uCglzdGFydHVwLgoKCSogd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUpha2UgSGFtYnkgPGpoYW1ieUBhbm9iamVjdC5jb20+CglTZXZlcmFsIG9mIHRoZSByZWdpc3RyeSBrZXlzIGZvciBzeXN0ZW0gY29sb3JzIGFuZCBzeXN0ZW0gbWV0cmljcyB3ZXJlCglpbmNvcnJlY3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgYW4gaW50ZXJmYWNlIG5hbWUgdG8gd2luZW9zcywgd2luZWFsc2EsIHdpbmVhcnRzIGFuZCB3aW5lamFjay4KCUFkZCBzdXBwb3J0IGZvciB3YXZlIGludGVyZmFjZSBtZXNzYWdlIHdoZXJlIG1pc3NpbmcuCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBNYW55IElEaXJlY3RNdXNpY1NlZ21lbnQgZml4ZXMgKGxvYWRpbmcpLgoJLSBBdWRpb1BhdGggY3Jhc2ggZml4IChkb24ndCB1c2UgRFNvdW5kIEFQSXMgaWYgYnVmZmVyIGlzIG51bGwpLgoJLSBNb3ZlIGdlbmVyaWMgZnVuY3Rpb25zIHRvIGRtaW1lX21haW4uYyBmb3IgZnV0dXJlIHJldXNlIChmcm9tCgkgIHNlZ21lbnQuYykuCgktIElEaXJlY3RNdXNpY1RlbXBvVHJhY2sgbG9hZGluZyAobWFueSB0ZW1wbyBjYXNlIG11c3QgYmUgaGFuZGxlZCkuCgktIElEaXJlY3RNdXNpY1NlZ1RyaWdnZXJUcmFjayBsb2FkaW5nIGltcGxlbWVudGF0aW9uIChub3cKCSAgRE1SRi9EaXJlY3RNdXNpYyBSZWZlcmVuY2VzIGxvYWRpbmcgc2hvdWxkIGJlIGRvbmUpLgoKCSogZG9jdW1lbnRhdGlvbi90aHJlYWRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBkb2N1bWVudGF0aW9uIG9uIGhvdyB0aHJlYWRpbmcgaXMgaW1wbGVtZW50ZWQgaW4gV2luZS4KCUNvdmVycyBiYXNpYyBXaW4zMiB0aHJlYWRpbmcgcHJpbWl0aXZlcywgc3lzbGV2ZWxzLCB0aGUgVEVCIGFuZAoJcHRocmVhZHMgdnMga3RocmVhZHMuCgoyMDA0LTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYzoKCUZpeGVkIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGluIEdldFVzZXJOYW1lQSAocmVwb3J0ZWQgYnkgSGFubnUKCVZhbHRvbmVuKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGxfQ24ucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0ZyLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0tvLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9ObC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUGwucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1B0LnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9SdS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1RoLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Vay5yYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50ZWQgUFNIX1dJWkFSRDk3X09MRCBhbmQgUFNIX1dJWkFSRDk3X05FVyBwcm9wZXJ0eSBzaGVldAoJc3R5bGVzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBXIGJ1ZmZlciBoYW5kbGluZy4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjbGlwYm9hcmQgcmVncmVzc2lvbi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIFNob3dXaW5kb3cvU2V0V2luZG93UG9zIHRlc3RzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQ2xlYW51cCBjb252ZXJzaW9uIGZyb20gQS0+Vy4KCgkqIGluY2x1ZGUvdGhyZWFkLmg6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQmV0dGVyIGhhdmUgaW50ZXJuYWwgJiBleHRlcm5hbCBURUIgZGVmaW5pdGlvbnMgaGF2ZSB0aGUgc2FtZSBzaXplLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGEgbWlzc2luZyB0eXBlZGVmLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIHBpeGVsIHNoYWRlcnMgdXNpbmcgQVJCX2ZyYWdtZW50X3Byb2dyYW0gZXh0ZW5zaW9uLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywKCSAgZGxscy9tc2FjbS90ZXN0cy9tc2FjbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vcmUgcGFyYW1ldGVyIGNoZWNraW5nIGZpeGVzIHdpdGggdGVzdHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQ29ycmVjdGx5IGNyZWF0ZSB0aGUgYnl0ZSBhcnJheSBvZiBnaWYgaW1hZ2VzIHRvIG1hdGNoIHdoYXQKCUNyZWF0ZURJQml0bWFwIGV4cGVjdHMuCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFJlbGVhc2UgRFNCdWZmZXIgb24gQXVkaW9QYXRoIGRlc3RydWN0aW9uLgoJLSBTZW1pIHN0dWIgZm9yIEF1ZGlvUGF0aCBBY3RpdmF0ZS4KCS0gSURpcmVjdE11c2ljUGVyZm9ybWFuY2U4OjpDcmVhdGVBdWRpb1BhdGggc3R1Yi4KCS0gTW9zdCBvZiB0aGUgSURpcmVjdE11c2ljU2VnbWVudDhfW1NldCxHZXRdKiAodXNpbmcgaGVhZGVyKS4KCS0gTG9hZCBvZiBTdHJlYW1lciBJRGlyZWN0TXVzaWNTZWdtZW50OCBoZWFkZXIuCgoJKiBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29iamlkbC5pZGw6CglKYWtlIEhhbWJ5IDxqaGFtYnlAYW5vYmplY3QuY29tPgoJSU1lc3NhZ2VGaWx0ZXI6OkhhbmRsZUluQ29taW5nQ2FsbCgpIHNob3VsZCBiZSBIYW5kbGVJbmNvbWluZ0NhbGwoKS4KCgkqIGRsbHMvdGFwaTMyL2xpbmUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW1wbGVtZW50YXRpb24gb2YgbGluZUdldFRyYW5zbGF0ZUNhcHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Vay5yYywgZGxscy9jb21tZGxnL2NkbGdfVWsucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Vay5yYzoKCUlseWEgS29ybml5a28gPGtfaWx5YUB1a3IubmV0PgoJRW5jb2RpbmcgZml4ZXMgaW4gVWtyYWluaWFuIHRyYW5zbGF0aW9uLgoKMjAwNC0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaXN0cnkuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglNb3ZlZCBsb2FkaW5nIG9mIHRoZSBob21lIHJlZ2lzdHJ5IGZpbGVzIHRvIHRoZSBzZXJ2ZXIsIHRoZXJlJ3Mgbm8KCXJlYWwgbmVlZCB0byBtYWtlIHRoZXNlIGNvbmZpZ3VyYWJsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc2VjLmM6CglVc2UgdGhlIFVuaXggY29kZXBhZ2UgdG8gY29udmVydCB0aGUgdXNlciBuYW1lIHRvIFVuaWNvZGUuCgoJKiBkbGxzL21wci93bmV0LmM6IEtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglXTmV0R2V0Q29ubmVjdGlvbigpOiB1c2UgUXVlcnlEb3NEZXZpY2UgdG8gcmV0dXJuIGEgZmFrZSByZW1vdGUgbmFtZQoJaW5zdGVhZCBvZiB0aGUgZHJpdmUgbGFiZWwuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50ZWQgSXNBc3luY01vbmlrZXIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgV01fR0VUTUlOTUFYSU5GTyBkZWZhdWx0IGJlaGF2aW91ciBtb3JlIGxpa2UgdGhlIFdpbmRvd3Mgb25lLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglNYXR0aGV3IERhdmlzb24gPG1qZDc3QGNhbS5hYy51az4KCVVwZGF0ZSBzcGVjIGZpbGUuCgoJKiBjb250cm9scy9lZGl0LmM6IEtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglFTV9VTkRPIHNob3VsZCBhbHdheXMgcmV0dXJuIFRSVUUgZm9yIHNpbmdsZSBsaW5lIGVkaXQuCgoyMDA0LTA1LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogUkVBRE1FLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5kZSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9iciwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2Mvb3B0aW9ucy5jLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIGxhc3QgcmVtYWluaW5nIHdpbmUgb3B0aW9ucyB3aGVuIHJ1bm5pbmcgcHJvZ3JhbXMuCglLZWVwIHN1cHBvcnQgZm9yIC0taGVscCwgYW5kIC0tdmVyc2lvbiB3aGVuIHRoZXkgYXJlIHRoZSBvbmx5IG9wdGlvbnMKCW9uIHRoZSBjb21tYW5kIGxpbmUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmM6CglGaXhlZCBjcmFzaCB3aGVuIHNlbGVjdGluZyB0aGUgZHJpdmUgbGV0dGVyIGNvbWJvIGJveC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJUmVtb3ZlZCBoYW5kbGluZyBvZiBzcGVjaWFsIHJvb3Qga2V5cywgdGhpcyBpcyBkb25lIGJ5IHRoZSBjbGllbnQgbm93LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogQW5kcmV5IFBhbm92IDxwYXZAbWV0aWIucnU+CglJbiBnZXRfYnVmZmVyX3NwYWNlKCkgZnVuY3Rpb24sIEhlYXBSZUFsbG9jKCkgd2lsbCBub3QgYWxsb2NhdGUgbWVtb3J5CglpZiBwYXNzZWQgKmJ1ZmZlciB2YWx1ZSBpcyBOVUxMLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgd2luZG93cy9jbGlwYm9hcmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGFwcGxpY2F0aW9ucywgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0byBzZXQgZGF0YSBpbnRvIHRoZQoJY2xpcGJvYXJkIGV2ZW4gaWYgdGhleSBhcmUgbm90IHRoZSBjbGlwYm9hcmQgb3duZXJzLgoKCSogZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUl0J3MgT0sgdG8gaGF2ZSBkd051bUVudHJpZXMgPT0gMCBpZiB0aGVyZSBpcyBubyBuZXR3b3JrIGNvbm5lY3Rpb24uCgoJKiBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFBNc2cgcHJvY2Vzc2luZyB0aHJlYWQgKGN1cnJlbnRseSBvbmx5IE5vdGlmaWNhdGlvbnMgaGFuZGxpbmcpCgktIGEgY2hhaW5lZCBsaXN0IGJ1ZwoJLSB0aHJlYWQtc2FmZSBsaXN0cwoJLSByZWFsIGNsb3NlIG9uIENsb3NlRG93bgoKMjAwNC0wNS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDUwNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wNS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlLCBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJS2VlcCB0aGUgdHJhbnNsYXRlZCBSRUFETUVzIGluIHN5bmMgd2l0aCB0aGUgRW5nbGlzaCBvbmUuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJSW1wbGVtZW50ZWQgU3lzdGVtQ2xvY2sgKElSZWZlcmVuY2VDbG9jayBieSBkc2hvdykuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCVJlbW92ZSBiaXRtYXBzIHRoYXQgd2VyZSBvbmx5IHVzZWQgZm9yIHRoZSAzLjEgbG9vay4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFdvbGZnYW5nIFNjaHdvdHplciA8d29zY2h3b3RAZ214Lm5ldD4KCVVwZGF0ZSBPRk5fUkVBRE9OTFkgZmxhZyB3aGVuIGNsb3NpbmcgZmlsZSBkaWFsb2cuCgoJKiB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOgoJQWRkZWQgb3B0aW9ucyB0byB1cGRhdGUgYW4gZXhpc3RpbmcgV0lORVBSRUZJWCBkaXJlY3RvcnkgYW5kIHRvIHJ1bgoJZnJvbSBpbnNpZGUgYSBXaW5lIHNvdXJjZSB0cmVlLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJU2V0IGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGF0IHN0YXJ0dXAgZnJvbQoJSEtMTVxTeXN0ZW1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxTZXNzaW9uIE1hbmFnZXJcRW52aXJvbm1lbnQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglKYW1lcyBDb3VydGllci1EdXR0b24gPEphbWVzQHN1cGVyYnVnLmRlbW9uLmNvLnVrPgoJVXBkYXRlZCB0byB0aGUgbmV3IGFsc2EgYXBpLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJQSBjb3VwbGUgb2YgY2hhbmdlcyB0byBhdm9pZCBzb21lIGZhaWx1cmVzIG9uIFhQLgoKCSogZGxscy9zZXR1cGFwaS9kaXJpZC5jOiBBZGRlZCBzdXBwb3J0IGZvciBESVJJRF9VU0VSUFJPRklMRS4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgdW51c2VkIGhlYWRlci4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJVGhlIG1zYWNtIGRpcmVjdG9yeSBpcyBzcGVjaWFsLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVHJhY2UgdGhlIHN5c3RlbSBhbmQgdXNlciBsb2NhbGVzIHVwb24gc3RhcnR1cC4KCVByaW50IHRoZSByZXR1cm5lZCBzdHJpbmcgaWYgVmFyRGF0ZUNoYW5nZVR5cGVFeCBmYWlscy4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IGNSZWYgTGVhayAoaW5pdCB0byAxLCBzaG91bGQgYmUgMCkgb2YgSURNUGVyZm9ybWFuY2UKCS0gU2VuZFBNc2cgaW1wbGVtZW50YXRpb24KCS0gYmVnaW4gb2YgUGVyZm9ybWFuY2UgUHJvY2Vzc2luZyBxdWV1ZXMgaW1wbGVtZW50YXRpb24KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2xvYWRlci5jOgoJSW5pdGlhbGl6ZSBudGRsbCBkZWJ1Z2dpbmcgZWFybGllciBvbiBzbyB0aGF0IHdlIGNhbiB0cmFjZSB0aGUgc2VydmVyCglzdGFydHVwIHRvby4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgaW5jbHVkZS93aW5jb24uaDoKCVJlcGxhY2VkIExQSU5QVVRfUkVDT1JEIGJ5IFBJTlBVVF9SRUNPUkQuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBSRUFETUUsIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTWlub3IgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9udGRsbC9lbnYuYzoKCUZpeGVkIFJ0bFNldEVudmlyb25tZW50VmFyaWFibGUgdG8gZGVhbCBwcm9wZXJseSB3aXRoIFVuaWNvZGUgc3RyaW5ncwoJdGhhdCBhcmVuJ3QgbnVsbC10ZXJtaW5hdGVkLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXZSBzaG91bGQgbm90IG1ha2UgZGVzdHN0cmluZyBzdGF0aWMgc2luY2Ugd2UgY291bnQgb24gaXQgYmVpbmcgZnJlc2gKCWFuZCBjbGVhbiB3aGVuIGVudGVyaW5nIHRlc3RfUnRsQ29weVN0cmluZygpLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IERpcmVjdFNvdW5kIENyZWF0aW9uIGJ5IGRtdXNpYyAoZml4IHJlY2VudCBVbnJlYWwyIHJlZ3Jlc3Npb24pCgkgIHVzaW5nIFJvYmVydCBSZWlmIHBhdGNoCgktIHVzZSBvZiBGb3JlZ3JvdW5kV2luZG93IGlmIGhXbmQgaXMgTlVMTCAoYXMgc3BlY2lmaWVkIG9uIG1zZG4gZG9jcykKCS0gYmVnaW4gb2YgUGVyZm9ybWFuY2UgUE1zZyBpbXBsZW1lbnRhdGlvbiAod2Ugc2hvdWxkIHVzZSBhIHByb2Nlc3NpbmcKCSAgdGhyZWFkKQoJLSBiZXR0ZXIgU2VnbWVudCBsb2FkaW5nCgktIHNvbWUgc3R1YnMgZm9yIElzRGlydHkgKGFsd2F5cyBGQUxTRSkKCgkqIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJTWFrZSBJRGlyZWN0TXVzaWNTY3JpcHRJbXBsX0lEaXJlY3RNdXNpY1NjcmlwdF9DYWxsUm91dGluZSByZXR1cm4gU19PSwoJKHdpdGggRV9OT1RJTVBMIHdlIGhhdmUgc29tZSBhcHBzIGNyYXNoZXMpLgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGluY2x1ZGUvdXJsbW9uLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50ZWQgQ29JbnRlcm5ldENvbWJpbmVVcmwgYW5kIENvSW50ZXJuZXRDb21wYXJlVXJsLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJV2luZG93cyA5NSBoYXMgbm8gU3RyUmV0VG9CU1RSLCBhZGQgZHluYW1pYyBsb29rdXAgdG8gYXZvaWQgYmxvY2tpbmcKCWRpYWxvZy4KCgkqIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglQcmV2ZW50IFdpbmRvd3MgOTUgZnJvbSBibG9ja2luZyBvbiBsaW5raW5nIGlzc3VlLgoKCSogZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXdpbmVqYWNrLmRydiBvbmx5IHN1cHBvcnRzIDE2Yml0IHNvdW5kIHNvIHdlIGNhbiBzaW1wbGlmeSB0aGUgc291bmQKCWZvcm1hdCBjaGVja3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIEFSVFNfV2F2ZUluaXQoKSBmYWlsZWQgdGhlbiB0cmFuc21pdCB0aGUgZmFpbHVyZSB1cHN0cmVhbSBpbgoJQVJUU19Ecml2ZXJQcm9jKCkuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1zYWNtMzIgdG8gdGhlIHRlc3RzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGFraW5nIGludG8gYWNjb3VudCB3YXZlbWFwIGFuZCBtaWRpbWFwIHRoZXJlIGNhbiBiZSB1cCB0byA4IG91dHB1dAoJZHJpdmVycy4gU28gaW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIE1NRHJ2cyBhcnJheSBhY2NvcmRpbmdseS4KCVNraXAgYWxyZWFkeSBsb2FkZWQgZHJpdmVycyBiZWZvcmUgY29tcGxhaW5pbmcgKGFzc2VydGluZykgdGhhdCB0aGV5Cglkb24ndCBmaXQgaW4gdGhlIE1NRHJ2cyBhcnJheS4KCjIwMDQtMDUtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglTb21lIG1vcmUgdGVzdHMgZm9yIGZvY3VzIGJlaGF2aW9yIHdoZW4gaGlkaW5nL3Nob3dpbmcgd2luZG93cy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvc3RyaW5nLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3R5cGU0Mi5jLCBkbGxzL3gxMWRydi93aW5lY2xpcHNydi5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLAoJICBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3N0cmluZy5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaCwKCSAgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dtYy9tY2wuYywgdG9vbHMvd21jL21jeS55LAoJICB0b29scy93bWMvdXRpbHMuYywgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3dyYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIG91ciBhc2NpaSBzdHJpbmdzIHN0YXRpYyBjb25zdC4KCVJlbW92ZSBhIGNvdXBsZSBzdHJpbmcgdmFyaWFibGVzIHRoYXQgd2VyZSB1c2VkIG9ubHkgb25jZSBhbmQgdXNlIHRoZQoJc3RyaW5nIGxpdGVyYWwgZGlyZWN0bHkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMgaW4gZGxscy9vbGUzMi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglEb24ndCBjbG9zZSB0aGUgY3VycmVudCB0aHJlYWQgZGlzcGxheSBvbiBwcm9jZXNzIGV4aXQsIHdlIGRvbid0IGNsb3NlCgl0aGUgb3RoZXIgb25lcyBhbnl3YXkuIFNob3VsZCBhdm9pZCBYUmVuZGVyIGVycm9yIGluIG1ldGFmaWxlIHRlc3QuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUltcGxlbWVudGVkIGFuIGFycmF5IG9mIDI2IGRyaXZlcyBhbmQgaW50ZXJmYWNlIGZ1bmN0aW9ucyBmb3IgYWRkaW5nLAoJY29weWluZywgbW92aW5nIGFuZCBkZWxldGluZyBkcml2ZXMuCglBZGRlZCBhICJTaG93L0hpZGUgQWR2YW5jZWQiIGJ1dHRvbiBpbiB0aGUgZHJpdmUgZWRpdCBkaWFsb2cgdGhhdAoJdG9nZ2xlcyB0aGUgZGlzcGxheSBvZiBhZHZhbmNlZCBvcHRpb25zIGFuZCByZXNpemVzL21vdmVzIGNvbnRyb2xzLgoJRGlzYWJsZSB0aGUgJ2F1dG9kZXRlY3QnIHJhZGlvIGJ1dHRvbiBpbiB0aGUgZHJpdmUgZWRpdCBkaWFsb2cgdW50aWwKCXdlIGhhdmUgYXV0b2RldGVjdGlvbiBzdXBwb3J0LgoJTWFwIHdpbmRvdyAneCcgYnV0dG9uIHRvIGRpYWxvZyBjbG9zZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvU2kucmMsIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBGMiBpcyBub3cgYW4gYWNjZWxlcmF0b3IgZm9yIHJlbmFtZQoJLSBwYW5lbCBzd2l0Y2hpbmcgdmlhIFRBQiBkb2Vzbid0IHVzZSBJc0RpYWxvZ01lc3NhZ2UgYW55bW9yZQoJLSBmb2N1cyBpcyBjb3JyZWN0bHkgc2V0IGFmdGVyIG1haW4gd2luZG93IGFjdGl2YXRpb24gKEFsdCtUQUIgZXRjKSwKCSAgcmVtb3ZlZCBzb21lIGZvY3VzLXJlbGF0ZWQgYnVncwoJLSBwcmVzc2luZyBFTlRFUiBvciBkb3VibGUtY2xpY2tpbmcgYSB2YWx1ZSBlZGl0cyBpdAoJLSBzZXR0aW5nIGEgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGlzIG5vdyBhbGxvd2VkCgktIGFkZGluZyBhIG5ldyB2YWx1ZSBzdGFydHMgcmVuYW1lIGF1dG9tYXRpY2FsbHkKCS0gcmVuYW1pbmcgYSB2YWx1ZSBkb2Vzbid0IG1vdmUgdGhlIGN1cnNvcgoJLSByZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgY29kZSAoTk1fUkNMSUNLIGluIExpc3RWaWV3IGV0YykKCS0gcmlnaHQtY2xpY2sgb24gdHJlZSB2aWV3IGRpc3BsYXlzICJOZXcuLi4iIG1lbnUKCS0gZGVmYXVsdCB2YWx1ZXMgYXJlIHRyZWF0ZWQgbGlrZSBpbiBXaW5kb3dzIFJlZ0VkaXQgKGRpc3BsYXllZCBldmVuCgkgIHdoZW4gdGhleSBhcmVuJ3QgcGh5c2ljYWxseSBwcmVzZW50LCBjYW4ndCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQpCgktIFBvbGlzaCB0cmFuc2xhdGlvbiBoYWQgc29tZSB3ZWlyZCBjaGFyYWN0ZXJzIGFkZGVkIGJlZm9yZSBQb2xpc2gKCSAgbGV0dGVycwoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglEZWxlZ2F0ZXMgbWVzc2FnZXMgZGlyZWN0bHkgdG8gdGhlIGVkaXQgY29udHJvbCB3aW5kb3cgcHJvYyBpbnN0ZWFkIG9mCgljb250YWluaW5nIGFuIGVkaXQgY29udHJvbC4gRml4ZXMgcHJvYmxlbXMgd2l0aCBzdWJjbGFzc2luZyB0aGUKCXJpY2hlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQWRkIE5NX1JDTElDSyBub3RpZmljYXRpb24gc3VwcG9ydCBmb3IgdG9vbGJhcnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBGaXggcGFsZXR0ZSBjcmVhdGlvbi4KCS0gRml4IHVwc2lkZSBkb3duIEdpZi4KCS0gQWRkIHN1cHBvcnQgZm9yIHRyYW5zcGFyZW50IEdpZi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzoKCUF2b2lkIGtpbGxpbmcgdGhyZWFkcyB3aXRoIFRlcm1pbmF0ZVRocmVhZCwgdGhpcyBjYW4gY2F1c2UgZGVhZGxvY2tzLgoKCSogaW5jbHVkZS9heGNvcmUuaWRsLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9zdHJtaWYuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglFeHBsaWNpdGx5IHNwZWNpZnkgYWxpZ25tZW50IG9mIDY0LWJpdCB0eXBlcy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYzoKCVVwZGF0ZWQgdGhlIGF1dG8tZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIEFzc3VtZSA4IGJ5dGUgbWF4aW11bSBhbGlnbm1lbnQuCgktIFN5bmMgdHlwZSB0ZXN0aW5nIGRhdGEgd2l0aCB0aGUgaGVhZGVycy4KCjIwMDQtMDUtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCU1ha2UgR2V0Vm9sdW1lSW5mb3JtYXRpb24gZGVmYXVsdCB0byByZXBvcnRpbmcgTlRGUyBmb3Igbm9uLUZBVAoJZmlsZXN5c3RlbXMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IE9GX0NSRUFURSBzaG91bGQgZm9yY2Ugd3JpdGUgYWNjZXNzIGluIE9wZW5GaWxlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1RoLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYywgZGxscy9jb21tZGxnL2NkbGdfWmgucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJTWFrZSB0aGUgZmlsZSB0eXBlIGNvbWJvYm94IG5vbi1lZGl0YWJsZS4KCgkqIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9tYXBpdXRpbC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCB0aGUgSU1BUElQcm9wL0lQcm9wRGF0YSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luZS90ZXN0Lmg6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCURpc2FibGUgYnVmZmVyaW5nIG9mIHRlc3Qgb3V0cHV0IHRvIGtlZXAgbW9yZSBpbmZvcm1hdGlvbiBpbiBjYXNlIG9mIGEKCWNyYXNoLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL3Byb3AuYywKCSAgZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhbmQgdGVzdCBTY0NvcHlQcm9wcy9TY1JlbG9jUHJvcHMuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdHJpcCBsZWFkaW5nIHdoaXRlc3BhY2Ugd2hlbiBhZGRpbmcgYSBuZXcgdmFsdWUgYW5kIG5vdCBqdXN0IHdoZW4KCXJlcGxhY2luZyBhIGN1cnJlbnQgdmFsdWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgdGVzdHMgZm9yIG1zYWNtMzIuZGxsLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglCZXR0ZXIgZnVuY3Rpb24gcGFyYW1ldGVyIGNoZWNraW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCVdvbGZnYW5nIFNjaHdvdHplciA8d29sZmdhbmcuc2Nod290emVyQGdteC5uZXQ+CglNYWtlIGZpbGUgZGlhbG9nIHN1cHBvcnQgRk5FUlJfQlVGRkVSVE9TTUFMTCBpZiBidWZmZXIgdG9vIHNtYWxsLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVzZSBXSU5FREVCVUcgaW5zdGVhZCBvZiAtLWRlYnVnbXNnLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglQcmV2ZW50IGZyb20gY3Jhc2hpbmcvaGFuZ2luZyBpbiBXaW5kb3dzIDk1IE9TUjIuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91cmxtb24vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLAoJICBkbGxzL3VybG1vbi91bW9uLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUhhbmRsZSBjb250ZXh0IGluIENyZWF0ZVVSTE1vbmlrZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHRoZSBzaXplIG9mIHRoZSBsaXN0dmlldyBpdGVtcyBpbiB0aGUgY3VzdG9taXplIGRpYWxvZy4KCgkqIGRsbHMvY2ZnbWdyMzIvY2ZnbWdyMzIuc3BlYzogTWF0dGhldyBEYXZpc29uIDxtamQ3N0BjYW0uYWMudWs+CglVcGRhdGVkIHRvIGluY2x1ZGUgZnVuY3Rpb25zIGZyb20gd2luZG93cyA5OFNFLgoKMjAwNC0wNS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRml4ZXMgZm9yIHJlbmRlcmluZyB0YXJnZXRzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQWx3YXlzIHJlc2V0IEFVVE9fUkVTSVpFIGZsYWcgb24gZXhpdCBmcm9tIFJFQkFSX0ZvcmNlUmVzaXplLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJSW5jbHVkZSA8c3RkbGliLmg+IHRvIG9idGFpbiBhIHByb3RvdHlwZSBvZiBhYnMoKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBtZW1jcHkgaW5zdGVhZCBvZiB3ZWlyZCBjYXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggVEJfR0VUU1RZTEUgbWVzc2FnZSB0byByZXR1cm4gdGhlIHN0eWxlIG9mIHRoZSB0b29sYmFyIGFuZCBub3QgdGhlCglzdHlsZSBvZiBhIGJ1dHRvbi4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIENvUmVsZWFzZU1hcnNoYWxEYXRhLgoKCSogZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggYSBzdHJpbmcgYWxsb2NhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFRWU19OT1NDUk9MTC4KCjIwMDQtMDUtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9maWxlMTYuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9rZXJuZWwvdnhkLmMsCgkgIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3NtYi5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgbWlzYy9yZWdpc3RyeS5jOgoJTW92ZWQgbW9zdCByZW1haW5pbmcgZmlsZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCglSZW1vdmVkIGZpbGVzL2ZpbGUuYyBhbmQgaW5jbHVkZS9maWxlLmguCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCUZpeGVkIGxhc3QgZXJyb3IgY29kZSBjaGVjayBpbiBHZXRWb2x1bWVJbmZvcm1hdGlvblcsIG9wZW5pbmcgYQoJbm9uLWV4aXN0ZW50IGRldmljZSByZXR1cm5zIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIG5vdy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NpZ25hbC5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCVVzZSBwcmVhZC9wd3JpdGUgZXZlcnl3aGVyZSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgZmlsZSBwb3NpdGlvbiB3aGlsZQoJdGhlIGNsaWVudCBpcyB1c2luZyBpdC4KCUdldCByaWQgb2YgdGhlIG5vIGxvbmdlciB1c2VkIHRydW5jYXRlX2ZpbGUgcmVxdWVzdC4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCVJlaW1wbGVtZW50ZWQgR2V0RmlsZVR5cGUgYW5kIFNldEVuZE9mRmlsZSB1c2luZyBudGRsbCBmdW5jdGlvbnMuCgoJKiBsaWJzL01ha2VmaWxlLmluOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglTdXBwb3J0IERhcndpbiB2ZXJzaW9uaW5nIGNvbnZlbnRpb24uCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIGNoYW5nZWQgQ2FuY2VsIERFRlBVU0hCVVRUT04gdG8gUFVTSEJVVFRPTgoJLSBmaXhlZCBjYXB0aW9uIElERF9FRElUX0RXT1JEIGZyb20gIkVkaXQgU3RyaW5nIiB0byAiRWRpdCBEV09SRCIKCS0gYWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvdXRpbC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL3hjbWMuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglTdHViIGNtY19xdWVyeV9jb25maWd1cmF0aW9uKCkgYW5kIGFkZCB4Y21jLmggaGVhZGVyIGZpbGUuCgoyMDA0LTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUFkZGVkIGEgZmV3IG1vcmUgaW5mbyBjbGFzc2VzIGluIE50UXVlcnlJbmZvcm1hdGlvbkZpbGUuCglVc2UgTlQgZmlsZSBuYW1lcyBpbiBDcmVhdGVOYW1lZFBpcGVXLgoJUmVpbXBsZW1lbnRlZCBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSwgR2V0RmlsZVNpemUgYW5kIEdldEZpbGVUaW1lCgl1c2luZyBudGRsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJTW92ZWQgc3VwcG9ydCBmb3Igb3BlbmluZyBuYW1lZCBwaXBlcyB0byBudGRsbC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJQXZvaWQgYXV0b2RldGVjdGluZyB0aGUgcHJlZml4IHdoZW4gbG9hZGluZyB0aGUgY29uZmlnIGZpbGUgc2luY2UgdGhlCglmaXJzdCBrZXkgbWF5IGJlIG5hbWVkICd3aW5lJy4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgVmFyRGF0ZUZyb21VZGF0ZUV4LgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBsdmFsdWUgY2FzdHMuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHN0dWIgZm9yIFN0Z0NyZWF0ZVN0b3JhZ2VFeCgpLiBSZXR1cm5zCglTVEdfRV9VTklNUExFTUVOVEVERlVOQ1RJT04gYXMgcGVyIE1TRE4uIEZpeGVzIGFuIGVycm9yIHNhdmluZyBmaWxlcwoJaW4gV29yZCBYUC4KCgkqIGRsbHMva2VybmVsL3BhdGguYzoKCVVzZSBSdGxEb3NQYXRoTmFtZVRvTnRQYXRoTmFtZV9VIHRvIGJ1aWxkIHRoZSByZWdpc3RyeSBlbnRyaWVzIGZvcgoJTU9WRUZJTEVfREVMQVlfVU5USUxfUkVCT09ULgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RiZ2hlbHAvc3RhY2suYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIHNvbWUgYnVncyBpbiBTdGFja1dhbGsgKGNsYWltZWQgZm9yIGJ1dCBmb3Jnb3R0ZW4gaW4gbGFzdAoJICBwYXRjaCkKCS0gcmVtb3ZlZCBsb2NhdGlvbiBmaWVsZCBpbiBzeW10X2RhdGEsIGFuZCByZXdvcmtlZCB0aGUgYWN0dWFsCgkgIGxvY2F0aW9uIG9mIGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSAna2luZCcgZmllbGQKCS0gc2hvcnRlbiBkZWJ1ZyBjaGFubmVsIG5hbWUKCS0gYWRkZWQgc3VwcG9ydCBmb3IgYml0ZmllbGQgaW4gc3RydWN0OnMKCS0gY2xlYW5lZCB1cCBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiBzdXBwb3J0CgktIG5vdyBzdG9yaW5nIGNvbnN0YW50cyB2YWx1ZXMgYXMgVkFSSUFOVAoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSB3UGFyYW0gdmFsdWVzIGZvciBXTV9QQVJFTlROT1RJRlkgbWVzc2FnZSBieSBhcHByb3ByaWF0ZQoJc3ltYm9saWMgbmFtZXMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVlvdSBoYXZlIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGRldmljZSBiZWZvcmUgeW91IGNhbiBoYXZlIGEgZGVmYXVsdAoJZGV2aWNlLgoKCSogZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEZpeCB0aGUgcmV0dXJuIGtleSBoYW5kbGluZyBhbmQgY2xlYW4gdXAgdGhlIGNvZGUuCgktIEFkZCBzdXBwb3J0IGZvciBxdWlja0NvbXBsZXRlIHdpdGggQ3RybCtSZXR1cm4uCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGUgcXVlcnlpbmcgb2YgSUlEX0ZpbHRlckdyYXBoIGludGVyZmFjZSBmcm9tIGZpbHRlcmdyYXBoIG1hbmFnZXIKCShzcG90dGVkIGJ5IFJvYmVydCBSZWlmKS4KCjIwMDQtMDQtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUFkZGVkIGF1dG8tZGV0ZWN0aW9uIG9mIERPUyBkcml2ZSBkZXZpY2VzIGJhc2VkIG9uIGZpbmRpbmcgdGhlCgljb3JyZXNwb25kaW5nIG1vdW50IHBvaW50IGluIC9ldGMvbXRhYiBvciAvZXRjL2ZzdGFiLgoKCSogZGxscy9rZXJuZWwvaGVhcC5jOgoJQ3JlYXRlIHRoZSBzeXN0ZW0gaGVhcCBldmVudCBiZWZvcmUgdGhlIHNoYXJlZCBtYXBwaW5nIHRvIGF2b2lkIGEgcmFjZQoJY29uZGl0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBTSEZpbmRGaWxlcy4KCgkqIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJTWFrZSBzdXJlIGFzY2VudC9kZXNjZW50IHZhbHVlcyBkb24ndCBiZWNvbWUgbmVnYXRpdmUgYWZ0ZXIgY29vcmRpbmF0ZQoJbWFwcGluZy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGNyZWF0aW9uIG9mIGEgbWF4aW1pemVkIGNoaWxkIHdpbmRvdy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcHN0b3JlLmgsIGluY2x1ZGUvcHN0b3JlLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHBzdG9yZS5oIGFuZCBhbiBJREwgZmlsZSB0byBnZW5lcmF0ZSBpdC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLAoJICBtaXNjL3JlZ2lzdHJ5LmM6CglVc2Ugc3ltbGlua3MgaW4gZG9zZGV2aWNlcy8gZm9yIHRoZSBkcml2ZSBkZXZpY2VzIHRvby4KCVN0b3JlIGRyaXZlIHR5cGVzIGluIHRoZSByZWdpc3RyeSBpbnN0ZWFkIG9mIGluIHRoZSBjb25maWcgZmlsZS4KCUFkZGVkIHNvbWUgbW9yZSBjb2RlIHRvIGNvbnZlcnQgZXhpc3RpbmcgY29uZmlnIHRvIHRoZSBuZXcgc2NoZW1lLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRm9yZ290IHRvIGxpbWl0IGNhcHR1cmUgc2FtcGxlIHJhdGVzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvdXRpbHMuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBGaXggY29tcGlsYXRpb24gYWdhaW4gdXNpbmcgb2xkZXJzIEdMIGhlYWRlcnMKCSAgKGdsQ29tcHJlc3NlZFRleEltYWdlMkRBUkIgcHJvYmxlbSkuCgktIEZpeCB0eXBvIG9uIGNvbnN0YW50LgoJLSBEZXRlY3Rpb24gb2YgTlZpZGlhIHRleHR1cmVfc2hhZGVyIGFuZCByZWdpc3Rlcl9jb21iaW5lcnMKCSAgZXh0ZW5zaW9ucy4KCS0gQmVnaW4gdG8gaW1wbGVtZW50IEJVTVBNQVBQSU5HIHVzaW5nIE5WaWRpYSBUZXh0dXJlIHNoYWRlciBleHRlbnNpb24KCSAgKG5vdCByZWFsbHkgd29ya2luZyBmb3Igbm93KS4KCjIwMDQtMDQtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvdGltZS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglSZW1vdmVkIGEgbnVtYmVyIG9mIGludGVybmFsIGZpbGUgZnVuY3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdlciB1c2VkLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJQWRkZWQgdGVzdCBmb3Igc2V0dGluZyBmb2N1cyB0byBhbiBpbnZpc2libGUgd2luZG93LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXhlZCB0ZXN0cyB0byBzdWNjZWVkIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBbm90aGVyIGVycm9yIHJldHVybiB2YWx1ZSBjaGVjayBhZGRlZCBhZnRlciBsb29raW5nIGF0IHRoZSB3aW5kb3dzCgl0ZXN0cyByZXN1bHRzLgoJUmVwbGFjZWQgLTEgd2l0aCBXQVZFX01BUFBFUi4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZWltcGxlbWVudCBVdWlkQ3JlYXRlKCkgd2l0aCBXaW4zMiBBUElzLgoKCSogZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCVJlaW1wbGVtZW50ZWQgR2V0L1NldEN1cnJlbnREaXJlY3RvcnlXIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIG50ZGxsCglmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUZpeGVkIHVuc2lnbmVkIGNvbXBhcmlzb24gaXNzdWUgaW4gcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBpbmNsdWRlL21zaS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCBzb21lIHByb3RvdHlwZXMvdHlwZWRlZnMgdG8gbXNpLmgKCS0gaW1wbGVtZW50cyBzb21lIEEgLT4gVyBjYWxscyAoVyBjYWxscyBtdXN0IGJlIGltcGxlbWVudGVkKQoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvbWFwaTMyL3Byb3AuYywKCSAgZGxscy9tYXBpMzIvdXRpbC5jLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgaW5jbHVkZS9tYXBpdGFncy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUV4cGxhaW4gaG93IHRvIHJlZHVjZSBsb2cgc2l6ZSwgdXNpbmcgcGlwZXMuCgoyMDA0LTA0LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVJlcGxhY2UgZW1wdHkgd2luZG93IHJlY3QgY2hlY2tzIGJ5IGEgbmV3IFgxMURSVl9pc193aW5kb3dfcmVjdF9tYXBwZWQKCWZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoYXQgc3VwcG9ydCBmb3Igb2ZmLXNjcmVlbiB3aW5kb3dzLgoKCSogZG9jdW1lbnRhdGlvbi9vbGUuc2dtbDogV2lsbGlhbSBMYWh0aSA8Y29tcHV0ZXJtYW40MTNAZXpycy5jb20+CglGaXhlZCB0eXBvLgoKCSogZGxscy9tcHIvcHdjYWNoZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBXTmV0RW51bUNhY2hlZFBhc3N3b3Jkcy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IGZhaWx1cmVzIHVuZGVyIHdpbjJrLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlIFZhclhvcixWYXJBYnMsVmFyTm90IGZvciBhbGwgaW5wdXQgdHlwZXMuCglUZXN0IFZhck9yOyBmaXggYSBmYWlsdXJlIHdpdGggbGF0ZXIgb2xlYXV0MzIgdmVyc2lvbnMuCglTcGVlZCB1cCBjb21waWxhdGlvbiBieSBzaGFyaW5nIGZhaWx1cmUgc3RyaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFZhck9yLgoJRml4ZXMgZm9yIHVudGVzdGVkIFZhclhvcixWYXJBYnMsVmFyTm90IGlucHV0IHR5cGVzLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJlZm9yZSByZW1vdmluZyBtZW51IGl0ZW1zIGluIHRoZSBNREkgV2luZG93IG1lbnUgY2hlY2sgd2hldGhlciBhIG1lbnUKCWl0ZW0gZm9sbG93aW5nIGEgc2VwYXJhdG9yIGhhcyBvdXIgIm1hZ2ljIiB2YWx1ZS4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWxsb3cgVXJsQ29tYmluZSB0byBjYWxjdWxhdGUgc2l6ZSBvZiByZXF1aXJlZCBidWZmZXIuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlc3RvcmUgdGhlIDIgTUh6IHNhbXBsZSByYXRlIHRlc3QgYW5kIGZpeCB0aGUgd2luZWFsc2EgZHJpdmVyIGZvcgoJcmVhc29uYWJsZSBsaW1pdHMuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCURlZmluZURvc0RldmljZVc6IGltcGxlbWVudGVkIHRoZSBERERfUkVNT1ZFX0RFRklOSVRJT04gZmxhZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCVJlbW92ZWQgdG9kb193aW5lIGZyb20gc29tZSB0ZXN0cyB0aGF0IHN1Y2NlZWQgbm93LgoKCSogZGxscy9rZXJuZWwvcGF0aC5jLCBmaWxlcy9kaXJlY3RvcnkuYywgc2VydmVyL2ZkLmM6CglSZWltcGxlbWVudGVkIENyZWF0ZURpcmVjdG9yeVcgYW5kIFJlbW92ZURpcmVjdG9yeVcgdXNpbmcgbnRkbGwKCWZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglQYXNzIHRoZSBjcmVhdGlvbiBkaXNwb3NpdGlvbiB0byB3aW5lX250X3RvX3VuaXhfZmlsZV9uYW1lIHNvIHRoYXQgaXQKCWNhbiByZXR1cm4gdGhlIGNvcnJlY3QgZXJyb3IgY29kZSBpbiBhbGwgY2FzZXMuCglDaGFuZ2VkIE1vdmVGaWxlRXhXIHRvIHVzZSB3aW5lX250X3RvX3VuaXhfZmlsZV9uYW1lIHRvIGF2b2lkCgljb21wdXRpbmcgdGhlIE5UIG5hbWUgdHdpY2UuCglGaXhlZCBjcmFzaCBpbiBHZXREcml2ZVR5cGVXIHdpdGggYSBOVUxMIHJvb3QuCgoyMDA0LTA0LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfVWsucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVWsucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfVWsucmM6CglJbHlhIEtvcm5peWtvIDxrX2lseWFAdWtyLm5ldD4KCUFkZGVkIFVrcmFpbmlhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgZmFzdCByZW5kZXJpbmcgdG8gYSB0ZXh0dXJlIHVzaW5nIGdsQ29weVRleEltYWdlMkQKCUZpeGVkIFNldFZpZXdwb3J0LgoJRml4ZWQgU2V0UmVuZGVyVGFyZ2V0IChiYXNlZCBvbiBKYXNvbiBFZG1lYWRlcycgd29yaykuCglJbXByb3ZlZCB0cmFjZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmgsCgkgIGRsbHMvcnBjcnQ0L3JwY19kZWZzLmgsIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmgsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCU1ha2UgUlBDUlQ0IHVzZSBXaW5kb3dzIGNvbXBhdGlibGUgcHJvdG9jb2wgKERDRSB2NS4wKSBmb3IKCWNvbW11bmljYXRpb24uCgoJKiBpbmNsdWRlL3RjaGFyLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWZpbmUgX1RbVVNYXT9DSEFSL19USU5UL1RDSEFSIHR5cGVzLCBmb3IgY29tcGF0aWJpbGl0eS4KCURvIG5vdCBkZXBlbmQgb24gb3RoZXIgZmlsZXMgYmVpbmcgaW5jbHVkZWQgZmlyc3QuCglIYXZlIHRoZSBzYW1lIGluY2x1ZGUgZ3JhcGggYXMgdGhlIE1TIGhlYWRlcnMuCglQcm90ZWN0IGFnYWluc3QgdHJ5aW5nIHRvIHVzZSBsaWJjIHdoZW4gbm90IHBvc3NpYmxlLgoJQ2xlYW51cHMuCgoJKiBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9zdGRpby5oLAoJICBpbmNsdWRlL21zdmNydC93Y2hhci5oLCBpbmNsdWRlL21zdmNydC93Y3R5cGUuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhlIF9XQ1RZUEVfVF9ERUZJTkVEIHNlbnRyeSBmb3IgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhlICdhbHNhIGhhbmRsZScgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTCBiZWZvcmUgY2FsbGluZwoJc25kX3BjbV9vcGVuKCkuIE90aGVyd2lzZSBpZiBpdCBmYWlscyB3ZSBnZXQgYSBjcmFzaCB0cnlpbmcgdG8gY2xvc2UKCWFuIGludmFsaWQgYWxzYSBoYW5kbGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgdGVzdGluZyBvZiBQZWVrTmFtZWRQaXBlLCBtdWx0aXBsZSB3cml0ZXMsIGFuZCBtZXNzYWdlIG1vZGUuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXdhdmVPdXRHZXREZXZDYXBzKC0xLi4uKSBtdXN0IHJldHVybiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBXYXZlCgltYXBwZXIuCglEUlZfUVVFUllERVZJQ0VJTlRFUkZBQ0UgaXMgbm90IHN1cHBvcnRlZCBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4KCUNoZWNrIHRoZSBsZW5ndGggcmV0dXJuZWQgYnkgRFJWX1FVRVJZREVWSUNFSU5URVJGQUNFU0laRSBhbmQgZml4CgltZW1vcnkgbGVhay4KCVNvbWUgV2luZG93cyBzb3VuZCBkcml2ZXJzIGFsbG93IHdpbGQgZnJlcXVlbmNpZXMgc3VjaCBhcyB0aGUgMk1IegoJb25lLiBTbyBtb2RpZnkgdGhpcyB0ZXN0IHRvIHVzZSBhbiBpbnZhbGlkIG51bWJlciBvZiBiaXRzIHBlciBzYW1wbGUKCWluc3RlYWQgKGhvcGVmdWxseSB0aGF0IHdpbGwgZmFpbCByZWFsbHkgZXZlcnl3aGVyZSkuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJTWFrZSB3aWRsIHBhcnNlIHRoZSAndHJhbnNtaXRfYXMnIGFuZCAnZW5kcG9pbnQnIGtleXdvcmRzLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgaW5jbHVkZS9kZGVtbC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgRERFIFBGTkNBTExCQUNLIHByb3RvdHlwZS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMgaW4gZGxscy9kM2Q4LgoJSW5jb3Jwb3JhdGVkIGJ1Z2ZpeCBmcm9tIENocmlzdGlhbiBDb3N0YSBpbiB2c2hhZGVyX2V4cHAuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJUmVwbGFjZSAtLWRlYnVnbXNnIGJ5IFdJTkVERUJVRy4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3V0aWxzLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW1wbGVtZW50IFNldFJlbmRlclN0YXRlIEQzRFJTX0ZPR0VOQUJMRS9EM0RSU19SQU5HRUZPR0VOQUJMRQoJLSBpbXBsZW1lbnQgU2V0UmVuZGVyU3RhdGUgRDNEUlNfUkFOR0VGT0dFTkFCTEUKCS0gZml4IFNldFJlbmRlclN0YXRlIEQzRFJTX0ZPR1ZFUlRFWE1PREUgQ2Fwcy9EZXRlY3Rpb24gdHJhY2VzCgktIGZpeCBJRGlyZWN0M0Q4OjpHZXRBZGFwdGVySWRlbnRpZmllciB0byB1c2UgRmlsbEdMQ2FwcyBhbmQgcHJvdmlkZQoJICBtb3JlIGV4YWN0IGluZm9zIChkcml2ZXIgdmVyc2lvbnMsIHZlbmRvciwgLi4uKQoJLSBzcGxpdCBGYWtlIEdMIENvbnRleHQgY3JlYXRpb24gZnJvbSBHZXREZXZpY2VDYXBzIGZvciBleHRlcm5hbCB1c2UKCS0gYWRkIGEgbmV3IGNoYW5uZWwgKGQzZF9jYXBzKSBmb3IgYWxsIElEaXJlY3QzRDggQ2Fwcy9kZXRlY3Rpb24gdHJhY2VzCgktIHJlbmFtZSBmcHMgY2hhbm5lbCB0byBkM2RfZnBzCgktIGhpZ2ggdXNlIG9mIHJ1bnRpbWUgZGV0ZWN0ZWQgT3BlbkdMIENhcHMgaW5zdGVhZCBvZiBkZWZpbmVzCgktIHVwZGF0ZSBzdXBwb3J0ZWQgQ2FwcyB1c2luZyBydW50aW1lIGRldGVjdGlvbgoKCSogZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRlZCB0aGUgQUNPX0FVVE9TVUdHRVNULCBBQ09fQVVUT0FQUEVORCwgQUNPX1VQRE9XTktFWURST1BTTElTVAoJc3R5bGVzLgoKCSogZGxscy94MTFkcnYvYml0Ymx0LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUlmIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lIG9iamVjdCwgZG9uJ3QgbG9jayB0aGUgb2JqZWN0Cgl0d2ljZSBhcyBpdCB3aWxsIG9ubHkgYmUgdW5sb2NrZWQgb25jZS4KCgkqIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBwb3NpdGlvbiBvZiB0bXAuZiBhc3NpZ25lZCBsaWtlIGluIGRsbHMvZDNkOC9zaGFkZXIuYy4KCUZpeGVkIHN0cmljdCBhbGlhc2luZyBwcm9ibGVtLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUltcGxlbWVudCBET1M3IGNhbm9uaWNhbGl6ZSBwYXRoIGZ1bmN0aW9uIGFzIGEgY29udmVyc2lvbiB0byBzaG9ydAoJZmlsZSBuYW1lLgoKCSogd2luZG93cy9tZGkuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCB0cmFjaW5nIG1lc3NhZ2VzIHRvIE1ESS4KCgkqIGRsbHMvd2lubW0vd2luZWphY2svamFjay5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgd2FybmluZyBpbiBKQUNLX2RydkxvYWQoKS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG9ubHkgc3VwcG9ydCA4IGFuZCAxNiBiaXQgc291bmQgc28gd2Ugc2hvdWxkIHJlamVjdCB0aGUgb3RoZXIKCWZvcm1hdHMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSWYgbHBzdHJUaXRsZSBpcyBOVUxMLCBzZXQgaXQgdG8gZWl0aGVyICdPcGVuIEZpbGUnIG9yICdTYXZlIGFzJy4KCUNvbnN0aWZ5IHRoZSBzdHJpbmcgY29uc3RhbnRzLgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDYWxsIGFwcHJvcHJpYXRlIERlZldpbmRvd1Byb2MgaW4gRERFIGNsaWVudC9zZXJ2ZXIgd2luZG93IHByb2NzCglkZXBlbmRpbmcgb24gd2hldGhlciBhIHdpbmRvdyBwcm9jIGlzIHVuaWNvZGUgb3IgQU5TSS4KCjIwMDQtMDQtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYywgZmlsZXMvZHJpdmUuYzoKCVJlaW1wbGVtZW50ZWQgR2V0TG9naWNhbERyaXZlcywgR2V0TG9naWNhbERyaXZlU3RyaW5ncyBhbmQKCUdldERyaXZlVHlwZSB1c2luZyB0aGUgbmV3IHN5bWxpbmsgbWVjaGFuaXNtLgoJTWFkZSBHZXREcml2ZVR5cGUgYXR0ZW1wdCB0byBhdXRvZGV0ZWN0IHRoZSB0eXBlIGlmIG5vdCBzcGVjaWZpZWQgaW4KCXRoZSByZWdpc3RyeS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJUmVtb3ZlIHRoZSB3aW5lbG9hZGVyIHZhcmlhYmxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbWFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL3V0aWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0cyBmb3IgbmV3bHkgYWRkZWQgTUFQSSBmdW5jdGlvbnMuCgoJKiBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsCgkgIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsIGRsbHMvbWFwaTMyL3Byb3AuYywgZGxscy9tYXBpMzIvdXRpbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBNQVBJIHByb3BlcnR5ICYgdXRpbGl0eSBmdW5jdGlvbnMuCgoJKiBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21hcGljb2RlLmgsCgkgIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9tYXBpZ3VpZC5oLCBpbmNsdWRlL21hcGl0YWdzLmgsCgkgIGluY2x1ZGUvbWFwaXV0aWwuaCwgaW5jbHVkZS9tYXBpdmFsLmgsIGluY2x1ZGUvbWFwaXguaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUvQWRkIE1BUEkgaGVhZGVycy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBmaWxlcy9kcml2ZS5jLAoJICBtaXNjL3JlZ2lzdHJ5LmM6CglNb3ZlZCBjcmVhdGlvbiBvZiB0aGUgQ0RST00gcmVnaXN0cnkga2V5cyBpbnRvIHRoZSByZWdpc3RyeSBsb2FkaW5nCgljb2RlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL2RkZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGJ1ZyBpbiBTaGVsbEV4ZWN1dGUgd2hpY2ggY2FsbGVkIERkZUNyZWF0ZVN0cmluZ0hhbmRsZVcgd2l0aCBhCgl3cm9uZyBwYXJhbWV0ZXIuIFJldmVydCBwcmV2aW91cyBlcnJvbmVvdXMgZml4LgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdCBDbGVhckN1c3REYXRhKCkgYW5kIFVJTlQtPkk0IGNvbnZlcnNpb24uCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQ2xlYXJDdXN0RGF0YS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ2hlY2sgdGhlIGNvcnJlY3QgcGFyYW0gZm9yIDIgREVDSU1BTCBvcGVyYXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb252ZXJzaW9uIGZyb20gVlRfVUlOVCB0byBWVF9JNCBpZ25vcmVzIG92ZXJmbG93LgoKCSogdG9vbHMvYzJtYW4ucGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBY2NlcHQgZXhwb3J0cyB3aXRoICdAJyBpbiB0aGVpciBuYW1lLgoJTGluayB0byB3aW5laHEgc291cmNlIGZvciBpbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBIVyBWZXJ0ZXggU2hhZGVycyB3aGVuIGNvZGUgaXMgTlVMTCAoaWUgdXNlCglkZWZhdWx0IHJlbmRlcmluZyBjb2RlIHVzaW5nIFZlcnRleFNoYWRlckRlY2xhcmF0aW9uIGZvciBkYXRhcykgYXMgR0wKCWRyaXZlcnMgZG9uJ3QgbGlrZSBlbXB0eSBwcm9ncmFtcy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IHNvbWUgcmFuZG9tIGNyYXNoZXMgZm91bmQgb24gc29tZSBnYW1lcyBpbiB0aGUgbmV3IGNvZGUgKGxpdmUKCUdMWC9HTCBkcml2ZXJzKS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL3ZvbHVtZS5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBmaWxlcy9maWxlLmM6CglNb3ZlZCBzdXBwb3J0IGZvciBvcGVuaW5nIERPUyBkZXZpY2UgZmlsZXMgdG8gbnRkbGwuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVVuY29uZGl0aW9uYWxseSB0ZXN0IFdpbmUgcHJlc2VuY2UuCglBZGQgdGhlIEJ1aWxkIGluZm8gc2VjdGlvbiB0byB0aGUgb3V0cHV0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvcGF0aC5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6CglNYWtlIERJUl9udF90b191bml4IHJldHVybiBTVEFUVVNfTk9fU1VDSF9GSUxFIGluc3RlYWQgb2YKCVNUQVRVU19PQkpFQ1RfTkFNRV9OT1RfRk9VTkQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbGFzdCBjb21wb25lbnQKCWRpZG4ndCBleGlzdCB0byBhbGxvdyBkaXN0aW5ndWlzaGluZyBpdCBmcm9tIGxlZ2l0aW1hdGUgZXJyb3JzLgoJRXhwb3J0IGl0IGZyb20gbnRkbGwsIHJlbmFtZWQgdG8gd2luZV9udF90b191bml4X2ZpbGVfbmFtZS4KCgkqIGZpbGVzL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBhIHBhc3NlZCBTZWN1cml0eURlc2NyaXB0b3IgaW4gQ3JlYXRlRmlsZVcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVNraXAgb3ZlciBtb3N0IG9mIHRoZSB1bnVzZWQgdmFyaWFudCB0eXBlcyB0byBzcGVlZCB1cCB0aGUgdmFyaWFudAoJdGVzdHMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglVc2UgTnRPcGVuRmlsZSBpbnN0ZWFkIG9mIEZJTEVfQ3JlYXRlRmlsZSB0byBvcGVuIFVuaXggZmlsZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFkZGVkIFdpbmUgZGV0ZWN0aW9uLgoKMjAwNC0wNC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEZGVDbGllbnRUcmFuc2FjdGlvbiByZXR1cm5zIHplcm8gb24gZXJyb3IuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGUgdmVyc2lvbiBvZiBEZGVDcmVhdGVTdHJpbmdIYW5kbGUgc2hvdWxkIGlnbm9yZSBjb2RlcGFnZSBwYXJhbWV0ZXIuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG1vcmUgRklYTUUgLT4gVFJBQ0UKCS0gYmVnaW4gdmVuZG9yL2NhcmQgZGV0ZWN0aW9uICh2ZXJzaW9ucy9uYW1lcykKCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBjb21wYXRpYmlsaXR5IG1hY3Jvcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJV2hlbiB0aGUgV2luZG93cyBkaXJlY3Rvcnkgd2FzIHNvbWV0aGluZyBlbHNlIHRoYW4gQzpcV0lORE9XUwoJdGVzdF9HZXRUZW1wRmlsZU5hbWVBKCkgZmFpbGVkLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0Lmg6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIGNvbnN0aWZ5IHNvbWUgc3RyaW5ncwoJLSBpbnRyb2R1Y2UgLXUgb3B0aW9uIHRvIHdyaXRlIGFyY2hpdmUgdXJsIGludG8gdGhlIHJlcG9ydAoJLSBidW1wIG91dHB1dCBmb3JtYXQgdmVyc2lvbiB0byAzCgoJKiBmaWxlcy9maWxlLmM6IE1ha2UgQ3JlYXRlRmlsZVcgdXNlIE50Q3JlYXRlRmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2hoY3RybC5vY3gvLmN2c2lnbm9yZSwgZGxscy9oaGN0cmwub2N4L01ha2VmaWxlLmluLAoJICBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmMsIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwub2N4LnNwZWM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglBZGRlZCBkdW1teSBoaGN0cmwub2N4IHdpdGggc3R1YnMgb2YgSHRtbEhlbHBBIGFuZCBIdG1sSGVscFcuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJTWFrZSB3aWRsIGNvbXBpbGUgd2l0aG91dCBtb3N0IG9mIFdpbmRvd3MvV2luZSBoZWFkZXJzLCBzbyBpdCBjYW4gYmUKCXJldXNlZCBieSBvdGhlciBwcm9qZWN0cy4KCjIwMDQtMDQtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglQcmVsb2FkIGtleWJvYXJkLmRydiB3aGVuIFdpbmRvd3MgdmVyc2lvbiBpcyBXaW45eC4KCgkqIGRsbHMva2VybmVsL3BhdGguYywgZmlsZXMvZmlsZS5jOgoJQ2hhbmdlZCBNb3ZlRmlsZUV4IHRvIHVzZSBudGRsbCBmdW5jdGlvbnMsIGFuZCBtb3ZlZCBpdCB0bwoJZGxscy9rZXJuZWwvcGF0aC5jLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmM6CglQcm9wZXJseSBzZXQgSU9fU1RBVFVTX0JMT0NLLkluZm9ybWF0aW9uIGluIE50Q3JlYXRlRmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURlbGV0aW5nIGNvbHVtbiB6ZXJvIHNob3VsZCBvbmx5IGRlbGV0ZSB0aGUgY29sdW1uIGFuZCBub3QgdGhlIGl0ZW0KCWRhdGEuCgoJKiBkbGxzL25ldGFwaTMyL2FwaWJ1Zi5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FwaWJ1Zi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IE5ldEFwaUJ1ZmZlclJlYWxsb2NhdGUgYW5kIHRlc3RzIGJhc2VkIG9uIHJlc3VsdHMgZnJvbSB3aW5ldGVzdC4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUNvbnZlcnRlZCBzb21lIEZJWE1FcyBpbnRvIFRSQUNFcy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBuZXh0L3ByZXYgbW9udGggZG9uJ3Qgc3RpY2sgYW55bW9yZQoJLSBtaW4vbWF4IHJhbmdlcyBpbml0aWFsaXplZCB0byBzb21lIHJlYXNvbmFibGUgdmFsdWVzCgktIGZpeGVkIHNvbWUgYnVncyBjYXVzZWQgYnkgcmV2ZXJzZWQgb3JkZXIgb2YgYXJndW1lbnRzIG9mIE1PTlRIQ0FMX0NvcHlUaW1lCgktIHVwZGF0ZSBjdXJyZW50IG1vbnRoL3llYXIgYWZ0ZXIgc2V0dGluZyBjdXJyZW50IGRhdGUKCS0gY2hhbmdpbmcgbW9udGhzIGV0YyBkb2Vzbid0IHNlbmQgTUNOX1NFTEVDVCAod2hpY2ggY291bGQgYmUgc2VudAoJICBvbmx5IGFmdGVyIGEgcGFydGljdWxhciBkYXkgd2FzIGNsaWNrZWQpCgktIGNoYW5nZWQgKGhpdCAmJiBNQ0hUX0NBTEVOREFSREFURSkgdG8gKGhpdCA9PSBNQ0hUX0NBTEVOREFSREFURSkKCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBtYWtlIG1vbnRoY2FsIGEgY2hpbGQgb2YgZGF0ZXRpbWUgKGl0IHdhcyBhIHNpYmxpbmcgYmVmb3JlLCBjYXVzaW5nCgkgIGNvbXBsZXRlbHkgaW5jb3JyZWN0IG1lc3NhZ2UgZmxvdykKCS0gdXBkYXRlIG1vbnRoY2FsIGFmdGVyIGRhdGUgY2hhbmdlIGluIGRhdGV0aW1lCgktIGNob29zZSBkaWZmZXJlbnQgY29vcmRpbmF0ZXMgd2hlbiBEVFNfU0hPV05PTkUgaXMgbm90IHVzZWQKCS0gZW1iZWRkZWQgbW9udGhjYWwgaXMgbm93IDIwMCBwaXhlbHMgd2lkZQoJLSBzZWxlY3RpbmcgYSBkYXkgaW4gZW1iZWRkZWQgbW9udGhjYWwgdXBkYXRlcyB0aGUgZGF0ZXRpbWUgYW5kIGhpZGVzCgkgIHRoZSBtb250aGNhbAoJLSBjaGFuZ2luZyBtb250aHMveWVhcnMgYnkgY2xpY2tpbmcgbW9udGggbmFtZS95ZWFyIGluIHRpdGxlIGJhciB3b3JrcwoJLSBlbWJlZGRlZCBtb250aCBjYWxlbmRhciBpcyBjb3JyZWN0bHkgZGVzdHJveWVkIChpdCB1c2VkIHRvIHN0aWNrIG9uCgkgIHRoZSBzY3JlZW4gbG9uZyBhZnRlciB0aGUgZGF0ZXRpbWUncyBjb250YWluZXIgd2FzIGNsb3NlZCkKCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglGaXggYmFkIEVNRiBleHRlbnRzIGluIFNldFdpbk1ldGFGaWxlQml0cy4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglHZXRTeXN0ZW1JbmZvIHN1cHBvcnQgZm9yIERhcndpbi4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgdmFsdWVzIHRvIHRoZSBTWVNURU1fSU5GT1JNQVRJT05fQ0xBU1MgZW51bWVyYXRpb24uCgoyMDA0LTA0LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWw6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVJlcGxhY2UgLS1kZWJ1Z21zZyB3aXRoIFdJTkVERUJVRy4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0eXBvcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmg6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IHRoZSBkM2Rjb3JlX2dsIHBhcnQgb2YgSFcgdmVydGV4IHNoYWRlciBzdXBwb3J0IGZvciBicm9rZW5zIEdMCgloZWFkZXJzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJlaW1wbGVtZW50ZWQgR2V0RmlsZUF0dHJpYnV0ZXNFeFcgYW5kIEdldENvbXByZXNzZWRGaWxlU2l6ZVcgdXNpbmcKCXRoZSBjb3JyZXNwb25kaW5nIG50ZGxsIGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3RhY2suYywKCSAgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLAoJICBkbGxzL3NobHdhcGkvdXJsLmMsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBpbmNsdWRlL3dpbnNwb29sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoJUmVtb3ZlIHdzelJlZ1NlcGFyYXRvciBmcm9tIGRldmVudW1fcHJpdmF0ZS5oIHNpbmNlIGl0J3MgbmVpdGhlcgoJZXhwb3J0ZWQgYnkgY3JlYXRlZGV2ZW51bS5jIG5vciB1c2VkIGJ5IGFueW9uZSBlbHNlLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgbWVzc2FnZSB0ZXN0IGZvciBjdXN0b20gZGlhbG9nIGluaXRpYWxpemF0aW9uLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYzoKCVNhbnRvc2ggU2lkZGhlc2h3YXIgPHNhbnRvc2guc0Bzb25hdGEtc29mdHdhcmUuY29tPgoJQWxsb2NhdGUgRElBTE9HSU5GTyBzdHJ1Y3R1cmUgaW4gRGVmRGxnUHJvYyBpbnN0ZWFkIG9mIGluCglESUFMT0dfQ3JlYXRlSW5kaXJlY3QsIHNvIHRoYXQgaXQgZ2V0cyBjcmVhdGVkIGNvcnJlY3RseSBmb3Igbm9uCgl0ZW1wbGF0ZS1iYXNlZCBkaWFsb2dzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJUmVwbGFjZSAtLWRlYnVnbXNnIHdpdGggV0lORURFQlVHLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gQ2hhbmdlIHRvIGNvbnNvbGUgbW9kZSBzbyB0aGF0IHdpbmV0ZXN0IHJ1bnMgdW5kZXIgV2luUmFzaC4KCS0gTW92ZSBmcm9tIHNwYXdudnAoKSB0byBDcmVhdGVQcm9jZXNzKCkuCgktIEZvcmNlIGEgMi1taW51dGUgdGltZW91dCBvbiBpbmRpdmlkdWFsIHRlc3RzLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93c29jazMyL3Byb3RvY29sLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgVW5pY29kZSBzdHJpbmdzICdzdGF0aWMgY29uc3QnLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvZHhlcnI4L2R4ZXJyOC5jLCBkbGxzL2R4ZXJyOS9keGVycjkuYywgZGxscy9nZGkvZnJlZXR5cGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9zZXR1cGFwaS9kaXNrc3BhY2UuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIFVuaWNvZGUgc3RyaW5ncyBzdGF0aWMgY29uc3QuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVN0dWIgYW5kIGRvY3VtZW50YXRpb24gZm9yIFJ0bEZvcm1hdE1lc3NhZ2UuCgoJKiBkbGxzL250ZGxsL3BhdGguYzogTWlub3IgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgaW5jbHVkZS9maWxlLmg6CglSZWltcGxlbWVudGVkIEdldEZpbGVBdHRyaWJ1dGVzVywgU2V0RmlsZUF0dHJpYnV0ZXNXIGFuZCBTZXRGaWxlVGltZQoJdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbnRkbGwgZnVuY3Rpb25hbGl0eS4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLCBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsCgkgIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCB0b29scy93bWMvbWNsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugc3RhdGljIFVuaWNvZGUgc3RyaW5ncyBjb25zdC4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgcmVsYXRpdmUgYWRkcmVzc2luZy4KCUVuYWJsZSBodyB2ZXJ0ZXggc2hhZGVycyBieSBkZWZhdWx0LgoJTW92ZWQgcmVnaXN0cnkgZDNkIGNvbmZpZyBrZXkgdG8gU29mdHdhcmVcV2luZVxEaXJlY3QzRC4KCjIwMDQtMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgaW5jbHVkZS93aW5udC5oOgoJRml4ZWQvdXBkYXRlZCB0aGUgZmlsZSBhdHRyaWJ1dGVzIGRlZmluZXMuCgoJKiBNYWtlZmlsZS5pbjogY3Jvc3N0ZXN0IHRhcmdldCBuZWVkcyB0aGUgdG9vbHMgdG8gYmUgYnVpbHQgZmlyc3QuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSGFuZGxlICI/IDoiIGNvbmRpdGlvbmFscy4KCS0gQWxsb3cgW2hhbmRsZV0gYXR0cmlidXRlIGZvciB0eXBlcy4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWw6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVzZSBXSU5FREVCVUcgaW5zdGVhZCBvZiAtLWRlYnVnbXNnLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglTbWFsbCBmaXguCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgZGV0ZWN0aW9uIG9mIDQ4a0h6IGFuZCA5NmtIeiBzdXBwb3J0LiBGaXhlZCBhIHRoaW5rbywgYW5kIHNvbWUKCW1pc2xlYWRpbmcgaW5kZW50YXRpb24uCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCB0aGUgU2V0VGV4dHVyZVN0YWdlU3RhdGUgZm9yIEQzRFRBRERSRVNTX01JUlJPUiB1c2luZyBkeW5hbWljIEdMCgkgIGRldGVjdGlvbiAoYW5kIG5vdCBidWlsZCB0aW1lIEdMIGhlYWRlcnMpCgktIGFkZCBhIG5ldyBkZWJ1ZyBjaGFubmVsIGZvciBoYXJkd2FyZSB2ZXJ0ZXggc2hhZGVycwoJLSBoYXJkd2FyZSBWUyAiY29tcGlsZXIiIGZpeGVzOgoJICAtPiBzcGVjaWFsIGNhc2UgZm9yIGFkZHJlc3MgcmVnaXN0ZXJzIChNT1YgbXVzdCBiZSByZXBsYWNlZCBieSBBUkwpCgkgIC0+IGFkZCBsaW5lIG51bWJlcnMgdG8gdHJhY2UgKGJldHRlciB0byBmaW5kIHdoeSBOVmlkaWEgZHJpdmVycyBjb21wbGFpbnMpCgkgIC0+IG9uZSBwYXJzZSB0byBkZXRlcm1pbmUgdGVtcG9yYXJ5IGFuZCBhZGRyZXNzIHJlZ2lzdGVycyBuZWVkcwoJICAgIChAdG9kbzogY2hlY2sgR0wgbGltaXRzKQoJICAtPiByZW1vdmUgZHVwbGljYXRlIHRyYWNlcyBmcm9tIEdlbmVyaWMgUGFyc2VQcm9ncmFtCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfZXBtYXAuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBpbmNsdWRlL3JwY2RjZS5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IHNvbWUgUlBDIHByb3RvdHlwZXMgdG8gZ2V0IGl0IGNvbXBpbGluZyB3aXRoIFczMkFQSS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBDb3B5TWV0YUZpbGVBIHRvIHdvcmsgd2l0aCBOVUxMIGZpbGVuYW1lLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL2NyeXB0MzIvbWFpbi5jLCBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmMsCgkgIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsCgkgIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBVbmljb2RlIGNvbnN0IHN0cmluZ3Mgc3RhdGljIHNvIHRoZXkgYXJlIG5vdCBjb3BpZWQgdG8gdGhlIHN0YWNrCgllYWNoIHRpbWUgd2UgZW50ZXIgdGhlIGZ1bmN0aW9uLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2hsZGlzcC5oLAoJICBpbmNsdWRlL3NobGRpc3AuaWRsLCBpbmNsdWRlL3NobGd1aWQuaDoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQWRkIHRoZSBJQXV0b0NvbXBsZXRlIGFuZCBJQXV0b0NvbXBsZXRlMiBpbXBsZW1lbnRhdGlvbiAoYnV0IG1ldGhvZHMKCXN0dWJiZWQgZm9yIG5vdykuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvbGZnYW5nLnNjaHdvdHplckBnbXgubmV0PgoJU0hCcm93c2VGb3JGb2xkZXI6IHN1cHBvcnQgbHBCcm93c2VJbmZvLT5wc3pEaXNwbGF5TmFtZSBiZWluZyBOVUxMLgoKCSogZGxscy9udGRsbC9udC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4gaXNuJ3QgYSBzdHViIHNvIGNoYW5nZSB0aGUgRklYTUUgdG8gYSBUUkFDRS4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBETExNT0RFIGhhbmRsaW5nICgtLW1vZGUgaXMgbm93IC0tc3Vic3lzdGVtIGFuZCB1c2VzIC1XYikuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ29kZSBhbmQgY29uY2VwdHMgbWVyZ2VkIGluIGZyb20gd2luZW9zcyBpbiBvcmRlciB0byBnZXQgdGhlCglub24tZHNvdW5kIHdhdmUgb3V0cHV0IHBlcmZvcm1hbmNlIGluIHdpbmVhbHNhIHRvIGFuIGFjY2VwdGFibGUKCWxldmVsLiBJdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGRvIGJldHRlciB0aGFuIHRoZSBjdXJyZW50IGNvZGUsIGJ1dAoJdGhpcyBzaG91bGQgZG8gZm9yIG5vdy4KCgkqIGRsbHMvcnBjcnQ0L2Nwcm94eS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglGaXhlZCBudGRsbF93Y3N0b3VtYnMgYW5kIFdpZGVDaGFyVG9NdWx0aUJ5dGUgdG8gc2V0IHRoZSAndXNlZCcgZmxhZwoJZm9yIFVURi04IGNvZGVwYWdlIHRvby4gVGhpcyB3YXMgY2F1c2luZyBESVJfbnRfdG9fdW5peCB0byBmYWlsIGluCglzb21lIGNhc2VzICh0cmFja2VkIGRvd24gd2l0aCBoZWxwIGZyb20gQWxleCBQYXNhZHluKS4KCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9yZWdzdnIuYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgRGxsKFVuKVJlZ2lzdGVyU2VydmVyIGluIHVybG1vbiwgYmFzZWQKCW9uIHRoZSB3b3JrIG9mIEpvaG4gSy4gSG9obSBmb3Igb3RoZXIgZGxscy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCUNocmlzdG9waCBGcmljayA8ZnJpY2tAc2MtbmV0d29ya3MuZGU+CgktIGFkZGVkIGNvZGUgdG8gaGF2ZSB0aGUgam95c3RpY2sgc3RhdGUgYmUgc2V0IHRvIHRoZSBhc3N1bWVkIGNlbnRlcgoJICB2YWx1ZXMgb2YgdGhlIGpveXN0aWNrIG1hcHBlZCB0byB0aGUgcmFuZ2UgdGhlIGFwcGxpY2F0aW9uIHdhbnRzCgkgIHRoZW0KCS0gZ2VuZXJhdGUgZXZlbnRzIGFmdGVyIHNldHRpbmcgdGhlIGFwcm9waWF0ZSB2YWx1ZXMgaW4gVGhpcy0+anMKCS0gcmVwbGFjZWQgbWFnaWMgaW50cyB3aXRoIGRlZmluZXMgZnJvbSBsaW51eC9pbnB1dC5oCgktIHJlbW92ZWQgbWFwcGluZyBjb2RlIHRoYXQgZ2VuZXJhdGVkIHdyb25nIHZhbHVlcyBmb3IgYXhlcywgdGhhdCBoYXZlCgkgIHRoZSBjZW50ZXIgb24gdGhlIG1pbiBvciBtYXgKCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZXMgc3VwcG9ydCBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgZGlyZWN0IHNvdW5kLgoJQWRkcyBzdXBwb3J0IGZvciBkZWxldGluZyBub3RpZmljYXRpb24gYXJyYXkuCglNaW5vciBkZWJ1ZyBhbmQgd2hpdGUgc3BhY2UgY2xlYW51cHMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3N0YWJzLmMsIGRsbHMvZGJnaGVscC9zeW1ib2wuYywKCSAgZGxscy9kYmdoZWxwL3R5cGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBzdXBwb3J0IGZvciBmdW5jdGlvbiBkZWJ1ZyBzdGFydC9zdG9wIGFuZCBsYWJlbHMgKG1zYy5jCgkgIGFuZCBzdGFicy5jKQoJLSBzdGFydGVkIGltcGxlbWVudGluZyB0eXBlZGVmIHN1cHBvcnQKCS0gZnVuY3Rpb25zIG5vdyBoYXZlIGEgcmVhbCBmdW5jdGlvbiBzaWduYXR1cmUgKG9ubHkgaW4gc3RhYnMuYywgc3RpbGwKCSAgdG8gYmUgZG9uZSBpbiBtc2MuYykKCS0gc21hbGwgZW5oYW5jZW1lbnRzIHRvIFRJX0dFVF9UWVBFIGZvciBmdW5jdGlvbnMKCS0gYWRkZWQgc3VwcG9ydCBmb3IgZnVuY3Rpb25zJyBibG9jayBhbmQgbG9jYWwgdmFyaWFibGVzIGluIHJlZ2lzdGVycwoJICAobXNjLmMpCgktIGZpeGVkIHNvbWUgYnVncyBpbiBTdGFja1dhbGsKCS0gY29uc3RhbnRzIGFyZSBub3cgc3RvcmVkIGFzIHZhcmlhbnRzIChpbnN0ZWFkIG9mIHVuc2lnbmVkIGludHMpCgktIGZpeGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYW5hZ2VtZW50IChkYmdoZWxwJ3MgUkUgYXJlIG5vdCB0aGUgc2FtZQoJICBhcyBQT1NJWCBvbmVzKQoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIE9wdGltaXNlIGFjY2Vzc2luZyB0b29sYmFyIHN0eWxlIGJ5IHN0b3JpbmcgaXQgaW4gdGhlIFRPT0xCQVJfSU5GTwoJICBzdHJ1Y3R1cmUuCgktIFJlcGxhY2Uge0dldCxTZXR9V2luZG93TG9uZyBieSB7R2V0LFNldH1XaW5kb3dMb25nUHRyIHdoZXJlCgkgIGFwcHJvcHJpYXRlLgoKCSogZGxscy9keGRpYWduL01ha2VmaWxlLmluLCBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywKCSAgaW5jbHVkZS9keGRpYWcuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggZHhkaWFnLmggKGFnYWluKQoJLSBJRHhEaWFnQ29udGFpbmVySW1wbCBpbXBsZW1lbnRhdGlvbgoJLSBJRHhEaWFnUHJvdmlkZXI6OkdldFJvb3RDb250YWluZXIgKHRoYXQgY3JlYXRlcyB0aGUgcm9vdCBjb250YWluZXIpCgoJKiBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglQcmV2ZW50IGNyYXNoZXMgaW4gSV9ScGNTZW5kIG9uIFdpbmRvd3MgWFAuCgoyMDA0LTA0LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmMsIGZpbGVzL2RyaXZlLmM6CglSZWltcGxlbWVudGVkIEdldERpc2tGcmVlU3BhY2VXIGFuZCBHZXREaXNrRnJlZVNwYWNlRXhXIG9uIHRvcCBvZiB0aGUKCWNvcnJlc3BvbmRpbmcgbnRkbGwgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL2ZpbGUuYzoKCU1ha2UgRmluZEZpcnN0RmlsZUV4VyBhbmQgRmluZEZpcnN0Q2hhbmdlTm90aWZpY2F0aW9uVyB1c2UgTnRPcGVuRmlsZQoJZGlyZWN0bHkgc28gdGhhdCB0aGV5IGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGUgRklMRV9ESVJFQ1RPUllfRklMRQoJb3B0aW9uLgoKCSogbGlicy9NYWtlZmlsZS5pbjogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJQ3JlYXRlIHN5bWxpbmtzIGZvciAuZHlsaWIgbGlicmFyaWVzIHRvby4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRG9jdW1lbnRhdGlvbiBmb3IgU3lzdGVtRnVuY3Rpb24wNDAgYW5kIFN5c3RlbUZ1bmN0aW9uMDQxIGhhcyBiZWNvbWUKCWF2YWlsYWJsZSwgc28gc3R1YiB0aGVtIG91dCBpbiBjYXNlIGFwcGxpY2F0aW9ucyB1c2UgdGhlbS4KCgkqIGRsbHMvZGJnaGVscC9zdGFjay5jOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglGaXhlZCBhIGNvbXBpbGUgZXJyb3Igb24gbm9uLWkzODYuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBzdGFydCBhc3NpZ25pbmcgY3VzdG9tIFZLIGNvZGVzIGZyb20gVktfT0VNXzggc2luY2UgdGhpcyBjb2RlCgkgIGFscmVhZHkgcHJlc2VudHMgaW4gdGhlIGxheW91dCB0YWJsZXMKCS0gc2VhcmNoIHRoZSBsYXlvdXQgdGFibGVzIG9ubHkgaWYgWExvb2t1cFN0cmluZyByZXR1cm5lZCBub24gemVybwoJICBudW1iZXIgb2YgY2hhcmFjdGVycyBmb3IgYSBrZXlzeW0sIG90aGVyd2lzZSB0aGF0J3MgYSBub24gY2hhcmFjdGVyCgkgIGtleQoJLSBhdm9pZCBpbnNlcnRpbmcgVktfT0VNX3ggY29kZXMgaW50byB1bmFzc2lnbmVkIHBvc2l0aW9ucyBzaW5jZSB0aGVzZQoJICBjb2RlcyBtaWdodCBhbHJlYWR5IGJlIGluIHRoZSBsYXlvdXQgdGFibGUsIHRodXMgY3JlYXRpbmcgYSBjb25mbGljdAoKCSogZGxscy9udGRsbC9yZWxheS5jOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglGaXggYSBjb21waWxlIGVycm9yIGZvciBTTk9PUF9HZXRQcm9jQWRkcmVzcyBvbiBub24taTM4Ni4KCjIwMDQtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIE5UIHN0YXR1cyB2YWx1ZXMgdG8gYmUgY2xvc2VyIHRvIE5UIGJlaGF2aW9yLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgc3VwcG9ydCBmb3IgdGhlIC14IDxsYW5nPiBvcHRpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglTZXR1cCBtZW51IGRyYXdpbmcgY29sb3JzIGJlZm9yZSBjYWxsaW5nIG93bmVyIGRyYXcgcm91dGluZS4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CgktIFdvcmsgYXJvdW5kIHByb2JsZW0gaW4gTlNJUyBpbnN0YWxsZXJzIHdoaWNoIGNhbid0IGhhbmRsZSAxIGNoYXIgYXQKCSAgYSB0aW1lIHJlYWRpbmcgb2YgUlRGIHRleHQuCgktIEluY3JlYXNlIGJ1ZmZlciB0byA0MDk2IGJ5dGVzIGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eS4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW46IFBhdWwgVnJpZW5zIDxwdnJpZW5zQHhzNGFsbC5ubD4KCUNvcnJlY3QgcmVtb3Zpbmcgd2luZWcrKyBsaW5rIG9uIGFuIHVuaW5zdGFsbC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL250ZGxsL2Vudi5jLAoJICBkbGxzL250ZGxsL3BhdGguYywgaW5jbHVkZS93aW50ZXJubC5oLCBpbmNsdWRlL3RocmVhZC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCVJ0bFNldEN1cnJlbnREaXJlY3RvcnlfVTogc3RvcmUgYSBoYW5kbGUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CglhbG9uZyB3aXRoIGl0cyBuYW1lLgoKCSogZmlsZXMvZmlsZS5jLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBGSUxFX0RJUkVDVE9SWV9GSUxFIGFuZCBGSUxFX05PTl9ESVJFQ1RPUllfRklMRSBvcGVuCglvcHRpb25zLgoKCSogbWlzYy9vcHRpb25zLmM6IFJlbW92ZWQgc3VwcG9ydCBmb3IgdGhlIC0tZGVidWdtc2cgb3B0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZHhkaWFnbi8uY3ZzaWdub3JlLAoJICBkbGxzL2R4ZGlhZ24vTWFrZWZpbGUuaW4sIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwgZGxscy9keGRpYWduL2R4ZGlhZ24uc3BlYywKCSAgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsIGRsbHMvZHhkaWFnbi9yZWdzdnIuYywKCSAgZGxscy9keGRpYWduL3ZlcnNpb24ucmMsIHRvb2xzL3dpbmUuaW5mOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBkeGRpYWduLmRsbCB3aXRoIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIElEeERpYWdQcm92aWRlci4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9udGRsbC9wYXRoLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmg6CglBZGRlZCBoYWNrIHRvIGZldGNoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmcm9tIHRoZSBzdWJzeXN0ZW0gdGlkIHNvCgl0aGF0IGl0IGlzIGhhbmRsZWQgY29ycmVjdGx5IGluIG50ZGxsIGFsc28gZm9yIDE2LWJpdCB0YXNrcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCVVwZGF0ZSB0aGUgZHJpdmUgZW52aXJvbm1lbnQgc3RyaW5ncyB3aGVuIGNoYW5naW5nIHRoZSBjdXJyZW50CglkaXJlY3RvcnkgZnJvbSAxNi1iaXQgb3IgRE9TIGNvZGUuCgoyMDA0LTA0LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9keGRpYWcuaDogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXhlZCBzb21lIGJ1Z3MuCgoJKiBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9kM2Q4X21haW4uYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsCgkgIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciB2ZXJ0ZXggc2hhZGVyICh1c2luZyBBUkJfdmVydGV4X3Byb2dyYW0gZXh0ZW5zaW9uKS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS90aHJlYWQuaDoKCUdldCByaWQgb2YgdGhlIFRFQiBmbGFncywgdGhleSBhcmUgbm8gbG9uZ2VyIHVzZWQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb3JyZWN0IHJldHVybiB2YWx1ZSBpbiBhIGNvdXBsZSBvZiBlcnJvciBjYXNlcy4KCgkqIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQcmV2ZW50IENZIHR5cGUgZnJvbSBiZWluZyByZWRlZmluZWQuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IGEgZmV3IGNvbXBpbGUgZXJyb3JzIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglIYXZlIHdpbmVkYmcgc2VuZCBpdHMgb3V0cHV0IHRvIHN0ZGVyciB3aGVuIGludm9rZWQgd2l0aCB0aGUgLS1hdXRvCglvcHRpb24uCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gbWFrZSBkcml2ZSBsZXR0ZXJzIGluIFBJRExzIGFsd2F5cyB1cHBlcmNhc2UgdG8gZW5hYmxlIFBJREwKCSAgY29tcGFyaXNvbgoJLSBVbmljb2RpZnkgX0lMQ3JlYXRlRHJpdmUoKQoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9keGRpYWcuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgdGhlIGR4ZGlhZy5oIGhlYWRlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3QgZXJyb3IgaGFuZGxpbmcgaW4gU0hFTEwzMl9QYXJzZU5leHRFbGVtZW50KCkuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCU9ubHkgY3JlYXRlIHRoZSBkZXZpY2Ugc3ltbGlua3MgdGhlIGZpcnN0IHRpbWUgYXJvdW5kLgoKCSogZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYzoKCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIHRoZSBTdWJTeXN0ZW1UaWIgZmllbGQgaW4gdGhlIFRFQiBvZgoJMTYtYml0IHRocmVhZHMuIFRoaXMgYWxsb3dzIEdldE1vZHVsZUZpbGVOYW1lVyB0byBhdm9pZCBjYWxsaW5nIDE2LWJpdAoJZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIGFkZGl0aW9uYWwgbmFtZXMgb2YgbWluZ3cgdG9vbHMuCgoyMDA0LTA0LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBnbERlbGV0ZU9iamVjdEJ1ZmZlckFUSSBmdW5jdGlvbi4KCUZpeCBmb3IgdHlwZXMgdGhhdCBoYXZlIGEgY29tbW9uIHJvb3QuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJldHVybiAiZmlsZSBub3QgZm91bmQiIGVycm9yIHZhbHVlcyBpbnN0ZWFkIG9mIEVfSU5WQUxJREFSRyBpZgoJX0lMQ3JlYXRlRnJvbVBhdGhBKCkgZmFpbGVkIHRvIGZpbmQgZmlsZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy93aW5lZG9zL2Rvc2NvbmYuYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsCgkgIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmM6CglNb3ZlZCB3aW5lX2dldF91bml4X2ZpbGVfbmFtZSBpbXBsZW1lbnRhdGlvbiB0byBudGRsbCwgYW5kIGNoYW5nZWQgaXQKCXRvIHJldHVybiBhbiBhbGxvY2F0ZWQgYnVmZmVyIGluc3RlYWQgb2YgYSBmaXhlZCBzaXplIG9uZS4KCgkqIGRsbHMvZ2RpL2JpdGJsdC5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVBhcnRpYWwgc3R1YiBvZiBHZGlBbHBoYUJsZW5kL0FscGhhQmxlbmQuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQSB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIHJlYWwgc3VwcG9ydCBmb3Iga2V5Ym9hcmQgbGF5b3V0IEFQSXMuCgoJKiBvYmplY3RzL3RleHQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IHNvdXJjZSBjaGFyc2V0IGFzIHdlbGwgYXMgYSByZXN1bHRpbmcgY29kZXBhZ2UgaW4gRk9OVF9tYnRvd2MuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBtaXNzaW5nIFBPU0lYIGJhdWQgcmF0ZXMgdG8gR2V0Q29tbVN0YXRlIGFuZCBTZXRDb21tU3RhdGUuCgoJKiBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdCBzb21lIFBJREwgdHlwZXMgYW5kIGVsaW1pbmF0ZSBzb21lIG1hZ2ljIG51bWJlcnMgaW4gUElETAoJYWxsb2NhdGlvbjsgY29ycmVjdCBhIGNvcHktcGFzdG8gZnJvbSBhIHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSWYgYSBmb2xkZXIgY29udGFpbnMgYSBkZXNrdG9wLmluaSwgY2hlY2sgaXQgZm9yIHRoZSBpY29uIGxvY2F0aW9uCgliZWZvcmUgdXNpbmcgdGhlIGRlZmF1bHQgZm9sZGVyIGljb24uCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVzdGFydGluZyBkaXJlY3Rvcnkgc2NhbnMgb24gcGxhdGZvcm1zIHdoZXJlCglzZWVrZGlyIHJldHVybiB2YWx1ZXMgY2Fubm90IGJlIHJldXNlZCBvbiBhIGRpZmZlcmVudCBkaXJlY3RvcnkKCW9iamVjdC4KCUFkZGVkIHNvbWUgY2hlY2tzIGZvciBpbnZhbGlkIGZpbGUgbmFtZXMgaW4gRElSX250X3RvX3VuaXguCgoJKiBkbGxzL250ZGxsL3BhdGguYzoKCUZpeGVkIGhhbmRsaW5nIG9mIFxcP1wgcHJlZml4IGluIFJ0bERvc1BhdGhOYW1lVG9OdFBhdGhOYW1lX1UuCglGaXhlZCBwYXJzaW5nIG9mIFVOQyBmaWxlIG5hbWVzIGluIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoKCSogZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJUmVwbGFjZWQgY3JlYXRlX2ZpbGUgc2VydmVyIHJlcXVlc3RzIGJ5IGEgY2FsbCB0byBOdENyZWF0ZUZpbGUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNkY2UuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCB0aGUgY2FzZSBvZiBScGNOZXR3b3JrSXNQcm90c2VxVmFsaWRbQVddICh3YXMKCVJwY05ldHdvcmtJc1Byb3RTZXFWYWxpZFtBV10pIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmV0dXJuIFRSVUUgZm9yIFRWTV9FWFBBTkQgaWYgdHJlZXZpZXcgaXRlbSBpcyBhbHJlYWR5IGV4cGFuZGVkLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGb3JjZSByZXNpemUgYmVmb3JlIGNhbGxpbmcgUkJOX0hFSUdIVENIQU5HRSBub3RpZmljYXRpb24uCgoyMDA0LTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gbGF0ZXN0IHZlcnNpb24ncyBleHBvcnRzLCBhbmQgYWRkZWQgYSBmZXcgbW9yZSBmb3J3YXJkcy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwby4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkIGJpdCBhYm91dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgV2luZG93cyBkcml2ZXJzIHRvIFByaW50IGV0Yy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIEdXX0hXTkRMQVNULgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIHN0dWIgZm9yIFNoZWxsRERFSW5pdCB0byBsZXQgV2luZG93cyBleHBsb3Jlci5leGUgZ2V0IHBhc3QgdGhlCgliZWdpbm5pbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJU2hlbGxWaWV3IHNlZW1zIHJlYXNvbmFibHkgY29tcGxldGUsIGNoYW5nZSBhIEZJWE1FIHRvIGEgVFJBQ0UgdG8KCXNwZWVkIHVwIG9wZW4vc2F2ZSBkaWFsb2dzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogRml4ZWQgYSB3YXJuaW5nLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRG8gbm90IGluY2x1ZGUgPHdpbmRvd3MuaD4sIHRvIGF2b2lkIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbiBvZgoJc2VsZWN0KCkuCgoJKiBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCBJU2hlbGxGb2xkZXI6OkdldEF0dHJpYnV0ZXNPZigpIGZvciB0aGUgY2FzZSAqcmdmSW5PdXQ9MC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDaGVjayBmb3IgZm9sZGVycyBpbiBTaGVsbEV4ZWN1dGUoKS4KCjIwMDQtMDQtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJU2V0IGxhc3QgZXJyb3IgdG8gMCBvbiBzdWNjZXNzIGluIFZFUlNJT05fR2V0RmlsZVZlcnNpb25JbmZvX1BFIG5vdwoJdGhhdCBMb2FkTGlicmFyeVcgZG9lc24ndCBkbyB0aGlzIGFueW1vcmUuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcGF0aC5jOgoJSW1wbGVtZW50ZWQgTnRDcmVhdGVsRmlsZSB1c2luZyB0aGUgbmV3IHN5bWxpbmsgc2NoZW1lLgoJVXNlIE50Q3JlYXRlRmlsZSBpbiB0aGUgbG9hZGVyLCBhbmQgZ2V0IHJpZCBvZiB0aGUgQ3JlYXRlRmlsZVcgdXBjYWxsCgloYWNrLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jLCBpbmNsdWRlL3dpbmVycm9yLmgsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJR2V0IHJpZCBvZiBub24tc3RhbmRhcmQgRVJST1JfVU5LTk9XTiB2YWx1ZS4KCgkqIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHVuaWNvZGUgc3RyaW5ncyB0byBjb25zdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBXTV9RVUVSWU5FV1BBTEVUVEUgaW4gYXBwcm9wcmlhdGUgcGxhY2VzIG9mIHRoZSBtZXNzYWdlIHRlc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSByZW5hbWUgJ3dzekNvbW1hbmRsaW5lJyB0byAnd3N6UGFyYW1ldGVycycKCS0gc2VwYXJhdGUgb3V0IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBleGVjdXRhYmxlIGZpbGUgbmFtZQoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBlbGltaW5hdGUgTVNWQyB0eXBlIGNvbnZlcnNpb24gd2FybmluZwoJLSBJU2hlbGxMaW5rOjpHZXRJY29uTG9jYXRpb24oKTogZ2V0IGljb25zIGZvciBzaGVsbCBsaW5rcyBpZiBub3QKCSAgYWxyZWFkeSBzZXQKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCByZWZlcmVuY2UgY291bnRpbmcuCglNb3ZlIG5vdGlmeSBhcnJheSB0byBidWZmZXIuCglBZGQgc3RhdGUgaW5mbyBhbmQgZml4IEdldFN0YXR1cy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBkcml2ZXIgZGVzY3JpcHRpb24gZmxhZ3MuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU9wZW5TZXJ2aWNlVzogZG9uJ3QgdXNlIHRoZSByZXF1ZXN0ZWQgc2VydmljZSBhY2Nlc3MgcmlnaHRzIGZvciB0aGUKCXJlZ2lzdHJ5IGtleSBhY2Nlc3MgcmlnaHRzLCB0aGV5IGFyZSBub3QgdGhlIHNhbWUgdGhpbmcuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglDcmVhdGUgdGhlIGRldmljZXMgZWFybGllciBvbiBkdXJpbmcgc3RhcnR1cC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzogT3BlblNDTWFuYWdlckEvVyBhcmd1bWVudHMgYXJlIHN0cmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6IEplZmYgPGplZmZsQGRlZmNlbi5nb3YuYXU+CglDbGFyaWZ5IHRoZSBhdHRhY2ggY29tbWFuZC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIHRoZSBwb3NzaWJpbGl0eSB0byBzYXZlIGEgc25hcHNob3Qgb2YgdGhlIGJhY2tidWZmZXIgYXQKCWZsaXAtdGltZS4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGJldHRlciBsb2cgdGhlIEdldERldmljZVN0YXRlIGZ1bmN0aW9uCgktIGxvZyBjaGFuZ2VzIHRvIHRoZSBESW5wdXRLZXlTdGF0ZSB0YWJsZQoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggR2V0Q29tbVN0YXRlIGFuZCBTZXRDb21tU3RhdGUsIHNvIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGNhbiBiZSB1c2VkCgl0byBzZXQvY2xlYXIvcmVhZCB0aGUgRFRSIGFuZCBSVFMgbGluZXMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQ29ycmVjdCBzcGVjIGVudHJ5IGZvciBNc2lMb2FkU3RyaW5nKi4KCVBzZXVkbyBzdHVicyBmb3IgTXNpTG9jYXRlQ29tcG9uZW50Ki4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2luZG93LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBjaGlsZHJlbiBaIG9yZGVyaW5nIGF0IHdpbmRvdyBjcmVhdGlvbiB0aW1lLgoKCSogZGxscy90YXBpMzIvYXNzaXN0ZWQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW1wbGVtZW50IHRhcGlHZXRMb2NhdGlvbkluZm8uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCB0b29scy93aW5laW5zdGFsbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSAiUGF0aCIgbGluZXMgZnJvbSBzYW1wbGUgY29uZmlnLgoJU2V0dXAgdGhlIGxpbmtzIGZvciB0aGUgZGVmYXVsdCBET1MgZHJpdmVzIGluIHdpbmVpbnN0YWxsLgoKCSogdG9vbHMvd3JjL3dyYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIC0tdmVyYm9zZSBmb3IgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBiYWNrIHdpbjE2IHN0eWxlIGRpYWxvZ3MgZm9yIHdpbjMyIGFwcHMuCgoJKiBpbmNsdWRlL2ltbS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG9uJ3QgZGVjbGFyZSBHREkgc3R1ZmYgd2hlbiBOT0dESSBpcyBkZWZpbmVkLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgaW5jbHVkZS93aW5lcnJvci5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJR2V0IHJpZCBvZiBFX1VOU1BFQyBub24tc3RhbmRhcmQgZXJyb3IgdmFsdWUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSB0cmFpbGluZyB3aGl0ZSBzcGFjZS4KCUNsZWFudXAgd2hpdGUgc3BhY2UgYW5kIGZvcm1hdCBpbiBkaXJlY3Qgc291bmQgY2FwdHVyZSByb3V0aW5lcy4KCjIwMDQtMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cmMvcGFyc2VyLmw6CglGaXhlZCBsaW5lIG51bWJlciBoYW5kbGluZyBmb3IgZXNjYXBlZCBlbmQgb2YgbGluZXMgaW5zaWRlIHN0cmluZ3MuCgoJKiB0b29scy93aW5lZHVtcC9SRUFETUUsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLm1hbjoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIHJlbW92ZSBmcm9tIFJFQURNRSB0aGUgc3R1ZmYgdGhhdCdzIGFscmVhZHkgaW4gdGhlIG1hbiBwYWdlCgktIG1vcmUgc3R1ZmYgZ29lcyBmcm9tIFJFQURNRSB0byB0aGUgbWFuIHBhZ2UKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb25kaXRpb25hbGx5IGNvbXBpbGUgY29kZSB3aGljaCB1c2VzIFhLX0V1cm9TaWduIGRlZmluaXRpb24uCgoJKiBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTGluayB0byBudGRsbC4KCgkqIGRsbHMvbXNpL21zaS5zcGVjOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUNvcnJlY3Qgc3BlYyBlbnRyeSBmb3IgRGxsR2V0Q2xhc3NPYmplY3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhdGNoIHRoZSBmcmFnbWVudCBzaXplIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHNvdW5kCglmb3JtYXQuIFRoaXMgc2F2ZXMgdXMgZnJvbSB0cmlnZ2VyaW5nIGEga2VybmVsIGZyZWV6ZSBvbiBzb21lIE9TUyAyLjQKCSsgU291bmRCbGFzdGVyIDE2IHN5c3RlbXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNsZWFudXAgdGhlIGhhbmRsaW5nIG9mIHRoZSBleHRlbnNpb24gaW4gU0hFTExfRmluZEV4ZWN1dGFibGUoKToKCS0gRWxpbWluYXRlIHRoZSBjb3JyZXNwb25kaW5nIGZpeGVkLXNpemUgYnVmZmVyIHdoaWNoIHJlbW92ZXMgdGhlCgkgIGxpbWl0YXRpb24gdG8gMyBjaGFyYWN0ZXIgZXh0ZW5zaW9ucy4KCS0gRml4IGhhbmRsaW5nIG9mIHRoZSB0cmFpbGluZyAnLicgY2FzZS4KCS0gRG8gYSBjYXNlLWluc2Vuc2l0aXZlIGNoZWNrIGZvciB0aGUgZXh0ZW5zaW9uIGluIHdpbi5pbmkuCglJbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgY29tbWFuZCBidWZmZXIgdG8gMTAyNC4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9zaGx3YXBpL3RocmVhZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgbmFtZWQgY29uc3RhbnRzIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVycy4KCgkqIGluY2x1ZGUvbXN2Y3J0L21hdGguaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIGRlZmluaXRpb24gZm9yIEhVR0VfVkFMLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTcGVjaWZ5IHRoZSByaWdodCBuYW1lIGZvciB0aGUgV2luZWxpYiBzaGFyZWQgb2JqZWN0LgoKCSogaW5jbHVkZS93aW5nZGkuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdHJ1Y3QgbmFtZSBmb3IgQklUTUFQSU5GTy4KCjIwMDQtMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDA0MDguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBtb3ZlIENyZWF0ZU15Q29tcEVudW1MaXN0IGFuZCBDcmVhdGVEZXNrdG9wRW51bUxpc3QgdG8gdGhlaXIKCSAgcmVzcGVjdGl2ZSBmaWxlcwoJLSByZXdyaXRlIENyZWF0ZUZvbGRlckVudW1MaXN0IHRvIG9ubHkgRmluZEZpcnN0RmlsZS9GaW5kTmV4dEZpbGUgb25jZQoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOiBQb3J0YWJpbGl0eSBmaXguCgoJKiBkbGxzL21zdmNydC93Y3MuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+Cgl3Y3N0b2Q6IGFkZGVkIGV4cG9uZW50IHBhcnNpbmcgYW5kIGZpeGVkIGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHNpZ24uCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3RvcmUgY29ycmVjdCBmb2N1cyBoYW5kbGluZyBmb3IgU2hvd1dpbmRvdyhTV19ISURFKSBjYXNlLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuaCwgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc21iLmMsIHNlcnZlci9zb2NrLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJUmVtb3ZlZCB0aGUgZ2V0X2ZpbGVfaW5mbyByZXF1ZXN0LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXZlcnQgYW4gZXJyb25lb3VzIHBhdGNoLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdNX1NFVFJFRFJBVyB0ZXN0LgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRW1wdHkgdmFsdWVzIG5lZWQgdG8gYmUgcHJlc2VydmVkIGFzIGVtcHR5IHZhbHVlcyBhbmQgbm90IGFzc3VtZWQgdG8KCWJlIG5vbmV4aXN0ZW50IHZhbHVlcy4KCgkqIGluY2x1ZGUvdGFwaS5oOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgc29tZSBzdHJ1Y3R1cmVzIGFuZCBkZWZpbmVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQXV0b21hdGljYWxseSBkZXRlY3Qgd2hldGhlciB0aGUgZW50cnkgcG9pbnQgaXMgbWFpbiBvciBXaW5NYWluCglpbnN0ZWFkIG9mIGRlcGVuZGluZyBvbiB0aGUgc3Vic3lzdGVtIHR5cGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJUmVwbGFjZSB0aGUgZ2V0X2ZpbGVfaW5mbyByZXF1ZXN0IGJ5IGFuIGZzdGF0KCkgb24gdGhlIGNsaWVudCBzaWRlLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggYmFkIGluaXRpYWxpemF0aW9uIG9mIFVuaWNvZGUgbGVuZ3RoIHBhcmFtZXRlcnMgaW4KCVJ0bFN0cmluZ0Zyb21HVUlELgoKCSogZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZHBuZXQvY2xpZW50LmMsCgkgIGRsbHMvZHBuZXQvZHBuZXRfcHJpdmF0ZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCB0cmFjZXMgdG8gY2xpZW50LmMgYW5kIGFkZHJlc3MuYyBzdHViIGZ1bmN0aW9ucwoJLSBpbXBsZW1lbnQgc29tZSBkZWJ1Z2dpbmcgZnVuY3Rpb25zIChkZWJ1Z3N0cl9TUCkKCS0gaW1wbGVtZW50IElEaXJlY3RQbGF5OEFkZHJlc3M6OkdldFNQL0lEaXJlY3RQbGF5OEFkZHJlc3M6OlNldFNQCgoJKiBkbGxzL3NoZWxsMzIvY3BhbmVsLmgsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuaCwKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTW92ZSBjb250cm9sIHBhbmVsIGFwcGxldCBlbnVtZXJhdGlvbiB0byBjcGFuZWxmb2xkZXIuYy4KCjIwMDQtMDQtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJSGFuZGxlIHRoZSBzZXRfZmlsZV9wb2ludGVyIHJlcXVlc3Qgb24gdGhlIGNsaWVudCBzaWRlLgoKCSogaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBjb21waWxpbmcgdW5kZXIgTVNfVkMgNi4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIFNIQmluZFRvUGFyZW50KCk6IHJlcXVlc3QgY29ycmVjdCBDT00gaW50ZXJmYWNlIGZyb20gZGVza3RvcC4KCS0gX0lMQ3JlYXRlRnJvbUZpbmREYXRhQSgpOiB0eXBlIGNhc3QgdG8gZWxpbWluYXRlIE1TVkMgY29tcGlsZXIKCSAgd2FybmluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RwbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBuZXQvTWFrZWZpbGUuaW4sIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2RwbmV0L2NsaWVudC5jLAoJICBkbGxzL2RwbmV0L2RwbmV0LnNwZWMsIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X3ByaXZhdGUuaCwgZGxscy9kcG5ldC9wZWVyLmMsIGRsbHMvZHBuZXQvcmVnc3ZyLmMsCgkgIGRsbHMvZHBuZXQvc2VydmVyLmMsIGRsbHMvZHBuZXQvdmVyc2lvbi5yYywgdG9vbHMvd2luZS5pbmY6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIHNpbXBsZSBkcG5ldC5kbGwgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gY29tbWVudCBmaXhlcwoJLSBpbXByb3ZlZCBlcnJvciBjaGVja2luZyBhbmQgY29uZm9ybWFuY2Ugd2l0aCBXaW5kb3dzCgktIHJlbW92ZSBzb21lIHNwdXJpb3VzIGVycm9yIG1lc3NhZ2VzCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL21pc2MuYywKCSAgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy92ZG1kYmcvLmN2c2lnbm9yZSwKCSAgZGxscy92ZG1kYmcvTWFrZWZpbGUuaW4sIGRsbHMvdmRtZGJnL3ZkbWRiZy5jLAoJICBkbGxzL3ZkbWRiZy92ZG1kYmcuc3BlYzoKCVNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJU3R1YnMgdG8gcHJldmVudCB0YXNrbWdyLmV4ZSBmcm9tIGNyYXNoaW5nIG9yIGFib3J0aW5nIGR1cmluZwoJc3RhcnR1cC4KCgkqIGZpbGVzL2ZpbGUuYzogQmV0dGVyIGZhbGxiYWNrIGluIFNldEZpbGVUaW1lIHdoZW4gZnV0aW1lcyBpcyBtaXNzaW5nLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IE1pY2hhZWwgSmFjb2JzZW4gPGltX25vdHRAaG90bWFpbC5jb20+CglDbGVhbmVkIHVwIHRoZSB0ZXh0IGNvbmNlcm5pbmcgdGhlIG5lZWQgZm9yIGNvbmZvcm1hbmNlIHRlc3RzLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUNhc3QgdGhpcmQgcGFyYW1ldGVyIG9mIGVsZl9zZWFyY2hfYW5kX2xvYWRfZmlsZSgpIHRvIHByb3BlciB0eXBlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggZHVtYiBlcnJvciBmcm9tIHJldi4gMS4xNTguCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggRGJnUHJpbnQgYW5kIGltcGxlbWVudCBEYmdQcmludEV4CgktIHN0dWIgZm9yIE50SW1wZXJzb25hdGVBbm9ueW1vdXNUb2tlbgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogaW5jbHVkZS9kcGFkZHIuaCwgaW5jbHVkZS9kcGxheTguaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQ29ycmVjdCBkcGxheTggaGVhZGVycyBmb3IgZnV0dXJlIHVzZS4KCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IENoZWNrVGhlbWVTaWduYXR1cmUuCgoJKiB0b29scy9tYWtlZGVwLmM6CglBZGRlZCBzb21lIGNoZWNrcyBmb3IgdGhlIGNvbmZpZy5oIGluY2x1c2lvbiBydWxlcyBpbiB0aGUgV2luZSB0cmVlLgoKCSogZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy91c2VyL2NvbW0xNi5jLAoJICBkbGxzL3dpbmVwcy90eXBlMS5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCUZpeGVkIGEgY291cGxlIG9mIGhlYWRlciBmaWxlcyBvcmRlcmluZyBpc3N1ZXMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzoKCUJldHRlciBzdXBwb3J0IGZvciBkZXZpY2UgaGFuZGxlcyBpbiBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMveDExZHJ2L3hyYW5kci5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTG9hZCB0aGUgWFJhbmRSIGV4dGVuc2lvbiBkeW5hbWljYWxseSAod2l0aCBoZWxwIGZyb20gQWxleCBQYXNhZHluKS4KCgkqIGZpbGVzL3NtYi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQcm9wZXJseSBtYXAgU01CIGVycm9ycyB1c2luZyBET1Mtc3R5bGUgZXJyb3IgY29kZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVzb2x2ZSBzaGVsbCBzaG9ydGN1dHMgYW5kIHByb2Nlc3MgSUQgbGlzdHMgaW4gU2hlbGxFeGVjdXRlKCkKCWZ1bmN0aW9ucy4KCjIwMDQtMDQtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL21hcHBpbmcuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglHZXQgcmlkIG9mIHRoZSByZW1vdmFibGUgbWVkaWEgaGFuZGxpbmcgaW4gdGhlIHNlcnZlci4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL3Byb2Nlc3MuYzoKCUhhbmRsZSBmaWxlIG1hcHBpbmdzIG9uIHJlbW92YWJsZSBtZWRpYSBlbnRpcmVseSBpbnNpZGUgbnRkbGwuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIHJlbmFtZSBQVF9TUEVDSUFMIHRvIFBUX1NIRUxMRVhUCgktIHJlbW92ZSB1bm5lY2Vzc2FyaWx5IGNvbXBsZXggX0lMQ3JlYXRlCgktIGNvbWJpbmUgX0lMQ3JlYXRlVmFsdWUgYW5kIF9JTENyZWF0ZUZvbGRlciwgc2luY2UgdGhlaXIgb3V0cHV0cwoJICBkaWZmZXJlZCBieSBvbmx5IG9uZSBieXRlLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglGaXhlZCBzb21lIHBvdGVudGlhbCByYWNlcyBpbiB0aGUgaGFuZGxpbmcgb2YgdGhlIHZpZXcgc3RydWN0dXJlcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxNS5jOiBGbG9yaWFuIEdvdGggPENhcHRhaW5zaWZmZkBnbXguZGU+CglBZGRlZCBzb21lIG1vcmUgc3R1YnMgYWZ0ZXIgZXhhbWluaW5nIHRoZSBkb3Nib3ggc291cmNlIGNvZGUuCgoJKiBkbGxzL2RiZ2hlbHAvc3RvcmFnZS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgY29tcGlsZXIgd2FybmluZyBpbiB2ZWN0b3JfcG9zaXRpb24oKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzaGVtZXNoLmJpej4KCVN0YXRpYyBsaWJyYXJpZXMgbmFtZXMgZm9yIElDVSBhcmUgbGlic2ljdSouYSBub3cuCglBZGQgcHJpbnRvdXQgb2YgdGhlIGxpbmtpbmcgdGVzdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdXNlIG9mIHRoZSAnZGVmd2lucHJvYycgZmxhZyBpbiB0aGUgbWVzc2FnZSB0ZXN0LgoKCSogZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L3JlZ3N2ci5jLCB0b29scy93aW5lLmluZjoKCUphbWVzIFBlcnJ5IDxqYW1lc3BAZXBjYy5lZC5hYy51az4KCU1ha2UgZGlucHV0LmRsbCBzZWxmIHJlZ2lzdGVyLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGRlYWRsb2NrIGluIGNhcHR1cmUgY2FsbGJhY2suCglGaXhlZCBjYXB0dXJlIHRlc3QgdG8gY2hlY2sgYWxsIG5vdGlmaWNhdGlvbnMuCglBZGRlZCBiZXR0ZXIgZGVidWcgbWVzc2FnZXMgdG8gY2FwdHVyZSB0ZXN0LgoKCSogZGxscy9udGRsbC9maWxlLmM6CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIE50UXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvZnN0YXR2ZnMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGZzdGF0dmZzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fRXMucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Fcy5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX0VzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fcy5yYywgZGxscy93aW5lcHMvd3BzX0VzLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRXMucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9Fcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywgcHJvZ3JhbXMvd2NtZC9Fcy5yYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCBTcGFuaXNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbmFtZSBQVF9NWUNPTVAgdG8gUFRfR1VJRCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHVuaW9uIG1lbWJlciBmcm9tCglteWNvbXAgdG8gZ3VpZC4KCgkqIGRsbHMvdXNlci9taXNjLmM6IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJRml4IHJldHVybiB0eXBlcyBvZiBHZXRUaHJlYWREZXNrdG9wIGFuZCBPcGVuRGVza3RvcEEuCgoyMDA0LTA0LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL21wci5yYywKCSAgZGxscy9tcHIvbXByX0VuLnJjLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21wci9tcHJyZXMuaCwKCSAgZGxscy9tcHIvdmVyc2lvbi5yYywgZGxscy9tcHIvd25ldC5jLCBkbGxzL21wci93bmV0cHJpdi5oLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL25wYXBpLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGltcGxlbWVudCBsb2FkaW5nIG5ldHdvcmsgcHJvdmlkZXJzCgktIGltcGxlbWVudCBlbnVtZXJhdGlvbiBmdW5jdGlvbnMKCS0gc29tZSBpbXByb3ZlZCBlcnJvciBjaGVja2luZyBhbmQgQS0+VyBjb252ZXJzaW9uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBzeW1ib2xpYyBjb25zdGFudHMgZm9yIG1hZ2ljIG51bWJlcnMgaW4gU0hHZXRGb2xkZXJQYXRoVywgYXZvaWQKCWRvaW5nIE11bHRpQnl0ZVRvV2lkZUNoYXIgb24gdmFsdWVzIHRoYXQgZG9uJ3QgbmVlZCBpdCwKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBHZXRGaWxlVmVyc2lvbkluZm9TaXplQS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSBmcm9tIGFzY2lpIHRvIHVuaWNvZGUsCglmaXhlZCBmYWlsaW5nLCBjcmFzaGluZyB0ZXN0IGNhc2VzLgoKCSogZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywKCSAgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jLAoJICBpbmNsdWRlL2ltYWdlaGxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIHF1aXRlIGEgZmV3IGZ1bmN0aW9ucyB0byBkYmdoZWxwIChyZW1vdmVkIGRlYnVnLmMgYW5kIHN5bWJvbC5jCglmaWxlcykuCgoJKiBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTZXQgY29ycmVjdCBvcHRpb25zIGZvciBkYmdoZWxwIChFTEYgbG9hZGluZyAmIHBhcnNpbmcgc3BlZWQpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgV1NBTG9va3VwU2VydmljZUJlZ2luQS9XLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJR2V0IHJpZCBvZiBhIGZldyBwb2ludGxlc3MgQS9XIGNvbnZlcnNpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGJnaGVscC8uY3ZzaWdub3JlLAoJICBkbGxzL2RiZ2hlbHAvTWFrZWZpbGUuaW4sIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsCgkgIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL2ltYWdlLmMsCgkgIGRsbHMvZGJnaGVscC9tZW1vcnkuYywgZGxscy9kYmdoZWxwL21pbmlkdW1wLmMsCgkgIGRsbHMvZGJnaGVscC9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvcGF0aC5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zb3VyY2UuYywKCSAgZGxscy9kYmdoZWxwL3N0YWJzLmMsIGRsbHMvZGJnaGVscC9zdGFjay5jLCBkbGxzL2RiZ2hlbHAvc3RvcmFnZS5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZGJnaGVscC90eXBlLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvY3Zjb25zdC5oLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRmlyc3Qgc2hvdCBhdCBpbXBsZW1lbnRpbmcgZGJnaGVscC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2kucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglBZGQgcmVzb3VyY2Ugc3RyaW5ncyBmb3IgY29udHJvbCBwYW5lbCBmb2xkZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJT3B0aW1pemF0aW9uOiBudWxsIHRlcm1pbmF0ZSBzdHJpbmcgYnVmZmVycyBpbnN0ZWFkIG9mIGZpbGxpbmcgdGhlbQoJY29tcGxldGVseSB3aXRoIDAuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJR2V0IGljb25zIGZvciBzaGVsbCBsaW5rIGZpbGVzLgoKCSogZGxscy9udGRsbC9wYXRoLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUZpeGVkIFJ0bERvc1BhdGhOYW1lVG9OdFBhdGhOYW1lX1UgcHJvdG90eXBlLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGYWxsYmFjayB0byBhIGNvbXByZXNzaW9uIHNjaGVtZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmVhbSBmb3JtYXQgaW4gdGhlCgljYXNlIEZPVVJDQyBoYW5kbGVyIGRvZXMgbm90IGV4aXN0IG9yIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBidW5jaCBvZiBtaXNzaW5nIGRlY2xhcmF0aW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJaWZkZWYgZ3VhcmQgVENIQVIgZGVjbGFyYXRpb24gbGlrZSBQU0RLIGRvZXMuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGZpeCBhIGNvdXBsZSB0ZXN0cyBhbmQgdHJhY2VzCgktIGFkZCBhIGNvdXBsZSBzdHVicyByZXF1aXJlZCBieSBuYXRpdmUgbnRsYW5tYW4uZGxsCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRG8gbm90IGNyYXNoIGlmIHRoZSBjbGlwYm9hcmQgZm9ybWF0IGlzIHVua25vd24uCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUZpeCBjdXQnbidwYXN0ZSBlcnJvcjogbGVhdmUgdGhlIENyaXRpY2FsU2VjdGlvbiBub3QgZW50ZXIgaXQgYWdhaW4KCShmb3VuZCBieSBzbWF0Y2gpLgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS93aW5tbV9yZXMucmMsCgkgIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2Lmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgTUNJX1NPVU5EIGNvbW1hbmQKCS0gZml4ZWQgTUNJIGNvbW1hbmQgdGFibGUgaW4gcmVzb3VyY2UKCS0gYWRkZWQgYSBUT0RPIGxpc3Qgb24gTUNJIGhhbmRsaW5nCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIGJldHRlciBOVUxMIGNoZWNrcyB0byBsc3RyY21wW2ldKEEvVykgZnVuY3Rpb25zLgoKCSogb2JqZWN0cy9yZWdpb24uYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCURvY3VtZW50YXRpb24gZm9yIG1vc3Qgb2YgdGhlIHJlZ2lvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGZpeCBkaXJ0eSBmbGFnIG9uIHNoZWxsbGluayBsb2FkaW5nIGFuZCBzYXZpbmcKCS0gdXBkYXRlIGFic29sdXRlIHBhdGggd2hlbiBjaGFuZ2luZyByZWxhdGl2ZSBwYXRoCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50ZWQgRW51bVRoZW1lcy4KCjIwMDQtMDQtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsCgkgIGZpbGVzL2ZpbGUuYzoKCVJlaW1wbGVtZW50ZWQgRGVsZXRlRmlsZSBieSB1c2luZyBDcmVhdGVGaWxlIHdpdGgKCUZJTEVfRkxBR19ERUxFVEVfT05fQ0xPU0UuIEFkZGVkL2ZpeGVkIGEgZmV3IHRlc3RzLgoKMjAwNC0wNC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkbGxzL2tlcm5lbC92eGQuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBtaXNjL3JlZ2lzdHJ5LmM6CglSZW1vdmVkIHRoZSBGYWlsUmVhZE9ubHkgb3B0aW9uLCB0aGlzIGlzIG5vdyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KCgkqIGluY2x1ZGUvbXN2Y3J0L2xpbWl0cy5oOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEZWZpbmUgYWxsIG1hY3JvcyBkZXNjcmliZWQgb24gTVNETi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU2VwYXJhdGUgVVMgRW5nbGlzaCByZXNvdXJjZXMgZnJvbSBFbmdsaXNoIG9uZXMuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCB0aGUgR0xfTUFYX1ZFUlRFWF9VTklUU19BUkIgdW5kZWNsYXJlZCBjb21waWxhdGlvbiBlcnJvci4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBBIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zIGFuZCBidWcgZml4ZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbmV3IHRlc3RzIGZvciB2YXJpb3VzIHdpbmRvdyBjcmVhdGlvbi9wb3NpdGlvbmluZyBiZWhhdmlvdXJzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgU1dQX05PWk9SREVSIGluIHRoZSBjYXNlIGl0J3Mgbm90IG5lZWRlZC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQSBkZWNpc2lvbiB3aGV0aGVyIGFkZCBTV1BfTk9BQ1RJVkFURSBvciBub3Qgc2hvdWxkIGJlIGJhc2VkIG9uCglHZXRBY3RpdmVXaW5kb3coKSB0ZXN0LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTaG93V2luZG93IHNob3VsZCBub3Qgb3B0aW1pemUgU1dfSElERSwgaXQncyB0aGUgam9iIG9mIFNldFdpbmRvd1Bvcy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2VuZGluZyBXTV9TSE9XV0lORE9XIGlzIGEgam9iIG9mIFNldFdpbmRvd1Bvcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldHRpbmcgV1NfVklTSUJMRSBzdHlsZSBkb2VzIG5vdCByZXF1aXJlIGFueSBzcGVjaWFsIGhhbmRsaW5nLgoKCSogd2luZG93cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1BBUkVOVE5PVElGWSBzaG91bGQgbm90IGJlIHNlbnQgdG8gV1NfUE9QVVAgd2luZG93cy4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oOgoJTW92ZWQgRklMRV9ERUxFVEVfT05fQ0xPU0Ugc3VwcG9ydCB0byB0aGUgaW5vZGUgb2JqZWN0IHNvIHRoYXQgd2UKCXJlYWxseSB3YWl0IGZvciB0aGUgbGFzdCBjbG9zZS4KCUFkZGVkIEZJTEVfU0hBUkVfREVMRVRFIHN1cHBvcnQuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBsaWJzL3VuaWNvZGUvc3RyaW5nLmMsCgkgIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmLCBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLm1hcDoKCUFkZGVkIG1lbWljbXBXLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOgoJRG9uJ3QgdHJ5IHRvIGdldCB0aGUgZmlsZSB0aW1lIGlmIHRoZSBmaWxlIHdhc24ndCBmb3VuZC4KCgkqIGNvbnRyb2xzL21lbnUuYzogQm9iYnkgQmluZ2hhbSA8YmluZ2hhbS4yMUBvc3UuZWR1PgoJRml4IHRyYWNraW5nIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbSBpbiBtZW51cyB3aGVuIHRoZSBtb3VzZQoJYnV0dG9uIGlzIG5vdCBoZWxkIGRvd24uCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGluY29ycmVjdCBjYWxjdWxhdGlvbiBvZiBsZWFwIHllYXIgaW4gUnRsVGltZUZpZWxkc1RvVGltZSgpLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglHZXRDb25zb2xlSW5mbygpIHBzZXVkbyBzdHViLgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU5ldFNlcnZlckdldEluZm8oKSBwc2V1ZG8gc3R1Yi4KCgkqIGRsbHMvZ2RpL3BhaW50aW5nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBidWcgaW4gR2RpR3JhZGllbnRGaWxsLgoKCSogZGxscy9kbXNjcmlwdC9zY3JpcHQuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgRE1VU19PQkpFQ1RERVNDIGxvY2FsIHN0cnVjdHVyZS4KCjIwMDQtMDQtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvdWl0b29scy5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgaW5jbHVkZS91c2VyLmgsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgcmVzdCBvZiB0aGUgVHdlYWsgbG9vayBoYWNrLgoKCSogZGxscy9udGRsbC9zeW5jLmM6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTnRQdWxzZUV2ZW50OiBEb24ndCBwcmludCBGSVhNRSBmb3IgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIGlmIGl0IGlzbid0Cgl1c2VkLgoKCSogaW5jbHVkZS9zaGVsbGFwaS5oOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBzb21lIGRlY2xhcmF0aW9ucyBmb3IgYWRkaXRpb25hbCBTSEZpbGVPcGVyYXRpb24gZmVhdHVyZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglVc2UgbmFtZWQgY29uc3RhbnQgaW5zdGVhZCBvZiBhIHNpbXBsZSBudW1iZXIgKGdldHMgcmlkIG9mIHNpZ25lZAoJd2FybmluZyB0b28pLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBMQnV0dG9uRG93biBmcm9tIHByZXZpb3VzIGNoYW5nZS4KCS0gRG9uJ3QgdXNlIEJGX0FESlVTVCBmbGFnIGZvciBkcm9wZG93biBidXR0b25zLgoJLSBGaXggTEJ1dHRvbkRibENsay4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFRUTV9UUkFDS0FDVElWQVRFIGNhbiBoYXZlIE5VTEwgbFBhcmFtIHdoZW4gZGVhY3RpdmF0aW5nLgoJLSBGYWN0b3Igb3V0IGNvbW1vbiBjb2RlIGZyb20gVE9PTFRJUFNfRGVsVG9vbHtBLFd9LgoJLSBVcGRhdGUgYWxsIGluZGljZXMgY29ycmVjdGx5IGFmdGVyIGRlbGV0ZS4KCgkqIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOgoJQmVnaW5uaW5ncyBvZiBhIHNjcmlwdCB0byBpbml0aWFsaXplIHRoZSAud2luZSBkaXJlY3RvcnkgKHdpdGggaGVscAoJZnJvbSBDaHJpcyBNb3JnYW4pLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLAoJICBjb250cm9scy9zdGF0aWMuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIHN1cHBvcnQgZm9yIHRoZSBXaW4gMy4xIExvb2suCgoJKiBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9udGRsbC9wYXRoLmM6CglNYWtlIFJ0bEdldEZ1bGxQYXRoTmFtZV9VIGhhbmRsZSBVbml4IHBhdGhzLCB1c2luZyB0aGUgbmV3IHN5bWxpbmtzCglzY2hlbWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkZWQgc3VwcG9ydCBmb3IgQ1NJRExfUkVTT1VSQ0VTIHBhdGguCgoyMDA0LTAzLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jYXJkcy8uY3ZzaWdub3JlLCBkbGxzL2NhcmRzL01ha2VmaWxlLmluOgoJanIuYm1wIGlzbid0IGdlbmVyYXRlZC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEZpeGVkIGxlbmd0aCBoYW5kbGluZyBpbiBIdHRwUXVlcnlJbmZvVy4KCgkqIHRvb2xzL2MybWFuLnBsOiBQYXVsIFZyaWVucyA8cHZyaWVuc0B4czRhbGwubmw+CglBZGRlZCBtaXNzaW5nIGNvbW1hIGluIGluZGV4Lmh0bWwuCgoJKiBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvdmVyc2lvbi5yYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU2V0IHZlcnNpb24gdG8gV2luIFhQIFNlcnZpY2UgcGF0Y2ggMi4KCgkqIGRsbHMvZDNkOC91dGlscy5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBhbmQgY2FzZSBmaXhlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRG9uJ3QgZnJlZSBBTFNBIGRldmljZSBzdHJpbmcgd2hlbiB0aGUgZGV2aWNlIGlzIGNsb3NlZCBzaW5jZSBpdCBtaWdodAoJYmUgcmVvcGVuZWQuCgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93czJ0Y3BpcC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHN1cmUgaXBfbXJlcSBpcyBub3QgZXhwb3J0ZWQgYnkgd2luc29jazIuaC4KCUFkZCBpcF9tcmVxLCBpcF9tcmVxX3NvdXJjZSBhbmQgaXBfbXNmaWx0ZXIgdG8gd3MydGNwaXAuaC4KCgkqIGRsbHMvZ2RpL3BhaW50aW5nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU9wdGltaXplIEdkaUdyYWRpZW50RmlsbCBieSBkcmF3aW5nIGxpbmVzIGluc3RlYWQgb2YgcGl4ZWxzLgoKCSogZGxscy91cmxtb24vdW1vbi5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGVkIElzRXF1YWwuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vcmUgZHVwbGV4IG1vZGUgc291bmRjYXJkIGluZm8uCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJRG8gbm90IHN0cmlwIHN0ZGNhbGwgZGVjb3JhdGlvbiBpbiBzcGVjIGZpbGVzLgoJRml4ZWQgbWFwaTMyIG9yZGluYWxzLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglGaXhlZCBoYW5kbGluZyBvZiAuc28gYW5kIC5hIGxpYnJhcmllcyBzcGVjaWZpZWQgYXMgaW5wdXQgZmlsZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUdpdmUgU2V0RXJyb3JNb2RlIHRoZSByaWdodCBhcmd1bWVudCB0byBzdXBwcmVzcyBjcmFzaCBkaWFsb2dzLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglTbWFsbCBmaXguCgoyMDA0LTAzLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmMsIGZpbGVzL2RyaXZlLmM6CglHZXQgdGhlIGRyaXZlIHJvb3QgZGlyZWN0b3JpZXMgZnJvbSB0aGUgc3ltbGlua3MgaW4gZG9zZGV2aWNlcy8gaWYKCXRoZXkgZXhpc3QuCglBZGRlZCBjcmVhdGlvbiBvZiBkcml2ZSBzeW1saW5rcyBpbiB0aGUgZGV2aWNlIHRyYW5zaXRpb24gY29kZS4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgRE9TIGRyaXZlcyBpbiBRdWVyeURvc0RldmljZSBhbmQgRGVmaW5lRG9zRGV2aWNlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglGaXhlZCBzb21lIHZhbHVlcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvaW50MTcuYzoKCUZsb3JpYW4gR290aCA8Q2FwdGFpbnNpZmZmQGdteC5kZT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3JlZ3N2ci5jLCB0b29scy93aW5lLmluZjoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJSW1wbGVtZW50IERsbEdldENsYXNzT2JqZWN0LCBEbGxSZWdpc3RlclNlcnZlciwgRGxsVW5yZWdpc3RlclNlcnZlcgoJKGFzIHRoZSBpbnRlcmZhY2VzIGFyZW4ndCBkb2N1bWVudGVkIHdlIG9ubHkgaGF2ZSBzdHVicykuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGRvbid0IHN1cHBvcnQgR2V0RElCaXRzIHdpdGggQklfUkxFNC84LCBzbyBmb3Igbm93IHJldHVybiBhbgoJdW5jb21wcmVzc2VkIGJpdG1hcCBpZiB0aGUgYml0cyBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbGVjdCB0aGUgZGlic2VjdGlvbiBpbnRvIGEgZGMgYmVmb3JlIGNhbGxpbmcgR2V0RElCQ29sb3JUYWJsZS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIENQOTMyLCBDUDkzNiwgQ1A5NDkgYW5kIENQOTUwIHRvIHRoZSBjaGFyc2V0IG1hcC4KCgkqIGRsbHMvd2luaW5ldC9jb29raWUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kaWZ5IHRoZSBjb29raWUgaGFuZGxpbmcgY29kZS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgSHR0cFF1ZXJ5SW5mb0EgZnVuY3Rpb24gYnVmZmVyIHNpemUuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGJ1aWx0aW4gTkUgbW9kdWxlIHJlZmNvdW50aW5nIG9mIDMyYml0IHBhcmVudC4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3V0aWxzLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbW9yZSBFeHRlbnNpb25zIHdvcmsgKGJlZ2luIHRvIGRldGVjdCBBVEkgZXh0ZW5zaW9ucykKCS0gdHJ5IHRvIGZpeCBEM0RUQUREUkVTU19CT1JERVIsIEQzRFRBRERSRVNTX01JUlJPUiwKCSAgRDNEVEFERFJFU1NfTUlSUk9ST05DRSB1c2luZyBPcGVuR0wgZXh0ZW5zaW9ucwoJLSBiZXR0ZXIgc2V0X3RleF9vcDogbm93IHVzZSBSdW50aW1lIEV4dGVuc2lvbiBzdXBwb3J0IChhbmQgbm90CgkgIGNvbXBpbGUgc3VwcG9ydCkKCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVnaXN0ZXJEcmFnRHJvcDogZmFpbCBvbiBOVUxMIGRyb3AgdGFyZ2V0LgoKCSogbG9hZGVyL3B0aHJlYWQuYzoKCUZpeGVkIHJvdW5kaW5nIGJ1ZyBpbiB0aGUgc3RhY2sgaW5mbyBjYWxjdWxhdGlvbiB3aGVuIHdlIGRvbid0IGhhdmUKCXB0aHJlYWRfZ2V0YXR0cl9ucC4KCgkqIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2Z0cC5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsCgkgIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGluY2x1ZGUvd2luaW5ldC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCB0aGUgd2luaW5ldCBIVFRQIGZ1bmN0aW9ucyB0byBVbmljb2RlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUludmFsaWQgIkRlc2t0b3AiIHZhbHVlcyB3b3VsZCBjcmFzaCB3aW5lY2ZnLCB1c2UgdGhlIGRlZmF1bHQgdmFsdWUKCWluc3RlYWQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCU1pbm9yIHVwZGF0ZXMgaW4gcmVzb3VyY2UgZm9yIFBvcnR1Z3Vlc2UuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUltcHJvdmVkIHZlcnNpb24gcmVzb3VyY2UgaW5mby4KCgkqIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUluIHJlc291cmNlIGluZm8gYWxsb3cgT3JpZ2luYWxGaWxlbmFtZSBhbmQgSW50ZXJuYWxOYW1lIHRvIGJlCglkaWZmZXJlbnQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCURvbid0IGV4cGVjdCBzdGRvdXQgYmUgdXNhYmxlIGFmdGVyIGV4Y2hhbmdpbmcgZmlsZSBkZXNjcmlwdG9ycyB1bmRlcgoJaXQuCgoyMDA0LTAzLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglSZW1vdmUgcmVmZXJlbmNlcyB0byB3aW5lY2hlY2sgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgaW5zZXJ0IGEKCVRPRE8gdGhhdCAgbWVudGlvbnMgdGhhdCB0aGUgZnVuY3Rpb25hbGl0eSBpcyB0byBiZSBtb3ZlZCBpbnRvCgl3aW5lY2ZnLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUVuYWJsZSBJdGFsaWFuIHRyYW5zbGF0aW9ucy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vSXQucmM6IEZpeGVkIGxhbmd1YWdlIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24ucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJV0lORV9GSUxFREVTQ1JJUFRJT05fU1RSIGlzIGFscmVhZHkgZGVmaW5lZCBpbiB3aW5lX2NvbW1vbl92ZXIucmMuCgoJKiBkbGxzL29sZWFjYy9tYWluLmMsIGRsbHMvb2xlYWNjL29sZWFjYy5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIExyZXN1bHRGcm9tT2JqZWN0IGFuZAoJQWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3cuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXcml0ZSBFTVJQT0xZTElORTE2IGlmIHBvaW50cyBmaXQgaW50byBhIFNIT1JULgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgRU1SKjE2IGRlZmluaXRpb25zIHRvIHdpbmdkaS5oLCBhcyB0aGV5J3JlIHBhcnQgb2YgdGhlIFdJTjMyIEFQSS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggU2xvdmVuaWFuIGtleWJvYXJkIGxheW91dCB0byBiZXR0ZXIgbWF0Y2ggdGhlIFhGcmVlODYgb25lLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTY3JvbGxiYXIgc2hvdWxkIGFsc28gcmVhY3Qgb24gV01fTEJVVFRPTkRCTENMSy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFRyYWRpdGlvbmFsIENoaW5lc2UgQmlnNSBhbmQgU2ltcGxpZmllZCBDaGluZXNlIEdCSyBtYXBwaW5ncy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglGaXhlZCBlcnJvciByZXBvcnRpbmcuCgoJKiBkbGxzL3dpbm5scy93aW5ubHMuYywgZGxscy93aW5ubHMvd2lubmxzMzIuc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgZm9yIFdJTk5MUzMyRW5hYmxlSU1FLgoKCSogY29udHJvbHMvZWRpdC5jLCB0b29scy93aW5lY2hlY2s6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGQgc29tZSBUUkFDRWluZyB0byB0aGUgZWRpdCBjb250cm9sLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFdhcnJlbiBUdXJrYWwgPHd0QG1pZHNvdXRoLnJyLmNvbT4KCUZpeGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDb1RyZWF0QXNDbGFzcy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgbG9hZGluZyBhbmQgc2F2aW5nIHRvIGEgc3RyZWFtLCBhbmQgYSBmZXcgb3RoZXIgYmFzaWMKCWZ1bmN0aW9ucy4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglIb25vdXIgRElCX1BBTF9DT0xPUlMgd2hlbiB0aGUgYml0bWFwIGRlcHRocyBtYXRjaC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJpbnQgb3V0IHNvdW5kIGNhcmQgaW5mbyBmb3IgcGxheWJhY2ssIGNhcHR1cmUgYW5kIGR1cGxleCBtb2Rlcy4KCUhhcmR3YXJlIGNhcGFiaWxpdGllcyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdXNhZ2UgbW9kZS4KCVByaW50IG91dCBmb3JtYXQgcmVxdWVzdGVkIGFuZCBhY3R1YWwgZm9ybWF0IHJldHVybmVkLgoKCSogZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVbmljb2RpZnkgQ3JlYXRlTWV0YUZpbGUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBDcmVhdGVFdmVudFcgaW4gcHJlZmVyZW5jZSB0byBDcmVhdGVFdmVudEEuCgoJKiBkbGxzL2NhcmRzLy5jdnNpZ25vcmUsIGRsbHMvY2FyZHMvTWFrZWZpbGUuaW4sIGRsbHMvY2FyZHMvY2FyZHMuYywKCSAgZGxscy9jYXJkcy9jYXJkcy5oLCBkbGxzL2NhcmRzL2NhcmRzLnJjOgoJU2FtaSBOb3BhbmVuIDx4YXNteEBvcHRvbmxpbmUubmV0PgoJSW1wbGVtZW50ZWQgaW52aXNpYmxlZ2hvc3QsIGRlY2t4IGFuZCBkZWNrbyBkcmF3aW5nIG1vZGVzLCBhbmQKCWltcHJvdmVkIGdob3N0IGRyYXdpbmcgbW9kZS4KCjIwMDQtMDMtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oOgoJQ2hlY2sgZmlsZSBzaGFyaW5nIHBlcm1pc3Npb25zIGJhc2VkIG9uIHRoZSBmaWxlIGlub2RlIGluc3RlYWQgb2YgdGhlCglmaWxlIG5hbWUuCglBZGRlZCByZWdyZXNzaW9uIHRlc3QgZm9yIHNoYXJpbmcgcGVybWlzc2lvbnMuCgoJKiBmaWxlcy9maWxlLmM6CglGaXhlZCBjb3B5L3Bhc3RlIGVycm9yIGluIHByZXZpb3VzIHBhdGNoIChzcG90dGVkIGJ5IERpbWl0cmllCglPLiBQYXVuKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgZmV3IG1pc3NpbmcgX19BU01fTkFNRSBtYWNyb3MuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFuIHVwIHdoaXRlIHNwYWNlcy4KCUZpeCBzcGVsbGluZyBlcnJvci4KCUltcHJvdmUgY2FwdHVyZSBlcnJvciBtZXNzYWdlcy4KCUZpeCBlcnJvciByZXBvcnRpbmcgd2hlbiBjYXB0dXJpbmcgZnJvbSBub25leGlzdGVudCBkZXZpY2UuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVzZSBXSU5FREVCVUcgaW5zdGVhZCBvZiAtLWRlYnVnbXNnLgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHN1cHBvcnQgb2YgRDNEVFNTX01BWE1JUExFVkVMCgktIHN1cHBvcnQgb2YgRDNEVFNTX01JUE1BUExPREJJQVMgKHVzaW5nIEVYVF9URVhUVVJFX0xPRF9CSUFTIGV4dGVuc2lvbikKCS0gY29ycmVjdCBzdXBwb3J0IG9mIEQzRFRTU19NQVhBTklTT1RST1BZIGZvciBEM0RUU1NfTUFHRklMVEVSIGFuZAoJICBEM0RUU1NfTUlORklMVEVSCgktIGZpeGVzIGZvciBEM0RUU1NfTUFHRklMVEVSIGFuZCBEM0RUU1NfTUFHRklMVEVSCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXb3JrYXJvdW5kIGEgbXN2Y3J0LnJlYWxsb2MgYnVnIHVuZGVyIFdpbjl4IGJ5IHVzaW5nIFdpbjMyIEFQSXMgaW5zdGVhZC4KCVRha2UgaW50byBhY2NvdW50IHRoYXQgSGVhcFJlYWxsb2MgbWF5IG1vdmUgdGhlIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2suCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ2FsbCBJU2hlbGxFeGVjdXRlSG9vayBpbnRlcmZhY2UgZm9yIFNoZWxsRXhlY3V0ZSgpIGNhbGxzIHdpdGggSUQKCWxpc3RzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVVzZSBmdXRpbWVzKCkgaW5zdGVhZCBvZiB1dGltZSgpIHRvIGltcGxlbWVudCBTZXRGaWxlVGltZSwgc28gdGhhdCBpdAoJY2FuIGJlIGRvbmUgb24gdGhlIGNsaWVudCBzaWRlLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLAoJICBkbGxzL3NoZWxsMzIvY3BhbmVsLmgsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29udHJvbCBwYW5lbCBmb2xkZXIgaW4gc2hlbGwgbmFtZXNwYWNlLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgY29uZmlndXJhdGlvbiBvZiBvdXRwdXQgZGV2aWNlcyB0byB1c2UgYW5kIGNoYW5nZSBzdGFuZGFyZAoJb3V0cHV0IHBsdWdpbiByZXF1ZXN0ZWQgdG8gImRlZmF1bHQiLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBGaXhTbGFzaGVzQW5kQ29sb25XIGFuZCBhZGQgc3R1YiBmb3IgU0hHZXRBcHBDb21wYXRGbGFncy4KCgkqIGRsbHMveDExZHJ2L3BhbGV0dGUuYzoKCUF2b2lkIGNyYXNoIGluIFgxMURSVl9Jc1NvbGlkQ29sb3IgZm9yIFRydWVDb2xvciBkaXNwbGF5cy4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQnVpbGQgdGhlIGNvcnJlY3QgY29sb3VyIG1hcCB3aGVuIHRoZSBtb2RlIGlzIERJQl9QQUxfQ09MT1JTLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gdXNpbmcgRElCX1BBTF9DT0xPUlMgc2VsZWN0IHRoZSBjdXJyZW50IHBhbGV0dGUgaW50byB0aGUgbWVtb3J5CglkYyBzbyB0aGF0IFNldERJQml0cyB3b3JrcyBjb3JyZWN0bHkuCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogSmFtZXMgUGVycnkgPGphbWVzcEBlcGNjLmVkLmFjLnVrPgoJRml4IGhhbmRsaW5nIG9mIEQzREJMRU5EX0JPVEgqIGJsZW5kIG1vZGVzLgoKMjAwNC0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUxNi5jOgoJRml4ZWQgR2V0RHJpdmVUeXBlMTYgcmV0dXJuIHZhbHVlIGZvciBub24tZXhpc3RlbnQgZHJpdmVzLgoJRml4ZWQgYnVnIGluIE9wZW5GaWxlMTYgaW50cm9kdWNlZCBieSBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIEZpeCBoYW5kbGluZyBvZiAlMiwgJTMsIC4uLiBhbmQgbG93ZXIgY2FzZSBmb3JtYXQgY2hhcmFjdGVycyBpbgoJICBTSEVMTF9BcmdpZnlXKCkuCgktIE1vdmUgIiVJIiBleHBhbnNpb24gZnJvbSBTaGVsbEV4ZWN1dGVFeCgpIGludG8gY29tbW9uIGZ1bmN0aW9uCgkgIFNIRUxMX0FyZ2lmeVcoKS4KCS0gUGFzcyBidWZmZXIgbGVuZ3RoIHRvIFNIRUxMX0ZpbmRFeGVjdXRhYmxlKCkuCgktIEZJWE1FIGNvbW1lbnQgZm9yIGxlbiBwYXJhbWF0ZXIgaW4gU0hFTExfQXJnaWZ5VygpLgoKCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CgktIEFkZCBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIHVubGVzcyB3ZSBhbHJlYWR5IGhhdmUgdGhlbSAoZS5nLjogIiUxIgoJICAlKiBmb3IgZXhlZmlsZSkuCgktIFJlbW92ZSB1bm5lY2Vzc2FyeSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFuZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgcHJvY2VkdXJlIGZvciBsb2dnaW5nIFdNX1BBUkVOVE5PVElGWSBtZXNzYWdlcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9wYXRoLmMsIGZpbGVzL2RpcmVjdG9yeS5jOgoJU3RvcmUgdGhlIHdpbmRvd3MgYW5kIHN5c3RlbSBkaXJlY3RvcmllcyBhcyBsb25nIHBhdGggbmFtZXMuCglNb3ZlZCBHZXRUZW1wUGF0aCBhbmQgR2V0VGVtcERyaXZlIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgRGVzdHJveVdpbmRvdygpIG5vdCBtZXNzIHdpdGggYSB3aW5kb3cgZm9jdXMsIHRoaXMgc2hvdWxkIGJlCgl0YWtlbiBjYXJlIG9mIGJ5IFNob3dXaW5kb3coU1dfSElERSkuCglBZGQgYSB0ZXN0IGZvciBEZXN0cm95V2luZG93KCkgb24gYSBmb2N1c2VkIGNoaWxkLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkICdob29rJyBmbGFnIGZvciBtZXNzYWdlcy4gQWRkIGEgdGVzdCBmb3IgQ0JUIGhvb2sgbWVzc2FnZXMuCgoyMDA0LTAzLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBmaWxlcy9kaXJlY3RvcnkuYywKCSAgaW5jbHVkZS9maWxlLmg6CglSZWltcGxlbWVudGVkIFNlYXJjaFBhdGhXIHVzaW5nIG50ZGxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudGF0aW9uIG9mIElQZXJzaXN0RmlsZTo6SXNEaXJ0eSgpLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRGVmaW5lIGlwX21yZXEuCgoJKiBpbmNsdWRlL21zdmNydC9mbG9hdC5oOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCURlZmluZSAoTClEQkxfKiBhbmQgRkxUXyouCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgJ29wdGlvbmFsJyBmbGFnIGZvciBtZXNzYWdlcywgbWFrZSB0aGUgdGVzdCBydW4gdW5kZXIgd2luMmsuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBmaWxlcy9maWxlLmM6CglTcGxpdCBPcGVuRmlsZSBpbXBsZW1lbnRhdGlvbiBpbiBzZXBhcmF0ZSAxNi0gYW5kIDMyLWJpdCB2ZXJzaW9ucywgYW5kCgljaGFuZ2VkIGl0IHRvIHVzZSBleHBvcnRlZCBBUElzIGluc3RlYWQgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdoZXJlCglwb3NzaWJsZS4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglDaGFuZ2VkIExvYWRMaWJyYXJ5RXgzMlcxNiB0byB1c2UgT3BlbkZpbGUxNiB0byBsb29rIGZvciB0aGUgZmlsZQoJaW5zdGVhZCBvZiBESVJfU2VhcmNoUGF0aC4KCgkqIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBXSU5JTkVUQVBQSU5GT0Egc3RydWN0dXJlIHRvIHVuaWNvZGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIGZsYWdzIGZvciBHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvaW50MTUuYzogRmxvcmlhbiBHb3RoIDxDYXB0YWluc2lmZmZAZ214LmRlPgoJQWRkZWQgc3R1YnMgZm9yIGEgZmV3IGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglSZW1vdmVkIGNoZWNrIGZvciAtbG0sIHdpbmVnY2MgdGFrZXMgY2FyZSBvZiB0aGF0LgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJUmVwbGFjZWQgdGhlIC0tbW9kZSB3aW5lYnVpbGQgb3B0aW9uIGJ5IGEgLS1zdWJzeXN0ZW0gb3B0aW9uIGZvcgoJYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUEUgYmludXRpbHMuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluOiBUYWtlIEVYRUVYVCBpbnRvIGFjY291bnQgZm9yIFBFIGJ1aWxkcy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy90aW1lLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNvcnJlY3QgZXJyb3JzIHdpdGggbW92ZSB0byBrZXJuZWwgdGltZSBmdW5jdGlvbnMuCglBZGQgdGVzdCBjYXNlLgoKCSogaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaDogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEZWZpbmUgc3RhdCBpbiBtc3ZjcnQvd2NoYXIuaC4KCjIwMDQtMDMtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLnJjLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21ha2V0ZXN0LAoJICBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIEV4dHJhY3QgcmV2aXNpb24gaW5mbyBmcm9tIENWUy9FbnRyaWVzLgoJLSAjaW5jbHVkZSAid2luZXRlc3QucmMiIGludG8gZ3VpLnJjLiAgTWluR1cgY2FuJ3QgbGluayBpbgoJICBtb3JlIHRoYW4gb25lIHJlc291cmNlIGZpbGVzLgoJLSBFbmxhcmdlIGNodW5rIHNpemUgb2YgbmV0d29yayB0cmFuc2Zlci4KCgkqIGRsbHMvY2FyZHMvY2FyZHMuYywgZGxscy9jYXJkcy9jYXJkcy5oOgoJU2FtaSBOb3BhbmVuIDx4YXNteEBvcHRvbmxpbmUubmV0PgoJSW1wbGVtZW50ZWQgY2FyZCBkcmF3aW5nIG1vZGUgZmxhZyBmb3Igcm91bmRpbmcgY2FyZCBjb3JuZXJzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVRoZSBuYW1lIGlzIF9sb25nam1wZXggKHdpdGggdGhlIHVuZGVyc2NvcmUpLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJQ2hyaXN0b3BoIEZyaWNrIDxmcmlja0BTQy1OZXR3b3Jrcy5kZT4KCS0gQWRkZWQgbWlzc2luZyBicmVhayBzdGF0ZW1lbnQuCgktIENoYW5nZWQgdGhlIG1hcHBpbmcgb2YgdGhlIGF4aXMgdG8gYSBzaW1wbGVyIGZvcm11bGEsIHRoYXQgaWdub3JlcwoJICB0aGUgbWlkZGxlIG9mIGFuIGF4aXMuCgktIE1pbi9tYXggdmFsdWVzIHdoZXJlIGluaXRhbGl6ZWQgc3dpdGNoZWQuCgktIEFkZGVkIHRoZSBtaXNzaW5nIGJ1dHRvbiBhbmQgYXhpcyBldmVudHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCBlYXJsaWVyCgkgIGluIHRoZSBjb2RlIGJ1dCBuZXZlciBtYWRlIGl0IHRvIHRoZSBhcHBsaWNhdGlvbi4KCS0gQWRkZWQgYSBsaXR0bGUgbW9yZSBkZXNjcmlwdGl2ZSBjb21tZW50IGFib3V0IHRoZSBkZWFkem9uZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZW1vdmVkIHRoZSBVbmljb2RlIGV4ZSBtb2RlcywgYW5kIGluc3RlYWQgZGV0ZWN0IGF1dG9tYXRpY2FsbHkgd2hpY2gKCW1vZGUgdG8gdXNlIGJhc2VkIG9uIHRoZSBleGlzdGVuY2Ugb2YgbWFpbiBvciB3bWFpbi4KCgkqIGRsbHMvKi8uY3ZzaWdub3JlOgoJLnNwZWMuYyBmaWxlcyBhcmUgbm8gbG9uZ2VyIHVzZWQgZm9yIDMyLWJpdCBkbGxzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluOgoJQnVpbGQgdGhlIGRsbHMgd2l0aCB3aW5lZ2NjLgoKMjAwNC0wMy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9kM2Q4L3V0aWxzLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgdG9vbHMvd2luZWR1bXAvbWlzYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogT2ZpciBQZXRydXNrYSA8aGF0a3lAdXNlcnMuc2YubmV0PgoJS2VlcCB0aGUgY2hlY2tHTGNhbGwgZ2xBY3RpdmVUZXh0dXJlL2dsQWN0aXZlVGV4dHVyZUFSQiBzZXBhcmF0aW9uIGluCglhbGwgdGhlIGZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZCBjdXJzb3IgcmVzb3VyY2UuCgktIEltcGxlbWVudCBUQl9NT1ZFQlVUVE9OLgoJLSBJbXBsZW1lbnQgZHJhZyBjdXN0b21pc2UuCgktIFNlbmQgVEJOX1RPT0xCQVJDSEFOR0UgYW5kIFRCTl9ERUxFVElOR0JVVFRPTi4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGEgZGVmYXVsdCAuZGxsIGV4dGVuc2lvbiBvbmx5IHdoZW4gbm8gZXh0ZW5zaW9uIGlzIHByZXNlbnQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXB1dGUgZHdMZW4gYWZ0ZXIgcGFzc2luZyB0aGUgc3RyaW5nIHRocm91Z2gKCVJFR1BST0NfdW5lc2NhcGVfc3RyaW5nKCkgc28gd2UgZG9uJ3Qgc2F2ZSBnYXJiYWdlIGNoYXJhY3RlcnMgaW4gdGhlCglyZWdpc3RyeS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglEbyBub3QgcmV0dXJuIGFuIGVycm9yIHdoZW4gc2V0dGluZyBhIG1hdGVyaWFsIHRvIE5VTEwuCglGaXhlZCBhY2Nlc3MgdG8gZDNkIHByaXZhdGUgZGF0YS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogT2ZpciBQZXRydXNrYSA8aGF0a3lAdXNlcnMuc2YubmV0PgoJRGVmaW5lIEVYVFJBX1RSQUNFUyBpbnN0ZWFkIG9mICNpZiAwLgoKCSogZGxscy9jYXJkcy9jYXJkcy5jOiBBZGRlZCBtaXNzaW5nIFxuIGluIHRyYWNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy90YXNrbWdyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Rhc2ttZ3IvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3Rhc2ttZ3IvYWJvdXQuYywgcHJvZ3JhbXMvdGFza21nci9hZmZpbml0eS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2FwcGxwYWdlLmMsIHByb2dyYW1zL3Rhc2ttZ3IvY29sdW1uLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvY29sdW1uLmgsIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2RlYnVnLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZW5kcHJvYy5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2dyYXBoLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGhjdGwuYywKCSAgcHJvZ3JhbXMvdGFza21nci9ncmFwaGN0bC5oLCBwcm9ncmFtcy90YXNrbWdyL29wdG5tZW51LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcGVyZmRhdGEuYywgcHJvZ3JhbXMvdGFza21nci9wZXJmZGF0YS5oLAoJICBwcm9ncmFtcy90YXNrbWdyL3BlcmZwYWdlLmMsIHByb2dyYW1zL3Rhc2ttZ3IvcHJpb3JpdHkuYywKCSAgcHJvZ3JhbXMvdGFza21nci9wcm9jbGlzdC5jLCBwcm9ncmFtcy90YXNrbWdyL3Byb2NwYWdlLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvdGFza21nci9ydW4uYywKCSAgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmMsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5oLAoJICBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IucmMsIHByb2dyYW1zL3Rhc2ttZ3IvdHJheWljb24uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUG9ydGVkIHRoZSBSZWFjdE9TIHRhc2ttZ3Igd3JpdHRlbiBieSBCcmlhbiBQYWxtZXIuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRmlyc3QgY3V0IGF0IC1zaGFyZWQgc3VwcG9ydC4KCjIwMDQtMDMtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgdGVzdHMgZm9yIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoKCSogZGxscy9udGRsbC9wYXRoLmM6CglNb3ZlZCBzbGFzaCBjb252ZXJzaW9uIHRvIGNvbGxhcHNlX3BhdGgsIGFuZCByZW1vdmUgZHVwbGljYXRlCgliYWNrc2xhc2hlcyB0b28uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggZm9yIHJlY2VudCBzaGVsbGxpbmsgcGF0Y2gsIHdoaWNoIHJlbW92ZWQgdGhlIGltcG9ydGFudCBwYXJ0IG9mCglyZXR1cm5pbmcgdGhlIHJlc3VsdCBwb2ludGVyIGZyb20gSVNoZWxsTGlua19Db25zdHJ1Y3RGcm9tRmlsZSgpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFsbG93IHBhc3NpbmcgTlVMTCB0byBJTEZpbmRMYXN0SUQuCgoJKiBpbmNsdWRlL3JwY25kci5oOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgc29tZSBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUJTVFIgb2YgbGVuZ3RoIDAgaXMgYWxsb3dlZC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGUgY3JlYXRpb24gb2YgYSB6YnVmZmVyIGluIHN5c3RlbSBtZW1vcnkuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggcmVjZW50IFVuaWNvZGUtaWZpY2F0aW9uIHBhdGNoLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHNldGxvY2FsL2VuZGxvY2FsLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvY2F0ZSB0aGUgY29ycmVjdCBuciBvZiBieXRlcyBmb3IgbHBzekNvb2tpZXMgaW4gSFRUUF9IdHRwT3BlblJlcXVlc3RBLgoJQWxsb2NhdGUgdGhlIGNvcnJlY3QgbnIgb2YgYnl0ZXMgZm9yIHJlcXVlc3Qgc3RyaW5nbGVuIHdpdGhvdXQgb3B0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVN0dWIgQ29tbWFuZExpbmVGcm9tTXNpRGVzY3JpcHRvciB0byBwcmV2ZW50IGEgY3Jhc2ggaW4gQWNjZWxlcnlzCglNYXRlcmlhbHMgU3R1ZGlvLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBvbGQgZ3JhcGhpY3MgZGlyZWN0b3J5CgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgRmluZE1pbWVGcm9tRGF0YS4KCgkqIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEb24ndCBpbmNsdWRlIGNvbmZpZy5oLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgcGF0aCBmcm9tIHJlbGF0aXZlIHBhdGggb24gbG9hZGluZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRGFyd2luIHN1cHBvcnQgZm9yIF9pbml0L19maW5pIGZ1bmN0aW9ucyBhbmQgX2VuZCBzeW1ib2wuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGVzdHMgZm9yIHRpbWUgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGUtaWZ5IHRoZSBpY29uIGNhY2hlIGFuZCBTSEdldEZpbGVJbmZvLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdGx5IHNpemUgdGhlIHNwaV9sb2FkZWQgYXJyYXkgcHJldmVudHMgb3ZlcndyaXRpbmcgb2Ygc3lzdGVtCglwYXJhbWV0ZXJzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvY2F0ZSBjb3JyZWN0IG51bWJlciBvZiBwb2ludGVycyBmb3Igc3pBY2NlcHRUeXBlcywgc2luY2Ugd2UgbmVlZAoJaXQgTlVMTCB0ZXJtaW5hdGVkLgoJSGVhcFJlQWxsb2Mgd2lsbCBtb2RpZnkgdGhlIHBvaW50ZXIsIHNvIHN0b3JlIGl0IHRoZXJlLgoKCSogZG9jdW1lbnRhdGlvbi9kZHJhdy5zZ21sOiBSdWRvbGYgS2FzdGwgPGNoZTY2NkB1bmkuZGU+CglBZGRlZCBtaXNzaW5nIHBhcmEgdGFnLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0IFNIU2VhcmNoTWFwSW50LgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdHMgZm9yIFZhclhvci9WYXJFcXYuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBWYXJYb3IgYW5kIHNpbXBsaWZ5IFZhckVxdiB0byB1c2UgaXQuCgoJKiBpbmNsdWRlL3JwY25kci5oOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIEMrKyBzdXBwb3J0LgoKCSogZGxscy93c29jazMyL3Byb3RvY29sLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUG9ydGluZyBmaXhlcy4KCjIwMDQtMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZpeGVkIHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoKCSogZmlsZXMvZmlsZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBPcGVuRmlsZSByZXR1cm5lZCB2YWx1ZSB3aGVuIE9GX0VYSVNUIGZsYWcgaXMgc3BlY2lmaWVkLgoKCSogd2luZG93cy9kaWFsb2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBvcmRlciBvZiBFbmFibGVXaW5kb3cvRGVzdHJveVdpbmRvdyBpbiB0aGUgY2FzZSBvZiBmYWlsdXJlIGluCglESUFMT0dfQ3JlYXRlQ29udHJvbHMzMi4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vZGRyYXcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZHJhdy50eHQsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUNvbnZlcnQgZGRyYXcudHh0IHRvIGRkcmF3LnNnbWwgYW5kIGFkZCBpdCB0byB0aGUgd2luZS1kZXZlbAoJZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBhIHBvc3NpYmxlIG51bGwgcG9pbnRlciBjcmFzaCBpbiBGSUxFRExHOTVfTE9PS0lOX0luaXQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWtldGVzdDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgcmV2aXNpb24gc3VwcG9ydCB0byB3aW5ldGVzdC5leGUuCgoJKiB0b29scy93aW5lLmluZjogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgQ29udGVudCBUeXBlcyBmb3IgYSBmZXcgY29tbW9uIGV4dGVuc2lvbnMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvaW5zZXJ0LmMsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RhcnQgaW1wbGVtZW50aW5nIHRoZSBTUUwgaW5zZXJ0IHF1ZXJ5LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXByb3ZlIEQzRDcgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkUmVmIHRleHR1cmUgb25seSBpZiB0aGVyZSBpcyBvbmUgZm9yIHRoZSByZXF1ZXN0ZWQgc3RhZ2UuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC92b2x1bWUuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCVJld3JvdGUgaGFuZGxpbmcgb2YgQ09NIGFuZCBMUFQgZGV2aWNlcyB0byB1c2Ugc3ltbGlua3MgaW4KCSRXSU5FUFJFRklYL2Rvc2RldmljZXMsIHdpdGggc3VpdGFibGUgZGVmYXVsdHMgaWYgdGhlIHN5bWxpbmtzIGFyZQoJbWlzc2luZy4KCVJld3JvdGUgUXVlcnlEb3NEZXZpY2UgYW5kIERlZmluZURvc0RldmljZSB0byB1c2UgdGhlIG5ldyBzY2hlbWUuCglBZGRlZCB0ZW1wb3JhcnkgY29kZSB0byBjcmVhdGUgdGhlIHN5bWxpbmtzIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZgoJdGhlIGNvbmZpZyBmaWxlLgoKMjAwNC0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cG8gaW4gRm9ybWF0TWVzc2FnZVcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gUmVmYWN0b3IgYW5kIGZpeCBjb25uZWN0aW9uIG9wZW5pbmcuCgktIFRhcmdldCB0ZXN0LndpbmVocS5vcmcuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglKdXN0IHVwZGF0ZSBmcm9tL3RvIHBvaW50ZXJzIGFuZCBleGl0IG9uIGEgc3Vic2VxdWVudCBNQ0lfUExBWQoJY29tbWFuZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSB3aGljaCBjb25maXJtcyB0aGF0IFNldE1lbnUgaW1wbGVtZW50YXRpb24gaW4gV2luZSBpcwoJY29ycmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSByZWJhciBzaXplIGlzIGFib3ZlIGEgbWluaW11bS4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcmVjb3JkLmMsCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxlIGFsbG9jYXRpb24gYW5kIHRoZSBDUkVBVEUgVEFCTEUgcXVlcnkuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJQWRkZWQgd29ya2Fyb3VuZCBmb3IgYnJva2VuIGRsbHMgdGhhdCBtb2RpZnkgZWJ4IGluIHRoZWlyIGVudHJ5IHBvaW50CgkocmVwb3J0ZWQgYnkgQ2hyaXN0aWFuIENvc3RhKS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gRml4IHJlcG9ydCgpIGRpc3BhdGNoLgoJLSBTdHJpcCAiX3Rlc3QuLi4iIGZyb20gdGVzdCBmaWxlIG5hbWVzLgoJLSBVc2UgbXlzdHJ0b2soKSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggdGhlCgkgIG9uZSBpbiBnZXRfc3VidGVzdHMoKS4KCS0gQ2hhbmdlIFVzZXItQWdlbnQgSFRUUCBoZWFkZXIgdG8gIldpbmV0ZXN0IFNoZWxsIi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvdGVzdHMvc3RyaW5nLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZWxheSBtc3ZjcnRfbWVtY3B5IHRvIG1lbW1vdmUsIENTdHJpbmc6Okluc2VydCBzZWVtcyB0byByZWx5IG9uIHRoYXQKCWJlaGF2aW91ci4gQWRkIGEgdGVzdCBjYXNlLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gU0hFTExfRXhlY3V0ZVcsIGlmIGEgbmV3IGN1cnJlbnQgZGlyZWN0b3J5IGlzIHNwZWNpZmllZCwgY2hhbmdlIHRvCglpdCBiZWZvcmUgY2FsbGluZyBDcmVhdGVQcm9jZXNzIHNvIHRoYXQgaXQgd2lsbCBmaW5kIHRoZSBjb3JyZWN0CglleGVjdXRhYmxlLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IEZvcm1hdE1lc3NhZ2VXIHRvIHVzZSB1bmljb2RlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzoKCUdldCByaWQgb2YgdGhlIHJlZ2lzdHJ5IGxvb2t1cHMsIHJlbHkgZW50aXJlbHkgb24gdGhlIGtlcm5lbCBkZXZpY2VzCglpbnN0ZWFkLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6CglBdm9pZCBpbmNsdWRpbmcgd2luZG93cy5oIHNpbmNlIGl0IGNvbmZsaWN0cyB3aXRoIHVuaXN0ZC5oLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVGhlIEtleW1hcE5vdGlmeSBldmVudCBkb2VzIG5vdCB1c2UgdGhlIHdpbmRvdyBtZW1iZXIsIHNvIGRvbid0IHdhcm4KCWFib3V0IGl0IGJlaW5nIHVua25vd24uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGltZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZWltcGxlbWVudCB0aW1lIGZ1bmN0aW9ucyB3aXRoIFdpbjMyIEFQSXMuCglJbXBsZW1lbnQgbG9jYWx0aW1lKCkvZ210aW1lKCkuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvZGlzdGluY3QuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS9zdHJpbmcuYywKCSAgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvdG9rZW5pemUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IGdvIGF0IHdyaXRlIHN1cHBvcnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCUltcGxlbWVudGVkIFNQSXtHRVQsU0VUfU1PVVNFSE9WRVJXSURUSCwgU1BJe0dFVCxTRVR9TU9VU0VIT1ZFUkhFSUdIVCwKCVNQSXtHRVQsU0VUfU1PVVNFSE9WRVJUSU1FLCBTUEl7R0VULFNFVH1NT1VTRVNDUk9MTExJTkVTLAoJU1BJe0dFVCxTRVR9TUVOVVNIT1dERUxBWS4KCjIwMDQtMDMtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWFrZSB0aGUgc3RhbmRhcmQgY3JlYXRlX2ZpbGUgcmVxdWVzdCBoYW5kbGUgc2VyaWFsIHBvcnRzIHRvbywgYW5kCglyZW1vdmUgdGhlIGNyZWF0ZV9zZXJpYWwgcmVxdWVzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRXhwYW5kIGVudmlyb25tZW50IHN0cmluZ3MgaW4gY29tbWFuZCwgcGFyYW1ldGVyIGFuZCBkaXJlY3Rvcnkgc3RyaW5ncwoJb2YgU2hlbGxFeGVjdXRlRXhXMzIoKS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBsb2FkaW5nIHRhYmxlIGRhdGEsIHNwbGl0IGl0IHVwIGludG8gcm93cy4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaGFuZGxpbmcgb2YgImVjaG8uIgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBTZXRCaXRtYXBTaXplLgoJLSBGaXggU2V0QnV0dG9uSW5mby4KCgkqIGNvbnRyb2xzL21lbnUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zbGF0ZUFjY2VsZXJhdG9yIHNob3VsZCBvbmx5IGlnbm9yZSBjb21tYW5kcyB3aGVuIG1vdXNlIGNhcHR1cmUgaXMKCWluIGVmZmVjdCBvciB0aGUgd2luZG93IGlzIGRpc2FibGVkLCBpZiB0aGUgY29tbWFuZCBjb3JyZXNwb25kcyB0byBhCgltZW51IGl0ZW0uICBPdGhlcndpc2UgaXQgc2hvdWxkIHByb2Nlc3MgdGhlbSBhcyBub3JtYWwuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbnZhbGlkYXRlIHRoZSBmb2N1c2VkIGl0ZW0gd2hlbiBzY3JvbGxpbmcgaG9yaXpvbnRhbGx5IHNvIHRoYXQgaXQKCXJlcGFpbnRzIGNvcnJlY3RseS4KCgkqIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9tc2dib3guYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3Jlc291cmNlLmgsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9Fbi5yYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBTSE1lc3NhZ2VCb3hDaGVjayBmdW5jdGlvbnMgJiYgYWRkIGRpYWxvZyByZXNvdXJjZXMuCglBZGQgU0hXYWl0Rm9yU2VuZE1lc3NhZ2VUaHJlYWQsIFNIQW5zaVRvVW5pY29kZUNQLFNIU3RyaXBNbmV1bW9uaWNXLAoJU0hTZWFyY2hNYXBJbnQuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2RlYnVnYnVmZmVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTdHViIGltcGxlbWVudGF0aW9ucyBvZiBSdGxDcmVhdGVRdWVyeURlYnVnQnVmZmVyLAoJUnRsRGVzdHJveVF1ZXJ5RGVidWdCdWZmZXIgYW5kIFJ0bFF1ZXJ5UHJvY2Vzc0RlYnVnSW5mb3JtYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGJ5IHVzaW5nIE50KiBmdW5jdGlvbnMgZm9yIFB1bHNlRXZlbnQsCglSZXNldEV2ZW50IGFuZCBTZXRFdmVudC4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQWRkZWQgc29tZSB0cmFjZXMuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVsZWFzZSBsb2NrIGJlZm9yZSB3YXZlIGNhbGxzIHRoYXQgZ2VuZXJhdGUgbm90aWZpY2F0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBbGxvdyBSZWdDb25uZWN0UmVnaXN0cnlXIHRvIHRoZSBsb2NhbCBtYWNoaW5lIG5hbWUuCgoyMDA0LTAzLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2Rvc19mcy5jOgoJUmVpbXBsZW1lbnRlZCBGaW5kRmlyc3RGaWxlL0ZpbmROZXh0RmlsZSBvbiB0b3Agb2YKCU50UXVlcnlEaXJlY3RvcnlGaWxlLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB0aGUgc3RyaW5nIHRhYmxlIG91dCBpbnRvIGEgc2VwYXJhdGUgZmlsZSwgaW1wcm92ZSBsb29rdXBzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgVmFyRXF2LgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglGaXggcmVsYXRpdmUgc2NyZWVuIHJlc2l6aW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglSZW1vdmUgLiBmcm9tIGRlZmF1bHQgbGlicmFyeSBzZWFyY2ggcGF0aC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglGaXggY3Vyc29yIHBvc2l0aW9uIG9wdGltaXphdGlvbi4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRklYTUVfKHdpbikgLT4gRklYTUUuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWtlIGNvcGllcyBvZiBrZXlzIHdoZW4gY3JlYXRpbmcsIGZyZWUgdGhlbSB3aGVuIGRvbmUuCglVc2UgS0VZX0FMTF9BQ0NFU1Mgd2hlbiB3cml0aW5nIFVTIHJlZyB2YWx1ZXMuCglTSFJlZ1dyaXRlVVNWYWx1ZVc6IEhhbmRsZSBhbGwgZmxhZyBjb21iaW5hdGlvbnMuCglNYWtlIHNvbWUgQSBjYWxscyB1c2UgdGhlIFcgdmVyc2lvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBmdW5jdGlvbiBwdHJzIGZvciBjYWxsIG9ubHkgcHJlc2VudCBpbiBsYXRlciB2ZXJzaW9ucy4KCUZpeCB0ZXN0cyB0aGF0IGZhaWwgd2l0aCBvbGQgdmVyc2lvbnMuCgoJKiBkbGxzL2ljY3ZpZC9pY2N2aWQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBnZW9tZXRyeSBlcnJvciBpbiB0aGUgSUNDVklEIGNvZGVjLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIERvY3VtZW50YXRpb24gdXBkYXRlLgoJLSBCZXR0ZXIgaG90IGl0ZW0gaGFuZGxpbmcuCgktIEZpeCBEcmF3TWFza2VkIHRvIGFsd2F5cyB1c2UgdGhlIHJpZ2h0IGltYWdlIGxpc3QgYW5kIGJpdG1hcCBpbmRleC4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOgoJUmV3cm90ZSB0aGUgY29sbGFwc2luZyBvZiAuIGFuZCAuLiBpbiBSdGxHZXRGdWxsUGF0aE5hbWVfVSBmb3IgYmV0dGVyCgljb21wYXRpYmlsaXR5LgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOgoJUmV0cmlldmUgYSBzaG9ydCBuYW1lIGluIEdldFNob3J0UGF0aE5hbWVXIGlmIHRoZSBsb25nIG5hbWUgY29udGFpbnMKCXNwYWNlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy93aW5lZG9zL2ludDIxLmM6CglGaW5kRmlyc3RGaWxlIGNhbiByZXR1cm4gYW4gZW1wdHkgc2hvcnQgbmFtZSBpZiB0aGUgbG9uZyBuYW1lIGlzIGEKCXZhbGlkIERPUyBuYW1lLCBmaXhlZCBjYWxsZXJzIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kaXNrc3BhY2UuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmVnaW5uaW5ncyBvbiBpbXBsZW1lbnRhdGlvbnMgb2YgU2V0dXBDcmVhdGVEaXNrU3BhY2VMaXN0QS9XLAoJU2V0dXBRdWVyeVNwYWNlUmVxdWlyZWRPbkRyaXZlQSwgU2V0dXBEZXN0cm95RGlza1NwYWNlTGlzdCBhbmQKCVNldHVwQWRkSW5zdGFsbFNlY3Rpb25Ub0Rpc2tTcGFjZUxpc3RBIGZvciBNREFDIGluc3RhbGwuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHVudXNlZCBsb2NrLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBzdHViIGZvciBTaWduYWxPYmplY3RBbmRXYWl0LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGQgc3R1YnMgZm9yIEVudW1Nb25pdG9yc1tBL1ddLgoKMjAwNC0wMy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IEVsaWFzIFJvc3MgPGdlbm1hbkBtYWlzb24tb3Rha3UubmV0PgoJQWRkZWQgMjQtYml0IGNvbG9yIGtleSBzdXBwb3J0IGluIERJQl9EaXJlY3REcmF3U3VyZmFjZV9CbHRGYXN0LgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW46IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFeHBsaWNpdGx5IHNwZWNpZnkgb3V0cHV0IGZpbGUgbmFtZXMgZm9yIGJpc29uLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogT19ESVJFQ1RPUlkgaXMgbm90IHJlYWxseSBuZWVkZWQuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3F1ZXJ5LmgsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS90b2tlbml6ZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRXh0ZW5kIHRoZSBwYXJzZXIgdG8gZGVhbCB3aXRoIHRoZSBDUkVBVEUgVEFCTEUgcXVlcnkuIFRoZSBxdWVyeQoJZG9lc24ndCBkbyBhbnl0aGluZyBhcyB5ZXQuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhpdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLAoJICBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLCBpbmNsdWRlL21zdmNydC93Y2hhci5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIFByZWZpeCBtYW55IG1vcmUgZnVuY3Rpb25zLCB0eXBlcywgc3RydWN0cywgZXRjLiB3aXRoIE1TVkNSVF8uCgktIENvcnJlY3QgcHJvdG90eXBlcyBmb3IgX21lbWNjcHkoKS9fbWVtaWNtcCgpLgoJLSAiZGVmaW5lIGJlZm9yZSB1c2UiIHJlb3JkZXJpbmcgaW4gZmlsZS5jLgoJLSBVc2UgdGhlIG5ldyBtYXRoLmgvZmxvYXQuaC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUZhYmlhbiBDZW5lZGVzZSA8Q2VuZWRlc2VAaW5kZWwuY2g+CglMZXQgVmFyUGFyc2VOdW1Gcm9tU3RyIGFuZCBWYXJOdW1Gcm9tUGFyc2VOdW0gY29wZSB3aXRoIGhleCBhbmQgb2N0CglzdHJpbmdzLiBOZWVkZWQgZnJvbSBWQiBjb252ZXJzaW9ucyBzdWNoIGFzIENMbmcsIENJbnQsIENCeXRlLi4uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVN1cHBvcnQgZm9yIFJCQlNfSElERVRJVExFIHN0eWxlLgoKCSogZGxscy9jYXJkcy9jYXJkcy5jLCBkbGxzL2NhcmRzL2NhcmRzLmg6CglTYW1pIE5vcGFuZW4gPHhhc214QG9wdG9ubGluZS5uZXQ+CgktIEVudW1lcmF0ZWQgZGlmZmVyZW50IGRyYXdpbmcgbW9kZXMuCgktIEltcGxlbWVudGVkIEhJTElURSwgUkVNT1ZFIGFuZCBHSE9TVCBkcmF3aW5nIG1vZGVzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgbmVlZGVkIGJ5IHNvbWUgV2luZG93cyBVcGRhdGUgaW5zdGFsbHMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNhc3QgdG8gY29ycmVjdGx5IGludGVycHJldCBzaWduZWQgY29vcmRpbmF0ZSB2YWx1ZXMuCgoJKiBkbGxzL21zaS8uY3ZzaWdub3JlLCBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvY29uZC55LAoJICBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3Rva2VuaXplLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdGFydCBpbXBsZW1lbnRhdGlvbiBvZiBNc2lFdmFsdWF0ZUNvbmRpdGlvbkEvVy4KCgkqIE1ha2UucnVsZXMuaW4sIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlLCBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0LAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcXVpcmUgYmlzb24gdG8gY29tcGlsZSBXaW5lLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcmVsYXkuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGRlYnVnIFNub29wRnJvbUluY2x1ZGUvU25vb3BGcm9tRXhjbHVkZSBvcHRpb25zLgoJLSBDb3JyZWN0IFRSQUNFIGRlYnVnIGNoYW5uZWwgdXNhZ2UgaW4gU05PT1BfU2V0dXBETEwuCgktIFJlZmFjdG9yIGNoZWNrX3JlbGF5X2Zyb21fcmVsYXkuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJX0RHVl9XSEVSRV9NQVggZmxhZyBpbiBNQ0lBVklfbWNpV2hlcmUuCglGaXhlZCBXSEVSRV9XSU5ET1cuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzogTmVlZCB0byBpbmNsdWRlIGNvbmZpZy5oLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBOdFF1ZXJ5RGlyZWN0b3J5RmlsZSAocGFydGx5IGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYwoJUG91ZWNoKS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQSBmZXcgdXBkYXRlcy4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRFBNSSBwcm9ncmFtcyBub3cgaGFuZGxlIHBlbmRpbmcgZXZlbnRzLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBhdmkgZmlsZXMgd2l0aCBub24gc3RhbmRhcmQgdmlkZW8gc3RyZWFtIG5hbWVzLgoKCSogZGxscy93aW5tbS9tY2kuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTUNJIHN0cmluZ3MgYXJlIGNhc2UgaW5zZW5zaXRpdmUuCglGaXhlZCBhIHJldHVybmVkIGVycm9yIHZhbHVlLgoKCSogZGxscy93aW5tbS9tbWlvLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCURlZmF1bHQgdG8gRk9VUkNDX0RPUyBpZiBubyBJT1Byb2MgZm91bmQuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgZGVhZGxvY2sgd2hlbiBzdG9wcGluZyBwbGF5YmFjay4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglERF9TVFJVQ1RfQ09QWV9CWVNJWkU6IERvIG5vdCBjbGVhciBtb3JlIHRoYXQgc3RydWN0IHNpemUuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVcmxDYW5vbmljYWxpemVXOiBSZW1vdmUgXHIgYW5kIFxuIGF0IHRoZSBlbmQgb2YgbHBzelVybENweSwgd2l0aCB0ZXN0CgljYXNlcy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglIVFRQX0h0dHBTZW5kUmVxdWVzdEE6IFJlbW92ZSBcciBhbmQgXG4gYXQgdGhlIGVuZCBvZgoJbHB3aHItPmxwc3pQYXRoLgoKMjAwNC0wMy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NhcmRzLy5jdnNpZ25vcmUsCgkgIGRsbHMvY2FyZHMvTWFrZWZpbGUuaW4sIGRsbHMvY2FyZHMvY2FyZHMuYywgZGxscy9jYXJkcy9jYXJkcy5oLAoJICBkbGxzL2NhcmRzL2NhcmRzLnJjLCBkbGxzL2NhcmRzL2NhcmRzLnNwZWMsIGRsbHMvY2FyZHMvdmVyc2lvbi5yYzoKCVNhbWkgTm9wYW5lbiA8eGFzbXhAb3B0b25saW5lLm5ldD4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgY2FyZHMuZGxsLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gc2V0dGluZyB0aGUgYnVkZHkgdG8gMCB0aGVuIHdlIG11c3Qgc3RpbGwgcmVzaXplIHRoZSB1cGRvd24KCWNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRG9jdW1lbnQgY29tcGxldGVuZXNzLgoJLSBGaW5pc2ggdG9vbHRpcCBzdXBwb3J0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IGFsbCBrZXkgb3BlcmF0aW9uczogbmV3LCBkZWxldGUsIHJlbmFtZS4KCUZpeCByZW5hbWUgY29tbWFuZCB0byBoYW5kbGUgYm90aCBrZXlzIGFuZCB2YWx1ZXMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6IEJvYXogSGFycm9zaCA8Ym9hekBoaXNob21lLm5ldD4KCVRpcHMgZm9yIHVzaW5nIG5hdGl2ZSBNUyBTUUwgT0RCQyBkcml2ZXJzLgoKCSogaW5jbHVkZS9tc2kuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBNc2lHZXRQcm9kdWN0UHJvcGVydHlBL1cuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ1NfSFJFRFJBVy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJTWVzc2FnZSBib3ggdG8gc3VnZ2VzdCB0aGUgdXNlciBub3QgcnVuIHdpbmUgYXMgcm9vdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFVuaWNvZGUgbm90aWZpY2F0aW9uIGRldGVjdGlvbiBzaG91bGQgYmUgbG9jYWwgdG8gZWFjaCB0b29sLgoJLSBJbXBsZW1lbnQgVFROX0dFVERJU1BJTkZPVyBub3RpZmljYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglFbXVsYXRpbmcgU1RJIGluc3RydWN0aW9uIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZXJlIGFyZSBwZW5kaW5nCglldmVudHMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlIHN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgaW50ZXJydXB0IGhhbmRsZXJzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvSXQucmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJRml4IHNtYWxsIHR5cG8uCgoJKiBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhbGwgbmVlZGVkIGFjY2VsZXJhdG9ycyB0byByZWdlZGl0LiBDbGVhbnVwcy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBTZXR1cENyZWF0ZURpc2tTcGFjZUxpc3Qgc3R1Yi4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglJbXByb3ZlIG1lc3NhZ2UgZ2l2ZW4gb24gaW1hZ2UgbWFwIGZhaWx1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSG9ub3VyIFdNX1NFVFJFRFJBVy4KCS0gRml4IGFsbCBjYWxscyBvZiBJbnZhbGlkYXRlUmVjdC4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJU3VwcG9ydCBEYXJ3aW4gIi5keWxpYiIuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkICJjYW4ndCBxdWVyeSBrZXkiIHRyYW5zbGF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglJbXBsZW1lbnRhdGlvbiBvZiBJQ3JlYXRlVHlwZUluZm8yX1NldEhlbHBDb250ZXh0LAoJSUNyZWF0ZVR5cGVJbmZvMl9TZXRUeXBlRGVzY0FsaWFzLCBJVHlwZUxpYjJfR2V0VHlwZUluZm9Db3VudCwKCUlUeXBlTGliMl9HZXRUeXBlSW5mb1R5cGUsIGFuZCBJVHlwZUxpYjJfSXNOYW1lLgoJRml4IHRvIElDcmVhdGVUeXBlSW5mbzJfU2V0VmFyTmFtZSB0byBmaXggYSBjYXNlIHdoZXJlIG11bHRpcGxlCglpbnN0YW5jZXMgb2YgdGhlIHNhbWUgbmFtZSBhcmUgdXNlZCBpbiB0aGUgc2FtZSB0eXBlbGliLgoKMjAwNC0wMy0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJSW1wbGVtZW50ZWQgSVR5cGVMaWIyX0dldFR5cGVJbmZvKCkgYW5kCglJVHlwZUxpYjJfR2V0VHlwZUluZm9PZkd1aWQoKS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJSW1wcm92ZSBob3cgdGhlIEdVSUQgaGFzaCBzeXN0ZW0gd29ya3MuIE1haW5seSBhIGNsZWFudXAgc28gdGhhdCB0aGUKCWhhc2ggbG9va3VwcyBjYW4gYmUgZG9uZSBmcm9tIG90aGVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglSZW5hbWUgc29tZSBvZiB0aGUgZmllbGRzIGluIHR5cGVsaWIuaCB0byBtYWtlcyBtb3JlIGV2b2NhdGl2ZSB0aGFuCgkndW5rMDAnLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gdGFrZSBhY2NvdW50IG9mIGhpZGRlbiBiYW5kcyBkdXJpbmcgbGF5b3V0LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUHJldmVudCBuZWdhdGl2ZSBjb29yZHMgZm9yIGxpbmUsIHR1cm4gb2ZmIHJlZHJhdyB3aGVuIGluaXRpYWxpemluZywKCWRvY3VtZW50IG9uZSBkaWZmZXJlbmNlIGluIG5hdGl2ZS9idWlsdGluIGJlaGF2aW9yLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEltcGxlbWVudCBUQl9MT0FESU1BR0VTLCBUQl9NQVBBQ0NFTEVSQVRPUntBLFd9LCBUQl9NQVJLQlVUVE9OIGFuZAoJICB1bmRvY3VtZW50ZWQgbWVzc2FnZSAweDQ2MC4KCS0gQmV0dGVyIGRlYnVnIG91dHB1dCBvZiB1bmRvY3VtZW50ZWQgbWVzc2FnZSAweDQ1RC4KCjIwMDQtMDMtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGJ1ZyB3aGVuIFBDTVdBVkVGT1JNQVQgaXMgcGFzc2VkIGludG8gYWNtU3RyZWFtT3Blbi4KCUZpeGVkIGJ1ZyB3aGVyZSBpbnRlcnBvbGF0aW9uIGlzIGRvbmUgd2l0aCBkYXRhIHBhc3QgZW5kIG9mIGJ1ZmZlci4gQQoJcHJvcGVyIGZpeCB3b3VsZCBiZSB0byBwcm9qZWN0IHRoZSBsYXN0IHNhbXBsZSBiYXNlZCBvbiB0aGUgcHJldmlvdXMKCXR3byBidXQgdGhhdCByZXF1aXJlcyBzaWduaWZpY2FudCBjaGFuZ2VzLgoJQWRkZWQgVFJBQ0UgYW5kIFdBUk4gd2hlcmUgbmVlZGVkLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZCBzdXBwb3J0IGZvciBhIHRvb2xiYXIgZ2xvYmFsIGlMaXN0R2FwLgoJLSBNYWtlIFRPT0xCQVJfQ2FsY1Rvb2xiYXIgYW5kIFRPT0xCQVJfRHJhd0J1dHRvbiBub3QgcmVseSBvbiAibWFnaWMKCSAgbnVtYmVycyIgYW5kIGNhbGN1bGF0ZSBzaXplcyBhbmQgcG9zaXRpb25zIG1vcmUgbGlrZSBuYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNhbGN1bGF0ZSB0aGUgcmVkdW5kYW50IGFuZCB1bnVzZWQgUkVCQVJfUk9XIHN0cnVjdHVyZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUZpeGVkIGltcGxpYiB0YXJnZXQgYnJva2VuIGJ5IHByZXZpb3VzIGNoYW5nZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L2Zsb2F0LmgsIGluY2x1ZGUvbXN2Y3J0L21hdGguaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJVGhlIGJlZ2lubmluZ3Mgb2YgbWF0aC5oIGFuZCBmbG9hdC5oLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaCwKCSAgb2JqZWN0cy9kaWIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVESUJTZWN0aW9uIHRha2VzIGEgY29uc3QgcG9pbnRlciB0byBCSVRNQVBJTkZPLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaDoKCVppbWxlciBBdHRpbGEgPGhpamFzenVAaGxmc2xpbnV4Lmh1PgoJQWRkIGRlbGV0ZSBrZXkgc3VwcG9ydC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgRmlsZVN5c3RlbSBvcHRpb24gZnJvbSB0aGUgZHJpdmUgY29uZmlndXJhdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRW5hYmxlIGV4YWN0IHBvc2l0aW9uIGNhbGN1bGF0aW9uIHdoZW4gaGFyZHdhcmUgc3VwcG9ydHMgaXQuCgoJKiBpbmNsdWRlL21tcmVnLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBXQVZFRk9STUFURVhURU5TSUJMRS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlYmFyIGJhbmQgaW5zZXJ0aW9uIGFuZCBub24tY2xpZW50IGNhbGN1bGF0aW9uIGluIHBhZ2VyIGNvbnRyb2wuCgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYywgdG9vbHMvd2luZS5pbmY6CglXZSBubyBsb25nZXIgbmVlZCB0byBwYXNzIC0tZGVidWdtc2cgLWFsbCB0byB3aW5lZGJnLgoKCSogZmlsZXMvZmlsZS5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHR5cG8gaW4gRE9TIGRldmljZSBjaGVjayBpbiBDcmVhdGVGaWxlVy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3BhdGguYywKCSAgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9yZWxheS5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3NlYy5jOgoJR2V0IHJpZCBvZiBudGRsbF9nZXRfcHJvY2Vzc19oZWFwIGFuZCBudGRsbF9nZXRfcHJvY2Vzc19wbXRzIGJ5IHVzaW5nCglzdGFuZGFyZCBBUElzIGluc3RlYWQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3RyYWNlLmM6CglDaGFuZ2VkIHRoZSBjcmVhdGVfZmlsZSBzZXJ2ZXIgcmVxdWVzdCB0byB0YWtlIE50Q3JlYXRlRmlsZSBmbGFncwoJaW5zdGVhZCBvZiBDcmVhdGVGaWxlVyBvbmVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNjcmlwdHMgc3ViLWNvbnRhaW5lcnMgbG9hZGluZwoJLSBiZXR0ZXIgc2VnbWVudHMgTG9hZCBhbmQgUGFyc2VEZXNjcmlwdG9yIGJlaGF2aW9ycwoKCSogZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglDaGFuZ2UgR2V0RmlsZVRpdGxlQS9XIHByb3RvdHlwZSB0byBtYXRjaCBQU0RLLgoKMjAwNC0wMy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy9vcHRpb25zLmM6CglHZXQgcmlkIG9mIHRoZSBXSU5FT1BUSU9OUyB2YXJpYWJsZSBhbmQgaW5zdGVhZCB1c2UgV0lORURFQlVHIHRvCglpbmhlcml0IGRlYnVnIG9wdGlvbnMuCglTdGFydCBkZXByZWNhdGluZyB0aGUgLS1kZWJ1Z21zZyBvcHRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUV4cGxpY2l0bHkgYXNrIGZvciBpbWFnZSBsaXN0IHdpdGggc2NyZWVuIGRlcHRoIGFzIElMQ19DT0xPUiBjYW4vd2lsbAoJbGltaXQgdGhlIGRlcHRoIHRvIDRicHAgbm93LgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBmaWxlcy9maWxlLmM6CglUaGUgT3BlbkNvbnNvbGVXIGluaGVyaXQgYXJndW1lbnQgaXMgYSBib29sZWFuIG5vdCBhCglTRUNVUklUWV9BVFRSSUJVVEVTIHBvaW50ZXIuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJ1aWxkIGFsbCBmaWxlIGNvbnNpc3RlbnRseSwgd2l0aG91dCBzaG9ydGN1dHMuCglEbyBub3QgcGFzcyB3aW5lYnVpbGQgZXNjYXBlZCBvcHRpb25zIHRvIHRoZSBjb21waWxlci4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW46IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgdGhlIExERkxBR1Mgd2hlbiBsaW5raW5nIGhscDJzZ21sLgoKCSogZGxscy9udGRsbC93Y3N0cmluZy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCV93dG97bCxpLGk2NH0gcGFyYW1ldGVycyBhcmUgY29uc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IHN1YmNsYXNzaW5nIHRvIHN1cHBvcnQgbmVzdGVkIG1lc3NhZ2VzLgoKCSogcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jOgoJV2Ugc2hvdWxkIG5vIGxvbmdlciBuZWVkIHRvIHVuc2V0IFRNUCBhbmQgVEVNUC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyB0cnVuY2F0ZXMgd2luZG93cyBjb29yZGluYXRlcyBhdCAxNiBiaXRzIHdoZW4gbW92aW5nIG9yCglyZXNpemluZyBhIHdpbmRvdy4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlOiBDaHJpc3RpYW4gQnJpdHogPGNicml0ekBnbXgubmV0PgoJQ29ycmVjdGlvbiBvZiBzbWFsbCBzcGVsbGluZyBtaXN0YWtlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJUmV3cml0ZSBkcmF3aW5nIGNvZGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZmlsZXMvZGlyZWN0b3J5LmM6CglEbyBub3QgcHV0IHRoZSBURU1QIGFuZCBUTVAgdmFyaWFibGVzIGludG8gdGhlIFVuaXggZW52aXJvbm1lbnQsIHVzZQoJV0lORVRFTVAgYW5kIFdJTkVUTVAgaW5zdGVhZCwgbGlrZSB3ZSBhbHJlYWR5IGRvIGZvciBQQVRILgoKCSogZGxscy9rZXJuZWwvZXhjZXB0LmM6CglSZW1vdmUgdGhlIFdJTkVERUJVRyB2YXJpYWJsZSBmcm9tIHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgZGVidWdnZXIKCXByb2Nlc3MuCgoJKiBkbGxzL250ZGxsL3RpbWUuYywgZmlsZXMvc21iLmM6IFBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOiBBZGRlZCBhIGNvdXBsZSBvZiBtaXNzaW5nIGNsb3NlIHRhZ3MuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IF9mdGltZSB3aXRoIFdpbjMyIEFQSXMuCgoJKiBjb250cm9scy9tZW51LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIHNldCB0aGUgbmV3IHRleHQgZXZlbiBpZiB0aGUgb2xkIHRleHQgc3RyaW5nIHdhcyBOVUxMLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglEbyBub3Qga2lsbCB0aGUgYW5pbWF0aW9uIHRocmVhZCB3aXRoIFRlcm1pbmF0ZVRocmVhZCwgbGV0IGl0IGZpbmlzaAoJcHJvcGVybHkuCglGaXhlZCBhIGNvdXBsZSBvZiByYWNlcyB3aXRoIHRoZSBhbmltYXRpb24gdGhyZWFkLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBEb2N1bWVudCBjb250cm9sIGNvbXBsZXRlbmVzcy4KCS0gUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCgktIEZpeCBURVhUIGRlZmluZS4KCS0gRml4IHRhYnMuCgktIFNtYWxsIG9wdGltaXNhdGlvbiBpbiBEcmF3SW5zZXJ0LgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvaGVhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGVhcCB0ZXN0cyBjbGVhbnVwLgoKCSogZGxscy9nZGkvZW5obWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L21hcHBpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgc29tZSB1bm5lY2Vzc2FyeSBkaXJlY3QgYWNjZXNzZXMgdG8gREMgaW50ZXJuYWxzIGZyb20gRU1GCglkcml2ZXIuCgoyMDA0LTAzLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwMzA5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTAzLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZmlsZXMvZGlyZWN0b3J5LmMsCgkgIGZpbGVzL2RyaXZlLmM6CglNb3ZlZCBhIG51bWJlciBvZiAxNi1iaXQgZnVuY3Rpb25zIHRvIGZpbGUxNi5jLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglEbyBub3QgY3JlYXRlIHN5bWxpbmtzIGZvciB0aGUgUEUgYnVpbGQgc2luY2UgdGhleSBjYW4gY29uZmxpY3Qgd2l0aAoJdGhlIGRpcmVjdG9yeSBuYW1lcy4KCgkqIGxpYnMvcG9ydC9zdGF0dmZzLmM6IENoZWNrIHRoYXQgd2UgaGF2ZSBzdGF0ZnMgYmVmb3JlIHVzaW5nIGl0LgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCUFkZGVkIGRlZmluaXRpb25zIGZvciBTX0lYVVNSLCBTX0lYR1JQIGFuZCBTX0lYT1RILgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jOiBjaG1vZCBpcyBtb3JlIHBvcnRhYmxlIHRoYW4gZmNobW9kLgoKCSogZmlsZXMvZG9zX2ZzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIElTX0VORF9PRl9OQU1FIGFuIGlubGluZSBmdW5jdGlvbi4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90YXNrLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9zbWIuYywKCSAgaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL2ZpbGUuaDoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBkZWZpbml0aW9ucyBmcm9tIGZpbGUuaC4KCUdvdCByaWQgb2YgZHJpdmUuaC4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglBU0NJSSBzdHJpbmcgY29tcGFyaXNvbnMgc2hvdWxkIG5vdCBkZXBlbmQgb24gdGhlIGxvY2FsZS4KCgkqIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEltcGxlbWVudCB0aGUgZHJhZyBsaXN0IGNvbnRyb2wuCgktIEZpeCB0YWJzIGluIExCSXRlbUZyb21QdC4KCgkqIHdpbmRvd3MvbWRpLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIGF0IGxlYXN0IHJlZnJlc2ggdGhlIHdpbmRvdyBtZW51IGluIENoaWxkQWN0aXZhdGUsIHNvIGZvcgoJbm93IHJlbW92ZSB0aGUgJ2lzIGFscmVhZHkgYWN0aXZhdGVkJyBvcHRpbWl6YXRpb24uCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9keGVycjgvLmN2c2lnbm9yZSwgZGxscy9keGVycjgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHhlcnI4L2R4ZXJyOC5jLCBkbGxzL2R4ZXJyOC9lcnJvcnMuYXdrLCBkbGxzL2R4ZXJyOC9lcnJvcnMuZGF0LAoJICBkbGxzL2R4ZXJyOC9lcnJvcnMuaCwgZGxscy9keGVycjgvbWFrZV9lcnJvcnMsCgkgIGRsbHMvZHhlcnI5Ly5jdnNpZ25vcmUsIGRsbHMvZHhlcnI5L01ha2VmaWxlLmluLAoJICBkbGxzL2R4ZXJyOS9keGVycjkuYywgZGxscy9keGVycjkvZXJyb3JzLmF3aywgZGxscy9keGVycjkvZXJyb3JzLmRhdCwKCSAgZGxscy9keGVycjkvZXJyb3JzLmgsIGRsbHMvZHhlcnI5L21ha2VfZXJyb3JzOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGR4ZXJyOCBhbmQgZHhlcnI5IGxpYnJhcmllcy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS9maWxlLmg6CglHZXQgcmlkIG9mIHRoZSBGaWxlc3lzdGVtIG9wdGlvbiBpbiB0aGUgZHJpdmUgY29uZmlnLCB0aGlzIHdhcyBtb3JlCgljb25mdXNpbmcgdGhhbiB1c2VmdWwuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBBZGRlZCBzdGF0dmZzIHByb3RvdHlwZS4KCgkqIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglCZXR0ZXIgZG1zY3JpcHQgbG9hZGluZyAobm93IHdlIGxvYWQgdGhlIHNjcmlwdCB2ZXJzaW9uLCBzY3JpcHQKCWxhbmd1YWdlIGlkZW50aWZpZXIgYW5kIHRoZSBzY3JpcHQgc291cmNlKS4KCgkqIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIEVNRiB0ZXN0IHN1aXRlLgoKCSogd2luZG93cy9tZGkuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgYWx3YXlzIGFkZHMgYSBzZXBhcmF0b3IgdG8gdGhlIGJvdHRvbSBvZiB0aGUgbmV3IHdpbmRvdwoJbWVudS4gVGhhbmtzIHRvIERtaXRyeSBUaW1vc2hrb3YgZm9yIGNvbmZpcm1pbmcgdGhpcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglDaGVjayBmb3IgTlVMTCBwb2ludGVycyByZXR1cm5lZCBieSBIZWFwQWxsb2MuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvZXhwYW5kL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnBjc3MvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3J1bmRsbDMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9zdGFydC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVib290L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lYnJvd3Nlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV2ZG0vTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbjoKCVRha2UgYWR2YW50YWdlIG9mIHRoZSBuZXcgd2luZWdjYyAtQiBzdXBwb3J0LgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJQWxsb3cgbXVsdGlwbGUgLUIgb3B0aW9ucy4KCURvIG5vdCBwYXNzIHRoZSAtQnRvb2xzL3dpbmVidWlsZCBtYWdpYyBvcHRpb24gdG8gdGhlIGNvbXBpbGVyIHRvCglhdm9pZCB3YXJuaW5ncy4KCVBhc3MgdG8gdGhlIGxpbmtlciBldmVuIHRoZSBsaWJyYXJpZXMgd2UgZGlkbid0IGZpbmQgaW4gdGhlIGxpYiBzZWFyY2gKCXBhdGgsIGluIGNhc2Ugd2UgYXJlIG5vdCB1c2luZyB0aGUgc3RhbmRhcmQgcGF0aHMuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhIHdpbmUgc3BlY2lmaWMgbW9kZS4gSWYgaXMgYWN0aXZhdGVkIGlmIHRoZSAtQiBwcmVmaXggZW5kcyB3aXRoCgkvdG9vbHMvd2luZWJ1aWxkLiBJZiB5b3UgaGFwcGVuIHRvIGhhdmUgc3VjaCBhIHByZWZpeCwgYnV0IHlvdSBkb24ndAoJd2FudCB0aGlzIGJlaGF2aW91ciwgc2ltcGx5IGFkZCBhIHRyYWlsaW5nICcvJy4gSW4gdGhpcyBzcGVjaWFsIG1vZGUsCglubyBkZWZhdWx0IFdpbjMyIERMTHMgYXJlIGxpbmtlZCBpbiwgd2UgZG9uJ3QgZm9yY2UgdGhlIHNob3J0IHdjaGFyX3QsCglhbmQgdGhlIHN0YW5kYXJkIGRpcnMgYXJlIG5vdCBzZWFyY2hlZC4KCgkqIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvd2lkbC5tYW46CglIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJQWRkZWQgYSBtYW4gcGFnZSBmb3Igd2lkbC4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBjcmFzaGVzLgoKCSogdG9vbHMvYmluMnJlcy5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWNjZXB0ICctdicgZmxhZy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgcmVnaXN0cnkgZW50cmllcyBmb3IgYW55IGZvbnRzIGZvdW5kIGJ5IGZvbnRjb25maWcgb3IgdGhhdCBhcmUgaW4KCXRoZSBGb250RGlycyBkaXJlY3Rvcmllcy4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgLUIgcHJlZml4IHN1cHBvcnQuIFNtYWxsIGNvbnNpc3RlbmN5IGNsZWFudXBzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYW1zdHJlYW0vLmN2c2lnbm9yZSwKCSAgZGxscy9hbXN0cmVhbS9NYWtlZmlsZS5pbiwgZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLAoJICBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLnNwZWMsIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW1fcHJpdmF0ZS5oLAoJICBkbGxzL2Ftc3RyZWFtL21haW4uYywgZGxscy9hbXN0cmVhbS9yZWdzdnIuYywKCSAgZGxscy9hbXN0cmVhbS92ZXJzaW9uLnJjLCBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2Ftc3RyZWFtLmgsIGluY2x1ZGUvYW1zdHJlYW0uaWRsLCBpbmNsdWRlL2F1c3RyZWFtLmgsCgkgIGluY2x1ZGUvYXVzdHJlYW0uaWRsLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGRzdHJlYW0uaCwKCSAgaW5jbHVkZS9kZHN0cmVhbS5pZGwsIGluY2x1ZGUvbW1zdHJlYW0uaCwgaW5jbHVkZS9tbXN0cmVhbS5pZGwsCgkgIHRvb2xzL3dpbmUuaW5mOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIGFtc3RyZWFtIGRsbCAoTXVsdGlNZWRpYSBTdHJlYW1zKSwgcGFydCBvZiBEaXJlY3QgU2hvdy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglSZWltcGxlbWVudGVkIEdldFZvbHVtZUluZm9ybWF0aW9uIGFuZCBTZXRWb2x1bWVMYWJlbDsgdm9sdW1lIGxhYmVsCglhbmQgc2VyaWFsIG51bWJlciBhcmUgbm93IHN0b3JlZCBpbiB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkIG9mIGluIHRoZQoJY29uZmlnIGZpbGUgKHBhcnRseSBiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VwcG9ydCBwcm9jZXNzb3JzIG1hZGUgdXAgb2YgZGlmZmVyZW50IGNvbW1hbmRzLgoJUmVuYW1lIHNvbWUgcHJvY2Vzc29yIGVudW1zIGZvciBjb25zaXN0ZW5jeS4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlOiBDaHJpc3RpYW4gQnJpdHogPGNicml0ekBnbXgubmV0PgoJQWRkZWQgR2VybWFuIHRyYW5zbGF0aW9uIG9mIHRoZSBSRUFETUUgZmlsZS4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUJvYmJ5IEJpbmdoYW0gPGJpbmdoYW0uMjFAb3N1LmVkdT4KCVN0dWIgRW51bURlc2t0b3BzVyBmb3Igbm93LgoJSW1wbGVtZW50IEVudW1EZXNrdG9wc0EgaW4gdGVybXMgb2YgRW51bURlc2t0b3BzVy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHRha2UgaW50byBhY2NvdW50IExDX0NUWVBFIGFuZCBMQ19NRVNTQUdFUyB3aGlsZSBkZXRlY3RpbmcgYQoJdXNlciBsb2NhbGUuCgoyMDA0LTAzLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZGliLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDYWxjdWxhdGUgdGhlIHNpemUgb2YgQklfQklURklFTERTIGRpYiBzZWN0aW9ucyB2aWEgdGhlIHdpZHRoIGFuZAoJaGVpZ2h0LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXREZWZhdWx0UHJpbnRlciBmcm9tIGFzY2lpIHRvIHVuaWNvZGUsIGFkZGVkCgl0ZXN0cyBmb3IgR2V0RGVmYXVsdFByaW50ZXJBLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnMvcG9ydC9zdGF0dmZzLmM6CglBZGRlZCBjaGVjayBmb3IgZl9uYW1lbGVuIGluIHN0cnVjdCBzdGF0ZnMuCgoJKiBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IG9uZSB1Z2x5IGJ1ZyAoaG9ycmlibGUgY2FzdCkgaW50byBkbXVzaWMgY29kZSB0byBnZXQgVW5yZWFsMgoJY3Jhc2hpbmcgbGF0ZXIgKHdoZW4gdHJ5aW5nIHRvIGxhdW5jaCBsb2FkZWQgc291bmQpIDopCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCURvbid0IGFsbG9jYXRlIHNwYWNlIGZvciB0ZXh0IHdoZW4gbk1heFRleHRSb3dzID0gMC4KCjIwMDQtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvc3RhdGZzLmMsCgkgIGxpYnMvcG9ydC9zdGF0dmZzLmM6CglVc2Ugc3RhdHZmcyBpbnN0ZWFkIG9mIHN0YXRmcywgYW5kIHByb3ZpZGUgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGluCglsaWJ3aW5lX3BvcnQgaWYgbmVjZXNzYXJ5LgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJRG8gbm90IHN0b3JlIHRoZSBVbml4IGZpbGUgZGVzY3JpcHRvciBpbiB0aGUgY2FjaGUgc3RydWN0dXJlLgoJUHJvdGVjdCB0aGUgZ2xvYmFsIGNhY2hlIHdpdGggYSBjcml0aWNhbCBzZWN0aW9uLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTdHViIGZvciBSZWdpc3RlckRldmljZU5vdGlmaWNhdGlvblcuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUhhbmRsZSBwbGF5aW5nIG9mIGZpbGVzIGNvbnRhaW5pbmcgYSAnKycgYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJTWVkaWFFdmVudFNpbmsgYW5kIElNZWRpYUV2ZW50RXggaW50ZXJmYWNlcy4KCjIwMDQtMDMtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2RldmljZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU9wZW4gYSByZWFsIGZpbGUgaGFuZGxlIGZvciBkcml2ZSBkZXZpY2VzLCBhbmQgZ2V0IHJpZCBvZiB0aGUgc2VydmVyCglkZXZpY2UgaGFja3MgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYyBQb3VlY2gpLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9nZGkvZW5obWZkcnYvYml0Ymx0LmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvcGFpbnRpbmcuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsCgkgIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9icnVzaC5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBpbmNsdWRlL2JpdG1hcC5oLAoJICBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLAoJICBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jOgoJTW92ZWQgbW9yZSBHREkgZGVmaW5pdGlvbnMgdG8gZ2RpX3ByaXZhdGUuaC4KCUdldCByaWQgb2YgYml0bWFwLmggYW5kIHBhbGV0dGUuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglFbnVtZXJhdGUgYWxsICJzaGVsbFw8dmVyYj5cY29tbWFuZCIgZW50cmllcyBpbiB0aGUgcmVnaXN0cnkgaW5zdGVhZAoJb2Ygc2VhcmNoaW5nIG9ubHkgZm9yICJzaGVsbFxvcGVuXGNvbW1hbmQiIGVudHJpZXMuCgoJKiBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgb2JqZWN0cy9kYy5jOgoJQ2hhbmdlZCB0aGUgQ3JlYXRlREMgZHJpdmVyIGVudHJ5IHBvaW50IHRvIHVzZSBhbiBIREMgaW5zdGVhZCBvZiBhIERDCglwb2ludGVyLgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJR2V0IHJpZCBvZiB0aGUgWDExRFJWX0RDX0Z1bmNzIGhhY2suCglSZW1vdmVkIGEgY291cGxlIG9mIHVudXNlZCBiaXRtYXAgZnVuY3Rpb25zLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2VudW1maWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSUZpbHRlckdyYXBoSW1wbF9FbnVtRmlsdGVycyBhbmQgSUVudW1GaWx0ZXJzIGludGVyZmFjZS4KCVJlbmFtZWQgY29uc3RydWN0b3Igb2YgSUVudW1SZWdGaWx0ZXJzIGludGVyZmFjZS4KCVNtYWxsIGZpeCBpbiBJRmlsdGVyTWFwcGVyX0VudW1NYXRjaGluZ0ZpbHRlcnMuCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6IEplc3NlIEFsbGVuIDx1aF9qYUBnbXgubmV0PgoJQWRkZWQgSW1tQXNzb2NpYXRlQ29udGV4dEV4IHN0dWIuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByZXNlcnZlIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBmaWxlcyBhbmQgbGlicmFyaWVzLiBXZSBkbyBzbyBieQoJbWFpbnRhaW5pbmcgYSB1bmlxdWUgbGlzdCBvZiBmaWxlcyBhbmQgbGliLCBlYWNoIG1hcmtlZCB3aXRoIHRoZQoJYXBwcm9wcmlhdGUgbWV0YWRhdGEuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jOgoJUGFzcyB0aGUgZ2RpRm9udCBvYmplY3QgdG8gdGhlIFNlbGVjdEZvbnQgZHJpdmVyIGVudHJ5IHBvaW50IHNvIHRoYXQKCXdlIGRvbid0IG5lZWQgdG8gbG9vayBpbnRvIHRoZSBEQyBzdHJ1Y3R1cmUgZm9yIGl0LgoKCSogZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglBdm9pZCBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIHhmb3JtV29ybGQyVnBvcnQgREMgZmllbGQuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi90ZXh0LmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jLAoJICBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgb2JqZWN0cy90ZXh0LmM6CglQYXNzIHRoZSBicmVha0V4dHJhIHZhbHVlIGluIHRoZSBFeHRUZXh0T3V0IGRyaXZlciBjYWxsLCBzaW5jZSB0aGVyZQoJaXMgbm8gZnVuY3Rpb24gdG8gcmV0cmlldmUgaXQgZnJvbSB0aGUgSERDLgoKCSogY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgd2luZG93cy9zeXNwYXJhbXMuYzoKCUp1c3RpbiBDaGV2cmllciA8YnVybmVyMUBob3RtYWlsLmNvbT4KCU1vdmUgaW1wbGVtZW50YXRpb24gb2YgU3lzUGFyYW1ldGVyc0luZm8gZnJvbSBBc2NpaSB0byBVbmljb2RlLgoKMjAwNC0wMy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQXZvaWQgc29tZSByZWR1bmRhbnQgbGlicmFyaWVzIG9uIHRoZSB3aW5lZ2NjIGNvbW1hbmQgbGluZS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJUHV0IHRoZSAuc3BlYy5vIGZpbGUgZmlyc3QgYW5kIHRoZSBzbyBsaWJyYXJpZXMgbGFzdCBvbiB0aGUgbGluawoJY29tbWFuZCBsaW5lLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglTbWFydGVyIGFsbG9jYXRpb24gYWxnb3JpdGhtIGZvciB0aGUgc3RyaW5nIGJ1ZmZlciwgdG8gYWxsb3cKCWRpc3BsYXlpbmcgbW9yZSBjaGFyYWN0ZXJzIGZvciBzdHJpbmdzIHdpdGhvdXQgdG9vIG1hbnkgZXNjYXBlcy4KCgkqIGRsbHMvd2luZXBzL2J1aWx0aW4uYywgZGxscy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2dkaS5oLAoJICBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jOgoJQ2hhbmdlZCB0aGUgR2V0VGV4dEV4dGVudFBvaW50IGdyYXBoaWNzIGRyaXZlciBlbnRyeSBwb2ludCB0byByZXR1cm4KCWRldmljZSBjb29yZGluYXRlcy4KCVJlbW92ZWQgbm90IHVzZWQgYnJlYWtDb3VudCBmaWVsZCBpbiB0aGUgREMgc3RydWN0dXJlLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW46CglSZW5hbWVkIHRoZSBzeW1ib2wgZm9yIHRoZSBjcHAgYmluYXJ5IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoCgljb25maWd1cmUgaW50ZXJuYWxzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3VybC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggVXJsQ2Fub25pY2FsaXplIGFuZCBhZGQgcmVncmVzc2lvbiB0ZXN0LgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvbid0IHRpZSB0aGUgc2NyaXB0IG5hbWUgdG8gdGhlIC5leGUuc28gbmFtZS4KCgkqIGRsbHMvdm5idC52eGQvTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTGluayB0byB3czJfMzIuCgoJKiBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBpbmNsdWRlL2dkaS5oLAoJICBvYmplY3RzL2RjLmM6CglJbXBsZW1lbnRlZCBHZXQvU2V0Qm91bmRzUmVjdCBiYXNlZCBvbiBhIHBhdGNoIGJ5IEtlbiBCZWxsZWF1LgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByZXZlbnQgY3Jhc2ggd2l0aCBpbnZhbGlkIGFyZ3MgaW4gYSBmZXcgVVJMIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggYnVmZmVyIGxlbmd0aCB1c2FnZSBmb3IgUmVnUXVlcnlWYWx1ZVcoKSBjYWxscyBhdCB2YXJpb3VzIHBsYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBTdXBwb3J0IGN1c3RvbSBjaGVjayBiYWNrZ3JvdW5kLgoJLSBSZWR1Y2UgbnVtYmVyIG9mIHBhcmFtZXRlcnMgbmVlZGVkIGZvciBEcmF3U3RyaW5nIGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS93aW5lL3JwY2ZjLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGQgbW9yZSBSUEMgZm9ybWF0IGNoYXJhY3RlcnMuCgktIEFkZCBzb21lIE5EUiBmdW5jdGlvbnMgYW5kIHN0cnVjdHVyZXMuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIENFWFRSQSBBTkQgQ1hYRVhUUkEgZmllbGRzIHNvIHdlIGNhbiBwYXNzIC1tbm8tY3lnd2luIHRvIHdpbmVnY2MKCWJ1dCBub3QgdG8gd3JjIHdoaWNoIGNob2tlcyBvbiBpdC4gQWRkIFJDRVhUUkEgZm9yIHN5bWV0cnkgYW5kIGZvciB0aGUKCXVzZXIuCglSZW1vdmUgVF9JTklUIGFuZCBnZXRfZGVmYXVsdF9pbml0KCkuIFRoZXNlIGFyZSBvYnNvbGV0ZSAodXNlZCB0bwoJc2VsZWN0IHRoZSBlbnRyeS1wb2ludCwgV2luTWFpbiBvciBtYWluKS4KCUlmIHRoZSBkaXJlY3RvcnkgY29udGFpbnMgaGVhZGVycywgdGhlbiBhZGQgJy4nIHRvIElOQ0xVREVfUEFUSC4KCVNwZWNpZnkgLW1ub2N5Z3dpbiBkdXJpbmcgdGhlIGxpbmsgc3RhZ2UgaWYgd2UgYXJlIHRvIGxpbmsgd2l0aCB0aGUKCW1zdmNydC4KCVRyYW5zZm9ybSBYWFhfQVBQTU9ERSBpbnRvIFhYWF9MREZMQUdTIGZvciBtb3JlIGZsZXhpYmlsaXR5LgoJQ29ycmVjdGx5IHBhc3MgJy1tY29uc29sZScgb3IgJy1td2luZG93cycgdG8gdGhlIGxpbmsgc3RhZ2UuCglSZW1vdmUgWFhYX0JBU0VNT0RVTEUsIFhYWF9TUEVDX1NSQ1MgYW5kIFNQRUNfU1JDUy4gVGhleSBhcmUKCW9ic29sZXRlLgoJQWRkIGltcGxpY2l0IGJ1aWxkIHJ1bGVzIGZvciAuYywgLmNwcCwgLmN4eCBmaWxlcyBzbyB0aGF0IG91ciBzZXR0aW5ncwoJKGUuZy4gSU5DTFVERV9QQVRIKSBhcmUgdXNlZC4KCUZpeCB0aGUgcnVsZSBmb3IgYnVpbGRpbmcgUkMgZmlsZXMgKGl0IHdhcyBpbnZhbGlkIGFuZCByZWplY3RlZCBieQoJbWFrZSkuIENvbnZlcnQgaXQgdG8gYW4gaW1wbGljaXQgcnVsZSBsaWtlIHRoZSBvdGhlcnMuCglBZGQgcnVsZXMgZm9yICdtYWtlIGNsZWFuJy4KCUFkZCB0aGUgbWlzc2luZyBydWxlcyBmb3IgcmVjdXJzaXZlIGNvbXBpbGF0aW9uLgoJUmVtb3ZlIG9ic29sZXRlIGVsZW1lbnRzIGZyb20gdGhlIGxpbmsgY29tbWFuZCAoTERETExGTEFHUywKCUFMTF9MSUJSQVJZX1BBVEgsIExJQlMpLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9ldmNvZGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIGV2Y29kZS5oIGluY2x1ZGUuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgbnVsbCBhbmQgZHVwbGljYXRlIG5hbWUgd2hlbiBhZGRpbmcgYSBmaWx0ZXIgdG8gdGhlCglmaWx0ZXJncmFwaC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUltcGxlbWVudGVkIEdldERheWxpZ2h0RmxhZy4KCjIwMDQtMDMtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9kZHJhdy90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2lwaGxwYXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91cmxtb24vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NvbnRyb2wvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvZXhwYW5kLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ3N2cjMyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JwY3NzLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3J1bmRsbDMyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3N0YXJ0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lYm9vdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lYnJvd3Nlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY2ZnLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVkYmcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVwYXRoLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV2ZG0vLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW52ZXIvLmN2c2lnbm9yZToKCVdlIG5vIGxvbmdlciB1c2UgdGhlIC5leGUuc3BlYy5jIGZpbGVzLgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2V4cGFuZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JwY3NzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ydW5kbGwzMi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvc3RhcnQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lYm9vdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWJyb3dzZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldmRtL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW46CglCdWlsZCBhbGwgdGhlIHByb2dyYW1zIHdpdGggd2luZWdjYy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglNYWtlIHN1cmUgdGV4dCBpc24ndCBjdXQgb2ZmIGJ5IHRoZSBjbG9zZSBidXR0b24uCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL3JzYWJhc2UvbWFpbi5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgYW5kIGNhc2UgZml4ZXMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSByZXNpemluZyBpZiBXU19USElDS0ZSQU1FIGlzIHNldC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzeW5jIHVwIHdpdGggbGF0ZXN0IE9wZW5HTCBzcGVjaWZpY2F0aW9ucwoJLSBzb21lIGZpeGVzIGluIG1ha2Vfb3BlbmdsIHRvIHN1cHBvcnQgdGhlIG5ldyB0eXBlcwoKCSogaW5jbHVkZS93aW5zb2NrMi5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZGVkIHByb3RvY29sIHR5cGUgY29uc3RhbnRzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglGaXhlZCB0eXBvIGluIHRlc3QgYXJndW1lbnRzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbjogQnVpbGQgdGhlIHRlc3RzIHdpdGggd2luZWdjYy4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgcGFzc2luZyBvcHRpb25zIHRvIHdpbmVidWlsZCB2aWEgLVdiLgoJR2VuZXJhdGUgb25seSB0aGUgbG9hZGVyIHNjcmlwdCB3aGVuIGdpdmVuIGp1c3QgdGhlIC5leGUuc28uCglBZGQgZnVuY3Rpb24gdG8gZGVsZXRlIGVsZW1lbnQgZnJvbSBhIHN0cmFycmF5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglXZSBuZWVkIHRvIHVzZSBBQ19DSEVDS19UT09MIHRvIGNoZWNrIGZvciBjcHAgaW4gb3JkZXIgdG8gc3VwcG9ydAoJY3Jvc3MtY29tcGlsYXRpb24gcHJvcGVybHkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2R4ZXJyOC5oLCBpbmNsdWRlL2R4ZXJyOS5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGR4ZXJyOC5oIGFuZCBkeGVycjkuaCBoZWFkZXIgZmlsZXMuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdHViIGZvciBSYXNHZXRFbnRyeVByb3BlcnRpZXNBLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6CglSZW1vdmVkIG9ic29sZXRlIGRlZmluaXRpb25zIGZyb20gZ2VuZXJhdGVkIG1ha2VmaWxlcy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJUmVtb3ZlZCBvYnNvbGV0ZSAtLWRsbCBvcHRpb24gZnJvbSBsb2FkZXIgc2NyaXB0LgoJQWRkZWQgc3VwcG9ydCBmb3IgV0lORUJVSUxEIGVudmlyb25tZW50IHZhcmlhYmxlLgoJRG9uJ3QgZ2VuZXJhdGUgdGhlIGxvYWRlciBzY3JpcHQgaWYgdGhlIG91dHB1dCBmaWxlIG5hbWUgZW5kcyBpbgoJLmV4ZS5zby4KCUZpeGVkIGhhbmRsaW5nIG9mIC1MIG9wdGlvbi4KCVN0YXRpYyBsaWJyYXJpZXMgaGF2ZSB0byBiZSBsaW5rZWQgaW4gYWZ0ZXIgb2JqZWN0IGZpbGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLnNwZWMsIGRsbHMvc2VjdXIzMi9zZWN1cjMyX3ByaXYuaCwKCSAgZGxscy9zZWN1cjMyL3RodW5rcy5jLCBkbGxzL3NlY3VyMzIvdGh1bmtzLmgsIGRsbHMvc2VjdXIzMi93cmFwcGVyLmMsCgkgIGluY2x1ZGUvd2luZXJyb3IuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIGEgc2VjdXIzMi5kbGwgdGhhdCBsb2FkcyBvdGhlciBTU1AgRExMcyBhbmQgZm9yd2FyZHMgY2FsbHMgdG8KCXRoZW0uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkanVzdCBhbGwgZGltZW5zaW9ucyB0byBtYXRjaCBuYXRpdmUuCglJbnZhbGlkYXRlIHdob2xlIHRhYiBhcmVhIHdoZW4gbXVsdGktbGluZS4KCUluIHZlcnRpY2FsIHRhYiBwbGFjZW1lbnQgZ28gZnJvbSB0b3AgdG8gYm90dG9tLgoJRml4IGFubm95aW5nIHZpc3VhbCBhcnRpZmFjdHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy91dGlscy5jLAoJICB0b29scy93aW5lZ2NjL3V0aWxzLmgsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluc3RydW1lbnQgd2luZWdjYyB0byB1c2UgdGhlIGNvbXBpbGVycyBhbmQgb3B0aW9ucyBkZXRlY3RlZCBhdAoJY29uZmlndXJlIHRpbWUuIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nL2Zvcm1hdHRpbmcgYSBzdHJpbmcgYXJyYXkKCWZyb20vdG8gYSBjaGFyIHN0cmluZy4gQWRkIG9wdGlvbiB0byBkaXNhYmxlIHNob3J0IHdjaGFyIHN1cHBvcnQgaW4KCXdpbmVnY2MuCgoJKiBmaWxlcy9kb3NfZnMuYzogUmVtb3ZlZCB1c2VsZXNzICNpZmRlZiBTSVpFT0ZfTE9OR19MT05HLgoKMjAwNC0wMy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgbG90IG9mIHRyYWNlcyB0byBtYWtlIGRlYnVnZ2luZyBhIGJpdCBlYXNpZXIuCgktIEFkZCBzdXBwb3J0IGZvciBNQ0lXTkRGX05PQVVUT1NJWkVNT1ZJRSwgTUNJV05ERl9OT0FVVE9TSVpFV0lORE9XCgkgIGFuZCBNQ0lXTkRGX05PRVJST1JETEcgZmxhZ3MgaW4gdGhlIE1DSVduZENsYXNzIGltcGxlbWVudGF0aW9uLgoJLSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgTUNJX1VQREFURSBpbiB0aGUgTUNJQVZJIGRyaXZlciBhbmQgdXNlIGl0IGluCgkgIHRoZSBNQ0lXbmRDbGFzcyBXTV9QQUlOVCBoYW5kbGVyLgoJLSBSZWltcGxlbWVudCBNQ0lfU1RPUCBjb21tYW5kIGluIHRoZSBNQ0lBVkkgZHJpdmVyIHZpYSBhbiBldmVudC4KCS0gQWRkIGEgdGVzdCBwcmV2ZW50aW5nIHRoZSBNQ0lBVkkgZHJpdmVyIHRvIGNyYXNoIGFmdGVyIE1DSV9TRUVLCgkgIGJlaGluZCBhbiBlbmQgb2Ygc3RyZWFtLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdm5idC52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92bmJ0LnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy92bmJ0LnZ4ZC92bmJ0LmMsCgkgIGRsbHMvdm5idC52eGQvdm5idC52eGQuc3BlYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gVGhlIHZpcnR1YWwgbmV0YmlvcyBkZXZpY2UgZHJpdmVyIGlzIHByb3Blcmx5IG5hbWVkIHZuYnQudnhkLCBub3QKCSAgdm5iLnZ4ZC4KCS0gTWFrZSBpdCBub3QgZGVwZW5kIG9uIFVOSVggaW5jbHVkZXMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRXhwb3J0IExDX0FMTCBiZWZvcmUgY2FsbGluZyBzZWQuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZW51bXJlZ2ZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJRmlsdGVyTWFwcGVyIGFuZCBJRW51bVJlZ0ZpbHRlcnMgaW50ZXJmYWNlcy4KCUZpeGVkIElGaWx0ZXJNYXBwZXIyX0VudW1NYXRjaGluZ0ZpbHRlcnMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbm5lY3QgdG8gd2luZWhxLm9yZyBieSBpdHMgbmFtZSByYXRoZXIgdGhhbiBieSBpdHMgSVAgYWRkci4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRnIucmMsIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9ObC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1J1LnJjLCBwcm9ncmFtcy93aW5lbWluZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CgktIGtleSBhY2NlbGVyYXRvcnMgZm9yICJOZXcgR2FtZSIgYW5kIGV4aXQKCS0gYXV0byBmbGFnIGFmdGVyIHN1Y2Nlc3NmdWwgZ2FtZSB0aG9zZSBlbnRyaWVzIHdoaWNoIHdlcmUgbm90IGZsYWdnZWQKCSAgYnkgcGxheWVyIGR1cmluZyB0aGUgZ2FtZSBoaW1zZWxmCgoJKiBpbmNsdWRlL29iamlkbC5pZGwsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRGVmaW5lIE1LU1lTX1VSTE1PTklLRVIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgbWlzc2luZyAnXFwnLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VibWl0IHJlc3VsdHMgdG8gV2luZUhRLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTdGV2ZSBMdXN0YmFkZXIgPHNsdXN0YmFkZXJAdmVyaXpvbi5uZXQ+CglIYW5kbGUgdGhlIGZpcnN0VmlzaWJsZSBpdGVtIGJlaW5nIE5VTEwgaW4KCVRSRUVWSUVXX1VwZGF0ZVNjcm9sbEJhcnMoKS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc3NwaS5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBzc3BpLmguCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kM2Q4L3NoYWRlci5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywKCSAgZGxscy9uZXRhcGkzMi9uYnQuYywgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL3dpbmVkb3MvcHBkZXYuYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBzZXJ2ZXIvY2hhbmdlLmM6CglQb3J0YWJpbGl0eSBmaXhlcyBmb3IgTFNCIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBOZXRwTmV0Ymlvc1N0YXR1c1RvQXBpU3RhdHVzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFRJTUVfR2V0QmlhcyBtYWtlIHN1cmUgdGhlcmUgaXMgYSBjYWNoZWQgdmFsdWUgZm9yIGRheWxpZ2h0IGFzCgl3ZWxsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCByZXR1cm4gdHlwZSBvZiBTeXNTdHJpbmdMZW4oKSBhbmQgU3lzU3RyaW5nQnl0ZUxlbigpLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVNldCBlcnJvciBjb2RlIEVSUk9SX0RERV9GQUlMIGlmIHRoZSBEREUgY29ubmVjdGlvbiBmYWlsZWQgaW4KCVNoZWxsRXhlY3V0ZSgpLgoKCSogZGxscy9yc2FiYXNlL01ha2VmaWxlLmluLCBkbGxzL3JzYWJhc2UvbWFpbi5jLCB0b29scy93aW5lLmluZjoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCU1ha2UgcnNhYmFzZS5kbGwgc2VsZi1yZWdpc3Rlci4KCgkqIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL2NlcnQuYywKCSAgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBjb3JyZWN0IHNvbWUgcHJvdG90eXBlcywgYWRkIHNvbWUgZGVmaW5lcwoJLSBzdHViIGEgY291cGxlIG1vcmUgZnVuY3Rpb25zCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2xtY29ucy5oLCBpbmNsdWRlL2xtc2VydmVyLmgsCgkgIGluY2x1ZGUvbG1zaGFyZS5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRGVjbGFyZSBhIGZldyBtb3JlIE5ldCBhcGlzIGFuZCBjb25zdGFudHMuCgoyMDA0LTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSB0aGUgJChkYXRhZGlyKS93aW5lIGRpcmVjdG9yeSBvbiB1bmluc3RhbGwuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaTogTm8gbG9uZ2VyIG5lZWRlZC4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9nZW5lcmljLnBwZCwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2dlbmVyaWMucHBkOgoJTW92ZWQgZ2VuZXJpYy5wcGQgdG8gZGxscy93aW5lcHMsIGFuZCBpbnN0YWxsIGl0IGluIGRhdGFkaXIuCgoJKiBkbGxzL21zd3NvY2svbXN3c29jay5jLCBkbGxzL21zd3NvY2svbXN3c29jay5zcGVjLAoJICBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL21zd3NvY2suaCwKCSAgaW5jbHVkZS93aW5zb2NrLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vcmUgc3R1YnMgYW5kIGJldHRlciBoZWFkZXJzIGZvciBtc3dzb2NrLmRsbC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFNITWVudUluZGV4RnJvbUlEIGFuZCBTSENvQ3JlYXRlSW5zdGFuY2VBQy4KCjIwMDQtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5laW5zdGFsbCwgd2luZWRlZmF1bHQucmVnOgoJVXNlIHRoZSBuZXcgLmluZiBzY3JpcHQgaW5zdGVhZCBvZiB3aW5lZGVmYXVsdC5yZWcuCglSZW1vdmVkIHNvbWUgb2Jzb2xldGUgY29kZS4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lLmluZjoKCUFkZGVkIHdpbmUuaW5mIHNldHVwYXBpIHNjcmlwdCB0byBzZXR1cCB0aGUgaW5pdGlhbCBXaW5lIHJlZ2lzdHJ5CgkoYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgTW9yZ2FuIGFuZCBCcmlhbiBWaW5jZW50KS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL21zcmxlMzIvbXNybGVfRGUucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9Fbi5yYywgZGxscy9tc3JsZTMyL21zcmxlX0VzLnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfRnIucmMsIGRsbHMvbXNybGUzMi9tc3JsZV9JdC5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX05sLnJjLCBkbGxzL21zcmxlMzIvbXNybGVfUHQucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9SdS5yYywgZGxscy9tc3JsZTMyL21zcmxlX1NpLnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfcHJpdmF0ZS5oLCBkbGxzL21zcmxlMzIvcnNyYy5yYzoKCU1vdmVkIG1zcmxlMzIgdG8gdGhlIHRvcC1sZXZlbCBkbGxzIGRpcmVjdG9yeS4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL21vZHVsZS5jLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveGltLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgaWNvbiBsZWFrLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCBwcmVwYXJlL3VucHJlcGFyZSBoZWFkZXIgcGFyYW1ldGVyIGNoZWNraW5nLgoJRml4IG1pZGlJbkdldERldkNhcHNXLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1pc3NpbmcgI2RlZmluZSBmb3IgRFNfSU5DT01QTEVURS4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMva2VybmVsL2FjdGN0eC5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgcHJvcGVyIGhlYWRlcnMgZm9yIHRoZSAqQWN0Q3R4KiBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbWFjcm8gREVGQVVMVF9VTlJFQUNIQUJMRS4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHR5cG8gaW4gYSBjb21tZW50LgoKCSogdG9vbHMvd2luZW1ha2VyLCB0b29scy93aW5lbWFrZXIubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdlbmVyYXRlIGEgc2ltcGxlIE1ha2VmaWxlIHRoYXQgdXNlcyB3aW5lZ2NjIHRvIGNvbXBpbGUuCglObyBsb25nZXIgZ2VuZXJhdGUgYSBjb25maWd1cmUgc2NyaXB0LCB0aGF0J3MgcHJvamVjdCBwb2xpY3kuCgoJKiBkbGxzL2NvbWNhdC9yZWdzdnIuYywgZGxscy9kbWltZS9yZWdzdnIuYywgZGxscy9kbXN0eWxlL3JlZ3N2ci5jLAoJICBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvcmVnc3ZyLmM6CglTeW5jIHNvbWUgb2YgdGhlIGRsbCByZWdpc3RyYXRpb25zIHdpdGggdGhlIGNvbnRlbnRzIG9mCgl3aW5lZGVmYXVsdC5yZWcuCgoJKiBkbGxzL3NldHVwYXBpL2luc3RhbGwuYzoKCVNQSU5TVF9VTlJFR1NWUiBtdXN0IHVzZSB0aGUgVW5yZWdpc3RlckRsbHMgc2VjdGlvbiwgbm90IHRoZQoJUmVnaXN0ZXJEbGxzIG9uZS4KCgkqIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLAoJICBpbmNsdWRlL3NldHVwYXBpLmg6CglJbXBsZW1lbnRlZCBJbnN0YWxsSGluZlNlY3Rpb24gKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQ2hyaXMgTW9yZ2FuKS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gUmVtb3ZlIGR1cGxpY2F0ZSBmcmVlLgoJLSBSZW1vdmUgZGVidWcgbWVzc2FnZSB0aGF0IGR1bXBzIGludmFsaWQgc3RyaW5nLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJVXBkYXRlIGNvbW1vbiBjb250cm9sIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIFJ0bCBmdW5jdGlvbnMuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBHZXRUaGVtZVRleHRNZXRyaWNzLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IGEgYmFkIHVzZSBvZiBIZWFwUmVhbGxvYy4KCS0gRml4IGVycm9yIHJldHVybiBjb2Rlcy4KCS0gSW1wcm92ZSB0cmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IE1hdHQgQ2hhcG1hbiA8bWF0dGhld2NAY3NlLnVuc3cuZWR1LmF1PgoJUkVCQVJfTGF5b3V0IHNob3VsZCByZXNwZWN0IHRoZSBtaW5pbXVtIHNpemUgb2YgYmFuZHMgZXZlbiB3aGVuCglSQkJTX0ZJWEVEU0laRSBpcyBub3Qgc2V0LgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIHNvbWUgaGV1cmlzdGljcyB0byBkZWNpZGUgd2hhdCB0eXBlIG9mIE1DSVdORE1fT1BFTiBtZXNzYWdlIHRvCgl1c2UuCgoJKiBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9zZXR1cGFwaS5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFJlZ2lzdGVyRGxscyBzZWN0aW9uIChwYXJ0bHkgYmFzZWQgb24gYSBwYXRjaCBieQoJQ2hyaXMgTW9yZ2FuKS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2FjaGUgdGhlIHJlc3VsdCBvZiBUSU1FX0dldEJpYXMgZm9yIHVwIHRvIDEgc2Vjb25kLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBNYXR0IENoYXBtYW4gPG1hdHRoZXdjQGNzZS51bnN3LmVkdS5hdT4KCVJFQkFSX1Nob3dCYW5kIG5lZWRzIHRvIGZvcmNlIGxheW91dCBvZiB0aGUgcmViYXIgYWZ0ZXIgYSBiYW5kIGlzCgloaWRkZW4vdW5oaWRkZW4uCgoJKiBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgTUNJQVZJIHdpbmRvdyBzdXBwb3J0IHRvIHVuaWNvZGUuCglBbGxvdyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgTUNJQVZJIGRyaXZlciBpbnN0YW5jZXMuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG5vIGxvbmdlciB1c2VkIHdpbmV3cmFwIHV0aWxpdHkuCgoyMDA0LTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLAoJICBkbGxzL21zbmV0MzIvbXNuZXRfbWFpbi5jLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYywKCSAgd2luZG93cy91c2VyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSB3aW4zMiBkZWJ1ZyBjaGFubmVsLCBtaXNjIGNsZWFudXAgb2YgZGVidWdnaW5nIGNvZGUuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEb2N1bWVudCBidWlsZGluZyB0ZXN0cyB3aXRoIE1pbkdXLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglVc2UgdGltZSByYXRoZXIgdGhhbiB3aW4zMiBkZWJ1ZyBjaGFubmVsIGZvciBrZXJuZWwgdGltZSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2RjZS5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjb21tZW50IHRvIGV4cGxhaW4gdGhlIExvY2tXaW5kb3dVcGRhdGUgc2l0dWF0aW9uLgoKCSogaW5jbHVkZS9kaWdpdGFsdi5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIEEvVyBtYXBwaW5nIGZvciBNQ0lfREdWX1dJTkRPV19QQVJNUy4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGb3Igc3RhdGljIGxpYnMgKC5hKSB3ZSBuZWVkIHRvIHBhc3MgdGhlIGFjdHVhbCBmaWxlbmFtZSB0byB3aW5lYnVpbGQsCglub3QgYSAtbCBzd2l0Y2guIERvIG5vdCByZW1vdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIHRvIGdldCB0byB0aGUgYmFzZQoJbmFtZSBpZiBpdCdzIG5vdCAuZXhlIG9yIC5leGUuc28uIExpbmsgc2hlbGwzMiBieSBkZWZhdWx0IGZvciBHVUkKCXByb2dyYW1zLiBGaXggcGFyc2luZyBvZiBvcHRpb25zIHdpdGggYXJndW1lbnRzLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBTZWFuIFlvdW5nIDxzZWFuQG1lc3Mub3JnPgoJQ2hlY2sgdVNpemUgcGFyYW1ldGVyIGluIHdhdmVPdXRVbnByZXBhcmVIZWFkZXIgYW5kCgl3YXZlT3V0UHJlcGFyZUhlYWRlci4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRmFiaWFuIENlbmVkZXNlIDxDZW5lZGVzZUBpbmRlbC5jaD4KCVZhclJvdW5kIGltcGxlbWVudGF0aW9uICh3aXRob3V0IHR5cGUgREVDSU1BTCB5ZXQpIHdpdGggdGVzdCBmdW5jdGlvbi4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBUSU1FX0dldEJpYXMgcmF0aGVyIHRoYW4gUnRsUXVlcnlUaW1lWm9uZUluZm8gaWYgd2UncmUgb25seQoJaW50ZXJlc3RlZCBpbiB0aGUgYmlhcyAtIGl0J3MgZmFzdGVyLgoKMjAwNC0wMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy93aW5lcHMvaW5pdC5jOgoJRml4ZWQgY2FsbGVycyBvZiBHZXRMb2NhbGVJbmZvVyB0byB1c2UgdGhlIGNvcnJlY3QgYnVmZmVyIHNpemUuCgoJKiBkbGxzL2tlcm5lbC92eGQuYzoKCVJldHVybiB0aGUgcmlnaHQgZXJyb3IgY29kZSBmb3Igbm9uLWV4aXN0ZW50IFZ4RCBtb2R1bGVzLgoKCSogZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLAoJICBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9yZWdzdnIuYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLCBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsCgkgIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9kbXVzaWNpLmg6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCUFkZGVkIG5hbWUgcmVzb2x2aW5nIGZvciBDTFNJRHMsIElJRHMsIEdVSURzIGFuZCByZXR1cm4gY29kZXMuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGFuZGxlIHByb3BlciBzdWJzdHJhY3Rpb24gb2YgdW5zaWduZWQgbnVtYmVycy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgVk1NIFZ4RC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3BlZWQgdXAgUnRsVGltZUZpZWxkc1RvVGltZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6IE1hdHQgQ2hhcG1hbiA8bWF0dGhld2NAY3NlLnVuc3cuZWR1LmF1PgoJRml4IGR1bXBpbmcgb2YgVW5pY29kZSBzdHJpbmdzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWF0dCBDaGFwbWFuIDxtYXR0aGV3Y0Bjc2UudW5zdy5lZHUuYXU+CglGaXggYSByZWVudHJhbmN5IGlzc3VlIGluIHRoZSBwcm9wZXJ0eSBzaGVldCBpbXBsZW1lbnRhdGlvbiBieSBub3QKCWNhY2hpbmcgYSBwb2ludGVyIHRoYXQgY2FuIGNoYW5nZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOiBGYWJpYW4gQ2VuZWRlc2UgPENlbmVkZXNlQGluZGVsLmNoPgoJTm8gc2lnbiBleHRlbnNpb24gZm9yIG5lZ2F0aXZlIHZhbHVlcy4KCjIwMDQtMDItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jOgoJVHdlYWsgdGhlIGxvYWQgb3JkZXIgYWxnb3JpdGhtIGEgYml0IHRvIGJldHRlciByZWZsZWN0IHRoZSB1c2VyJ3MKCWludGVudGlvbiwgYnkgdGFraW5nIGludG8gYWNjb3VudCBub24td2lsZGNhcmQgbW9kdWxlIHNwZWNpZmljYXRpb25zCglmb3IgYWxsIGRpcmVjdG9yaWVzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCVJldHVybiByaWdodCBhd2F5IGZyb20gaW1wb3J0X2RsbCB3aGVuIGEgZGxsIGlzIG5vdCBmb3VuZCB0byBhdm9pZAoJZGlzcGxheWluZyBtYW55IHVzZWxlc3MgZnVuY3Rpb24gZXJyb3JzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNb3JlIHJvYnVzdCBmaXggZm9yIHRoZSBhcnRzYy1jb25maWcgYnJlYWthZ2UuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2VsZi5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJVXNlIFNITl9VTkRFRiBpbnN0ZWFkIG9mIFNUTl9VTkRFRiB0byBzcGVjaWZ5IHVuZGVmaW5lZCBzZWN0aW9uCglpbmRleC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlcGxhY2VkIHRoZSB0aW1lciBhbmQgaXRzIGNhbGxiYWNrIGJ5IGEgdGhyZWFkIGZvciByZWNlaXZpbmcgbWlkaSBpbgoJZXZlbnRzLgoJSGFuZGxlZCBEUlZNX0VYSVQgaW4gT1NTX21pZE1lc3NhZ2UuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZXQgU0FfUkVTVEFSVCBzaWdhY3Rpb24gZmxhZyBmb3Igb3RoZXIgQlNEcyBiZXNpZGUgTmV0QlNELgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ICdlbXB0eScgZ2x5cGhzCgktIGltcGxlbWVudCBwcm9wZXIgYml0bWFwIGNvb3JkaW5hdGVzCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglSZW1vdmVkIHNvbWUgb2YgdGhlIERPUyBkZXZpY2UgaGFja3MgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYwoJUG91ZWNoKS4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnQgSTY0IG1vZGlmaWVyLCBtb3ZlIFdBUk4gdG8gVFJBQ0UuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUNoYW5nZWQgaGFuZGxpbmcgb2Ygc3BlY2lhbCBET1MgZGV2aWNlcyB0byB1c2UgcmVhbCBmaWxlIGhhbmRsZXMKCWluc3RlYWQgb2YgdGhlIHNlcnZlciBkZXZpY2Ugb2JqZWN0LgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJIFBhc3MgaW5oZXJpdCBoYW5kbGUgZmxhZyBwcm9wZXJseSBmb3IgQ3JlYXRlTmFtZWRQaXBlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJSXRhbGlhbiB1cGRhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFjY2VwdCBudWxsIG1vZHVsZSBpbnN0YW5jZSwgTG9hZHN0cmluZyBjYW4gaGFuZGxlIGl0LgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCB3YXZlSW5HZXREZXZDYXBzVy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3BlZWQgdXAgUnRsVGltZVRvVGltZUZpZWxkcy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGFwcCBkZXNjcmlwdGlvbiBmaWVsZCB0byB1bmljb2RlIGFuZCB1c2UgQ1BfVU5JWENQIHdoZW4KCXByaW50aW5nIGl0IG9uIHRoZSBjb25zb2xlLgoKCSogdG9vbHMvd2luZWdjYy8uY3ZzaWdub3JlLCB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2Ugd2luZXdyYXAgaW50byB3aW5lZ2NjLiBNYW55IGNsZWFudXBzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9lbGYuYywgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCBFTEYgbW9kdWxlcycgc2l6ZSBpbmZvcm1hdGlvbgoJLSBmaXhlZCBjb250YWluZXJzJyB0ZXN0cwoKCSogZGxscy93aW5lZG9zL3BwZGV2LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJT19wcF9vdXRwOiBBbGxvdyB0byBzd2l0Y2ggZGlyZWN0aW9uIG9mIHRoZSBwcmludGVyIHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggYSByZWdyZXNzaW9uIGluIEltYWdlTGlzdF9DcmVhdGUgd2hlbiBjcmVhdGluZyBhIGRpYnNlY3Rpb24uCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXNlIHRoZSBOVUxMIG1hdHJpeCBpbnN0ZWFkIG9mIGdpdmluZyBhIGJhZGx5IGZpbGxlZCBpZGVudGl0eSBtYXRyaXguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRmlsbCB1bnVzZWQgZ2FwIHRvIGZpeCBsb29rdXBzIHBhc3QgQ1NJRExfQ09OTkVDVElPTlMuCgoyMDA0LTAyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Z4ZC5jLAoJICBkbGxzL3ZtbS52eGQvLmN2c2lnbm9yZSwgZGxscy92bW0udnhkL01ha2VmaWxlLmluLAoJICBkbGxzL3ZtbS52eGQvdm1tLmMsIGRsbHMvdm1tLnZ4ZC92bW0udnhkLnNwZWMsCgkgIGRsbHMvdndpbjMyLnZ4ZC92d2luMzIuYywgZGxscy92d2luMzIudnhkL3Z3aW4zMi52eGQuc3BlYzoKCUFsbG93IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVnhEQ2FsbCBlbnRyeSBwb2ludHMgdG8gYmUgbW92ZWQgdG8KCXNlcGFyYXRlIFZ4RCBkbGxzLgoJTW92ZWQgVk1NIGNvZGUgdG8gYSBzZXBhcmF0ZSBkbGwsIGFuZCByZW1vdmVkIHRoZSByZWdpc3RyeSBjYWxscyB0bwoJZ2V0IHJpZCBvZiB0aGUgY29kZSBkdXBsaWNhdGlvbiB3aXRoIGFkdmFwaTMyLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJUmVwb3J0IHRoZSBlcnJvciBzZW50IGJ5IHRoZSBDR0kgc2NyaXB0LgoJTWFrZSBwcm9ncmVzcyBiYXIgc2VsZWN0aW9uIGV4cGxpY2l0LgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIHdpbmVnY2MgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdpbmcgd2l0aCB3aW5ld3JhcC4KCVdlIG5vdyBoYXZlIGNvbXByZWhlbnNpdmUgKGFuZCBjb3JyZWN0KSBvcHRpb25zIHBhcnNpbmcuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTSERPQ1ZXX0RsbEdldFZlcnNpb24uIEl0IHJldHVybnMgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMKCXRoZSBXaW45OC9JRTYgaW1wbGVtZW50YXRpb24gZG9lcy4KCjIwMDQtMDItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmMsIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguaCwKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZ2x1dDMyL2dsdXQuYywKCSAgZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9tc3ZpZGMzMi9tc3ZpZGVvMS5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3gxMWRydi93aW50YWIuYywgbG9hZGVyL2dsaWJjLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvY29tY3RsMzIvc3RyaW5nLmM6CglSZW1vdmVkIGEgY291cGxlIG9mIHVubmVlZGVkIGhlbHBlciBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdHlwbyBpbnRyb2R1Y2VkIGR1cmluZyB0aGUgcGF0aCBzZWFyY2ggcmVvcmdhbml6YXRvbi4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJVXNlIGRpYnNlY3Rpb25zIGZvciB0aGUgaW1hZ2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiBUQlNUWUxFX0VYX0hJREVDTElQUEVEQlVUVE9OUyBpcyBzZXQgdGhlbiBpbnZhbGlkYXRlIHRoZSBhcmVhIHRoYXQKCWNoYW5nZXMgaW4gYSByZXNpemUuCglEb24ndCBjYWxsIFNXUCB1bmxlc3Mgd2UncmUgYWN0dWFsbHkgYWRqdXN0aW5nIGFueXRoaW5nLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBZGQgYSBmcmVlKCkgY2FsbCBhdCB0aGUgZW5kLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHJlbmRlcmluZyBzeW50aGVzaXplZCBCSVRNQVAgYW5kIERJQiBmb3JtYXRzLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2RldmljZS5jLCBkbGxzL2tlcm5lbC92eGQuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCUNyZWF0ZSByZWFsIGZpbGUgaGFuZGxlcyBmb3IgVnhEcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzZXJ2ZXIgZGV2aWNlCglvYmplY3QgaGFjayAocGFydGx5IGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYyBQb3VlY2gpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL3N0cmluZy5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBJbXBsZW1lbnQgc3RyaW5nIGZ1bmN0aW9ucyBpbiBjb21jdGwzMi4KCS0gVXNlIENvbXBhcmVTdHJpbmcgaW4gc2hsd2FwaSB3aGVyZXZlciBwb3NzaWJsZSBpbnN0ZWFkIG9mIHVnbHkKCSAgaGVscGVycy4KCgkqIGRsbHMvdXNlci93aW5wcm9jLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IHN0ZXAgaW4gdXNpbmcgZmFzdGVyIGFwcHJvYWNoIGZvciBBPC0+VyBtZXNzYWdlIG1hcHBpbmcuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIERFVkVMT1BFUlMtSElOVFMgd2l0aCB0aGUgbmV3bHkgYWRkZWQgVnhEcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUxWTl9CRUdJTlJEUkFHIGlzIGltcGxlbWVudGVkIG5vdy4gRml4IHR5cG8uCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3V4dGhlbWUvbWV0cmljLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwgZGxscy91eHRoZW1lL3Byb3BlcnR5LmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGVkIHN5c3RlbSBtZXRyaWMgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaWZzbWdyLnZ4ZC8uY3ZzaWdub3JlLCBkbGxzL2lmc21nci52eGQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaWZzbWdyLnZ4ZC9pZnNtZ3IuYywgZGxscy9pZnNtZ3IudnhkL2lmc21nci52eGQuc3BlYywKCSAgZGxscy9rZXJuZWwvZGV2aWNlLmMsIGRsbHMvbW1kZXZsZHIudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvbW1kZXZsZHIudnhkL01ha2VmaWxlLmluLCBkbGxzL21tZGV2bGRyLnZ4ZC9tbWRldmxkci5jLAoJICBkbGxzL21tZGV2bGRyLnZ4ZC9tbWRldmxkci52eGQuc3BlYywgZGxscy9tb25vZGViZy52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy9tb25vZGViZy52eGQvTWFrZWZpbGUuaW4sIGRsbHMvbW9ub2RlYmcudnhkL21vbm9kZWJnLmMsCgkgIGRsbHMvbW9ub2RlYmcudnhkL21vbm9kZWJnLnZ4ZC5zcGVjLCBkbGxzL3ZkaGNwLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3ZkaGNwLnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy92ZGhjcC52eGQvdmRoY3AuYywKCSAgZGxscy92ZGhjcC52eGQvdmRoY3AudnhkLnNwZWMsIGRsbHMvdm5ldGJpb3MudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdm5ldGJpb3MudnhkL01ha2VmaWxlLmluLCBkbGxzL3ZuZXRiaW9zLnZ4ZC92bmV0Ymlvcy5jLAoJICBkbGxzL3ZuZXRiaW9zLnZ4ZC92bmV0Ymlvcy52eGQuc3BlYywgZGxscy92dGRhcGkudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdnRkYXBpLnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy92dGRhcGkudnhkL3Z0ZGFwaS5jLAoJICBkbGxzL3Z0ZGFwaS52eGQvdnRkYXBpLnZ4ZC5zcGVjLCBkbGxzL3Z3aW4zMi52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92d2luMzIudnhkL01ha2VmaWxlLmluLCBkbGxzL3Z3aW4zMi52eGQvdndpbjMyLmMsCgkgIGRsbHMvdndpbjMyLnZ4ZC92d2luMzIudnhkLnNwZWM6CglBZGRlZCBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgVnhEcyBhcyBzZXBhcmF0ZSBkbGxzIGFuZCBsb2FkaW5nIHRoZW0KCW9uIGRlbWFuZC4KCU1vdmVkIGFsbCB0aGUgRGV2aWNlSW9Db250cm9sIGNvZGUgaW50byB0aGUgcmVzcGVjdGl2ZSBWeEQgZGxscy4KCgkqIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOiBCcmlhbiBWaW5jZW50IDx2aW5uQHRoZXNoZWxsLmNvbT4KCVJlbW92ZSByZWZlcmVuY2UgdG8gQ2FsbWlyYSBmaWxlIG1hbmFnZXIsIGFkZCBiaXQgYWJvdXQgV2luZWZpbGUuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBub24tc3RhbmRhcmQgY29kZSBpbiByZXBvcnQoKS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJR2V0IHRoZSByZWN0YW5nbGUgZnJvbSB0aGUgZGMgYW5kIHVuY29tbWVudCBQbGF5RW5oTWV0YUZpbGUgaW4KCUdldFdpbk1ldGFGaWxlQml0cy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFNldElDTVByb2ZpbGVBKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBMSVNUVklFV19BcHByb3hpbWF0ZVZpZXdSZWN0IGZvciBMVlNfUkVQT1JULgoKCSogZGxscy94MTFkcnYvcGFsZXR0ZS5jOiBGaW5sbyBCb3lkZSA8ZmluQG5lZXBzLm5ldD4KCUZpeCBmb3IgZGVhZGxvY2sgd2hlbiB1c2luZyBwcml2YXRlIGNvbG9ybWFwLgoKMjAwNC0wMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21ha2V0ZXN0LCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0Lmg6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIGNvbW1hbmQgbGluZSBoYW5kbGluZyAoR1VJIHdpbGwgZm9sbG93KQoJLSBzdHJpcCAuZXhlWy5zb10gZnJvbSB0ZXN0IG5hbWVzCgktIHZlcnNpb24gMiBvdXRwdXQKCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZXBsYWNlZCB0aGUgdGltZXIgYW5kIGl0cyBjYWxsYmFjayBieSBhIHRocmVhZCBmb3IgcmVjZWl2aW5nIG1pZGkgaW4KCWV2ZW50cy4KCUZpeGVkIHRpbWUgb2YgTUlNX0xPTkdEQVRBIG5vdGlmaWNhdGlvbi4KCUhhbmRsZWQgRFJWTV9FWElUIGluIEFMU0FfbWlkTWVzc2FnZS4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVRvIHJlZHVjZSBkZWJ1Z2dpbmcgbm9pc2UsIG1ha2UgSU1hbGxvYzMyL0lNYWxsb2NTcHkgaW1wbGVtZW50YXRpb25zCglvdXRwdXQgdG8gdGhlIG5ldyBvbGVtYWxsb2MgZGVidWcgY2hhbm5lbC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvc2NhbmYuYywgZGxscy9tc3ZjcnQvc2NhbmYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCUZpeGVkIHZhcmFyZ3MgaGFuZGxpbmcgaW4gdGhlIHNjYW5mIGZ1bmN0aW9ucyAoc3BvdHRlZCBieSBFcmljCglQb3VlY2gpLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRGVmaW5lIFNQSV8qIHZhbHVlcyBpbnRyb2R1Y2VkIGluIFhQLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUFkdmFuY2UgaW5kZXggYXMgd2Ugc2V0IHRoZSBhdG9tIHZhbHVlcy4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglUaGUgcHJlc2VuY2Ugb2YgRkdldENvbXBvbmVudFBhdGggaXMgdXNlZCB0byBjaGVjayBpZiBtYXBpMzIuZGxsIGlzCgl0aGUgT3V0bG9vayB2ZXJzaW9uIG9yIG5vdC4gSXQncyBjb21tb24gdG8gR2V0UHJvY0FkZHJlc3MgZm9yIGl0LCBzbwoJbGV0J3Mgbm90IGV4cG9ydCBpdCBhcyBvdGhlcndpc2UgYXBwcyBtYXkgY2FsbCBpdC4KCjIwMDQtMDItMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAubWFuOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZGVkIHdpbmVkdW1wIG1hbiBwYWdlLCBoZWF2aWx5IGJhc2VkIG9uIHRoZSBSRUFETUUgZmlsZS4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0b3B3YXRjaC5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3R1YiB0aGUgc3RvcHdhdGNoIEFQSS4KCUltcGxlbWVudCBEb2VzU3RyaW5nUm91bmRUcmlwVyxAMzcxLTMsQDM5Mi4KCU1vdmUgYSBjb3VwbGUgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpbnRvIHN0cmluZy5jCgoJKiBkbGxzL3NldHVwYXBpL3N0dWJzLmM6IEZpeGVkIGEgdHJhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZhYmlhbiBDZW5lZGVzZSA8Q2VuZWRlc2VAaW5kZWwuY2g+CglMaXN0VmlldyBzaG91bGQgYmVoYXZlIGluIE9XTkVSRFJBVyBhcyBpbiBGVUxMUk9XU0VMRUNULiBUaGlzIGFsbG93cwoJdG8gc2VsZWN0IGNlbGxzIG5vdCBpbiB0aGUgZmlyc3QgY29sdW1uIGluIFJFUE9SVCBtb2RlIHdpdGggT1dORVJEUkFXCglzdHlsZSBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZvcndhcmQgc29tZSB3cmFwcGVyIGZ1bmN0aW9ucyBzaW5jZSB3ZSBkb24ndCBjYXJlIGFib3V0IGNvbXBhdGliaWxpdHkKCXdpdGggV2luOTggaW4gdGhpcyBjYXNlLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwb3J0IGVtdWxhdGlvbiBvZiB0aGUgcHJpdmlsZWdlZCBtb3YgZHI3LGVheCBpbnN0cnVjdGlvbi4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQ29ycmVjdGVkIG1ldGhvZCBvZiBjcmVhdGluZyByZWdpc3RyeSBrZXlzLCBib3RoIHRvIGZpeCBhbiBpc3N1ZSB3aGVyZQoJdGhleSB3ZXJlIG5vdCBjcmVhdGVkIGFuZCB0byBhY3QgbW9yZSBsaWtlIFdpbmRvd3MuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9zdHJpbmcuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglNb3ZlIHN0cmluZyBmdW5jdGlvbnMgdG8gc2VwYXJhdGUgZmlsZS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBzdXBwb3J0IGZvciBidWlsZGluZyBhIGRsbCBmcm9tIGEgLmRlZiBmaWxlIGZvciBjYXNlcyB3aGVyZSB3ZQoJZG9uJ3Qgd2FudCB0byB3cml0ZSBhIGZ1bGwgLnNwZWMuCglSZW5hbWVkIC0tc3BlYyBvcHRpb24gdG8gLS1kbGwgZm9yIGNvbnNpc3RlbmN5LgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2V0TWVudSBzaG91bGQgYWx3YXlzIGNhbGwgU2V0V2luZG93UG9zIHdoZXRoZXIgdGhlIHdpbmRvdyBpcyB2aXNpYmxlCglvciBub3QuIEhvd2V2ZXIgd2Ugc2hvdWxkbid0IGNhbGwgU1dQIGZyb20gQ3JlYXRlV2luZG93RXguCglBZGRlZCBhIHRlc3QgZm9yIHRoaXMgYmVoYXZpb3VyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBzb21lIHRyYWNlcy4KCS0gVGhlIFRCTV9HRVQqSE9UTElTVCBmdW5jdGlvbnMgdGFrZSBpbWFnZWxpc3QgSUQgaW4gd1BhcmFtLgoJLSBJbXBsZW1lbnQgVEJNX0dFVFNUUklOR3tBLFd9LgoJLSBJbXBsZW1lbnQgdW5kb2N1bWVudGVkIDB4NDYyIG1lc3NhZ2UuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglSb2JlcnQgdmFuIEhlcmsgPHJvYmVydEByb2JlcnR2YW5oZXJrLm5sPgoJQWxsb3cgdXNlciB0byBjaG9vc2UgIm5hdGl2ZSIsICJuYXRpdmUsYnVpbHRpbiIsICJidWlsdGluIiwKCSJidWlsdGluLG5hdGl2ZSIgYW5kICJkaXNhYmxlIiBmb3IgZWFjaCBsaWJyYXJ5IHRoZXkgb3ZlcnJpZGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogRmFiaWFuIENlbmVkZXNlIDxDZW5lZGVzZUBpbmRlbC5jaD4KCUFjY2VwdCBWVF9CT09MIG1peGVkIHdpdGggYW5vdGhlciB0eXBlIGFzIHZhbGlkIGNvbWJpbmF0aW9uIGluCglWYXJPci9WYXJBbmQuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDogRml4ZWQgSW50bFN0ckVxV29ya2VyQS9XIHByb3RvdHlwZXMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZCBJbnRsU3RyRXFXb3JrZXJBL1cuCgktIFN0ckNtcCB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXcml0ZSBzZWN0aW9uIGFjY2VzcyBhbHNvIGFzc3VtZXMgcmVhZCBhY2Nlc3MuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsCgkgIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJS2VlcCB0cmFjayBvZiB0aGVtZSBmaWxlbmFtZSB3aXRoaW4gVEhFTUVfRklMRS4KCjIwMDQtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb3cgc3BlY2lmaWNhdGlvbiBvZiAiRExMTU9ERT1uYXRpdmUiIGZvciBuYXRpdmUgZGxscy4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZW5hbWVkIC0tZXhlLW1vZGUgb3B0aW9uIHRvIC0tbW9kZSBub3cgdGhhdCBpdCBjYW4gYmUgdXNlZCBmb3IgZGxscwoJdG9vLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglHcm93IHRoZSB0cmVldmlldyBjb250cm9sIGV4cGFuZGVyIGJ1dHRvbiBieSAxcHggaW4gZWFjaCBkaXJlY3Rpb24gdG8KCW1hdGNoIHRoZSBuYXRpdmUgbG9vay4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvTWFrZWZpbGUuaW46IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJTm8gbmVlZCB0byBsaW5rIGFnYWluc3QgdGhlIHV1aWQgbGlicmFyeS4KCgkqIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJVGhlIGNsaXAgcmVjdGFuZ2xlIGZvciBFeHRUZXh0T3V0IGlzIGluIGxvZ2ljYWwgY29vcmRzLgoKCSogZGxscy9pY2N2aWQvaWNjdmlkLmMsIGRsbHMvbXN2aWRjMzIvbXN2aWRlbzEuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgcGFsZXR0ZSBpbnRvIGFjY291bnQgd2hpbGUgcmVzcG9uZGluZyBvbgoJSUNNX0RFQ09NUFJFU1NfR0VURk9STUFULgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCB0aGUgbmV3IFJTQSBlbmNyeXB0aW9uIERMTC4KCgkqIGRsbHMvdXh0aGVtZS9NYWtlZmlsZS5pbiwgZGxscy91eHRoZW1lL2RyYXcuYywKCSAgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLAoJICBkbGxzL3V4dGhlbWUvcHJvcGVydHkuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IERyYXdUaGVtZUJhY2tncm91bmRFeCwgRHJhd1RoZW1lVGV4dCwgR2V0VGhlbWVUZXh0RXh0ZW50LgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5vIG5lZWQgdG8gY2hlY2sgZm9yIERsbEVudHJ5UG9pbnQgc3R5bGUgY29uc3RhbnRzLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3RvcmUgcG9pbnRlcnMgaW4gdGhlIGludGVybmFsIHN0cnVjdHVyZXMgYW5kIG5vdCBoYW5kbGVzLgoKCSogZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmM6IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJQWRkZWQgc3VyZmFjZSB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHNlY29uZGFyeSBidWZmZXIgYXJyYXkuCgoyMDA0LTAyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwMjEzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTAyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIG5hdGl2ZSBtb2RlIGRsbCBzdXBwb3J0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IE1hcmN1cyBNZWlzc25lcikuCgoJKiBsaWJzL3BvcnQvZ2V0b3B0LmMsIGxpYnMvcG9ydC9nZXRvcHQxLmM6CglEb24ndCBidWlsZCBnZXRvcHQgYXQgYWxsIGlmIGl0J3Mgbm90IG5lZWRlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdvcmsgdG93YXJkIHByb3Blcmx5IHVwZGF0aW5nIHRoZSBTZWxlY3Rpb25NYXJrIHdoZW4gdGhlIHNlbGVjdGVkCglzdGF0ZSBjaGFuZ2VkIGluc2lkZSBhIGxpc3Rib3guCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUVuYWJsZSBoYXJkd2FyZSBzZWNvbmRhcnkgYnVmZmVyIHN1cHBvcnQgb24gY2FyZHMgdGhhdCBzdXBwb3J0IGl0IChTQgoJbGl2ZSBhbmQgYXVkaWd5KS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2F2ZSBvc3MgZGV2aWNlIGZkIGFuZCBjcmVhdGlvbiBmbGFncyBpbiBkc291bmQgYnVmZmVyIG9iamVjdC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJR2V0IHJpZCBvZiBhIGZldyAxNi1iaXQgZXhwb3J0cyBpbiBnZGkzMi4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBNb3ppbGxhIEFjdGl2ZSBYIGNvbnRyb2wgaW4gcGxhY2Ugb2YgdGhlIElFNiBBY3RpdmUgWAoJY29udHJvbC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3BsaXQgYnVmZmVyIGNyZWF0aW9uIGZ1bmN0aW9uIGludG8gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGJ1ZmZlcgoJY3JlYXRpb24gZnVuY3Rpb25zLiBTZWNvbmRhcnkgYnVmZmVyIGNyZWF0aW9uIGZ1bmN0aW9uIGlzIHN0dWJiZWQKCW91dC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCB3aW5lZGVmYXVsdC5yZWcsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnNhYmFzZS8uY3ZzaWdub3JlLCBkbGxzL3JzYWJhc2UvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnNhYmFzZS9tYWluLmMsIGRsbHMvcnNhYmFzZS9yc2FiYXNlLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgZW5vdWdoIG9mIHJzYWJhc2UuZGxsIHRvIGdldCBTdGVhbSB0byBsb2dpbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW92ZWQgZHNvdW5kIG1tYXAgbWFwcGluZyBpbmZvIGludG8gZHNvdW5kIG9iamVjdHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgcGlwZSBzeW5jIGNvZGUgZnJvbSB3aW5lb3NzLgoKCSogZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy94MTFkcnYvYml0Ymx0LmMsCgkgIGRsbHMveDExZHJ2L2NsaXBwaW5nLmMsIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYzoKCU1vdmVkIGhHQ0NsaXBSZ24gaGFuZGxpbmcgdG8gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByb3Blcmx5IHJlbGVhc2UgaGFyZHdhcmUgcHJpbWFyeSBidWZmZXIgd2hlbiBjaGFuZ2luZyBmb3JtYXRzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgbmVlZCBwcmltYXJ5IGxvY2suIEZpeGVzIGVycm9yIGluIGRzb3VuZCB0ZXN0cyBpbiBpbnRlcmFjdGl2ZQoJbW9kZS4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGxvY2F0aW9uIG9mIHRoZSBGcmVlQlNEIHBvcnQgKHRoYW5rcyB0byBsYXp5Ym9uZXMpLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRm9yIGVhY2ggbGliIGRpciwgbG9vayBmb3IgLnNvLCAuZGVmLiBhbmQgLmEgZmlsZXMsIGluc3RlYWQgb2YgdGhlCglvdGhlciB3YXkgYXJvdW5kLgoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYzoKCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW51c2VkIGZpZWxkcyBpbiB0aGUgREMgc3RydWN0dXJlLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgb2Jzb2xldGUgZ3JhcGhpY3MvIGRpcmVjdG9yeS4KCVVzZSB0aGUgcHJlZmVyZWQgbWV0aG9kIGRvY3VtZW50aW5nIHN0eWxlLgoJUmVtb3ZlIGlycmVsZXZhbnQgc2VjdGlvbiBhYm91dCBpbnRlcm5hbCBuYW1lcy4KCgkqIGRsbHMveDExZHJ2L2JpdGJsdC5jLCBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUdldCByaWQgb2YgYSBmZXcgbW9yZSByZWZlcmVuY2VzIHRvIHRoZSBEQyBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHJhbmRyLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglVcGRhdGUgdGhlIGRlc2t0b3Agd2luZG93IHNpemUgYW5kIHNlbmQgV01fRElTUExBWUNIQU5HRSBvbiByZXNvbHV0aW9uCgljaGFuZ2VzLgoKMjAwNC0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJV2UgZG9uJ3QgcmVhbGx5IG5lZWQgc3ViZGlyZWN0b3JpZXMgaW4gZGxscy9kaW5wdXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2JpdGJsdC5jLAoJICBkbGxzL2dkaS9tYXBwaW5nLmMsIGRsbHMvZ2RpL3BhaW50aW5nLmMsIGRsbHMvZ2RpL3BhdGguYzoKCU1vdmVkIHJlbWFpbmluZyBmaWxlcyBmcm9tIGdyYXBoaWNzLyB0byBkbGxzL2dkaS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsaWJzL01ha2VsaWIucnVsZXMuaW4sCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5tYXAsCgkgIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL3dpbmUubWFwOgoJQWRkZWQgdmVyc2lvbiBzY3JpcHRzIGZvciBsaWJ3aW5lIGFuZCBsaWJ3aW5lX3VuaWNvZGUuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJQSAwLjkgcmVsZWFzZSBpbiAyMDAzIHNlZW1zIHVubGlrZWx5IGF0IHRoaXMgcG9pbnQgKHNwb3R0ZWQgYnkgQ2xheQoJQXNoYnkpLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYywgd2luZWRlZmF1bHQucmVnOgoJSnVzdGluIENoZXZyaWVyIDxidXJuZXIxQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgU1BJX0dFVEdSQURJRU5UQ0FQVElPTlMsIFNQSV9HRVRGT05UU01PT1RISU5HLAoJU1BJX0dFVEhPVFRSQUNLSU5HLCBTUElfR0VUTElTVEJPWFNNT09USFNDUk9MTElORyBhbmQKCVNQSV9HRVRLRVlCT0FSRENVRVMgc3lzdGVtIHBhcmFtZXRlciBjYWxscy4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVdpbmRvd3MgcG9ydGluZyBmaXggLSBEZWZpbmUgT19OT05CTE9DSyBpZiBub3QgZGVmaW5lZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIFRSQUNFLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgb2JqZWN0cy9mb250LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0Q2hhckFCQ1dpZHRocyByZXR1cm5zIHRoZSB3aWR0aHMgb2YgdW5yb3RhdGVkIGdseXBocyBsaWtlCglHZXRDaGFyV2lkdGggYWxyZWFkeSBkb2VzLgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQnJhY2tldCBjb2RlIGluc2VydGVkIGJ5IHRoZSBQQVNTVEhST1VHSCBlc2NhcGVzIGJ5CgklJXtCZWdpbixFbmR9RG9jdW1lbnQuIFRoaXMgc3RvcHMgY3VwcycgcHN0b3BzIGJlY29taW5nIGNvbmZ1c2VkIGlmIGl0Cgljb21lcyBhY3Jvc3MgYW4gJSVFT0YgaW4gYW4gaW1wb3J0ZWQgZXBzIGZpbGUuCglUaGUgaGFjayBpbiBQU0RSVl9SZWN0YW5nbGUgdG8gZml4IGVwcyBmaWxlcyBpbiBvZmZpY2UyayB0dXJucyBvdXQgdG8KCWJlIGFsbW9zdCB3aGF0IFdpbmRvd3MgcmVhbGx5IGRvZXMgLSB1cGRhdGUgdGhlIGNvZGUgYW5kIHRoZSBjb21tZW50Cgl0byBtYXRjaCBXaW5kb3dzIGJlaGF2aW91ciBtb3JlIHByZWNpc2VseS4KCgkqIGRsbHMvd2luZXBzL2Rvd25sb2FkLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCB0aGUgZm9udCBwcGVtIGlzIGFsd2F5cyBwb3NpdGl2ZS4gIFRoYW5rcyB0byBnc2xpbmsuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBsZWF2ZSBub3QgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBzdHJ1Y3R1cmUgcGFzc2VkIHRvCglTaGVsbEV4ZWN1dGVFeFczMi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUcmFuc2xhdGUgdGhlIHJldHVybmVkIGhJbnN0QXBwIGZyb20gdGhlIHVuaWNvZGUgd29ya2VyIGZ1bmN0aW9uLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBsZXRlZCBQZWVrTmFtZWRQaXBlIGltcGxlbWVudGF0aW9uLgoKCSogd2luZWRlZmF1bHQucmVnOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGRlZCBNeSBDb21wdXRlci4KCS0gVXBkYXRlZCBpbnN0YWxsZWQgRFggVmVyc2lvbi4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kaXNwZGliLmMsIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL2dkaS9lbnYuYywgZGxscy9nZGkvZ2RpMTYuYzoKCU1vdmVkIHNvbWUgY29kZSBvdXQgb2YgdGhlIGdyYXBoaWNzLyBkaXJlY3RvcnkgaW50byBkbGxzL2dkaS4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgd2luZG93cy9kaWFsb2cuYzoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUFkZGVkIHRoZSBhdXRvbWF0aWMgdGFiYmluZyBpbiBJc0RpYWxvZ01lc3NhZ2UuCglBZGRlZCBjb3JyZWN0aW9ucyB0byBHZXROZXh0VGFiL0dyb3VwSXRlbS4KCUluY2x1ZGVkIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvZmxhdHRodW5rLmgsIGRsbHMva2VybmVsL3RodW5rLmM6CglHZXQgcmlkIG9mIHRoZSBmbGF0dGh1bmsuaCBoZWFkZXIuCgoJKiBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3dpbnByb2MuaCwgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmM6CglBdm9pZCBhIGZldyBtb3JlIEdldE1vZHVsZUhhbmRsZSBjYWxscy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgYWRkIGltcG9ydGVkIGNvbnN0cnVjdHMgdG8gYW55IHR5cGVsaWIgb3V0cHV0IGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmg6CglTdG9yZSB0aGUga2VybmVsMzIgbW9kdWxlIGhhbmRsZSBnbG9iYWxseSB0byBhdm9pZCBzb21lCglHZXRNb2R1bGVIYW5kbGUgY2FsbHMgdGhhdCBjYW4gY2F1c2UgZGVhZGxvY2tzIHdpdGggdGhlIGxvYWRlcgoJc2VjdGlvbi4KCU1vdmVkIHNvbWUgMTYtYml0IGRlZmluaXRpb25zIG91dCBvZiBrZXJuZWxfcHJpdmF0ZS5oLgoKMjAwNC0wMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wdGhyZWFkLmM6IEJldHRlciBmaXggZm9yIHRoZSB0aHJlYWQgZXhpdCByYWNlIG9uIHB0aHJlYWRzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvY3VtZW50IGZvdXIgbmV3IGRsbHM6IGRzd2F2ZSwgaWNjdmlkLCBtc3ZjcnQ0MCwgYW5kIG1zdmlkYzMyLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUGFyc2UgdGhlIFtpbnB1dF9zeW5jXSBhdHRyaWJ1dGUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGhlcmUgaXMgbm8gcG9pbnQgaW4gc3BlY2lmeWluZyBib3RoIE1FTV9SRVNFUlZFIGFuZCBNRU1fQ09NTUlUIGZvcgoJVmlydHVhbEFsbG9jLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBRk1UX0FDMyBtaWdodCBiZSBub3QgZGVmaW5lZCBpbiB0aGUgc3lzdGVtIGhlYWRlcnMuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGRvdWJsZSBjaGVja2luZyBmcmVlIHR5cGUgZmxhZ3MgaW4gTnRGcmVlVmlydHVhbE1lbW9yeS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVN0b3JlIGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBkbGwgaW4gYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZgoJdXNpbmcgZ2xvYmFsIHZhcmlhYmxlcyB0byBtYWtlIGl0IGVhc2llciB0byByZXVzZSB0aGUgcGFyc2luZwoJcm91dGluZXMuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCURvbid0IHJlcXVlc3QgUFJPVF9FWEVDIHBlcm1pc3Npb25zIHdoZW4gbWFwcGluZyBhbiBpbWFnZSBmaWxlIHRvCglhdm9pZCBwcm9ibGVtcyBvbiBub2V4ZWMgZmlsZXN5c3RlbXMgd2l0aCBrZXJuZWwgMi42LgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLAoJICBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglNb3ZlZCBzb21lIG1vcmUgZGVmaW5pdGlvbnMgb3V0IG9mIHVuZG9jc2hlbGwuaCBpbnRvIHRoZSBleHBvcnRlZAoJaGVhZGVycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJT25seSByZWRyYXcgYnV0dG9uIGluIFByZXNzQnV0dG9uIGFuZCBJbmRldGVybWluYXRlIGlmIGl0cyBzdGF0ZSBoYXMKCWNoYW5nZWQuCgoJKiBsb2FkZXIvZ2xpYmMuYzoKCURvbid0IGRlcGVuZCBvbiB0aGUgbmFtZSBvZiB0aGUgbWFpbiBiaW5hcnksIGFsd2F5cyBsb2FkCgl3aW5lLVtrcF10aHJlYWQgbm8gbWF0dGVyIHdoYXQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gbW92ZSBzb21lIFBJREwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZyb20gdW5kb2NzaGVsbC5oIGludG8gcHVibGljCgkgIGhlYWRlciwgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIHVuZG9jdW1lbnRlZAoJLSBpbXBsZW1lbnQgY29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdpbmVmaWxlCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUhvbm91ciBUQl9TRVRNQVhURVhUUk9XUy4KCjIwMDQtMDItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL25ldGFwaTMyL25ibmFtZWNhY2hlLmMsIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuaCwKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGluY2x1ZGUvbG1zdGF0cy5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBGaXhlcyBmb3IgTWluZ3cvTVNWQy4KCgkqIGluY2x1ZGUvd2luZS90ZXN0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHRoZSB3aW5ldGVzdF9vaygpIGhhY2sgdGhhdCBhZGRzIGEgdHJhaWxpbmcgJ1xuJyBpZiBpdCBpcwoJbWlzc2luZy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJU2V0IHVwcGVyLWxlZnQgY29ybmVyIG9mIGRlc3RpbmF0aW9uIHRvICgwLCAwKSwgdXNpbmcKCUdldEJpdG1hcERpbWVuc2lvbkV4IGRvZXNuJ3QgbWFrZSBzZW5zZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgQlROU19XSE9MRURST1BET1dOLgoJUG9wdWxhdGUgYnV0dG9uIHJlY3Qgd2hlbiBzZW5kaW5nIFRCTl9EUk9QRE9XTi4KCgkqIHNlcnZlci9jaGFuZ2UuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgRl9OT1RJRlkgZGVmaW5lcyBpZiB3ZSdyZSBjb21waWxpbmcgd2l0aCBsaW51eCBhbmQgdGhleSdyZSBub3QKCWluIHRoZSBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgR2V0UHJvY2Vzc0hlYXBzKCkgcHJvdG90eXBlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdmlydHVhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiBjb3B5L3Bhc3RlIGVycm9ycy4KCgkqIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBHZXRGdWxsUGF0aE5hbWUgdG8gY29udmVydCB1bml4IHBhdGggbmFtZXMgdG8gRE9TIG9uZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVN1cHBvcnQgZm9yIGEgc21hbGwgaGFuZGZ1bCBtb3JlIHJldHVybiB2YWx1ZS9hcmd1bWVudC92YXJpYWJsZSB0eXBlcy4KCgkqIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUR5bmFtaWNhbGx5IHJldHJpZXZlIHRoZSBtZXRyaWNzIHRoYXQgZGVwZW5kIG9uIHRoZSBzY3JlZW4gc2l6ZSAoYmFzZWQKCW9uIGEgcGF0Y2ggYnkgQWxleCBQYXNhZHluKS4KCUdldCByaWQgb2YgdGhlIG5vIGxvbmdlciB1c2VkIFNNX1dJTkVfQlBQIG1ldHJpYy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJRml4ZXMgYW5kIHN1cHBvcnQgZm9yIFR5cGVJbmZvIGFsaWdubWVudCB2YWx1ZXMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0IFN0clJldFRvQlNUUi4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLCBmaXggQXNzb2NJc0Rhbmdlcm91cy4KCUltcGxlbWVudCBTdHJSZXRUb0JTVFIsIGRlbGF5LWltcG9ydCBvbGVhdXQzMi4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0cyBmb3IgU3RyUmV0VG9TdHJBVy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN0clJldFRvU3RyTiByZXR1cm5zIEJPT0wgYW5kIHNob3VsZG4ndCBjcmFzaCBvbiBOVUxMIGRlc3QuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIENvU2V0U3RhdGUgaW5mbyBzaG91bGQgYmUgdGhyZWFkIGxvY2FsLgoJLSBTZXRFcnJvckluZm8gc2hvdWxkIGFsbG9jYXRlIGFuIGFwYXJ0bWVudCB3aGVuIG5vIGFwYXJ0bWVudCBwcmVzZW50LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCUxlb25hcmRvIFF1aWphbm8gVmluY2VuemkgPGxxdWlqYW5vQGhvdHBvcC5jb20+CglGaXhlZCBMYXRpbiBBbWVyaWNhbiBrZXlib2FyZC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJU3R1YmJlZC1vdXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIElUeXBlTGliIGludGVyZmFjZS4KCUEgZml4IHRvIElDcmVhdGVUeXBlSW5mbzo6QWRkUmVmVHlwZUluZm8oKSB0byB1c2UgUmVsZWFzZSgpIGluc3RlYWQgb2YKCWhhY2tpbmcgYSByZWZjb3VudCBkaXJlY3RseS4KCUEgbWlzc2VkIEFQSSBkb2MgY29tbWVudCBmb3IgdGhlIElUeXBlSW5mbyBpbnRlcmZhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIHNvbWUgdW5kb2N1bWVudGVkIHRvb2xiYXIgbWVzc2FnZXMuCgoyMDA0LTAyLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZpZGMzMi9tc3ZpZGVvMS5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy91eHRoZW1lL3N0eWxlbWFwLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMveDExZHJ2L3hpbS5jLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBwcm9ncmFtcy93aW5lZGJnL2VsZi5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBhbmQgY2FzZSBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZpeGVkIFRyYWNrUG9wdXBNZW51IHJldHVybiB2YWx1ZSAoYmFzZWQgb24gYSBwYXRjaCBieSBBbmRyZWFzCglSb3NlbmJlcmcpLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBUUkFDRWluZyBpbiBzb21lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgSUNyZWF0ZVR5cGVJbmZvOjpBZGRJbXBsVHlwZSgpLgoJU3VwcG9ydCBmb3IgSUNyZWF0ZVR5cGVJbmZvOjpTZXRJbXBsVHlwZUZsYWdzKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRCX0FEREJVVFRPTlMgY2FuIHBhc3MgYSBzdHJpbmcgcHRyIGluc3RlYWQgb2YgYW4gaW5kZXguCglUQl9HRVRCVVRUT05JTkZPIG9ubHkgcmV0dXJucyBhIHN0cmluZyBpZiBpdCdzIG5vdCBpbiB0aGUgaW50ZXJuYWwKCXN0cmluZyBsaXN0LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGVkIHByb3BlciBhc3luY2hyb25vdXMgSW50ZXJuZXRPcGVuVXJsIGhhbmRsaW5nLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciByZWNvcmRpbmcgY3VzdG9tIGRhdGEgaW4gYSB0eXBlIGxpYnJhcnkuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogbGlid2luZV91dWlkIGhhcyBiZWVuIHJlbmFtZWQgdG8gbGlidXVpZC4KCgkqIGZpbGVzL2ZpbGUuYzogUG9maXMgPHBvZmlzQHBvcnR1Z2FsbWFpbC5wdD4KCURvbid0IHByaW50IEZJWE1FIGZvciBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVdvcmthcm91bmQgZm9yIGJyb2tlbiBhcnRzYy1jb25maWcgc2NyaXB0IChiYXNlZCBvbiBhIHBhdGNoIGJ5CglzdGlybGluZ0BrYy5yci5jb20pLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBCVE5TXyogdG9vbGJhciBidXR0b24gc3R5bGUgZGVmaW5lcyByYXRoZXIgdGhhbiB0aGUgb3V0ZGF0ZWQKCVRCU1RZTEVfKi4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggcHJvYyBuYW1lIHJlcG9ydGVkIGluIGRlbGF5IGxvYWQgZmFpbHVyZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy92aXJ0dWFsLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3IgVmlydHVhbCogQVBJcywgZml4IGEgZmV3IGJ1Z3MgZGlzY292ZXJlZCBieSBpdC4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRGVjbGFyZSBzb21lIFNldHVwRGkgZnVuY3Rpb25zIGFuZCByZWxhdGVkIGNvbnN0YW50cy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCVJlbW92ZSBzb21lIHVzZWxlc3MgY29tbWVudHMgYW5kIHJlYXJyYW5nZSB0aGUgR1VJIGEgYml0LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBib3VuZHMgY2hlY2tpbmcgaW4gU0hHZXRQYXRoRnJvbUlETGlzdEEvVy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZXBvcnQgcmVhbCBoYW5kbGVzIHRvIHRoZSBhcHBsaWNhdGlvbiwgbm90IFdpbmUgaW50ZXJuYWwgb25lcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBwcm9ibGVtIG9uIEJTRC4KCUZpeGVkIGEgdHJhY2UuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZW1vdmUgZGVhZCBjb21tZW50LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBBbGZvbnMgSG9vZ2Vydm9yc3QgPGFsZm9uc0Bwcm90ZXVzLmRlbW9uLm5sPgoJRml4IGluZmluaXRlIGxvb3AgaW4gX2ZsdXNoYWxsLgoKCSogaW5jbHVkZS9ndWlkZGVmLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCSNpZmRlZiBndWFyZCB0aGUgZGVjbGFyYXRpb24gb2YgdHlwZSBJSUQgdG8gYmUgY29tcGF0aWJsZSB3aXRoCgltaWRsLWdlbmVyYXRlZCBzdHVicy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJU3VwcG9ydCBmb3IgcmVjb3JkaW5nIHRoZSBTWVNLSU5EIG9mIHRoZSB0eXBlIGxpYnJhcnkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBjb21waWxhdGlvbiB3aXRoIE1TVkMuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywKCSAgb2JqZWN0cy9wYWxldHRlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1RoLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUaGFpIGxhbmd1YWdlIHRyYW5zbGF0aW9uLgoKCSogZGxscy9tc3ZjcnQvZGlyLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgVW5pY29kZSBjYWxscyBpbnN0ZWFkIG9mIEFTQ0lJIHdoZXJlIGFwcGxpY2FibGUuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiB0b29scy9jMm1hbi5wbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsbG93IEFQSS1kb2MgZ2VuZXJhdGlvbiBmb3Igbm9uIFdJTkFQSSBjYWxscyAoZS5nLiBtc3ZjcnQpLgoKCSogZGxscy9keGd1aWQvTWFrZWZpbGUuaW4sIGRsbHMvdXVpZC9NYWtlZmlsZS5pbjoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEZWZpbmUgZW1wdHkgcnVsZXMgZm9yIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4KCjIwMDQtMDItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglBZGRlZCBtZW1jaHJXIGFuZCBtZW1yY2hyVyB0byB0aGUgZXhwb3J0ZWQgVW5pY29kZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCUFkZGVkIG1pc3NpbmcgcGFyYW1ldGVyIGNoZWNrIGluIFNldExvY2FsZUluZm9BIHJldmVhbGVkIGJ5IHRoZQoJcHJvZmlsZSBjb2RlIGNoYW5nZXMuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFVzZSBXaW4zMiBpbnN0ZWFkIG9mIFVuaXggZmlsZSBmdW5jdGlvbnMuCgktIFByb2Nlc3MgZmlsZXMgZnVsbHkgaW4gVW5pY29kZS4KCS0gQWRkIFVuaWNvZGUgZmlsZSBkZXRlY3Rpb24uCgoJKiBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5jLCBkbGxzL29wZW5nbDMyL3dnbF9leHQuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZWdpbm5pbmcgb2YgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBXR0wgZXh0ZW5zaW9ucy4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJVXBkYXRlIGRvYyBhYm91dCBjcm9zcy1jb21waWxpbmcgb2YgdGhlIFdpbmUgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUNvcnJlY3QgR2V0TnVtYmVyRm9ybWF0IGZvciBuZWdhdGl2ZSBudW1iZXJzIHdpdGggZS5nLiAzIGxlYWRpbmcKCWRpZ2l0cy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglSZXBvcnQgdGhlIG1vdXNlIHdoZWVsIGFzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSBtZXRyaWNzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBtaXNzaW5nIHJldHVybi4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUFkZGVkIGRvY3VtZW50YXRpb24gZm9yIERvY0ZpbGVzLCBiYXNlZCBvbiB0aGUgQ29yVnUgaW1wbGVtZW50YXRpb24gb2YKCURvY0ZpbGVzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglHZXQgcG9pbnRlciB0byBDcmVhdGVGaWxlVyBlYXJsaWVyIG9uIGR1cmluZyBzdGFydHVwLgoJTWFrZSBzdXJlIHdlIGRvbid0IGNyYXNoIHdoZW4gbG9hZGluZyBhIGRsbCBiZWZvcmUgdGhlIG1vZHJlZiBmb3IgdGhlCgltYWluIGV4ZSBoYXMgYmVlbiBjcmVhdGVkLgoKCSogdG9vbHMvd2luZWNoZWNrOiBMZW9uYXJkbyBRdWlqYW5vIFZpbmNlbnppIDxscXVpamFub0Bob3Rwb3AuY29tPgoJQWRkZWQgY2hlY2sgZm9yIHVuaGlkZSBvcHRpb24uCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBwcm9wZXIgSElOVEVSTkVUIGhhbmRsZXMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jLCBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCglTcGVsbGluZyBmaXhlcyBpbiB0aGUgb2soKSBtZXNzYWdlcy4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByb2Nlc3MgY29sb3IgbWV0cmljcyBmb3IgdGhlbWVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CgktIEZpeCBoYW5kbGluZyBvZiBUQ1NfUkFHR0VEUklHSFQgc3R5bGUuCgktIENsaXAgVXBEb3duIGNvbnRyb2wgb25seSBpZiBpdCBpcyBwcmVzZW50LgoJLSBBZGQgVG9Eb3MuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJUmVuYW1lICdHZW5lcmFsIHRhYicgdG8gJ0Fib3V0JywgbW92ZSB0byB0aGUgbGFzdCBwb3NpdGlvbi4KCU1ha2UgYXBwbGljYXRpb25zIHRhYiBoYW5kbGUgZ2xvYmFsIGFuZCBwZXItYXBwIHdpbnZlciwgZG9zdmVyIGFuZAoJd2luZWxvb2sgc2V0dGluZ3MsIG1pcnJvcmluZyB0aGUgTGlicmFyaWVzIHRhYi4gIENvZGUgY29waWVkIGZyb20KCVJvYmVydCB2YW4gSGVyaydzIGxpYnJhcmllcyB0YWIuCglNb3ZlIGdsb2JhbC9hcHAgc3BlY2lmaWMgZnVuY3Rpb24gYW5kIGdsb2JhbCB0byB0aGUgeDExZHJ2IHRhYiB3aGVyZQoJaXQgaXMgY3VycmVudGx5IHVzZWQuCglBZGQgYSBjb3VwbGUgb2YgcHJvcGVydHkgaGVscGVyIGZ1bmN0aW9ucy4KCVNldCAzRCBib3JkZXIgYXJvdW5kIHRyZWV2aWV3IGNvbnRyb2xzLgoJUmVtb3ZlZCBpbnZhbGlkIHJlc291cmNlcyBmcm9tIGxhbmd1YWdlcyBvdGhlciB0aGFuIEVuLgoKMjAwNC0wMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IFRyYWNlIHJlZ2lzdGVyIGNvbnRlbnRzIG9uIGV4Y2VwdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRmFsbGJhY2sgdG8gc29mdHdhcmUgYnVmZmVyIGlmIGZhaWxlZCB0byBjcmVhdGUgaGFyZHdhcmUgYnVmZmVyLgoJTWlub3IgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9oZWFwLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSW1wbGVtZW50IHRlc3RzIGZvciBWYXJNb2QoKS4KCUFkZGVkIGNoYXIgKnZ0c3RyKCkgdG8gZW5oYW5jZSB0ZXN0IGRlYnVnZ2luZyBieSByZXR1cm5pbmcgYSB0ZXh0CglzdHJpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgaW5wdXQgdHlwZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSW1wbGVtZW50IFZhck1vZCgpLgoJQWRkIGEgZmV3IHRyYWNlIG91dHB1dHMuCglGaXggVmFyTm90KCkgd2l0aCBWVF9DWS4KCUZpeCBWYXJQYXJzZU51bUZyb21TdHIoKSB0byB3b3JrIGNvcnJlY3RseSB3aXRoIE5VTVBSU19IRVhfT0NUIGZsYWcuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2VsZi5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRmFsbGJhY2sgdG8gc29mdHdhcmUgYnVmZmVyIGlmIGR1cGxpY2F0aW5nIGhhcmR3YXJlIGJ1ZmZlciBmYWlscy4KCgkqIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFjdHVhbCBidWZmZXIgZm9ybWF0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSByZXF1ZXN0ZWQgZm9ybWF0IHNvIHVzZQoJcmV0dXJuZWQgb25lIGZvciBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2hvdyBzb3VuZCBjYXJkIGluZm8gaW4gdHJhY2UuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglUcmFuc2xhdGUgIm9wdGlvbnMiLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBhbmQgYSBmaXggZm9yIHRoZSB3aW5kb3cgc3R5bGVzIHN0YXRlIGF0IHRoZSB3aW5kb3cKCWNyZWF0aW9uIHRpbWUuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJTWFrZSBmdWxsLXNjcmVlbiBwb3B1cCB3aW5kb3dzIG1hbmFnZWQuCgoJKiBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJU3R1YiBOZXRVc2VyRW51bSgpLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglQcm9wZXJseSBoYW5kbGUgYXN5bmNocm9ub3VzIEh0dHBTZW5kUmVxdWVzdEEuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUNhbmNlbCByZW5hbWUgaWYgdmFsdWUgdG8gcmVuYW1lIHRvIGFscmVhZHkgZXhpc3RzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IG5Hcm93IGluaXRpYWxpemF0aW9uIGluIERQQV9DcmVhdGVFeC4KCjIwMDQtMDItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwgbG9hZGVyL2t0aHJlYWQuYywKCSAgbG9hZGVyL3B0aHJlYWQuYzoKCVJldmVydCB0aGUgdGhyZWFkIGV4aXQgcmFjZSBmaXggZm9yIG5vdywgaXQgZG9lc24ndCB3b3JrIHJpZ2h0IG9uCglwdGhyZWFkcy4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLAoJICBsaWJzL3dpbmUvcG9ydC5jLCBsaWJzL3dpbmUvd2luZS5kZWYsIGxvYWRlci9rdGhyZWFkLmMsCgkgIGxvYWRlci9wdGhyZWFkLmM6CglGaXhlZCBhIGNvdXBsZSBvZiByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIHdpbmVfcHRocmVhZCByb3V0aW5lcyBhdAoJdGhyZWFkIHN0YXJ0dXAgYW5kIGV4aXQuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOgoJRG8gYSBwcm90b2NvbCBlcnJvciBpbnN0ZWFkIG9mIGNyYXNoaW5nIGlmIHRoZSByZXBseSBmZCBoYXMgbm90IGJlZW4KCXNldC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9jaGFuZ2UuYywgc2VydmVyL2NoYW5nZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcuCglBZGQgc29tZSBub3RpZmljYXRpb24gdHlwZXMgYW5kIGEgdGVzdC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTdHViIGZvciBNTElzTUxISW5zdGFuY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgcHJvZ3JhbXMvd2luZWRiZy9lbGYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBGaXhlZCBicm9rZW4gd2luZWRiZyBjb21waWxhdGlvbiBvbiBCU0QuCgktIEZpeGVkIHNvbWUgY29ybmVyIGNhc2UgaGFuZGxpbmcgaW4gRUxGIGxpc3Qgd2Fsa2luZyAocmVwb3J0ZWQgYnkKCSAgUm9iZXJ0IFNoZWFybWFuKS4KCgkqIHdpbmRvd3MvdXNlci5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDaGFuZ2UgcmV0dXJuIGNvZGUgZnJvbSBFeGl0V2luZG93c0V4KCkgKGFuZCB3aXRoIHRoYXQgcmVsYXRlZAoJRXhpdFdpbmRvd3MqIGZ1bmN0aW9ucykgZnJvbSBGQUxTRSB0byBUUlVFLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIG5vdGlmaWNhdGlvbnMgdG8gTUlESV9Ob3RpZnlDbGllbnQuCglNYWRlIGNoZWNrcyBsZXNzIHN0cmljdCBpbiBtaWRQcmVwYXJlLCBvbmx5IHJldHVybiBhbiBlcnJvciBmb3IgYnVmZmVyCglpbiBxdWV1ZS4KCUZpeGVkIHRpbWUgb2YgaW5wdXQgZXZlbnRzIGluIEFsc2EgZHJpdmVyLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudCwKCURyYXdUaGVtZVBhcmVudEJhY2tncm91bmQsIGFuZCBiZWdpbm5pbmdzIG9mIG90aGVyIGRyYXdpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggaW5jb3JyZWN0IEdldExvbmdQYXRoTmFtZSB1c2FnZSBleHBvc2VkIGJ5IEVyaWMncyBmaWxlbmFtZQoJcGF0Y2hlcy4KCjIwMDQtMDItMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBkZWZpbmUgTUFLRVJPUDQuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSXNzdWUgV0FSTiBpbnN0ZWFkIG9mIEZJWE1FIHdoZW4gdGhlcmUgYXJlIG1pc21hdGNoZXMgYmV0d2VlbiBoYXJkCgljb2RlZCBhbmQgcmVhbCBrZXlib2FyZCBsYXlvdXRzLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRGVjbGFyZSBTSEdldEZvbGRlclBhdGggYW5kIHJlbGF0ZWQgY29uc3RhbnRzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglTdHViYmVkLW91dCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVR5cGVJbmZvMiBpbnRlcmZhY2UgZm9yIHRoZQoJSUNyZWF0ZVR5cGVJbmZvMiBpbXBsZW1lbnRhdGlvbi4KCUltcGxlbWVudGF0aW9uIG9mIElUeXBlSW5mbzJfZm5HZXRDb250YWluaW5nVHlwZUxpYigpLgoJUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgSUNyZWF0ZVR5cGVJbmZvMl9mbkFkZFJlZlR5cGVJbmZvKCkuCgoJKiBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZWxmLmMsIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmVkYmcvbXNjLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvcGUuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBub3cgZGV0ZWN0aW5nIER3YXJmIGRlYnVnIGluZm9ybWF0aW9uIGluIEVMRiBtb2R1bGVzIChidXQgZG9uJ3QgbG9hZAoJICBpdCkKCS0gc2VwYXJhdGVkIG1vZHVsZSBtYW5hZ2VtZW50IChwZS5jLCBlbGYuYykgZnJvbSBkZWJ1ZyBpbmZvcm1hdGlvbgoJICBtYW5hZ2VtZW50IChzdGFicy5jLCBtc2MuYykKCS0gd29ya2VkIGFyb3VuZCBuZXcgd2luZS1wdGhyZWFkIGFuZCB3aW5lLWt0aHJlYWQgbG9hZGVycyAobm8gbG9uZ2VyCgkgIHVzZSAid2luZSIgYXMgZGVmYXVsdCBsb2FkZXIpCgktIGJldHRlciBjb252ZXJnZW5jZSBvZiBnZGItcHJveHkgYW5kIHdpbmVkYmcgZm9yIEVMRiBoYW5kbGluZwoJLSBmaXhlZCBFTEYgbGluay1tYXAgd2Fsa2luZyAtIG5vdyB1c2luZyBhbGwgbG9hZGVkIHNoYXJlZCBsaWJzIC0KCSAgKHdpdGggdGhlIGhlbHAgb2YgUm9iZXJ0IFNoZWFybWFuKQoJLSBhZGRlZCBhIGJpdCBvZiBjb25zdCBjb3JyZWN0bmVzcwoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJS2VuIEJlbGxlYXUgPGphbWV6QGl2aWMucWMuY2E+CglBZGRlZCBzdHViIGZvciBJbW1EaXNhYmxlSU1FLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJVXNlIHRoZSBmaXJzdCBtb2RlIGluIHRoZSBYVmlkTW9kZSBtb2RlIGxpc3QgYXMgdGhlIGRlZmF1bHQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglTZXQgdGhlIGl0ZW0gbWFzayBiZWZvcmUgY2FsbGluZyBHZXRJdGVtLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6IEtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglPTEVQaWN0dXJlSW1wbF9Mb2FkOiBmaXggZm9yIGhlYWRlcmxlc3MgcGljdHVyZXMuCgoJKiB0b29scy93aW5lbWFrZXI6IEtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglUcnkgdG8gdXNlIC1mc2hvcnQtd2NoYXIgaWYgcG9zc2libGUuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgTURJIFdpbmRvdyBtZW51IHJlZnJlc2hpbmcgV2luZG93cyBjb21wYXRpYmxlLgoJU2ltcGxpZnkgTURJIGNoaWxkIHZpc2liaWxpdHkgY2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURyYXcgZGlzYWJsZWQgdG9vbGJhciBidXR0b25zIGNvcnJlY3RseS4KCjIwMDQtMDItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50YXRpb24gb2YgZ2RpMzIuR2RpVHJhbnNwYXJlbnRCbHQgYW5kIG1zaW1nMzIuVHJhbnNwYXJlbnRCbHQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgTGlzdFZpZXdfR2V0SGVhZGVyIG1hY3JvLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBTSENoYW5nZU5vdGlmeVJlZ2lzdGVyIGJlIHJlY3Vyc2l2ZSBzbyB0aGF0IHdpbGwgZ2V0IGFsbAoJbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4IFNIQ2hhbmdlTm90aWZ5IHRvIHNlbmQgY29ycmVjdCBsUGFyYW0gYW5kIHdQYXJhbSB2YWx1ZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR3VsaW1DaGUgaGFzIHRoZSBJc0ZpeGVkUGl0Y2ggZmxhZyBzZXQsIHlldCBjb250YWlucyBnbHlwaHMgb2YKCWRpZmZlcmluZyB3aWR0aHMuICBUbyBjb3BlIHdpdGggdGhpcyB3ZSBuZWVkIHRvIGNhbGwgRlRfTG9hZF9HbHlwaAoJd2l0aCB0aGUgRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEggZmxhZyBpbiBvcmRlciB0byBnZXQKCWJhY2sgdGhlIGNvcnJlY3QgZ2x5cGggbWV0cmljcyBmcm9tIEZyZWVUeXBlLgoKCSogdG9vbHMvd2luZXdyYXBwZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJlc2VydmUgdGhlIG9yaWdpbmFsIFdJTkVETExQQVRIIHNvIHdlIGNhbiBsb2FkIG91dC1vZi10cmVlIFdpbmVsaWIKCWFwcGxpY2F0aW9ucy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglMaW5rIHdpdGggbXN2Y3J0IGFuZCB1c2UgdGhlIG1zdmNydCBoZWFkZXJzIGJ5IGRlZmF1bHQgdG8gaW1wcm92ZSB0aGUKCVZpc3VhbCBDKysgY29tcGF0aWJpbGl0eS4KCUFkZCBhICctLW5vbXN2Y3J0JyBvcHRpb24gdG8gZ2VuZXJhdGUgbWFrZWZpbGVzIHRoYXQgZG8gbm90IHVzZQoJbXN2Y3J0LgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3Qgd2hldGhlciBhbiBhY3RpdmUgbWF4aW1pemVkIE1ESSBjaGlsZCBpcyB2aXNpYmxlLgoKMjAwNC0wMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJQWRkZWQgbWVtb3J5IGNvbnN0cmFpbnQgdG8gYXZvaWQgbWlzY29tcGlsYXRpb24gb2YgdGhlIHVuYWxpZ25lZF9tbWFwCglmdW5jdGlvbiAod2l0aCBoZWxwIGZyb20gUGF1bCBTdHJlaXRtYW4pLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUga2V5Ym9hcmQgcHJvZ3JhbW1pbmcgaW5zdHJ1Y3Rpb25zIHRvIHRoZSBEZXZlbCBHdWlkZS4KCUNsZWFudXAgdXAgYSBidW5jaCBvZiBiaXRzIHRoYXQgZG9uJ3QgYmVsb25nIGluIGEgYm9vay4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggcGFsZXR0ZSBkZWxldGlvbiBpc3N1ZSBzZWVuIGluIER1bmdlb25LZWVwZXIuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIFogdHJhbnNmb3JtIGluIHRoZSBYWVJaSFcgY2FzZS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9hY3RjdHguYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc3R1YnMgZm9yIHRoZSBBY3RpdmF0aW9uIENvbnRleHQgQVBJIChYUCspLgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIHRoZSByaWNoZWRpdCBjb250cm9sLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUaGUgTlZJRElBIGdyYXBoaWNzIGRldmljZSBjb21lcyB1cCBhcyBhbiBYIGV4dGVuc2lvbiBldmVudCwgYnV0Cgl0aHJvd3MgYW4gZXJyb3IgKEJhZE1hdGNoKSB3aGVuIHF1ZXJ5aW5nIGZvciB0aGUgYnV0dG9ucy4gQ2F0Y2ggdGhpcwoJZXJyb3IgYW5kIGFuZCBkaXNjYXJkIHRoYXQgZGV2aWNlIGZyb20gYmVpbmcgYSB0YWJsZXQgZGV2aWNlLgoKCSogZGxscy9uZXRhcGkzMi9uYnQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBmaXggYnJvYWRjYXN0IGFkZHJlc3MgZm9yIG5hbWUgbG9va3VwcyBhZnRlciBpcGhscGFwaSBjaGFuZ2UKCS0gZml4IGJhZCByZWdpc3RyeSBrZXkgb3BlbmluZwoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB0aGUgaGFuZGxpbmcgb2YgdXVpZC4KCU1vZGlmeSB0aGUgYXV0b2NvbmYgc2NyaXB0IHRvIGRldGVjdCAnLXogZGVmcycgYW5kICctaW5pdC8tZmluaScuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSWYgdW5hYmxlIHRvIG9wZW4gYW4gWDExIGRpc3BsYXkgbWVudGlvbiB0aGF0IFggbmVlZHMgdG8gYmUgcnVubmluZwoJYW5kIHRoYXQgJERJU1BMQVkgbXVzdCBiZSBzZXQgY29ycmVjdGx5LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gcmVtb3ZlIHVubmVjY2VzYXJ5IElTRl9NeUNvbXB1dGVyX0NvbnN0cnVjdG9yKCkgZGVjbGFyYXRpb24KCS0gaW1wcm92ZSByZXR1cm5lZCBlcnJvciBjb2RlIG9mIElTRl9NeUNvbXB1dGVyX2ZuUGFyc2VEaXNwbGF5TmFtZSgpCgktIHJlbW92ZSB3cm9uZyBjb21tZW50IGZyb20gSVNGX015Q29tcHV0ZXJfZm5HZXREaXNwbGF5TmFtZU9mKCkKCjIwMDQtMDEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIDE2LWJpdCBNREkgc3VwcG9ydCAoYmFzZWQgb24gYSBwYXRjaCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMvdXNlci9ob29rMTYuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL3N0cnVjdDMyLmM6CglscENyZWF0ZVBhcmFtcyBzaG91bGQgYmUgYSBTRUdQVFIgaW4gMTYtYml0IGNvZGUuCgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYzoKCU1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIGV4dHJhIGluZm9ybWF0aW9uIGluIHRoZSBleGNlcHRpb24gcmVjb3JkCgliZWZvcmUgYWNjZXNzaW5nIGl0IGluIGNoZWNrX3Jlc291cmNlX3dyaXRlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBJQ3JlYXRlVHlwZUluZm8yX2ZuQWRkRnVuY0Rlc2MoKSBhbmQKCUlDcmVhdGVUeXBlSW5mbzJfZm5TZXRGdW5jQW5kUGFyYW1OYW1lcygpLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcGtnLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGEgYnVuY2ggb2YgZHVtbXkgYW5kL29yIG9ic29sZXRlIGluZm8gZnJvbSB0aGUgV2luZWxpYgoJRGV2ZWxvcGVycyBHdWlkZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIHN0dWIgZm9yIFdTQVN0cmluZ1RvQWRkcmVzc0EuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCURvbid0IGRlcGVuZCBvbiB1c2VyMzItaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZWxlcmF0b3IgdGFibGVzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFsbG93IFZlclF1ZXJ5VmFsdWVXIHRvIHF1ZXJ5IDE2LWJpdCByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBub3cgcmVwb3J0aW5nIG1lc3NhZ2Ugb24gYm9ndXMgbGluZSBudW1iZXIgaW4gJ2JwIDxudW0+JyBjb21tYW5kcwoJICAodXNlZnVsIHdoZW4gdXNlciB0aGlua3MgPG51bT4gaXMgYSBsaW5lYXIgYWRkcmVzcykKCS0gZml4ZWQgYm9ndXMgcmV0dXJuIHZhbHVlIGluIERFQlVHX0FkZEJyZWFrcG9pbnQKCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgc3luY2hyb25pemF0aW9uIGlzc3VlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglJbXByb3ZlbWVudHMgdG8gSUNyZWF0ZVR5cGVJbmZvMl9mbkFkZFZhckRlc2MoKS4KCUEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gZW5jb2RlIFRZUEVJTkZPIHN0cnVjdHVyZXMuCgoyMDA0LTAxLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3dpbnByb2MuaCwgd2luZG93cy93aW5wcm9jLmM6CglQcm9wZXJseSB0cmFuc2xhdGUgdGhlIG1lc3NhZ2UgcmVzdWx0IGZvciBXTV9HRVRURVhULXN0eWxlIG1lc3NhZ2VzLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYXVkaW9pby9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lamFjay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lbmFzL01ha2VmaWxlLmluOgoJQWxsIHNvdW5kIGRyaXZlcnMgbmVlZCAtbGR4Z3VpZC4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvYXBpYnVmLmMsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9jbHNpZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEFsZXhleSBTcGlyaWRvbm92IDxsZXNoYUBuZXRtYW4ucnU+CglGaXhlZCB0eXBvIGluIG1lbXNldCBjYWxsLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiB3aXRoIHBzZXVkbyBjb25zb2xlIGhhbmRsZSBuYW1lcyBpbgoJT3BlbkNvbnNvbGUuCgoJKiBkbGxzL3VzZXIvZm9jdXMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1TRE4gaXMgd3Jvbmc6IFdNX05DQUNUSVZBVEUgdGFrZXMgdGhlIHNhbWUgbFBhcmFtIGFzIFdNX0FDVElWQVRFLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJV2Ugc2hvdWxkIGZvcndhcmQgV01fQ09NTUFORCBub3RpZmljYXRpb24gdG8gdGhlIGFjdGl2ZSBwYWdlIGZvciBhbnkKCWFkZGl0aW9uYWwgbm9uLXN0YW5kYXJkIGNvbnRyb2xzIGluIHRoZSBwcm9wZXJ0eSBzaGVldCBmcmFtZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jOiBKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglBbGxvdyByZWdlZGl0IHRvIGVkaXQgKERlZmF1bHQpIGtleSB2YWx1ZXMuCgoJKiBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG9ic29sZXRlIHNlY3Rpb24gYWJvdXQgdGhyZWFkLXNhZmV0eS4KCUNsZWFudXAgc2VjdGlvbiBvbiBjb25maWd1cmF0aW9uLCBtZXJnZWQgdGhlIHJlbWFpbmluZyBiaXQgaW50byB0aGUKCSJLbm93biBwcm9ibGVtcyIgc2VjdGlvbi4KCU1pc2NlbGxhbmVvdXMgY2xlYW51cHMgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZWZvcm1hdCBhbmQgY2xlYW51cCB0aGUgc2hyaW5rLmMgZmlsZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbgoJZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIFdpbmUgc291cmNlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgb2Jzb2xldGUgaW5mbyBhYm91dCB3cmFwcGVycywgdGhleSBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgdGhlIGRldmVsb3BlciBoaW50cyB0byByZWZsZWN0IHRoZSB1dWlkIGxpYnMgbW92ZS4KCU1ha2Ugc3VyZSBhbGwgZGlyZWN0b3JpZXMgZW5kIHdpdGggYSAvLCBmb3IgY29uc2lzdGVuY3kuCgoJKiBpbmNsdWRlL3V4dGhlbWUuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgbWlzc2luZyBEVEJHXyogZGVmaW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvdGFiLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvaGVhcC5jLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJRml4IGEgZGVidWcgbWVzc2FnZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJQSBzbWFsbCBudW1iZXIgb2YgY2xlYW51cHMuCglBIG5ldyBmdW5jdGlvbiB0byBmaW5kIGEgZ2l2ZW4gTkFNRSBpbiBhIHR5cGUgbGlicmFyeS4KCVN1cHBvcnQgZm9yIGdyb3dpbmcgYSB0bGIgc2VnbWVudCB3aGVuIGl0IG92ZXJmbG93cy4KCUR1cGxpY2F0ZSBHVUlEIGVsaW1pbmF0aW9uLgoJR1VJRCBoYXNoIGZpeGVzLgoJTkFNRSBoYXNoIGZpeGVzLgoJRHVwbGljYXRlIFNUUklORyBlbGltaW5hdGlvbiBmaXhlcy4KCUR1cGxpY2F0ZSBJTVBPUlQgZWxpbWluYXRpb24gZml4ZXMuCglUeXBlIGluZm9ybWF0aW9uIHNhdmUgb3JkZXJpbmcgZml4ZXMuCglTdXBwb3J0IGZvciB3cml0aW5nIG91dCB0aGUgQ1VTVERBVEEgYW5kIENVU1REQVRBR1VJRCBzZWdtZW50cy4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIEFkZCB0aGUgc2FtZSBwcm90ZWN0aW9uIHRvIE1ESV9BdWdtZW50RnJhbWVNZW51IGFzIG9uZSBleGlzdGluZyBpbgoJICBNRElfUmVzdG9yZUZyYW1lTWVudSBhZ2FpbnN0IHJlcGV0aXRpdmUgY2FsbHMuCgktIFVzZSBXaW5kb3dzIGRlZmF1bHQgaWNvbiBmb3Igc3lzdGVtIG1lbnUgYml0bWFwIGlmIHRoZXJlIGlzIG5vIG9uZQoJICBzdXBwbGllZCBieSBhIGNoaWxkIHdpbmRvdyBhcyBXaW5kb3dzIGRvZXMuCgktIFVzZSBHZXRTeXN0ZW1NZW51KCkgdG8gbG9hZCBzeXN0ZW0gbWVudSBmb3IgYSBjaGlsZCB3aW5kb3csCgkgIG90aGVyd2lzZSB0aGVyZSBpcyBubyB3YXkgdG8gZ2VuZXJhdGUgV01fU1lTQ09NTUFORCBtZW51IG1lc3NhZ2VzLgoJLSBSZXN0b3JlIGNoZWNrIGluIFdNX1NJWkUgTURJIGNoaWxkIGhhbmRsZXIgZXJyb25lb3VzbHkgcmVtb3ZlZAoJICBlYXJsaWVyLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJhY2sgb3V0IGFuIHVuaW50ZW50aW9uYWwgY2hhbmdlIHRoYXQgc251Y2sgaW4gd2l0aCB0aGUgWElNIGNoYW5nZS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kM2Q5L01ha2VmaWxlLmluLCBkbGxzL2QzZHg4L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dDgvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2RtY29tcG9zL01ha2VmaWxlLmluLCBkbGxzL2RtaW1lL01ha2VmaWxlLmluLAoJICBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLCBkbGxzL2Rtc2NyaXB0L01ha2VmaWxlLmluLAoJICBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sIGRsbHMvZG1zeW50aC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZHN3YXZlL01ha2VmaWxlLmluLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpc3lzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWphY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZW5hcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL01ha2VmaWxlLmluOgoJT25seSBsaW5rIGFnYWluc3QgbGliZHhndWlkIHdoZXJlIG5lY2Vzc2FyeS4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9nZGkvYmlkaS5jLAoJICBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbmV0YXBpMzIvbmJ0LmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLAoJICBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRsbHMvd3NvY2szMi9zZXJ2aWNlLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy94MTFkcnYveHJhbmRyLmMsCgkgIHdpbmRvd3MvdXNlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbWlzc2luZyAnXG4ncyB0byBkZWJ1ZyB0cmFjZXMuCgoyMDA0LTAxLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgZGxscy9keGd1aWQvLmN2c2lnbm9yZSwKCSAgZGxscy9keGd1aWQvTWFrZWZpbGUuaW4sIGRsbHMvZHhndWlkL2R4OGd1aWQuYywKCSAgZGxscy9keGd1aWQvZHg5Z3VpZC5jLCBkbGxzL2R4Z3VpZC9keGd1aWQuYywgZGxscy9tYWtlX2RsbHMsCgkgIGRsbHMvdXVpZC8uY3ZzaWdub3JlLCBkbGxzL3V1aWQvTWFrZWZpbGUuaW4sIGRsbHMvdXVpZC91dWlkLmMsCgkgIGxpYnMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJTW92ZWQgbGlidXVpZCB0byB0aGUgZGxscyBkaXJlY3RvcnksIGFuZCBtb3ZlZCB0aGUgRGlyZWN0WCBHVUlEcyBpbnRvCglhIHNlcGFyYXRlIGxpYmR4Z3VpZCBsaWJyYXJ5LgoKCSogZGxscy91eHRoZW1lL21zc3R5bGVzLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRW5zdXJlIE1TU1RZTEVTX1NldEFjdGl2ZVRoZW1lIGZhaWxzIHByb3Blcmx5IHdoZW4gdGhlbWUgaXMgaW52YWxpZC4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJVmlzdWFsIFN0dWRpbyA2IHVzZXJzIHNob3VsZCBnZXQgdGhlIHByb2Nlc3NvciBwYWNrLiAgTm90ZSB0aGlzIGluIHRoZQoJVmlzdWFsIEMrKyBzZWN0aW9uLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglUaGVyZSBpcyBubyBuZWVkIGZvciBhIHByaXZhdGUgaGVhcCBpbiBjb21jdGwzMiwgbWVtb3J5IGFsbG9jYXRpb25zCglzaG91bGQgZ28gdG8gdGhlIHN0YW5kYXJkIHByb2Nlc3MgaGVhcCAocmVwb3J0ZWQgYnkgR2UgdmFuIEdlbGRvcnApLgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCVlvc2hpcm8gVGFrZW5vIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUluIFdpbmRvd3MsIHRoZSBsZWFkaW5nIGJ5dGUgZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGFyZSBzZXQgdG8gdXBwZXIKCWJ5dGUuIElmIHNpbmdsZSBieXRlIGNoYXJhY3RlciBpcyB1c2VkLCB0aGUgdXBwZXIgYnl0ZSBpcyBzZXQgdG8gMC4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbiB0aGUgV01fTURJU0VUTUVOVSBoYW5kbGVyIHVzZSBhbiBleGlzdGluZyBmcmFtZSBtZW51IGlmIHRoZSBwYXNzZWQKCXZhbHVlIGlzIDAuCglWaXNpbyBleHBlY3RzIHRoYXQgc2VwYXJhdG9yIGluIHRoZSBXaW5kb3cgbWVudSBoYXMgSUQgMC4KCUNvcGUgd2l0aCBhIGRlc3Ryb3llZCBtZW51IGhhbmRsZSBpbiBXTV9NRElSRUZSRVNITUVOVSBoYW5kbGVyLgoKCSogZGxscy9nbHV0MzIvZ2x1dC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgZ2x1dENyZWF0ZU1lbnVXaXRoRXhpdCwgZ2x1dENyZWF0ZVdpbmRvd1dpdGhFeGl0IGFuZAoJZ2x1dEluaXRXaXRoRXhpdCBmdW5jdGlvbnMuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglQcmV2ZW50IHNlZ2ZhdWx0IGlmIG5vIHRoZW1lIGlzIHNldC4KCgkqIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU21hbGwgZml4IGZvciB0aGUgV1BSX1NJR05FRCBjYXNlIChjb3VudCB0aGUgc2lnbikuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglXaW5lIGFsc28gc3VwcG9ydHMgdGhlIG5jYWNuX25wIHByb3RvY29sIHNlcXVlbmNlLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGRvbid0IGxpbmsgZGlyZWN0bHkgdG8gTlRETEw7IHVzZSBNdWx0aUJ5dGVUb1dpZGVDaGFyKCkgaW5zdGVhZCBvZgoJICBSdGxDcmVhdGVVbmljb2RlU3RyaW5nRnJvbUFzY2lpeigpCgktIGRpcmVjdGx5IGNhbGwgSW5pdENvbW1vbkNvbnRyb2xzRXgoKQoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBkZWZpbmUgYWRkaXRpb25hbCBzaGVsbCBwYXRocyBmb3IgQ1NJRExfLi4uIGNvbnN0YW50cwoJLSByZW1vdmUgc29tZSBzdXBlcmZsdW91cyBjb21tYXMKCjIwMDQtMDEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMl8xNi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmgsIGRsbHMvb2xlY2xpL29sZWNsaTE2LmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsCgkgIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd3R5cGVzLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmlkbCwgd2luZG93cy9zcHkuYzoKCU1vdmVkIGEgZmV3IHJlbWFpbmluZyAxNi1iaXQgZGVmaW5pdGlvbnMgb3V0IG9mIHRoZSBzdGFuZGFyZCBoZWFkZXJzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsCgkgIGluY2x1ZGUvc2hsd2FwaS5oOgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCUZpeCB2YXJpb3VzIGZ1bmN0aW9uIHByb3RvdHlwZXMgdG8gY29uZm9ybSB0byBQU0RLLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCUZpeCBhIGNvdXBsZSBvZiBzcGVsbGluZyBlcnJvcnMuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaDoKCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglGaXggdmFyaW91cyBmdW5jdGlvbiBwcm90b3R5cGVzIHRvIGNvbmZvcm0gdG8gUFNESy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RyaXZlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYywKCSAgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmMsCgkgIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy91c2VyL3Rlc3RzL3dzcHJpbnRmLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYywgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWw6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCXdpbmVocS5jb20gLT4gd2luZWhxLm9yZwoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfQ24ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0ZyLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0tvLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9ObC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUGwucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1B0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9SdS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1RoLnJjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSB0YWIgY29udHJvbCBzaG91bGQgYmUgbXVsdGlsaW5lLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglEaXNjYXJkIG1vdXNlIGJ1dHRvbiB1cCBldmVudHMgaWYgbm8gYnV0dG9uIGlzIGN1cnJlbnRseSBwcmVzc2VkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIElTRl9EZXNrdG9wX2ZuR2V0VUlPYmplY3RPZigpOiBhbGxvdyBjb250ZXh0IG1lbnUgb24gdGhlIGRlc2t0b3AKCSAgd2l0aG91dCBhbnkgc2VsZWN0ZWQgaXRlbTsgcHJlc2VydmUgcmV0dXJuIGVycm9yIGNvZGVzLgoJLSBJU0ZfRGVza3RvcF9mbkdldERpc3BsYXlOYW1lT2YoKTogZG9uJ3QgaW5pdGlhbGl6ZSB3aG9sZSBjaGFyYWN0ZXIKCSAgYXJyYXkgd2l0aCB6ZXJvLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBJU2hlbGxGb2xkZXJfZm5QYXJzZURpc3BsYXlOYW1lKCk6IHJldHVybiBFX0lOVkFMSURBUkcgaW5zdGVhZCBvZgoJICBFX09VVE9GTUVNT1JZLgoJLSBJU2hlbGxGb2xkZXJfZm5HZXRVSU9iamVjdE9mKCk6IHByZXNlcnZlIHJldHVybiBlcnJvciBjb2Rlcy4KCS0gSVNoZWxsRm9sZGVyX2ZuR2V0RGlzcGxheU5hbWVPZigpOiBkb24ndCBpbml0aWFsaXplIHdob2xlIGNoYXJhY3RlcgoJICBhcnJheSB3aXRoIHplcm8uCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXByb3ZlZCBlcnJvciBoYW5kbGluZy4KCVNIRUxMMzJfR2V0SXRlbUF0dHJpYnV0ZXMoKTogc3VwcG9ydCBmb3IgU0ZHQU9fTElOSyBhdHRyaWJ1dGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGMzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmlkYzMyL01ha2VmaWxlLmluLCBkbGxzL21zdmlkYzMyL21zdmlkYzMyLnNwZWMsCgkgIGRsbHMvbXN2aWRjMzIvbXN2aWRlbzEuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1lcmdlZCBmZm1wZWcncyBNUyBWaWRlbyAxIGRlY29kZXIgYnkgTWlrZSBNZWxhbnNvbi4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS9tZXRyaWMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLCBkbGxzL3V4dGhlbWUvcHJvcGVydHkuYywKCSAgZGxscy91eHRoZW1lL3N0eWxlbWFwLmMsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy91eHRoZW1lL3V4aW5pLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUxvYWQgcHJvcGVydGllcyBmcm9tIHRoZSB0aGVtZSBpbmkuCglJbXBsZW1lbnRlZCBtb3N0IG9mIHRoZSBHZXRUaGVtZSogZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUlTRl9NeUNvbXB1dGVyX2ZuR2V0RGlzcGxheU5hbWVPZigpOiByZXR1cm4gQ0xTSUQgcGF0aHMgb2YgdmlydHVhbAoJZm9sZGVycyByb290ZWQgdW5kZXIgIk15IENvbXB1dGVyIiBmb2xkZXIsIGJldHRlciBlcnJvciBoYW5kbGluZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmV0dXJuICdNeSBDb21wdWVyJyBQSURMIHdoZW4gY2FsbGluZyBEZXNrdG9wLT5QYXJzZURpc3BsYXlOYW1lKCkgd2l0aAoJZW1wdHkgcGF0aCBzdHJpbmcuCgoJKiBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglHZW5lcmF0ZSBhbGwgYmluYXJ5IHJlc291cmNlcyB1c2luZyBiaW4ycmVzLgoKCSogZGxscy93aW5lcHMvcHMuYzogQmxha2UgTGV2ZXJldHQgPGJsZXZlcmV0dEBhdHQubmV0PgoJUHJpbnRpbmcgYSBkYXNoZWQgbGluZSBjYXVzZXMgYWxsIGxhdGVyIHNvbGlkIGxpbmVzIGluIHBvc3RzY3JpcHQKCW91dHB1dCB0byBiZSBkYXNoZWQuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VybG1vbi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoJQ2hlY2sgd2hldGhlciBfTVNDX1ZFUiBpcyBkZWZpbmVkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jb2RlcGFnZS5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLCBkbGxzL2tlcm5lbC9jcHUuYywKCSAgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL2tlcm5lbC92aXJ0dWFsLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZ2l0LmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYywgZGxscy9ycGNydDQvbmRyX29sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvd2luZWRvcy9pbnQyZi5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsCgkgIGRsbHMvd2luZWRvcy92eGQuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmM6CglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJUmVuYW1lIExBUkdFX0lOVEVHRVIgYW5kIFVMQVJHRV9JTlRFR0VSIG1lbWJlcnMgInMiIHRvICJ1IiB0byBjb25mb3JtCgl3aXRoIFBTREsuCgoJKiBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbDoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJSW1wcm92ZWQgUlBNIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy93aW5lcHMvd3BzX0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglSZXNvdXJjZSB1cGRhdGVzLgoKMjAwNC0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDEyMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwKCSAgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IFBhdGhHZXRTaG9ydFBhdGhBL1cgYW5kIGNoYW5nZSBpdHMgcHJvdG90eXBlIHRvIG1hdGNoIHRoZQoJZG9jdW1lbnRhdGlvbiBvbiBNU0ROLgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJT25seSByZXR1cm4gdmFsaWQgZmlsZSBzeXN0ZW0gbmFtZXMgZnJvbSBSZW5kZXJGSUxFTkFNRUEvVygpIGJ5IHVzaW5nCglTSEVMTF9HZXRQYXRoRnJvbUlETGlzdEEvVygpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJUmVpbXBsZW1lbnRhdGlvbiBvZiBTSEdldFBhdGhGcm9tSURMaXN0QS9XKCkgdXNpbmcgdGhlIG5ldyBoZWxwZXIKCWZ1bmN0aW9ucyBTSEVMTF9HZXRQYXRoRnJvbUlETGlzdEEvVygpLiBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGF2b2lkcwoJdXNpbmcgSVNoZWxsRm9sZGVyOjpHZXREaXNwbGF5TmFtZU9mKCksIHNvIHRoYXQgaXQKCS0gcmV0dXJucyB0aGUgYWJzb2x1dGUgZmlsZSBzeXN0ZW0gcGF0aCwgbm90IHJlbGF0aXZlIHRvIHRoZSBkZWtzdG9wCgktIHJldHVybnMgRkFMU0UgYXMgZXJyb3IgY29kZSBpZiB0aGUgcGF0aCBjYW4gbm90IGNvbnZlcnRlZCBpbiBhIHZhbGlkCgkgIGZpbGUgc3lzdGVtIHBhdGgKCS0gZG9lc24ndCByZXR1cm4gdmlydHVhbCBDTFNJRCBwYXRocwoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOgoJQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBDcmVhdGVUeXBlTGliMigpIGFuZCB0aGUgSUNyZWF0ZVR5cGVMaWIyIGFuZAoJSUNyZWF0ZVR5cGVJbmZvMiBpbnRlcmZhY2VzLgoKCSogd2luZG93cy9zcHkuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjb3JyZWN0IHRyZWV2aWV3IHN0cnVjdHMgdG8gbWVzc2FnZSBzcHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlIHRoZSBzZWxlY3Rpb24gdG8gdGhlIHByZXZpb3VzIHNpYmxpbmcgaWYgaXQgY2FuJ3QgZ28gdG8gdGhlIG5leHQKCW9yIHRoZSBwYXJlbnQuCglGaXggdGhlIHNlbGVjdGlvbiBjaGFuZ2UgbG9naWMuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVVzZSBmdWxsIHBhdGhzIGluc3RlYWQgb2Ygb25seSBmaWxlbmFtZXMgaW4gaWNvbiBjYWNoZSB0byBkaXN0aW5ndWlzaAoJYmV0d2VlbiBkaWZmZXJlbnQgZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudGVkIFNIR2V0UmVhbElETCgpLgoKCSogZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveGltLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIFgxMSBYSU0gY2FsbGJhY2tzIHRvIGVuYWJsZSBmdWxsIElNRSBzdXBwb3J0LgoJQ29ycmVjdCBzb21lIHRpbWluZyBpc3N1ZXMgd2l0aCBYSU0gaW5wdXQuCglTdGFydCB0byBwcm92aWRlIHRoZSBmcmFtZXdvcmsgZm9yIHRoZSBNU0lNRSBtZXNzYWdlcy4KCgkqIHByb2dyYW1zL3J1bmRsbDMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOgoJRG9uJ3QgbGluayBkaXJlY3RseSB0byAxNi1iaXQgQVBJcyBmb3IgcG9ydGFiaWxpdHkgcmVhc29ucyAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgU3RldmVuIEVkd2FyZHMpLgoKCSogd2luZG93cy9wYWludGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBSRFdfVXBkYXRlUmduKCksIGlmIGhSZ24gaXMgemVybywgY2xlYXIgdGhlIHdpbmRvd3MgdXBkYXRlIHJlZ2lvbgoJaWYgaXQgaXMgYW4gZW1wdHkgcmVnaW9uLgoKMjAwNC0wMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdGVzdHMgdGhhdCBhcmUgY292ZXJlZCBieSB2YXJ0eXBlLmMuCglDYWxsIGJ5IHBvaW50ZXIgZm9yIG1vcmUgZnVuY3Rpb25zIG5vdCBhdmFpbGFibGUgaW4gZWFybHkgdmVyc2lvbnMuCglBZGQgdGVzdHMgZm9yIFZhckZpeC9WYXJJbnQvVmFyTmVnLCBWYXJGb3JtYXQgIm9uL29mZi95ZXMvbm8iLgoJRml4IHRlc3RzIHRoYXQgYXNzdW1lZCByZWxhdGl2ZSBkYXRlcy4KCU1ha2UgQlNUUiBjb3B5IHRlc3Qgc2VwYXJhdGUuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBTSEdldERhdGFGcm9tSURMaXN0QS9XKCk6IGhhbmRsZSBkcml2ZXMgd2hlbiByZXRyaWV2aW5nIGZpbGUKCSAgYXR0cmlidXRlcwoJLSBmaXhlZCBlcnJvciBoYW5kbGluZyB0byBhdm9pZCBHUEZzCgoJKiB0b29scy93aW5hcGkvY190eXBlLnBtOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeGVkIG1pc3VzZSBvZiBzY2FsYXIgcmVmZXJlbmNlIHZhcmlhYmxlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgaW5jbHVkZS9ycGNkY2UuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudGVkIFJwY0lzUHJvdFNlcVZhbGlkLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuaCwgZGxscy90dHlkcnYvYml0bWFwLmMsCgkgIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3R0eWRydi93bmQuYywgZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvcGVuLmMsCgkgIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9jbGlwcGluZy5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L29wZW5nbC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYvd2ludGFiLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFmb250LmgsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVzaW9ucyBvZiBnZGkuaC4KCgkqIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy91bmljb2RlL2NfMDQyLmMsCgkgIGxpYnMvdW5pY29kZS9jcG1hcC5wbCwgbGlicy91bmljb2RlL2NwdGFibGUuYywgbGlicy91bmljb2RlL21idG93Yy5jLAoJICBsaWJzL3VuaWNvZGUvd2N0b21iLmMsIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmLCBvYmplY3RzL2ZvbnQuYywKCSAgb2JqZWN0cy90ZXh0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggTXVsdGlCeXRlVG9XaWRlQ2hhciBhbmQgV2lkZUNoYXJUb011bHRpQnl0ZSB3aGVuIGNhbGxlZCB3aXRoIGNvZGUKCXBhZ2UgQ1BfU1lNQk9MLgoJUmVtb3ZlIHRoZSBzeW1ib2wgZm9udCBmcm9tIHRoZSBjb2RlIHBhZ2UgdGFibGUsIHNvIGl0IGlzIG5vdCByZXBvcnRlZAoJYXMgYSB2YWxpZC9zdXBwb3J0ZWQvaW5zdGFsbGVkIGNvZGUgcGFnZS4KCVJlbW92ZSB3b3JrYXJvdW5kcyBmb3IgdGhlIGJhZGx5IGJlaGF2ZWQgTXVsdGlCeXRlVG9XaWRlQ2hhciBhbmQgY28uCglpbiBhIGZldyBwbGFjZXMuCgoJKiBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsCgkgIGxpYnMvd2luZS93aW5lLmRlZjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIHByb2JsZW1zIGZvdW5kIHdoaWxlIGNvbXBpbGluZyBhbmQgbGlua2luZyBXaW5lIHVuZGVyCglDeWd3aW4uCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIE1DSVduZCBwbGF5IGEgYml0IGJldHRlciBhcyBhbiBNREkgY2hpbGQuCgoJKiBkbGxzL3dpbmVwcy9idWlsdGluLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jLAoJICBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3hmb250LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUdldCByaWQgb2Ygc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIERDIHN0cnVjdHVyZSBmcm9tIG91dHNpZGUgR0RJLgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zYWNtZHJ2LmgsCgkgIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXNhY21kcnYuaDoKCU1vdmVkIG1zYWNtZHJ2LmggdG8gaW5jbHVkZSBkaXJlY3RvcnkgdG8gYXZvaWQgaW50ZXItZGxsIGhlYWRlcgoJZGVwZW5kZW5jaWVzLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0MTYuYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVN0dWIgZm9yIERpQnVpbGRDbGFzc0Rydkxpc3QoKS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGR1cGxpY2F0ZSAnPUM6JyBlbnRyaWVzIGluIHRoZSBjaGlsZCBwcm9jZXNzIGVudmlyb25tZW50LgoKCSogZGxscy9pY2N2aWQvaWNjdmlkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJQ01fREVDT01QUkVTU0VYLCBmaXggc29tZSBidWdzLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQ6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlZC4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZW5lcmF0ZSBvaygiLi4uXG4iKSBjYWxscy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZGRyYXcvdGVzdHMvZGRyYXdtb2Rlcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWVyZ2UgdGhlIE1ESSBhbmQgY29tbW9uIHdpbmRvdyBjcmVhdGlvbiBjb2RlLiBDaGFuZ2UgdGhlIHdheSBNREkKCWNoaWxkcmVuIGFyZSBtYW5hZ2VkIGluIE1ESUNsaWVudC4KCUFkZCBzdXBwb3J0IGZvciBNRElDUkVBVEVTVFJVQ1QgQTwtPlcgY29udmVyc2lvbnMuCglBZGQgc3VwcG9ydCBmb3IgV01fTURJUkVGUkVTSE1FTlUuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBjcmVhdGVfcHJvY2VzcygpLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJWWV0IGFnYWluIGNhdGNoaW5nIHVwIHdpdGggRW4ucmMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGQgYXVkaW8gdGFiIHdpdGggZmlyc3QgcGFzcyBhdCBhdXRvZGV0ZWN0aW9uIG9mIGF1ZGlvIGRyaXZlci4KCURvdWJsZSBjbGlja2luZyBhIGRyaXZlIGVudHJ5IGJyaW5ncyB1cCBkcml2ZSBlZGl0IHdpbmRvdy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbm90aWZ5IGFuZCBwcm9wZXJ0eSBzZXQgdG8gZHNvdW5kIG91dHB1dCBkcml2ZXIuCglDbGVhbmVkIHVwIGV4aXN0aW5nIG5vdGlmeSBhbmQgcHJvcGVydHkgc2V0IGZvciBjYXB0dXJlLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9wbGF5c291bmQuYywKCSAgZGxscy93aW5tbS93aW5lbW0uaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCB0aHJlYWQgaGFuZGxlIGxlYWtzLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL250ZGxsL3BhdGguYywgZmlsZXMvZG9zX2ZzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gUnRsR2V0RnVsbFBhdGhOYW1lX1U6IHJld3JpdHRlbiBzbyB0aGF0IHRoZSBzb3VyY2UgJiBkZXN0aW5hdGlvbgoJICBidWZmZXIgY2FuIGJlIHRoZSBzYW1lCgktIEdldEZ1bGxQYXRoTmFtZVtBV106IG5vdyBjYWxsIFJ0bEdldEZ1bGxQYXRoTmFtZV9VCgktIEdldFNob3J0UGF0aE5hbWVXOiBmaXhlZCByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gbGFzdCBwYXRjaAoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBmaXggdHlwb3MgaW4gc2hlbGxsaW5rLmMgaGVhZGVyIGNvbW1lbnQgYW5kIGEgc3RydWN0IGNvbW1lbnQKCS0gY29ycmVjdGVkIFNDRl9VTklDT0RFIGNvbnN0YW50IGFuZCB1c2UgdGhlIHZhbHVlIG9mIFNDRl9VTkMgaW5zdGVhZAoJLSBpbXBsZW1lbnRlZCBJU2hlbGxMaW5rX0NvbnN0cnVjdEZyb21GaWxlKCkgdG8gcmVhZCBzaGVsbCBsaW5rcyBmcm9tCgkgIGZpbGVzCgktIGNhbGwgSVNoZWxsTGlua19Db25zdHJ1Y3RGcm9tRmlsZSgpIGluIElTRl8uLi5fZm5HZXRVSU9iamVjdE9mKCkKCSAgd2hlbiBiZWluZyBxdWVyaWVkIGZvciBJU2hlbGxMaW5rIGludGVyZmFjZQoKCSogcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmgsIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCVJlZ2VkaXQgR1VJIGVuaGFuY2VtZW50cyB3aXRoIG5ldyBXaW5kb3dzLWxpa2UgaWNvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGZpeCB0eXBvCgktIHJldHVybiBzdHJpbmcgbGVuZ3RoIGZyb20gU0hFTEwzMl9HVUlEVG9TdHJpbmdBKCkKCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeGVkIERPUyBFWEUgbG9hZGVyIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSByZWFseSBoYXZlIG9ubHkgNCBieXRlcyBvbgoJdGhlIGxhc3QgcGFnZSBvZiB0aGUgZXhlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglZZXQgYW5vdGhlciB1cGRhdGUuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJUmVtb3ZlIG9ic29sZXRlIGluZm9ybWF0aW9uIGFib3V0IHdpbjMuMSBkcml2ZXJzLgoKCSogbG9hZGVyL21haW4uYzoKCURpc2FibGUgdGhlIGV4ZWMgc2hpZWxkIHdvcmthcm91bmQgZm9yIG5vdywgaXQncyBjYXVzaW5nIHRvbyBtdWNoCgl0cm91YmxlLgoKCSogaW5jbHVkZS9wc2hwYWNrOC5oOiBSZW1vdmVkIHVzZWxlc3Mgd2FybmluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9iYW5kLmMsCgkgIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLCBkbGxzL2RtYmFuZC9yZWdzdnIuYywKCSAgZGxscy9kbWJhbmQvdmVyc2lvbi5yYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsCgkgIGRsbHMvZG1jb21wb3MvcmVnc3ZyLmMsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL3ZlcnNpb24ucmMsIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvcmVnc3ZyLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc29uZy5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3ZlcnNpb24ucmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsCgkgIHdpbmVkZWZhdWx0LnJlZywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLAoJICBkbGxzL2RtbG9hZGVyL3JlZ3N2ci5jLCBkbGxzL2RtbG9hZGVyL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9yZWdzdnIuYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLCBkbGxzL2Rtc2NyaXB0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1zdHlsZS9NYWtlZmlsZS5pbiwgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL21lbG9keWZvcm11bGF0aW9udHJhY2suYywgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLCBkbGxzL2Rtc3R5bGUvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvdmVyc2lvbi5yYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsIGRsbHMvZG1zeW50aC9yZWdzdnIuYywKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywKCSAgZGxscy9kbXN5bnRoL3ZlcnNpb24ucmMsIGRsbHMvZG11c2ljL2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9jbG9jay5jLAoJICBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9oZWxwZXIuYywgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9wb3J0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9yZWdzdnIuYywgZGxscy9kbXVzaWMvdGhydS5jLAoJICBkbGxzL2RtdXNpYy92ZXJzaW9uLnJjLCBkbGxzL2RtdXNpYzMyL2RtdXNpYzMyX21haW4uYywKCSAgZGxscy9kbXVzaWMzMi92ZXJzaW9uLnJjLCBkbGxzL2Rzd2F2ZS8uY3ZzaWdub3JlLAoJICBkbGxzL2Rzd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy9kc3dhdmUvZHN3YXZlLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZS5zcGVjLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLCBkbGxzL2Rzd2F2ZS9yZWdzdnIuYywKCSAgZGxscy9kc3dhdmUvdmVyc2lvbi5yYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kbHMxLmgsCgkgIGluY2x1ZGUvZGxzMi5oLCBpbmNsdWRlL2RtZGxzLmgsIGluY2x1ZGUvZG1lcnJvci5oLAoJICBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2J1ZmYuaCwgaW5jbHVkZS9kbXVzaWNjLmgsCgkgIGluY2x1ZGUvZG11c2ljZi5oLCBpbmNsdWRlL2RtdXNpY2kuaCwgaW5jbHVkZS9kbXVzaWNzLmgsCgkgIGxpYnMvdXVpZC9keGd1aWQuYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJLSB1cGRhdGVkIHJlc291cmNlcyB0byBEWDkKCS0gY29tcGxldGVseSByZXdyaXR0ZW4gaGVhZGVycyAoRFg5IGNvbXBhdC47IGxvb2sgbXVjaCBuaWNlciBub3cgOz0pCgktIHJlbW92ZWQgSURpcmVjdE11c2ljU29uZyBhbmQgSURpcmVjdE11c2ljTWVsb2R5Rm9ybXVsYXRpb25UcmFjawoJICAod2hpY2ggYXJlIHJlbW92ZWQgZnJvbSBEWDk7IHdlcmVuJ3QgaW1wbGVtZW50ZWQgaW4gRFg4IGFueXdheSkKCS0gY29tYmluZWQvc2ltcGxpZmllZCBJRGlyZWN0TXVzaWNTb21ldGhpbmcgLyBJRGlyZWN0TXVzaWNPYmplY3QgLwoJICBJUGVyc2lzdFN0cmVhbSBmb3Igb2JqZWN0cyB0aGF0IHN1cHBvcnQgbG9hZGluZwoJLSBpbXBsZW1lbnRlZCBJRGlyZWN0TXVzaWNPYmplY3Qgb24gYWxsIHN1Y2ggb2JqZWN0czsgdmlhIGdlbmVyaWMKCSAgZnVuY3Rpb25zCgktIGNvbWJpbmVkIElEaXJlY3RNdXNpY1RyYWNrKDgpL0lQZXJzaXN0U3RyZWFtIG9uIGFsbCB0cmFja3MKCS0gZnVsbHkgaW1wbGVtZW50ZWQgSURpcmVjdE11c2ljQ29udGFpbmVyIChhdCBsZWFzdCA5MCUgaWYgdGhlcmUgYXJlCgkgIG5vIHByaXZhdGUgaW50ZXJmYWNlcykKCS0gaW1wbGVtZW50ZWQgSURpcmVjdE11c2ljQ29sbGVjdGlvbiAoOTklIHdvcmsgJiBNUyBjb21wbGlhbnQKCSAgYmVoYXZpb3VyOyBleGNlcHQgZm9yIGluc3RydW1lbnRzKQoJLSB0cmllZCB0byBpbXBsZW1lbnQgSURpcmVjdE11c2ljSW5zdHJ1bWVudCAodW5mb3J0dW5hdGVseSB1c2VzIHNvbWUKCSAgZGlydHkgcHJpdmF0ZSBpbnRlcmZhY2VzLi4uIDooCgktIGFkZGVkIGRzd2F2ZS5kbGw7IERpcmVjdE11c2ljIFdhdmUKCS0gc29tZSBjaGFuZ2VzIGluIHN0eWxlCgktIG1hbnksIG1hbnkgbW9yZSA7KQoKMjAwNC0wMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIG1vdmUgSVNoZWxsRm9sZGVyX2ZuR2V0RGlzcGxheU5hbWVPZigpIGNvbnRlbnRzIGludG8gYSBuZXcgZnVuY3Rpb24KCSAgU0hFTExfRlNfUHJvY2Vzc0Rpc3BsYXlGaWxlbmFtZSgpIHRvIGNhbGwgaXQgYWxzbyBpbgoJICBJU0ZfRGVza3RvcF9mbkdldERpc3BsYXlOYW1lT2YoKSBhbmQgZG8gdGhlIHNhbWUgZmlsZSBzeXN0ZW0KCSAgcHJvY2Vzc2luZyBmb3IgdGhlIGRlc2t0b3AgbGV2ZWwKCS0gaGFuZGxlIGhpZGRlbiBmaWxlIGV4dGVuc2lvbnMgaW4gU0hFTExfRlNfUHJvY2Vzc0Rpc3BsYXlGaWxlbmFtZSgpLAoJICB0aGF0IGFyZSBjb25maWd1cmVkIGJ5ICJOZXZlclNob3dFeHQiIGluIHRoZSByZWdpc3RyeQoKCSogZGxscy9vbGUzMi9pZnMuYzogR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCVN3YXAgYXJndW1lbnRzIG9mIExvY2FsQWxsb2MgYW5kIG9ubHkgdXBkYXRlIE1hbGxvYzMyIGJsb2NrIG9uCglzdWNjZXNzZnVsIGFsbG9jYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBhIGxpbmsgdG8gdGhlIE1pY3Jvc29mdCBkb3dubG9hZCBwYWdlIG9mIHRoZSBWaXN1YWwgQmFzaWMKCXJ1bnRpbWUgZW52aXJvbm1lbnQuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jOiBGaXhlZCBhbiBlcnJvciBtZXNzYWdlLgoKCSogZGxscy91eHRoZW1lL21zc3R5bGVzLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLAoJICBkbGxzL3V4dGhlbWUvc3R5bGVtYXAuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLCBkbGxzL3V4dGhlbWUvdXhpbmkuYywKCSAgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRnVsbCBpbXBsZW1lbnRhdGlvbiBvZiBPcGVuVGhlbWVEYXRhLCBDbG9zZVRoZW1lRGF0YSwgYW5kCglJc1RoZW1lUGFydERlZmluZWQKCUV4cG9ydCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGJ5IG9yZGluYWwgb25seSAodG8gbWF0Y2ggTWljcm9zb2Z0J3MKCXV4dGhlbWUpLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjb21waWxhdGlvbiBpZiBGcmVldHlwZSBpc24ndCBpbnN0YWxsZWQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRGlyZWN0bHkgdXNlIHRoZSBob29rIHByb2MgZm9yIHRoZSBjdXN0b20gdGVtcGxhdGUgZGlhbG9nIHJhdGhlciB0aGFuCgljYWxsaW5nIGl0IHRocm91Z2ggYW5vdGhlciBkbGdwcm9jLgoJRGVsaXZlciB0aGUgb2xkIHN0eWxlIGZpbGVfb2sgbWVzc2FnZSB3aXRoIFNlbmRNZXNzYWdlLCB0aGlzIGFsbG93cwoJdGhlIGRpYWxvZyB0byBiZSBzdWJjbGFzc2VkIChhcyBBVEwvV1RMIGRvZXMpLgoJT25seSBkZWxpdmVyIHRoaXMgbWVzc2FnZSBpZiB0aGUgYXBwIGRpZG4ndCByZWplY3QgdGhlIFdNX05PVElGWQoJbWVzc2FnZS4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBtaXNzaW5nIGNvbW1hLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEUEFfQ3JlYXRlIGlzIG1pc3NpbmcgZnJvbSBhbGwgcmVjZW50IGltcG9ydCBsaWJyYXJpZXMgc28gdXNlCglHZXRQcm9jQWRkcmVzcyB0byBsb2FkIGl0LgoJQWRkICdcbicgdG8gJ29rJyBjYWxscy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnRlZCBQYXRoRmlsZUV4aXN0c0FuZEF0dHJpYnV0ZXNBL1cgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdXNlIENyZWF0ZUZpbGVNYXBwaW5nIG9uIGEgemVybyBsZW5ndGggZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvdGFiLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoyMDA0LTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy93aW5lcHMvYnVpbHRpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwKCSAgb2JqZWN0cy9mb250LmM6CglVc2UgdGhlIGV4cG9ydGVkIEZPTlRFTlVNUFJPQ1cgYXMgcGFyYW1ldGVyIGluIHRoZSBFbnVtRGV2aWNlRm9udHMKCWRyaXZlciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGRlZmluaW5nIGEgcHJpdmF0ZSBmdW5jdGlvbiB0eXBlLgoKCSogdG9vbHMvYmluMnJlcy5jOgoJV2luZG93cyByZW5hbWUoKSBuZWVkcyBhbiB1bmxpbmsoKSBmaXJzdCAocmVwb3J0ZWQgYnkgU3RldmVuCglFZHdhcmRzKS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3RyYW5zbGF0aW9uLmMsIHRvb2xzL3dyYy93cmMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZGVkIGEgbmV3IGZsYWcgdG8gd3JjLCB0byBiZSB1c2VkIHRvIGFzc2VzcyB0cmFuc2xhdGlvbnMKCWFkdmFuY2VtZW50LgoKCSogZGxscy9vbGVkbGcvb2xlZGxnX1B0LnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVVwZGF0ZSBvZiBQb3J0dWd1ZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTaGVsbFZpZXdfQ3JlYXRlTGlzdCgpLCBTSUNfSW5pdGlhbGl6ZSgpOiBlbmFibGUgdHJhbnNwYXJlbnQgaWNvbnMgb24KCXRoZSBkZXNrdG9wLgoKCSogZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSVN0cmVhbV9mbldyaXRlOiBvbmx5IHJldHVybiB3cml0ZSBjb3VudCBpZiB0aGUgZ2l2ZW4gcG9pbnRlcgoJcGFyYW1ldGVyIGlzIG5vdCBOVUxMLgoKCSogZGxscy90dHlkcnYvZGMuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3gxMWRydi9iaXRibHQuYywKCSAgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JydXNoLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3BhbGV0dGUuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZ3JhcGhpY3MvYml0Ymx0LmMsCgkgIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYzoKCVJlbW92ZWQgdGhlIGJpdHNQZXJQaXhlbCBmaWVsZCBpbiB0aGUgZ2VuZXJpYyBEQyBzdHJ1Y3R1cmUsIGFuZCBsZWF2ZQoJaXQgdXAgdG8gdGhlIGdyYXBoaWNzIGRyaXZlciB0byBkZWZpbmUgaXQgaWYgbmVjZXNzYXJ5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNhY2hlIHJlc3VsdHMgb2YgY2hlY2tzIHdpdGggc2lkZSBlZmZlY3RzLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVW5pZm9ybWl6ZSB0aGUgY3ZzIGRvd25sb2FkIGluc3RydWN0aW9ucyB3aXRoIHRoZSBvbmVzIG9uIFdpbmVIUS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBVbml4IGNvZGUgcGFnZSBpbiBOVERMTC4KCgkqIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy94MTFkcnYveGZvbnQuYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUZpeGVkIHR5cG9zLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG06CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUdldCByaWQgb2YgdGhlIHN0YXRpYyBtb2R1bGUgbGlzdC4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZGVjbGFyZSBQVF9SQVNfRk9MREVSIGZvciB0aGUgIlJBUyBDb25uZWN0aW9ucyIgZm9sZGVyCgktIGhhbmRsZSBQVF9SQVNfRk9MREVSIGFuZCBQVF9ORVRQUk9WSURFUiBpbiBkZWJ1Z2dpbmcgZnVuY3Rpb25zIGFuZAoJICBfSUxHZXRUZXh0UG9pbnRlcigpIC8gX0lMR2V0U1RleHRQb2ludGVyKCkKCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgU0hSZWdpc3RlclZhbGlkYXRlVGVtcGxhdGUuCgoJKiBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDcmVhdGVTdHJlYW1PbkZpbGUoKTogdXNlIGZsYWcgRklMRV9TSEFSRV9SRUFEIGZvciBvcGVuaW5nIE9MRSBzdHJlYW0KCWZpbGVzIHRvIGVuYWJsZSBmaWxlIHNoYXJpbmcuCgoyMDA0LTAxLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2RvY3VtZW50LmMsIGRsbHMvbXNodG1sL21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyeSB1c2luZyB0aGUgTW96aWxsYSBBY3RpdmUgWCBjb250cm9sIGluIE1TSFRNTC4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCUZpeGVkIEhDUl9HZXRFeGVjdXRlQ29tbWFuZFcoKSBiZWhhdmlvciB3aXRoIGEgY2xhc3MgbmFtZSAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgTWFydGluIEZ1Y2hzKS4KCVJlbW92ZWQgYSBjb3VwbGUgb2Ygbm8gbG9uZ2VyIHVzZWQgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3RlZCBkZWZpbml0aW9uIG9mIFBhdGhZZXRBbm90aGVyTWFrZVVuaXF1ZU5hbWUoKS4KCgkqIGRsbHMvbXNhY20vZm9ybWF0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggaW1wcm9wZXIgV0FWRUZPUk1BVEVYIHNpemUgY2FsY3VsYXRpb24gZm9yIG5vbiBQQ00gZm9ybWF0cy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHZhbHVlIHJlbmFtaW5nLiBDbGVhbnVwIGNvZGUsIGZpeCBhIGZldyBsZWFrcy4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS9tYWluLmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwKCSAgZGxscy91eHRoZW1lL3Byb3BlcnR5LmMsIGRsbHMvdXh0aGVtZS9zdHlsZW1hcC5jLAoJICBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvdXh0aGVtZS91eGluaS5jLAoJICBkbGxzL3V4dGhlbWUvdXh0aGVtZWRsbC5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgSU5JIGZpbGUgcHJvY2Vzc2luZy4KCUZ1bGwgaW1wbGVtZW50YXRpb24gb2YgR2V0VGhlbWVEb2N1bWVudGF0aW9uUHJvcGVydHkuCglEZWZpbmUgc3RyaW5nIG1hcHMgZm9yIHBhcnNpbmcgSU5JIGZpbGVzIGludG8gdXNlYWJsZSBmb3JtLgoJSW1wbGVtZW50ZWQgKHVuZG9jdW1lbnRlZCkgQXBwbHlUaGVtZSB0byBzZWxlY3QgY3VycmVudCB0aGVtZS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXR1cm4gSEZJTEVfRVJST1IgaW5zdGVhZCBvZiAtMSBpbiBfbHJlYWQuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYWNlIHRoZSBoaWdoIHBhcnQgb2YgdGhlIFNlZWsgb2Zmc2V0LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFN5c3RlbVRpbWVUb1R6U3BlY2lmaWNMb2NhbFRpbWUgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjb3VwbGUgb2YgbWlzc2luZyBkZWZpbml0aW9ucyB0byB1cmxtb24uaC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCUZpeGVkIGhhbmRsaW5nIG9mIGNvbnRyb2wgZm9jdXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjOiBUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglFbmFibGUgdGhlIGhlbHAgbWVudSBmb3IgcmVnZWRpdC4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJQ2hlY2sgZm9yIG92ZXJsYXBwaW5nIG1lbW9yeSB2aWV3cyBhbmQgZGVsZXRlIHRoZSBvZmZlbmRpbmcgdmlldyBpZgoJbmVjZXNzYXJ5LCB0byBlbnN1cmUgd2UgbmV2ZXIgaGF2ZSB0d28gdmlld3MgY292ZXJpbmcgdGhlIHNhbWUKCWFkZHJlc3MuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gRW5zdXJlIHdlIGNvcnJlY3RseSBhZGQgYSBiYWNrc2xhc2ggbGlrZSBXaW5kb3dzIDk4L1hQIGRvLgoJLSBHZW5lcmF0ZSBmaWxlbmFtZXMgdGhhdCBsb29rIGxpa2UgV2luZG93cyBkb2VzIChubyBsZWZ0IGRpZ2l0CgkgIHBhZGRpbmcpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIE1vdmVkIGFjdHVhbCBjb2RlIGZyb20gU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEgdG8gU0hHZXRGb2xkZXJQYXRoVywKCSAgYWRqdXN0ZWQgYW5kIHVuaWNvZGlmaWVkIGl0LgoJLSBSZXdyb3RlIFNIR2V0Rm9sZGVyUGF0aEEgdG8gY2FsbCBTSEdldEZvbGRlclBhdGhXLgoJLSBSZXdyb3RlIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhbQVddIHRvIGNhbGwgU0hHZXRGb2xkZXJQYXRoW0FXXS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUNvbXBsZXRlIEN6ZWNoIHRyYW5zbGF0aW9uIG9mIHNoZWxsMzIgcmVzb3VyY2VzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJUGFydGlhbGx5IGltcGxlbWVudCBSZWdPcGVuVXNlckNsYXNzZXNSb290LgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJV2Ugbm93IGhhdmUgb2ZmaWNpYWwgcGFja2FnZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdHJlYW1saW5lIHRoZSBlZGl0aW5nIGludGVyZmFjZXMgYSBiaXQuCglPcGVuIHRoZSByZWdpc3RyeSB3aXRoIG9ubHkgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIGZvciB0aGUKCW9wZXJhdGlvbi4gRml4IGEgZmV3IGxlYWtzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHZXREZWZhdWx0Q29tbUNvbmZpZyBmcm9tIEEgdG8gVy4KCUdldCByaWQgb2YgYSBXLT5BIGNyb3NzIGNhbGwgYXQgdGhlIHNhbWUgdGltZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVW5pY29kaWZ5IHNvbWUgY29tbSBmdW5jdGlvbnMuCglHZXQgcmlkIG9mIHNvbWUgVy0+QSBjcm9zcyBjYWxscyBhbG9uZyB0aGUgd2F5LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaDoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCUFkZGVkIGNvbnRleHQgbWVudSBzdXBwb3J0LgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQ2hhbmdlIFVSTCB1c2VkIGluIGh0dHAgdGVzdHMgdG8gYmUgYSAjZGVmaW5lIHNvIGl0IGNhbiBiZSBjaGFuZ2VkCgllYXNpbHkgaW4gZnV0dXJlLCBhbmQgbWFrZSBpdCBwb2ludCB0byB3aW5laHEuCgoJKiBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgTVNWQyBoZWFkZXJzIHdvbid0IGdpdmUgYSBuYW1lIHRvIHRoZSBuYW1lbGVzcyB1bmlvbiBvZiBJTlBVVAoJZGVzcGl0ZSBvdXIgcmVxdWVzdCAoTk9OQU1FTEVTU1VOSU9OKS4gU28gZGVmaW5lIG91ciBvd24gdHlwZSBhbmQgdXNlCglpdCBpbnN0ZWFkLgoJUmVtb3ZlIHVzZWxlc3MgTk9OQU1FTEVTU1NUUlVDVC4KCUZpeCBzaWduZWQvdW5zaWduZWQgd2FybmluZy4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdlIG5lZWQgdG8gc2V0IF9XSU4zMl9XSU5OVCB0byAweDUwMSB0byBnZXQgQ1NfRFJPUFNIQURPVyBhbmQKCUlDT05fU01BTEwyLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL2Nsc2lkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTVNWQyBkb2VzIG5vdCB3YW50ICdleHRlcm4nIHZhcmlhYmxlcyB0byBiZSBpbml0aWFsaXplZCBpbnNpZGUKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglHZXQgcmlkIG9mIGEgVy0+QSBjcm9zcyBjYWxsIGluIEltYWdlTGlzdF9Mb2FkSW1hZ2VXLgoKCSogZGxscy9nZGkvYmlkaS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggY29tcGlsYXRpb24gd2l0aCBJQ1UgYWZ0ZXIgaW50cm9kdWN0aW9uIG9mIGdkaV9wcml2YXRlLmguCgoJKiBkbGxzL3R3YWluL2RzbV9jdHJsLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUluaXRpYWxpemUgYSBwb2ludGVyIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJWWV0IGFub3RoZXIgbmV3IHNwZWMgZmlsZSwgdGhpcyB0aW1lIGljY3ZpZC5zcGVjLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglTYXZlIFVFU1AgaW5zdGVhZCBvZiBFU1Agd2hlcmUgVUVTUCBkZWZpbmVkLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jOiBUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglJbXBsZW1lbnRlZCBWaWV3fFNwbGl0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9hYm91dC5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJU2ltcGxpZnkgdGhlIEFib3V0IGRpYWxvZyBjb2RlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOiBUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglFeHBhbmQgdGhlIHRyZWV2aWV3IG9uIHN0YXJ0dXAuCgoyMDA0LTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywKCSAgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYywKCSAgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYvcGVuLmMsIGRsbHMveDExZHJ2L3RleHQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hmb250LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgaW5jbHVkZS9nZGkuaDoKCUdldCByaWQgb2YgdGhlIGdsb2JhbCBJTlRFUk5BTF9bWFldV1NUT0RTIG1hY3Jvcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJLSBHZXQgcmlkIG9mIFctPkEgY2FsbHMgZm9yIHNobGV4ZWMuCgktIEltcGxlbWVudGF0aW9uIG9mIEZpbmRFeGVjdXRhYmxlVy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVR3ZWFrZWQgdGhlIGluaXQgY29kZSBzbyB0aGF0IGl0IHdvcmtzIHByb3Blcmx5IG5vIG1hdHRlciB3aGF0IGxpbmtlcgoJb3B0aW9ucyBhcmUgdXNlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ljY3ZpZC8uY3ZzaWdub3JlLAoJICBkbGxzL2ljY3ZpZC9NYWtlZmlsZS5pbiwgZGxscy9pY2N2aWQvaWNjdmlkLmMsCgkgIGRsbHMvaWNjdmlkL2ljY3ZpZC5zcGVjOgoJVGltIEZlcmd1c29uIDxUaW0uRmVyZ3Vzb25AaW5mb3RlY2gubW9uYXNoLmVkdS5hdT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBvcnQgVGltIEZlcmd1c29uJ3MgSUNDVklEIGNvZGVjIHRvIFdpbmUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsIGZpbGVzL2Rvc19mcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUHJlc2VydmUgdHJhaWxpbmcgYmFja3NsYXNoZXMgaW4gR2V0RnVsbFBhdGhOYW1lLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9ndWkucmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2d1aXJlcy5oLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQWRkZWQgZ3JhcGhpY2FsIGZlZWRiYWNrLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglCZSBtb3JlIHN0cmljdCBhYm91dCBjaGVja3MgKGVzcGVjaWFsbHkgaW4gUlZBIHRyYW5zbGF0aW9ucykuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTE2LmMsCgkgIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy94MTFkcnYvYml0Ymx0LmMsCgkgIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBncmFwaGljcy9iaXRibHQuYywKCSAgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywKCSAgZ3JhcGhpY3MvcGF0aC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwKCSAgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywKCSAgd2luZG93cy9kY2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgYSBidW5jaCBvZiBkZWZpbml0aW9ucyBmcm9tIGdkaS5oIGludG8gYSBuZXcgZ2RpX3ByaXZhdGUuaCB0bwoJbWFrZSBzdXJlIHdlIGRvbid0IHVzZSB0aGVtIG91dHNpZGUgb2YgZ2RpMzIuCgoJKiBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9rZXJuZWwvZGV2aWNlLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJ0LmM6CglEZWZpbmUgSU5BRERSX05PTkUgaWYgbmVlZGVkIChyZXBvcnRlZCBieSBSb2JlcnQgTHVubm9uKS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJQXZvaWQgbm9uLXBvcnRhYmxlIHN0cmlwIC1zIChyZXBvcnRlZCBieSBSb2JlcnQgTHVubm9uKS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wYXRoLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywgZGxscy9udGRsbC9wYXRoLmMsIGZpbGVzL2Rvc19mcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZWltcGxlbWVudGVkIEdldHtTaG9ydHxMb25nfVBhdGhOYW1lIGFuZCB1cGRhdGVkIHRoZSByZWdyZXNzaW9uCgl0ZXN0cy4KCjIwMDQtMDEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUZpeGVkIHR5cGUgbWlzbWF0Y2ggaW4gd2lkRHNDcmVhdGUuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglDb3JyZWN0ZWQgY29kZSB0byBhY3F1aXJlIG10dSB1bmRlciBTb2xhcmlzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRml4ZWQgX19zaWdpbmZvIHR5cGUgZm9yIFNvbGFyaXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iZXJ0IEx1bm5vbikuCgoJKiBkbGxzL25ldGFwaTMyL25idC5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglGRF9TRVQgaXMgbm90IGEgdHlwZSBjaGFuZ2VkIHRvIHN0cnVjdCBmZF9zZXQuCglSZW9yZGVyZWQgaGVhZGVycyB0byBhdm9pZCBpbmNsdWRpbmcgc3lzL3NlbGVjdC5oIGJlZm9yZSB3aW5iYXNlLmguCgoJKiB0b29scy9iaW4ycmVzLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUluY2x1ZGVkIGxpbWl0cy5oIHRvIHJlc29sdmUgbWlzc2luZyBtYWNybyBkZWZpbml0aW9uLgoKCSogTElDRU5TRSwgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24uCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3gxMWRydi9jbGlwcGluZy5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglNb3ZlZCBTZXREcmF3YWJsZSwgU3RhcnRHcmFwaGljc0V4cG9zdXJlcyBhbmQgRW5kR3JhcGhpY3NFeHBvc3VyZXMKCWZ1bmN0aW9uYWxpdHkgdG8geDExZHJ2IGVzY2FwZXMgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGFjY2VzcyB0aGUgREMKCXN0cnVjdHVyZSBkaXJlY3RseS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBmaWxlcy9maWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZ290IHJpZCBvZiBGSUxFX0R1cDIgZXhwb3J0IGZyb20ga2VybmVsMzIKCS0gbW92ZSBhbGwgZG9zIGhhbmRsZSByZWxhdGVkIGNvZGUgaW50byBkbGxzL2tlcm5lbDMyCgoyMDA0LTAxLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JydXNoLmMsCgkgIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS9iaXRtYXAuaCwKCSAgb2JqZWN0cy9kaWIuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglNb3ZlZCBzb21lIGNvZGUgYXJvdW5kIHRvIGF2b2lkIGV4cG9ydGluZyBESUIgZnVuY3Rpb25zIGZyb20gZ2RpMzIuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCB2YWx1ZSByZW5hbWUgc3VwcG9ydCB0byByZWdlZGl0LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBWYXJJbnQsIFZhckZpeCwgVmFyTmVnLgoKCSogZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgaW50ZWdlciBtYXRoIGluIFZhckN5SW50LCBkb2NzLgoKCSogZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglUd28gInVua25vd24iIHBhcmFtZXRlcnMgb2YgX3VuRE5hbWUoKSB0dXJuIG91dCB0byBiZSB0aGUgb3V0cHV0CglzdHJpbmcgYW5kIGl0IGxlbmd0aC4gSWYgcG9zc2libGUsIHVzZSB0aGVzZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYQoJbmV3IG9uZS4gUHV0IHRoZSBjb2RlIGluIF91bkROYW1lRXgoKSBhbmQgY2FsbCB0aGF0IGZyb20gX3VuRE5hbWUoKS4KCgkqIGRsbHMvYXZpZmlsMzIvcnNyYy5yYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglGaXhlZCB2ZXJzaW9uIGluZm8uCgoJKiBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJQWRkIGRpbGxvIGFzIGEgYnJvd3NlciB0byBzZWFyY2ggZm9yLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lcnJuby5jLAoJICBkbGxzL21zdmNydC9leGl0LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbGNvbnYuYywKCSAgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSW1wbGVtZW50ZWQgdGhlIHJlbWFpbmluZyA2NC1iaXQgZmlsZSBmdW5jdGlvbnMsIGFuZCBhZGRlZCBhIGZldyBvdGhlcgoJZnVuY3Rpb25zIGFuZCBleHBvcnRlZCB2YXJpYWJsZXMuCglSZW1vdmVkIHRoZSBhbG1vc3QgZW1wdHkgbGNvbnYuYyBmaWxlLgoKCSogZGxscy9tc3ZjcnRkL2RlYnVnLmMsIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6CglJbXBsZW1lbnRlZCBhIGZldyBtb3JlIGNydCogZnVuY3Rpb25zLgoJUmVwbGFjZWQgbW9zdCByZW1haW5pbmcgc3R1YnMgYnkgZm9yd2FyZHMgdG8gbXN2Y3J0LgoKCSogZGxscy94MTFkcnYvZGliLmM6IEF2b2lkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHBhbGV0dGUgc3RydWN0dXJlLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL2ljbS5jLAoJICBpbmNsdWRlL3dpbmdkaS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBFbnVtSUNNUHJvZmlsZXNBL1cuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGVzdCB0aGUgYmVoYXZpb3Igb2YgYmluZCgpIHdydC4gU09fUkVVU0VBRERSLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBKZXJlbXkgU2hhdyA8amVyZW15LnNoYXdAbGluZG93cy5jb20+CglSZW1vdmUgZm9yY2VkIFdTX1NPX1JFVVNFQUREUiBvbiBhbGwgYmluZHMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHJhY2UgdGhhdCBjYXVzZWQgdGhlIE1pY3Jvc29mdCBWaWV3ZXJzICdmaWxlIGV4dHJhY3Rpb24nCglhbmltYXRpb24gdG8gc29tZXRpbWVzIGhhdmUgYSBwaW5rIGJhY2tncm91bmQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIGEgU2VhcmNoUGF0aCBiZWZvcmUgb3BlbmluZyB0aGUgZmlsZSB0byBpbXByb3ZlIGNvbXBhdGliaWxpdHkgd2l0aAoJdGhlIG5hdGl2ZSByZWdlZGl0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9vcmlnLnJlZywgcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9yZWdlZGl0LnBsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgcmVmZXJlbmNlcyB0byByZWdhcGkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgeWV0IGFub3RoZXIgc3BlYyBmaWxlIGZvciBhIG5ldyBkbGwuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgYSAiXCIgZnJvbSBhIG11bHRpbGluZSBzdHJpbmcgY29uc3RhbnQgYnkgc3BsaXR0aW5nIGl0IGluIHR3by4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlZCBhIFctPkEgY3Jvc3MtY2FsbCAoQ29weU1ldGFGaWxlVy0+Q29weU1ldGFGaWxlQSkuCgoJKiBkbGxzL21zdmNydDQwL21zdmNydDQwLnNwZWM6IEFkZGVkIGFsbCB0aGUgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzogX3NldF9lcnJvcl9tb2RlIGlzIGNkZWNsIG5vdCBzdGRjYWxsLgoKCSogZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzogQW5kcukgSm9oYW5zZW4gPGFuZHJlam9oQGMyaS5uZXQ+CglGb3J3YXJkIF9zZXRfZXJyb3JfbW9kZSB0byBtc3ZjcnQuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUdldCByaWQgb2YgYSBXLT5BIGNyb3NzY2FsbCAoUmVzZXREQ0EtPlJlc2V0RENXKS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBNaWRpIElOIHN1cHBvcnQuCgoyMDA0LTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSGFuZGxlIHRoZSBjYXNlcyB3aGVuIGluaXRkaXIgaXMgZWl0aGVyIGludmFsaWQsIG9yIHNwZWNpZmllcyBhIGZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQ0MC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydDQwL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDQwL21zdmNydDQwLmMsCgkgIGRsbHMvbXN2Y3J0NDAvbXN2Y3J0NDAuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZW5vdWdoIG9mIE1TVkNSVDQwIHRvIG1ha2UgSUU0IGluc3RhbGwgd29yay4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9zY3JvbGwuYzoKCVNjcm9sbERDIGRvZXNuJ3QgbmVlZCB0byBiZSBpbiB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogb2JqZWN0cy9kYy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglDaGFuZ2UgR2V0VHJhbnNmb3JtIHN0dWIgdG8gdXNlIHRoZSBzdGFuZGFyZCBGSVhNRSByYXRoZXIgdGhhbiBFUlIuCgoJKiBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ3JlYXRlREMgaXMgVW5pY29kZSBub3csIGNoYW5nZSB0aGUgc3BlYyBmaWxlIGFjY29yZGluZ2x5LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIHNwZWMgZmlsZXMgZm9yIG5ldyBkbGxzLgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQ29ycmVjdCBoYW5kbGluZyBvZiBmb250IHRhYmxlIHdoZW4gdGhlIGZvbnQgbmFtZSBpcyBub3QgdGhlIGxhc3QKCXRoaW5nIGluIHRoZSBlbnRyeSAoaS5lLiBpcyBmb2xsb3dlZCBieSB0aGUgZm9udCBhbHRuYW1lIGluIGEgZ3JvdXApLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTYWZlQXJyYXlSZWRpbTogVXNlIHRoZSBjb3JyZWN0IHNpemUgZm9yIHJlc2l6ZSB0b28uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBpbmNsdWRlL3RsaGVscDMyLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIFRvb2xoZWxwMzJSZWFkUHJvY2Vzc01lbW9yeS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgVElNRV9LSUxMX1NZQ0hST05PVVMgdGltZXIgZmxhZ3MKCS0gdGltZUtpbGxUaW1lciBpcyBub3cgdGhyZWFkIHNhZmUKCS0gcmVwbGFjZWQgc29tZSBpRGF0YSBhdHRyaWJ1dGVzIGJ5IGdsb2JhbCB2YXJpYWJsZXMKCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL21peGVyLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVkdWNlIHRoZSB1c2Ugb2YgdGhlIGRzb3VuZCBnbG9iYWwgdmFyaWFibGUgYnkgcGFzc2luZyBhZGRyZXNzIHRvCglmdW5jdGlvbnMuCgoyMDA0LTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvaGVhcC5jLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3htcy5jLAoJICBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJR2V0IHJpZCBvZiBubyBsb25nZXIgbmVlZGVkIFdJTkVfUEFDS0VEIGRlZmluZS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMgYW5kIGEgc3RydWN0LgoJRml4ZWQgc29tZSBjb25zdCAqIGFyZ3VtZW50cy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG93IG9mZnNldCBvZiBOVUxMIHRvIE50V3JpdGVGaWxlLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEhlYXBSZWFsbG9jIHR5cG8uCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIHdyYXBwZXIgZ2VuZXJhdGlvbiBmcm9tIHdpbmV3cmFwLCBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5CgkoZml4ZWQgYnkgQWxleGFuZHJlJ3MgY29uc3RydWN0b3IgcGF0Y2gpLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5oLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jOgoJU29tZSBtb3JlIFdpbjE2L1dpbjMyIHNlcGFyYXRpb24gKGJhc2VkIG9uIGEgcGF0Y2ggYnkgU3RldmVuCglFZHdhcmRzKS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBhZGQgVkVTQSBtb2RlIDB4NmEgKHNhbWUgYXMgMHgxMDIpCgktIGFkZCBhIG1hY3JvIHRvIGNoZWNrIGlmIGEgbW9kZSBpcyBhIFZFU0EgbW9kZQoJLSBvdXRwdXQgdGhlIHVuc3VwcG9ydGVkIFZHQSBtb2RlIGluIGhleCAoYWxsIFZHQS9WRVNBIGRvY3MgdXNlIGhleAoJICBmb3IgdGhhdCkKCgkqIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay93aW5lamFjay5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjOgoJSmVyZW15IFNoYXcgPGplcmVteS5zaGF3QGxpbmRvd3MuY29tPgoJQWRkZWQgd2F2ZS1pbiBzdXBwb3J0IGFuZCBmaXhlZCBhIGZldyBidWdzIGluIHRoZSB3YXZlLW91dCBjb2RlLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVJlbW92ZWQgWEluaXRUaHJlYWRzIGNhbGwsIHRoZSBYIGxpYnJhcmllcyBzdGlsbCBoYXZlIHRvbyBtYW55IGJ1Z3MgdG8KCW1ha2UgdGhpcyB2aWFibGUuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcHkgQlNUUnMgYnl0ZSB3aXNlLgoJQWRkZWQgYSB0ZXN0Y2FzZSBmb3IgYnl0ZSB3aXNlIGNvcHkgb2YgVlRfQlNUUiB2YXJpYW50IHdpdGgKCVZhcmlhbnRDb3B5KCkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RidC5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglBZGRlZCBoZWFkZXIgZGJ0LmguCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJUGluIGRvd24gTG9hZFN0cmluZ0EgYmVoYXZpb3VyIG9uIGRpZmZlcmVudCBidWZmZXIgbGVuZ3Rocy4KCgkqIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gSUUgY3Jhc2ggYW5kIG1ha2UgdGhlICJDcmVhdGUgRm9sZGVyIiBmdW5jdGlvbmFsaXR5IGluCglGYXZvcml0ZXMgd29yay4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBdm9pZCBmcmVlaW5nIHJlcXVlc3QgcGFja2V0IHRvbyBlYXJseSBpZiBhbiBleGNlcHRpb24gb2NjdXJzLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcm9wZXJseSBoYW5kbGUgZGVzdHJveWluZyB0aGUgZmlyc3QgY29ubmVjdGlvbiBpbiB0aGUgY29ubmVjdGlvbgoJY2FjaGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZ3Jlc3Npb24gdGVzdCBmb3IgZmlsZXMgd2l0aCB6ZXJvIGxlbmd0aC4KCgkqIHNlcnZlci9tYXBwaW5nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hcHBpbmcgYSB6ZXJvIHNpemUgZmlsZSBzaG91bGQgZmFpbC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBmYWlsIGlmIHdlIGNhbid0IGxvYWQgc29tZSBsaWJzIGluIHRoZSB3cmFwcGVyLgoJTm8gbmVlZCB0byBsaW5rIHRoZSB3cmFwcGVyIHdpdGggYWxsIGxpYnMsIHdlIGtub3cgd2hhdCB3ZSBuZWVkLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOgoJSWYgc3VwcG9ydGVkLCBhZGQgLWluaXQgYW5kIC1maW5pIGZsYWdzIHRvIHRoZSBsaW5rZXIgaW52b2NhdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbnRhYjMyL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYywgZGxscy93aW50YWIzMi93aW50YWIzMi5jLAoJICBkbGxzL3dpbnRhYjMyL3dpbnRhYl9pbnRlcm5hbC5oLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2ludGFiLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW50YWIuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbmFibGUgVGFibGV0IHN1cHBvcnQgd2l0aCBib3RoIFRpbHQgYW5kIFByZXNzdXJlLgoKMjAwNC0wMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvdHdhaW4vdHdhaW4uaCwgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaDoKCVRoZXJlJ3Mgbm8gbmVlZCBmb3IgRFVNTVlVTklPTk5BTUUgaW4gcHJpdmF0ZSBoZWFkZXJzLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRGVmaW5lIE9QRU5GSUxFTkFNRV9TSVpFX1ZFUlNJT05fNDAwLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L3JlYWRsaW5rLmM6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHJlYWRsaW5rLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJSWYgc3VwcG9ydGVkIGJ5IHRoZSBsaW5rZXIsIHByZXZlbnQgdGhlIEVMRiBsb2FkZXIgZnJvbSBjYWxsaW5nIHRoZQoJZGxsIGNvbnN0cnVjdG9ycyBhdCBsb2FkIHRpbWUgYW5kIGNhbGwgdGhlbSBmcm9tIHRoZSBkbGwgZW50cnkgcG9pbnQKCWluc3RlYWQuCgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBbHdheXMgcHJpbnQgYSBtZXNzYWdlIGZvciBnZW5lcmljIHN0dWJzLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgb3B0aW9uIHRvIHVzZSB0aGUgcHJpbWFyeSBzZWxlY3Rpb24gaW4gYWRkaXRpb24gdG8gdGhlIGNsaXBib2FyZAoJc2VsZWN0aW9uLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaCwKCSAgZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB0aGUgbGlua2VkIGxpc3Qgd2l0aCB0aGUgbmFtZSBvZiBmaWxlcyBvZiB0aGUgQ0FCIGFyY2hpdmUuCgoJKiBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIEFwcGxpZWQgdG8gYWxsIE1DSSBkcml2ZXJzIERtaXRyeSdzIGZpeCBmb3IgTUNJX1NUQVRVU19USU1FX0ZPUk1BVAoJICAod2Fzbid0IHJldHVybmluZyBzdHJpbmcgcmVzb3VyY2UgSUQpLgoJLSBGaXhlZCBtY2lzZXEgd2hlbiBvcGVuZWQgd2l0aG91dCBhIGZpbGVuYW1lLgoKCSogZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlbW92ZSBzb21lIHVudXNlZCBoZWFkZXJzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglCcm91Z2h0IHVwIHRvIGRhdGUgdG8gRGltaSdzIGxhdGVzdCBwYXRjaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvaWNtLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgaWNtLmggZm9yIGNvbG91ciBtYW5hZ2VtZW50LgoKCSogaW5jbHVkZS9zaGxvYmouaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglEZWZpbmUgc3RydWN0cyBGSUxFREVTQ1JJUFRPUiBhbmQgRklMRUdST1VQREVTQ1JJUFRPUiB1c2VkIHdpdGggdGhlCgljbGlwYm9hcmQgZm9ybWF0IENGX0ZJTEVHUk9VUERFU0NSSVBUT1IuCgoyMDA0LTAxLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglEb24ndCB1c2UgY29uc3RydWN0b3JzIGZvciBudGRsbCBhbmQga2VybmVsMzIgaW5pdGlhbGl6YXRpb24uCgoJKiB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmMsCgkgIHRvb2xzL3dpZGwvcHJveHkuaCwgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvdHlwZWxpYi5oLAoJICB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsLmgsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHJ1bGVzIHRvIHBhcnNlIGxpYnJhcnksIGNvY2xhc3MsIGRpc3BpbnRlcmZhY2UsIGFuZCBtb2R1bGUKCWRlZmluaXRpb25zLCBhbmQgYSBudW1iZXIgb2YgYXR0cmlidXRlcywgYW5kIGNsZWFuZWQgdXAgYSBmZXcgdGhpbmdzLgoJU3RhcnRlZCBvbiBhIHR5cGVsaWIgZ2VuZXJhdGlvbiBmcmFtZXdvcmsuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9pcGhscGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMvaXBobHBhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9pcGhscGFwaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4ZWQgdGhlIGR3QkNhc3RBZGRyIG1lbWJlciBvZiBNSUJfSVBBRERSUk9XLCBhZGRlZCBhIHRlc3QgcHJvZ3JhbS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9tc2kvc3VtaW5mby5jLAoJICBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglSZW1vdmVkIGluY29ycmVjdCB1c2VzIG9mIERVTU1ZVU5JT05OQU1FLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6ICBXaW0gTGV3aXMgPHdpbWxAdW5kZXJoaWxsLmhoaGgub3JnPgoJRml4ZWQgc2hlbGwgcXVvdGluZyBvZiB0aGUgaW5saW5lLWFzbSB0ZXN0cyBzbyB0aGF0IHRoZXkgd29yayBwcm9wZXJseQoJd2l0aCB0aGUgcGRrc2ggdGhhdCBzaGlwcyB3aXRoIE9wZW5CU0QuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglSb2JlcnQgdmFuIEhlcmsgPHJvYmVydEByb2JlcnR2YW5oZXJrLm5sPgoJQWRkZWQgYSB0YWJzaGVldCB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBjaGFuZ2UgdGhlIGRsbCBvdmVycmlkZXMsCglib3RoIGdsb2JhbGx5IGFuZCBwZXIgYXBwLgoKMjAwNC0wMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgZGxscy9pY21wL2lwLmgsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLAoJICBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvdXh0aGVtZS91eHRoZW1lZGxsLmgsCgkgIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NobHdhcGkuaCwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCB0b29scy9jMm1hbi5wbCwgdG9vbHMvd2luZWR1bXAvUkVBRE1FLAoJICB0b29scy93aW5laW5zdGFsbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3Nob2JqaWRsLmlkbDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgSVNoZWxsRXhlY3V0ZUhvb2sgaW50ZXJmYWNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJVXNlIGdjYydzIC1waXBlIG9wdGlvbiB0byByZWR1Y2UgY29tcGlsZSB0aW1lLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CgklW2Etel0gYW5kICVbei1hXSBhcmUgaW50ZXJwcmV0ZWQgYXMgZXF1aXZhbGVudCB0byAlW2FiY2RlLi4uel0uCglBZGRlZCBzb21lIHNjYW5mIHRlc3RzLgoKCSogd2luZG93cy9kaWFsb2cuYzogQ29udmVydGVkIERsZ0Rpckxpc3QgdG8gVW5pY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbWFrZV9wcm9ncywKCSAgd2luZWRlZmF1bHQucmVnLCBwcm9ncmFtcy93aW5lYnJvd3Nlci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lYnJvd3Nlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jLAoJICB0b29scy93aW5laW5zdGFsbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGRlZCB3aW5lYnJvd3NlciBhcHAgdGhhdCBsYXVuY2hlcyBhIFVuaXggYnJvd3Nlci4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJU0hDb0NyZWF0ZUluc3RhbmNlIGlzIG5vdyBkb2N1bWVudGVkIChzcG90dGVkIGJ5IEZyYW5jb2lzIEdvdWdldCkuCglJdHMgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEgVW5pY29kZSBzdHJpbmcuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGQgbWlzc2luZyBcbiBvbiBlcnJvciBtZXNzYWdlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIExGIGluIHRyYWNlLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1ha2Ugc3VyZSBzZWQgdXNlcyB0aGUgcmlnaHQgbG9jYWxlLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZ2lzdGVyIHdpbmRvdyBjbGFzcyBvbiBtY2lhdmkgZHJpdmVyIGxvYWRpbmcsIGFuZCB1bnJlZ2lzdGVyIGl0IG9uCglkcml2ZXIgdW5sb2FkaW5nLgoKCSogZGxscy93aW5tbS9tY2lhdmkvaW5mby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGNvcnJlY3QgcmVzb3VyY2UgaWQgZm9yIHRpbWUgZm9ybWF0IHN0cmluZ3MuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBlcnJvciByZXBvcnRpbmcuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBuZXcgdmFsdWUgc3VwcG9ydC4gTWlzYyBpbXByb3ZlbWVudHMgYW5kIGNsZWFudXBzLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFkZGVkIF9CSVRNQVBTSVpFXyBhbmQgc3BsaXQgX0NPTlZFUlRfIG1hY3JvIHRvIHJlbW92ZSAjaWZkZWZzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXhOdW0gc2hvdWxkIGJlIHlOdW0gaW4gb25lIHBsYWNlLgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaXggdGhlIGRyYXcqcHJpbWl0aXZlVVAgY2FsbHMgc28gdGhleSB3b3JrIGRpcmVjdGx5IGFmdGVyIGEgZHJhdwoJd2hpY2ggdXNlcyB2ZXJ0ZXggc2hhZGVycy4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnQgd2dsVXNlRm9udEJpdG1hcHNXLgoKMjAwNC0wMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9kb3Njb25mLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLAoJICBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNYWRlIHdpbmVfZ2V0X3VuaXhfZmlsZV9uYW1lIHRha2UgYSBVbmljb2RlIHN0cmluZyBwb2ludGVyLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBY2NlcHQgYWxsIHN0YW5kYXJkIERJQiBjb21wcmVzc2lvbnMgaW4gdGhlIG1jaWF2aSBkcml2ZXIuCgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglVcGRhdGVzIGZvciB0aGUgbmV3IGxvYWRvcmRlciBoYW5kbGluZyBvZiAxNi1iaXQgZGxscy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmgsIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgdmFsdWUgZGVsZXRlLCBhbmQgZHdvcmQgZWRpdCBzdXBwb3J0LgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEZWNvZGUgc3RyZWFtIG51bWJlciBmcm9tIEFWSSBmcmFtZSBkYXRhIGFuZCBhc3NpZ24gdGhlIGRhdGEgdG8KCWFwcHJvcHJpYXRlIHN0cmVhbXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IHJldHVybiB0eXBlIG9mIFNIRmlsZU9wZXJhdGlvbkEvVy4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTVNWQyBwb3J0aW5nIGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgcGFyYWdyYXBoIGRlc2NyaWJpbmcgbm8gbG9uZ2VyIGV4aXN0aW5nIHJlZ2NsZWFuLmV4ZS4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIERJSk9ZU1RBVEUgYW5kIERJSk9ZU1RBVEUyIHN0cnVjdHMsIGZhaWwgb24gdW5rbm93biBzaXplcy4KCjIwMDQtMDEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCUFsd2F5cyB0cnkgdG8gbG9hZCB0aGUgMzItYml0IG93bmVyIGRsbCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGxvYWRpbmcKCXRoZSAuc28gZmlsZSBmb3IgMTYtYml0IGJ1aWx0aW5zLiBNYWtlIHRoZSBsb2FkIG9yZGVyIGZvciAxNi1iaXQgZGxscwoJYWx3YXlzIG1hdGNoIHRoZSBsb2FkIG9yZGVyIG9mIHRoZWlyIDMyLWJpdCBvd25lciAoaWYgYW55KS4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oOgoJQXZvaWQgcmVmZXJlbmNpbmcgYSBwcml2YXRlIGhlYWRlciBpbiBhbm90aGVyIGRsbC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50ZWQgUmVnRmx1c2hLZXkgYW5kIE50Rmx1c2hLZXkuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oOgoJWmltbGVyIEF0dGlsYSA8aGlqYXN6dUBobGZzbGludXguaHU+CglBZGRlZCBzdXBwb3J0IGZvciBjcmVhdGluZyBuZXcga2V5cy4KCjIwMDQtMDEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpbGwgaW4gdGhlIGNvbG9yIE1hc2tTaXplIGFuZCBGaWVsZFBvc2l0aW9uIGZpZWxkcyBpbiB0aGUKCU1vZGVJbmZvQmxvY2suCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvbG9hZGVyLmMsIGxpYnMvd2luZS93aW5lLmRlZjoKCUFkZGVkIHdpbmVfZGxsX2dldF9vd25lciBmdW5jdGlvbiB0aGF0IHJldHJpZXZlcyB0aGUgMzItYml0IGRsbAoJY29udGFpbmluZyBhIGdpdmVuIDE2LWJpdCBkbGwgYnkgcmVhZGluZyB0aGUgc3ltbGluaywgc28gdGhhdCB3ZSBkb24ndAoJbmVlZCB0byBkbG9wZW4gaXQuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCU1ha2Ugc3ltbGlua3MgZm9yIDE2LWJpdCBmaWxlcyBwb2ludCB0byB0aGUgMzItYml0IHN5bWxpbmsgc28gdGhhdAoJdGhleSBkb24ndCBjb250YWluIGEgcGF0aC4KCgkqIGRsbHMvdXNlci93bmQxNi5jLCB3aW5kb3dzL21kaS5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJU3BsaXQgdXAgdGhlIFdpbjE2LzMyIE1ESSBzdXBwb3J0IGEgYml0LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPbiBhIFJCX1NFVEJBTkRJTkZPIG1lc3NhZ2Ugb25seSByZWRyYXcgdGhlIHJlYmFyIGlmIHNvbWV0aGluZwoJY2hhbmdlZC4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJVXNlIGEgc3RydWN0IGFzIHNwZWNpZmllZCBpbiB0aGUgVkJFIDMuMCBzdGFuZGFyZCBmb3IgdGhlCglNb2RlSW5mb0Jsb2NrLiBDb2RlIHdpc2UgdGhpcyBpcyBhIE5PUC4KCgkqIGRsbHMvbmV0YXBpMzIvbmJjbWRxdWV1ZS5jLCBkbGxzL25ldGFwaTMyL25idC5jLAoJICBkbGxzL25ldGFwaTMyL25ldGJpb3MuaCwgaW5jbHVkZS9uYjMwLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXggY29tcGlsaW5nIG5ldGFwaTMyIG9uIE1TVkMgd2l0aCBQU0RLIGhlYWRlcnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBjb21waWxhdGlvbiBpc3N1ZSB3aXRoIEFMU0EgMC41LgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglyZXN1bHQyIHNlZW1zIHRvIGJlIG9wdGlvbmFsLCBtYWtpbmcgaXQgMCBhbGxvd3MgSUUgdG8gY29udGludWUuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglVcGRhdGUgdGhlIG5vdGVzIG9uIGhvdyBXSU5FIHVzZXMgdGhlIFN5c3RyYXkgdW5kZXIgS0RFLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhIGNyYXNoIGlmIHRoZSBkaWFsb2cgc3R5bGUgaXMgbWlzc2luZy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogV2ltIExld2lzIDx3aW1sQGhoaGgub3JnPgoJQ2xlYXIgc3RydWN0IHNvY2thZGRyX2lweCBkaXJlY3RseSBpbnN0ZWFkIG9mIGp1c3QgdGhlIHNpcHhfemVybwoJZmllbGQuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYzogV2ltIExld2lzIDx3aW1sQGhoaGgub3JnPgoJRU9WRVJGTE9XIGRvZXMgbm90IGV4aXN0IG9uIE9wZW5CU0QuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNldCB0aGUgImJ5dGVzIHBlciBzY2FuIGxpbmUiIGZpZWxkIHdoZW4gZ2VuZXJhdGluZyB0aGUgbW9kZSBpbmZvCglibG9jay4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgc3R1YiBmb3IgQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQ29tcGxldGVkIEl0YWxpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvbmV0YXBpMzIvbmJ0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBjb25mbGljdGluZyByZWdpc3RyeSB2YWx1ZSBuYW1lcywgYW5kIHRyeSBib3RoIFdpbjl4IGFuZCBXaW5OVAoJbG9jYXRpb25zIGZvciBOZXRCVCByZWdpc3RyeSB2YWx1ZXMuCgoJKiBkbGxzL2tlcm5lbC9kZXZpY2UuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUHJvcGVybHkgTDItZW5jb2RlIHRoZSBOZXRCSU9TIHNjb3BlIElEIGluIERldmljZUlvX1ZOQiwgc28KCWlwY29uZmlnLmV4ZSBhbmQgd2luaXBjZmcuZXhlIGRpc3BsYXkgaXQuCgoJKiBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIHRyYWNpbmcsIGFkZCBXSU5TIGNvbmZpZ3VyYXRpb24gdG8gR2V0QWRhcHRlcnNJbmZvLCBjb3JyZWN0CglTY29wZUlEIHJlYWRpbmcgaW4gR2V0Rml4ZWRJbmZvLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2hlbiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZV9yXzYgbm90IHRyeSB0byBjb21waWxlIGJ1dCB0cnkgdG8KCWxpbmsuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVVwZGF0ZWQgY29uZmlndXJlIHdpdGggYXV0b2NvbmYgMi41OC4gU2V0IHRoZSBidWcgcmVwb3J0IGFkZHJlc3MuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglDb21tZW50ZWQgb3V0IHRlc3RzIHRoYXQgYXNzdW1lIHRoYXQgdGhlIGN1cnJlbnQgeWVhciBpcyAyMDAzLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQ2EucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RlLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fbi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRmkucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9ObC5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUHQucmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJTWFrZSB0aGUgZGVidWcgbWFyayBwcmludGluZyB1bmNvbmRpdGlvbmFsIGluc3RlYWQgb2YgY29uZGl0aW9uYWwgdXBvbgoJdGhlICBTSEVMTCBkZWJ1ZyBjaGFubmVsLiAgTWFrZSBtYXJrIHRleHQgb2J2aW91cyBieSBjaGFuZ2luZyB0aGUKCW91dHB1dCB0ZXh0IHRvICdEZWJ1ZyBtYXJrIHJlcXVlc3RlZCBieSB1c2VyJyBhbmQgYWRkaW5nICdEZWJ1ZyBtYXJrJwoJdG8gdGhlIG1lbnUgcmVzb3VyY2UgdGV4dC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuaCwKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJUmVtb3ZlIFBSSU5URExHX0dldERlZmF1bHRQcmludGVyTmFtZTsgdXNlIFdpbjMyIEdldERlZmF1bHRQcmludGVyQS9XCglpbnN0ZWFkLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYSBzdHJheSBMZWF2ZUNyaXRpY2FsU2VjdGlvbigpLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVHJhY2tiYXIgcmFuZ2Ugc2hvdWxkIGJlIGZpeGVkIG9ubHkgaW4gdGhlIGNhc2Ugb2Ygc3VjY2Vzc2Z1bAoJbWNpU2VuZFN0cmluZ1cuIEl0J3MgYmV0dGVyIHRvIGluaXRpYWxpemUgZHdDYWxsYmFjayBwYXJhbWV0ZXIgaWYKCU1DSV9OT1RJRlkgaXMgc3BlY2lmaWVkLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcGxlbWVudGVkIE9GTl9PVkVSV1JJVEVQUk9NUFQgYW5kIE9GTl9FWFRFTlNJT05ESUZGRVJFTlQgZmxhZ3MuCglDaGFuZ2VkIElETF9PVkVSV1JJVEVGSUxFIHN0cmluZyByZXNvdXJjZSBJRCB0byBJRFNfT1ZFUldSSVRFRklMRS4KCVVzZSB0aGUgZXh0ZW5kZWQgVUkgZm9yIHRoZSAiTG9vayBJbiIgY29tYm8uCglTZWxlY3QgdGhlIHRleHQgaW4gdGhlICJGaWxlIG5hbWUiIGZpZWxkIGFmdGVyIGZpbGxpbmcgaXQuCgoyMDA0LTAxLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tY2lhdmkvd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTXVjaCBpbXByb3ZlZCBtY2lhdmkgZHJpdmVyLiBGaXhlZCBzeW5jaHJvbml6YXRpb24sIFJJRkYgZmlsZSB3aXRoCgltYW55IHN0cmVhbXMgcGFyc2luZywgYWRkZWQgc3VwcG9ydCBmb3Igc29tZSBNQ0lfUFVUIGFuZCBNQ0lfV0hFUkUKCWNhc2VzLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBpbmNsdWRlL3Zmdy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBtYW55IE1DSVdORE1fIG1lc3NhZ2VzIGFuZCBzb21lIE1DSV8gY29tbWFuZHMgaW4gdGhlCglNQ0lXbmRDbGFzcyBpbXBsZW1lbnRhdGlvbi4KCU1DSVduZFJlZ2lzdGVyQ2xhc3MoKSB0YWtlcyBubyBwYXJhbWV0ZXJzIGFjY29yZGluZyB0byBQbGF0Zm9ybSBTREsKCWhlYWRlcnMuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIGNvcnJlY3QgcG9pbnRlciB0byBhbiBpbnRlcm5hbCBkcml2ZXIgZGVzY3JpcHRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgTUNJX1NZU0lORk8gY29tbWFuZCBXIHRvIEEgbWFwcGluZy4KCjIwMDMtMTItMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYzoKCVN0b3JlIHdpbmRvdyBpY29ucyBpbiB0aGUgd2luZG93IHN0cnVjdHVyZSBzbyB0aGF0IFdNX1NFVElDT04gY2FuIGRvCgl0aGUgcmlnaHQgdGhpbmcgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQXJpYyBTdGV3YXJ0KS4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGluY2x1ZGUvZGlnaXRhbHYuaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtYW55IGZ1bmN0aW9uIHByb3RvdHlwZXMgYW5kIGRhdGEgdHlwZXMgYWNjb3JkaW5nIHRvIFBsYXRmb3JtIFNESwoJZGVmaW5pdGlvbnMuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLAoJICBkbGxzL3dpbm1tL3dpbm1tLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgVW5pY29kZS0+QU5TSSBNQ0kgbWVzc2FnZSBtYXBwaW5nLCBpbXBsZW1lbnQgbWNpU2VuZENvbW1hbmRXLCBmaXgKCWEgYnVnIHdpdGggYSB3aW5kb3cgY3JlYXRpb24gYmVsb25naW5nIHRvIGFub3RoZXIgaEluc3RhbmNlLCBhZGQKCXN1cHBvcnQgZm9yIE1DSV9XSU5ET1cgY29tbWFuZCBpbiBtY2lhdmkuZHJ2LCBhZGQgc3VwcG9ydCBmb3IgTUNJX1BMQVkKCWFuZCBNQ0lfU1RPUCBpbiB0aGUgTUNJV25kQ2xhc3MgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNpemUgY2FsY3VsYXRpb24gb24gcmVkaW0gaWYgb2xkIHNpemUgd2FzIDAuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUltcHJvdmUgZXJyb3IgbWVzc2FnZXMgaW4gT1NTX1dhdmVPdXRJbml0KCkgYW5kIE9TU19XYXZlSW5Jbml0KCkgYW5kCgl3YXJuIGluc3RlYWQgb2YgYWJvcnRpbmcgaW4gY2FzZSBvZiBwcm9ibGVtcyByZWFkaW5nIG1peGVyIGluZm8uCgoJKiBkbGxzL2NhYmluZXQvLmN2c2lnbm9yZSwgZGxscy9jYWJpbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL2NhYmluZXQvY2FiaW5ldC5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgZmlsZSB2ZXJzaW9uIHJlc291cmNlLgoKCSogZGxscy91c2VyL21zZzE2LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUlzZGlhbG9nTWVzc2FnZTE2IG11c3Qgbm90IHByb2Nlc3MgbWVzc2FnZXMgdGhhdCBhcmUgbm90IGludGVuZGVkIGZvcgoJdGhlIGRpYWxvZyBib3guCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglSZW1vdmUgRENPTSBjb25maWcgZmlsZSBlbnRyaWVzLCBhcyB0aGV5IGhhdmUgbm8gZWZmZWN0LgoKCSogZGxscy9rZXJuZWwvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0b28gc3RyaWN0IGhlYWRlciBjaGVjayB0byBlbmFibGUgZXhlY3V0aW9uIG9mIGhhbmRjb2RlZCBQRQoJZXhlcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVByaW50IGV4ZSBuYW1lIHdoZW4gaW5pdGlhbGl6YXRpb24gZmFpbHMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCUFkZCBuZXdkZXYsIHVwZGF0ZWQgRE11c2ljIHNlY3Rpb24sIHNtYWxsIGZpeCB0byBkcG5ocGFzdC4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIFVSTENhY2hlX0ZpbmRFbnRyeSgpIHdoaWNoIGlzIG5vdCB1c2VkIGFueSBsb25nZXIuCgoyMDAzLTEyLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbmV3ZGV2Ly5jdnNpZ25vcmUsCgkgIGRsbHMvbmV3ZGV2L01ha2VmaWxlLmluLCBkbGxzL25ld2Rldi9tYWluLmMsIGRsbHMvbmV3ZGV2L25ld2Rldi5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglBZGQgc3R1YmJlZCB2ZXJzaW9uIG9mIG5ld2Rldi5kbGwuCgoJKiBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBBZGQgYSBiaXRtYXAgcmVzb3VyY2Ugd2l0aCB0aGUgZm9udCBpY29uczogVHJ1ZVR5cGUsIHByaW50ZXIsCgkgIE9wZW5UeXBlIGFuZCBUeXBlIDEuIE1vZGlmeSB0aGUgY29kZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSB1c2VkIGlmIG9yCgkgIHdoZW4gdGhlIG5lZWRlZCBiaXRzIGFyZSBwYXNzZWQgdG8gdGhlIEZvbnRFbnVtUHJvYy4KCS0gVXNlIEVudW1Gb250RmFtaWxpZXNFeCBpbnN0ZWFkIG9mIEVudW1Gb250RmFtaWxpZXMuCgktIEZpeCB0aGUgZml4bWUgaW4gdGhlIFdNX01FQVNVUkVJVEVNIG1lc3NhZ2UgaGFuZGxlci4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsCgkgIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSB1c2Ugb2YvaGFuZGxlIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIGZ1bmN0aW9uIEV4dHJhY3QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIE1ESSBjaGlsZCBjcmVhdGlvbiB0ZXN0cy4KCgkqIGxvYWRlci9rdGhyZWFkLmM6IERhdmlkIEJlY2sgPGRiZWNrQGJlY2tncm91bmQuaHU+CglBZGRlZCBSRlRIUkVBRCBmbGFnIGluIHJmb3JrIGNhbGwuCgoJKiBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLCBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgaW4gSUZpbHRlck1hcHBlcjI6OlJlZ2lzdGVyRmlsdGVyLgoJLSBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgaW4gREVWRU5VTV9JUHJvcGVydHlCYWdfUmVhZC4KCS0gRml4ZWQgTlVMTCBwb2ludGVyIGRlLXJlZiBpbiBEbGxSZWdpc3RlclNlcnZlciB3aGVuIElGaWx0ZXJNYXBwZXIyCgkgIGlzIG5vdCByZWdpc3RlcmVkLgoJLSBBbGxvd2VkIHJldHVybmluZyB0aGUgbW9uaWtlciBpbiBJRmlsdGVyTWFwcGVyMjo6UmVnaXN0ZXJGaWx0ZXIuCgktIEVudW1lcmF0ZSBzcGVjaWFsIGNhdGVnb3JpZXMgd2l0aG91dCBjYXVzaW5nIGluZmluaXRlIGxvb3AuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUZpeCBzb21lIHJldHVybiB2YWx1ZXMgb2YgZHBsYXl4IEFQSSBjYWxscy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglGaXhlZCBSdGxVbndpbmQgc2lnbmF0dXJlIChyZXBvcnRlZCBieSBQaWVycmUgZCdIZXJiZW1vbnQpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZmxkci5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGNvcnJlY3QgcmV0dXJuIHZhbHVlIG9mIFNIR2V0UGF0aEZyb21JRExpc3RbQVddKCkgZm9yIHZpcnR1YWwKCSAgZm9sZGVycyBsaWtlICJNeSBDb21wdXRlciIKCS0gY29ycmVjdCBwYXRoIHBhcnNpbmcgaW4gSVNGX0Rlc2t0b3BfZm5QYXJzZURpc3BsYXlOYW1lKCkKCS0gaGFuZGxlIENMU0lEIHBhdGhzIGluIElTRl9NeUNvbXB1dGVyX2ZuUGFyc2VEaXNwbGF5TmFtZSgpCgktIHJldHVybiBDTFNJRCBwYXRoIGluIElTRl9NeUNvbXB1dGVyX2ZuR2V0RGlzcGxheU5hbWVPZigpCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlYWQgdGhlIFBvbGljeXtBY2NvdW50LFByaW1hcnl9RG9tYWluSW5mb3JtYXRpb24gZnJvbSB0aGUgcmVnaXN0cnksCglyYXRoZXIgdGhhbiBoYXJkY29kaW5nIGl0IHRvICJET01BSU4iLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCUVuY2xvc2UgYXBwbGljYXRpb24gbmFtZSBpbiBkb3VibGUgcXVvdGF0aW9uIG1hcmtzLCBhcyBpdCBtYXkgY29udGFpbgoJc3BhY2VzLgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXhlZCBtZW0gbGVhayBvbiBlcnJvciBwYXRoLgoKCSogZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjOgoJVmlrIEt1bWFyIDx2aWtAem9uZTgxLmNvbT4KCUZpeGVkIE1TIFVJIEdvdGhpYyBmb250IG5hbWVzLgoKCSogZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfTmwucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19ObC5yYywgZGxscy9vbGVkbGcvcnNyYy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJVHJhbnNsYXRlIG1zcmxlMzIgYW5kIG9sZWRsZyByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvcnQgdGhlIG91dHB1dCBvZiB3Y21kJ3Mgc2V0IGNvbW1hbmQuCgoJKiBkbGxzL250ZGxsL250LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBhbiBTSUQgd2hlbiBHZXRUb2tlbkluZm9ybWF0aW9uIGlzIGNhbGxlZCB3aXRoIGNsYXNzCglUb2tlbk93bmVyLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQWRkZWQgc3R1YnMgZm9yIG9wdGlvbnMgQ09OTkVDVF9USU1FT1VUIGFuZCBEQVRBX1JFQ0VJVkVfVElNRU9VVC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRFdMX1VTRVIgbWlnaHQgYmUgdXNlZCBvdGhlcndpc2UsIHNvIHVzZSBhbiBpbnRlcm5hbCB3aW5kb3cgcHJvcGVydHkKCWZvciBkYXRhIHN0b3JhZ2UuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBaaW1sZXIgQXR0aWxhIDxoaWphc3p1QGhsZnNsaW51eC5odT4KCUZpeGVkIEh1bmdhcmlhbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglGaXhlZCBhIHR5cG8uCgoJKiBkbGxzL21zaHRtbC9tc2h0bWwuc3BlYzogRGF2aWQgTWlsbGVyIDxjb21wc29sQHB0ZC5uZXQ+CglSZW1vdmVkIGV4cGxpY2l0IG9yZGluYWxzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWxzbyByZW1vdmUgaW4gdGhlIEQzRCBjb2RlIHRoZSBwZWRhbnRpYyBjaGVjayBvbiB0aGUgR2V0UHJvY0FkZHJlc3MKCWV4dGVuc2lvbi4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IElHcmFwaEJ1aWxkZXI6OkNvbm5lY3REaXJlY3QuCgktIFJlZ2lzdGVyIElGaWx0ZXJNYXBwZXIgYW5kIElGaWx0ZXJNYXBwZXIyIGluIERsbFJlZ2lzdGVyU2VydmVyLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywKCSAgcHJvZ3JhbXMvdmlldy9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlZCBJdGFsaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJV2hlbiBhIGRpcmVjdG9yeSBpcyBlbnRlcmVkIGluIHRoZSAxNiBiaXRzIGZpbGUgZGlhbG9nLCBpdCBzaG91bGQgbm90CgliZSByZXR1cm5lZCB0aGUgdXNlci4gSW5zdGVhZCB0aGUgZGlyZWN0b3J5IG11c3QgYmUgY2hhbmdlZCBhbmQgdGhlCglkaWFsb2cgd29yayBmcm9tIHRoZXJlLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJUmVpbml0aWFsaXplIHRodW1iIHdoZW4gdHJhY2tiYXIgc2l6ZSBpcyBjaGFuZ2VkLgoKCSogd2luZG93cy93aW4uYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUHJldmVudCBmYWxzZSBtYXRjaGVzIGluIFdJTl9GaW5kV2luZG93LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZXRlc3Q6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVNvbGFyaXMgc2ggcG9ydGFiaWxpdHkgZml4LgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglGaXggdW5kZWxldGVkIHRlbXBvcmFyeSBmaWxlLgoJQ29ycmVjdCBlcnJvciBtZXNzYWdlcyBhbmQgY29tbWVudHMsIGJyZWFrIGxvbmcgbGluZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNlYXJjaCBmb3IgbWluZ3ctJHByb2cgdG9vLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGltZW5zaW9ucyB3aXRoIGNFbGVtZW50cz0wIGFyZSB2YWxpZCBhbmQgbmVlZGVkIGJ5IEluc3RhbGxTaGllbGQuCglTYWZlQXJyYXlHZXRFbGVtZW50OiBmaXhlZCBCU1RSIGFuZCBMUFVOS05PV04gaGFuZGxpbmcuCglBZGRlZCB0ZXN0Y2FzZXMgZm9yIGFib3ZlIGNhc2VzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbW9yZSBhcmd1bWVudCBudW1iZXJzIGZvciBfaW52b2tlKCkuCgoyMDAzLTEyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJOC9VSTggYXJlIGFjY2VwdGVkIGluIGFycmF5cyBpbiByZWNlbnQgbmF0aXZlIGRsbHMuCglUZXN0IFVEVHMsIGFycmF5IGNvZXJjaW9uIGFuZCBuZXcgZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgdGhlIFNhZmVBcnJheSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuIGNvZXJjaW5nIGFycmF5cy4KCVNpbXBsaWZ5IFZhcmlhbnRDaGFuZ2VUeXBlRXguCglSZXBsYWNlIGNhbGxzIHRvIGR1bXBfVmFyaWFudCgpIHdpdGggVFJBQ0Uncy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZXdyaXRlOiBTdXBwb3J0IEk4L1VJOCxSRUNPUkQuCglTdG9yZSBhcnJheSBib3VuZHMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgbmF0aXZlLgoJQWRkIENyZWF0ZUV4LCBDcmVhdGVWZWN0b3JFeCwgVmVjdG9yRnJvbUJzdHIsIEJzdHJGcm9tVmVjdG9yLgoKCSogdG9vbHMvd2luZW1ha2VyOiBLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgbWZjL0luY2x1ZGUgYW5kIG1mYy9zcmMgYXMgcG9zc2libGUgcGxhY2VzIGZvciBpbmNsdWRlcyBhbmQgdGhlCglsaWJyYXJ5LgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGNoIGFuZCB0ZXN0IGZvciBzY2FuZiAlaS4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZW52LmMsIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglDaGVjayBpZiBhIGZ1bmN0aW9uIGV4aXN0cyBiZWZvcmUgdGVzdGluZyBpdC4KCgkqIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21jaXduZC5jLAoJICBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGluY2x1ZGUvdmZ3Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHN1cHBvcnQgZm9yIG1hbnkgTUNJV25kQ2xhc3MgTUNJXyBhbmQgTUNJV05ETV8gbWVzc2FnZXMuCglDb252ZXJ0IE1DSVduZENsYXNzIGltcGxlbWVudGF0aW9uIHRvIHVuaWNvZGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTW92ZUZpbGUgcmV0dXJucyBFUlJPUl9BTFJFQURZX0VYSVNUUywgbm90IEVSUk9SX0ZJTEVfRVhJU1RTLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFZhckludCwgVmFyUG93LgoJQWRkZWQgUjQgKGZsb2F0KSBzdXBwb3J0IHRvIFZhckFkZC4KCUFkZGVkIERBVEUgc3VwcG9ydCB0byBWYXJTdWIuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYl9kaXNhc20uYywgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLCBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsIHByb2dyYW1zL3dpbmVkYmcvaW50dmFyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbXNjLmMsIHByb2dyYW1zL3dpbmVkYmcvcmVnaXN0ZXJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLCBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGdldCByaWQgb2Ygd2luZWRiZyBpbnRlcm5hbCBjaGFubmVscyBmb3Igb3V0cHV0CgktIG1vdmUgYWxsIHN0YW5kYXJkIChvbGQgTUVTRyBjaGFubmVsKSBvdXRwdXQgdG8gc3Rkb3V0CgktIG1vdmUgYWxsIG90aGVyIG91dHB1dHMgKFRSQUNFLCBXQVJOLi4uKSB0byBhIG5ldyB3aW5lIGRlYnVnZ2luZwoJICBjaGFubmVsICh3aW5lZGJnKQoJLSByZXBsYWNlZCBxdWl0ZSBhIGZldyAjaWZkZWY6ZWQgb3V0IG91dHB1dCB0byBuZXcgY2hhbm5lbHMgKG1haW5seSBpbgoJICBzeW1ib2wgbWFuYWdlbWVudCBhcmVhLi4uKQoJLSBhZGRlZCBhIG5ldyBtYWludGVuYW5jZSBjb21tYW5kcyB0byBlYXNlIHVwIGRlYnVnZ2luZwoJLSB1cGRhdGVkIGRvY3VtZW50YXRpb24gYWNjb3JkaW5nbHkKCgkqIGRsbHMvd2lubW0vd2lubW1fRW4ucmMsIGRsbHMvd2lubW0vd2lubW1fRXMucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fRnIucmMsIGRsbHMvd2lubW0vd2lubW1fSXQucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fUHQucmMsIGRsbHMvd2lubW0vd2lubW1fUnUucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fU2sucmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeCBmb3Igd2lubW0gcmVzb3VyY2VzIChwYXRjaCBieSBGaWxpcCBOYXZhcmEpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvaGVhcC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVtHbG9iYWx8TG9jYWxdUmVBbGxvYyBkb24ndCBmYWlsIHdpdGggc2l6ZSAwLgoJRml4ZWQgdHlwb3MuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglPbGRlciB2ZXJzaW9ucyBvZiBmcmVldHlwZSBkbyBub3QgaGF2ZSBGVF9HZXRfRmlyc3RfQ2hhci4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCBvcHRpb25zIGZvciB3aW5lYnVpbGQuCgoJKiBkbGxzL2tlcm5lbC9kZXZpY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFeHBsaWNpdGx5IGNsZWFyIHZtODYgZmxhZyBpbiBESU9DUmVnc18yX0NPTlRFWFQuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBZGRlZCBzbnByaW50ZiB0ZXN0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4LgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQWRkZWQgaW5jbHVkZSBvZiAid2luZS9wb3J0LmgiIGZvciBNU1ZDLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS93aW5lYWxzYS5kcnYuc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUV4cG9ydGVkIHdpZE1lc3NhZ2UgZnVuY3Rpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglZZXQgYW5vdGhlciB1c2VmdWwgaGludCBmb3IgbWlzc2luZyBzdGRvbGUzMi50bGIuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSFRUUF9EZWFsV2l0aFByb3h5OiBPbmx5IGFkZCBodHRwOi8vIHRvIHByb3h5IHN0cmluZyB3aGVuIG5lZWRlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjbGVhciB0aGUgcG9pbnRlciB3ZSBqdXN0IGFsbG9jYXRlZCwganVzdCB0aGUgZmlyc3QgYnl0ZSBpdAoJcG9pbnRzIHRvLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHBvdGVudGlhbGx5IHVuaW5pdGlhbGlzZWQgc3ouCgoJKiB0b29scy93aW5lbWFrZXI6IEtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCB0ZXN0IGZvciAtZm1zLWV4dGVuc2lvbnMgdG8gZ2VuZXJhdGVkIGNvbmZpZ3VyZS5hYy4KCjIwMDMtMTItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzEyMTIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMTItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGV4dC5jOiBHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJUGFzcyBkdHAgcGFyYW1ldGVyIG9uIGZyb20gRHJhd1RleHRFeEEgdG8gRHJhd1RleHRFeFcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS93aW5zdmMuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2Ygc29tZSBzZXJ2aWNlIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZC5oOiBSZW1vdmVkIHVzZWxlc3MgI2lmZGVmIFdJTkVMSUIuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbjoKCURlZmluZSBfX1dJTkVfXyB0byBlbmFibGUgZXh0ZW5zaW9ucyAoc3BvdHRlZCBieSBNYXJ0aW4gRnVjaHMpLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSB0aGUgZGxscy8gc2VjdGlvbi4gUmVtb3ZlIGdkaS97LGVuaH1tZmRydiwgdGhleSBhcmVuJ3QKCURMTHMuIExpc3QgdGhlIGRvY3VtZW50YXRpb24vc2FtcGxlcyBkaXIgYXMgd2VsbC4KCgkqIE1ha2UucnVsZXMuaW46IEFkZCBERUZTIHRvIHRoZSByZXNvdXJjZSBjb21waWxlciBmbGFncy4KCgkqIGxpYnMvd2luZS9sZHQuYzogQXZvaWQgY29tbW9uIHN5bWJvbHMgb24gRGFyd2luL01hYyBPUyBYLgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UuYzoKCUFkZGVkIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiBGaW5kUmVzb3VyY2VFeEEvVyAoYmFzZWQgb24gYSBwYXRjaCBieQoJUmljaGFyZCBDb2hlbikuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUcnkgbm90IHRvIGRpc3BsYXkgdW5pbml0aWFsaXplZCBkYXRhIGluIHRyYWNlcyAoZm91bmQgYnkgVmFsZ3JpbmQpLgoKCSogZGxscy9jb21jdGwzMi9mbGF0c2IuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUmVtb3ZlIGZsYXQgc2Nyb2xsYmFyIHN0dWIgZml4bWVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBpbXBsaWIgcnVsZSBmb3IgYnVpbGRpbmcgaW1wb3J0IGxpYnMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogSmVycnkgSmVua2lucyA8SmVycnlfSl9KZW5raW5zQGhvdG1haWwuY29tPgoJRml4IG1hbmFnZWQgc3RhdGUgb2Ygc29tZSB3aW5kb3dzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEFuZHJldyBkZSBRdWluY2V5IDxhZHFfZHZiQGxpZHNraWFsZi5uZXQ+CgktIEltcGxlbWVudGVkIEhFTFBESVIgc3Via2V5cyBwcm9wZXJseSBpbiBSZWdpc3RlclR5cGVMaWIoKS4KCS0gSW1wbGVtZW50ZWQgVW5SZWdpc3RlclR5cGVMaWIoKS4KCS0gRml4ZWQgdmFyaW91cyBtaW5vciBidWdzLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgaW5jbHVkZS91cmxtb24uaCwKCSAgaW5jbHVkZS91cmxtb24uaWRsOgoJS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIENyZWF0ZUFzeW5jQmluZEN0eCBhbmQgSXNBc3luY01vbmlrZXIgc3R1YnMuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBpbmNsdWRlL3dpbm50LmgsIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbjoKCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglXaGVuIGJ1aWxkaW5nIGEgUEUgRExMIChNaW5HVyksIHZhcmlhYmxlcyBleHBvcnRlZCBmcm9tIGEgRExMIG11c3QgYmUKCWV4cGxpY2l0bHkgbWFya2VkIGFzIGRsbGltcG9ydCB3aGVuIHVzaW5nIHRoZW0uCgoJKiBkbGxzL2tlcm5lbC9wdGhyZWFkLmM6CglSZXR1cm4gYW4gZXJyb3IgaW4gd2luZV9wdGhyZWFkX211dGV4X3VubG9jayBpZiB3ZSBkb24ndCBvd24gdGhlCgljcml0aWNhbCBzZWN0aW9uLCB0aGlzIHNob3VsZCBhdm9pZCB0cm91YmxlIGNhdXNlZCBieSBhIGxvY2tpbmcgYnVnCglpbnNpZGUgWGxpYi4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGcxNi5oLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuaCwgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuaCwKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCS0gVGhlIGxhc3Qgb2YgdGhlIG1ham9yIFdpbjE2LzMyIHNwbGl0IGZvciBjb21tZGxnIChmb3IgcmVhbCB0aGlzCgkgIHRpbWUpLgoJLSBNb3ZlZCBtb3N0IG9mIHRoZSAxNmJpdCBzdHVmZiB0byBjZGxnMTYuaC4KCS0gQSBmZXcgc21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL3VzZXIvbHN0ci5jOgoJTWFrZSBDaGFye0xvd2VyLFVwcGVyfUEgY2FsbCBDaGFye0xvd2VyLFVwcGVyfUJ1ZmZBLgoJU21hbGwgb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgbWVtb3J5IGFsbG9jYXRpb24uCglGaXhlZCBzaWduIGV4dGVuc2lvbiBpbiBDaGFye0xvd2VyLFVwcGVyfUEgKHJlcG9ydGVkIGJ5IEFuZHJlYXMKCVJvc2VuYmVyZykuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUF2b2lkIGxvbmcgbG9uZyBjb25zdGFudHMgKHJlcG9ydGVkIGJ5IEdlcmFsZCBQZmVpZmVyKS4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgcGFyZW50aGVzZXMgaW4gbWFjcm9zLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVXJsIENhY2hlIGltcHJvdmVtZW50cy4KCS0gSW4gSW50ZXJuZXR7U2V0LFF1ZXJ5fU9wdGlvbiBmdW5jdGlvbnMsIGhJbnRlcm5ldCBjYW4gYmUgTlVMTC4KCS0gQWRkIHRyYWNlcyB0byBJbnRlcm5ldCogZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IFZpayBLdW1hciA8dmlrQHpvbmU4MS5jb20+CglBZGRlZCBldWNKUCBjaGFyc2V0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjLAoJICBvYmplY3RzL2dkaW9iai5jOgoJVmlrIEt1bWFyIDx2aWtAem9uZTgxLmNvbT4KCUZvbnQgY2hhbmdlcyBmcm9tIE1TIFAgR290aGljIHRvIE1TIFVJIEdvdGhpYy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0phLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglWaWsgS3VtYXIgPHZpa0B6b25lODEuY29tPgoJQWRkZWQgSmFwYW5lc2UgdHJhbnNsYXRpb24uCgoJKiBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIFJ0bE50U3RhdHVzVG9Eb3NFcnJvck5vVGViLCBSdGxHZXQvU2V0L1Jlc3RvcmVMYXN0V2luMzJFcnJvciwKCVJ0bEdVSURGcm9tU3RyaW5nLCBSdGxTdHJpbmdGcm9tR1VJRC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJSmVyZW15IFNoYXcgPGplcmVteS5zaGF3QGxpbmRvd3MuY29tPgoJTW92ZSB0aGUgZGF0YSBhcm91bmQgd2hlbiB0aGUgcmluZyBidWZmZXIgaXMgcmVzaXplZCBzbyB0aGF0IHRoZSBlbXB0eQoJbWVzc2FnZXMgYXJlIGJldHdlZW4gdGhlIHRvc2F2ZSBhbmQgdG9nZXQgaW5kZXhlcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCBtaXNzaW5nIGluaXRpYWxpemF0aW9ucyBvZiBzdHJ1Y3QgU0hFTExFWEVDVVRFSU5GTy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZmlsZXMvZmlsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCBhbGwgcmVtYWluaW5nIGNvbnNvbGUgcmVsYXRlZCBjb2RlIHRvIGRsbHMva2VybmVsIGRpcmVjdG9yeS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCB0eXBlcyBpbiBXU0FIdG9ubC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglMaXN0IHRoZSB0b29scyBzdWJkaXJzIGFzIHdlIGRvIGZvciBhbGwgdGhlIG90aGVycy4KCVVwZGF0ZSBkZXNjcmlwdGlvbiBvZiB0aGUgbWlzYy8gZGlyLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9hYm91dC5jLCBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG1vc3Qgc3RyaW5nIHNpemUgbGltaXRhdGlvbnMuCglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuIExlc3MgbGlzdHZpZXcgZmxpY2tlci4KCUEgYnVuY2ggb2Ygc3R5bGUgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCjIwMDMtMTItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvd2lucHJvYy5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jbGFzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3Mvd2luLmM6CglTdG9yZSBhIHBvaW50ZXIgdG8gdGhlIGNsaWVudC1zaWRlIGNsYXNzIHN0cnVjdHVyZSBpbiB0aGUgc2VydmVyIGFuZAoJcmV0dXJuIGl0IG9uIGNyZWF0ZV93aW5kb3cgYW5kIGRlc3Ryb3lfY2xhc3MuCglPbmx5IGNyZWF0ZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgZGVza3RvcCBjbGFzcyBmb3IgdGhlIHdob2xlCglzZXNzaW9uLgoJQWRkZWQgc29tZSBtaXNzaW5nIGxvY2tpbmcgaW4gdGhlIGNsaWVudC1zaWRlIGNsYXNzIG1hbmFnZW1lbnQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU9vcHMgLSBWVF9FTVBUWS0+VlRfUkVDT1JEIGlzIG5vdCBhbGxvd2VkLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0IGFsbW9zdCBhbGwgb2YgdGhlIGxvdyBsZXZlbCB2YXJpYW50IGZ1bmN0aW9ucwoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuaCwKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRG8gY29udmVyc2lvbnMgYmV0d2VlbiB0aGUgZm9udCBzaXplIHNwZWNpZmllZCBpbiBwb2ludHMgKG9yCglkZWNpcG9pbnRzKSBhbmQgaGVpZ2h0IHNwZWNpZmllZCBpbiBsb2dpY2FsIHVuaXRzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBzdHViIGFuZCBwcm90b3R5cGUgZm9yIFdTQUpvaW5MZWFmLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlaW1wbGVtZW50L2RvY3VtZW50IGV2ZXJ5IGxvdyBsZXZlbCB2YXJpYW50IGZ1bmN0aW9uLgoJSW1wbGVtZW50IERFQ0lNQUwsIEk4LCBVSTggdHlwZXMgYW5kIG90aGVyIG1pc3NpbmcgY29udmVyc2lvbnMuCglWYXJpYW50Q2hhbmdlVHlwZTogVXNlIExPQ0FMRV9VU0VSX0RFRkFVTFQgYXMgcGVyIE1TRE4uCglWYXJpYW50Q2hhbmdlVHlwZUV4OiBTdXBwb3J0IG5ldyB0eXBlcywgcGFzcyBwcm9wZXIgZmxhZ3MuCglWYXJOdW1Gcm9tUGFyc2VOdW06IFN1cHBvcnQgVlRfREVDSU1BTCBhcyBvdXRwdXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIFdhdmVJbiBzdXBwb3J0LgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRW5hYmxlIHRoZSBkaXNwbGF5IG9mIGEgdHJ1ZSB0eXBlIGJpdG1hcCBmb3IgdHJ1ZSB0eXBlIGZvbnRzLgoKCSogZGxscy9uZXRhcGkzMi93a3N0YS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGluY29ycmVjdCBjYWxjdWxhdGlvbiBvZiB0cmFuc3BvcnRfYWRkci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY3Jhc2ggaWYgbHBEZXBlbmRlbmNpZXMgaXMgTlVMTC4KCgkqIGRsbHMvY3J5cHQzMi9tYWluLmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDcnlwdFJlZ2lzdGVyT0lERnVuY3Rpb24gYW5kIENyeXB0U0lQQWRkUHJvdmlkZXIuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBKZXJlbXkgU2hhdyA8amVyZW15LnNoYXdAbGluZG93cy5jb20+CglBZGQgYSAnXHJcbicgdG8gbHBzekhlYWRlcnMgaWYgaXQgaXMgbm90IGFscmVhZHkgdGVybWluYXRlZCBieQoJJ1xyXG4nLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBGcmFuayA8Zi5nb2NrZWxAdC1vbmxpbmUuZGU+CglGaXhlZCBzaXplIGNoZWNrIGluIEdldENvbW1Db25maWcoKS4KCgkqIHByb2dyYW1zL3ZpZXcvdmlldy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIEZpeCBvYnNvbGV0ZSBjb21tZW50cyBhYm91dCB3aW5kb3dzeCwgY29tbWRsZy4KCS0gSW5jcmVhc2UgZmlsZW5hbWUgbGVuZ3RoIHRvIE1BWF9QQVRILgoJLSBTZXQgdGhlIHdpbmRvd3MgZXh0ZW50IGJlZm9yZSBwbGF5aW5nIHRoZSBtZXRhZmlsZS4KCS0gRG9uJ3QgaGFyZGNvZGUgbG9ncGl4ZWxzIHRvIDk2LgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBDaGVjayBGaW5kRmlyc3RGaWxlIGFnYWluc3QgSU5WQUxJRF9IQU5ETEVfVkFMVUUgbm90IDAuCgktIERpc3BsYXkgd2luZG93ICYgbWVzc2FnZWJveCBldmVuIGlmIHRoZXJlIGFyZSBubyBhcHBsZXRzLgoKMjAwMy0xMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jOgoJQWRkZWQgdGVzdHMgZm9yIGNsYXNzIHN0eWxlIGFuZCBpbnN0YW5jZSBoYW5kbGluZy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsCgkgIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywKCSAgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmM6CglTeXN0ZW0gY2xhc3NlcyBtdXN0IG5vdCBoYXZlIHRoZSBDU19HTE9CQUxDTEFTUyBzdHlsZS4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3dpbnByb2MuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jbGFzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3Mvd2luLmM6CglBZGRlZCB3aW5kb3cgY2xhc3NlcyBpbiB0aGUgc2VydmVyLCBhbmQgc3VwcG9ydCBmb3IgaW50ZXItcHJvY2VzcwoJR2V0Q2xhc3NXb3JkL0xvbmcgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWlrZSBNY0Nvcm1hY2spLgoJVmFyaW91cyBmaXhlcyB0byB0aGUgY2xhc3MgaW5zdGFuY2UgaGFuZGxpbmcuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVByaW50IG5hbWVzIGZvciBXaW4zMiBlcnJvcnMgdG9vLCBwbHVzIGEgZmV3IG1vcmUgc3RhdHVzIGNvZGVzLgoKCSogZGxscy91c2VyL2RpYWxvZzE2LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglBbmRyZWFzIFJvc2VuYmVyZyA8c29uaXgyMDAzQGN0Zi16LmRlPgoJUG9pbnQgc2l6ZSBpbiBETEdfVEVNUExBVEUgbWF5IGJlIG5lZ2F0aXZlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNvcnQgdGhlIGxpc3R2aWV3IHdoZW4gY2xpY2tpbmcgdGhlIE5hbWUgb3IgVHlwZSBoZWFkZXJzLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHNvbWUgTUNJV05ERl8gc3R5bGVzLCBpbmRpY2F0ZSB0aGF0IHdlIGRvIG5vdCBzdXBwb3J0CglNQ0lXTkRNXyogbWVzc2FnZXMgYXQgYWxsLgoKCSogd2luZG93cy9jbGFzcy5jOgoJTWFkZSBhbGwgdGhlIFJlZ2lzdGVyQ2xhc3MgYW5kIEdldENsYXNzSW5mbyB2YXJpYW50cyBjYWxsIHRoZQoJY29ycmVzcG9uZGluZyBFeCBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGludGVyLXByb2Nlc3MgR2V0V2luZG93V29yZC4KCURvIGJldHRlciByYW5nZSBjaGVja2luZyBvbiB0aGUgd2luZG93IGV4dHJhIGJ5dGVzLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL3RocmVhZC5oOgoJQWRkZWQgc2V0X3dpbjMyX2Vycm9yKCkgZm9yIGVycm9yIGNvZGVzIHRoYXQgZG9uJ3QgaGF2ZSBhbiBOVCBzdGF0dXMKCWVxdWl2YWxlbnQuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBIQ1JfR2V0RXhlY3V0ZUNvbW1hbmRFeFcgZm9yIGludGVybmFsIHVzZS4KCS0gTmV3IGlubGluZSBmdW5jdGlvbiAgX19TSENsb25lU3RyQXRvVy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBBbmRyZXcgZGUgUXVpbmNleSA8YWRxX2R2YkBsaWRza2lhbGYubmV0PgoJVXB3YXJkcyB0cmF2ZXJzYWwgb2YgaW5oZXJpdGFuY2UgdHJlZSBkaWRuJ3Qgb2NjdXIgZm9yIGRpc3BhdGNoCglpbnRlcmZhY2VzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IGEgY291cGxlIG9mIHRlc3RzIGZvciB3MmsgKFJ1c3NpYW4pLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9uJ3QgY2FsbCBHZXRXaW5kb3dMb25nIGZvciBldmVyeSBjb21wYXJpc29uIHdoaWxlIHNvcnRpbmcuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgYSBmb250IGhhcyBhIHZlcnNpb24gMCBPUzIgdGFibGUgdGhlbiBXaW5kb3dzIHVzZXMgQU5TSV9DSEFSU0VUIGlmCgl0aGUgZmlyc3QgY2hhcmNvZGUgPCAweDEwMCwgZWxzZSBpdCB1c2VzIFNZTUJPTF9DSEFSU0VULiAgQmFzZWQgb24gYQoJcGF0Y2ggYnkgUmVpbiBLbGF6ZXMuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgYSBmZXcgc29vbi10by1iZS1pbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoyMDAzLTEyLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IHRoZSB0ZXN0cyB0byBwYXNzIHdoZW4gbG9jYWxlIHNldHRpbmdzIGFyZSB1c2VyLW92ZXJyaWRlbi4KCUZpeCB0aG9zZSB0ZXN0cyB3aGljaCBwYXNzIG5vdy4KCVRlc3QgY29weWluZywgZm9ybWF0dGluZywgVmFyQWJzLCBWYXJOb3QuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuaCwKCSAgZGxscy9vbGVhdXQzMi9yZXNvdXJjZS5oLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgY29udmVyc2lvbnMgYmV0d2VlbiBkYXRlcyBhbmQgc3RyaW5ncy4KCVJlbW92ZSB0aGUgZmluYWwgY3J1ZnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgZGF0ZSBjb2RlCglCUEInczogUm9sbCBtaWxsaXNlY29uZHMgY29ycmVjdGx5OyBMT0NBTEVfTk9VU0VST1ZFUlJJREUgZm9yIG51bQoJcGFyc2luZy4KCUltcGxlbWVudCBWYXJBYnMgYW5kIFZhck5vdC4KCjIwMDMtMTItMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRlZCBHZXRUaXRsZUJhckluZm8uCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5oLCBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVmb3JtYXQgcmVnZWRpdCBpbiBhIGNvbnNpc3RlbnQgbWFubmVyLgoKCSogZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IElNZW1BbGxvY19GcmVlIHdoZW4gSU1lbUFsbG9jX0FsbG9jIGhhc24ndCB5ZXQgYmVlbiBjYWxsZWQgYW5kCgkgIGRlYnVnZ2luZyBpcyBvbi4KCS0gRml4IE9sZU1ldGFmaWxlUGljdEZyb21JY29uQW5kTGFiZWwgKGZpeGVzIGF0dGFjaG1lbnRzIGluIE91dGxvb2syaykuCgktIEltcGxlbWVudCBPbGVUcmFuc2xhdGVBY2NlbGVyYXRvci4KCS0gTW92ZSBPbGVDcmVhdGUgYW5kIGEgbG9hZCBvZiBQcm9wVmFyaWFudCBmdW5jdGlvbnMgb3V0IG9mIHN0dWJzIGZpbGUuCgktIENoYW5nZSBPbGVDcmVhdGUgdG8gYSBzZW1pLXN0dWIuCgoJKiBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwgZGxscy91eHRoZW1lL3N5c3RlbS5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglMb2FkLCB2YWxpZGF0ZSBhbmQgcmV0cmlldmUgYSBmZXcgcHJvcGVydGllcyBmcm9tIGFuIG1zc3R5bGVzIHRoZW1lLgoKCSogcHJvZ3JhbXMvY2xvY2svRGEucmMsIHByb2dyYW1zL2Nsb2NrL0RlLnJjLCBwcm9ncmFtcy9jbG9jay9Fbi5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2Nsb2NrL0ZpLnJjLCBwcm9ncmFtcy9jbG9jay9Gci5yYywKCSAgcHJvZ3JhbXMvY2xvY2svSHUucmMsIHByb2dyYW1zL2Nsb2NrL0l0LnJjLAoJICBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTmwucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9SRUFETUUsIHByb2dyYW1zL2Nsb2NrL1J1LnJjLAoJICBwcm9ncmFtcy9jbG9jay9TaS5yYywgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL1N3LnJjLAoJICBwcm9ncmFtcy9jbG9jay9UT0RPLCBwcm9ncmFtcy9jbG9jay9UaC5yYywgcHJvZ3JhbXMvY2xvY2svV2EucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1poLnJjLCBwcm9ncmFtcy9jbG9jay9jbG9ja19yZXMuaCwKCSAgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuaCwKCSAgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsCgkgIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmMsIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIEltcGxlbWVudCAnQ2hvb3NlIGZvbnQnLCAnTm8gdGl0bGUnLCAnQWx3YXlzIG9uIFRvcCcuCgktIFBhaW50IHRvIG9mZnNjcmVlbiBiaXRtYXAgdG8gZWxpbWluYXRlIGZsaWNrZXIuCgktIFB1dCAnQWx3YXlzIG9uIHRvcCcgb24gdGhlIG1haW4gbWVudSBub3QgdGhlIHN5c3RlbSBtZW51LgoJLSBEYXRlIGZvcm1hdCBzaG91bGQgYmUgREFURV9MT05HREFURS4KCS0gTCBidXR0b24gZHJhZyB0byBtb3ZlLgoJLSBDb3NtZXRpYyBhZGp1c3RtZW50cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbmNsdWRlIHRlc3RzIGZvciBNb3ZlRmlsZVtXfEFdLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRGVhbCB3aXRoIGtlcm5lbHMgdGhhdCBkb24ndCBoYXZlIElzVmFsaWRMYW5ndWFnZUdyb3VwLgoJRGVhbCB3aXRoIG5vbi1pbXBsZW1lbnRlZCBGb2xkU3RyaW5nW0F8V10uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglDaGVjayBmb3IgRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQgZXJyb3IgZnJvbSBSZW1vdmVEaXJlY3RvcnlXLgoKCSogd2luZWRlZmF1bHQucmVnOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCAiTUNJIEV4dGVuc2lvbnMiIHJlZ2lzdHJ5IHNlY3Rpb24sIGFkZCBNQ0kzMiBzZWN0aW9uLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEFkZGVkIENTX0RST1BTSEFET1cuCgoJKiBkbGxzL2tlcm5lbC9hdG9tLmMsIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZG9zbWVtLmMsCgkgIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9nbG9iYWwuaCwKCSAgb2JqZWN0cy9tZXRhZmlsZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgY29udGVudCBvZiBnbG9iYWwuaCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwcml2YXRlIGhlYWRlcnMuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmUgKGFnYWluKSB1c2FnZSBvZiAxNiBiaXQgc3BlY2lmaWMgZnVuY3Rpb25zICh0aHVuayBsb2NrKSB0byAxNiBiaXQKCWNvZGUgb25seS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUxpbWl0IHVzYWdlIG9mIHZlcnRleCBhcnJheXMgdG8gY29ycmVjdCBzdGF0ZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgdXNXaW5Bc2NlbnQgKyB1c1dpbkRlc2NlbnQgPT0gMCB0aGVuIHVzZSB0aGUgQXNjZW5kZXIgYW5kIERlc2NlbmRlcgoJdmFsdWVzIGluc3RlYWQuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZm9udCBvYmplY3QgbGVhayBpbiB0aGUgZm9udCBkaWFsb2cncyBXTV9QQUlOVCBoYW5kbGVyLgoKCSogd2luZWRlZmF1bHQucmVnOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBhIGNvdXBsZSBvZiBpbmNvcnJlY3QgcmVnaXN0cnkgcm9vdCBrZXkgbmFtZXMuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQ2VydENyZWF0ZUNSTENvbnRleHQgYW5kIENlcnRDbG9zZVN0b3JlLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN0cmVhbWxpbmUgZGxscy8gYW5kIHByb2dyYW1zLyBpbiB0ZXJtcyBvZiBpbmRlbnRhdGlvbi4KCVVwZGF0ZWQgdGhlIHByb2dyYW1zLyAoYWRkZWQgYW5kIGRlbGV0ZWQgYSBidW5jaCBvZiBlbnRyaWVzKS4KCUFkZGVkIHRoZSBpbmNsdWRlL3ttc3ZjcnQsd2luZX0gdG8gdGhlIGxpc3Qgb2YgaW5jbHVkZSBkaXJzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCU1ha2UgaW5hY3RpdmUgTEVEIHNlZ21lbnRzIGRpbW1lciB0byBtYWtlIG51bWJlcnMgZWFzaWVyIHRvIHJlYWQuCgoJKiBkbGxzL21zYWNtL3dpbmVtcDMvY29tbW9uLmMsIGRsbHMvbXNhY20vd2luZW1wMy9pbnRlcmZhY2UuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlIGFuIGluc3RhbmNlIG9mIGV4aXQoKS4gV2Ugc2hvdWxkIHJldHVybiBmYWlsdXJlLCBub3Qga2lsbCB0aGUKCXRocmVhZCwgd2hlbiBhIGJhZCBzdHJlYW0gaXMgZW5jb3VudGVyZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRmlyc3QgZW51bWVyYXRlIGFsbCBpbnRlcm5hbCBkZXZpY2VzIGFuZCB0aGVuIGV4dGVybmFsIG1pZGkgcG9ydHMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlbW92ZSBudGRsbCBmcm9tIGltcG9ydHMuCgoJKiBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGluY2x1ZGUvbG1jb25zLmgsIGluY2x1ZGUvbG13a3N0YS5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUGFydGlhbGx5IGltcGxlbWVudCBOZXRXa3N0YUdldEluZm8uCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZS54cG0sCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIGluY2x1ZGUvYml0bWFwcy8qLnhwbSB3aGVyZSB0aGV5IGJlbG9uZy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJpbmV0LnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHBhcmFtZXRlciB0eXBlcyBvZiBmdW5jdGlvbiBFeHRyYWN0LgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9lbmNvZGUuYywKCSAgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSdW4gbGVuZ3RoIGFuZCBhc2NpaTg1IGVuY29kZSBpbWFnZSBkYXRhLgoKMjAwMy0xMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jOgoJR2V0IHJpZCBvZiBjbGlwYm9hcmQuaC4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglSZW1vdmVkIG5vdyB1c2VsZXNzIGNhbGwgdG8gZ2xYUXVlcnlFeHRlbnNpb25zU3RyaW5nLgoKCSogd2luZG93cy9wYWludGluZy5jOgoJSW4gUkRXX1ZhbGlkYXRlUGFyZW50LCBnZXQgcmlkIG9mIHRoZSBwYXJlbnQgdXBkYXRlIHJlZ2lvbiBpZiBpdCBpcwoJZW1wdHkgYWZ0ZXIgdGhlIHZhbGlkYXRpb24sIHRvIGF2b2lkIGEgdXNlbGVzcyBXTV9QQUlOVC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQcmludCBlcnJvciBtZXNzYWdlcyB0byBzdGRlcnIgYXMgaXMgY3VzdG9tYXJ5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9iaXRibHQuYywgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JydXNoLmMsCgkgIGRsbHMveDExZHJ2L2NsaXBwaW5nLmMsIGRsbHMveDExZHJ2L2NvZGVwYWdlLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L29wZW5nbC5jLAoJICBkbGxzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMveDExZHJ2L3Blbi5jLCBkbGxzL3gxMWRydi90ZXh0LmMsCgkgIGRsbHMveDExZHJ2L3hmb250LmMsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCU1vdmVkIGFsbCB0aGUgZmlsZXMgaW4gZ3JhcGhpY3MveDExZHJ2IHRvIGRsbHMveDExZHJ2LgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbGlicy93aW5lL2RlYnVnLmMsCgkgIGxpYnMvd2luZS9sb2FkZXIuYzoKCUFkZGVkIGEgV0lORURFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQgYWxsb3dzIHR1cm5pbmcgb24gZGVidWcKCW91dHB1dCBhcyBlYXJseSBhcyBwb3NzaWJsZSBkdXJpbmcgc3RhcnR1cC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglSZW1vdmVkIFgxMSBkaXNwbGF5IHBhcmFtZXRlciBmcm9tIHRoZSBjb25maWcgZmlsZSwgdGhpcyBpcyBtb3JlCgljb25mdXNpbmcgdGhhbiB1c2VmdWwuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeGVkIHNvbWUgZmxhZ3MgaW4gY2FsbHMgdG8gQ3JlYXRlV2luZG93RXguCglGaXhlZCBjb2xvciBvZiB0aGUgc3BsaXR0ZXIuCgoyMDAzLTEyLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUluaXRpYWxpemUgWGxpYiB0aHJlYWRpbmcgc3VwcG9ydCB0byBzZWUgd2hhdCBpdCBicmVha3MuLi4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1hcCAoV1NfRVhfVE9PTFdJTkRPVyAmIFdTX0NBUFRJT04pIHRvIF9ORVRfV01fV0lORE9XX1RZUEVfVVRJTElUWS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3QgdGhlIHRlc3QgZm9yIHRoZSBPRFNfU0VMRUNURUQgYml0IGluIHRoZSBXTV9EUkFXSVRFTSBtZXNzYWdlCgloYW5kbGVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvaGVhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW9yZSB0ZXN0cyBmb3Ige0xvY2FsLEdsb2JhbH17LFJlfUFsbG9jKCkgY2FsbHMuCglDbGVhbnVwIG9mIHRoZSBIZWFwKigpIHRlc3RzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJRGVmaW5lIEFMU0FfUENNX09MRF8qIHN5bWJvbHMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBbHNhIDEuMC4KCgkqIGRsbHMva2VybmVsL2RldmljZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IERldmljZUlvQ29udHJvbCBmb3IgVkRIQ1AsIFZORVRCSU9TLCBhbmQgVk5CLgoJR2V0cyByaWQgb2YgRklYTUVzIGZvciBpcGNvbmZpZy5leGUgYW5kIHdpbmlwY2ZnLmV4ZS4KCgkqIGRsbHMvdXh0aGVtZS8uY3ZzaWdub3JlLCBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS9tYWluLmMsIGRsbHMvdXh0aGVtZS9tZXRyaWMuYywKCSAgZGxscy91eHRoZW1lL3Byb3BlcnR5LmMsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywKCSAgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYywgZGxscy91eHRoZW1lL3V4dGhlbWVkbGwuaCwKCSAgZGxscy91eHRoZW1lL3ZlcnNpb24ucmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZGVkIHN0dWJzIGZvciBhbGwgZnVuY3Rpb25zLgoKCSogZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglMZXQgUFNEUlZfV3JpdGVTcG9vbCBjb3BlIHdpdGggc3RyaW5ncyBsb25nZXIgdGhhbiAweGZmZmYgYnl0ZXMuCgoJKiBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL2Jyb3dzci5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBzb21lIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBtaXNzaW5nIExpc3RWaWV3X0dldFZpZXdSZWN0KCkgbWFjcm8uCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcmVnLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IHRoZSBSdGxwKiByZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglJbXBsZW1lbnQgc29tZSBtb3JlIHJlZ2lzdGVyIGZ1bmN0aW9ucyB1c2luZyBERUZJTkVfUkVHU19FTlRSWVBPSU5UIHRvCgltYWtlIHRoZW0gYXZhaWxhYmxlIGZvciBpbXBvcnRzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5lL3BvcnQuaCwgaW5jbHVkZS93aW5udC5oOgoJTW92ZWQgdGhlIERFRklORV9SRUdTX0VOVFJZUE9JTlQgbWFjcm9zIHRvIGluY2x1ZGUvd2luZS9wb3J0LmguCglSZW1vdmVkIHRoZSBDIGZhbGxiYWNrIGNvZGUsIGRvIHRoYXQgaW4gdGhlIGNhbGxlcnMgaW5zdGVhZC4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglXZSBubyBsb25nZXIgbmVlZCBhIHNwZWNpYWwgY2FzZSBmb3IgY29kZXBhZ2VzIG9uIHN0YXJ0dXAsCglpbml0aWFsaXphdGlvbiBpcyBkb25lIGluIHRoZSBjb3JyZWN0IG9yZGVyIG5vdy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi94ZG5kLmM6IFBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfVGgucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBUaGFpIHRyYW5zbGF0aW9uLgoKCSogZGxscy93c29jazMyL3dzY29udHJvbC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZW1vdmVkIHVudXNlZCBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21ha2V0ZXN0LAoJICBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaDoKCUpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglOZXcgV2luZSB0ZXN0IHNoZWxsIHV0aWxpdHkuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglVc2UgdGhlIGxmSGVpZ2h0IGZpZWxkIHRvIGluaXRpYWxpemUgdGhlIGZvbnQgZGlhbG9nJ3MgcG9pbnQgc2l6ZS4gRG8KCW5vdCBmb3JnZXQgdG8gcmV0dXJuIHNvbWUgdmFsdWVzIGluIHRoZSBjaG9vc2Vmb250IHN0cnVjdHVyZSBpbiB0aGUgMTYKCWJpdCB2ZXJzaW9uIG9mIHRoZSBDaG9vc2VGb250IGZ1bmN0aW9uLgoKCSogZGxscy9uZXRhcGkzMi9hcGlidWYuYywgZGxscy9uZXRhcGkzMi90ZXN0cy9hcGlidWYuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggTmV0QXBpQnVmZmVyUmVhbGxvY2F0ZSBhbmQgYWRkIGEgZmV3IHRlc3RzIGZvciB0aGUgYm9yZGVyIGNhc2VzCgkodGhhbmtzIHRvIEp1YW4gTGFuZyBmb3IgY2xhcmlmaWNhdGlvbnMpLgoKCSogd2luZWRlZmF1bHQucmVnOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgRm9udHMga2V5IGZvciBOVCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgoKCSogZGxscy9rZXJuZWwvY3B1LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT24gaTY4NiwgcmVwb3J0IHByb2Nlc3NvciBsZXZlbCA2LgoKMjAwMy0xMi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJQ29udmVydGVkIGxvY2FsZSBzZXR1cCB0byBVbmljb2RlIHNvIHRoYXQgd2UgZG9uJ3QgdXNlIGNvZGUgcGFnZXMKCWJlZm9yZSB0aGV5IGFyZSBpbml0aWFsaXplZC4gSW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIGEgYml0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oOgoJVXNlIGRlbGF5ZWQgaW1wb3J0cyBpbnN0ZWFkIG9mIGV4cGxpY2l0IEdldFByb2NBZGRyZXNzIGNhbGxzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5oLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbXBsZW1lbnQgY29tYm9ib3ggdG8gc2VsZWN0IHRoZSBmb250J3MgY2hhcmFjdGVyIHNldC4KCUJ1ZyBmaXhlczogaGFuZGxlIFdNX01FQVNVUkVJVEVNIG1lc3NhZ2U7IGhhbmRsZSB0aGUgV01fUEFJTlQgbWVzc2FnZQoJaW4gdGhlIDE2Yml0IGZvbnQgZGlhbG9nLCBzbyBpdCBkaXNwbGF5cyB0aGUgc2FtcGxlIHN0cmluZyB0b28uCgoJKiBwcm9ncmFtcy9ydW5kbGwzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgMTYtYml0IGRsbHMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBleHRyYSBzcGFjZSBhbGxvY2F0ZWQgaW4gdGhlIG1vZHJlZiBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCVJldmVydCBjaGFuZ2UgZm9yIGhhbmRsaW5nIHVzZXIgb3ZlcnJpZGVzIGFzIG51bWJlcnMgYW5kIHJlaW1wbGVtZW50CglpdCBkaWZmZXJlbnRseS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgLWxYbXUgYW5kIC1sWGkgZm9yIGdsdXQgbGlicmFyeS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBlZGl0aW5nIHN0cmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSW1wbGVtZW50ZWQgUnVuRExMX0NhbGxFbnRyeTE2LgoKCSogcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jLAoJICBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBQcm9wZXJseSBkaXNhYmxlIHRoZSBzZWNvbmQgaGFuZC4KCS0gUmVtb3ZlIHVubmVlZGVkICNpbmNsdWRlICJ3aW5ubHMiLCAjZGVmaW5lIE1JTi4KCS0gR2V0IHRoZSBkaWdpdGFsIGNsb2NrIHdvcmtpbmcuCgoJKiBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGw6CglLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJSUJpbmRIb3N0IGludGVyZmFjZSBhZGRpdGlvbnMuCgoJKiBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2NpZGwuaWRsOgoJS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIElPYmplY3RXaXRoU2l0ZSBpbnRlcmZhY2UuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCVNlYXJjaCBmb3IgbGlicmFyaWVzIGluIHRoZSBvcmRlciAtIC5zbyAtIC5kZWYgLSAuYQoKCSogcHJvZ3JhbXMvY2xvY2svRGEucmMsIHByb2dyYW1zL2Nsb2NrL0RlLnJjLCBwcm9ncmFtcy9jbG9jay9Fbi5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2Nsb2NrL0ZpLnJjLCBwcm9ncmFtcy9jbG9jay9Gci5yYywKCSAgcHJvZ3JhbXMvY2xvY2svSHUucmMsIHByb2dyYW1zL2Nsb2NrL0l0LnJjLCBwcm9ncmFtcy9jbG9jay9ObC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svUHQucmMsIHByb2dyYW1zL2Nsb2NrL1J1LnJjLCBwcm9ncmFtcy9jbG9jay9TaS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL1N3LnJjLCBwcm9ncmFtcy9jbG9jay9UaC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL2Nsb2NrL1poLnJjLAoJICBwcm9ncmFtcy9jbG9jay9jbG9ja19yZXMuaCwgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywKCSAgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIFVzZSByZXNvdXJjZSBpZHMgSURNXyosIElEU18qIGluc3RlYWQgb2YgbnVtYmVycy4KCS0gTW92ZSAuLi4gZnJvbSB0b3BsZXZlbCAiSW5mby4uLiIgb250byBzdWIgaXRlbXMgKGVnICJBYm91dCIpLgoKCSogb2JqZWN0cy9wZW4uYzogQW5kcmV3IGRlIFF1aW5jZXkgPGFkcV9kdmJAbGlkc2tpYWxmLm5ldD4KCUNoZWNrIGJydXNoIHN0eWxlIGJlZm9yZSBwcmludGluZyBGSVhNRS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJT25seSBob25vdXIgU0JTX1NJWkVCT1gqQUxJR04gc3R5bGVzIGlmIFNCU19TSVpFe0dSSVAsQk9YfSBpcyBzZXQuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVVwZGF0ZWQuCgoyMDAzLTEyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYzoKCVVzZSBub3JtYWwgZGxsIGltcG9ydHMgaW5zdGVhZCBvZiBHZXRQcm9jQWRkcmVzcyBoYWNrcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUludmFsaWRhdGUgaXRlbXMgb24gc2V0IHNlbGVjdGlvbi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgc3VwcG9ydCBmb3IgU0JTX1NJWkVHUklQLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogRGFuaWVsIFNrb3JrYSA8c2tvcmthQGdteC5uZXQ+CglGaXhlZCBhIHByb2JsZW0gdXNpbmcgZ2xYR2V0UHJvY0FkZHJlc0FSQiB3aXRoIGJhZCBPcGVuR0wgbGlicy4KCgkqIGZpbGVzL2ZpbGUuYzogUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGRsbCBzZXBhcmF0aW9uIGhhY2suCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy93aW5lZG9zL2ludDEzLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCVVzZSB3aW5lX3NlcnZlcl9yZWxlYXNlX2ZkKCkgaW5zdGVhZCBvZiBjbG9zZSgpIGV2ZXJ5d2hlcmUgd2UgdXNlCgl3aW5lX3NlcnZlcl9oYW5kbGVfdG9fZmQoKS4KCUEgZmV3IG1pbm9yIHdpbnNvY2sgY2xlYW51cHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nbHV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9nbHV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1dDMyL2dsdXQuYywgZGxscy9nbHV0MzIvZ2x1dDMyLnNwZWMsCgkgIGRsbHMvbWFrZV9kbGxzOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGdsdXQzMiBkbGwuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCS0gdGhlIGxhc3QgZXZlbnQgd2FzIG5vdCBsb29rZWQgYXQgd2hlbiBjb21wcmVzc2luZyBjb25zb2xlIGV2ZW50cwoJLSBiZXR0ZXIgY29tcHJlc3Npb24gZm9yIFVQREFURV9FVkVOVHMgYXMgdGhleSBhcmUgbm90IGluZmx1ZW5jZWQgYnkKCSAgQ1VSU09SX1BPUyBvciBDVVJTT1JfR0VPTQoJLSBhZGRlZCBkZWJ1ZyB0cmFjZXMKCgkqIGRsbHMvb2xlYXV0MzIvaGFzaC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGhhc2ggdGFibGVzIGZvciBhbGwgc3VwcG9ydGVkIGxhbmd1YWdlcy4KCVJlbW92ZSBzb21lIHVzZWxlc3MgaW5jbHVkZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBpbmNsdWRlL3dpbnN2Yy5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIENoYW5nZVNlcnZpY2VDb25maWdBL1cuCglJbXBsZW1lbnQgQ3JlYXRlU2VydmljZVcgYW5kIGNhbGwgaXQgZnJvbSBDcmVhdGVTZXJ2aWNlQS4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgUXVlcnlTZXJ2aWNlQ29uZmlnVy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCVRob21hcyBCcml4IExhcnNlbiA8a2lsbGFyQGdldDJuZXQuZGs+CglBZGRlZCBzdHViIGZvciBDcnlwdFByb3RlY3REYXRhLCBzbyBwcm9ncmFtcyBsaWtlIFNreXBlIGNhbiBzdGFydC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmUgdXNhZ2Ugb2YgMTYgYml0IHNwZWNpZmljIGZ1bmN0aW9ucyAoTWFwU0wpIGluIDE2IGJpdCBjb2RlIG9ubHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RhYi5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CgktIEZpeCBkcmF3aW5nIG9mIEhvdFRyYWNrZWQgdGFicyAmIGJ1dHRvbnMuCgktIE1vcmUgdGFiIHNpemUgZml4ZXMgaW4gZGlmZmVyZW50IHN0eWxlcy4KCS0gRG9uJ3QgdXNlIG5ldyBwYWRkaW5nIHVudGlsIHN0eWxlIGNoYW5nZXMuCgktIEZpeCBsZWZ0IGFsaWdubWVudCBvZiBsYWJlbHMgJnwgaWNvbnMuCgktIERvbid0IGRyYXcgb3ZlciBVcERvd24gY29udHJvbC4KCS0gRnVsbHkgZXJhc2UgdGFicyB3aGVuIHNjcm9sbGluZy4KCS0gTW9yZSB0ZXN0cy4KCjIwMDMtMTItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oLCBpbmNsdWRlL2FzeW5jLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgc2VydmVyL2ZkLmM6CglBZGRlZCB3aW5lX3NlcnZlcl9yZWxlYXNlX2ZkIGZ1bmN0aW9uIHRvIHJlbGVhc2UgdGhlIGZkIHJldHVybmVkIGJ5Cgl3aW5lX3NlcnZlcl9oYW5kbGVfdG9fZmQuIEZpeGVkIGEgY291cGxlIG9mIHBvdGVudGlhbCBmZCBsZWFrcy4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzoKCUFsbG93IFJFTEFZX1NldHVwRExMIHRvIGJlIGNhbGxlZCB0d2ljZSBvbiB0aGUgc2FtZSBkbGwuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRmFpbCBHZXRDYWxlbmRhckluZm9BIGZvciBVbmljb2RlLW9ubHkgbG9jYWxlcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWxsb3cgdXNlciBvdmVycmlkZGVuIGxvY2FsZSBkYXRhIHRvIGJlIHJldHJpZXZlZCBhcyBudW1iZXJzLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5oLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJU3BsaXQgdGhlIFdpbjE2LzMyIGNvbG9yIGRpYWxvZyBieSBkdXBsaWNhdGluZyB0d28gaW50ZXJuYWwKCWZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL2Nsb2NrL1RoLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1RoLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGhhaSB0cmFuc2xhdGlvbiBvZiBub3RlcGFkLiBGaXggc3BlbGxpbmcgaW4gY2xvY2sgdHJhbnNsYXRpb25zLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDb3B5RW5oTWV0YUZpbGVXLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTcGVsbGluZy9HcmFtbWFyIGZpeGVzLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIHNhbXBsZSB0ZXh0cyBmb3IgYWxsIG1pc3NpbmcgY2hhcmFjdGVyIHNldHMgKG9yIGV4cGxhaW4gd2h5IHNvbWUKCWRvbid0IGhhdmUgaXQpLiBQdXQgdGhlIGNvbXBsZXRlIHRleHQgaW4gb25lIHBsYWNlIGFuZCByZW1vdmUgdGhlIGdsdWUKCWNvZGUuIENoYW5nZSB0aGUgMkQgYXJyYXkgdGhhdCBob2xkcyB0aGUgdGV4dHMgYnkgYSBhcnJheSBvZiBwb2ludGVyCgl0byAxRCBjaGFyYWN0ZXIgYXJyYXlzIHRvIHNhdmUgc3BhY2UuCgoJKiBpbmNsdWRlL21zaS5oLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHNvbWUgTVNJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmUgdXNhZ2Ugb2YgMTYgYml0IHNwZWNpZmljIGZ1bmN0aW9ucyAoTWFwU0wpIGluIDE2IGJpdCBjb2RlIG9ubHkuCgoJKiBkbGxzL3dpbmVkb3MvdGltZXIuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHVwcGVyIGxpbWl0IGZvciB0aGUgbnVtYmVyIG9mIHBlbmRpbmcgdGltZXIgaW50ZXJydXB0cy4KCUNoZWNrIGlmIHRpbWVyIGhhcyBiZWVuIHN0dWNrIGFuZCBpc3N1ZSBhbiBlcnJvciB0byB1c2VyLgoJRml4IGhhbmRsaW5nIG9mIHRpbWVyIHBlcmlvZCB6ZXJvLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBjb3JyZWN0IHBvaW50ZXIgZm9yIFN5c0ZyZWVTdHJpbmcuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywgZGxscy9tc2Rtby9yc3JjLnJjOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglVc2UgdGhlIHNhbWUgdmVyc2lvbiBmb3JtYXQgZm9yIGFsbCBEWCBkbGxzLgoKCSogaW5jbHVkZS93aW5nZGkuaDogS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIFNldERDUGVuQ29sb3IgcHJvdG90eXBlLgoKCSogZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRXhwb3J0IFF1ZXJ5V29ya2luZ1NldC4KCjIwMDMtMTEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbWFrZV9wcm9nczoKCUFkZGVkIG1ha2VfcHJvZ3MgdG9vbCB0byBnZW5lcmF0ZSB0aGUgcHJvZ3JhbXMgbWFrZWZpbGUuCglDcmVhdGUgc3ltbGlua3MgZm9yIGFsbCB0aGUgV2luZWxpYiBhcHBzLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYywgZGxscy9pcGhscGFwaS9pZmVudW0uaCwKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGZpeGVzIHRocmVhZCBzYWZldHkgaXNzdWVzCgktIGZpeGVzIHByb2JsZW1zIHdpdGggbm9uLUlQIChlLmcuIElQWCkgYWRkcmVzc2VzCgktIHVwZGF0ZXMgY29tbWVudHMgdG8gcmVmbGVjdCB3aW5zb2NrLCBuZXRhcGkzMiBjaGFuZ2VzCgoJKiBkbGxzL2F2aWZpbDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl94eC5yYywgZGxscy9zaGVsbDMyL3ZlcnNpb24ucmMsCgkgIGRsbHMvc2hlbGwzMi92ZXJzaW9uMTYucmMsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQSBnZW5lcmFsIGNsZWFudXAgb2YgdGhlIHZlcnNpb24gcmVzb3VyY2VzIGluIFdpbmUgRExMcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVtb3ZlZCBhbm5veWluZyBtZXNzYWdlIGFib3V0IG1pc3NpbmcgZW50cnkgaW4gL2V0Yy9zZXJ2aWNlcy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubDogQW5kcmV3IGRlIFF1aW5jZXkgPGFkcV9kdmJAbGlkc2tpYWxmLm5ldD4KCUZpeGVkIG9uZSBtb3JlIEhlYXBSZUFsbG9jIGNhbGwuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5oLAoJICBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCVJlbW92ZSBzb21lIHVudXNlZCBjb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLCB0b29scy9tYWtlX2RlYnVnOgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIHByb2dyYW1zLgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWw6IEJyaWFuIFZpbmNlbnQgPHZpbm5AdGhlc2hlbGwuY29tPgoJUmVwbGFjZSBzb21lIG9ic29sZXRlIHJlc291cmNlcyB3aXRoIG5ld2VyIG9uZXMuCgoJKiBvYmplY3RzL2RjLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUFkZGVkIG1pc3NpbmcgR0RJX1JlbGVhc2VPYmooKSB0byBHZXREQ0JydXNoQ29sb3IgJiBHZXREQ1BlbkNvbG9yLgoKCSogaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYywgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNoYW5nZWQgdGhlIHZlcnNpb24gcmVzb3VyY2UgdG8gYmUgY3JlYXRlZCBpbiB0aGUgY29tbW9uIHdheS4KCjIwMDMtMTEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3J0bGJpdG1hcC5jOgoJRml4ZWQgYml0bWFwIHJhbmdlIGNoZWNraW5nIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3dzLgoKCSogZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9uYmNtZHF1ZXVlLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJjbWRxdWV1ZS5oLCBkbGxzL25ldGFwaTMyL25ibmFtZWNhY2hlLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuaCwgZGxscy9uZXRhcGkzMi9uYnQuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGJpb3MuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRiaW9zLmgsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgaW5jbHVkZS9sbXdrc3RhLmgsCgkgIGluY2x1ZGUvbmIzMC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgYSBsb3Qgb2YgTmV0YmlvcygpLgoKMjAwMy0xMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVJlbWVtYmVyIChkbyBub3QgcmVzZXQpICBmb250IHNpemUgYW5kIHN0eWxlIHBhcmFtZXRlcnMgaW4gdGhlIGluaXRpYWwKCWRpYWxvZyBhbmQgd2hlbiBhbm90aGVyIGZvbnQgaXMgc2VsZWN0ZWQuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYSBidWcgaW4gdGhlIHRlc3QgZm9yIGl0YWxpYyBmb250IHN0eWxlIHByb3BlcnR5LgoKCSogZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVVwZGF0ZSBkZWJ1ZyBjaGFubmVsIGxpc3QuCgoJKiBkbGxzL250ZGxsL3BhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY29udmVydCAnLydzIHRvICdcXCdzIHVwIHRvIHRoZSAnXDAnIGFzIHRoZSByZXN0IG9mIHRoZSBidWZmZXIKCW1heSBub3QgYmUgaW5pdGlhbGl6ZWQgKGZvdW5kIGJ5IFZhbGdyaW5kKS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVRpZHkgdXAgaW5kZW50YXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9zaGx3YXBpL3Rlc3RzL2Nsc2lkLmM6CglQb3J0aW5nIGZpeGVzLgoKCSogc2VydmVyL2NsaXBib2FyZC5jOiBjYnRocmVhZCBhbmQgY2Jvd25lciBkb24ndCBuZWVkIHRvIGJlIGV4cG9ydGVkLgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJQmV0dGVyIHN1cHBvcnQgZm9yIGRpdiBhbmQgbGRpdiBpbiBXaW5lbGliIGFwcHMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZHVwbGljYXRlZCBTZXJpYWxDb21tIGtleS4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0MTYuYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYzoKCU1vdmVkIHRoZSAxNi1iaXQgY29kZSBvdXQgb2Ygc29ja2V0LmMgYW5kIGludG8gYSBzZXBhcmF0ZSBmaWxlLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgdGhlIFRDUCB0YWJsZSBxdWVyeSwgbmV0c3RhdC5leGUgbm93IHNob3dzIFRDUCBsaXN0ZW5pbmcgYW5kCgljb25uZWN0ZWQgc29ja2V0cy4KCgkqIHByb2dyYW1zL3JlZ3N2cjMyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdmVyc2lvbiBpbmZvIHJlc291cmNlLgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJLSBBZGQgc3RhbmRhcmQgZGxsIHBhdGggbGFzdCBpbnN0ZWFkIG9mIGZpcnN0LgoJLSBBZGQgc3RhbmRhcmQgbGliIHBhdGggYXMgd2VsbC4KCS0gUmVtb3ZlIC4gZnJvbSBkZWZhdWx0IGxpYnJhcnkgc2VhcmNoIHBhdGguCgktIENvbXBpbGluZyB3aXRoIC1sd2luZSBuZWVkcyB0byB1c2UgdGhlIGdpdmVuIC1MIHBhdGhzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggdHdvIG1lbW9yeSBsZWFrcy4gRm91bmQgYnkgRGlldHJpY2ggVGVpY2tuZXIuCgoyMDAzLTExLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWVyZ2Uge1NldCxJbnNlcnR9SXRlbVtBV10gdG8ge1NldCxJbnNlcnR9SXRlbVQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91bmljb3dzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdW5pY293cy9NYWtlZmlsZS5pbiwgZGxscy91bmljb3dzL21haW4uYywKCSAgZGxscy91bmljb3dzL3VuaWNvd3Muc3BlYzoKCUFkZGVkIHVuaWNvd3MgZGxsLCBiYXNlZCBvbiB0aGUgc3BlYyBmaWxlIHdyaXR0ZW4gYnkgU2hhY2hhciBTaGVtZXNoLgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRsbHMva2VybmVsL2ZpYmVyLmMsIGRsbHMva2VybmVsL2hlYXAuYywKCSAgZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwvbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL2tlcm5lbC9zdHJpbmcuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvd2luZWRvcy9pbnQyNS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjYuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBsaWJzL3dpbmUvcG9ydC5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9tc2MuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglQb3J0aW5nIGZpeGVzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIGNsaXBfY2hpbGRyZW4oKSBkb24ndCBjbGlwIHRoZSB2aXNpYmxlIHJlZ2lvbiBieSBjaGlsZHJlbiB0aGF0IGhhdmUKCWEgV1NfRVhfVFJBTlNQQVJFTlQgc3R5bGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUluIFRSRUVWSUVXX0Vuc3VyZVZpc2libGUgaGFuZGxlIGNhc2Ugd2hlcmUgZmlyc3RWaXNpYmxlIGlzIE5VTEwuCgoyMDAzLTExLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2NhcmV0LmMsIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvaG9vay5jLAoJICBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeGVzLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmM6IEplZmYgTWlsbGVyIDxqZWZmLWxpc3RzQHRhbm5lci5jb20+CglNYXNrIG9mZiBiaXQgMHg4MCBpbiB0aGUgYWNjZWxlcmF0b3IgdGFibGUgZW50cnkgZmllbGQgZlZpcnQgaWYgaXQncwoJbm90IHRoZSBsYXN0IGVudHJ5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWVyZ2UgR2V0SXRlbVtBV10gaW50byBHZXRJdGVtVC4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGludGVyLXByb2Nlc3MgR2V0V2luZG93TG9uZyBvbiB0aGUgd2luZG93IGV4dHJhCglieXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZHJhdyBpZiBib2xkIHN0YXRlIGNoYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkIHN1cHBvcnQgZm9yIFRCU1RZTEVfRVhfTUlYRURCVVRUT05TLgoJLSBBZGQgc3VwcG9ydCBmb3IgVEJTVFlMRV9FWF9ISURFQ0xJUFBFREJVVFRPTlMuCgktIFJlcGxhY2UgJ21hZ2ljIG51bWJlcnMnIHdpdGggI2RlZmluZSdkIGNvbnN0YW50cy4KCS0gRml4IFRCTl9JTklUQ1VTVE9NSVpFLgoJLSBBZGQgc3VwcG9ydCBmb3IgVEJOX0NVU1RIRUxQIGFuZCBUQk5fUkVTRVQuCgktIEZpeCBUQl9TRVRFWFRFTkRFRFNUWUxFIChpdCBhcHBlYXJzIGl0IHNob3VsZCBvciB0aGUgbmV3IHN0eWxlLAoJICByYXRoZXIgdGhhbiBzZXQpLgoJLSBGaXggVEJfU0VUU1RZTEUgKHRoaXMgaXMgbWVhbnQgdG8gYmUgZm9yIHNldHRpbmcgdGhlIGNvbnRyb2wgc3R5bGUsCgkgIG5vdCB0aGUgYnV0dG9uIHN0eWxlKS4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgbXVsdGlwbGUgYnVncyBpbiBGaW5kU2FtcGxlIGltcGxlbWVudGF0aW9uIG9mIEFWSSBhbmQgV0FWIGZpbGUKCWhhbmRsZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZWNvbXB1dGUgYW4gaXRlbSdzIHRleHQgd2lkdGggaW4gdGhlIGNhc2Ugb2YgdGV4dCBjYWxsYmFja3MKCWFuZCB3aGVuIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZS4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggLnNwZWMgZmlsZSBwYXJhbWV0ZXJzIGZvciBDcmVhdGVEQyBkcml2ZXIgQVBJLgoKCSogZGxscy9udGRsbC9yZWxheS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGFub3RoZXIgUnRsUmVBbGxvY2F0ZUhlYXAgY2FsbC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRml4ZWQgV0lORUxJQl9OQU1FX0FXIHR5cG8gKHRoYW5rcyB0byBSb2JlcnQgU2hlYXJtYW4pLgoJUmVtb3ZlZCBleHRyYSBCcm9hZGNhc3RTeXN0ZW1NZXNzYWdlIHByb3RvdHlwZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgVGFiQ3RybF8qIG1hY3Jvcy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBBbHQrW25hdGlvbmFsIGtleV0gbWVudSBzaG9ydGN1dHMgd29yay4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IHRoZSBUTUVfTk9OQ0xJRU5UIGZsYWcgaW4gVHJhY2tNb3VzZUV2ZW50IHRvIGhhbmRsZQoJbm9uY2xpZW50IGhvdmVyLyBsZWF2ZSBldmVudHMuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUNoYW5nZWQgQWRhbSBTYWNhcm55J3MgZW1haWwsIGFuZCAtZGVidWdtc2cgdG8gLS1kZWJ1Z21zZy4KCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+Cgl7R2xvYmFsLExvY2FsfVJlQWxsb2MoKSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnkuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCU5FX0xvYWRCdWlsdGluTW9kdWxlOiByZXR1cm4gZXJyb3IgMjEgaWYgdGhlIG1vZHVsZSB3ZSBsb2FkZWQgd2FzIGEKCTMyLWJpdCBidWlsdGluLiBUaGlzIHNob3VsZCBoZWxwIFdpbkV4ZWMxNiB0byBkbyB0aGUgcmlnaHQgdGhpbmcuCgoJKiBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5jcnlwdC5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsCgkgIGluY2x1ZGUvd2lubmxzLmg6CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZXMgZm9yIHNvbWUgaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sOiBGaXhlZCBvbmUgbW9yZSBIZWFwUmVBbGxvYyBjYWxsLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL29sZWlkbC5pZGwsIGluY2x1ZGUvd2ludXNlci5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgZGVjbGFyYXRpb25zIG9mIEJyb2FkY2FzdFN5c3RlbU1lc3NhZ2UgYW5kIFRyYW5zbGF0ZUFjY2VsZXJhdG9yCglpbiB3aW51c2VyLmguIEFkZGVkIEdldFdpbmRvd01vZHVsZUZpbGVOYW1lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglNb3ZlZCB0aGUgU2hlbGxFeGVjdXRlRXggZGVmaW5pdGlvbnMgdG8gc2hlbGxhcGkuaCB3aGVyZSB0aGV5IGJlbG9uZy4KCgkqIEFOTk9VTkNFLCBCVUdTLCBSRUFETUUsIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9iciwKCSAgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLCB0b29scy9idWdfcmVwb3J0LnBsLAoJICB0b29scy9nZW5wYXRjaCwgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmgsIHRvb2xzL3dpbmVpbnN0YWxsLCB0b29scy93bWMvd21jLm1hbiwKCSAgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSB0aGUgd2luZWhxLm9yZyBkb21haW4gdGhlIG9mZmljaWFsIG9uZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvSXQucmMsIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuaCwgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lbWluZS9tYWluLmgsIHByb2dyYW1zL3dpbmVtaW5lL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglKb3NodWEgVGhpZWxlbiA8am9zaHVhX3RoaWVsZW5AeWFob28uY29tPgoJRml4ZWQgaW5jb3JyZWN0IGxhYmVsaW5nIG9mIHF1ZXN0aW9uIGJveGVzLgoJUmVtb3ZlZCBpbmNvcnJlY3QgZW1haWwgYWRkcmVzcyBpbiBjb3B5cmlnaHQuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBoYW5kbGluZyBvZiB0aGUgbHB1RGV2aWNlSUQgaW5wdXQgcGFyYW0gaW4gTUlESV9TdHJlYW1PcGVuLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4ICJzYW1wbGUiIGJveCBkcmF3aW5nIGJ5IGFkZGluZyBzb21lIG5lZWRlZCBjb29yZGluYXRlIGFuZCBzaXplCgl0cmFuc2Zvcm1hdGlvbnMuCgoJKiBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgaGFuZGxlIGRlbGV0aW9uIG1lY2hhbmlzbSBpbiB3bWZzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kaWZpY2F0aW9uLiAgQmFzZWQgb24gYSBwYXRjaCBieSBBcmljIFN0ZXdhcnQuCgoJKiBNYWtlZmlsZS5pbjogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc2hlbWVzaC5iaXo+CglGaXggdGhlIGN0YWdzIGJ1aWxkaW5nIGNvbW1hbmQuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBtZW0gbGVhayB3aGVuIEdsb2JhbFJlQWxsb2MoKSBmYWlscy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTeXNSZUFsbG9jU3RyaW5nTGVuIGlzIGRvY3VtZW50ZWQgdG8gc2VnZmF1bHQgb24gTlVMTCBwb2ludGVyLgoKCSogZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9vbGUxNi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGUgSU1hbGxvYzo6UmVBbGxvYygpIHRvIGZvbGxvdyB0aGUgZG9jdW1lbnRlZCBiZWhhdmlvci4KCjIwMDMtMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJQmV0dGVyIHN1cHBvcnQgZm9yIGxvYWRpbmcgZXhlIGZpbGVzIGFzIGxpYnJhcmllcy4KCU1ha2Ugc3VyZSBrZXJuZWwzMiBhbmQgbnRkbGwgaGF2ZSBhIGZ1bGwgcGF0aCBuYW1lIGV2ZW4gdGhvdWdoIHRoZXkKCWFyZSBsb2FkZWQgYmVmb3JlIHdlIGtub3cgdGhlIHN5c3RlbSBkaXIuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLAoJICBvYmplY3RzL2dkaW9iai5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUxldCBlbmhtZXRhZmlsZXMgcmV1c2UgZ2RpIGhhbmRsZXMuICBUaGlzIHdvcmtzIGJ5IGEgZGMgJ3JlZ2lzdGVyaW5nJwoJd2l0aCBhbiBvYmplY3QgdGhhdCBpdCB3YW50cyB0byBrbm93IHdoZW4gdGhlIG9iamVjdCBpcyBkZWxldGVkLiBVbnRpbAoJdGhlIGRjIGdldHMgZGVsZXRlIG5vdGlmaWNhdGlvbiBpdCdzIGZyZWUgdG8gYXNzdW1lIHRoYXQgaXQgZG9lc24ndAoJbmVlZCB0byB3cml0ZSB0aGUgY3JlYXRlIHJlY29yZCBmb3IgdGhhdCBvYmplY3QgYWdhaW4uICBVcG9uIHJlY2VpdmluZwoJdGhlIGRlbGV0ZSBub3RpZmljYXRpb24gaXQgd3JpdGVzIHRoZSBEZWxldGVPYmplY3QgcmVjb3JkLiBXaW5kb3dzCglzZWVtcyB0byBkbyBpdCB0aGlzIHdheSB0b28uCgoJKiBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS90aHJlYWQuaDoKCVN0b3JlIHRoZSB0aHJlYWQgZW50cnkgcG9pbnQgaW4gdGhlIHN0YXJ0dXAgaW5mbyBwYXNzZWQgdG8gdGhlIG5ldwoJdGhyZWFkIGluc3RlYWQgb2YgdGhlIFRFQi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJzL01ha2VsaWIucnVsZXMuaW4sCgkgIHRvb2xzL3dpbmVtYWtlcjoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZCBEYXJ3aW4vTWFjIE9TIFggc3VwcG9ydCB0byB0aGUgYnVpbGQgc3lzdGVtLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2RpYl9jb252ZXJ0LmMsCgkgIGRsbHMveDExZHJ2L2RpYl9kc3Rfc3dhcC5jLCBkbGxzL3gxMWRydi9kaWJfc3JjX3N3YXAuYywKCSAgZGxscy94MTFkcnYveDExZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGRpc3BsYXkgb2YgZGlicyBvbiBNU0IgWFNlcnZlcnMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUlOVDIxX0dldEZyZWVEaXNrU3BhY2UoKTogVGhlIGRyaXZlIHBhcmFtZXRlciBpcyBmb3VuZCBpbiB0aGUgREwKCXJlZ2lzdGVyLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCVN0b3JlIHRoZSBsYXN0IGVycm9yIGNvZGUgYXQgdGhlIFRFQiBvZmZzZXQgdXNlZCBieSBOVCBpbnN0ZWFkIG9mIHRoZQoJV2luOXggb25lLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2ludDEzLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyNS5jLCBkbGxzL3dpbmVkb3MvaW50MjYuYywgZmlsZXMvZHJpdmUuYywKCSAgaW5jbHVkZS9kcml2ZS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIERSSVZFX09wZW5EZXZpY2UsIGFuZCByZXBsYWNlZCBpdCB3aXRoIFdpbjMyIGVxdWl2YWxlbnRzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdHMgZm9yIHRoZSBub24tdmFyaWFudCBkYXRlIGNvbnZlcnNpb24gZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXByb3ZlL3NocmluayB2YXJpYW50IGR1bXBpbmcgY29kZS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHZhcmlhbnQgZm9ybWF0dGluZyBmdW5jdGlvbnMuCglCb29sLT5ic3RyIG1ha2VzIGEgbnVtYmVyIHN0ciB1bmxlc3MgW0FMUEhBfExPQ0FMXUJPT0wgaXMgcGFzc2VkLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50Lmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWNyb3MgZm9yIGR1bXBpbmcgYSB2YXJpYW50cyB0eXBlIGFuZCBmbGFncy4KCUZpeCB0aGUgZGF0ZSBpbmxpbmVzLgoJUm91bmQgbmVnYXRpdmUgbnVtYmVycyB3aXRoIGZyYWN0aW9uYWwgcGFydHMgPiAwLjUgY29ycmVjdGx5LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0Lmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVuZGVmaW5lIEZBUiB0byBhdm9pZCBjb25mbGljdCB3aXRoIHNzbC5oLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCB3aW52ZXIgaW5mb3JtYXRpb24gZm9yIHdpbmRvd3MgbWUgYW5kIHdpbmRvd3Mgc2VydmVyIDIwMDMuCglVcGRhdGVkIGRhdGUgZm9ybWF0IGZyb20gWVlNTUREIHRvIFlZWVlNTURELgoJQ2hhbmdlZCBhIGZldyBvdXRwdXQgbWVzc2FnZXMgc28gdGhleSBhcmUgbW9yZQoJaW50dWl0aXZlL2NvbnN0cnVjdGl2ZS91cCB0byBkYXRlLgoKCSogZGxscy9vbGVhY2MvbWFpbi5jLCBkbGxzL29sZWFjYy9vbGVhY2Muc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIENyZWF0ZVN0ZEFjY2Vzc2libGVPYmplY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVXNlIGJ1dHRvbiBmYWNlIGNvbG9yIGZvciB0aGUgaW1hZ2UgbWFzayB3aGVuIGFkZGluZyBhIGJpdG1hcCB0byB0aGUKCXRvb2xiYXIsIG5vdCB0aGUgY29sb3Igb2YgdGhlIHRvcCBsZWZ0IHBpeGVsIG9mIHRoZSBpbWFnZS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9tb2R1bGUuaDoKCVJlbW92ZWQgTU9EVUxFX0dldExvYWRPcmRlckEuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvaGVhcC5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSdGxIZWFwUmVBbGxvY2F0ZSgpIHNob3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5LgoJQWRkIHNtYWxsIHRlc3QgdG8gbWFrZSBzdXJlIGl0IGRvZXNuJ3QgcmV0dXJuLgoJRG9uJ3QgaW1wb3J0IG50ZGxsIGZvciB0ZXN0cywgd2UgbmVlZCB0byBsb2FkIGl0IGR5bmFtaWNhbGx5LgoKCSogZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2Rtby9kbW9yZWcuYywgaW5jbHVkZS9tZWRpYW9iai5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgRE1PUmVnaXN0ZXIsIERNT1VucmVnaXN0ZXIsIERNT0dldE5hbWUsIERNT0VudW0uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3Z4ZC5jLAoJICBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Rhc2suaCwKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOgoJUmVtb3ZlZCB0YXNrLmguCgoJKiBkbGxzL2tlcm5lbC9jcHUuYywgZGxscy9rZXJuZWwvbGNmb3JtYXQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMKCgkqIHByb2dyYW1zL2Nsb2NrL1RoLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRoYWkgbGFuZ3VhZ2UgdHJhbnNsYXRpb24uCgoJKiBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJSW1wbGVtZW50ZWQgSUFWSUVkaXRTVHJlYW1fZm5QYXN0ZSBtZXRob2QuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZ2xfYXBpLmgsCgkgIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVzZSB2ZXJ0ZXggYXJyYXlzIHdoZW4gcG9zc2libGUuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBIaXJvc2hpIElub3VlIDxpbm91ZWhAdXJhbnVzLmR0aS5uZS5qcD4KCUZpeCB0aGUgbmFtZSBvZiBKYXBhbmVzZSBkZWZhdWx0IEd1aUZvbnQuCgoJKiBpbmNsdWRlL2xtYWNjZXNzLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgc3RydWN0dXJlcyB1c2VkIGJ5IE5ldFVzZXJNb2RhbHNHZXQuCgoyMDAzLTExLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL3BvcnQuYywgbG9hZGVyL01ha2VmaWxlLmluLAoJICBsb2FkZXIvbWFpbi5jOgoJQ3JlYXRlIGEgaHVnZSBhcnJheSBpbiBic3MgdG8gcmVzZXJ2ZSB0aGUgbWVtb3J5IGFyZWEgd2UgbmVlZCBmb3IgUEUKCWJpbmFyaWVzLCB0byBwcmV2ZW50IGV4ZWMgc2hpZWxkIGZyb20gbWFwcGluZyBzeXN0ZW0gbGlicmFyaWVzIHRoZXJlLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYywKCSAgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbGlicy91bmljb2RlL3NvcnRrZXkuYywKCSAgbGlicy91bmljb2RlL3N0cmluZy5jLCBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIENvbXBhcmVTdHJpbmcgaW1wbGVtZW50YXRpb24gdG8gbGlid2luZV91bmljb2RlLCBhZGQgYSBidW5jaCBvZgoJQ29tcGFyZVN0cmluZyB0ZXN0cy4KCjIwMDMtMTEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUhlYXBSZUFsbG9jIGRvZXNuJ3QgYWxsb2NhdGUgbWVtb3J5LgoKCSogZGxscy9udGRsbC9maWxlLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglIYW5kbGUgRUlPIGZpbGUgZXJyb3IuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY2RjZS5oOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglJbXBsZW1lbnRlZCBScGNPYmplY3RTZXRUeXBlLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L1gxMV9jYWxscywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvdHNfeGxpYi5jLAoJICBkbGxzL3gxMWRydi90c194bGliLmgsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hyYW5kci5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglSZW1vdmVkIHRoZSB0c194bGliIGZpbGVzLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveGRuZC5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJUmVtb3ZlZCB0aGUgcmVtYWluaW5nIFRTWCBjYWxscy4KCgkqIHByb2dyYW1zL2NtZGxndHN0L0l0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLCBwcm9ncmFtcy93aW5lbWluZS9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvUkVBRE1FLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZC91cGRhdGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jOgoJTWFyY3VzIFIuIEJyb3duIDxtcmJyb3duQDB4ZDYub3JnPgoJUmVwbGFjZSB2YXJpb3VzIHJvdXRpbmVzIHdpdGggYSBmb3J3YXJkIHRvIG50ZGxsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBzb21lIGNvbmZ1c2lvbiBiZXR3ZWVuIG51bWJlciBvZiBiaXRtYXBzIGFuZCBudW1iZXIgb2YgYnV0dG9ucyBpbgoJVE9PTEJBUl9SZXBsYWNlQml0bWFwKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIHNlbmQgVFZOX0VYUEFORCogb24gY29sbGFwc2luZyBlaXRoZXIgd2hlbiB0aGUgdXNlciBoYXMKCWluaXRpYXRlZCBpdCB3aXRoIHRoZSBtb3VzZS9rZXliYW9yZCBvciBpbiByZXNwb25zZSB0byBhIFRWTV9FWFBBTkQKCXdoZW4gdGhlIHN0YXRlIGlzIG5vdCBUVklTX0VYUEFOREVET05DRS4gIFRoaXMgYnJpbmdzIHRoZSBsb2dpYyBpbnRvCglsaW5lIHdpdGggVFJFRVZJRVdfRXhwYW5kLgoKCSogZGxscy94MTFkcnYvWDExX2NhbGxzLCBkbGxzL3gxMWRydi90c194bGliLmMsIGRsbHMveDExZHJ2L3RzX3hsaWIuaCwKCSAgZGxscy94MTFkcnYveHJlbmRlci5jOgoJUmVtb3ZlZCBtb3JlIFRTWCBmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQWx3YXlzIGlnbm9yZSBCYWRNYXRjaCBlcnJvcnMgcmVzdWx0aW5nIGZyb20gWFNldElucHV0Rm9jdXMgc28gdGhhdCB3ZQoJZG9uJ3QgbmVlZCB0byB3YWl0IGZvciB0aGUgcmVwbHkuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJRGVsYXkgdGhlIGNyZWF0aW9uIG9mIHRoZSBYIGF0b21zIHVudGlsIHdlIHJlYWxseSBuZWVkIHRoZW0sIHRvIGFsbG93CglnZXR0aW5nIG1vcmUgb2YgdGhlbSBpbiBvbmUgY2FsbC4KCVVzZSBYR2V0QXRvbU5hbWVzIHRvIHJldHJpZXZlIGFsbCB0aGUgc2VsZWN0aW9uIGF0b21zIGF0IG9uY2UuCgoJKiBkbGxzL3gxMWRydi9YMTFfY2FsbHMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi90c194bGliLmMsCgkgIGRsbHMveDExZHJ2L3RzX3hsaWIuaCwgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJR2V0IHJpZCBvZiBhIGJ1bmNoIG9mIFRTWCBmdW5jdGlvbnMuCgoyMDAzLTExLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVRoZXJlJ3Mgbm8gbmVlZCB0byBpbml0aWFsaXplIFhLQiBvbiB0aGUgR0RJIGRpc3BsYXksIHRoaXMgc2F2ZXMgYQoJY291cGxlIG9mIHNlcnZlciByb3VuZCB0cmlwcy4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUnRsUmVBbGxvY2F0ZUhlYXAoKSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnkuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhlYXBSZUFsbG9jKCkgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJhaWwgd2hlbiB3ZSdyZSBvdXQgb2YgbWVtb3J5LgoKCSogZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvdGVzdHMvaGVhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCByZWFsbG9jKCkgdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgYmVoYXZpb3VyLgoJQWRkIGEgZmV3IHNpbXBsZSB0ZXN0cyBmb3IgaXQuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gVHJhY2UgdGhlIGFyZ3VtZW50IHRvIFJQQ1JUNF9zZXJ2ZXJfdGhyZWFkLgoJLSBebnVsbCBpbXBsaWVzIHR3byBpbmRpcmVjdGlvbnMsIHdlIGhhdmUgb25lLgoJLSBPdmUncyBpbnRlbnQgZG9lc24ndCBtYXR0ZXIsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHJpZ2h0LgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveGRuZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIHRvIHN1cHBvcnQgWERORCBwcm90b2NvbC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL29sZWRsZy9vbGVkbGdfSXQucmMsCgkgIGRsbHMvb2xlZGxnL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSXQucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkL3VwZGF0ZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHRoZSBjb250cm9scyBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gdGhlIHBhcmVudCB3aW5kb3cgcGFzc2VkIHRvCgl0aGVtIGluIENSRUFURVNUUlVDVC4gIEJhc2VkIG9uIGEgdHJlZXZpZXcgcGF0Y2ggYnkgSWdvciBHcmFoZWsuCgoJKiB0b29scy9NYWtlZmlsZS5pbjogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglSZW1vdmUgd2luZWNvbmYubGlicyBmcm9tIEVYVFJBU1VCRElSUy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUludGVybiBhbGwgdGhlIGF0b21zIHdlJ2xsIG5lZWQgaW4gb25lIHN0ZXAgdG8gYXZvaWQgbXVsdGlwbGUgc2VydmVyCglyb3VuZCB0cmlwcy4KCgkqIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJb3Blbl9pbnB1dF9maWxlKCk6IHRyeSB0byBvcGVuIHRoZSBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQoJYmVmb3JlIHRyeWluZyB0aGUgc291cmNlIGRpcmVjdG9yeS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlcywgYWxzbyBzZXQgZHdUeXBlIHRvIFJFR19TWiBhcyBvdXIgZGVmYXVsdAoJc3RyaW5ncyBkb24ndCBuZWVkIHRvIGJlIGV4cGFuZGVkIChmb3VuZCBieSBWYWxncmluZCkuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCB1c2UgdGhlIGRhdGEgcmV0dXJuZWQgYnkgUmVnUXVlcnlWYWx1ZUV4VyBpZiBpdCBmYWlscyAoZm91bmQgYnkKCVZhbGdyaW5kKS4KCUEgc3BlbGxpbmcgZml4LgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG9uJ3QgaWdub3JlIGxpYnMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIHdoaWxlIGxpbmtpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIHRoZSBlZGl0IHduZHByb2MgYSBiaXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzb21lIGRlYWQgY29kZTogaHduZFBhcmVudCBpcyBub3QgdXNlZCBhbnl3aGVyZS4KCgkqIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX0l0LnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL3F1YXJ0ei9jb250cm9sLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBdm9pZCBsb25nIGxvbmcgY29uc3RhbnQuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmVkIHN0YWxlIGluc3RhbmNlLmguCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGRldGVjdGlvbiBvZiBmcmVldHlwZS9mcmVldHlwZS5oIHdoZW4gdGhlIGxpYmZyZWV0eXBlIHZlcnNpb24KCXJlcXVpcmVzIHRoYXQgZnQyYnVpbGQuaCBpcyBpbmNsdWRlZCBmaXJzdC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEdyYW50IFdpbGxpYW1zb24gPHRyYXh0b3BlbEBmYXN0bWFpbC5mbT4KCUR1dGNoIGtleWJvYXJkIHN1cHBvcnQuCgoyMDAzLTExLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMxMTE4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTExLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluOgoJVXNlIGEgbW9yZSBwb3J0YWJsZSB3YXkgdG8gZ2VuZXJhdGUgYXV0aG9ycy5jLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbmNsdWRlIGZ0MmJ1aWxkLmggYmVmb3JlIGZyZWV0eXBlL2ZyZWV0eXBlLmguIExpYmZyZWV0eXBlIDIuMS43CglyZXF1aXJlcyB0aGlzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfSXQucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9JdC5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQvdXBkYXRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHNvbWUgb3RoZXIgbXVsdGktdGV4dHVyaW5nIHByb2JsZW1zLgoKCSogdG9vbHMvd2luZWNvbmYubGlicy9hdXRvY29uZi5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvYXV0b2NvbmYudGNsLAoJICB0b29scy93aW5lY29uZi5saWJzL2Jyb3dzZXJzLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9kaXJicm93c2VyLnRjbCwKCSAgdG9vbHMvd2luZWNvbmYubGlicy9nZW5lcmFsLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9nZXRmaWxlbmFtZS50Y2wsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvbWVzc2FnZS50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvbWVzc2FnZTIudGNsLAoJICB0b29scy93aW5lY29uZi5saWJzL3NhdmVSQy50Y2wsIHRvb2xzL3dpbmVjb25mLnRjbCwKCSAgdG9vbHMvd2luZWNvbmYubGlicy93aW5lLWhhbGYuZ2lmLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLmVuZywKCSAgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYxLnRjbDoKCVJlbW92ZWQgb2Jzb2xldGUgd2luZWNvbmYgdGNsIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L2NvbnRyb2wuYywgZGxscy9xdWFydHovY29udHJvbF9wcml2YXRlLmgsCgkgIGRsbHMvcXVhcnR6L2ZvdXJjYy5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvZGVidWcuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFWSSBTcGxpdHRlciBpbXBsZW1lbnRhdGlvbi4KCS0gQWRkIG5ldyBkZWJ1Z2dpbmcgZnVuY3Rpb24gd2luZV9kYnN0cl9sb25nbG9uZy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9zZGRsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVHdlYWsgdGhlIHRvcC1sZXZlbCBjb21tZW50IGhvcGVmdWxseSBmb3IgdGhlIGJldHRlci4KCUZpeCB0aGUgIkRlZmF1bHQgRGV2bW9kZSIgZW50cnkuCglzL1N0ZENvbXBvbmVudENhdGVnb3JpZXNNZ3IvQ29tcG9uZW50IENhdGVnb3JpZXMgTWFuYWdlci8uCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgZXJyb3IgaGFuZGxpbmcgaW4gQ3J5cHRBY3F1aXJlQ29udGV4dC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG1heSBleHBhbmQgdG8gYSBsb25nCgluYW1lLgoKCSogQVVUSE9SUzogVXBkYXRlZCBhdXRob3JzIGxpc3QuCgoJKiBBVVRIT1JTLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvYXV0aG9ycy5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIHRvb2xzL21ha2VfYXV0aG9yczoKCUdlbmVyYXRlIHRoZSBhdXRob3JzIGxpc3QgZm9yIHRoZSBzaGVsbCBhYm91dCBkaWFsb2cgZnJvbSBBVVRIT1JTIGF0Cgljb21waWxlIHRpbWUuIENvbnZlcnRlZCB0aGUgYWJvdXQgZGlhbG9nIHRvIFVuaWNvZGUuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9jb250cm9scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbmF0aW9uYWwgKGhvdClrZXlzIHdvcmsgaW4gbWVudXMuIE1ha2UgbWVudSBjb2RlIHVzZSB1bmljb2RlIEFQSXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVbnN3YXAgUGFnZSBVcCAmIERvd24gYW5kIGZpeCBUQlNfRE9XTklTTEVGVC4KCU5NXyogbm90aWZpY2F0aW9ucyBnbyB2aWEgV01fTk9USUZZIG5vdCBXTl8/U0NST0xMLgoJUHVsbCB0aGUgbm90aWZpY2F0aW9uIHdpbmRvdyBmcm9tIHRoZSBDcmVhdGVTdHJ1Y3QuCglTZW5kIGEgVEJfVEhVTUJQT1NJVElPTiBhdCB0aGUgZW5kIG9mIGEgZHJhZy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGdlbmVyYXRpb24gb2Ygd2luZWFwcGxvYWRlciBpbiBzdWIgZGlyZWN0b3JpZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU2NhbGUgdGhlIGJ1ZmZlciBzaXplcyB3aXRoIE1BWF9MSVNURURfRU5WX1ZBUi4KCUFkZCBhIG5vdGUgYWJvdXQgdGhlIGxpbWl0ZWQgYnVmZmVyIHNpemUgdXNlZCBieSB0aGUgKlByb2ZpbGUgZnVuY3Rpb25zLgoJRml4IGEgY291cGxlIG9mIHNwZWxsaW5nIGVycm9ycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVGhlIExWTl9HRVRESVNQSU5GTyBub3RpZnkgbWVzc2FnZSBzaG91bGQgcG9pbnQgdG8gdGhlIHNhbWUgaVN1Ykl0ZW0KCWFzIGluIHRoZSBjYWxsIHRvIExJU1RWSUVXX0dldEl0ZW1ULCB2YWxpZCBvciBub3QuIEZpeCBhIGJhZGx5IHBsYWNlZAoJYnJhY2UuCgoJKiBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsCgkgIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGluY2x1ZGUvc2VsZWN0b3JzLmg6CglSZW1vdmVkIGluY2x1ZGUvc2VsZWN0b3JzLmguCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC90aHJlYWQuYzoKCUZvcmNlIG1pbmltdW0gc3RhY2sgc2l6ZSB0byAxTWIgZm9yIFhsaWIuCgoJKiBkbGxzL3VzZXIvZm9jdXMuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBzZXJ2ZXIvd2luZG93LmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBNb3ZlIHNoZWxsIHdpbmRvdyBpbnRvIHRoZSBiYWNrZ3JvdW5kLgoJLSBBZGQgdGVzdHMgZm9yIEdldC9TZXRTaGVsbFdpbmRvdygpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmM6CglTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUFkZGVkIHNvbWUgY29uZm9ybWFuY2UgdGVzdHMgZm9yIGRkcmF3LiBUaGVzZSBlbnVtZXJhdGUgc29tZSBkaXNwbGF5Cgltb2RlcyBhbmQgdGhlbiBhdHRlbXB0IHRvIG9wZW4gdGhlbS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9oaW1lbS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzEuYzoKCVVzZSB0aGUgd2luZV9sZHRfKiBmdW5jdGlvbnMgZGlyZWN0bHkgaW4gd2luZWRvcyBpbnN0ZWFkIG9mIGNhbGxpbmcKCVNFTEVDVE9SX0FsbG9jQmxvY2suCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGN1c3RvbWRyYXdfZmlsbCBpcyBjYWxsZWQgZXZlbiBpZgoJQ0RSRl9OT1RJRllJVEVNRFJBVyBpcyBub3QgYmVpbmcgdXNlZCBiZWNhdXNlIHdlIHVzZWQgdGhlIHRleHQgYW5kCgliYWNrZ3JvdW5kIGNvbG9ycyBmcm9tIHRoYXQgc3RydWN0IGxhdGVyLgoKCSogb2JqZWN0cy9iaXRtYXAuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgYml0bWFwIGNyZWF0ZWQgYnkgQ3JlYXRlQ29tcGF0aWJsZUJpdG1hcCBzaG91bGQgbm90IGJlIG93bmVkIGJ5IGEKCWRyaXZlciB1bnRpbCBpdCBpcyBzZWxlY3RlZCBpbnRvIGl0LiAgVGhlIGRyaXZlciBjaGVja3MgdGhhdCB0aGUKCWJpdG1hcCBpcyBvZiB0aGUgY29ycmVjdCBkZXB0aCBpbiBTZWxlY3RCaXRtYXAuCgoJKiBvYmplY3RzL2ZvbnQuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIHJldHVybmluZyBjYXJldCBwb3NpdGlvbnMgaW4KCUdldENoYXJhY3RlclBsYWNlbWVudFcoKS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXBwbHkgc2FtZSBtYWdpYyB0byBMaWJBdHRyLmxjaWQgZnJvbSBNU0ZUIHRvIFNMVEcuCgoyMDAzLTExLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuaCwKCSAgZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvdG9vbGhlbHAuaDoKCU1vdmVkIHRvb2xoZWxwLmggdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvdmVyc2lvbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvd2luZWRvcy9kb3Njb25mLmMsCgkgIGRsbHMvd2luZWRvcy9oaW1lbS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy92eGQuYywKCSAgaW5jbHVkZS9taXNjZW11LmgsIG1pc2Mvb3B0aW9ucy5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZGliLmMsIHdpbmRvd3MvdXNlci5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJRml4ZWQgcmVncmVzc2lvbiBpbiBsb2FkaW5nIG9mIGJ1aWx0aW4gYXBwcyBmcm9tIHRoZSBzeXN0ZW0gZGlyIHdoZW4KCXRoZSBuYXRpdmUgZG9lc24ndCBleGlzdC4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS9tb2R1bGUuaDoKCU1vdmVkIGEgZmV3IGRlZmluaXRpb25zIHVzZWQgaW4gb25seSBvbmUgc291cmNlIGZpbGUgb3V0IG9mIG1vZHVsZS5oLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS9zZWxlY3RvcnMuaCwKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2xkdC5jLCBsaWJzL3dpbmUvd2luZS5kZWY6CglBZGRlZCB3aW5lX2xkdF9pc19zeXN0ZW0oKSB0byByZXBsYWNlIHRoZSBJU19TRUxFQ1RPUl9TWVNURU0gbWFjcm8sCglhbmQgc3RvcCBleHBvcnRpbmcgdGhlIFdJTkVfTERUX0ZJUlNUX0VOVFJZIGNvbnN0YW50LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglMaW5rIHRoZSBtYWluIGJpbmFyaWVzIHdpdGggLS1leHBvcnQtZHluYW1pYyBzbyB0aGF0IHRoZSBwdGhyZWFkCgllbXVsYXRpb24gd29ya3MgY29ycmVjdGx5IChyZXBvcnRlZCBieSBKZXJlbXkgU2hhdykuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURpc2FibGUgdGhlIHVzZSBvZiB0aGUgJ3cnIHBhcm0gaW4gcmh3IG1vZGUuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJZiBzd2FwIG1vZGUgaXMgZGlzY2FyZCwgY2xlYXIgdGhlIGJhY2tidWZmZXIgYmVmb3JlIG1vdmluZyBvbnRvIHRoZQoJbmV4dCBmcmFtZS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglVc2UgdGhlIGN1cnJlbnQgd2luZG93IHZpc3VhbCBvbmx5LgoKCSogZGxscy9kc291bmQvYnVmZmVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglJbml0aWFsaXplIGJ1ZmZlciByZWZlcmVuY2UgY291bnQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxvY2FsaXphdGlvbiB0byBQb3J0dWd1ZXNlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggZ3JhcGhpY2FsIGNvcnJ1cHRpb24gb24gc3VyZmFjZSBsb2NrIHdoZW4gbXVsdGktdGV4dHVyaW5nIGlzCglhY3RpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUlnbm9yZSBpbnZhbGlkIGlTdWJJdGVtIGluIExJU1RWSUVXX0dldEl0ZW1UKCkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgYSBjb3VwbGUgb2YgbWlzc2luZyBzcGVjIGZpbGVzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0l0LnJjLCBwcm9ncmFtcy9jbG9jay9JdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYywgcHJvZ3JhbXMvc3RhcnQvSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUltcHJvdmVkIEl0YWxpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9zZXJpYWx1aS9JdC5yYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywKCSAgZGxscy9zZXR1cGFwaS9JdC5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0l0LnJjLCBkbGxzL3dpbm1tL3dpbm1tX0VuLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX0l0LnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiB0cmFuc2xhdGlvbi4KCjIwMDMtMTEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9kZXZpY2UuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsCgkgIGRsbHMva2VybmVsL3dpbmRlYnVnLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5lZG9zL2RldmljZXMuYywKCSAgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ZwdS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTEuYywgZGxscy93aW5lZG9zL2ludDEyLmMsIGRsbHMvd2luZWRvcy9pbnQxMy5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTUuYywgZGxscy93aW5lZG9zL2ludDE3LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjUuYywgZGxscy93aW5lZG9zL2ludDI2LmMsIGRsbHMvd2luZWRvcy9pbnQyYS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzEuYywgZGxscy93aW5lZG9zL2ludDQxLmMsIGRsbHMvd2luZWRvcy9pbnQ0Yi5jLAoJICBkbGxzL3dpbmVkb3MvaW50NWMuYywgZGxscy93aW5lZG9zL3Z4ZC5jLCBkbGxzL3dpbmVkb3MveG1zLmMsCgkgIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oOgoJTW92ZWQgYSBudW1iZXIgb2YgRE9TIGRlZmluaXRpb25zIG91dCBvZiB0aGUgZ2xvYmFsIGhlYWRlcnMgYW5kIGludG8KCXdpbmVkb3MgcHJpdmF0ZSBmaWxlcy4gUmVtb3ZlZCB0aGUgbXNkb3MuaCBoZWFkZXIuCgoyMDAzLTExLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCUdldCByaWQgb2YgdGhlIG1zZG9zLyBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZGV2aWNlLmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL3Z4ZC5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCU1vdmVkIHdpbmVkb3MgbG9hZGluZyBmdW5jdGlvbmFsaXR5IHRvIGRsbHMva2VybmVsL2luc3RyLmMgYW5kIGdldCByaWQKCW9mIG1zZG9zL2RwbWkuYy4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZXMgbW9yZSB1c2UgYmVmb3JlIHNldCByYWNlcy4KCVdvcmsgYXJvdW5kIGZvciBxdWV1ZSByZW9yZGVyaW5nIGZlYXR1cmUuCglTdG9wIHJlY29yZGluZyBvbiByZXNldC4KCUJldHRlciBkZWJ1ZyBpbmZvLgoJRHNvdW5kIGNhbGxiYWNrIGNhcHR1cmUgc3RhdGUgZml4LgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgdGhlIG5vbi12YXJpYW50IGRhdGUgY29udmVyc2lvbnMgY29ycmVjdGx5LCB3aXRob3V0IGdvaW5nCgl0aHJvdWdoICdzdHJ1Y3QgdG0nIGZpcnN0LiBIYW5kbGUgbmVnYXRpdmUgJiAncm9sbGluZycgZGF0ZXMgdG9vLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzL2RlZmluZXMuCglPYUJ1aWxkVmVyc2lvbigpIHJldHVybnMgYSBVTE9ORywgbm90IFVJTlQuCgoJKiBsaWJzL3VuaWNvZGUvc3RyaW5nLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgYSByZWR1bmRhbnQgdGVzdC4KCUhhbmRsZSAnYScsJ0EnLCdlJywnRScsJ0YnLCdnJywnRycgZmxhdm91cnMgb2YgZG91YmxlIGFyZ3VtZW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRHVtcCBhIGZldyBtb3JlIGtub3duIHZhcmlhbnQgdHlwZXMuCglEb24ndCBjYWxsIERhdGVUb1RNKCkgLSBpdCdzIGdvaW5nIGF3YXkgc29vbi4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IGEgY3Jhc2ggaW4gR2V0TG9jYWxlSW5mbygpIHdoZW4gZXh0cmEgaGlnaCBiaXRzIGFyZSBzZXQuCgoJKiBjb250cm9scy9jb21iby5jOiBDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglGaXhlZCBDQl9ESVIxNiBoYW5kbGluZy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBSZXBhaXJlZCBJTlQyMV9GaW5kRmlyc3QvRmluZE5leHQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmgsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21zZG9zLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG1vdmVkIHRoZSByZW1haW5pbmcgb2YgaW50MjEgY2FsbHMgdG8gZGxscy93aW5lZG9zCgktIGRpc2FibGVkIGRyaXZlIGVuYWJsaW5nL2Rpc2FibGluZyBhcyB3ZWxsIGFzIGRpc2sgc2VyaWFsIG51bWJlcgoJICB3cml0aW5nIChmb3IgRExMIHNlcGFyYXRpb24gaXNzdWVzKQoJLSBhZGRlZCB2b2x1bWUgbWFuYWdlbWVudCBwcm90b3R5cGVzIHRvIGluY2x1ZGUvd2luYmFzZS5oCgktIHN0YXJ0ZWQgRGVmaW5lRG9zRGV2aWNlIChuZWVkZWQgYnkgZmlyc3QgaXRlbSBpbiB0aGlzIGxpc3QpCgktIHJlbW92ZWQgaW50MjEgc3BlY2lmaWMgY29kZSBmcm9tIGRsbHMva2VybmVsCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsCgkgIGRsbHMvd2luZWQzZC8uY3ZzaWdub3JlLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2Quc3BlYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF90eXBlcy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGQgdGhlIHdpbmVkM2QgZGxsIGZvciBiZWdpbm5pbmcgYSBjbGVhbmVyIGQzZCBhcmNoaXRlY3R1cmUgdGhhdCB3aWxsCgljb250YWluIHRoZSBzaGFyZWQgb3BlbkdMIGNvZGUgbmVlZGVkIGZvciBhbGwgd2luZSBkaXJlY3QzZAoJaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2lucHV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIGtleWJvYXJkIGxheW91dCBBUElzLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBkcml2ZXIgQ3JlYXRlRElCU2VjdGlvbiBiZWZvcmUgY2FsbGluZwoJaXQuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIF9leGVjbGUvX2V4ZWNscGUgJiBfc3Bhd25sZS9fc3Bhd25scGUgc3R1YnMuCgoyMDAzLTExLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvYXRvbS5jLCBkbGxzL2tlcm5lbC9kZXZpY2UuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbG9jYWwxNi5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsCgkgIGluY2x1ZGUvaW5zdGFuY2UuaDoKCVJlbW92ZWQgaW5zdGFuY2UuaCBhbmQgY2FsbGJhY2suaCwgbW92aW5nIHRoZWlyIGNvbnRlbnRzIHRvCglrZXJuZWxfcHJpdmF0ZS5oLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9jcHUuYywgZGxscy9rZXJuZWwvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC92aXJ0dWFsLmMsCgkgIG1pc2MvY3B1LmMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCU1vdmVkIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS92aXJ0dWFsLmMgYW5kIG1pc2MvY3B1LmMgdG8KCWRsbHMva2VybmVsLgoJR2V0IHJpZCBvZiB0aGUgbWVtb3J5LyBkaXJlY3RvcnkuCgoJKiBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmMsIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguaDoKCUFWTSBHbWJIIGh0dHA6Ly93d3cuYXZtLmRlLwoJUmVtb3ZlZCBzb21lIG9sZCBSQ1MgY29tbWVudHMuCglGaXhlZCBhIG1lc3NhZ2UgbG9jYXRpb24gYW5kIENBUElfV0FJVF9GT1JfU0lHTkFMLgoKCSogb2JqZWN0cy9mb250LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGxwbkZpdCBiYWNrIHRvIG11bHRpYnl0ZSBpbiBHZXRUZXh0RXh0ZW50RXhQb2ludEEuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBMVlNfRVhfQ0hFQ0tCT1hFUy4KCgkqIG9iamVjdHMvYnJ1c2guYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFuIGFwcCBkZXBlbmRzIG9uIGEgTlVMTCByZXR1cm4gZnJvbSBDcmVhdGVESUJQYXR0ZXJuQnJ1c2hQdCBpZiBkYXRhCglpcyBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgc2V0dGluZyBpbmZvUHRyLT5maXJzdFZpc2libGUgdG8gTlVMTCBpbiBUUkVFVklFV19Tb3J0LgoKMjAwMy0xMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvcHRocmVhZC5jOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBwdGhyZWFkX2dldGF0dHJfbnAuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90eXBlMS5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTY2FsZSB0aGUgT1VUTElORVRFWFRNRVRSSUMncyBib3VuZGluZyBib3ggd2l0aCB0aGUgZm9udCBzaXplLgoJRml4IHdpbmVwcydzIGZvbnQgZG93bmxvYWRlcnMgdG8gY29wZSB3aXRoIHRoaXMgYmVoYXZpb3VyLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB3ZSBjcmVhdGUgYSBwb2x5Y2hyb21lIGJpdG1hcCBmcm9tIHRoZSBkaWIuICBDcmVhdGVESUJpdG1hcAoJZG9lc24ndCBkbyB0aGlzIHdoZW4gdGhlIGRpYiBpcyAxYnBwIGFuZCBoYXMgYSBibGFjay93aGl0ZSBjb2xvdXIKCXRhYmxlLiAgSW4gc3VjaCBjYXNlcyB0aGlzIHJlc3VsdGVkIGluIGEgbW9ub2Nocm9tZSBiaXRtYXAgYmVpbmcKCVN0cmV0Y2hCbHQnZWQgd2hpY2ggaXMgY2xlYXJseSBpbmNvcnJlY3Qgc2luY2Ugd2UgdGhlbiBzdGFydCB1c2luZwoJdGV4dCBhbmQgYmtnbmQgY29sb3Vycy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSB3ZWlyZCBsb2dpYyBpbiBJbWFnZUxpc3RfV3JpdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBIG11bHRpY29sdW1uIGxpc3R2aWV3IHNob3VsZCBnZXQgYSBjdXN0b21kcmF3IG5vdGlmaWNhdGlvbiBmb3IgdGhlCglpdGVtIGFzIHdlbGwgYXMgb25lIGZvciBzdWJpdGVtIDAuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWxzYSBtaWRpIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvTWFrZWZpbGUuaW4sCgkgIGxvYWRlci9nbGliYy5jLCB0b29scy93aW5laW5zdGFsbDoKCUFkZGVkIGEgd2luZS1nbGliYyBiaW5hcnkgdGhhdCBkZXRlY3RzIHRoZSBnbGliYyB0aHJlYWRpbmcgaW4gdXNlIGFuZAoJZXhlY3MgdGhlIGNvcnJlc3BvbmRpbmcgd2luZSBiaW5hcnkuCglSZW1vdmVkIHRoZSAtLXdpdGgtbnB0bCBjb25maWd1cmUgb3B0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L2dldHRpZC5jLCBsaWJzL3BvcnQvc2lnc2V0am1wLmMsCgkgIGxvYWRlci9wdGhyZWFkLmM6CglBZGRlZCBzaWdzZXRqbXAvc2lnbG9uZ2ptcCBhbmQgZ2V0dGlkIHRvIHRoZSBwb3J0YWJpbGl0eSBsaWJyYXJ5LgoKMjAwMy0xMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2VydmVyLmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL2NvbmZpZy5jLCBsaWJzL3dpbmUvbG9hZGVyLmMsCgkgIGxpYnMvd2luZS93aW5lLmRlZjoKCU1vdmVkIHRoZSBleGVjX3dpbmVfYmluYXJ5IGZ1bmN0aW9uIHRvIHRoZSB3aW5lIGxpYnJhcnksIGFuZCB1c2UgaXQgdG8KCWV4ZWMgdGhlIHdpbmVzZXJ2ZXIgdG9vLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglNYWtlIHN1cmUgdGhlIHByb3RlY3Rpb24gZmxhZ3Mgb24gdGhlIG1lbW9yeSB2aWV3IG9mIHRoZSBQRSBoZWFkZXIKCW1hdGNoIHRoZSBhY3R1YWwgbW1hcCBwcm90ZWN0aW9uLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogQ29zbWV0aWNzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9zZGRsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoLmN6ZWthbGxhQHV0b3JvbnRvLmNhPgoJQWRkZWQgc3R1YnMgZm9yIEFjY2Vzc0NoZWNrQnlUeXBlLCBBZGRBdWRpdEFjY2Vzc0FjZSwKCUdldE5hbWVkU2VjdXJpdHlJbmZvQSwgR2V0TmFtZWRTZWN1cml0eUluZm9XLgoJSW1wbGVtZW50ZWQgQ29udmVydFN0cmluZ1NlY3VyaXR5RGVzY3JpcHRvclRvU2VjdXJpdHlEZXNjcmlwdG9yVywKCURlbGV0ZUFjZSwgTWFrZUFic29sdXRlU0QsIEdldEFjbEluZm9ybWF0aW9uLCBDb252ZXJ0U3RyaW5nU2lkVG9TaWRXLAoJUnRsRGVsZXRlQWNlLCBSdGxRdWVyeUluZm9ybWF0aW9uQWNsLgoKCSogZGxscy9rZXJuZWwvdmVyc2lvbi5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglEb24ndCBpbmNsdWRlIGJ1aWxkIG51bWJlciBpbiBHZXRWZXJzaW9uKCkgZm9yIFdpbjl4IHZlcnNpb25zLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnRlZCBSZXBvcnRFdmVudEEvVy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBidWcgaW4gVmtLZXlTY2FuLgoKCSogZGxscy9udGRsbC9maWxlLmM6IENhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCU50UmVhZEZpbGUgY2hlY2tzIHRoYXQgb2Zmc2V0IGlzIG5vdCBudWxsLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBmbGFnIGZhaWxlZCBvcGVucyBvZiB1bnN1cHBvcnRlZCBmb3JtYXRzIGFzIGFuIGVycm9yLgoKCSogY29udHJvbHMvY29tYm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBDQlNfe0xPV0VSfFVQUEVSfUNBU0UuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIG11bHRpY29weSBwcmludGluZyBjb3JyZWN0bHkuCgoJKiBkbGxzL3dpbmVwcy90eXBlNDIuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBmb3JtYXQgc3RyaW5ncyBpbiBUNDJfZG93bmxvYWRfaGVhZGVyKCkgYW5kIFQ0Ml9kb3dubG9hZF9nbHlwaCgpLgoKCSogb2JqZWN0cy9mb250LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiB0aGUgYnVmZmVyIHBhc3NlZCB0byBHZXRPdXRsaW5lVGV4dE1ldHJpY3MgaXNuJ3QgYmlnIGVub3VnaCB0aGVuCglXaW5kb3dzIGZpbGxzIGl0IHVwdG8gdGhlIHN1cHBsaWVkIHNpemUgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuCgllcnJvci4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb25zdGlmeSBzdHJpbmdzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29uc3RpZnkgc3RyaW5ncy4KCUZpeCBhcmdzIG9mIFtHU11ldFByaW50ZXJEYXRhRXgKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBwYXJzaW5nIG9mIEdMIHZlcnNpb24gc3RyaW5nIGluIFguWSBjYXNlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsb2FkZXIvTWFrZWZpbGUuaW46CglPbmx5IGJ1aWxkIGJvdGggV2luZSBiaW5hcmllcyBvbiBMaW51eCwgcHRocmVhZCBzdXBwb3J0IGRvZXNuJ3Qgd29yawoJb24gb3RoZXIgcGxhdGZvcm1zLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeCByYWNlIGluIHJlYWwgbW9kZSBldmVudCBoYW5kbGluZy4KCU1lcmdlIHJlYWwgbW9kZSBwZW5kaW5nIGV2ZW50IGNoZWNraW5nIHJvdXRpbmVzLgoJUmVtb3ZlIHNvbWUgb2Jzb2xldGUgY29kZS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHN0dXBpZCB0eXBvcyBmaXhlcyBvbiBzb2Z0d2FyZSB2ZXJ0ZXggc2hhZGVyIG9wZXJhbmRzCgktIENvcHlSZWN0cyBmaXggKHByb2JsZW0gaW4gZXJyb3IgcGF0aHMpIGJhc2VkIG9uIENhcmxvcyBMb3phbm8gcGF0Y2gKCgkqIGRsbHMveDExZHJ2L3Njcm9sbC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmV3cml0ZSBTY3JvbGxEQy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhdEJsdCgpcyBnZXQgcmVjb3JkZWQgYXMgRU1SX0JJVEJMVCByZWNvcmRzIHdpdGggb2ZmQm1pU3JjID09IDAsIHNvCgllbnN1cmUgdGhhdCB3ZSBwaWNrIHRoZXNlIG91dCBpbiBwbGF5YmFjay4KCUVNUl9TVFJFVENIQkxUIHNob3VsZCBiZWhhdmUgbGlrZSBFTVJfQklUQkxUIGlmIHRoZXJlIGFyZSBubyBiaXRzCgkoaWUuIGl0J3MgYSBQYWxCbHQpLgoJU2V0IHRoZSB0ZXh0IGFuZCBia2duZCBjb2xvdXIgdG8gYmxhY2sgYW5kIHdoaXRlIHJlc3BlY3RpdmVseSBiZWZvcmUKCWVudW1lcmF0aW5nIGFuIGVtZi4KCVByaW50IG91dCB0aGUgcmVjb3JkIG5hbWVzIHRvIG1ha2UgZGVidWdnaW5nIGVhc2llci4KCUFkZCBhIGZldyBUUkFDRSgpcy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTXVjaCBiZXR0ZXIgcGFyc2luZyBvZiAvZXRjL3ByaW50Y2FwLgoJRG9uJ3QgZXZlbiB0cnkgdG8gdXNlIGhldXJpc3RpY3MgdG8gZ3Vlc3Mgd2hldGhlciB0aGUgcHJpbnRlciBpcwoJUG9zdFNjcmlwdCBvciBub3QgLSB3ZSdyZSBnb2luZyB0byBnZXQgaXQgd3JvbmcgYW55d2F5LgoJRG9uJ3QgbGlzdCBwcmludGVyIGVudHJpZXMgdGhhdCBiZWdpbiB3aXRoIGlzcHVuY3QoKSAtIHRoZXNlIGFyZSB1c2VkCglmb3IgJ3RjJyBhbGlhc2VzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBjb2xvci1rZXlpbmcgc3VwcG9ydC4KCgkqIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb25zdGlmeSBzdHJpbmdzLgoKCSogZGxscy9nbHUzMi9NYWtlZmlsZS5pbiwgZGxscy9nbHUzMi9nbHUuYywgZGxscy9nbHUzMi9nbHUzMi5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgbWlzc2luZyB0ZXNzZWxhdG9yIGZ1bmN0aW9ucyBhbmQgZml4IHRoZSB0ZXNzZWxhdG9yCgljYWxsYmFja3Mgc28gdGhhdCB0aGUgY29ycmVjdCBjYWxsaW5nIGNvbnZlbnRpb24gaXMgdXNlZC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgY29uc3RhbnRzIGZvciBEU0FfSW5zZXJ0SXRlbSBhbmQgRFBBX0luc2VydFB0ciBhY2NvcmRpbmcgdG8gbmV3ZXN0CglNU0ROIGhlYWRlcnMuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRUZXh0RXh0ZW50UG9pbnQgYWxyZWFkeSBhZGRzIGNoYXJfZXh0cmEgc28gZG9uJ3QgYWRkIGl0IG9uIGFnYWluLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jLCBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRUZXh0RXh0ZW50UG9pbnQgc2hvdWxkIGluY2x1ZGUgYW4gaW50ZXIgY2hhcmFjdGVyIHNwYWNpbmcgc2V0IGJ5CglTZXRUZXh0Q2hhcmFjdGVyRXh0cmEuCgoJKiBvYmplY3RzL2RjLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IHJlc2VsZWN0IHRoZSBmb250IGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBoYXMgYWN0dWFsbHkgY2hhbmdlZC4KCgkqIGdyYXBoaWNzL3BhdGguYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gc2V0IHRoZSBXb3JsZFRyYW5zZm9ybSB0byB0aGUgaWRlbnRpdHkgYmVmb3JlIHN0cm9raW5nIG9yCglmaWxsaW5nIHRoZSBwYXRoLgoJRml4ZWQgYSBtZW1vcnkgbGVhay4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDcmVhdGVESUJTZWN0aW9uIGlnbm9yZXMgdGhlIHN1cHBsaWVkIHZhbHVlcyBvZiBiaUNsclVzZWQgYW5kCgliaUNsckltcG9ydGFudCBhbmQgY2FsY3VsYXRlcyB0aGVtIGZyb20gYmlCaXRDb3VudC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gaW52YWxpZGF0ZSB0aGUgcmVwbGFjZWQgdGV4dCByZWdpb24gYmVmb3JlIGNhbGxpbmcKCUVNX1Njcm9sbENhcmV0IGFzIHRoaXMgbWF5IGNhbGwgU2Nyb2xsV2luZG93LiAgUHJldmlvdXNseSBuZXdseSBhZGRlZAoJbGluZXMgd2VyZSBub3QgZGlzcGxheWVkIGlmIHRoZSBlZGl0IG5lZWRlZCB0byBzY3JvbGwuCgoJKiBjb250cm9scy9idXR0b24uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU93bmVyZHJhdyBidXR0b25zIHNob3VsZCBlcmFzZSB0aGVtc2VsdmVzIGluIFdNX0VSQVNFQktHTkQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgTFZTX0VYX1NVQklURU1JTUFHRVMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgcmVzdWx0IGNvdWxkIGJlIHJlYWQgYmVmb3JlIHNldC4KCUZpeCB0ZXN0IHRvIHVzZSBjb3JyZWN0IGV2ZW50IGluIGludGVyYWN0aXZlIG1vZGUuCgoJKiBkbGxzL3R0eWRydi9ncmFwaGljcy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGZvcm1hdCBzcGVjaWZpZXJzIGZvciBIRENzLgoKMjAwMy0xMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3B0aHJlYWQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLAoJICBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLAoJICBsaWJzL3dpbmUvcG9ydC5jLCBsb2FkZXIva3RocmVhZC5jLCBsb2FkZXIvcHRocmVhZC5jOgoJTW92ZWQgdGhlIHJlbWFpbmluZyBTWVNERVBTXyogZnVuY3Rpb25zIHRvIHRoZSB3aW5lX3B0aHJlYWQgaW50ZXJmYWNlLgoJTGV0IHRoZSBwdGhyZWFkIGxpYnJhcnkgYWxsb2NhdGUgdGhlIHN0YWNrIGl0c2VsZi4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2dvcGhlci5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBnb3BoZXIgc3R1YnMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggc29tZSBzdHVwaWQgYnVnIHdpdGggbWlzc2luZyBicmFjZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZWQgZGVhZCBjb2RlIGluIFZhckRhdGVGcm9tVUkyKCkuCgoJKiBNYWtlZmlsZS5pbjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJZiB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHdoZW4gY2FsbGluZyBldGFncywgaXQncyBwcm9iYWJseSB0b28KCWxvbmcgd2hlbiBpbnZva2luZyBjdGFncy4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2luZW1tMTYuaCwgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIHNvbWUgbW9yZSBkZXBlbmRlbmNpZXMgb24gd2luZSAxNi1iaXQgc3BlY2lmaWMgZW50aXRpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJRG9uJ3QgYm90aGVyIHRvIGZpbGwgdGhlIGNvbG9yIG1hcCBvbiBUcnVlQ29sb3IgZGlzcGxheXMuCglNb3ZlZCBYMTEgbG9ja2luZyBjYWxscyBvdXQgb2YgdGhlIGxvb3BzLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJQXZvaWQgdGhlIFhTeW5jIGNhbGwgaW4gWDExRFJWX2V4cGVjdF9lcnJvciBieSBzdG9yaW5nIHRoZSBjdXJyZW50CglyZXF1ZXN0IG51bWJlciBhbmQgY2hlY2tpbmcgdGhhdCBvbiBlcnJvcnMuCglNb3ZlZCB0aGUgWFN5bmMgY2FsbCBmcm9tIFgxMURSVl9jaGVja19lcnJvciBpbnRvIHRoZSBjYWxsZXJzIHNvIHRoYXQKCWl0IGNhbiBiZSBhdm9pZGVkIGZvciByZXF1ZXN0cyB0aGF0IGFscmVhZHkgd2FpdCBmb3IgYSByZXBseS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+Cgl1cGRhdGVkIFttY2ldICYgW2RyaXZlcnMzMl0gc2VjdGlvbnMuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCUdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglNb3ZlIHNjc2lfY29tbWFuZF9zaXplIGZyb20gd2luZXNjc2kuaCB0byBTQ1NJX0ZpeF9DTURfTEVOKCksIGl0cyBvbmx5Cgl1c2VyLgoKCSogZGxscy90dHlkcnYvd25kLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggZm9ybWF0IHNwZWNpZmllcnMgZm9yIEhXTkRzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KCUZpeGVkIHR3byAtV3dyaXRlLXN0cmluZ3Mgd2FybmluZ3MgKGJ1dCB0aGVyZSBhcmUgbW9yZSkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvZnJlZXR5cGUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglMb2FkIGFueSBUcnVlVHlwZSBmb250cyB0aGF0IGZvbnRjb25maWcga25vd3MgYWJvdXQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCBjaGV2cm9uIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZWxlYXNlQ2FwdHVyZSBvbiBsYnV0dG9uZG93biBpZiB0aGUgY3Vyc29yIGlzIG91dHNpZGUgYW4gaXRlbSwganVzdAoJbGlrZSB0aGUgbmF0aXZlIG9uZSBkb2VzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHRoZSB2aXNyZ24gaW4gUmVzZXREQyBzbyB0aGF0IEdldENsaXBCb3ggd29ya3MgY29ycmVjdGx5IGFmdGVyCglhIGNoYW5nZSBpbiBwYXBlciBzaXplL29yaWVudGF0aW9uLgoKCSogd2luZG93cy9kaWFsb2cuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSWYgR2V0TmV4dERsZ1RhYkl0ZW0oKSBjYW5ub3QgZmluZCBhbnkgbmV4dCBjb250cm9sLCByZXR1cm4gdGhlIGhhbmRsZQoJb2YgdGhlIG9yaWdpbmFsIGNvbnRyb2wuCgoyMDAzLTExLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9rdGhyZWFkLmMsCgkgIGxvYWRlci9wdGhyZWFkLmM6CglDcmVhdGUgdHdvIHNlcGFyYXRlIHdpbmUgYmluYXJpZXMsIG9uZSB1c2luZyBsaWJwdGhyZWFkIGFuZCBvbmUgdXNpbmcKCWtlcm5lbCB0aHJlYWRpbmcgZGlyZWN0bHkuCglHZXQgcmlkIG9mIHRoZSByZW1haW5pbmcgSEFWRV9OUFRMIGlmZGVmcy4KCVJlbW92ZSB0aGUgc2NoZWR1bGVyIGRpcmVjdG9yeS4KCgkqIERFVkVMT1BFUlMtSElOVFMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgbG9hZGVyLy5jdnNpZ25vcmUsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL21haW4uYywKCSAgdG9vbHMvd2luYXBpL21zdmNtYWtlciwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5ld3JhcHBlcjoKCVJlLXVzZSB0aGUgbG9hZGVyIGRpcmVjdG9yeSBmb3IgdGhlIG1haW4gd2luZSBsb2FkZXIsIGFuZCBnZXQgcmlkIG9mCgl0aGUgbWlzY2VtdSBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYzoKCU1vdmVkIGxvYWRlci9tb2R1bGUuYyB0byBkbGxzL2tlcm5lbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NhcGkyMDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvY2FwaTIwMzIvTWFrZWZpbGUuaW4sIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguYywKCSAgZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5oLCBkbGxzL2NhcGkyMDMyL2NhcGkyMDMyLnNwZWMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglBVk0gQ29tcHV0ZXJzeXN0ZW1lIFZlcnRyaWVicyBHbWJICglJbXBsZW1lbnRlZCBhIENBUEkyMCB3cmFwcGVyIGxpYnJhcnkgZm9yIENBUEk0TGludXggYWNjZXNzLgoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2xlYW5lZCB1cCwgYXV0b2NvbmZlZC4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLAoJICBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvc2VydmVyLmg6CglBZGRlZCBzZXJ2ZXJfYWJvcnRfdGhyZWFkIHRvIHJlcGxhY2UgU1lTREVQU19BYm9ydFRocmVhZC4KCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgU0lHTkFMX0Jsb2NrIGFuZCBTSUdOQUxfUmVzZXQuCglNb3ZlZCBzb21lIGludGVybmFsIG50ZGxsIGRlZmluaXRpb25zIHRvIG50ZGxsX21pc2MuaC4KCjIwMDMtMTEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3N5c2RlcHMuYywgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwKCSAgbGlicy93aW5lL3BvcnQuYzoKCUFkZGVkIHdpbmVfcHRocmVhZF9jcmVhdGVfdGhyZWFkIGFuZCB3aW5lX3B0aHJlYWRfZXhpdF90aHJlYWQgdG8gdGhlCglwdGhyZWFkIHN1cHBvcnQsIGFuZCByZW1vdmVkIHRoZSBjb3JyZXNwb25kaW5nIFNZU0RFUFMgZnVuY3Rpb25zLgoJTW92ZWQgc3RhY2sgYWxsb2NhdGlvbiBmb3IgbmV3IHRocmVhZHMgdG8gd2luZV9wdGhyZWFkX2NyZWF0ZV90aHJlYWQKCXRvIGFsbG93IG1vcmUgZmxleGliaWxpdHkuCgoJKiBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX1B0LnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX1B0LnJjLAoJICBkbGxzL3NlcmlhbHVpL1B0LnJjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLAoJICBkbGxzL3NldHVwYXBpL1B0LnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMb2NhbGl6YXRpb24gdG8gdGhlIFBvcnR1Z3Vlc2Ugb2YgQnJhemlsLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgb2JqZWN0cy9kYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50ZWQgR2V0RENQZW5Db2xvciBhbmQgR2V0RENCcnVzaENvbG9yLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggd2F2ZSBpbiBzdG9wLgoKCSogaW5jbHVkZS9tc2kuaCwgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhbmQgY29ycmVjdCB0aGUgTVNJREJPUEVOIGRlZmluZXMuCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTXNpT3BlbkRhdGFiYXNlJ3Mgc3pQZXJzaXN0IHBhcmFtZXRlciBtYXkgYmUgYSBzdHJpbmcgb3IgYSBiaXRtYXNrLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU2V0RENQZW5Db2xvciBhbmQgU2V0RENCcnVzaENvbG9yLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBpbmNsdWRlL21zaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgTXNpVmVyaWZ5UGFja2FnZS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFJ0bFNlbGZSZWxhdGl2ZVRvQWJzb2x1dGVTRCBhbmQgUnRsTWFrZVNlbGZSZWxhdGl2ZVNELgoJRml4ZWQgc29tZSByZWxhdGVkIFNFX1NFTEZfUkVMQVRJVkUgYnVncy4KCgkqIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWRsZy9pbnNvYmpkbGcuYywgZGxscy9vbGVkbGcvb2xlZGxnX0VuLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfbWFpbi5jLCBkbGxzL29sZWRsZy9yZXNvdXJjZS5oLAoJICBkbGxzL29sZWRsZy9yc3JjLnJjLCBpbmNsdWRlL29sZWRsZy5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBPbGVVSUluc2VydE9iamVjdC4KCgkqIGRsbHMva2VybmVsL3N5c2xldmVsLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJVXNlIHRoZSBzaWduYWwgc3RhY2sgcG9pbnRlciB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgdGhyZWFkLgoJQ29udmVydGVkIHRoZSBTSUdVU1IyIGhhbmRsZXIgdG8gdXNlIHNldHVwX2V4Y2VwdGlvbiAocHJvYmFibHkgc3RpbGwKCW5vdCB3b3JraW5nIHByb3Blcmx5KS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglTZXQgJWZzIGFuZCAlZ3MgaW4gdGhlIHJlZ2lzdGVyIGNvbnRleHQgdG8gdGhlaXIgY3VycmVudCB2YWx1ZSB3aGVuCgljYWxsaW5nIDE2LWJpdCBjb2RlLgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHBkLmMsCgkgIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZGxnLmgsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3dwc19EZS5yYywgZGxscy93aW5lcHMvd3BzX0VuLnJjLCBkbGxzL3dpbmVwcy93cHNfRnIucmMsCgkgIGRsbHMvd2luZXBzL3dwc19Lby5yYywgZGxscy93aW5lcHMvd3BzX1B0LnJjLCBkbGxzL3dpbmVwcy93cHNfUnUucmMsCgkgIGRsbHMvd2luZXBzL3dwc19TaS5yYywgZGxscy93aW5lcHMvd3BzX1NrLnJjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgZm9yIGR1cGxleCBwcmludGluZy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgYWxsIHByaW50ZXIgZW50cmllcyBoYXZlIGEgdmFsaWQgTmFtZSBhbmQgUG9ydCBrZXkuCglDb3BlIHdpdGggY3VwcyBwcmludGVyIGRlbGV0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUxldCAiaW5mbyB3bmQiIHByaW50IHRoZSBjbGllbnQgcmVjdGFuZ2xlIGluIHNjcmVlbiBjb29yZGluYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUxJU1RWSUVXX0dldFN1Ykl0ZW1SZWN0IHNob3VsZCBzdWNjZWVkIGlmIHN1Yml0ZW0gPT0gMCB3aGF0ZXZlciBtb2RlCgl0aGUgbGlzdHZpZXcgaXMgaW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdGx5IHBsYWNlIGEgdG9vbGJhciB3aXRoIENDU19CT1RUT00gc3R5bGUgYXQgdGhlIGJvdHRvbSwgbm90IHRoZQoJdG9wLgoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lPcGVuUHJvZHVjdFcuCgoyMDAzLTExLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglEaXNhYmxlIHRoZSBhc20gaW5saW5lIGZ1bmN0aW9ucyB3aGVuIGJ1aWxkaW5nIG50ZGxsIHRvIGF2b2lkIHRyb3VibGUKCXdoZW4gY29tcGlsaW5nIHdpdGhvdXQgb3B0aW1pemF0aW9uLgoJVGhlIFBQQyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBubyBsb25nZXIgbmVlZGVkIG5vdyB0aGF0IGtlcm5lbCBpcwoJcHJvcGVybHkgc2VwYXJhdGVkLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL3NlcnZlci5oOgoJQWxsb2NhdGUgdGhlIFRFQiBhbmQgc2lnbmFsIHN0YWNrIHNlcGFyYXRlbHkgZnJvbSB0aGUgbWFpbiBzdGFjay4KCUR5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSBpbml0aWFsIFRFQiB0b28gc28gdGhhdCBpdCBpcyBwcm9wZXJseQoJcGFnZS1hbGlnbmVkLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVGhlIENEREEgY2FzZSBvZiBDRFJPTV9SYXdSZWFkKCkgbm8gbG9uZ2VyIHdvcmtzIG9uIEZyZWVCU0QgLUNVUlJFTlQsCglyZW1vdmUgaXQuICBBbHNvLCBjb21iaW5lIHRoZSBGcmVlQlNEIGFuZCBOZXRCU0QgTllJIG5vdGVzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3BTaGVldFBhZ2VQcm9jIGNhbGxiYWNrIHNob3VsZCBhbHdheXMgaGF2ZSBod25kID0gMC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGRyYWcgYW5kIGRyb3Agc3VwcG9ydCB0byBsaXN0dmlldy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBmaXhtZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV01fV0lORE9XUE9TQ0hBTkdJTkcgc2hvdWxkIHJlY2VpdmUgb3JpZ2luYWwsIG5vdCBmaXhlZCB2YWx1ZXMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZXBhaW50IHNjcm9sbCBiYXIgaWYgcmVxdWVzdGVkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgSUxJc1BhcmVudCBmcm9tIE5VTEwgcGlkbHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGJ1ZyBpbiBjYXB0dXJlIHN0b3AuICBPbmx5IGN1cnJlbnQgaGVhZGVyIHNob3VsZCBiZSByZXR1cm5lZCB0bwoJYXBwLgoJTWFrZSB3YXZlIGZyYWdtZW50IHNpemUgYWRqdXN0YWJsZSB0byBndWFyYW50ZWUgYmV0dGVyIHRoYW4gMTAgbXMKCWxhdGVuY3kuICBNYWtlcyBhIGRpZmZlcmVuY2UgZm9yIDgga0h6IHZvaWNlIGFwcHMuCgoJKiBNYWtlZmlsZS5pbjogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQXZvaWQgYXJndW1lbnQgbGlzdCBsaW1pdCBpbiBldGFncyBnZW5lcmF0aW9uLgoKCSogZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglQYXNzIHRocm91Z2ggZmxvYXRzIGNvcnJlY3RseSB0byB0aGUgcmVuZGVyIHN0YXRlcyBhdAoJaW5pdGlhbGl6YXRpb24uIEZpeGVzIHBvaW50IHByb2JsZW1zLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglDaGVjayB0aGF0IHdlIGRvbid0IHdyaXRlIG91dCBvZiB0aGUgZGVmaW5lZCByYW5nZSBvZiBwYWxldHRlcy4KCjIwMDMtMTEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJQWxsb2NhdGUgYSBtZW1vcnkgdmlldyBmb3IgYnVpbHRpbiBkbGxzIHNvIHRoYXQgVmlydHVhbFF1ZXJ5IHJldHVybnMKCXNvbWV0aGluZyBzZW5zaWJsZS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL3gxMWRydi9kZ2EyLmM6CglGaXhlZCB0eXBlIGFuZCBwcm90ZWN0aW9uIHZhbHVlcyByZXR1cm5lZCBieSBOdFF1ZXJ5VmlydHVhbE1lbW9yeSB0bwoJYmUgY2xvc2VyIHRvIHdoYXQgV2luZG93cyBkb2VzLgoJQWxsb3cgdXNpbmcgTUVNX1NZU1RFTSB3aXRob3V0IE1FTV9SRVNFUlZFIHRvIGF2b2lkIDY0ayBhbGlnbm1lbnQuCglVc2UgcHJlYWQgaW5zdGVhZCBvZiBsc2VlaytyZWFkIHdoZW4gZmFraW5nIG1tYXAuCgoJKiBsaWJzL3dpbmUvbG9hZGVyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVB1dCBiZXR0ZXIgdmFsdWVzIGZvciBjb2RlIGFuZCBkYXRhIHNpemVzIGluIHRoZSBOVCBoZWFkZXIgb2YgYnVpbHRpbgoJZGxscy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX0xCVVRUT05ET1dOIGNhbGxzIFNldEZvY3VzIHVuZGVyIFdpbmRvd3MuICBSZW1vdmUgdGhlIFNldEZvY3VzIGluCglXTV9NT1VTRUFDVElWQVRFLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGdldCBjb25mdXNlZCBpZiBQU05fU0VUQUNUSVZFIHJldHVybnMgYSBwb3NpdGl2ZSBudW1iZXIgdGhhdAoJaXNuJ3QgYSByZXNvdXJjZSBpZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIGxpc3R2aWV3IHNlbmQgaXRzIG5vdGlmaWNhdGlvbnMgdG8gdGhlIHBhcmVudCB3aW5kb3cgcGFzc2VkCgl0byBpdCBpbiBDUkVBVEVTVFJVQ1QuICBCYXNlZCBvbiBhIHRyZWV2aWV3IHBhdGNoIGJ5IElnb3IgR3JhaGVrLgoKCSogZGxscy93aW5lcHMvYml0bWFwLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBTdHJldGNoRElCaXRzLgoKCSogZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFBTRFJWX1BhaW50UmduIChhbHNvIGdldHMgdXMgRmlsbFJnbiwgRnJhbWVSZ24gYW5kIEZpbGxQYXRoCglmb3IgZnJlZSkuCgoJKiB3aW5kb3dzL3NweS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNvbW1vbiBkaWFsb2cgbm90aWZpY2F0aW9uIG1lc3NhZ2VzIGFuZCBXTV9TSVpFLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBRV0VSVFogdmlydHVhbCBrZXlzIG1hcHBpbmcsIGZpeCBtYW55IGtleWJvYXJkIGxheW91dHMKCXRvIGNvbmZvcm0gdG8gdGhlIFhGcmVlODYgb25lcywgYWRkIHN1cHBvcnQgZm9yIFJ1c3NpYW4gY3AxMjUxIGFuZAoJcGhvbmV0aWMga2V5Ym9hcmQgbGF5b3V0cywgSXNyYWVsaWFuIHBob25ldGljIGFuZCBTYWhhcm9uIGtleWJvYXJkCglsYXlvdXRzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUltcGxlbWVudCBmYXQzMiBleHRlbmRlZCBmcmVlIHNwYWNlIGZ1bmN0aW9uLgoJTWFrZSBmYXQzMiBjYWxscyByZXNldCBjYXJyeSBmbGFnIGV4cGxpY2l0bHkuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY29lcmNlIGFyZ3VtZW50cyBvZiBJVHlwZUxpYjo6SW52b2tlIGluLXBsYWNlLCBvciB3ZSBnZXQKCWNvcnJ1cHRlZCB2YXJpYW50cy4KCUhhbmRsZSBWX0FSUkFZIHwgc29tZXRoaW5nIC0+IFZUX1NBRkVBUlJBWSwgYXMgdGhpcyBpcyBhIE5PUC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBqb2IgY29udHJvbC4KCjIwMDMtMTAtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZm9jdXMuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglVc2UgYSB0aW1lb3V0IHdoZW4gc2VuZGluZyBicm9hZGNhc3QgbWVzc2FnZXMuCgoJKiBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1cGxpY2F0ZSBzdGRpbi9zdGRvdXQgaGFuZGxlcyB0byBhdm9pZCBjbG9zaW5nIHRoZW0gd2hlbiBsaWJyYXJ5IGlzCgl1bmxvYWRlZC4KCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3dpdGNoZWQgYSArIHRvIGEgLSBzbyB0aGF0IGl0IG1ha2VzIHNlbnNlIHdoZW4gbWFya2luZyB0aGUgbGFzdCBub2RlCglpbiB0aGUgQWRhcHRlcnMgSW5mbyBsaW5rZWQgbGlzdC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHN1cHBvcnQgZm9yIENvcHlSZWN0cyB0byBhIHNtYWxsIGFyZWEgb2YgdGhlIGJhY2sgYnVmZmVyLCBhbmQKCWNvcnJlY3QgdGhlIGdlbmVyYWwgbWV0aG9kIG9mIHVwZGF0aW5nIHRoZSBiYWNrIGJ1ZmZlci4KCgkqIGRsbHMva2VybmVsL25scy9icmYubmxzLCBkbGxzL2tlcm5lbC9ubHMvY2F0Lm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2Nvci5ubHMsIGRsbHMva2VybmVsL25scy9kYW4ubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZGVhLm5scywgZGxscy9rZXJuZWwvbmxzL2RlYy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9kZWwubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVzLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2RldS5ubHMsIGRsbHMva2VybmVsL25scy9lbmcubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZW5pLm5scywgZGxscy9rZXJuZWwvbmxzL2Vzbi5ubHMsCgkgIGRsbHMva2VybmVsL25scy9lc3AubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXRpLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2V1cS5ubHMsIGRsbHMva2VybmVsL25scy9maW4ubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZm9zLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYS5ubHMsCgkgIGRsbHMva2VybmVsL25scy9mcmIubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJsLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2ZybS5ubHMsIGRsbHMva2VybmVsL25scy9mcnMubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZ2FlLm5scywgZGxscy9rZXJuZWwvbmxzL2dkaC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9nZHYubmxzLCBkbGxzL2tlcm5lbC9ubHMvZ2xjLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2lzbC5ubHMsIGRsbHMva2VybmVsL25scy9pdGEubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvaXRzLm5scywgZGxscy9rZXJuZWwvbmxzL25sYi5ubHMsCgkgIGRsbHMva2VybmVsL25scy9ubGQubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxzLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL25vbi5ubHMsIGRsbHMva2VybmVsL25scy9ub3IubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvcHRnLm5scywgZGxscy9rZXJuZWwvbmxzL3N2ZS5ubHMsCgkgIGRsbHMva2VybmVsL25scy9zdmYubmxzLCBkbGxzL2tlcm5lbC9ubHMvdXpsLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL3dhbC5ubHM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAyODU5MSBieSAyODYwNSAoZXVybykgZm9yIGFwcHJvcHJpYXRlIGxvY2FsZXMuCgoJKiBmaWxlcy9maWxlLmM6IE1ha2Ugc3VyZSBHZXRUZW1wRmlsZU5hbWUgbmV2ZXIgcmV0dXJucyAwIG9uIHN1Y2Nlc3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jZmdtZ3IzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NmZ21ncjMyL01ha2VmaWxlLmluLCBkbGxzL2NmZ21ncjMyL2NmZ21ncjMyLnNwZWMsCgkgIGRsbHMvY2ZnbWdyMzIvbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW9zdGx5IHN0dWIgaW1wbGVtZW5hdGlvbiBmb3IgY2ZnbWdyMzIuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDbGVhciBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHdyaXRlIG1hc2tzLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIFJ0bENyZWF0ZVVzZXJUaHJlYWQsIGFuZCB1c2UgaXQgdG8gbW92ZSB0aHJlYWQgY3JlYXRpb24gdG8KCW50ZGxsLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29sb3JXcml0ZUVuYWJsZSBzaG91bGQgbm90IGltcGFjdCBjbGVhcmluZyB0aGUgc2NyZWVuLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFVzZSB0aGUgc3R5bGUgcmV0dXJuZWQgaW4gY3VzdG9tIGRyYXcgc3RydWN0dXJlIHRvIGRyYXcgdGhlIGJ1dHRvbiwKCSAgYXMgYXBwcyBtYXkgbW9kaWZ5IHRoZSBzdHlsZSB0aGlzIHdheS4KCS0gRGlzYWJsZWQgYnV0dG9ucyBjYW4gYmVjb21lIGhvdC4KCS0gUmV0cmlldmUgaW1hZ2UgbGlzdCBmb3IgZHJhd2luZyBhZnRlciBnZXR0aW5nIGltYWdlIGxpc3QgSUQgKGluCgkgIElfSU1BR0VDQUxMQkFDSyBjYXNlKS4KCgkqIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYmV0dGVyIHRyYWNlcwoJLSBzb21lIElQZXJzaXN0U3RyZWFtOjpHZXRDbGFzc0lEIGltcGxlbWVudGF0aW9uCgktIGFkZCB0aGUgInNlYXJjaCBieSBuYW1lIiBzdXBwb3J0IGZvciBJRGlyZWN0TXVzaWNMb2FkZXI4OjpHZXRPYmplY3QKCSAgKGFuZCBhIGhhY2sgZm9yIHVuZGVyc3RhbmRpbmcgY29udGFpbmVycyB1c2UpCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvdGVzdHMvdGFiLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCS0gRml4IHRhYiBzaXplIGZvciBUQ1NfT1dORVJEUkFXRklYRUQgc3R5bGUuCgktIENvcnJlY3Qgc2l6ZSByZWNhbGN1bGF0aW9uIGFmdGVyIHNldHRpbmcgdGFiIHdpZHRoLgoJLSBGaXggYnV0dG9uIHNpemVzIHRvIG1hdGNoIG5hdGl2ZS4KCS0gQ2VudGVyIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5IHRhYiB0ZXh0ICYgaWNvbi4KCS0gVXNlIGNvcnJlY3QgbGVmdC9jZW50ZXIgYWxpZ25tZW50IGZsYWdzLgoKMjAwMy0xMC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcHlSZWN0cyAocGVyIHJlY3QpIGNvcGllZCBvbmUgdG9vIG1hbnkgbGluZXMsIHRyYXNoaW5nIHRoZSBoZWFwLgoJQWxzbyB0aWRpZXMgdXAgc2Npc3NvciB0ZXN0IGZyb20gcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdGVzdCBmb3IgbWFpbHNsb3RzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRml4ZWQgcmFjZSBpbiAlZ3Mgc2VsZWN0b3IgcmVzdG9yaW5nIGR1cmluZyB2bTg2IG1vZGUgcmV0dXJuLgoJTWlub3IgY2xlYW51cHMuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQ2hhbmdlIHNvbWUgdmFyaWFibGVzIGZyb20gaW50IHRvIHVuc2lnbmVkIHRvIGF2b2lkIHNpZ25lZG5lc3MKCW1pc21hdGNoZXMuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBZGQgcHJvcGVyIGNhc3RzIHRvIGF2b2lkIHNpZ25lZCB2cy4gdW5zaWduZWQgbWlzbWF0Y2hlcyBpbgoJc3RybWFrZSgpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDYWNoZSB0aGUgd2F2ZSB2b2x1bWUgc28gaXQgY2FuIGJlIHJldHVybmVkIHJhdGhlciB0aGFuIHRoZSBPU1MKCWRlcml2ZWQgdmFsdWUgd2hlbiBwb3NzaWJsZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIG1vcmUgc2FuZSBtYWlsc2xvdCBlcnJvciB2YWx1ZXMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5tbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFuIHVwICpHZXREZXZDYXBzIHRvIGNoZWNrIGZvciB2YWxpZCBwb2ludGVyIGFuZCBvbmx5IGNvcHkgcHJvcGVyCglhbW91bnQgb2YgZGF0YS4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglJbmNsdWRlIG50ZGxsX21pc2MuaCB0byBhdm9pZCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIEdldFByb2Nlc3NIZWFwCgl3aGVuIGNvbXBpbGVkIHdpdGhvdXQgb3B0aW1pemF0aW9uLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggaW5jb3JyZWN0bHkgc2l6ZWQgYnVmZmVyLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ3VsbGluZyB0byBkaWZmZXJlbnQgdmlld3BvcnRzIGZhaWxlZCBhcyBjbGVhcmluZyB0aGUgd2hvbGUgdmlld3BvcnQKCWNsZWFyZWQgdGhlIHNjcmVlbi4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogQmV0dGVyIGRlZmF1bHRzIGZvciBoZWFwIGFuZCBzdGFjayBzaXplcy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYzoKCUhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglKb3lzdGlja0FJbXBsX1VuYWNxdWlyZSBzaG91bGQgcmV0dXJuIERJX05PRUZGRUNUIGlmIHRoZSBkZXZpY2UgaXMgbm90CglpbiBhbiBhY3F1aXJlZCBzdGF0ZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvbXNpcXVlcnkuYywgaW5jbHVkZS9tc2kuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgc3R1YiBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL21zaS90b2tlbml6ZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTcWwgdG9rZW5zIGFyZSBjYXNlIGluc2Vuc2l0aXZlIGluIG1zaS5kbGwuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCB3cml0aW5nIHRvIGJhY2sgYnVmZmVyIGluIG5vbi1vcnRobyBtb2RlLCBhbmQgZW5zdXJlIHRoZSBsaW5lCglzdGlwcGxlIGlzIHBhc3NlZCBjb3JyZWN0bHkgdG8gZW5hYmxlIHByb3BlciB3aXJlZnJhbWUgc3VwcG9ydC4KCjIwMDMtMTAtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUmVzdG9yZWQgZW11bGF0aW9uIG9mIHByb3RlY3RlZCBpbnN0cnVjdGlvbnMgaW4gMzItYml0IGNvZGUgd2hlbgoJcnVubmluZyB3aXRoIGEgV2luOXggdmVyc2lvbi4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyZWF0IG1pc3NpbmcgTVNJIHRhYmxlcyBhcyBlbXB0eS4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5Lmg6CglJbmNyZWFzZSBXSU5FX0xEVF9GSVJTVF9FTlRSWSB0byBsZWF2ZSByb29tIGZvciBnbGliYyB0aHJlYWQKCXNlbGVjdG9ycy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBpbmNsdWRlL3RocmVhZC5oOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIFNJR05BTF9VbmJsb2NrKCkgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYywgaW5jbHVkZS90bXNjaGVtYS5oLAoJICBsaWJzL3VuaWNvZGUvY3BtYXAucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2Vla2x5IHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgTVNJIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgQWRkL1JlbW92ZVZlY3RvcmVkRXhjZXB0aW9uSGFuZGxlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciAuZGJnLmMgZmlsZXMuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIHRoZSBXaW5lCgl0cmFjaW5nIG1hY3JvcyBpbiBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCVRoZSB3aW5lL2xpYiwgd2luZS9vbGUsIHdpbmUvdW5pY29kZSBkaXJlY3RvcmllcyBhcmUgZ29uZS4gU2ltcGxpZnkKCXRoZSB3aW5lX3VuaWNvZGUgYW5kIHdpbmVfdXVpZCBkZXRlY3Rpb24uCglGaXggZ2VuZXJhdGlvbiBvZiB0aGUgY2xlYW4gdGFyZ2V0IChpbiBzb21lIGNvcm5lciBjYXNlcyBpdCBjb3VsZAoJZ2VuZXJhdGUgYSAkKFJNKSBjb21tYW5kIHdpdGggbm8gcGFyYW1ldGVyKS4KCU1vdmUgdGhlIGRpc3RjbGVhbiB0YXJnZXQgdG8gdGhlIHRvcC1sZXZlbCBNYWtlZmlsZSBhbmQgbWFrZSBpdCBtb3JlCgl0aG9yb3VnaC4KCVVwZGF0ZSBhIGZldyBhdXRvY29uZiBjb25zdHJ1Y3RzLgoJUmVtb3RlIGNvbW1lbnRlZCBvdXQgY29kZSBpbiB3cmFwcGVyLmMuIElmIHdlIG5lZWQgdGhhdCBjb2RlIHdlIGNhbgoJYWx3YXlzIGdldCBpdCBmcm9tIENWUy4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUZpeGVkIF93ZnVsbHBhdGggcHJvdG90eXBlLgoKCSogZGxscy94MTFkcnYvd2luZWNsaXBzcnYuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCU1vdmUgZXZlbnRfbmFtZXNbXSBpbnRvIEVWRU5UX1Byb2Nlc3NFdmVudCgpLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRm9ybWF0TWVzc2FnZVc6IEFsbG9jYXRlIGFub3VnaCBzcGFjZS4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzdHJpbmcgdmFsdWUgbG9va3VwcyBpbiBNU0kuCgoJKiBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglTb21lIGZpeGVzIGluIGRtYmFuZCBsb2FkaW5nLgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJU3lzTW91c2VBSW1wbF9VbmFjcXVpcmUgc2hvdWxkIHJldHVybiBESV9OT0VGRkVDVCBpZiB0aGUgZGV2aWNlIGlzIG5vdAoJaW4gYW4gYWNxdWlyZWQgc3RhdGUuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglGaXhlZCB0eXBvIHRoYXQgYnJva2UgaGFuZGxpbmcgb2YgLmNvbSBhbmQgLmJhdCBmaWxlcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglTd2l0Y2ggYmFjayB0byB0aGUgbWFpbiBwcm9jZXNzIHN0YWNrIGJlZm9yZSBjYWxsaW5nIGV4Y2VwdGlvbgoJaGFuZGxlcnMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJUmVwYWlyZWQgcmVsYXkgZGVidWdnaW5nIGZvciBrZXJuZWwgYW5kIG50ZGxsIChzcG90dGVkIGJ5IFV3ZQoJQm9ubmVzKS4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVGVzdCBXTV9LRVkqIGFuZCBXTV9TWVNLRVkqIG1lc3NhZ2VzIGdlbmVyYXRlZCBieSB2YXJpb3VzIGtleWJvYXJkCglldmVudHMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIGdldHRpbmcgdGhlIHdhdmUgZGV2aWNlIG5hbWUuCgoJKiBkbGxzL2RtbG9hZGVyL2xvYWRlci5jOiBSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCUZpeCBkbWxvYWRlcidzIGJlaGF2aW9yIHRvIGJlIG1vcmUgTVMgY29tcGxpYW50LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgZnJlZXR5cGUgMi4wIGRlZmluZXMgZm9yIGZvbnQgZW5jb2RpbmdzIGluc3RlYWQgb2YgbWlzdXNlIG9mCglNU19NQUtFX1RBRy4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZ2V0X2Z1bGxfcGF0aF9oZWxwZXI6IEhhbmRsZSB0aGUgY2FzZSBcXC5cXCBhcyBpbnRlbmRlZDsgZml4IGxlbmd0aAoJYXJndW1lbnRzIGZvciBtZW1tb3ZlLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFub3RoZXIgZGlmZmVyZW5jZSBpbiB0aGUgcHJpbnRmIGZhbWlseS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdCB0aGUgbG9naWMgdGhhdCBkZWNpZGVzIHdoZXRoZXIgYSBXTV9TWVNLRVlVUC9ET1dOIG9yIGEKCVdNX0tFWVVQL0RPV04gbWVzc2FnZSBpcyB0byBiZSBzZW50LgoKMjAwMy0xMC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCWxpYm50ZGxsLmRsbC5zbyBubyBsb25nZXIgZXhpc3RzLCBjaGVjayBmb3IgbGlibnRkbGwuZGVmIGluc3RlYWQuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOgoJQWRkZWQgcHJpbnRpbmcgb2YgdGhlIHRhcmdldCBvZiBmb3J3YXJkZWQgZXhwb3J0cy4KCgkqIHNlcnZlci90aHJlYWQuYzoKCU1ha2UgaW5pdF90aHJlYWQgcmVxdWVzdCBkZWFsIGJldHRlciB3aXRoIGZkIGFsbG9jYXRpb24gZXJyb3JzLgoKCSogZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLAoJICBpbmNsdWRlL2Rzb3VuZC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFNvbWUgZml4ZXMgb24gRGlyZWN0U291bmQgaW5pdCAobmVlZCBTZXRDb29wZXJhdGl2ZUxldmVsIGFzIHNlZW4gaW4KCSAgbXNkbikgb24gSURpcmVjdE11c2ljUGVyZm9ybWFuY2U4OjpJbml0QXVkaW8uCgktIFNvbWUgZml4ZXMgaW4gSURpcmVjdE11c2ljUGVyZm9ybWFuY2U4SW1wbENyZWF0ZVN0YW5kYXJkQXVkaW9QYXRoCgkgIChub3QgcGVyZmVjdCB5ZXQsIG5lZWQgdG8gdW5kZXJzdGFuZC9maXggdGhlIGNoYW5uZWwgaW5pdC91c2UpLgoJLSBGaXggdHlwbyBvbiBDcmVhdGVEaXJlY3RNdXNpY0NvbnRhaW5lci4KCS0gQWRkIG1pc3NpbmcgZGVmaW5lIGluIGRzb3VuZC5oLgoJLSBCZXR0ZXIgdHJhY2VzIG9uIElEaXJlY3RNdXNpY0xvYWRlcjg6OlNldFNlYXJjaERpcmVjdG9yeS4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDb250cm9sX0RvTGF1bmNoOiBtZW1tb3ZlIG5lZWRzIGJ5dGVzIGFzIGxlbmd0aCBhcmd1bWVudC4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDbGVhbiB1cCBtb3VzZSBkcml2ZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZWQgZHJpdmUgcGFyYW1ldGVyIGJsb2NrIChEUEIpIHJvdXRpbmVzIHRvIHdpbmVkb3MuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgZmV3IHN0dWJzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglGaXggUG93ZXJQQyBhc3NlbWJsZXIgc3ludGF4IG1pc3Rha2VzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX05sLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX05sLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fTmwucmMsIGRsbHMvc2VyaWFsdWkvTmwucmMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsIGRsbHMvc2V0dXBhcGkvTmwucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsIGRsbHMvd2luZXBzL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19ObC5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X05sLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbnMuCgoJKiBwcm9ncmFtcy9zdGFydC9ObC5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9ObC5yYywKCSAgcHJvZ3JhbXMvdmlldy92aWV3cmMucmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX05sLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9ObC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTmwucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvTmwucmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBEdXRjaCB0cmFuc2xhdGlvbnMgb2YgV2luZSBwcm9ncmFtcy4KCS0gQ29ycmVjdCBncmFtbWFyIGVycm9yIGluIHdpbmVmaWxlLgoKCSogcHJvZ3JhbXMvd2NtZC9Fbi5yYywgcHJvZ3JhbXMvd2NtZC9ObC5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gQWRkZWQgRHV0Y2ggdHJhbnNsYXRpb24uCgktIE1ha2UgYW4gZXhhbXBsZSdzIGRlc2NyaXB0aW9uIGNvbnNpc3RlbnQgd2l0aCB0aGUgZXhhbXBsZS4KCgkqIGRsbHMva2VybmVsL25scy9oZWIubmxzOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hAc2hlbWVzaC5iaXo+CglVcGRhdGVkIEhlYnJldyByZXNvdXJjZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggU01QVEUgdGltZS4KCUZpeCBwcmltYXJ5IGJ1ZmZlciB2b2x1bWUgc2V0dGluZy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9ubHkgY29weSBhbW91bnQgcmVxdWVzdGVkIHVwIHRvIHNpemUgb2Ygc3RydWN0dXJlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhciBhIG5ldyBoYXJkd2FyZSBidWZmZXIgdG8gcHJvcGVyIHNpbGVuY2UgdmFsdWVzIGJhc2VkIG9uIGZvcm1hdC4KCUFsbG93cyBkeGRpYWcgdG8gcGxheSA4IGJpdCBzb3VuZHMgaW4gaGFyZHdhcmUgcHJpbWFyeSBidWZmZXIgbm93LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUluY2x1ZGUgPGFycGEvbmFtZXNlci5oPiBiZWZvcmUgPHJlc29sdi5oPi4KCjIwMDMtMTAtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9zaGx3YXBpL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3VybG1vbi90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmM6CglVcGRhdGVkIHNvbWUgb2YgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVNwZWNpZnkgaW5jbHVkZSBxdW90ZXMgaW4gdGhlIHRlc3RzLmRhdCBmaWxlLgoKCSogZGxscy9rZXJuZWwvZmliZXIuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJVXNlIHNpZ3NldGptcCBpbnN0ZWFkIG9mIHNldGptcCBpbiBXaW5lIGludGVybmFsIGV4Y2VwdGlvbiBoYW5kbGVycyB0bwoJbWFrZSBzdXJlIHRoZSBzaWduYWwgbWFzayBpcyByZXN0b3JlZCBwcm9wZXJseS4KCgkqIHNlcnZlci9zaWduYWwuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBsaW51eHRocmVhZHMgY2FuY2VsIHNpZ25hbCBhcyBhbiBhbHRlcm5hdGl2ZSB0bwoJU0lHQ0hMRC4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIHRlc3QgY2FzZSBmb3Igc3ByaW50Zi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2Ygc2gzMl9wb2xpY3lfdGFibGUgaW4gU0hJbml0UmVzdHJpY3RlZCwKCSAgYmVjYXVzZSBpdCdzIGFscmVhZHkgc3RhdGljYWxseSBpbml0aWFsaXplZC4KCS0gUmVtb3ZlZCBjYWxsaW5nIG9mIFNISW5pdFJlc3RyaWN0ZWQoTlVMTCwgTlVMTCkgZnJvbSBEbGxNYWluIGJlY2F1c2UKCSAgaXQgZG9lcyBub3RoaW5nIGluIHRoaXMgY2FzZSBub3cuCgktIEFkZGVkIHN1cHBvcnQgZm9yIGZsYWdzIEZXRl9ERVNLVE9QLCBGV0ZfTk9DTElFTlRFREdFLAoJICBGV0ZfVFJBTlNQQVJFTlQgaW4gU2hlbGxWaWV3LgoJLSBGaXhlZCBzbWFsbCBidWcgaW4gc2V0dGluZyBTeXNUcmF5IHdpbmRvdyBjbGFzcyBoYnJCYWNrZ3JvdW5kLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW9yZSB0ZXN0cyBmb3Igd2luZG93IGNyZWF0aW9uIHBhcmFtZXRlcnMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBNaW5NYXgucHRSZXNlcnZlZCwgdXNlIGJldHRlciBkZWZhdWx0cyBmb3IgY2hpbGQgd2luZG93cy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyBhbHdheXMgc2V0cyBjYnRjLmh3bmRJbnNlcnRBZnRlciB0byBIV05EX1RPUC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCU1ha2UgTVNWQ1JUX19zb3BlbigpIGNvbXBsYWluIGxvdWRlciBhYm91dCB1bmtub3duIG9mbGFncywgYnV0IG5vdAoJYWJvdXQgX09fV1JPTkxZLgoJTVNWQ1JUX2ZvcGVuKCkgc2hvdWxkIHBhc3MgdGhpcmQgYXJndW1lbnQgdG8gX29wZW4oKSBiZWNhdXNlIGl0IG1heQoJc2V0IF9PX0NSRUFULgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hbXZpZGVvLmgsIGluY2x1ZGUvYW12aWRlby5pZGwsCgkgIGluY2x1ZGUvYXZpcmlmZi5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIGFtdmlkZW8ue2lkbCxofSBhbmQgYXZpcmlmZi5oLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCURvbid0IHN0b3JlIGJhbmQgdGV4dCBpZiAiIiBpcyBwYXNzZWQgaW50byBTZXRCYW5kSW5mby4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTWlub3IgR1VJIHJlbGF5b3V0LgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jOgoJQ2FsbCB0aGUgYXBwbGljYXRpb24gZW50cnkgcG9pbnQgZnJvbSBrZXJuZWwzMiwgc29tZSBhcHBzIGRlcGVuZCBvbgoJdGhhdC4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jOgoJT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglBbm90aGVyIHBvcnRpb24gb2YgSGVhcFJlQWxsb2MgZml4ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUNoYW5nZSBtY3RyIFBvd2VyUEMgYXNtIGluc3RydWN0aW9uIHRvIG10Y3RyLiBBZGQgU3VwcG9ydCBmb3IgdGhlCgkudGV4dCBzZWN0aW9uIGFuZCB0aGUgLnNwYWNlIHNlY3Rpb24gb2YgZGFyd2luJ3MgbGQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBGb2xkU3RyaW5nQS9XLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBGb2xkU3RyaW5nQSAodXNpbmcgVyB2ZXJzaW9uKS4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUFkZGVkIHRlc3QgZm9yIHRtcG5hbSgpLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCU1TVkNSVF90bXBuYW0oKTogY29tcGxldGUgcmV3cml0ZS4gIFVzZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgbmF0aXZlCgl2ZXJzaW9uLiAgVXNlIHRoZSBjYWxsZXItc3VwcGxpZWQgYnVmZmVyIGlmIHBvc3NpYmxlLgoKMjAwMy0xMC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBpbmNsdWRlL3RocmVhZC5oOgoJU2ltcGxpZmllZCBzaWduYWwgc3RhY2sgYWxsb2NhdGlvbiBhIGJpdCwgYW5kIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24KCW5vbi1pMzg2IHBsYXRmb3Jtcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogQSBzaWduYWwgc3RhY2sgaXMgbm90IG5lZWRlZCBvbiBQb3dlclBDLgoKCSogdG9vbHMvd21jL2xhbmcuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkZWQgc3VwcG9ydCBmb3IgbmV1dHJhbCBsYW5ndWFnZS4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaDogRml4ZWQgbmFtaW5nIG9mIHRoZSBBL1cgdHlwZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBlcnJvciBwYXRocyBpbiBhZHZhcGkzMi5DcnlwdEFjcXVpcmVDb250ZXh0QS4KCS0gQ2FsbCBDUllQVF9WZXJpZnlJbWFnZSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZSwgZXZlbiB0aG91Z2ggaXQKCSAgY3VycmVudGx5IGRvZXMgbm90aGluZy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IE1NRFJWX1BoeXNpY2FsRmVhdHVyZXMgdG8gaGFuZGxlIGJvdGggMTYgYW5kIDMyIGJpdCBwb2ludGVycwoJcHJvcGVybHkuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQ29tcGxldGUgc3VwcG9ydCBET1MgdmVyc2lvbiBhbmQgd2luZWxvb2sgc2V0dGluZ3MuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJRml4IEVNRiBkcml2ZXIgVXBkYXRlQkJveCByb3V0aW5lLiBUaGUgRU1GIGJvdW5kaW5nIGJveCBtdXN0IGJlIHN0b3JlZAoJaW4gZGV2aWNlIGNvb3JkaW5hdGVzIGluIHRoZSBtZXRhZmlsZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBDbGVhciBzY3JlZW4gZGVwdGggY29tYm8gYm94IG9uIHBhZ2UgaW5pdC4KCS0gU29tZSBhcHBkZWZhdWx0cyBzdXBwb3J0LgoJLSBSZW5hbWUgaERsZyB0byBkaWFsb2cgaW4gc29tZSBwbGFjZXMgc28gZW5hYmxlL2Rpc2FibGUgbWFjcm9zIHdvcmsuCgktIERvbid0IHVwZGF0ZSByZWdpc3RyeSB3aGVuIHRoZSBHVUkgaXMgYmVpbmcgaW5pdGlhbGx5IGNvbmZpZ3VyZWQuCgoyMDAzLTEwLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvc21iLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2JpdG1hcHMvd2luZS54cG0sCgkgIGxpYnMvd3BwL3BwbC5sLCBsaWJzL3dwcC9wcmVwcm9jLmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgc2VydmVyL3VuaWNvZGUuYywgc2VydmVyL3VuaWNvZGUuaDoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL250ZGxsL3N0cmluZy5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglGaXggc3BsaXRwYXRoIGFuZCB3c3BsaXRwYXRoIGZvciB0aGUgZmlsZSBleHRlbnNpb24uCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gUmVtb3ZlIGFuIGVycm9uZW91cyBjaGVjayBpbiBOZHJTZW5kUmVjZWl2ZS4KCS0gQ2hhbmdlIGZpeG1lcy4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIEVYRSwgQkFULCBDTUQsIGFuZCBDT00uCgoJKiBkbGxzL3gxMWRydi94cmFuZHIuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgZGVwdGhzW10uCgoJKiBjb250cm9scy9lZGl0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUEgV01fQ1JFQVRFIG1lc3NhZ2Ugc2VudCB0byBhbiBFZGl0IHdpbmRvdyBwcm9jZWR1cmUgc2hvdWxkCglyZXR1cm4gMS4gUG93ZXIgQnVpbGRlciBtYXNrZWQgZWRpdCBjb250cm9scyBkZXBlbmQgb24gaXQuCgoJKiB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB0ZXN0cy5kYXQgdG8gaW5jbHVkZSB0aGUgdmFyaW91cyAjaW5jbHVkZSBmaXhlcy4KCWdjYyBzYXlzIHRoYXQgc2l6ZW9mKGxvbmcgZG91YmxlKT09MTIuCglGaXggdGhlIGRldGVjdGlvbiBvZiBwcmFnbWEgcGFja3MgdG8gZGV0ZWN0ICNpbmNsdWRlIDwuLi4+LgoJR2VuZXJhdGUgb2soIi4uLlxuIikgY2FsbHMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgdG9vbHMvdGVzdHJ1bjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgYWxsIGhlYWQvdGFpbCAtWCB0byBoZWFkL3RhaWwgLW4gWCB0byBiZSBtb3JlIFBPU0lYbHkKCWNvbXBsaWFudC4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBpbmNsdWRlL3NldHVwYXBpLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CgktIFdpbjE2LzMyIGNsZWFudXAuCgktIEZpeGVzIGZvciBidWlsZGluZyB3aXRoIHRoZSBQU0RLLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbnJlZy5oOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJUmVnQ3JlYXRlS2V5RXh7QSxXfTogc3RhdGUgdGhhdCBjbGFzcyBzdHJpbmcgaXMgY29uc3RhbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBUQUJfRGVsZXRlSXRlbSBhbmQgVEFCX0RlbGV0ZUFsbEl0ZW1zIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkKCXRoZSBsYXN0IFRBQl9JbnZhbGlkYXRlVGFiQXJlYSBjaGFuZ2VzLgoJQ29ycmVjdCB0aGUgaW5kZW50YXRpb24gZm9yIHRoZXNlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHVzZSBmcmVlJ2QgcG9pbnRlciBpbiBzdGF0dXMgY29udHJvbCAtIGZvdW5kIGJ5IFZhbGdyaW5kLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBY2NvdW50IGZvciB1bmlxdWUgTlQ0IGJlaGF2aW91ci4KCUJldHRlciBlcnJvciBtZXNzYWdlLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHdpbmVXLgoKCSogd2luZG93cy93aW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVXNlIHRoZSBleHRlbmRlZCB3aW5kb3cgc3R5bGUgZm9yIHRoZSBwcmV2aW91cyBzdHlsZSBpbiB0aGUgc3R5bGUKCWNoYW5naW5nL2NoYW5nZWQgbWVzc2FnZXMgaWYgV0lOX1NldFdpbmRvd0xvbmcgaXMgY2FsbGVkIHdpdGgKCUdXTF9FWFNUWUxFLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25seSByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQuCgoyMDAzLTEwLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMxMDE2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTEwLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy93aW5lL3dpbmUuZGVmOiBEb24ndCBleHBvcnQgdGhlIHdpbmVfcHRocmVhZF8qIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jOgoJUmVwbGFjZWQgYSBmZXcgbW9yZSAweGZmZmZmZmZmIGJ5IHRoZSBhcHByb3ByaWF0ZSBjb25zdGFudHMuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsCgkgIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZmlsZXMvZmlsZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVVzZSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUyB0byB0ZXN0IGZvciBmYWlsdXJlIG9mCglHZXRGaWxlQXR0cmlidXRlc0EvVyBhbmQgbm90IC0xIG9yIDB4RkZGRkZGRkYuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglBZGQgVXNlWFJhbmRSIHRvIHNhbXBsZSBjb25maWcgZmlsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJVGhlIGltcG9ydGVkIHR5cGVsaWIgbmFtZSBtdXN0IGJlIGNvbnZlcnRlZCB0byBVbmljb2RlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgc3VwcG9ydCBmb3IgYWxsIFogYnVmZmVyIGRlcHRocyB0aGF0IGFyZSBsb3dlciB0aGF0IHRoZSBjdXJyZW50CglvbmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVJlY2VudCB2ZXJzaW9ucyBvZiBsaWJYcmFuZHIgZGVwZW5kIG9uIGxpYlhyZW5kZXIuCgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMvbnRkbGwvcmVsYXkuYywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuOgoJRml4ZWQgaGFuZGxpbmcgb2YgcmVsYXkgYW5kIHNub29wIGluY2x1ZGUvZXhjbHVkZSBsaXN0cyB0byBiZWhhdmUgYXMKCWRvY3VtZW50ZWQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUmVpbiBLbGF6ZXMpLgoKCSogZGxscy9rZXJuZWwvc25vb3AxNi5jOiBQcmludCB0aHJlYWQgaWQgaW4gc25vb3AgdHJhY2VzLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYvc2V0dGluZ3MuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hyYW5kci5jLAoJICBkbGxzL3gxMWRydi94cmFuZHIuaCwgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZGxscy94MTFkcnYveHZpZG1vZGUuaDoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgWFJhbmRSIGV4dGVuc2lvbi4KCS0gQWRkZWQgbmV3IGRlYnVnZ2luZyBjaGFubmVscyBmb3IgcmVzb2x1dGlvbiBjaGFuZ2luZy4KCS0gU3RyZWFtbGluZWQgcmVzb2x1dGlvbiBjaGFuZ2luZyBhbmQgcmVtb3ZlZCBkdXBsaWNhdGVkIGNvZGUuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmgsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJLSBTcGxpdCBXaW4xNi8zMiBmaWxlIGRpYWxvZ3MuCgktIFJlbW92ZSBzdXBwb3J0IGZvciBXaW4xNiBzdHlsZSdkIFdpbjMyIGRpYWxvZ3MuCgoyMDAzLTEwLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOgoJR2V0IHJpZCBvZiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gbWFjcm9zLCB1c2UgcmVhbCBmdW5jdGlvbnMgaW5zdGVhZC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzogRml4ZWQgY3V0JnBhc3RlIGVycm9yLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCU9ubHkgc2VuZCBUVk5fSVRFTUVYUEFORElORyBmb3IgaXRlbXMgbWFya2VkIGFzIGhhdmluZyBjaGlsZHJlbi4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS90aW1lLmMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmM6CglPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUFub3RoZXIgcG9ydGlvbiBvZiBIZWFwUmVBbGxvYyBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy93aW4uaW5pOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2Ugd2luLmluaS9bbWNpIGV4dGVuc2lvbnNdIGludG8gdGhlIHJlZ2lzdHJ5LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgRm9sZFN0cmluZ1cuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sCgkgIGxpYnMvdW5pY29kZS9mb2xkLmMsIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHN0cmluZyBmb2xkaW5nIHN1cHBvcnQuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwZWNpZnkgZm91cmNjIGNvZGVzIGZvciBlbmNvZGluZ3MgZGlyZWN0bHksIGluc3RlYWQgb2YgdXNpbmcgY2hhbmdpbmcKCWVudW0gbmFtZXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGNvbW1hbmRTYXZlUmVnaXN0cnkuCgoJKiBkbGxzL3VzZXIvaG9vay5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIG9idmlvdXMgdHlwbyBpbiBjYWxsX2hvb2tfQXRvVy4KCgkqIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Dei5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9EZS5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Eay5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Fbi5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Fcy5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Gci5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9IdS5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9JdC5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9ObC5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Oby5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Tdi5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9UaC5yYywKCSAgZGxscy9vbGVhdXQzMi9yZXNvdXJjZS5oLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgcmVzb3VyY2VzIGZvciBib29sZWFuIHN0cmluZ3MgaW4gc2V2ZXJhbCBsYW5ndWFnZXMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2Ugd2luLmluaS9bbWNpIGV4dGVuc2lvbnNdIGludG8gdGhlIHJlZ2lzdHJ5LgoKCSogd2luZWRlZmF1bHQucmVnOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQSBmZXcgbW9yZSBrZXlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvbGQgZG9jdW1lbnRhdGlvbi9zaGVsbDMyLgoKCSogZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBvdXQtb2YtYmFuZCBpbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglSZWdyb3VwIHRoZSBYMTEgaGVhZGVyIGNoZWNrcyB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGdlbmVyYXRlZAoJY29uZmlndXJlIGEgYml0LgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaDoKCUdldCByaWQgb2YgdGhlIGRyaXZlIGNvZGVwYWdlcyBhbmQgdXNlIENQX1VOSVhDUCBpbnN0ZWFkLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9jcHAuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L3NwYXduLmMsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywKCSAgdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIG9iamVjdHMvZm9udC5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUdldCBXaW5lIHRvIGJlaGF2ZSBsaWtlIFdpbmRvd3MgZG9lcyB3aGVuIEJvbGQgYW5kL29yIEl0YWxpYyBpcwoJc3BlY2lmaWVkIGluIHRoZSB0eXBlZmFjZSBuYW1lIGFyZ3VtZW50IHRvIENyZWF0ZUZvbnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUNoZWNrIGZvciBYcmFuZHIgZXh0ZW5zaW9uLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmM6CglSZXdyb3RlIHNwbGl0cGF0aCBhbmQgd3NwbGl0cGF0aCB0byBhdm9pZCBtb2RpZnlpbmcgdGhlIHBhdGgKCXNlcGFyYXRvcnMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcHJvdmVkIHNlbGVjdGlvbiBvZiBmcmVldHlwZSBmYWNlIGNoYXJtYXAuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9iaXRibHQuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRlZCBCaXRCbHQsIFN0cmV0Y2hCbHQgYW5kIFNldERJQml0c1RvRGV2aWNlIEVNRiBkcml2ZXIKCWNhbGxiYWNrcy4KCUNsZWFuZWQgdXAgcmVkdW5kYW50IGNvZGUgaW4gRU1GRFJWX1N0cmV0Y2hESUJpdHMuCgoJKiBsaWJzL3VuaWNvZGUvY2FzZW1hcC5jLCBsaWJzL3VuaWNvZGUvY3BtYXAucGw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGdlbmVyYXRpb24gb2YgZGlnaXQgYW5kIGNvbXBhdGFiaWxpdHkgbWFwcGluZyB0YWJsZXMuCglHZW5lcmF0ZSBzbWFsbGVyIG1hcHBpbmcgdGFibGVzIGJ5IG1lcmdpbmcgb3ZlcmxhcHMuCgoJKiBvYmplY3RzL2RpYi5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUluIENyZWF0ZURJQml0bWFwLCB0aGUgZmFjdCB0aGF0IHRoZSBiaXRzIGluaXQgZmxhZyBpcyBzZXQgb3Igbm90Cglkb2Vzbid0IGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aCB0aGUgY29sb3Igc3RhdGUgb2YgdGhlIERJQi4KCjIwMDMtMTAtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzoKCU1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglFeHRlbmQgZGlzcGxheXM6IG5vdyBvbmUgY2FuIGFkZCBkaXNwbGF5cyBhY3RpdmUgb25seSBpbiBzcGVjaWZpZWQKCWZ1bmN0aW9uOyBkaXNwbGF5cyBub3cgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgbGlrZSBpbiBnZGIuCgoJKiBkbGxzL29sZTMyL2lmcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwKCSAgaW5jbHVkZS9vYmppZGwuaWRsOgoJTW92ZWQgdGhlIDE2LWJpdCBzdG9yYWdlIGludGVyZmFjZXMgb3V0IG9mIHRoZSBleHBvcnRlZCBoZWFkZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6IFJlbW92ZWQgdGhlIC0tZGxsIG9wdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vZGVmYXVsdC5kc2w6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBkZWZhdWx0LmRzbCBzaGVldCAtLSB0aGUgZGVmYXVsdCBpcyBnb29kIGVub3VnaC4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBJbXBsZW1lbnRlZCBIRUFERVJfU2V0Qml0bWFwTWFyZ2luIGFuZCBIRUFERVJfR2V0Qml0bWFwTWFyZ2luLgoJLSBHZXQgcmlkIG9mIHNvbWUgbWFnaWMgbnVtYmVycyBpbiBIRUFERVJfRHJhd0l0ZW0uCgktIEZpeGVkIHRoZSBkcmF3aW5nIG9mIGltYWdlcyBmcm9tIGltYWdlbGlzdCB3aGVuIHRoZQoJICBIREZfQklUTUFQX09OX1JJR0hUIGZsYWcgaXMgc2V0LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglPbmx5IHJlZHJhdyB0aGUgbmVjZXNzYXJ5IGFyZWEgb2YgdGhlIHRhYiBjb21wb25lbnQgYW5kIG5vdCB0aGUgd2hvbGUKCWNvbXBvbmVudCBsaWtlIHdpbmRvd3MgZG9lcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJUHJldmVudCBhIGNyYXNoIHdpdGggYSBCYWREcmF3YWJsZSBYIGVycm9yIG1lc3NhZ2Ugd2l0aCBzb21lIE1hc2tCbHQKCWNhbGxzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBkZWJ1Z19jaGFubmVscy4KCgkqIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgbWRheXMsIG1vbnRocywgZGF5cywgYW5kIERhdGVTdHlsZS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggRmlubmlzaCBrZXlib2FyZCBsYXlvdXQgdG8gYmV0dGVyIG1hdGNoIHRoZSBYRnJlZTg2IG9uZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQYXNzIHRoZSBjb3JyZWN0IGxwYXJhbSB3aGVuIGNhbGxpbmcgUGFnZURsZ1Byb2NBJ3MgUGFnZVNldHVwSG9vayBmb3IKCVdNX0lOSVRESUFMT0cuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgdXNhZ2Ugb2YgR2xvYmFSZUFsbG9jLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRnJlZSBzaG91bGQgbm90IGhhcHBlbiB3aGVuIHN0aWxsIHBsYXlpbmcuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgbWVtb3J5L2NvZGVwYWdlLmM6CglNb3ZlZCBjb2RlcGFnZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCglDaGFuZ2VkIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBsb2NhbGUgZnVuY3Rpb25zIHNvIHRoYXQgQ1BfVU5JWENQIHdvcmtzCglhcyBzb29uIGFzIHBvc3NpYmxlIGR1cmluZyBrZXJuZWwzMiBpbml0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sLnNwZWMsIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3dpbmUvd2luZS5kZWY6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBwcm9ibGVtcyBmb3VuZCB3aGlsZSBjb21waWxpbmcgYW5kIGxpbmtpbmcgV2luZSB1bmRlcgoJQ3lnd2luLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9zZXR1cGFwaS9kaXJpZC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmM6CglPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUFub3RoZXIgcG9ydGlvbiBvZiBIZWFwUmVBbGxvYyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9yZWxheS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlIHJhY2VzIGZyb20gRFBNSSBhc3luYyBldmVudCBoYW5kbGluZy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggZnVuY3Rpb24gcG9pbnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpbiBfX3dpbmVfcHJvY2Vzc19pbml0KCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJU21hbGwgZml4IGluIHNvdW5kIGZsdXNoaW5nIGNvZGUuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9leGNlcHQuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCVNldCBvciBjbGVhciB0aGUgQmVpbmdEZWJ1Z2dlZCBmbGFnIGluIHRoZSBQRUIgd2hlbiBhIGRlYnVnZ2VyIGlzCglhdHRhY2hlZCB0byBvciBkZXRhY2hlZCBmcm9tIGEgcHJvY2Vzcy4KCURvbid0IHNlbmQgZXhjZXB0aW9uIGV2ZW50cyB0byB0aGUgc2VydmVyIHVubGVzcyBhIGRlYnVnZ2VyIGlzCglwcmVzZW50LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL3B0aHJlYWQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgbGlicy93aW5lL3BvcnQuYzoKCUFkZGVkIGNoZWNrIGZvciBwdGhyZWFkLmggKHJlcG9ydGVkIGJ5IFN0ZXZlbiBFZHdhcmRzKS4KCVJlbW92ZWQgaW5pdF9kb25lIGNoZWNrLCB0aGUgcHJvY2VzcyBoZWFwIGlzIG5vdyBjcmVhdGVkIGJlZm9yZSBrZXJuZWwKCWlzIGxvYWRlZCBhbnl3YXkuCgoJKiBkbGxzL21zaS9zcWwueSwgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2R1bXByZXMuaCwKCSAgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvZ2VucmVzLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwKCSAgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywKCSAgdG9vbHMvd3JjL3V0aWxzLmg6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgY2FzZXMgd2hlbiAna2V5c3ltJyBtaWdodCBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IERhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUFMU0FfV2F2ZUluaXQ6IHJlcGFpcmVkIGRldmljZSBuYW1lLgoKCSogbG9hZGVyL21vZHVsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBHZXRCaW5hcnlUeXBlIHRvIHVuaWNvZGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBuZWNlc3NhcnkgQWRkUmVmL1JlbGVhc2Ugc3R1ZmYgdG8ge1NldC9HZXR9Q3VycmVudFZpZXdwb3J0LgoJV2hlbiBjaGFuZ2luZyBwYXJhbWV0ZXJzIG9mIGEgdmlld3BvcnQsIGRvIHRoZSBhcHByb3ByaWF0ZSB1cGRhdGUgaWYKCWl0IGlzIGN1cnJlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBzZXR0aW5nIHNpemUgb2YgdGFiIGNvbnRyb2wuCgoyMDAzLTEwLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU1vdmVkIHRoZSBlcnJubyBmdW5jdGlvbnMgcGF0Y2hpbmcgdG8gd2luZV9wdGhyZWFkX2luaXRfdGhyZWFkIHNvIHRoYXQKCWl0J3MgZG9uZSBlYXJseSBlbm91Z2ggbm93IHRoYXQga2VybmVsIGlzIG9ubHkgbG9hZGVkIGxhdGVyIG9uLgoKCSogbWlzY2VtdS9NYWtlZmlsZS5pbjoKCUxpbmsgdGhlIG1haW4gYmluYXJ5IGFnYWluc3QgbGlicHRocmVhZCBmb3IgTlBUTCBidWlsZHMuCgoyMDAzLTEwLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJVXBkYXRlIF9fd2luZV9tYWluX2FyZ2MgYWZ0ZXIgb3B0aW9uIHByb2Nlc3NpbmcuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYywgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggc29tZSBpbnN0YW5jZXMgb2YgbWVtb3J5IGFsbG9jYXRpb24gdGhyb3VnaCBIZWFwUmVBbGxvYygpLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB1bmRlcmxpbmUgYW5kIHN0cmlrZW91dCB0ZXh0IGluIHhyZW5kZXIuCgoJKiBvYmplY3RzL2RpYi5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcHJvdmVtZW50IG9uIHRoZSBjb2RlIHRoYXQgZGVhbHMgd2l0aCBzZXR0aW5nIHRoZSBjb2xvciBtYXAgaW4KCUdldERJQml0cy4KCgkqIGRsbHMvKi9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgU1lNQk9MRklMRSBhbmQgTERETExGTEFHUyBmcm9tIE1ha2VmaWxlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCURlZmluZSBhbiBMRERMTCBjb21tYW5kIHRvIGxpbmsgZGxscywgaW5zdGVhZCBvZiB1c2luZyBMRERMTEZMQUdTLgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCB0b29scy93aW5ld3JhcHBlcjoKCVdlIG5vIGxvbmdlciBuZWVkIHRvIGxpbmsgYWdhaW5zdCBudGRsbCBpbiB0aGUgVW5peCBzZW5zZS4KCjIwMDMtMTAtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluOgoJTW92ZWQgdGhlIHB0aHJlYWQgZW11bGF0aW9uIGludG8gdGhlIG1haW4gYmluYXJ5IHNvIHRoYXQgd2UgZG9uJ3QgbmVlZAoJdG8gbGluayBpdCBhZ2FpbnN0IG50ZGxsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGF2ZSB0aGUgd3JhcHBlciBsb2FkIHRoZSB1c2VkIERMTHMgaW4gY2FzZSB0aGUgbWFpbiBwcm9ncmFtCgljYWxscyB0aGVtIGZyb20gY29uc3RydWN0b3JzICh3aXRoIGhlbHAgZnJvbSBBbGV4YW5kcmUgSnVsbGlhcmQpLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvbG9hZGVyLmM6CglEb24ndCByZWZlcmVuY2UgdGhlIGVudmlyb24gZ2xvYmFsIHZhcmlhYmxlIGZyb20ga2VybmVsMzIsIGl0IG1heSBmYWlsCgl0byBsaW5rIChyZXBvcnRlZCBieSBHZXJhbGQgUGZlaWZlcikuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJRml4ZWQgaW1wb3J0aW5nIG9mIGRsbHMgd2l0aCBubyBleHBvcnRzIChyZXBvcnRlZCBieSBXYXJyZW4gQmFpcmQpLgoJRG9uJ3QgY3Jhc2ggb24gYW4gZW1wdHkgbG9hZCBvcmRlciBzcGVjaWZpY2F0aW9uIChyZXBvcnRlZCBieSBNYXhpbWUKCUJlbGxlbmfpKS4KCVRyeSB0byBhdm9pZCBjcmFzaGluZyB3aGVuIGFuIGltcG9ydCBpcyBtaXNzaW5nIGZvciBhIGJ1aWx0aW4gZGxsLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJVGhlIGludGVybWVkaWF0ZSAudG1wLm8gZmlsZSBpcyBubyBsb25nZXIgbmVlZGVkLgoJRExMTUFJTiBpcyBub3QgdXNlZCBhbnltb3JlLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCVVzZSB0aGUgc3RhbmRhcmQgRGxsTWFpbiBlbnRyeSBwb2ludC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglMRElNUE9SVFMgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJV2UgY2FuIG5vdyB1c2UgdGhlIHN0YW5kYXJkIERsbE1haW4gYXMgZW50cnkgcG9pbnQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTGluayBrZXJuZWwzMiBhcyBhIG5vcm1hbCBkbGwuCgoJKiBsaWJzL3dpbmUvcG9ydC5jOgoJQWRkZWQgcGxhY2Vob2xkZXJzIGZvciB3aW5lX3B0aHJlYWRfaW5pdF9wcm9jZXNzIGFuZAoJd2luZV9wdGhyZWFkX2luaXRfdGhyZWFkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2ludGVybmwuaCwgbGlicy93aW5lL2xvYWRlci5jOgoJQ2hhbmdlZCB0aGUgaW5pdCBjb2RlIHRvIG1ha2UgbGlid2luZSBsb2FkIG9ubHkgbnRkbGwgYW5kIHRyYW5zZmVyCgljb250cm9sIHRvIGl0LCBhbmQgdGhlbiBoYXZlIG50ZGxsIGxvYWQga2VybmVsMzIgdXNpbmcgdGhlIG5vcm1hbAoJbG9hZGVyIG1lY2hhbmlzbXMuCglHZXQgcmlkIG9mIEJVSUxUSU4zMl9Mb2FkRXhlTW9kdWxlLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBTZXRUZXh0SnVzdGljYXRpb24gRU1GIGRyaXZlciBjYWxsYmFjay4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wcm92ZWQgZm9udCBnbHlwaCB0cmFuc2Zvcm1hdGlvbiBzdXBwb3J0IGluIEdldEdseXBoT3V0bGluZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWFrZSBzdXJlIHdlIGFsd2F5cyB1c2UgdGhlIHNhbWUgbmFtZSBmb3IgdGhlIHNlbWFwaG9yZSAoc3BvdHRlZCBieQoJQmVuIEEgTCBKZW1tZXR0KS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQ2hhbmdlZCBkZWJ1ZyBjaGFubmVsIHRvICJjdXJzZXMiIHRvIHNlcGVyYXRlIGl0IGZyb20gd2luZWNvbnNvbGUuYwoJYW5kIGFkZGVkIHNvbWUgdHJhY2UgaW5mb21hdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0ZXN0IGZvciAlbi4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgklbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgY29uc3VtZWQgY2hhcmFjdGVycy4KCjIwMDMtMTAtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVVzZSB0aGUgUnRsIGJpdG1hcCBmdW5jdGlvbnMgdG8gaW1wbGVtZW50IFRscyBhbGxvY2F0aW9uLgoJR2V0IHJpZCBvZiB0aGUgUERCIHN0cnVjdHVyZS4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglXZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHJlbGF5IGRlYnVnIGxpc3RzIGZvciArc25vb3AgdG9vLgoKCSogZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGZpbGVzL2RpcmVjdG9yeS5jOgoJT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglBdm9pZCBIZWFwUmVBbGxvYyBvZiBhIE5VTEwgcG9pbnRlci4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgaW5leGlzdGVudCBkaXIsIGFkZCBhIGRvYyByZWZlcmVuY2UgZnJvbSBzaGVsbDMyLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkb2N1bWVudGF0aW9uL3NoZWxsMzI6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB1c2VmdWwgaW5mb3JtYXRpb24gb3V0IG9mIGRvY3VtZW50YXRpb24vc2hlbGwzMi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBzb21lIGZ1bmN0aW9ucyByZWxhdGVkIHRvIFJlZ2lzdGVyV2FpdC4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgcXVvdGluZyBvbiB0aGUgY29tbWFuZCBsaW5lIGluIHVuaW5zdGFsbGVyLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBTTVBURSB0aW1lLgoJRml4ZWQgYmFkIHdhdmUgaW4gcG9zaXRpb24gYXQgc3RhcnR1cCBhbmQgcmVzZXQuCgoJKiBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLAoJICBpbmNsdWRlL2ltYWdlaGxwLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglCcmluZyBpbWFnZWhscCAobW9zdGx5KSBpbmxpbmUgd2l0aCB0aGUgUFNESyBhbmQgTWluZ3cuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXByb3ZlZCB0aGUgYm91bmRpbmcgYm94IGNhbGN1bGF0aW9uIGZvciB0aGUgRU1GIGRyaXZlciBFeHRUZXh0T3V0CgltZXRhcmVjb3JkLiBJdCB0YWtlcyB0aGUgdGV4dCBhbGlnbm1lbnQgaW50byBhY2NvdW50LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOiBBZGRlZCBhIGZldyBtaXNzaW5nIGV4cG9ydHMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3RocmVhZC5oOgoJTW92ZWQgdGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgaW5pdGlhbCBURUIgdG8gbnRkbGwgc28gdGhhdCBpdCBydW5zIGFzCgllYXJseSBhcyBwb3NzaWJsZSBvbiBzdGFydHVwLgoKCSogZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIEVNRiBkcml2ZXIgT2Zmc2V0Vmlld3BvcnRPcmcgYW5kIE9mZnNldFdpbmRvd09yZwoJY2FsbGJhY2tzIHVzaW5nIHRoZSBFTVJfU0VUVklFV1BPUlRPUkdFWCBhbmQgRU1SX1NFVFdJTkRPV09SR0VYCgltZXRhcmVjb3JkcyByZXNwZWN0aXZlbHkuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiX2Rpc2FzbS5jLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgZG9jYm9vazJ0eHQgdG8gZ2VuZXJhdGUgdGhlIHRleHQgb3V0cHV0IGluc3RlYWQgb2YgYWRob2MgaGFja3MuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVVzZSBDT05TT0xFX1JFTkRFUkVSX05PTkVfRVZFTlQgdG8gY29tcHJlc3MgYW4gZXZlbnQgaW5zdGVhZCBvZgoJZGVsZXRpbmcgaXQgd2l0aCBhIG1lbW1vdmUuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVRoZSBUYWIga2V5IHdhcyBjb25zaWRlcmVkIGEgY3RybC1rZXkgYW5kIFNoaWZ0LVRhYiB3YXMgaWdub3JlZC4KCjIwMDMtMTAtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglBZGRlZCBfX3dpbmVfc2V0X3NpZ25hbF9mcyBmdW5jdGlvbiB0byBhdm9pZCBzaGFyaW5nIHRoZQoJU1lTTEVWRUxfV2luMTZDdXJyZW50VGViIHZhcmlhYmxlIGJldHdlZW4ga2VybmVsIGFuZCBudGRsbC4KCU9uIHRoZSBrZXJuZWwgc2lkZSwgcmVwbGFjZWQgU1lTTEVWRUxfV2luMTZDdXJyZW50VGViIGJ5CglDYWxsVG8xNl9UZWJTZWxlY3RvciBzdG9yZWQgZGlyZWN0bHkgaW4gdGhlIGFzbSByZWxheSBjb2RlIHRvIGF2b2lkIGEKCXJ1bi10aW1lIHJlbG9jYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9udGRsbC9yZWxheS5jOgoJRHVwbGljYXRlIHBhcnRzIG9mIHRoZSByZWxheSBkZWJ1Z2dpbmcgaW5pdCBjb2RlIGludG8ga2VybmVsIHRvIGF2b2lkCglyZWZlcmVuY2luZyBudGRsbCBpbnRlcm5hbCBzeW1ib2xzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2Vudi5jOgoJTW92ZWQgYnVpbGRfY29tbWFuZF9saW5lIGJhY2sgdG8ga2VybmVsIGFuZCBtYWtlIGl0IGhhbmRsZSBVbmljb2RlCglwcm9wZXJseS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTWFrZSBjYXB0dXJlIG1vcmUgcmVsaWFibGUgYnkgc3VibWl0dGluZyBhbGwgYnVmZmVycyBiZWZvcmUgc3RhcnQuCglBZGRlZCBzdXBwb3J0IGZvciBub24gcGNtIGZvcm1hdHMuCglBZGRlZCBtb3JlIHByb3BlcnR5IHNldCBzdXBwb3J0LgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglJbmNsdWRlIG50ZGxsX21pc2MuaCB0byBnZXQgdGhlIEdldEN1cnJlbnRQcm9jZXNzL1RocmVhZElkIG1hY3Jvcy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFNldFBpeGVsIG1ldGFyZWNvcmQuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJQXZvaWQgZXhjZXNzaXZlIGhlYXAgbWVtb3J5IHJlYWxsb2NhdGlvbiB3aGVuIGdlbmVyYXRpbmcgRU1GCgltZXRhcmVjb3JkcyBpbiBtZW1vcnkuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJUmVtb3ZlZCB1c2VsZXNzIFdJTkVfVFJBQ0VfT04gdGVzdHMuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCU1vdmVkIGRlYnVnIG91dHB1dCB1cCBiZWZvcmUgY2FsbGluZyB0aGUgYmFja2VuZC4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUluY2x1ZGUgbnRkbGxfbWlzYy5oIHRvIGdldCB0aGUgR2V0Q3VycmVudFByb2Nlc3MvVGhyZWFkSWQgbWFjcm9zLgoKCSogZGxscy9udGRsbC9oZWFwLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglFbGltaW5hdGUgZGVwZW5kZW5jeSBvbiBTZXRMYXN0RXJyb3IoKS4KCgkqIGRsbHMvZ2RpL3dpbmcuYywgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU29tZSBzcGVsbGluZyBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBpcnJlbGV2YW50IChhbmQgaW5jb21wbGV0ZSkgZG9jdW1lbnRhdGlvbiBpbiAnVGhlIFdpbmUgRG9jQm9vawoJU3lzdGVtJyBzZWN0aW9uLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmM6IFdhcnJlbiBCYWlyZCA8d2FycmVuLmJhaXJkQGNpbW1ldHJ5LmNvbT4KCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJTW92ZWQgY29kZSBvdXQgb2YgYXNzZXJ0IHN0YXRlbWVudHMgc28geW91IGNhbiBzYWZlbHkgY29tcGlsZSB3aXRoCgktRE5ERUJVRy4KCgkqIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvdGFzay5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc2hhcmUgc29tZSBwcm90ZWN0ZWQgbW9kZSBpbnRlcnJ1cHRzIGluIHdpbmVkb3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVJlbW92ZWQgY3JlYXRpb24gb2YgbG9hZGVyL25lIGFuZCB3aW4zMiBkaXJlY3Rvcmllcy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2RldmljZS5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgc2NoZWR1bGVyL2hhbmRsZS5jOgoJTW92ZWQgYSBmZXcgbW9yZSBmdW5jdGlvbnMgdG8gdGhlIGRsbHMva2VybmVsIGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC9oZWFwLmMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3N0cmluZy5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9zdHJpbmcuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJTGluayBhbGwgcmVtYWluaW5nIGZpbGVzIHRoYXQgY29udGFpbiBrZXJuZWwgQVBJcyBpbnRvIGtlcm5lbDMyLmRsbAoJaW5zdGVhZCBvZiBudGRsbC5kbGwuIFJlbW92ZWQgYSBudW1iZXIgb2Ygbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmg6CglBZGRlZCBoYWNrIHRvIGNhbGwgQ3JlYXRlRmlsZVcgdGhyb3VnaCBhIHBvaW50ZXIgc28gdGhhdCB3ZSBkb24ndCBuZWVkCgl0byBsaW5rIHRvIGtlcm5lbCBmdW5jdGlvbnMuCglDb21tZW50ZWQgb3V0IFNNQiBzdXBwb3J0IGluIE50UmVhZEZpbGUgZm9yIG5vdy4KCgkqIGZpbGVzL3NtYi5jOiBSZW1vdmVkIGRlcGVuZGVuY3kgb24gbnRkbGxfbWlzYy5oLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcGF0aC5jOgoJQWRkZWQgaGFjayB0byBjYWxsIENyZWF0ZUZpbGVXIHRocm91Z2ggYSBwb2ludGVyIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZAoJdG8gbGluayB0byBrZXJuZWwgZnVuY3Rpb25zLgoJQ29tbWVudGVkIG91dCBTTUIgc3VwcG9ydCBpbiBOdFJlYWRGaWxlIGZvciBub3cuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBmaWxlcy9kcml2ZS5jOgoJUGFzcyB0aGUgY2Ryb20gZGV2aWNlIHBhdGggaW4gQ0RST01fSW5pdFJlZ2lzdHJ5IHNvIHRoYXQgbnRkbGwgZG9lc24ndAoJbmVlZCB0byBjYWxsIERSSVZFX0dldERldmljZS4KCUdldCByaWQgb2YgR2V0RHJpdmVUeXBlIGNhbGxzLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6IFdhcnJlbiBCYWlyZCA8d2FycmVuLmJhaXJkQGNpbW1ldHJ5LmNvbT4KCUNoYW5nZWQgSW50ZXJuZXRTZXRTdGF0dXNDYWxsYmFjayBkZWNsYXJhdGlvbiB0bwoJSW50ZXJuZXRTZXRTdGF0dXNDYWxsYmFja0EvVy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogV2FycmVuIEJhaXJkIDx3YXJyZW4uYmFpcmRAY2ltbWV0cnkuY29tPgoJSGFuZGxlIGNhc2VzIHdoZXJlIFhHZXRJbWFnZSBvciBYMTFEUlZfRElCX0NyZWF0ZVhJbWFnZSBmYWlsLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3NlcnZlci5jLCBpbmNsdWRlL29wdGlvbnMuaCwKCSAgbWlzYy9vcHRpb25zLmM6CglHZXQgcmlkIG9mIHRoZSBhcmd2MCBhbmQgZnVsbF9hcmd2MCBnbG9iYWwgdmFyaWFibGVzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2NvbmZpZy5jLCBsaWJzL3dpbmUvbG9hZGVyLmM6CglBZGRlZCB3aW5lX2dldF9hcmd2MF9wYXRoKCkgdG8gcmV0cmlldmUgdGhlIHBhdGggb2YgdGhlIHdpbmUgYmluYXJ5LgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLAoJICBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCVN0b3JlIGEgInJlbW92YWJsZSIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBmdWxsIGRyaXZlIHR5cGUgaW4gdGhlIHNlcnZlcgoJZmlsZSBvYmplY3Q7IHRoaXMgd2F5IHdlIGRvbid0IG5lZWQgdG8gdXNlIEdldERyaXZlVHlwZVcgaW4gdGhlIGxvYWRlcgoJY29kZS4KCU1ha2Ugc3VyZSB3ZSBhbHdheXMgaGF2ZSBhIHZhbGlkIGJ1aWx0aW5fbG9hZF9pbmZvIHBvaW50ZXIuCgoyMDAzLTEwLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmg6CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gR2V0U3lzdGVtRGlyZWN0b3J5Vy4KCU9wdGltaXplZCBtb2R1bGUgbG9va3VwIGEgYml0LgoJS2VlcCB0cmFjayBvZiB0aGUgbW9kcmVmIHBvaW50ZXIgYWNyb3NzIGJ1aWx0aW4gZGxsIGxvYWRzIHRvIGF2b2lkCgloYXZpbmcgdG8gbG9vayBpdCB1cCBieSBuYW1lIGFmdGVyd2FyZHMuCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuaCwgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLAoJICBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IFdhcnJlbiBCYWlyZCA8d2FycmVuLmJhaXJkQGNpbW1ldHJ5LmNvbT4KCUFkZGVkIGV4dGVybiAiQyIuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsCgkgIGRsbHMvd2lubW0vam95c3RpY2suYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIGEgZmV3IHVubmVlZGVkIGluY2x1ZGUgc3RhdGVtZW50cyBpbiBpbnRlcm5hbCBoZWFkZXJzLgoJU3RhcnRlZCBicmluZ2luZyBzZXR1cGFwaSBpbiBsaW5lIHdpdGggUFNESy4KCgkqIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gcmVnaXN0ZXJpbmcgYSBkbGwsIHNlYXJjaCB0aGUgZGxsJ3MgZGlyZWN0b3J5IGZvciBkbGwKCWRlcGVuZGVuY2llcyB0b28uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9jZHJvbS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkZWQgYSBjaGVjayBmb3IgPHNjc2kvc2NzaS5oPiBhbmQgaW5jbHVkZSBpdCBpbiBkbGxzL250ZGxsL2Nkcm9tLmMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIHRlc3RzIGFyb3VuZCBmZ2V0KHcpcy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWZnZXQodylzKCk6IERvbid0IGRyb3AgY2hhcmFjdGVycyB3aGVuIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJX3dyaXRlKCk6IERvbid0IGZyYWdtZW50IFdyaXRlRmlsZSgpIGZvciBURVhUIG1vZGUgd3JpdGUuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJUmV3cml0ZSBvZiB0aGUgZGxsIGZpbGUgc2VhcmNoIGFsZ29yaXRobSB0byBiZXR0ZXIgZGVhbCB3aXRoIHRoZQoJYnJva2VuIGJlaGF2aW9yIG9mIFJ0bERvc1NlYXJjaFBhdGhfVS4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOiBBIGNvdXBsZSBtb3JlIGZpeGVzIGluIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoJUmV2ZXJ0ZWQgbXkgcHJldmlvdXMgZml4IGluIFJ0bERvc1NlYXJjaFBhdGhfVSwgZXh0ZW5zaW9uIGhhbmRsaW5nIGlzCglzdXBwb3NlZCB0byBiZSBicm9rZW4uCgoJKiBkbGxzL3VzZXIvZm9jdXMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJU3RvcmUgdGhlIGdsb2JhbCBzaGVsbCwgcHJvZ21hbiBhbmQgdGFza21hbiB3aW5kb3dzIGluIHRoZSBzZXJ2ZXIKCShiYXNlZCBvbiBhIHBhdGNoIGJ5IE1hcnRpbiBGdWNocykuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglfcmVhZCgpOiBJbiBfT19URVhUIG1vZGUgbWFrZSBSZWFkZmlsZSBjYWxscyBpbiBjaHVua3MgYXMgYmlnIGFzCglwb3NzaWJsZS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJU3BpdCBvdXQgRU1SX1JFU1RPUkVEQyBtZXRhcmVjb3JkcyB3aXRoIC0xIGFzIGFyZ3VtZW50IGFzIGxvbmcgYXMgd2UKCWRvbid0IGdldCB0byB0aGUgc2F2ZWQgc3RhdGUgd2Ugd2FudC4KCgkqIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVVzZSBjb3JyZWN0IHBvaW50ZXIgd2hlbiBhY2Nlc3NpbmcgcmVhbCBtb2RlIGludGVycnVwdCB2ZWN0b3JzIHVuZGVyCglXaW4xNi4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURYVG4gc3RyaWRlIGlzIHRvIHRoZSBuZXh0IGJsb2NrLCB3aGljaCBpcyB0aGUgZXF1aXZhbGVudCB0byA0IHJvd3MKCXdvcnRoIG9mIGJ5dGVzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCjIwMDMtMTAtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1vdmVkIHRoZSBmaW5hbCBwcm9jZXNzIGluaXQgYW5kIGRlcGVuZGVuY3kgbG9hZGluZyB0bwoJZGxscy9udGRsbC9sb2FkZXIuYywgKGFiKXVzaW5nIHRoZSBMZHJJbml0aWFsaXplVGh1bmsgZW50cnkgcG9pbnQuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3ZlcnNpb24ucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIHJlc291cmNlcyBmcm9tIGxhc3QgbGFuZ3VhZ2UgZmlsZSB1c2VkIHRvIExBTkdfTkVVVFJBTC4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTVNWQ1JUX19fUlREeW5hbWljQ2FzdDogUmVqZWN0IGEgTlVMTCBjcHBvYmouCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgbWVtb3J5L2NvZGVwYWdlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgR2V0Q1BJbmZvRXhBL1cuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiB0b29scy9iaW4ycmVzLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglSZWFkIGFuZCB3cml0ZSBiaW5hcnkgZmlsZXMgaW4gYmluYXJ5IG1vZGUgb24gV2luZG93cy4KCgkqIGluY2x1ZGUvdG1zY2hlbWEuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGRlZCBtaXNzaW5nIGRlZmluZXMgYW5kIGZpeGVkIGEgZmV3IHR5cG9zLgoKCSogZGxscy9udGRsbC9udC5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglGaXggYnVmZmVyIGxlbmd0aCBlcnJvciBjb2RlIGZvciBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLAoJICBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglHZXQgcmlkIG9mIHVzZWxlc3MgY29tbWVudCAoZW1wdHkgZnVuY3Rpb24gaGVhZGVyKS4KCjIwMDMtMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL05sLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy92aWV3L0VuLnJjLCBwcm9ncmFtcy92aWV3L0VzLnJjLCBwcm9ncmFtcy92aWV3L0ZyLnJjLAoJICBwcm9ncmFtcy92aWV3L0l0LnJjLCBwcm9ncmFtcy92aWV3L1B0LnJjLCBwcm9ncmFtcy92aWV3L1J1LnJjLAoJICBwcm9ncmFtcy92aWV3L1NpLnJjLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3djbWQvRW4ucmMsCgkgIHByb2dyYW1zL3djbWQvRnIucmMsIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvUHQucmMsCgkgIHByb2dyYW1zL3djbWQvUnUucmMsIHByb2dyYW1zL3djbWQvU2kucmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUNvbnZlcnQgcmVzb3VyY2VzIHRvIHN0YW5kYXJkIGZvcm1hdCB3aXRob3V0IGVtYmVkZGVkIGJpbmFyeSBkYXRhLgoJRml4ZXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHdpbmRyZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcHJvdmVkIGdlbmVyYXRpb24gb2YgZm9udCBzaWduYXR1cmUgZnJvbSBmcmVldHlwZSBmYWNlIGNoYXJtYXBzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLAoJICBkbGxzL250ZGxsL3ZlcnNpb24uYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUNvbnZlcnRlZCBwcm9jZXNzIGNyZWF0aW9uIHRvIFVuaWNvZGUuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUZhY2UgZmFtaWxpZXMgYXJlIGluIHRoZSB0b3AgNCBiaXRzIG9mIGxmUGl0Y2hBbmRGYW1pbHksIHNvIG1hc2sgd2l0aAoJMHhGMCBiZWZvcmUgdGVzdGluZy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2Jpbi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYml0bWFwcy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfY3Vyc29ycy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfaWNvbnMucmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgYWxsIGJpbmFyeSByZXNvdXJjZXMgZm9yIHVzZXIzMiBpbiBvbmUgZmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvLmN2c2lnbm9yZSwKCSAgZGxscy91eHRoZW1lL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvbWFpbi5jLAoJICBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3V4dGhlbWUuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB1eHRoZW1lLmRsbCwgbW9zdGx5IHN0dWJiZWQgb3V0IGZvciBub3cuCgoJKiBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIFJ0bENyZWF0ZVByb2Nlc3NQYXJhbWV0ZXJzIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCVVzZSBhIGJldHRlciBpY29uLiAgQ29tbWVudCBvdXQgdGhlIGJpbmFyeSByZXNvdXJjZS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vRW4ucmMsIHByb2dyYW1zL3Byb2dtYW4vTmwucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRHV0Y2ggdHJhbnNsYXRpb24gb2YgcHJvZ21hbi4KCUNvcnJlY3QgdHlwbyBpbiBFbmdsaXNoIHJlc291cmNlcy4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRlZCB0aGUgU2V0QXJjRGlyZWN0aW9uIG1ldGFyZWNvcmQgaW4gRU1GIGRyaXZlci4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCURvbid0IHBhc3MgdW51c2VkIHBvaW50ZXJzIHRvIFJlZ0NyZWF0ZUtleUV4KCkgLSB0aGlzIHByZXZlbnRzIHNjb3JlCglzYXZpbmcgb24gV2luZG93cyAyMDAwLgoKCSogZGxscy9udGRsbC9wYXRoLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJU2V0IHdpbl9zdHlsZSBvZiB0aGUgbWFpbiB3aW5kb3cgdG8gV1NfT1ZFUkxBUFBFRFdJTkRPVy4KCgkqIGRsbHMva2VybmVsL2Rvc21lbS5jLCBkbGxzL3dpbmVkb3MvaW50MTkuYywgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlYm9vdCAoaW50MTkpIHVuZGVyIERPUyBub3cgZG9lcyBFeGl0UHJvY2Vzcy4KCU1hZGUgQklPUyByZWJvb3QgdmVjdG9yIGNhbGwgaW50MTkuCgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTTk9PUF9TaG93RGVidWdtc2dTbm9vcCgpOiBjaGVjayBmb3IgTlVMTCBmdW5jdGlvbiBuYW1lLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXJzdCBwYXJ0IG9mIGEgbmV3IElBVklFZGl0U3RyZWFtIGltcGxlbWVudGF0aW9uLgoJLSBGaXhlZC9BZGRlZCBzb21lIHBhcmFtZXRlciBjaGVja2luZy4KCS0gRml4ZWQgYnVnIGluIEVkaXRTdHJlYW1TZXRJbmZvVy4KCS0gRml4ZWQgYnVnIGluIGF2aWZpbDMyLnNwZWMgKHN0ciBpbnN0ZWFkIG9mIHdzdHIpLgoJLSBGaXhlZCBjb3NtZXRpYyBidWcgaW4gSUFWSVN0cmVhbUltcGxfZm5SZWxlYXNlLgoJLSBGaXhlZCB0eXBvLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmgsIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYywgZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoyMDAzLTEwLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLAoJICBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvb2xlMzJyZXMucmMsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcmVzb3VyY2VzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYml0bWFwcy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfY3Vyc29ycy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfaWNvbnMucmMsIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRXh0cmFjdCBiaW5hcnkgcmVzb3VyY2VzIHRvIGZpbGVzLCB0byBmaXQgdGhlIHN0YW5kYXJkLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBBdm9pZCBjbG9zaW5nIHRoZSBjZHJvbSBpZiB3ZSBmYWlsZWQgdG8gb3BlbiBpdC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDaGVjayBmb3IgYWR2ZXJ0aXplZCB2ZXJ0ZXggYmxlbmQgc3VwcG9ydCBiZWZvcmUgcXVlcnlpbmcgZGV2aWNlCgljYXBhYmlsaXRpZXMsIHdoaWNoIHNpbGVuY2VzIGlzc3VlcyBhYm91dCB2ZXJ0ZXggYmxlbmRpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0cyBmb3IgcmVjZW50IHZhcmlhbnQgY2hhbmdlcy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUFkZCBzdXBwb3J0IGZvciBTQ1NJIENELVJPTXMgdG8gQ0RST01fR2V0SW50ZXJmYWNlSW5mbygpLgoJRml4IGRldmljZSBudW1iZXIgZm9yIElERSBDRC1ST01zLiAgUmV0dXJuIDAgZm9yIHVuc3VwcG9ydGVkIGRyaXZlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUFkZGVkIGNoZWNrIGZvciBzY3NpL3Njc2lfaW9jdGwuaC4KCgkqIGRsbHMvbXNpL21zaS5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBtc2kgc3BlYyBmaWxlLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUEgY291cGxlIG9mIG5ldyBmdW5jdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBwdGhyZWFkX2Z1bmN0aW9ucwoJc3RydWN0dXJlLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglXZSBvbmx5IG5lZWQgdG8gY2hlY2sgZm9yIHNhbWUgcHJvY2VzcyBzaWJsaW5ncyBpbiBkZXNrdG9wIG1vZGUgZm9yCgl0b3AtbGV2ZWwgd2luZG93cy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgVmFyUGFyc2VOdW1Gcm9tU3RyKCkvVmFyTnVtRnJvbVBhcnNlTnVtKCksIHVzZSB0aGVtIGZvcgoJY29udmVyc2lvbnMuCglWYXJpYW50SW5pdCgpOiBPbmx5IHRvdWNoIFZfVlQgZmllbGQuCglWYXJpYW50Q2xlYXIoKTogU3VwcG9ydCBJUmVjb3JkSW5mbywgZG9uJ3QgZnJlZSBudWxsIGJzdHJzLgoJQWRkIHN1cHBvcnQgZm9yIHVwY29taW5nIHZ0eXBlcywgcmVtb3ZlIGRlYWQgY29kZSwgZG9jcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWlub3IgZml4ZXMgLSBSZW1vdmUgbGlnaHQgZGVidWcgc3RhdGVtZW50cywgaGFuZGxlIGRpc2FibGVkIHNwZWN1bGFyCgltYXRlcmlhbCBwcm9wZXJseSwgcmVsZWFzZSBzdXJmYWNlcyB3aGVuIGRlYnVnZ2luZyBhbmQgY2xlYW4gdXAgdHJhY2UKCWEgbGl0dGxlLgoKCSogbGlicy93aW5lL2RlYnVnLmMsIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnU2V0LnNoOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVGhpcyBpcyBhY3R1YWxseSBhIC9iaW4vc2ggc2NyaXB0LCAvYmluL2Jhc2ggaXMgbm90IG5lZWRlZC4KCUNoZWNrIHdoZXRoZXIgdGhlIHR3byBpbnB1dCBmaWxlcyBleGlzdHMgaW5zdGVhZCBvZiBhc3N1bWluZyB0aGV5IGRvLgoKCSogdG9vbHMvYmluMnJlcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSBiaW4ycmVzIHNpbGVudCBieSBkZWZhdWx0LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Rtc2NoZW1hLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGRlZCB0bXNjaGVtYS5oIGFuZCBzb21lIG90aGVyIHRoZW1lIGRlZmluZXMuCgoJKiBmaWxlcy9maWxlLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglJbXBsZW1lbnRlZCBHZXRDb21wcmVzc2VkRmlsZVNpemVbQVddLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQWRkZWQgY2hlY2sgZm9yIHN0X2Jsb2NrcyBpbiBzdHJ1Y3Qgc3RhdC4KCjIwMDMtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL21vZHVsZS5jOgoJQ2hhbmdlZCBMZHJMb2FkRGxsIHRvIG9ubHkgc2VhcmNoIGZvciB0aGUgZGxsIGluIHRoZSBzcGVjaWZpZWQgcGF0aCwKCXVzaW5nIG50ZGxsIGZ1bmN0aW9ucy4KCU1vdmVkIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIIGZ1bmN0aW9uYWxpdHkgdG8gTG9hZExpYnJhcnlFeAoJd2hlcmUgaXQgYmVsb25ncy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJSW4gZGVza3RvcCBtb2RlLCBvbmx5IG1vdmUgdGhlIHdpbmRvdyBpbiBaLW9yZGVyIHJlbGF0aXZlIHRvIHNpYmxpbmdzCgliZWxvbmdpbmcgdG8gdGhlIHNhbWUgcHJvY2Vzcy4KCgkqIGZpbGVzL2RyaXZlLmM6CglIYWNrIHRvIHVwZGF0ZSBudGRsbCBjdXJyZW50IGRpcmVjdG9yeSB2YWx1ZSBpbiBEUklWRV9DaGRpci4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBSdGxEb3NTZWFyY2hQYXRoX1UgYW5kIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoJTWFrZSBSdGxEb2VzRmlsZUV4aXN0c19VIGRvIHNvbWV0aGluZyB1c2VmdWwgYnkgY2FsbGluZyBDcmVhdGVGaWxlVwoJZm9yIG5vdy4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZG9jdW1lbnRhdGlvbi9ndWk6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgbWVzc2FnZSBzZXF1ZW5jZXMgZG9jdW1lbnRlZCBpbiBkb2N1bWVudGF0aW9uL2d1aSBpbnRvIGEgdW5pdAoJdGVzdC4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvVE9ETzogRGltaXRyaWUgTy4gUGF1biA8ZGltaUBpbnRlbGxpd2FyZS5jYT4KCVJlbW92ZWQgb2Jzb2xldGUgVE9ETyBmaWxlLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglTSERPQ1ZXXzExOCAoU2hlbGxEREVJbml0KSBpcyByZWFsbHkgYSBkeW5hbWljIGZvcndhcmQgdG8gU0hFTEwzMl8xODguCgoJKiBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTW92ZWQgZGVmaW5pdGlvbiBvZiBuZXdseSBkb2N1bWVudGVkIEFQSSBTSFJlc3RyaWN0ZWQoKSBhbmQgdGhlCglhY2NvcmRpbmcgcG9saWN5IGRlZmluaXRpb25zIHRvIHNobG9iai5oLgoJUmVwbGFjZSB0aGUgcG9saWN5IG51bWVyaWMgdmFsdWVzIHdpdGggdGhlIG5ldyBvZmZpY2lhbCBkZWZpbmVzIGFuZAoJY2hhbmdlIFNIUmVzdHJpY3RlZCgpIHRvIG1hdGNoIHRoZSBuZXcgZG9jdW1lbnRlZCBwcm90b3R5cGUuCgoJKiBkbGxzL250ZGxsL3RpbWUuYywgdG9vbHMvd21jL3dyaXRlLmM6CglHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQ2FzdCB0aW1lX3QgcGFyYW1ldGVycyB0byBmcHJpbnRmKC4uLiwiJWwiLC4uLikgdG8gbG9uZy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFNhbG1lbGEgPDk3MDA1ODRAY3Muc3RhZGlhLmZpPgoJVXBkYXRlZCBGaW5uaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgb2Jzb2xldGUgInN0YXR1cyIgZGlyZWN0b3J5IGZyb20gRVhUUkFTVUJESVJTLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9ObC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGEgTUVTU0FHRSBhYm91dCBjcmVhdGluZyBhIGRpcmVjdG9yeSB0byBhIFRSQUNFLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUlnbm9yZSB3aW5kb3cgY2FwdGlvbiBmcm9tIFBST1BTSEVFVEhFQURFUiBpbiB3aXphcmRzLiAgVXBkYXRlIHdpbmRvdwoJY2FwdGlvbiB3aGVuIGNoYW5naW5nIHBhZ2VzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdXNlci5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhdXRob3IgbGlzdCBhcyB3aXRoIHRoZSBvdGhlciBndWlkZXMuCglTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGlkeSB1cCB0aGUgbm90ZXMgZm9yIHRoZSBPREJDIGRyaXZlci4KCgkqIGluY2x1ZGUvbW1kZGsuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoJTW92ZWQgV2luZSBvbmx5IGRlZmluZXMgdG8gbm90IGNvbmZsaWN0LgoKMjAwMy0xMC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglDYXN0IHRpbWVfdCB0byBsb25nIGZvciBwcmludGluZy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL2tlcm5lbC9hdG9tLmMsCgkgIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgbG9hZGVyL21vZHVsZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBtaXNzaW5nIG1lbSBmcmVlaW5nIG9uIGVycm9yIHBhdGguCgoJKiB0b29scy9iaW4ycmVzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUZWFjaCBiaW4ycmVzIHRvIGRlYWwgd2l0aCBvbmUgZmlsZSBhdCBhIHRpbWUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBHZXQvU2V0VXNlckdlb0lEKCkuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xzaWQuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU5ldyB0ZXN0cyBmb3Igc2hsd2FwaSBzdHJpbmcgYW5kIGNsc2lkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgQDQwNS80MDYsIGRvY3VtZW50IFVSTCBmdW5jdGlvbnMuCglGaXggTUxMb2FkTGlicmFyeVcgcHJvdG90eXBlLgoKCSogdG9vbHMvYzJtYW4ucGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglFbnN1cmUgd2UgZ2VuZXJhdGUgZm9yIC1ub25hbWUgb3JkaW5hbHMgZG9jdW1lbnRlZCBhcyAnQCcuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIHNvbWUgdHJhY2VzLgoJRml4ZWQgc3BlYyBmaWxlIHRvIG1hdGNoIE1pY3Jvc29mdCBkbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGNsb3NlIHRoZSAiQWJvdXQgV2luZSIgZGlhbG9nIGJ5IHByZXNzaW5nIEVzY2FwZS4KCgkqIHByb2dyYW1zL2Nsb2NrL05sLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9ObC5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEdXRjaCB0cmFuc2xhdGlvbiBvZiBjbG9jayBhbmQgY21kbGd0c3QuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglDb3JyZWN0bHkgc2V0IG9wZW5maWxlbmFtZS5sU3RydWN0U2l6ZSBiZWZvcmUgY2FsbGluZwoJR2V0T3BlbkZpbGVOYW1lKCkuCgoyMDAzLTA5LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2Vudi5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywKCSAgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJU3RvcmUgbW9kdWxlIG5hbWVzIGluIFVuaWNvZGUgaW4gdGhlIHNlcnZlci4KCgkqIGRsbHMvZ2RpL2JpZGkuYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsIGRsbHMva2VybmVsL3B0aHJlYWQuYywKCSAgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBpbmNsdWRlL3BzaHBhY2sxLmgsIGluY2x1ZGUvcHNocGFjazIuaCwgaW5jbHVkZS9wc2hwYWNrNC5oLAoJICBpbmNsdWRlL3BzaHBhY2s4LmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJVXNlICNpZmRlZiBpbnN0ZWFkIG9mICNpZiBmb3IgYWxsIGZlYXR1cmUgdGVzdHMuCglDaGVjayB0aGF0IF9NU0NfVkVSIGlzIGRlZmluZWQgYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCS0gQWRkIG1vcmUgbG9nZ2luZyB0byByZXNvbHV0aW9uIGNoYW5nZXMgYW5kIHF1ZXJpZXMuCgktIEFsd2F5cyBlbnVtZXJhdGUgYW5kIGFsbG93IDgsIDE2LCBhbmQgMzItYml0IG1vZGVzLgoJLSBBZGQgbW9yZSBkZWZhdWx0IGNob2ljZXMgdG8gV2luZSBkZXNrdG9wIHNpemVzLgoJLSBSZW5hbWVkIHNvbWUgdmFyaWFibGVzIHRvIG1ha2UgdGhpbmdzIGVhc2llciB0byBmb2xsb3cuCgoJKiBkbGxzL29sZXN2ci9vbGVzdnIuc3BlYywgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywKCSAgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglJbXBsZW1lbnQgc3R1YnMgZm9yIE9sZVJlbmFtZVNlcnZlckRvYywgT2xlUmV2ZXJ0U2VydmVyRG9jIGFuZAoJT2xlU2F2ZWRTZXJ2ZXJEb2MgYW5kIHRoZWlyIDE2LWJpdCBlcXVpdmFsZW50cy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJU21hbGwgbGlnaHRpbmcgZml4LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXR1cm4gMiBpbiBjYXNlIG9mIGEgdXNhZ2UgZXJyb3IuCglVc2UgLXogaW5zdGVhZCBvZiBjb21wYXJpbmcgdG8gYW4gZW1wdHkgc3RyaW5nLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1vdmUgQXBwbGljYXRpb25zIHRhYiBiZWZvcmUgTGlicmFyaWVzIHRhYi4KCUltcHJvdmUgcmV0dXJuX2lmX2ZhaWwuCglQYXJ0bHkgaW1wbGVtZW50IGFwcGRlZmF1bHRzIFVJLgoJUmVwbGFjZSB1c2FnZSBvZiBFbmFibGVXaW5kb3cgd2l0aCBjbGVhcmVyIGVuYWJsZS9kaXNhYmxlIG1hY3Jvcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRXh0cmFjdCBsb2NhbGlzYWJsZSByZXNvdXJjZXMgZnJvbSBzaHJlcy5yYyB0byBwcm9wZXIgbGFuZ3VhZ2UgZmlsZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMTYuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXhlcyBmb3IgbWVtb3J5IGxlYWtzIG9uIGVycm9yIHBhdGguCglPbmUgZml4IGZvciB1c2Ugb2YgcHJldmlvdXMgcmVsZWFzZWQgcG9pbnRlci4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IG1lbW9yeSBsZWFrcyBvbiBlcnJvciBwYXRoLgoKCSogZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MTYuYywKCSAgZGxscy93aW5lZG9zL2ludDFhLmMsIGRsbHMvd2luZWRvcy90aW1lci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVXNlIGNvcnJlY3QgbGluZWFyIHBvaW50ZXIgd2hlbiBhY2Nlc3NpbmcgQklPUyBkYXRhIGFyZWEuCgoJKiBkbGxzL2tlcm5lbC92ZXJzaW9uLnJjOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU2V0IHZlcnNpb24gb2Yga2VybmVsMzIgdG8gV2luZG93cyAyMDAwIFNQNC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc3RhdGVibG9jay5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1heEFjdGl2ZUxpZ2h0cyBtZWFucyBudW1iZXIgb2YgY29uY3VycmVudCBsaWdodHMsIGJ1dCBhbnkgbnVtYmVyIGNhbgoJYmUgIHNldCB1cC4gQ2hhbmdlIHN1cHBvcnQgZm9yIGxpZ2h0cyBpbnRvIGEgbGlua2VkIGxpc3QgYW5kIG9ubHkgc2V0Cgl1cCBhbiBlcXVpdmFsZW50IGdsIGxpZ2h0IHdoZW4gdGhlIGxpZ2h0IGlzIGVuYWJsZWQuCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSB1bmxvY2sgb2YgdGhlIGJhY2tidWZmZXIgY29ycmVjdGx5IHJlc3RvcmUgdGhlIGNvbnRlbnRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGRlZCBJc0xGTkRyaXZlQS9XL0FXIGV4cG9ydHMgYW5kIHR3byBtb3JlIHN0dWJzLgoKMjAwMy0wOS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvcmVsYXkuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvZmlsZS5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglDb252ZXJ0ZWQgbW9zdCBvZiB0aGUgbG9hZGVyIGNvZGUgdG8gVW5pY29kZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJVHJ5IHRvIGNhdGNoIHRoZSBjYXNlIG9mIGEgbm9uLXdyaXRhYmxlIHNvdXJjZSBkaXJlY3RvcnkgYmVmb3JlCglydW5uaW5nIGNvbmZpZ3VyZS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueToKCUZpeGVkIGhhbmRsaW5nIG9mIFVuaWNvZGUgc3RyaW5ncyB1c2VkIGFzIGZpbGVuYW1lcyAocmVwb3J0cyBieSBNYXJ0aW4KCUZ1Y2hzKS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jb21tLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU29tZSBzcGVsbGluZyBmaXhlcy4KCUZpeCB0aGUgY2FzZSBvZiBXaW5lSFEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy93aW5tbS93aW5tbV9Fbi5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSBzb21lIHJlc291cmNlcyBmcm9tIExBTkdfTkVVVFJBTCB0byBMQU5HX0VOR0xJU0guCgoJKiB0b29scy9jMm1hbi5wbCwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgd2luYXBpIGFuZCBjMm1hbiBzbyB0aGV5IGtub3cgYWJvdXQgLXJldDE2LiBSZW1vdmUgc3VwcG9ydCBmb3IKCXRoZSBvYnNvbGV0ZSBwYXNjYWwxNiBhbmQgLW5vaW1wb3J0LgoJVXBkYXRlIG1vZHVsZXMuZGF0IHNvIHdpbmFwaSBrbm93cyBhYm91dCB0aGUgbmV3IGRsbHMuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG9ic29sZXRlIFdpbmVsaWIgSE9XVE8gYW5kIERERSBzdGF0dXMuCgoJKiBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX0VuLnJjLCBkbGxzL21zYWNtL21zYWNtX0ZyLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRXh0cmFjdCBsb2NhbGlzYWJsZSByZXNvdXJjZXMgZnJvbSBtc2FjbSByZXNvdXJjZSBmaWxlLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Gci5yYywgcHJvZ3JhbXMvd2luZW1pbmUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1NpLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCVdpZGVuIHRoZSAiQWJvdXQiIGRpYWxvZyB0byBwcmV2ZW50IHdyYXBwaW5nIG9mIHRleHQuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUZpeCBwcm9jZXNzaW5nIG9mIElEQ0FOQ0VMIGNvbW1hbmQuCglEb24ndCBjaGFuZ2Ugc2V0dGluZ3MgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlICJDdXN0b20iIGRpYWxvZy4KCgkqIGRsbHMvZDNkOS92ZXJzaW9uLnJjOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNldCB2ZXJzaW9uIHRvIDkuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSBpbmZvcm1hdGlvbi4KCjIwMDMtMDktMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL2xvYWRvcmRlci5jLCBpbmNsdWRlL21vZHVsZS5oOgoJQ29udmVydGVkIHRoZSBsb2FkIG9yZGVyIGNvZGUgdG8gdXNlIFVuaWNvZGUgdGhyb3VnaG91dC4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6IEFkZGVkIHN0cnNwblcgYW5kIHN0cmNzcG5XLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBhIHJldHVybiB2YWx1ZSBpbiBTSEZpbGVPcGVyYXRpb24gYW5kIGFkZCBzb21lIGV4dHJhIHRlc3RzIHRvCglpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIG5lY2Vzc2FyeSB0byBkZWFsIHdpdGggc2hvcnRjb21pbmdzIG9mCglrZXJuZWwzMiBmdW5jdGlvbnMgZm9yIHRoZSB0aW1lIGJlaW5nLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jbGFzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFJlYWxHZXRXaW5kb3dDbGFzcy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCV90ZW1wbmFtIGFuZCBfd3RlbXBuYW0gc2hvdWxkIG5vdCBjcmVhdGUgdGhlIHRlbXAgZmlsZSAocmVwb3J0ZWQgYnkKCVdpbSBWYW5kZXJiYXV3aGVkZSkuCgoJKiB0b29scy93aW5lZHVtcC9uZS5jOgoJQWRkZWQgZHVtcGluZyBvZiB0aGUgcmVzaWRlbnQgbmFtZSB0YWJsZSBvZiBORSBmaWxlcy4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jOgoJTWFrZSBzdXJlIGFsbCAxNi1iaXQgc3lzdGVtIGRyaXZlcnMgYXJlIGxvYWRlZCBmb3IgMTYtYml0IGFwcHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvY29tbS5kcnYuc3BlYywgZGxscy9rZXJuZWwvY29tbS5zcGVjLAoJICBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvZGlzcGxheS5kcnYuc3BlYywgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywKCSAgZGxscy91c2VyL2tleWJvYXJkLmRydi5zcGVjLCBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywKCSAgZGxscy91c2VyL21vdXNlLmRydi5zcGVjLCBkbGxzL3VzZXIvbW91c2Uuc3BlYzoKCVJlbmFtZWQgY29tbS5kbGwsIGRpc3BsYXkuZGxsLCBrZXlib2FyZC5kbGwgYW5kIG1vdXNlLmRsbCB0byB1c2UgdGhlCgkuZHJ2IGV4dGVuc2lvbi4KCgkqIGRsbHMvc2V0dXBhcGkvcXVldWUuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglEdWUgdG8gYSBtaXNwbGFjZWQgIn0iIG1lbW9yeSB3YXNuJ3QgZnJlZWQgb24gdGhlIGVycm9yIHBhdGguCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsCgkgIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBzb21lIG1lbW9yeSBsZWFrcyBmb3VuZCBieSBzbWF0Y2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXggYm90aCBhIHdhcm5pbmcgYW5kIHNvbWUgbmFzdHkgY3Jhc2hlcy4uLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywKCSAgZGxscy9tc2kvc3VtaW5mby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gSEVBUF9zdHJkdXBBdG9XLgoKCSogZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSBpbnRvIHRoZSBjb2RlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3IGludG8gdGhlIGRkcmF3IGNvZGUuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIGRvY3VtZW50YXRpb24vc3RhdHVzL3ZlcnNpb24gaW50byB0aGUgdmVyc2lvbiBjb2RlLgoKCSogZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSBkb2N1bWVudGF0aW9uL3N0YXR1cy9semV4cGFuZCBpbnRvIHRoZSBsemV4cGFuZCBzb3VyY2UuCgoJKiBwcm9ncmFtcy9zdGFydC9Fcy5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSBjYXB0dXJlIHRlc3RzIGZyb20gZHNvdW5kLmMgYW5kIHBsYWNlIHRoZW0gaW4gYSBuZXcgZmlsZQoJY2FwdHVyZS5jLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBbGxvdyB3YXZlIGVtdWxhdGVkIGNhcHR1cmUgd2hpbGUgZG9pbmcgaGFyZHdhcmUgYWNjZWxlcmF0ZWQKCXBsYXliYWNrLgoKCSogaW5jbHVkZS9tc2kuaCwgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQVcgZGVmaW5lcyB0byBtc2kuaCBhbmQgbXNpcXVlcnkuaC4KCjIwMDMtMDktMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglTdG9yZSB0aGUgZGxsIG5hbWUgZm9yIHRoZSBleHBvcnQgZGlyZWN0b3J5IGluc2lkZSB0aGUgZXhwb3J0ZWQgbmFtZXMKCWxpc3QuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBdm9pZCBkZXBlbmRpbmcgb24gTU9EVUxFX0dldEJpbmFyeVR5cGUgaW4gbG9hZF9saWJyYXJ5X2FzX2RhdGFmaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBmaWxlcy9kaXJlY3RvcnkuYzoKCVRoZSAiUGF0aCIgdmFsdWUgb2YgdGhlICJBcHAgUGF0aHMiIGVudHJ5IHNob3VsZCBiZSBoYW5kbGVkIGluCglTaGVsbEV4ZWN1dGUgYnkgY2hhbmdpbmcgUEFUSCBpbiB0aGUgbmV3IHByb2Nlc3MsIGluc3RlYWQgb2YgYmVpbmcKCWRvbmUgaW4gU2VhcmNoUGF0aC4KCgkqIGRsbHMvY29tbWRsZy9jb21tZGxnLnNwZWMsIGRsbHMvY3RsM2QvY3RsM2Quc3BlYywKCSAgZGxscy9jdGwzZC9jdGwzZHYyLnNwZWMsIGRsbHMvZ2RpL2Rpc3BkaWIuc3BlYywKCSAgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjLCBkbGxzL2dkaS93aW5nLnNwZWMsCgkgIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsIGRsbHMva2VybmVsL3N5c3RlbS5kcnYuc3BlYywKCSAgZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYywgZGxscy9rZXJuZWwvd2luODdlbS5zcGVjLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kLnNwZWMsIGRsbHMvbXNhY20vbXNhY20uc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL29sZTJubHMuc3BlYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLCBkbGxzL3VzZXIvZGRlbWwuc3BlYywKCSAgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL2tleWJvYXJkLnNwZWMsCgkgIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywKCSAgZGxscy93aW4zMnMvdzMyc3lzLnNwZWMsIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpLnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwczE2LmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGRsbHMvd2lubW0vc291bmQuc3BlYywKCSAgZGxscy93aW5ubHMvd2lubmxzLnNwZWMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWMsCgkgIGRsbHMvd2ludGFiMzIvd2ludGFiLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBvYnNvbGV0ZSBwYXNjYWwxNiAocmVwbGFjZWQgYnkgcGFzY2FsIC1yZXQxNikuCgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXhlZCBtaXNzaW5nIHdpbmVfdHN4MTFfdW5sb2NrKCkgb24gZXJyb3IgcGF0aC4KCjIwMDMtMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oOgoJTW92ZWQgV0lORV9NT0RSRUYgZGVmaW5pdGlvbiB0byBsb2FkZXIuYy4KCVJlbW92ZWQgc2hvcnQgbW9kdWxlIG5hbWUgZnJvbSBXSU5FX01PRFJFRiwgV2luZG93cyBkb2Vzbid0IGhhdmUgaXQuCglSZXdyb3RlIExkckdldERsbEhhbmRsZSB0byBvbmx5IHVzZSBVbmljb2RlLgoKCSogZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9waW4uYywgZGxscy9xdWFydHovcGluLmgsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBIGZldyBjb3NtZXRpYyBmaXhlcy4KCS0gVmFyaW91cyBidWcgZml4ZXMuCgktIEFkZCBzb21lIE91dHB1dFBpbiBoZWxwZXJzLgoJLSBBZGQgYSBuZXcgdHlwZSBvZiBwaW4sIFB1bGxQaW4uCgoJKiBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSB0aGUgbm9uLW9ic29sZXRlIGJpdHMgZnJvbSB3aW5lLnRleGluZm8gaW50byB0aGUgV2luZSBEZXZlbG9wZXJzCglHdWlkZS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L0VuLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9Gci5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvSXQucmMsIHByb2dyYW1zL2NtZGxndHN0L1B0LnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9SdS5yYywgcHJvZ3JhbXMvY21kbGd0c3QvU2kucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRml4IGNoZWNrYm94ZXMgaW4gdGhlICJDb2xvciBkaWFsb2cgZmxhZ3MiIGRpYWxvZ3MuICBUaGV5IHdvdWxkIG5vdAoJY2hhbmdlIHN0YXRlLgoKCSogZGxscy9zZXJpYWx1aS9Fcy5yYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywKCSAgZGxscy9zZXR1cGFwaS9Fcy5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvbG9hZG9yZGVyLmMsIG1pc2Mvb3B0aW9ucy5jLCB0b29scy9ydW50ZXN0OgoJTW92ZWQgbG9hZG9yZGVyIHN1cHBvcnQgdG8gZGxscy9udGRsbC4KCVJlbW92ZWQgdGhlIC0tZGxsIG9wdGlvbiBhbmQgcmVwbGFjZWQgaXQgYnkgdGhlIFdJTkVETExPVkVSUklERVMKCWVudmlyb25tZW50IHZhcmlhYmxlLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUlnbm9yZSBfX3B0aHJlYWRfcndsb2NrX3VubG9jayBjYWxsIGlmIHRoZSBwdGhyZWFkIGZ1bmN0aW9ucyBhcmUgbm90Cglpbml0aWFsaXplZCB5ZXQuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVZhcmlvdXMgdGVzdCBmaXhlcyBmb3IgWFAvbXN2Yy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBzb21lIGNvbW1lbnRzIHRvIGZ1bmN0aW9ucyBhbmQgbWlub3IgZml4ZXMuCglFeHBvcnQgYWxyZWFkeSBleGlzdGluZyAoYnV0IHN0aWxsIHVuZG9jdW1lbnRlZCkgZnVuY3Rpb25zCglJTENyZWF0ZUZyb21QYXRoQS9XLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgdW5pb25zIGluc3RlYWQgb2YgZGVmaW5lcyBpbiBhc3luYyB3b3JrIHJlcXVlc3RzLgoKCSogZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJLSAid2luZS1jdnNkaXJzIiBzaG91bGQgYmUgImZ1bGwtY3ZzIi4KCS0gUmVtb3ZlZCB1bm5lY2Vzc2FyeSAnY2QnLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBdm9pZCBkaXZpZGUgYnkgemVybyBpZiB0aGUgc291bmQgZHJpdmVyIHJldHVybnMgMCBmb3Igc3BlZWQuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgcmVhbCBzdXBwb3J0IGZvciBWUzEuMSwgaWUgbWFrZSB0aGUgcmVsYXRpdmUgYWRkcmVzc2luZyBtb2RlCgl3b3JrLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVGhlICd3JyBjb21wb25lbnQgaXMgdXNlZCBtb3JlIHRoYW4ganVzdCBmb3IgdGhlIHZlcnRleCwgc28gd2UgY2Fubm90CglkbyB0aGUgcHJvamVjdGlvbiBtYXBwaW5nIG91cnNlbHZlcy4gQWxzbyB0aWR5IHVwIGEgdHJhY2Vwb2ludCwgYW5kCglwcmVpbml0aWFsaXplIHRoZSBzaGFkZXJzIG91dHB1dCBhcyB3aW5kb3dzIHNlZW1zIHRvLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQ2FsbCBIZWFwQWxsb2MoKSBvbiBlbnRyaWVzIGJlZm9yZSBIZWFwUmVBbGxvYygpIHRvIGF2b2lkIGNyYXNoIG9uCglXaW5kb3dzIDIwMDAuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUZpeCBwcm9jZXNzaW5nIG9mIHRoZSBjb21tYW5kIGxpbmUuCgoyMDAzLTA5LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCBsaWJzL01ha2VsaWIucnVsZXMuaW4sCgkgIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy91dWlkL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglNb3ZlZCBETExGTEFHUyB0byBhIHNlcGFyYXRlIHZhcmlhYmxlIGluc3RlYWQgb2YgaW5jbHVkaW5nIGl0IGluCglERUZTLgoKCSogZGxscy9tc3ZjcnQvZW52aXJvbi5jOgoJUmV3cm90ZSBnZXRlbnYgYW5kIF93Z2V0ZW52IHRvIGF2b2lkIHJldHVybmluZyBhIHBvaW50ZXIgdG8gYSBmcmVlZAoJbWVtb3J5IGJsb2NrLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9zcGF3bi5jOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3Bhd252cCgpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNb3JlIGxvY2FsZSB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBMYW5ndWFnZUdyb3VwL0dlb0lEIGVudW1lcmF0aW9uIGZucy4KCUFkZCBzb21lIHJlZyBlbnRyaWVzIGZyb20gWFAuCglTZXRMb2NhbGVJbmZvKCk6IFNldCAyIEktdmFsdWVzIGZyb20gUy12YWx1ZXMuCglPcHRpbWlzZSBjb2RlIHNpemUsIGZpeCBhIGZldyBidWdzLCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2NwcC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBjcHAgb2JqZWN0cy9SVFRJLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvdmVyc2lvbi5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3ZlcnNpb24uYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIG1pc2MvdmVyc2lvbi5jOgoJTW92ZWQgdGhlIFdpbmRvd3MgdmVyc2lvbiBjb2RlIHRvIGRsbHMvbnRkbGwsIGFuZCBpbXBsZW1lbnRlZAoJUnRsR2V0VmVyc2lvbiBhbmQgUnRsVmVyaWZ5VmVyc2lvbkluZm8uCglNb3ZlZCB0aGUgMTYtYml0IGFuZCBET1MgdmVyc2lvbiBzdXBwb3J0IHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3dzcHJpbnRmLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50IEJTVFIgZnVuY3Rpb25zLCBhZGQgU2V0T0FOb0NhY2hlKCkuCgoJKiB0b29scy93aW5lYnVpbGQvcmVzMTYuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1TVkMgd2FybmluZyBmaXguCgoJKiBsaWJzL3BvcnQvbWtzdGVtcHMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVBvcnRhYmlsaXR5IGZpeC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBjbGVhbnVwcywgcmVtb3ZlIHJlZmVyZW5jZXMgdG8gYXV0aG9ycy5lbnQuCgoyMDAzLTA5LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHRocmVhZC5jLCBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglJbXBsZW1lbnRlZCBwdGhyZWFkIGNvbmRpdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJQWRkZWQgU1NfRU5ERUxMSVBTSVMuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgYXV0aG9ycyB0byB0aGUgd2luZS11c2VyLnNnbWwuCglSZW1vdmUgdW51c2VkIGZpbGVzLgoKCSogbGlicy9wb3J0L3ByZWFkLmMsIGxpYnMvcG9ydC9wd3JpdGUuYywgbGlicy93cHAvcHJlcHJvYy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgcHJvZ3JhbXMvd2luZWRiZy9leHRfZGVidWdnZXIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBwcm9ncmFtcy93aW5lZGJnL21zYy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglOb3QgZXZlcnlvbmUgaGFzIDx1bmlzdGQuaD4sIHNvbWUgZmlsZXMgbmVlZCA8aW8uaD4gdG9vIChtc3ZjKS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzb21lIG5lZWRlZCBjb25maWcuaCBlbnRyaWVzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUEgZmlyc3Qgc3RhYiBhdCB3Y3N0b2QoKS4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgU3RyRm9ybWF0S0JTaXplQS9XLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGZWxpeCBOYXdvdGhuaWcgPGZsZXhvQGFyYXJhLmRlPgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIExpc3RWaWV3X0dldENvbHVtbldpZHRoLCBMaXN0Vmlld19TZXRDb2x1bW5XaWR0aAoJYW5kIExpc3RWaWV3X1JlZHJhd0l0ZW1zLgoKCSogd2luZG93cy9tZGkuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IE1ESVNldE1lbnUgaW4gdGhlIGNhc2UgaXQgaXMgY2FsbGVkIGJlZm9yZSBhIFdpbmRvd3MgTWVudSBleGlzdHMKCWFzIEFnZW50IG5ld3NyZWFkZXIgZG9lcy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG1vcmUgdW5pY29kZS9tZW1vcnkgYWxsb2NhdGlvbiBlcnJvcnMuCgoyMDAzLTA5LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsCgkgIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW5hbWUgQ09NQ1RMMzJfe0FsbG9jLFJlQWxsb2MsRnJlZX0gdG8ge0FsbG9jLFJlQWxsb2MsRnJlZX0uCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY3ZzLnNnbWwsIGRvY3VtZW50YXRpb24vdG9vbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBzZWN0aW9ucyBmcm9tIHRoZSBndWlkZToKCSAgdG9vbHM6IGlzIG5vdyBpbmNsdWRlZCBpbiB0aGUgbmV3IGJpbjJyZXMKCSAgYnVpbGQ6IG1vdmVkIHRvIFBBQ0tBR0lORwoJICBjdnM6IGlzIGF2YWlsYWJsZSBpbiBtYW55IG90aGVyIHBsYWNlcy4KCgkqIG1zZG9zL2ludDIxLmM6IFNtYWxsIGNsZWFudXAuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRnIucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRnIucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX0ZyLnJjLAoJICBkbGxzL3NlcmlhbHVpL0ZyLnJjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLAoJICBkbGxzL3NldHVwYXBpL0ZyLnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRnIucmMsCgkgIGRsbHMvd2luZXBzL3dwc19Gci5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0ZyLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0ZyLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJWWV0IGFub3RoZXIgYmF0Y2ggb2YgRnJlbmNoIHJlc291cmNlcyB1cGRhdGVzLgoKCSogZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGxvZ2ljIHByb2JsZW1zIHdpdGggTkVUQ09OX2Nvbm5lY3RlZC4KCgkqIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCaWcgdXBkYXRlIHRvIHRoZSBkZWJ1ZyBsb2dnaW5nIHNlY3Rpb24uCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIGF1dGhvcnMgb3V0IG9mIHRoZSBzZWN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVJlbW92ZSBNYW5hZ2VkIG9wdGlvbi4gQWRkIERYR3JhYiwgRGVza3RvcERvdWJsZUJ1ZmZlciwgVXNlVGFrZUZvY3VzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVm9sdW1lIGFuZCBQYW4gZHJpdmVyIHJlcXVlc3RzIG5lZWQgdG8gcmV0dXJuIHN1Y2Nlc3MgZXZlbiB0aG91Z2ggdGhleQoJYXJlIG5vdCBpbXBsZW1lbnRlZC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jOgoJTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCURFQlVHX2NtcF9zeW06IG1pY3JvIG9wdGltaXphdGlvbi9jbGVhbnVwLgoKCSogcHJvZ3JhbXMvc3RhcnQvRnIucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3djbWQvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRnIucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRnIucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBbm90aGVyIGJhdGNoIG9mIEZyZW5jaCByZXNvdXJjZXMgdXBkYXRlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglBZGRlZCBMVktGXyogZGVmaW5lcy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgZXJyb25lb3VzIG1hbGxvYyB0byBIZWFwQWxsb2MuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgYnVuY2ggb2YgdW5pY29kZS9tZW1vcnkgYWxsb2NhdGlvbiBlcnJvcnMuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggc3RybmNweVd0b0EgdG8gYWN0dWFsbHkgYWN0IGFzIGFkdmVydGlzZWQgKGFuZCBub3Qgb3ZlcmZsb3cgdGhlCglpbnB1dCBidWZmZXIpLgoJU21hbGwgY2xlYW51cHMgb2YgaXQgYXQgdGhlIHNhbWUgdGltZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQcmludCBmaXhtZXMgaWYgd2UgZG8gbm90IGZpbmQgYSBjcnlwdG8gcHJvdmlkZXJzIGZvciBhIHNwZWNpZmllZAoJdHlwZS9uYW1lIGFuZCBvdGhlciBmYWlsdXJlcy4KCgkqIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglSZXdyaXR0ZW4gY2FjaGUgY29kZSBhbmQgZml4ZWQgYSBidWcgdGhhdCB3YXMgaW4gaXQuCgoJKiBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBHZXJhcmQncyBuYW1lIHRvIHRoZSBhdXRob3IgbGlzdC4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgZm9ybWF0dGluZyBhIGJpdC4KCgkqIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCB0aGUgaW50cm9kdWN0aW9uIGEgYml0LgoKCSogZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBhIGxvdCBvZiBvYnNvbGV0ZSBpbmZvcm1hdGlvbiwgbWlzYyBjbGVhbnVwcy4KCgkqIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBFcmljJ3MgbmFtZSBpbiB0aGUgYXV0aG9yIGxpc3QuCgoJKiBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgY2xlYW51cHMgb2YgdGhlIE9wZW5HTCBzZWN0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9vbGUuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRyaXZpYWwgY2xlYW51cHMgdG8gdGhlIE9MRSBzZWN0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSBpbmZvIGFib3V0IHRoZSBzZXJ2aWNlIHRocmVhZC4KCVVwZGF0ZSB4MTEgd3JhcHBpbmcgZGVzY3JpcHRpb24sIG1pc2MgY2xlYW51cHMuCgoJKiBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgdGhlIGkxOG4gc2VjdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHVnbGlmeWluZyBub3Rlcy4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgY2xlYW51cHMgb24gaG93IHRvIHNlbmQgaW4gcGF0Y2hlcy4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCB0aGUgZG9jdW1lbnRhdGlvbiBzZWN0aW9uLgoJQ29tbWVudCBvdXQgc29tZSBlbXB0eSBzZWN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgdGhlIGRlYnVnZ2luZyBzZWN0aW9uLgoKCSogZGxscy93aW5lZG9zL2ludDJmLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTaWxlbmNlIHRoZSBGSVhNRSBwcm9kdWNlZCBieSBhbiBpbnN0YWxsIGNoZWNrIG9mIE1WU09VTkQuU1lTLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTaWxlbmNlIHRoZSBGSVhNRSdzIHByb2R1Y2VkIGJ5IGEgY2hlY2sgZm9yIGEgZG9zMzIgZXh0ZW5kZXIuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBlbnRlcmluZyBwcm90ZWN0ZWQgbW9kZSwgVjg2IGZsYWcgbXVzdCBiZSBjbGVhci4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gd2luMzIgY29uc29sZSdzIHdpbmRvdyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gY3Vyc2VzJyBzdGRzY3IKCS0gY29ycmVjdGx5IG1hbmFnZSBiYWNrc3BhY2UKCS0gdmFyaW91cyBjbGVhbnVwCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgaW5pdGlhbGl6ZSBzZW5kX21lc3NhZ2VfaW5mby5mbGFncy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgaWdub3JlIGNlcnRhaW4ga2V5Ym9hcmQgZXZlbnRzIGlmIGEgWExvb2t1cFN0cmluZyByZXR1cm5lZCBhCgl2YWx1ZSAoZGV0ZWN0ZWQgYnkgVmFsZ3JpbmQpLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGVycm9ycyBpbiBJRXh0cmFjdEljb24gZGV0ZWN0ZWQgYnkgdmFsZ3JpbmQuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglSZW1vdmluZyB0aGUgZGlyZWN0b3J5IGlzIGFsbW9zdCBhbHdheXMgdGhlIHdyb25nIHdheSB0byByZW1vdmUgd2luZS4KCgkqIHRvb2xzL3dpbmVjaGVjazogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglBZGFwdGVkIHdpbmVjaGVjayB0byB1c2UgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlIHN5bnRheAoJKGV4LiAlSE9NRSUpLgoKCSogZGxscy9udGRsbC9yZWxheS5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeC4KCgkqIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeCBmb3IgQWxwaGEuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVdoZW4gYW4gaXRlbSBpcyBhY3RpdmF0ZWQsIHdlIHNob3VsZCBzZW5kIGEgTk1JVEVNQUNUSVZBVEUgc3RydWN0IGFuZAoJbm90IGEgTk1IRFIgb25lLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSB0aGUgZGlyZWN0b3J5IGxpc3QsIHRpZHkgaXQgdXAgaW4gdGhlIHByb2Nlc3MuCglBIGZldyBmaXhlcyBmb3Igb2Jzb2xldGUgZmlsZW5hbWVzIGluIHRoZSBkZWJ1Z2dpbmcgaGludHMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQWRkIHNjcmVlbiBkZXB0aCBvcHRpb24gYW5kIHJlbW92ZSAiQWxsb2NhdGVkIFN5c3RlbSBDb2xvcnMiIHNldHRpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJSW1wbGVtZW50ZWQgc291bmQgZmx1c2hpbmcuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJTU1EUlZfSW5zdGFsbDogRml4IGNvbmZ1c2luZyBpbmRlbnRhdGlvbi4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkZWQgRHV0Y2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZGVkIGRlY2xhcmF0aW9ucyBmb3IgbmV3bHkgZG9jdW1lbnRlZCBTSENoYW5nZU5vdGlmeSBBUEkgYW5kIGZpeGVkCglzb21lIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCURvbid0IHJlZGVmaW5lIGRlY2xzcGVjIHVuZGVyIE1TVkMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX25ycm9mZnVuY3M6IENoZWNrIGZvciBlcnJvciBiZWZvcmUgZGVyZWZlcmVuY2luZyByZXR1cm5lZCBwb2ludGVyLgoKMjAwMy0wOS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCB0b29scy93aW5hcGkvbXN2Y21ha2VyOgoJR2V0IHJpZCBvZiByZWxheTMyIGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3JlbGF5LmMsCgkgIGluY2x1ZGUvc25vb3AuaDoKCU1vdmVkIDMyLWJpdCByZWxheSBhbmQgc25vb3Agc3VwcG9ydCB0byBkbGxzL250ZGxsLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9zbm9vcC5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYzoKCU1vdmVkIHRoZSAzMi1iaXQgYnVpbHRpbiBsb2FkZXIgYW5kIHRoZSByZW1haW5pbmcgYml0cyBvZiB0aGUgUEUKCWxvYWRlciBpbnRvIGRsbHMvbnRkbGwvbG9hZGVyLmMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEWFRuIGZvcm1hdCBoYXMgb2RkIG1pcG1hcCBsZXZlbHMgaW4gdGhhdCB0aGUgc3BhY2UgYWxsb2NhdGVkIGZvcgoJc21hbGwgbGV2ZWxzIG5lZWRzIGEgbG90IG9mIHBhZGRpbmcuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC91dGlscy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUdMIGRvZXNuJ3QgbGlrZSBpbmNvcnJlY3QgbGVuZ3RocyBwYXNzZWQgaW50byBEWFROIHByb2Nlc3NpbmcuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYywgdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJSGFuZGxlIGRlZmF1bHQgbGlua2VyIG91dHB1dCBuYW1lIGluIHdpbmV3cmFwIGluc3RlYWQgb2Ygd2luZWdjYy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglBZGQgcHJpbnRmIGZvcm1hdCBhdHRyaWJ1dGVzICYgZml4IHRoZSB3YXJuaW5ncy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgdm9sdW1lIGFuZCBwYW4gc3VwcG9ydCB0byBwcmltYXJ5IGJ1ZmZlcnMuCglBZGRlZCBtb3JlIHByb3BlcnR5IHNldCBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJ1aWxkIHRoZSBIVE1MIGRvY3VtZW50cyBhcyBvbmUgYmlnIGZpbGUuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVZlcnRleCBzaGFkZXIgb3V0cHV0IGlzIGxpdCBhbmQgdHJhbnNmb3JtZWQsIHNvIHN0b3AgR0wgZG9pbmcgaXQgYWxsCglhZ2Fpbi4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTaW1wbGUgZml4IHRvIGhhbmRsZSB0aGUgbW9yZSBjb21tb24gY2FzZSBvZiBhY3R1YWxseSBoYXZpbmcgYSBHTAoJY29udGV4dCEKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3Byb2Nlc3MuYywKCSAgaW5jbHVkZS93aW5udC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBrZXJuZWwzMi5HZXRJb1Byb2Nlc3NDb3VudGVycyBhbmQgc3R1YmJlZAoJbnRkbGwuTnRRdWVyeVByb2Nlc3NJbmZvcm1hdGlvbihQcm9jZXNzSW9Db3VudGVycykuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQnkgZGVmYXVsdCwgY29uc29sZSBoYW5kbGVzIGFyZSBpbmhlcml0YWJsZS4KCjIwMDMtMDktMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VydmVyLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwKCSAgbWlzYy9yZWdpc3RyeS5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglNb3ZlZCB0aGUgd2luZSBzZXJ2ZXIgY2xpZW50LXNpZGUgc3VwcG9ydCB0byBkbGxzL250ZGxsLiBSZW1vdmVkIGEKCWNvdXBsZSBvZiB1bm5lY2Vzc2FyeSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCU1vdmVkIGEgY291cGxlIG1vcmUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvc2VsZWN0b3IuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2Rvc21lbS5jLCBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIG1zZG9zL2Rvc21lbS5jOgoJTW92ZWQgMTYtYml0IGdsb2JhbCBoZWFwLCBET1MgbWVtb3J5IGFuZCBzZWxlY3RvciBmdW5jdGlvbnMgdG8KCWRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVNldCBkZWZhdWx0IFN0ZEVycm9yIHRvIGZkIDIgKHdhcyBvbiAxKS4KCgkqIHRvb2xzL2JpbjJyZXMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHJld3JpdGUgb2YgYmluMnJlcywgZm9yIGEgY2xlYW5lciBjb2RlYmFzZS4KCUFkZCBvbmxpbmUgaGVscCBkZXNjcmliaW5nIGhvdyB0aGUgcHJvZ3JhbSB3b3Jrcy4KCVNhbml0aXplIGNvbW1hbmQgbGluZSBvcHRpb25zLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUdhYnJpZWxlIEdpb3JnZXR0aSA8Z2FicmllbGUuZ2lvcmdldHRpQHRlYW1mYWIuaXQ+CglGaXggYnVpbGQgd2l0aCBvbGQgbGliYy4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCVJlbW92ZSB0aGUgRkFRIGZyb20gdGhlIGRvYyB0YXJiYWxsLCBhbmQgYnVpbGQgaXQgYXMgYSBzaW5nbGUgLmh0bWwKCWZpbGUgKGJhc2VkIG9uIHBhdGNoIGJ5IERpbWl0cmllIE8uIFBhdW4pLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9zeXNsZXZlbC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYzoKCU1vdmVkIHN5bmNocm9uaXphdGlvbiBhbmQgc3lzbGV2ZWwgcm91dGluZXMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvbW9kdWxlLmM6CglLZWVwIHRoZSBmaWxlIGhhbmRsZSBvZiAxNi1iaXQgbW9kdWxlcyBvcGVuIHdoaWxlIHRoZSBtb2R1bGUgaXMKCWxvYWRlZC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byByZW1vdmUgdGhlIEluc3RhbGxTaGllbGQgaGFjayBpbgoJT3BlbkZpbGUxNi4KCU1vdmVkIExvYWRMaWJyYXJ5MzJfMTYgdG8ga2VybmVsLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gSW1wbGVtZW50ICJtYW5hZ2VkIG1vZGUiIHNldHRpbmcuCgktIE1ha2Ugc3lzdGVtIGNvbG9ycyBzZXR0aW5nIHdvcmsuCgktIERpc2FibGUgREdBIHNldHRpbmcsIGFzIGVuYWJsaW5nIGl0IGJyZWFrcyB3aW5lLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeGVkIGNvbWJvYm94IGZsYWdzIGhhbmRsaW5nIHRvIGFsbG93IENCU19EUk9QRE9XTiBzdHlsZS4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGJsdXJiIGFib3V0IHNvZnQvaGFyZCBkZXBlbmRlbmNpZXMgdG8gdGhlIFBhY2thZ2luZyBHdWlkZSwgYmFzZWQKCW9uIGEgY29udHJpYnV0aW9uIGJ5IFNoYWNoYXIgU2hlbWVzaC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYzoKCU1vdmVkIHRoZSAxNi1iaXQgZW52aXJvbm1lbnQgc3VwcG9ydCB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBmaWxlcy9kb3NfZnMuYzoKCVJlaW1wbGVtZW50ZWQgdGhlIDE2LWJpdCBGaW5kRmlyc3RGaWxlLCBGaW5kTmV4dEZpbGUgYW5kIEZpbmRDbG9zZQoJZnVuY3Rpb25zIG9uIHRvcCBvZiB0aGVpciAzMi1iaXQgY291bnRlcnBhcnQsIGFuZCBtb3ZlZCB0aGVtIHRvCglkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluOgoJTGluayBtc2Rvcy9pbnQyMS5jIGludG8ga2VybmVsIGZvciBub3csIHVudGlsIGl0IGlzIHByb3Blcmx5IG1vdmVkIHRvCgl3aW5lZG9zLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Z4ZC5jOgoJTW92ZWQgVnhEQ2FsbCBzdXBwb3J0IHRvIGRsbHMva2VybmVsLgoKMjAwMy0wOS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3MvcHBkZXYuYywgZGxscy93aW5lZG9zL3RpbWVyLmMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9taXNjZW11LmgsCgkgIG1zZG9zL2RwbWkuYywgbXNkb3MvaW9wb3J0cy5jLCBtc2Rvcy9wcGRldi5jOgoJTW92ZWQgSS9PIHBvcnQgaGFuZGxpbmcgdG8gZGxscy93aW5lZG9zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUmVuYW1lZCB0aGUgQ09NQ1RMMzJfKiBmdW5jdGlvbnMgdG8gdXNlIHRoZSBleHBvcnRlZCBuYW1lLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gQWxsIHNldHRpbmdzIGluIHRoZSBkcml2ZSBlZGl0IGRpYWxvZyBhcmUgbm93IGluc3RhbnQgYXBwbHkuCgktIFJlcGxhY2UgT0svQ2FuY2VsIGJ1dHRvbnMgb24gdGhlIHJpZ2h0IHdpdGggYSBjbG9zZSBidXR0b24gb24gdGhlCgkgIGJvdHRvbS4KCS0gV2FybiB0aGUgdXNlciB3aGVuIGEgQyBkcml2ZSBpcyBub3QgcHJlc2VudC4KCS0gQWRkIGRyaXZlIGZ1bmN0aW9uYWxpdHkgd2lsbCBub3cgYWx3YXlzIGNyZWF0ZSBhIEMgZHJpdmUgaWYgb25lCgkgIGlzbid0IHByZXNlbnQuCgktIE1pc2MgY3Jhc2hlciBmaXhlcy4KCS0gRHJpdmUgbGlzdCBib3ggbm93IHJlZmxlY3RzIGRyaXZlcyB0aGF0IHRha2UgdGhlaXIgZGF0YSBmcm9tIGEKCSAgZGV2aWNlIGNvcnJlY3RseS4KCS0gVmFyaW91cyBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNb3JlIHRlc3RzIGZvciBrZXJuZWwgTkxTIGZ1bmN0aW9ucy4KCVVzZSBMT0NBTEVfTk9VU0VST1ZFUlJJREUgd2hlcmUgYXBwcm9wcmlhdGUuCgoJKiBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmUtaW1wbGVtZW50IGFuZCBvcHRpbWlzZSB0aGUgTkxTIGZvcm1hdHRpbmcgZnVuY3Rpb25zIChtYW55IGZpeGVzKS4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglBdm9pZCBjcmFzaCBpZiBpbnZhbGlkIHJhdGUgd2FzIHNwZWNpZmllZC4KCgkqIGRsbHMvc2V0dXBhcGkvRW4ucmMsIGRsbHMvc2V0dXBhcGkvUnUucmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmM6CglJZ29yIFN0ZXBpbiA8aXNAaXN0dWRpby5ydT4KCUFkZGVkIFJ1c3NpYW4gdHJhbnNsYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLAoJICBkb2N1bWVudGF0aW9uL3ByaW50LmRzbCwgZG9jdW1lbnRhdGlvbi93aW5laHEuZHNsOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdldCByaWQgb2Ygbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnRlZCBtb3VzZSB3aGVlbCBzdXBwb3J0LgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGluY2x1ZGUvbWlzY2VtdS5oOgoJVXNlIFdPV0NhbGxiYWNrMTZFeCB0byBzd2l0Y2ggdG8gdm04NiBtb2RlIHNvIHRoYXQgd2UgY2FuIHNldHVwIGEKCXByb3BlciBleGNlcHRpb24gaGFuZGxlciBhbmQgaGFuZGxlIGluc3RydWN0aW9uIGVtdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBpbmNsdWRlL2NvbW1jdHJsLmg6CglNb3ZlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIG91dCBvZiB0aGUgZXhwb3J0ZWQgY29tbWN0cmwuaC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBBdm9pZCBsaW5raW5nIGVycm9yIHdpdGggb2xkZXIgYWxzYSBsaWJzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX1J1LnJjLCBkbGxzL2tlcm5lbC9ubHMvcnVzLm5scywKCSAgZGxscy93aW5pbmV0L3JzcmMucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X1J1LnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9SdS5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmMsCgkgIHByb2dyYW1zL3N0YXJ0L1J1LnJjLCBwcm9ncmFtcy92aWV3L1J1LnJjLCBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYywKCSAgcHJvZ3JhbXMvd2NtZC9SdS5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCUlnb3IgU3RlcGluIDxpc0Bpc3R1ZGlvLnJ1PgoJQWRkZWQgYSBsb3Qgb2YgUnVzc2lhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3NlcmlhbHVpL0VuLnJjLCBkbGxzL3NlcmlhbHVpL1J1LnJjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjOgoJSWdvciBTdGVwaW4gPGlzQGlzdHVkaW8ucnU+CglBZGRlZCBSdXNzaWFuIHRyYW5zbGF0aW9uLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVkIHN0dWIgZnVuY3Rpb25zIGZvciBhZHZhcGkzMi5HZXRFeHBsaWNpdEVudHJpZXNGcm9tQWNsQS9XKCkuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWlzc2luZyBMRiBpbiB0cmFjZSBtZXNzYWdlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYzogSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgU3BhbmlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9leGNlcHQuYywgZGxscy9rZXJuZWwvZmliZXIuYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgbGlicy93aW5lL2xvYWRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9maWJlci5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBhbG1vc3QgYWxsIHJlbWFpbmluZyBwcm9jZXNzLCB0aHJlYWQsIGZpYmVyIGFuZCBleGNlcHRpb24KCWZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIG1lbW9yeS9pbnN0ci5jOgoJTW92ZWQgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIHRvIGRsbHMva2VybmVsLgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuaCwKCSAgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglNb3ZlZCBvdXQgb2Ygd2luZGVmLmggYSBmZXcgZGVmaW5pdGlvbnMgdGhhdCBkb24ndCBiZWxvbmcgdGhlcmUKCShyZXBvcnRlZCBieSBGaWxpcCBOYXZhcmEpLgoKCSogY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9ub25jbGllbnQuYzoKCVNMT1dPUkQgYW5kIFNISVdPUkQgZG8gbm90IGV4aXN0IG9uIFdpbjMyIChyZXBvcnRlZCBieSBGaWxpcCBOYXZhcmEpLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCVVzZSBuYXRpdmUgbXNpIHVudGlsIG91ciBvd24gaW1wbGVtZW50YXRpb24gd29ya3MgZGVjZW50bHkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBhbm90aGVyIGVycm9yIHVuZGVyIFdpbjl4IChob3BlZnVsbHkpLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnRlZCBTSFNpbXBsZUlETGlzdEZyb21QYXRoIGNvcnJlY3RseS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGVzLgoKMjAwMy0wOS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBNb3JlIHJvYnVzdCBkZXRlY3Rpb24gb2YgY2hhcnNldCBuYW1lcy4KCgkqIGRsbHMva2VybmVsL3N0cmluZy5jLCBkbGxzL250ZGxsL3BhdGguYywgZmlsZXMvZG9zX2ZzLmMsCgkgIG1lbW9yeS9zdHJpbmcuYzoKCU1vdmVkIG1vc3Qga2VybmVsIHN0cmluZyBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvaGVhcC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIG1vc3QgMzItYml0IGhlYXAgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IHJlcXVpcmUgR1VJIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgZXJyb3JzIGluIHdyYXBwZXIuCglMaW5rIHRoZSB3cmFwcGVyIG9ubHkgYWdhaW5zdCBrZXJuZWwgKG5vIGRsLCBtc3ZjcnQsIGV0YykuCglBbGxvdyB0aGUgc2V0dGluZyBvZiB0aGUgYXBwIERMTCB3aGVuIGEgd3JhcHBlciBpcyBjcmVhdGVkLgoKCSogZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW1hZ2VHZXRDZXJ0aWZpY2F0ZURhdGEuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1haWxzbG90IGRlZmluZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCU1vdmVkIFdJTkVfREVGQVVMVF9ERUJVR19DSEFOTkVMIG91dHNpZGUgb2YgdGhlICNpZmRlZi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglFbmFibGUgcmVzb2x1dGlvbiBjaGFuZ2VzIGZvciBvbGRlciBEM0QvRERyYXcgYXBwbGljYXRpb25zLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJRW5hYmxlIHJlc29sdXRpb24gY2hhbmdlcyBmb3IgRDNEOCBhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJLSBBbGxvdyBhcHBsaWNhdGlvbnMgdG8gcmVzaXplIHRoZSBXaW5lIGRlc2t0b3Agd2luZG93LgoJLSBTb21lIGNsZWFudXAgb2YgQ2hhbmdlRGlzcGxheVNldHRpbmdzIGFuZCBmcmllbmRzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9kb3NfZnMuYzoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCS0gVXNlIEhlYXBBbGxvYyBpbnN0ZWFkIG9mIEdsb2JhbEFsbG9jIGluIEZpbmROZXh0RmlsZS4KCS0gQWRkIHRlc3QgZm9yIEZpbmROZXh0RmlsZSB0aGF0IGNoZWNrcyBsYXN0IGVycm9yIHZhbHVlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkZWQgYSBmZXcgdG9kb193aW5lIHRlc3RzIHdpdGggZmlsZW5hbWVzIHdpdGggd2lsZGNhcmRzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJUmVtb3ZlIDxudHN0YXR1cy5oPiB0byBhbGxvdyBjb21waWxhdGlvbiB3aXRoIE1TIFBTREsgaGVhZGVycy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXhlZCBkZWZpbml0aW9ucyBvZiBUVFRPT0xJTkZPQS9XX1YxX1NJWkUgYW5kCglSRUJBUkJBTkRJTkZPQS9XX1YzX1NJWkUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglOb3JtYWxpemUgd2luMjAwMCwgbnQyaywgbnQyMDAwIHRvIHdpbjJrLCBub3JtYWxpemUgd2luMmszIHRvIHdpbjIwMDMKCShzcG90dGVkIGJ5IFZpbmNlbnQgQulyb24pLgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBJbXBsZW1lbnRlZCBhIGZldyBpbmZvcm1hdGlvbiBjbGFzc2VzIGluIE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbi4KCS0gQWRkZWQgaGFuZGxlIGluZm9ybWF0aW9uIHRvICh3aW5lc2VydmVyKSBwcm9jZXNzIHNuYXBzaG90LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgdW51c2VkIFdJTkVfRE9DX1NSQ1MsIGFuZCB0aGUgdXNlbGVzcyBCT09LU19UQVJHRVRTLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IDxkZXZlbG9wQHN0dWViZW4uY29tPgoJVXNlIFN5c0FsbG9jU3RyaW5nQnl0ZUxlbi9TeXNTdHJpbmdCeXRlTGVuIHRvIGNvcHkgQlNUUiB2YXJpYW50cy4KCgkqIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9Gci5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL0ZyLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9Gci5yYywKCSAgcHJvZ3JhbXMvdmlldy9pbml0LmMsIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlcyBmb3IgdmFyaW91cyBGcmVuY2ggcmVzb3VyY2VzLgoKMjAwMy0wOS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2Nsb2NrL0l0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjLCBwcm9ncmFtcy9zdGFydC9JdC5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9JdC5yYywgcHJvZ3JhbXMvdmlldy92aWV3cmMucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkL2ltcHJvdmVkIEl0YWxpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5naW5lZXJpbmcuY29tPgoJTWFrZSBzdXJlIHRoZSBiaW5kIGNvbnRleHQgaXMgZm9yd2FyZGVkIGluCglTaGVsbEZvbGRlcl9QYXJzZURpc3BsYXlOYW1lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmdpbmVlcmluZy5jb20+CglTaWduZWQvdW5zaWduZWQgd2FybmluZ3MgYW5kIHNvbWUgZm9ybWF0dGluZy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5naW5lZXJpbmcuY29tPgoJQWRkZWQgSUZpbGVTeXN0ZW1CaW5kRGF0YSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmdpbmVlcmluZy5jb20+CglTSENoYW5nZU5vdGlmeSBzaG91bGQgdXNlIFNIU2ltcGxlSURMaXN0RnJvbVBhdGggYXMgdGhpcyBmdW5jdGlvbgoJc2hvdWxkIG5vdCBmYWlsIG9uIHBhdGhzIHRoYXQgZG8gbm90IGV4aXN0IGFueW1vcmUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQWRkZWQgYSBzaW1wbGUgVE9ETyBsaXN0LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5oLCBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS93aW5lYWxzYS5kcnYuc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIG1pZGkgc3VwcG9ydCB0byB0aGUgQUxTQSBkcml2ZXIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIHRoZSBtYWlsc2xvdCBzdHVicyBpbnRvIHRoZSBkbGxzL2tlcm5lbCBkaXJlY3RvcnkuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgb2Jzb2xldGUgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCVJlbW92ZSBnZW5lcmF0ZWQgYXNzZW1ibHkgY29kZSBvbiBtYWtlIGNsZWFuLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsCgkgIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIE1vdmVkIFdpbmUgZXh0ZW5zaW9uIHRvIGdldCBEU291bmQgaW50ZXJmYWNlIGZyb20gYSB3YXZlIGRldmljZSBmcm9tCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaCB0byBpbmNsdWRlL21tZGRrLmguCgktIFJlbW92ZWQgYWxsIGRlcGVuZGVuY2llcyBvbiBoZWFwLmguCgktIEZpeGVkIGEgZmV3IHByb3RvdHlwZXMgKG1taW9SZW5hbWVbQVddLCBtY2lTZW5kU3RyaW5nVywgKk1lc3NhZ2UpLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgbm8gbG9uZ2VyIGN1cnJlbnQgaXNzdWVzIGZyb20gdGhlIFdpbmVsaWIgZ3VpZGUuCgoJKiBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSB0aGUgcG9ydGluZyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBiZXR0ZXIgdGVzdHMgZm9yIHZvbHVtZSBhbmQgcGFuLgoJQWRkZWQgY2FwdHVyZSBub3RpZmljYXRpb24gdGVzdC4KCUZpeGVkIGNhcHR1cmUgcXVlcnkgbm90aWZpY2F0aW9uIHRlc3QgYnVnLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURldmljZSBlbnVtZXJhdGlvbiBjYWxsYmFja3Mgc2hvdWxkIHJldHVybiBhIE5VTEwgZ3VpZCBmb3IgZGVmYXVsdAoJZGV2aWNlcy4KCUZpeGVkIHNvbWUgdm9sdW1lIGFuZCBwYW4gY2FzZXMuCglBZGRlZCBtaXNzaW5nIHByb3BlcnR5IHNldC4KCUZpeGVkIGNhcHR1cmUgbm90aWZpY2F0aW9uIGJ1Zy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWZhdWx0LmRzbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCByZWZlcmVuY2UgdG8gJ3N5c3RlbW5hbWUnIGFuZCBhZGRlZCBhIGxpbmsgdG8gd2luc2l0ZSBpbgoJZGVidWdnZXIuc2dtbC4KCVJlbW92ZSBjcnVmdCBmcm9tIGRlZmF1bHQuZHNsLiBBZGQgY29tbWVudHMgZXhwbGFpbmluZyB3aGF0IG91ciBvdGhlcgoJc2V0dGluZ3MgZG8uCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB0aGUgTHljb3MgbGluayAod2hpY2ggZG9lcyBub3QgZXZlbiBwb2ludCB0byBMeWNvcykuIFBvaW50IHRvCglpYmlibGlvLm9yZydzIG1pcnJvcnMgcGFnZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hlY2sgWDExIGVycm9ycyBvbiBlYWNoIFhMb2FkUXVlcnlGb250IGNhbGxzLgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGludGVsbGl3YXJlLmNhPgoJVGVhY2ggd2luZWdjYyB0byBtYXNxdWVyYWRlIGFzIGNwcC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIG1haWxzbG90IGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYzoKCUtldmluIEdyb2VuZXZlbGQgPGtncm9lbmV2ZWxkQG1jbWFzdGVyLmNhPgoJLSBGaXggc21hbGwgYnVnIHdpdGggcGFyc2luZyBvZiBudW1iZXJzIGluIEJ1aWxkQ29tbURDQiBmdW5jdGlvbnMuCgktIEFkZCBjb25mb3JtYW5jZSB0ZXN0IGZvciBCdWlsZENvbW1EQ0IgZnVuY3Rpb25zLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuaCwgZGxscy9kZHJhdy9nbF9hcGkuaCwKCSAgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGQgWkJ1ZmZlciB3cml0ZSBzdXBwb3J0CgktIHNvbWUgVFJBQ0VpbmcgZml4ZXMKCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXNlIGRkcmF3X2dlb20gaW4gdGhlIGV4ZWN1dGUgYnVmZmVyIGNvZGUuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gSW1wbGVtZW50ZWQgSXNIdW5nQXBwV2luZG93LgoJLSBBZGRlZCByZWplY3Rpb24gb2YgaW50ZXJwcm9jZXNzIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gaWNvbnMuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1vdmUgcGFja2V0IGxpbmtlZCBsaXN0IHRhaWwgZm9yd2FyZCBjb3JyZWN0bHkgb24gcHVzaC4KCjIwMDMtMDktMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzA5MTEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDktMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJS2V2aW4gR3JvZW5ldmVsZCA8a2dyb2VuZXZlbGRAbWNtYXN0ZXIuY2E+CglBZGQgbWlzc2luZyB3UmVzZXJ2ZWQxIG1lbWJlciB0byBEQ0Igc3RydWN0dXJlIGRlZmluaXRpb24uCglGaXggc2V2ZXJhbCBidWdzIGluIEJ1aWxkQ29tbURDQkFuZFRpbWVvdXRzOgoJLSBtYWtlIHN1cmUgTFBDU1RSIHBhcmFtZXRlciBpcyByZWFsbHkgdHJlYXRlZCBhcyBjb25zdGFudAoJLSBmaXggcG9zc2libGUgYnVmZmVyIG92ZXJmbG93IGlmIHBhc3NlZCBpbiBzdHJpbmcgaXMgdG9vIGxvbmcKCS0gaWYgdGhlIGRldmljZSBjb250cm9sIHN0cmluZyBpcyBpbnZhbGlkLCBkbyBub3QgbW9kaWZ5IERDQgoJLSBkbyBub3QgY2xlYXIgZW50aXJlIERDQiwgb25seSBtb2RpZnkgYXBwcm9wcmlhdGUgbWVtYmVycwoJLSBmaXggcGFyc2luZyBvZiBzdG9wIGJpdHMgcGFyYW1ldGVyIHNvIGl0IHdvcmtzIGZvciAxIGFuZCAxLjUKCS0gcG9wdWxhdGUgQ09NTVRJTUVPVVRTIHdoZW4gdG89eHh4IHBhcmFtZXRlciBpcyBzcGVjaWZpZWQKCS0gYWRkZWQgc3VwcG9ydCBmb3IgeG9uLCBvZHNyLCBvY3RzLCBkdHIsIHJ0cywgYW5kIGlkc3IgcGFyYW1ldGVycwoJLSBmaXggc2V2ZXJhbCBvdGhlciBwYXJzaW5nIGVycm9ycwoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglIYW5kbGUgLUw8ZGlyPiBpbiBhIHNlcGFyYXRlIGFycmF5LgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIHNvbWUgTU0gaW50ZXJuYWwgZGVmaW5pdGlvbiB0byBpbnRlcm5hbCBpbmNsdWRlIGZpbGVzLgoKCSogd2luZG93cy9kaWFsb2cuYzogS2V2aW4gR3JvZW5ldmVsZCA8a2dyb2VuZXZlbGRAbWNtYXN0ZXIuY2E+CglNb2RpZnkgQ2hlY2tSYWRpb0J1dHRvbiBmdW5jdGlvbiB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBXaW5kb3dzLgoKCSogZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudCBkaXNwYXRjaCB2YXJpYW50IG1hcnNoYWxsaW5nLgoKCSogZGxscy9nbHUzMi9nbHUzMi5zcGVjOiBEYXZlIE1pbGxlciA8Y29tcHNvbEBwdGQubmV0PgoJQWxwaGFiZXRpemVkIHRoZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gTWFrZSBzdXJlIGRyb3Bkb3duIGFycm93IGlzIGFsd2F5cyBjZW50ZXJlZC4KCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSBUQk5SRl9ISURFSEVMUCBjdXN0b21pemF0aW9uIGZsYWcsIGJ1dCBlbWl0IGEKCSAgRklYTUUgd2hlbiBpdCBpc24ndCBwcmVzZW50LgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOgoJU2V0IHRoZSBkbGwgc2VhcmNoIHBhdGggdG8gdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBpbiBjb25maWd1cmUKCShzcG90dGVkIGJ5IFZpbmNlbnQgQulyb24pLgoKCSogaW5jbHVkZS9wb3BwYWNrLmgsIGluY2x1ZGUvcHNocGFjazEuaCwgaW5jbHVkZS9wc2hwYWNrMi5oLAoJICBpbmNsdWRlL3BzaHBhY2s0LmgsIGluY2x1ZGUvcHNocGFjazguaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgY2hlY2tzIGZyb20ge3BvcCxwc2h9cGFja1sxMjQ4XS5oIHRoYXQgd2VyZSBjYXVzaW5nIHRoZQoJc3RhbmRhbG9uZSBwcm9jZXNzb3IgdG8gZmFpbC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNTExvYWRsaWJyYXJ5OiBSZW1vdmUgLW5vbmFtZSBhbmQgZHVwbGljYXRlIGVudHJ5LgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU1lbnRpb24gd2luMmszIHN1cHBvcnQgaW4gdGhlIHNhbXBsZSBjb25maWcgYW5kIGluIHRoZSBmYXEuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3V0aWxzLmMsCgkgIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmMsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVVzZSBhbiBleHRlbmRhYmxlIGFycmF5IHRvIHN0b3JlIHRoZSBsaXN0cyBvZiBzdHJpbmdzLgoJT25seSBtYWtlIHdyYXBwZXIgYXJndW1lbnQgbGlzdHMgaWYgd2UncmUgZ29pbmcgdG8gdXNlIHRoZW0uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVnY2MuYywgdG9vbHMvd2luZWdjYy8uY3ZzaWdub3JlLCB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYywgdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jLCB0b29scy93aW5ld3JhcC5jOgoJTW92ZWQgd2luZWdjYyBhbmQgd2luZXdyYXAgdG8gYSBzZXBhcmF0ZSBkaXJlY3RvcnkuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZW51bW1lZGlhLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgSU1lbUFsbG9jYXRvciBhbmQgSU1lZGlhU2FtcGxlLgoKCSogaW5jbHVkZS93aW5lL2xpc3QuaCwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvbGlzdC5oLCBzZXJ2ZXIvb2JqZWN0LmMsCgkgIHNlcnZlci9vYmplY3QuaDoKCU1vdmVkIGxpc3QuaCB0byBpbmNsdWRlL3dpbmUgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBldmVyeXdoZXJlLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglJbXBsZW1lbnQgPj4gc3R5bGUgKGFwcGVuZCkgb3V0cHV0IHJlZGlyZWN0aW9uLgoKCSogaW5jbHVkZS93aW5nZGkuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRoZSBHZXRbUkdCXVZhbHVlKCkgbWFjcm9zIHNob3VsZCByZXR1cm4gYSBCWVRFLCBub3QgdGhlIHNhbWUgdHlwZSBhcwoJdGhlIG9uZSBwYXNzZWQgaW4uCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJQ2hhbmdlZCBvcmRpbmFsIGZ1bmN0aW9ucyB0aGF0IG5vdyBoYXZlIGEgbmFtZSB0byB1c2UgLW5vbmFtZSBpbnN0ZWFkCglvZiBuYW1lbGVzcyBleHBvcnRzLgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbG0uaCwgaW5jbHVkZS9sbXN0YXRzLmg6CglHZW9mZiBUaG9ycGUgPGdlb2ZmQGdlb2ZmdGhvcnBlLm5ldD4KCUFkZGVkIGEgc3R1YiBmb3IgTmV0U3RhdGlzdGljc0dldC4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywKCSAgZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCURhdmUgTWlsbGVyIDxjb21wc29sQHB0ZC5uZXQ+CglSZW1vdmVkIG9yZGluYWxzIGZyb20gY29tbWVudHMuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWM6IERhdmUgTWlsbGVyIDxjb21wc29sQHB0ZC5uZXQ+CglSZW1vdmUgYWxsIHRoZSBvcmRpbmFscyBhbmQgdXNlIEAgaW5zdGVhZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGluY2x1ZGUvdGxoZWxwMzIuaDoKCUdlb2ZmIFRob3JwZSA8Z2VvZmZAZ2VvZmZ0aG9ycGUubmV0PgoJQWRkZWQgYSBzdHViIGZvciBIZWFwMzJMaXN0Rmlyc3QuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsCgkgIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL3NobHdhcGkvYXNzb2MuYywgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgZGxscy9zaGx3YXBpL3VybC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQ29udmVydCBvcmRpbmFscyB0byB0aGVpciByZWFsIG5hbWVzLgoJLSBQYXJ0aWFsbHkgaW1wbGVtZW50IGEgZmV3IEFzc29jKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb2RpZnkgb2soInh4eCIpIGNhbGxzIGludG8gb2soInh4eFxuIikgYXMgaXMgbm93IGV4cGVjdGVkLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGVkIHRoZSBXaW5lIHBvcnRzIHNlY3Rpb24uCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQWRkZWQgcHRyX19fcHRocmVhZF9jb25kX3RpbWVkd2FpdCBpbiB0aGUgcHRocmVhZF9mdW5jdGlvbnMgc3RydWN0dXJlCgl0byBtYXRjaCB0aGUgbGF0ZXN0IGdsaWJjLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGluY2x1ZGUvd2luZS90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vZGlmeSB3aW5ldGVzdF9vayB0byBvbmx5IGFkZCBhIHRyYWlsaW5nICdcbicgaWYgdGhlcmUgaXMgbm9uZS4KCU1vZGlmeSBtYWNyb3MgaW4gdGhlIGtlcm5lbCwgb2xlYXV0MzIgYW5kIHVzZXIgdGVzdHMgdG8gcHJpbnQgYSAnXG4nLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJVXBkYXRlZCB0aGUgIlRPRE8iIGNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZCBwcm9wZXIgbmFtZXMgdG8gb3JkaW5hbC1vbmx5IGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1J1LnJjOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCVNtYWxsIGdyYW1tYXIgZml4LgoKCSogbXNkb3MvcHBkZXYuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBzcGVsbGluZyBmaXhlcwoJLSBjaGFuZ2Ugb25lIGlsbC1jaG9zZW4gRklYTUUgdG8gRVJSCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglGaXggaW52YWxpZCBDIGNvbnN0cnVjdHMgKHNwb3R0ZWQgYnkgTWFyY3VzIE1laXNzbmVyKS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV2ZXJ0IHNvbWUgd29yZC1zcGxpdHMgdG8gdGhlaXIgbm9ybWFsIGZvcm0sIGUuZy4gSW5zdGFsbFNoaWVsZC4KCUZpeCBjYXNlIG9mIFRyYW5zR2FtaW5nIGluIHR3byBwbGFjZXMuCglGaXggdGhlIFVSTCB0byBkb3Nmcy4KCgkqIGRsbHMvcXVhcnR6L3ZlcnNpb24ucmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU2V0IHZlcnNpb24gdG8gOC4xLgoKMjAwMy0wOS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IEFkZGVkIGR1bXBpbmcgb2YgbWVzc2FnZSB0YWJsZSByZXNvdXJjZXMuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLAoJICBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsCgkgIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLAoJICBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsCgkgIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvdXNlci9jb250cm9scy5oLAoJICBkbGxzL3VzZXIvZGlhbG9nMTYuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3Jlc291cmNlLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglSZW1vdmVkIHRoZSBBL1cgY29uc3RhbnRzIGZvciBidWlsdGluIGN1cnNvcnMsIGljb25zIGFuZCByZXNvdXJjZQoJdHlwZXMgc2luY2UgdGhleSBkb24ndCBleGlzdCBvbiBXaW5kb3dzLCBhbmQgYWRkZWQgdHlwZWNhc3RzCglldmVyeXdoZXJlIGluc3RlYWQuCgoJKiB0b29scy93cmMvdXRpbHMuYzogU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJUG9ydGFiaWxpdHkgZml4IGZvciBsYW5ndWFnZSBpZHMuCgoJKiBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywgcHJvZ3JhbXMvd2luaGVscC9XYS5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglDb21waWxlIFdhbG9uIHJlc291cmNlcyBvbmx5IGlmIExBTkdfV0FMT04gaXMgZGVmaW5lZC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBCdWdmaXhlcyB0byB0aGUgdHJhbnNhY3Rpb24gc3lzdGVtLgoJLSBCZXR0ZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGluY29tcGxldGUgY29uZmlnIHNlY3Rpb25zLgoJLSBJbXBsZW1lbnQgIkFkZCBEcml2ZSIuCgktIFBhcnRseSByZWFjdGl2YXRlIGVkaXQgZHJpdmUgZGlhbG9nLgoKMjAwMy0wOS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLCBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywKCSAgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9naXQuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGVvYmouYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaWRsOgoJRml4ZWQgYSBmZXcgbW9yZSBoZWFkZXJzIGRlcGVuZGVuY3kgaXNzdWVzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Nob2JqaWRsLmgsCgkgIGluY2x1ZGUvc2hvYmppZGwuaWRsLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcGhlbHBlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJQ29udmVydGVkIHRoZSByZXN0IG9mIHRoZSBvYmpfKi5oIGhlYWRlcnMgdG8gSURMIGludG8gc2hvYmppZGwuaWRsLgoKCSogaW5jbHVkZS93aW5udC5oOgoJU29tZSBTVEFUVVNfKiBkZWZpbmVzIGhhdmUgdG8gYmUgZHVwbGljYXRlZCBpbiB3aW5udC5oLgoKMjAwMy0wOS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY3J5cHQzMi9tYWluLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmMsIGRsbHMva2VybmVsL3N0cmluZy5jLAoJICBkbGxzL2tlcm5lbC9ubHMvKi5ubHMsIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywgZGxscy9tcHIvcHdjYWNoZS5jLCBkbGxzL21zaS9kaXN0aW5jdC5jLAoJICBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS93aGVyZS5jLAoJICBkbGxzL21zaXN5cy9tc2lzeXMuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oLCBkbGxzL29sZTMyL29sZTMycmVzLnJjLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0MTYuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zdGkvc3RpX21haW4uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwKCSAgZGxscy93aW5pbmV0L3Jlc291cmNlLmgsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Fbi5yYywgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9iciwKCSAgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGRlLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsIHRvb2xzL2J1Z19yZXBvcnQucGwsCgkgIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvd2luZWR1bXAvY3ZpbmNsdWRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgY2FzZSBvZiBwcm9kdWN0IGFuZCBjb21wYW55IG5hbWVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9kb2N1bWVudC5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gaW5pdGlhbCAobW9zdGx5IHN0dWIpIGltcGxlbWVudGF0aW9uIG9mIE1TSFRNTC5ETEwuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBSZW1vdmVkIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlLCBhbGwgY2hhbmdlcyBhcmUKCSAgY29tbWl0dGVkIGluc3RhbnRseSBub3cuCgktIFVwZGF0ZWQgdGhlIGRyaXZlIGhhbmRsaW5nIGNvZGUgc28gaXQgbG9hZHMgZGlyZWN0IGZyb20gdGhlCgkgIHJlZ2lzdHJ5LgoJLSBSZW1vdmVkIERSSVZFX0RFU0MsIGRyaXZlcyBhcmUga2V5ZWQgYnkgZHJpdmUgbGV0dGVyIG5vdy4KCS0gRG9jdW1lbnRlZCBkcml2ZV9hdmFpbGFibGVfbWFzay4KCS0gU2ltcGxpZmllZCB0aGUgY29kZSBzb21ld2hhdC4KCgkqIHNlcnZlci9wcm90b2NvbC5kZWY6CglGaXhlZCBpbmNsdWRlIHN0YXRlbWVudHMgdG8gbWF0Y2ggc2VydmVyX3Byb3RvY29sLmggKHNwb3R0ZWQgYnkgRXJpYwoJUG91ZWNoKS4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCU9uIFRsc0ZyZWUsIGNsZWFyIHRoZSByZWxlYXNlZCBUTFMgaW5kZXggaW4gYWxsIHRocmVhZHMuCgoJKiBkbGxzL2lwaGxwYXBpL01ha2VmaWxlLmluLCBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpLnNwZWMsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBGaXggYnVmZmVyIG92ZXJydW4gaW4gR2V0TmV0d29ya1BhcmFtcy4KCS0gSW1wbGVtZW50IEdldEJlc3QoUm91dGUsSW50ZXJmYWNlKS4KCS0gSW1wbGVtZW50IHNvbWUgQWxsb2NhdGVBbmRHZXQqRnJvbVN0YWNrIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBSZW1vdmUgIlBlcmZlY3RHcmFwaGljcyIsICJVc2UgWFNITSBleHRlbnNpb24iLCBhbmQgIlVzZSBhIHByaXZhdGUKCSAgY29sb3VyIG1hcCIuCgktIEltcGxlbWVudCBhIHNpbXBsZSB0cmFuc2FjdGlvbiBzeXN0ZW0gZm9yIGluc3RhbnQgYXBwbHkuCgktIENvbXBsZXRlIHRoZSBkZXNrdG9wIHNpemUgY29kZSwgdGhpcyBub3cgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUKCSAgcmVnaXN0cnkgY29ycmVjdGx5LgoJLSBSZW1vdmUgY29uc3QgbW9kaWZpZXIgZnJvbSB2ZXJzaW9uIGFjY2Vzc29yIGZ1bmN0aW9ucy4KCS0gQ2hhbmdlIHJlZ2lzdHJ5IHJvb3QgdG8gV2luZS9XaW5lQ2ZnIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgoKCSogZGxscy9jYWJpbmV0L2ZkaS5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBIGZldyBzcGVsbGluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+Cgl3aW5laW5zdGFsbCB1c2VkIGEgVW5peC1zdHlsZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgdGVtcG9yYXJ5Cgljb25maWcgZmlsZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1J1LnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUFkZGVkIFJ1c3NpYW4gcmVzb3VyY2VzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUZpeCBGcmVuY2ggdHJhbnNsYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJTW9kaWZ5IHRoZSB3aW5lc2VydmVyIGRvY3VtZW50YXRpb24gZm9yIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlIHNvY2tldAoJYW5kIGFkZCBhIHdhcm5pbmcuCgoJKiBtZW1vcnkvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjb21waWxlIHdhcm5pbmcuCgoJKiBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYzogRGF2ZSBNaWxsZXIgPGNvbXBzb2xAcHRkLm5ldD4KCUZpeCBpbmNvcnJlY3Qgb3JkaW5hbHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ2hhbmdlIHBhcmFtZXRlciBpbiBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQS9XIHRvIGludCBhcyBkb2N1bWVudGVkIGluCglNU0ROLgoJQWRkIHNvbWUgbW9yZSBkZWZpbml0aW9ucyBhbmQgbW92ZSBTSEdldERlc2t0b3BGb2xkZXIoKSBmcm9tCgl3aW5lL29ial9zaGVsbGZvbGRlci5oIHRvIGhlcmUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgcHJvcGVyIHN0dWIgZm9yIG9sZWF1dDMyLlZhck1vZC4KCjIwMDMtMDktMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgc2VydmVyL3JlZ2lzdHJ5LmM6CglBZGRlZCBhIGZldyBtaXNzaW5nIHN0ZGFyZy5oIGluY2x1ZGVzLgoKMjAwMy0wOS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglBZGRlZCBhIG1pc3NpbmcgZGVwZW5kZW5jeSBmb3IgdGVzdGxpc3QuYyBmaWxlcy4KCgkqIGRsbHMvb2xlMzIvZGNvbS5oOiBSZWdlbmVyYXRlZCB3aXRoIHRoZSBsYXRlc3Qgd2lkbC4KCjIwMDMtMDktMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyouYywgaW5jbHVkZS8qLmg6CglGaXhlZCBoZWFkZXIgZGVwZW5kZW5jaWVzIHRvIGJlIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCB0aGUgV2luZG93cwoJaGVhZGVycyAod2l0aCBoZWxwIGZyb20gRGltaXRyaWUgTy4gUGF1bikuCgoyMDAzLTA5LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NobGd1aWQuaCwKCSAgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3Nob2JqaWRsLmlkbCwKCSAgaW5jbHVkZS9zaHR5cGVzLmgsIGluY2x1ZGUvc2h0eXBlcy5pZGwsCgkgIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3Lmg6CglJbXBsZW1lbnRlZCBzaHR5cGVzLmlkbCBhbmQgc2hvYmppZGwuaWRsIGFuZCByZW1vdmVkIGEgZmV3IG1vcmUKCXdpbmUvb2JqXyogaGVhZGVycy4KCgkqIGluY2x1ZGUvZGJnaGVscC5oLCBpbmNsdWRlL2RpZ2l0YWx2LmgsIGluY2x1ZGUvd2luaW9jdGwuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmVkIG5vbi1zdGFuZGFyZCBoZWFkZXIgaW5jbHVkZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGp1c3Qgc2VsZWN0aW9uIHJhbmdlcyBiZWZvcmUgd2UgaW5zZXJ0IHRoZSBpdGVtIHNvIHdlIGRvbid0IG1peCB0aGUKCW5ldyBzZWxlY3Rpb24gd2l0aCB0aGUgZXhpc3Rpbmcgb25lcyAocmVwb3J0ZWQgYnkgRXJpYyBQb3VlY2gpLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9leGRpc3AuaCwKCSAgaW5jbHVkZS9leGRpc3AuaWRsLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaCwgbGlicy91dWlkL3V1aWQuYzoKCUNvbnZlcnRlZCBvYmpfd2ViYnJvd3Nlci5oIHRvIElETCBhbmQgbW92ZWQgdGhlIGRlZmluaXRpb25zIHRvCglleGRpc3AuaWRsIHdoZXJlIHRoZXkgYmVsb25nLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9kb2NvYmouaWRsOgoJQ29udmVydGVkIGRvY29iai5oIHRvIElETC4KCgkqIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwKCSAgaW5jbHVkZS9vbGVjdGwuaDoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBpbmNsdWRlIHByb3RlY3Rpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IG1vZExvbmdEYXRhLgoJRW5hYmxlIG9wZW5pbmcgb2YgTU9EX1NZTlRIIHR5cGUgZGV2aWNlcy4KCUFkZCBzb21lIGNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglVcGRhdGVkIG1pbm9yIHZlcnNpb24gbnVtYmVyLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29haWRsLmlkbCwKCSAgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29jaWRsLmlkbCwgaW5jbHVkZS9vbGVpZGwuaCwKCSAgaW5jbHVkZS9vbGVpZGwuaWRsLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaDoKCUNvbnZlcnRlZCBvY2lkbC5oIHRvIElETC4KCjIwMDMtMDktMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGwsCgkgIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUNvbnZlcnRlZCB1cmxtb24uaCB0byBJREwuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc2VydnByb3YuaWRsOgoJQ29udmVydGVkIHNlcnZwcm92LmggdG8gSURMLgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaWRsLCBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oOgoJQ29udmVydGVkIG9sZWlkbC5oIHRvIElETC4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUFkZGVkIHBhcnRpYWwgc3VwcG9ydCBmb3IgZnVuY3Rpb24gcG9pbnRlcnMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL2NvbWNhdC5pZGwsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29tY2F0LmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWd1aWQuaDoKCUNvbnZlcnRlZCBjb21jYXQuaCB0byBJREwuCgoJKiBpbmNsdWRlL29iamlkbC5oLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3dpZGwuYzoKCVVzZSA8PiBmb3JtYXQgaW4gZ2VuZXJhdGVkICNpbmNsdWRlIHN0YXRlbWVudHMuCglJbnRlZ2VyIGNvbnN0YW50cyBzaG91bGQgYmUgdW5zaWduZWQuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIHRoZSBkcml2ZXJzIHRvIGdldCBkZXZpY2UgY2FwYWJpbGl0aWVzIGFuZCBwcm9wZXJ0eSBzZXRzLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRm9yd2FyZCBhbGwgYXJndW1lbnRzIHRvIGdjYyB3aGVuIHdlIGhhdmUgbm8gaW5wdXQgZmlsZXMuCglLaWxsIHRoZSAtViBvcHRpb24sIGFzIGl0J3Mgbm90IGNvbXBhdGlibGUgd2l0aCBnY2MuCglGaXggc2lsbHkgYnVnIHdoZW4gd2UgYXJlIG5vdCBnaXZlbiBhbiBvdXRwdXQgbmFtZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvcHRocmVhZC5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwgbGlicy93aW5lL2xvYWRlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvcHRocmVhZC5jOgoJTW92ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwdGhyZWFkIHdyYXBwZXJzIHRvIGRsbHMva2VybmVsLgoKCSogZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVVzZSBET1Mgc3R5bGUgdmFyaWFibGVzIGluIHRoZSBHZXJtYW4gZG9jdW1lbnRhdGlvbiBvZiB0aGUgY29uZmlnCglmaWxlLgoKCSogZGxscy9nZGkvbWZkcnYvaW5pdC5jOgoJQXZvaWQgaGVhcCByZWFsbG9jYXRpb24gZWFjaCB0aW1lIGEgbWV0YXJlY29yZCBpcyB3cml0dGVuIGluIG1lbW9yeQoJKGJhc2VkIG9uIGEgcGF0Y2ggYnkgV2FycmVuIEJhaXJkKS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9vYmpfc2VydmljZXByb3ZpZGVyLmg6CglBdm9pZCBpbmNsdWRpbmcgd2luZS9vYmpfKi5oIGZpbGVzIGRpcmVjdGx5IGZyb20gQyBmaWxlcy4KCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgb2JqX3NlcnZpY2Vwcm92aWRlci5oLgoKCSogZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBpbmNsdWRlL3NobG9iai5oLCBsaWJzL3V1aWQvdXVpZC5jOgoJc2hsb2JqLmggbXVzdCBpbmNsdWRlIHdpbmUvb2JqX2RyYWdkcm9waGVscGVyLmggKHJlcG9ydGVkIGJ5IE1hcnRpbgoJRnVjaHMpLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQ2hhbmdlZCBzb21lIGZ1bmN0aW9ucyB0byByZXNldCBDRkxBRyBvbiBzdWNjZXNzLgoJQWRkZWQgc29tZSB0cmFjZXMuCgoyMDAzLTA5LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogS2V2aW4gR3JvZW5ldmVsZCA8a2dyb2VuZXZlbGRAbWNtYXN0ZXIuY2E+CglDaGFuZ2UgZGVmYXVsdCByYW5nZSBvZiB1cC1kb3duIGNvbnRyb2wgdG8gbWF0Y2ggcmFuZ2UgdXNlZCBpbgoJd2luZG93LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIFBhdGggY2hhbmdlcyBhcmUgc2F2ZWQgdG8gdGhlIHN0cnVjdCBjb3JyZWN0bHkuCgktIFJlbmFtZSBlbmFibGVfY2Ryb21fYm94IHRvIGVuYWJsZV9sYWJlbHNlcmlhbF9ib3ggdG8gYmV0dGVyIHJlZmxlY3QKCSAgcHVycG9zZS4KCS0gUmVuYW1lIElEQ19CT1hfQ0RST00gdG8gSURDX0JPWF9MQUJFTFNFUklBTC4KCS0gU3VwcG9ydCBmb3IgZWRpdGluZyBsYWJlbCBmb3IgYWxsIGRyaXZlcywgYWxsb3cgZWRpdGluZyBvZgoJICBzZXJpYWwvZGV2aWNlIGZvciBDRC1ST01TLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglNZXJnZSBmcm9tIGxvc3R3YWdlcyBmYXEuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJRml4IHRlc3RpbmcgZXhhbXBsZS4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCcmluZyBkb2N1bWVudGF0aW9uIGluIHN5bmMgcmVnYXJkaW5nIGV4cGFuc2lvbiBvZiBlbnZpcm9ubWVudAoJdmFyaWFibGVzIGluIHRoZSBjb25maWcgZmlsZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCcmluZyB3aW5laW5zdGFsbCBpbiBzeW5jIHJlZ2FyZGluZyBleHBhbnNpb24gb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzCglpbiB0aGUgY29uZmlnIGZpbGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGJnaGVscC5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIFF1ZXJ5RG9zRGV2aWNlIGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTWFrZSB0aGUgZGlmZmVyZW50IGhlbHBlciBmdW5jdGlvbnMgYWxsIHJldHVybiBhY3R1YWwgZXJyb3IgY29kZXMuCglBdm9pZCBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gQU5TSSBhbmQgVW5pY29kZSB2YXJpYW50IG9mIHRob3NlCglmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJX3dzX2dldGhvc3RieW5hbWUoKSBhbmQgV1NBQXN5bmNHZXRIb3N0QnlOYW1lKCkgd2hlbiBjYWxsZWQgd2l0aCBhCgludWxsIG5hbWUsIHNob3VsZCB1c2UgdGhlIG5hbWUgcmV0dXJuZWQgYnkgZ2V0aG9zdG5hbWUoKS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBJbXBsZW1lbnRlZCBzZW1pLXN0dWJzIGZvciBHZXRPcGVuRmlsZU5hbWVQcmV2aWV3QS9XIGFuZAoJICBHZXRTYXZlRmlsZU5hbWVQcmV2aWV3QS9XIGJhc2VkIG9uIEdldE9wZW5GaWxlTmFtZSBkaWFsb2cgaW4KCSAgQ09NRExHMzIuRExMIC0gc3RpbGwgbXVzdCBhZGQgT0ZOX0VOQUJMRUhPT0sgYW5kIGl0J3MgaGFuZGxlci4KCS0gSW1wbGVtZW50ZWQgSUNDb21wcmVzc29yRnJlZS4KCS0gUHJlcGFyZWQgSUNDb21wcmVzc29yQ2hvb3NlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVjbGFyZSBMUENJVEVNSURMSVNUIGFzICdjb25zdCcgcG9pbnRlciBhbmQgYWRqdXN0IHNoZWxsMzIKCWltcGxlbWVudGF0aW9uIHRvIHRoZSBjb3JyZWN0ZWQgdHlwZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMy5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJaW50MzMgMjFoIGlzIGlkZW50aWNhbCB0byBpbnQzMyAwMGguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9saW1pdHMuaCwgaW5jbHVkZS9tc3ZjcnQvbWF0aC5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkZWQgbXN2Y3J0IGhlYWRlcnMgbGltaXRzLmggYW5kIG1hdGguaC4KCgkqIHByb2dyYW1zL3dpbmVsYXVuY2hlci5pbjogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ2hhbmdlIGFsbCBoZWFkIC0xIHRvIGhlYWQgLW4gMSB0byBiZSBtb3JlIFBPU0lYbHkgY29tcGxpYW50LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRlZCBUQUJfU2V0TWluVGFiV2lkdGggYW5kIFRBQl9IaWdobGlnaHRJdGVtLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglOb3cgdGhhdCByZWZlcmVuY2UgY291bnRpbmcgaXMgY29ycmVjdCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBpZgoJdGhlIGJhc2Ugb2JqZWN0IGdvZXMgYXdheS4KCgkqIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXhlZCBidWcgcGFyc2luZyAvcHJvYy9uZXQvYXJwIGZvciBhcnAgdGFibGUuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIGFycCB0YWJsZSBxdWVyeWluZyB0aHJvdWdoIFdzQ29udHJvbCwgYW5kIGZpeGVkIHByb2JsZW0gSQoJaW50cm9kdWNlZCBnZXR0aW5nIElQIGFkZHJlc3NlcyBmb3IgbXVsdGlwbGUgaW50ZXJmYWNlcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGluY2x1ZGUvdmZ3Lmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gSW1wbGVtZW50ZWQgQVZJU3RyZWFtQmVnaW5TdHJlYW1pbmcgYW5kIEFWSVN0cmVhbUVuZFN0cmVhbWluZy4KCS0gRml4ZWQgbG9hZGluZyBvZiBlbXB0eSBBVkkgZmlsZXMuCgktIEZpeGVkIGJ1ZyBpbiBJR2V0RnJhbWUgaW50ZXJmYWNlIHdpdGggdW5jb21wcmVzc2VkIHN0cmVhbXMuCgktIEZpeGVkIG1pc3NpbmcgSUNPTV9ERUZJTkUgZm9yIElBVklTdHJlYW1pbmcuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBGb3JtYXRNZXNzYWdlIHdoZW4gRk9STUFUX01FU1NBR0VfRlJPTV9ITU9EVUxFIGlzIHNwZWNpZmllZCBhbmQKCWxwU291cmNlIGlzIE5VTEwuICBNYWtlIGluZGVudGluZyBjb25zaXN0ZW50IHRvby4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglVc2UgYSBkdW1teSBHTCBjb250ZXh0IGlmIG9uZSBpcyBub3QgYXZhaWxhYmxlIHdoZW4gR2V0RGV2aWNlQ2FwcyBpcwoJY2FsbGVkLgoJUmVtb3ZlIHRoZSBjb21waWxlciB3YXJuaW5ncyBpbnRyb2R1Y2VkIGluIHRoZSBsYXN0IERYVG4gcGF0Y2guCgoJKiBkbGxzL3dpbmVkb3MvaW50MjAuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIERPUyBwcm9jZXNzIGV4aXQgdXNpbmcgRXhpdFByb2Nlc3MgaW5zdGVhZCBvZiBFeGl0VGhyZWFkLgoJTWFrZSBjYWxsaW5nIERPUyBleGl0IGZ1bmN0aW9ucyBmcm9tIERQTUkgZWl0aGVyIHJldHVybiB0byBTdGFydFBNIG9yCglwcmludCBlcnJvciBtZXNzYWdlIGlmIG5vdCBhbGxvd2VkIGJ5IERQTUkgc3BlY2lmaWNhdGlvbi4KCjIwMDMtMDktMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW46IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1vcmUgdGVzdHMgYW5kIHJlc3RydWN0dXJlZCB0ZXN0cyBmb3IgZWFzaWVyIGRlYnVnZ2luZy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLAoJICBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgU2Vjb25kYXJ5QnVmZmVyIGFuZCBEaXJlY3RTb3VuZENhcHR1cmVOb3RpZnkgQ09NIG9iamVjdHMgdG8gZ2V0CglyZWZlcmVuY2UgY291bnRpbmcgcmlnaHQuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhIGZldyBzdHViIGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOgoJRG9uJ3Qgc3RyaXAgdGhlIHBhdGggaW4gTG9hZE1vZHVsZTE2IGJlZm9yZSB3ZSBoYXZlIG9wZW5lZCB0aGUgZmlsZQoJKHJlcG9ydGVkIGJ5IEp1a2thIEhlaW5vbmVuKS4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMgRU9JIFBJQyBjb21tYW5kLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSWYgd2UgZG9uJ3Qgc2VuZCBjdXN0b20gZHJhdyBtZXNzYWdlcyBmb3Igc3ViaXRlbXMsIGluaGVyaXQgdGhlIGNvbG9yCgkmIHRleHQgYXR0cmlidXRlcyBvZiB0aGUgbWFpbiBpdGVtLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgSUNPTl9TTUFMTDIgYW5kIFNob3dXaW5kb3dBc3luYygpLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIFRCSUZfQllJTkRFWC4KCjIwMDMtMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglNYXJrIFdlc3Rjb3R0IDxtYXJrQGhvdXNlb2ZmaXNoLm9yZz4KCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gTWVyZ2UgZHJpdmUgY29kZSBmcm9tIE1hcmsuCgktIFJlbmFtZSBzYXZlWDExRHJ2RGxnU2V0dGluZ3MgdG8gZmV0Y2hYMTFEcnZEbGdTZXR0aW5ncy4KCS0gTWFrZSB0aGUgbGlzdGJveCBkaXNwbGF5IGRyaXZlIHRpdGxlLCBub3QgbGV0dGVyLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNYXJrIFdlc3Rjb3R0IDxtYXJrQGhvdXNlb2ZmaXNoLm9yZz4KCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gUmVuYW1lIGhTZXNzaW9uIHRvIGNvbmZpZ0tleS4KCS0gTWFrZSB0aGUgY29uZmlnIHN0cnVjdCBhIGdsb2JhbCwgcmVuYW1lIHRvICJjb25maWciLgoJLSBDb3JyZWN0IGJ1ZyBpbiBPSy9DYW5jZWwgaGFuZGxpbmcuCgktIE1lcmdlIFgxMURSViBkaWFsb2cgY29kZSBmcm9tIE1hcmsuCgktIEFkZCBuZXdsaW5lIHRvIHRoZSBpbml0aWFsIEZJWE1FLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gQ29ycmVjdCByZXR1cm4gY29kZSBvZiBsb2FkQ29uZmlnKCkuCgktIE1ha2UgdGhlIHJlZ2lzdHJ5IGtleSB1c2VkIGEgY29uc3RhbnQuCgktIE1hZGUgY29kZSBzbGlnaHRseSBtb3JlIGNvbnNpc3RhbnQgd2l0aCBpdHNlbGYuCgktIFNvbWUgc3R5bGUgY2hhbmdlcywgZXhwYW5kaW5nIG91dCB2YXJpYWJsZSBuYW1lcywgd2hpdGVzcGFjZSwKCSAgcmVtb3ZpbmcgdW5uZWNlc3NhcnkgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIGFuZCBodW5nYXJpYW4gbm90YXRpb24gZXRjLgoJLSBSZXBsYWNlIGRpYWxvZyBib3ggd2l0aCBhIEZJWE1FIGluIFdpbk1haW4oKSB0byB3YXJuIG9mCgkgIGluY29tcGxldGVuZXNzLgoJLSBJbXBsZW1lbnQgc2F2ZUNvbmZpZ1ZhbHVlKCkuCgktIEhvb2sgdXAgc3VwcG9ydCBmb3Igc2F2ZS9sb2FkIG9mIFdpblZlci4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvU2kucmMsIHByb2dyYW1zL3N0YXJ0L0VuLnJjLCBwcm9ncmFtcy9zdGFydC9QdC5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmM6CglSZW1vdmVkIHdyb25nIG9yIHVubmVlZGVkIGNvZGVwYWdlIHByYWdtYXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wcm92ZSBzb21lIHBhcmFtZXRlciBjaGVja2luZyBpbiBXU0FJb2N0bAoJLSBmaXggYSBtZW1vcnkgbGVhayBJIGludHJvZHVjZWQgaW4gV1NBSW9jdGwKCgkqIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgU2VsZWN0UGFsZXR0ZSBhbmQgUmVhbGl6ZVBhbGV0dGUgaW4gdGhlIG1ldGFmaWxlCglkcml2ZXIuCgoJKiBkbGxzL2dkaS9tZmRydi9kYy5jOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglTYXZlIHRoZSBleHQgYWxpZ25tZW50IGluZm9ybWF0aW9uIGluIGEgOC1ieXRlcyBtZXRhcmVjb3JkIGFzIGl0CglzaG91bGQgYmUuCgoyMDAzLTA4LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL2xvYWRlci5jLCBsaWJzL3dpbmUvcG9ydC5jLAoJICBzY2hlZHVsZXIvZmliZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUV4cG9ydCBTWVNERVBTX1N3aXRjaFRvVGhyZWFkU3RhY2soKSBmdW5jdGlvbmFsaXR5IGZyb20gbGlid2luZSBhcwoJd2luZV9zd2l0Y2hfdG9fc3RhY2soKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1NpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2kucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9TaS5yYywgZGxscy93aW5tbS93aW5tbV9TaS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svU2kucmMsIHByb2dyYW1zL2NtZGxndHN0L1NpLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL25vdGVwYWQvU2kucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vU2kucmMsIHByb2dyYW1zL3N0YXJ0L1NpLnJjLCBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLAoJICBwcm9ncmFtcy92aWV3L1NpLnJjLCBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYywgcHJvZ3JhbXMvd2NtZC9TaS5yYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmVtaW5lL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglNaW5vciB1cGRhdGVzIG9mIFNsb3ZlbmlhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wcm92ZSBXc0NvbnRyb2wgZXJyb3IgY2hlY2tpbmcKCS0gbWFrZSBXc0NvbnRyb2wgb3V0cHV0IG1vcmUgY2xvc2VseSBtYXRjaCBXaW45OCdzCgktIGRvY3VtZW50IFdzQ29udHJvbCBiZWhhdmlvciBhIGJpdCBiZXR0ZXIKCgkqIGRsbHMvd2luZWRvcy9pbnQzMy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXb3JrYXJvdW5kIGltcGxlbWVudGVkIGZvciBwYXNzaW5nIGZha2VkIG1pY2tleXMgdG8gbW91c2UgY2FsbGJhY2sKCXJvdXRpbmUuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFsbG93IGFwcGxpY2F0aW9uIHRvIHVzZSBWR0Egd2luZG93IHRoYXQgb3ZlcmxhcHMgZnJhbWVidWZmZXIgb25seQoJcGFydGlhbGx5LgoKCSogZGxscy9tc2kvbXNpLnNwZWM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUZpeGVkIHRoZSBlcnJvciBtZXNzYWdlIGluIFdhdmUoSW58T3V0KUluaXQsIGl0IHVzZWQgdG8gZ2l2ZSBhCgljb25mdXNpbmcgbWVzc2FnZSwgbm93IHVzZXMgc3RyZXJyb3IuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNoYW5nZSBwcm90b3lwZSBvZiBTSENoYW5nZU5vdGlmeVJlZ2lzdGVyIHRvIHdoYXQgTVNETiBzYXlzLgoJUmVtb3ZlIGFuIHVuc2lnbmVkIG1pc21hdGNoIHdhcm5pbmcuCgoJKiBkbGxzL250ZGxsL250LmM6IEpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCVNldCBTRV9HUk9VUF9FTkFCTEVEIGluIEF0dHJpYnV0ZXMgb2YgQWRtaW5pc3RyYXRvcnMgU0lEIGR1cmluZwoJTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4gZm9yIFRva2VuR3JvdXBzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQXZvaWQgZGl2aXNpb24gYnkgemVybyB3aGVuIHRoZSBpbWFnZWxpc3QgaXMgY3JlYXRlZCB3aXRoIGEgd2lkdGggb2YKCXplcm8gKGllIG5vIGltYWdlcykuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmdpbmVlcmluZy5jb20+CglNYWtlIHN1cmUgdGhlIHBhc3NlZCBpbiBvYmplY3QgcG9pbnRlciBpcyBvbmx5IGFkZHJlZmVkIG9uIHN1Y2Nlc3MuCgoyMDAzLTA4LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6IFdhcm5pbmcgZml4LgoKCSogaW5jbHVkZS8qLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIGFuZ2xlIGJyYWNrZXRzICg8PikgcmF0aGVyIHRoYW4gcXVvdGVzICgiIikgZm9yIHRoZSBpbmNsdWRlCglkaXJlY3RpdmVzIGluIG91ciAuaCBmaWxlcy4gVGhpcyBzaG91bGQgYXZvaWQgc29tZSBwb3RlbnRpYWxseSBuYXN0eQoJc3VycHJpc2VzIGZvciBXaW5lbGliIGFwcHMuCgoJKiBkbGxzL2tlcm5lbC9jaGFuZ2UuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGluY2x1ZGUvYXN5bmMuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIGxvYWRlci9tb2R1bGUuYywgbWVtb3J5L2Vudmlyb24uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVN0YXJ0IHVzaW5nIHRoZSBleHBvcnRlZCBURUIgc3RydWN0dXJlIGZyb20gd2ludGVybmwuaCB3aGVyZQoJcG9zc2libGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50ZWQgYSB0eXBlbGliIGxvYWRlciBjYWNoZS4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUFkZGVkIENvRGlzY29ubmVjdE9iamVjdCBhbmQgQ29SZWdpc3Rlck1lc3NhZ2VGaWx0ZXIgcHJvdG90eXBlcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IERvbid0IHVzZSBhbGxvY2EuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUZpeGVkIGEgY29tcGlsZSBlcnJvci4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzcGVha2VyIGNvbmZpZyBtYWNyb3MuCgoJKiBpbmNsdWRlL3V1aWRzLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBDTFNJRF9IVE1MRG9jdW1lbnQuCgoJKiBpbmNsdWRlL3VybG1vbi5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgdGhlIElQZXJzaXN0TW9uaWtlciBpbnRlcmZhY2UuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zeXNkZXBzLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9maWJlci5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJUmVuYW1lZCBhIGZldyBtb3JlIFRFQiBmaWVsZHMuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuYywKCSAgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmgsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOgoJUmVuYW1lZCBFWENFUFRJT05fRlJBTUUgdG8gRVhDRVBUSU9OX1JFR0lTVFJBVElPTl9SRUNPUkQgc2luY2UgdGhhdAoJc2VlbXMgdG8gYmUgdGhlIG9mZmljaWFsIG5hbWUuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQWRkZWQgbWlzc2luZyBmdW5jdGlvbnMgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IGJ1aWxkIHRoZSBwdGhyZWFkcwoJZW11bGF0aW9uIChyZXBvcnRlZCBieSBUb2RkIFZpZXJsaW5nKS4KCjIwMDMtMDgtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2ZpYmVyLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglSZW5hbWVkIGEgZmV3IFRFQiBmaWVsZHMgdG8gdXNlIHRoZSAib2ZmaWNpYWwiIG5hbWVzLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLAoJICBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJSW1wbGVtZW50IChtb3N0IG9mKSBTZXR1cEl0ZXJhdGVDYWJpbmV0LgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCU5vIGhhbmRsZXMgd2VyZSBpbmhlcml0ZWQgaW4gQ3JlYXRlUHJvY2VzcywgYWxsIGNoaWxkIGNvbnNvbGUgcHJvZ3JhbXMKCXdlcmUgc2lsZW50LgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglFbnN1cmUgcmVkaXJlY3RlZCBzdHJlYW0gaGFuZGxlIGZvciBjaGlsZCBwcm9jZXNzIGFyZSBhY3R1YWxseQoJaW5oZXJpdGFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUJ1dHRvbiB3aWR0aCBzaG91bGQgYmUgdGhlIGxhcmdlciBvZiB0ZXh0IHdpZHRoL2JpdG1hcCB3aWR0aC4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYzogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVXNlIE1BUF9UUllGSVhFRCBvbiBOZXRCU0QgaWYgYXZhaWxhYmxlLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgaW5jbHVkZS9zdGFja2ZyYW1lLmg6CglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIG5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIHN0YWNrZnJhbWUuaC4KCgkqIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglDb252ZXJ0ZWQgcmVtYWluaW5nIDE2LWJpdCBmdW5jdGlvbnMgdG8gdGhlIG5ldyB2YXJhcmdzIG1lY2hhbmlzbS4KCgkqIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsIGRsbHMvd2luZWRvcy9yZWxheS5jLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3Mvd2luLmM6CglBdm9pZCBpbmNsdWRpbmcgc3RhY2tmcmFtZS5oIGlmIGl0J3Mgbm90IG5lZWRlZC4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL21zdmlkZW8vdmZ3MTYuaCwKCSAgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvdXNlci93c3ByaW50Zi5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIHZhcmFyZ3Mgc3VwcG9ydCBmb3IgMTYtYml0IGVudHJ5IHBvaW50cy4KCUFkZGVkIC1yZXQxNiBlbnRyeSBwb2ludCBmbGFnIHRvIGFsbG93IDE2LWJpdCBjZGVjbCBhbmQgdmFyYXJncwoJZnVuY3Rpb24gdG8gcmV0dXJuIDE2LWJpdCB2YWx1ZXMgdG9vLgoKCSogZGxscy9kcG5ocGFzdC9tYWluLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLCBkbGxzL3R3YWluL3R3YWluLmgsIGluY2x1ZGUvd2luZGVmLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmlkbCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc29tZSB1bm5lZWRlZCBfX1dJTkVTUkNfXyB0ZXN0cyBmcm9tIHRoZSBoZWFkZXJzLgoJTWlzY2VsbGFuZW91cyBjbGVhbnVwcyBhbmQgZml4ZXMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglVcGRhdGUgRExMIGxpc3QsIGFkZCBhIGxpbmsgdG8gbXNkbi5jb20uCgoyMDAzLTA4LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Byb2ZpbGUuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglNb3ZlZCBwcm9maWxlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglUaGUgaWYxNjMyIGRpcmVjdG9yeSBubyBsb25nZXIgZXhpc3RzLgoKCSogZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvbG9jYWwuYzoKCU1vdmVkIGEgZmV3IG1vcmUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9yZWxheTE2LmMsCgkgIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBsb2FkZXIvbmUvbW9kdWxlLmM6CglNb3ZlZCAxNi1iaXQgcmVsYXkgYW5kIHNub29wIHN1cHBvcnQgdG8gZGxscy9rZXJuZWwuCgoyMDAzLTA4LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVdhcm4gdXNlcnMgb2Ygd2luZWNmZyBhYm91dCBpdHMgaW5jb21wbGV0ZW5lc3MuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBtZW1vcnkvaW5zdHIuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglNb3ZlZCBzZWxlY3RvciBmaXh1cCBmb3IgdGhlIHJlbGF5IGNvZGUgdG8gdGhlIGNhbGx0bzE2IGV4Y2VwdGlvbgoJaGFuZGxlci4KCU1ha2Ugc3VyZSB0byBvbmx5IHVzZSBwb3AgaW5zdHJ1Y3Rpb25zIHRvIG1vZGlmeSBzZWdtZW50IHJlZ2lzdGVycyBpbgoJdGhlIHJlbGF5IGNvZGUgdG8gc2ltcGxpZnkgdGhlIHNlbGVjdG9yIGZpeHVwLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L21lbWNweV91bmFsaWduZWQuYzoKCURvbid0IGJ1aWxkIG1lbWNweV91bmFsaWduZWQgb24gMzg2IHRvIGF2b2lkIE1TVkMgYnJlYWthZ2UgKHJlcG9ydGVkCglieSBKb24gR3JpZmZpdGhzKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsd2F5cyBzZXR1cCB0aGUgc2VsZWN0aW9uIGNvbG91ciwgbm90IGp1c3QgaW4gY3VzdG9tIGRyYXcuCgoJKiBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLAoJICBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgYWxsIHVzZXJzIG9mIERPU1ZNX0VudGVyIGV4cGxpY2l0bHkgc2V0IFY4NiBmbGFnLgoJRml4IG1vdXNlIHJlbGF5IHN0YWNrIHVzYWdlIGluIHByb3RlY3RlZCBtb2RlLgoJUmF3IG1vZGUgc3dpdGNoIG5vdyBoYW5kbGVzIGludGVycnVwdCBmbGFnIGNvcnJlY3RseS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIG1lbW9yeS9pbnN0ci5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCU1vdmVkIDE2LWJpdCBjYWxscyBpbml0aWFsaXphdGlvbiBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nIHRvIGtlcm5lbDMyLgoJU3RvcmUgdGhlIGNhbGxfdG9fMTYgcmV0dXJuIGFkZHJlc3Mgb24gdGhlIHN0YWNrIGZyb20gdGhlIEMgY29kZSBzbwoJdGhhdCB3ZSBkb24ndCBuZWVkIHR3byB2YXJpYW50cyBvZiBjYWxsX3RvXzE2X3JlZ3MuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzoKCUZpeGVkIGNvcHkvcGFzdGUgZXJyb3IgaW4gV09XQ2FsbGJhY2sxNkV4IGNhbGwgKHNwb3R0ZWQgYnkgRG1pdHJ5CglUaW1vc2hrb3YpLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXBsYWNlIHNvbWUgbWFnaWMgbnVtYmVycyB3aXRoIHN5bWJvbHMuCglBZGQgc2FuaXR5IGNoZWNrcyBzbyB0aGF0IFZHQSB3aW5kb3cgY2Fubm90IGJlIHVzZWQgdG8gYWNjZXNzIG1lbW9yeQoJb3V0c2lkZSBmcmFtZWJ1ZmZlci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGUgaGl0IHRlc3QgZm9yIGZ1bGwgcm93IHNlbGVjdCBpbiBSRVBPUlQgbW9kZSAoZm91bmQsIGRlYnVnZ2VkLAoJYW5kIHRlc3RlZCBieSBFcmljIFBvdWVjaCkuCgoyMDAzLTA4LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywgZGxscy9rZXJuZWwvc3lzdGVtLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dvd250MzIuaCwgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJRXh0ZW5kZWQgV09XQ2FsbGJhY2sxNkV4IHRvIHN1cHBvcnQgcmVnaXN0ZXIgZnVuY3Rpb25zIHRvby4gIFRoaXMKCWFsbG93cyBzaW1wbGlmeWluZyB0aGUgd2luZV9jYWxsX3RvXzE2IGFzc2VtYmx5IGNvZGUgYnkgbW92aW5nIHBhcnQgb2YKCWl0IHRvIEMgY29kZSwgYW5kIGdldHRpbmcgcmlkIG9mIHRoZSBleHRyYSBrZXJuZWwgZXhwb3J0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHRoZSBjcmVhdGlvbiBvZiB0cmVldmlldyB3aXRoIGNoZWNrYm94ZXMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglTcGxpdCB3aW4xNi8zMiBzdXBwb3J0LgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYzoKCU1vdmVkIDE2LWJpdCBidWlsdGluIG1vZHVsZSBoYW5kbGluZyB0byBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYy4KCgkqIGRsbHMvZDNkaW0vdmVyc2lvbi5yYywgZGxscy9kaW5wdXQvdmVyc2lvbi5yYywgZGxscy9kcGxheXgvdmVyc2lvbi5yYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU2V0IHZlcnNpb24gdG8gOC4xLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfRXMucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglNb3JlIFNwYW5pc2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9yZWdzdnIuYywgZGxscy9kc291bmQvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgZHNvdW5kLmRsbCwKCWFuZCBhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJTWlub3IgZml4ZXMuCgoJKiBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9yZWdzdnIuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3NoZG9jdncvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3Igc2hkb2N2dy5kbGwsCglhbmQgYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGRsbHMvcXVhcnR6Ly5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgcXVhcnR6LmRsbCwKCWFuZCBhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2RwbGF5eC9yZWdzdnIuYywgZGxscy9kcGxheXgvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgZHBsYXl4LmRsbCwKCWFuZCBhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL3JlZ3N2ci5jLCBkbGxzL2F2aWZpbDMyL3JzcmMucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGF2aWZpbDMyLmRsbCwKCWFuZCBhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogY29udHJvbHMvc3RhdGljLmM6IElnb3IgR3JhaGVrIDxpZ29yZ0BjYWRsaW5rLmNvbT4KCVNlbmQgU1ROX0NMSUNLRUQgYWQgU1ROX0RCTENMSyBtZXNzYWdlcyB0byBwYXJlbnQgd2luZG93IGlmIFNTX05PVElGWQoJaXMgZW5hYmxlZC4KCgkqIGRsbHMvb2xlMzIvZ2l0LmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUluIHRoZSBnbG9iYWwgaW50ZXJmYWNlIHRhYmxlOgoJLSBQcmludCB3YXJuaW5ncyB3aGVuIHRoaW5ncyBnbyB3cm9uZy4KCS0gQWx0ZXIgdGhlIHdheSB3ZSBkbyByZWZjb3VudGluZy4KCS0gRG9uJ3QgcmVsZWFzZSB0aGUgc3RyZWFtIG9uIHJldHJpZXZhbCwganVzdCByZXdpbmQgaXQgaW5zdGVhZC4KCS0gSW1wbGVtZW50IHRocmVhZCBzYWZldHkuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJR290IHJpZCBvZiAxNi1iaXQgZ2x1ZSBjb2RlIGdlbmVyYXRpb24gc2luY2UgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3Rhc2suaCwKCSAgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmMsIG1zZG9zL2ludDIxLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIG1vc3Qgb2YgdGhlIDE2LWJpdCB0YXNrIHN1cHBvcnQgYW5kIE5FIG1vZHVsZSBsb2FkZXIgdG8KCWRsbHMva2VybmVsLgoKMjAwMy0wOC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtYmFuZC9yZWdzdnIuYywgd2luZWRlZmF1bHQucmVnLCBkbGxzL2RtY29tcG9zL01ha2VmaWxlLmluLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9yZWdzdnIuYywKCSAgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvcmVnc3ZyLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc29uZy5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3RyYWNrLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsCgkgIGRsbHMvZG1sb2FkZXIvTWFrZWZpbGUuaW4sIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwKCSAgZGxscy9kbWxvYWRlci9nZXRsb2FkZXIuYywgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywgZGxscy9kbWxvYWRlci9yZWdzdnIuYywKCSAgZGxscy9kbXNjcmlwdC9NYWtlZmlsZS5pbiwgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L3JlZ3N2ci5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9NYWtlZmlsZS5pbiwgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL21lbG9keWZvcm11bGF0aW9udHJhY2suYywgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLCBkbGxzL2Rtc3R5bGUvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9yZWdzdnIuYywKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywKCSAgZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljL2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9jbG9jay5jLAoJICBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL29iamVjdC5jLCBkbGxzL2RtdXNpYy9wb3J0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsCgkgIGRsbHMvZG11c2ljMzIvZG11c2ljMzIuc3BlYywgZGxscy9kbXVzaWMzMi9kbXVzaWMzMl9tYWluLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCS0gaW1wbGVtZW50ZWQgbG9hZGVyLCBsb2FkZXIncyBzdHJlYW0gYW5kIGxvYWRpbmcgb2Ygb2JqZWN0cyAobm93IHlvdQoJICBjYW4gdXNlIGJ1aWx0aW4gZG1sb2FkZXIgYW5kIG5hdGl2ZSBvdGhlciBkbSouZGxscykKCS0gaW1wbGVtZW50ZWQgcHJvcGVyIGNyZWF0aW9uIG9mIG9iamVjdHMgYW5kIHJldHJpZXZhbCBvZiBkbXVzaWMKCSAgaW50ZXJmYWNlcyBmcm9tIHRoZW0gKG9iamVjdCwgc3RyZWFtLCAuLi4pCgktIGltcGxlbWVudGVkIGFsbCAic3RhbmRhcmQgdHJhY2sgdHlwZXMiIGFuZCBhcHByb3ByaWF0ZSBzdHJlYW0gKGZvcgoJICBkbWJhbmQsIGxvYWRpbmcgaXMgYWxtb3N0IGNvbXBsZXRlKQoJLSBjbGVhbmVkIHNvbWUgb2Jzb2xldGUgc3R1ZmYKCS0gc3BsaXQgZGVidWcgY2hhbm5lbHMKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeGVkIHByb3RvdHlwZXMgb2YgQ3JlYXRlU3RhdHVzV2luZG93QS9XLCBJbWFnZUxpc3RfQ29weSwKCUltYWdlTGlzdF9FbmREcmFnLCBJbWFnZUxpc3RfU2V0SW1hZ2VDb3VudC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvU2kucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJQWRkZWQgU2xvdmVuaWFuIHRyYW5zbGF0aW9uLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBSZW1vdmVkIG9ic29sZXRlIFdJTjMyX0xhc3RFcnJvciBkZWZpbml0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXgvbWFrZSB0aGUgY2FzZSBvZiBCb2NocyBhbmQgUGxleDg2IG1vcmUgY29uc2lzdGVudC4KCUFkZCBDb2RlV2VhdmVycyB0byB0aGUgbGlzdCBvZiBjb250cmlidXRvcnMgKGN1cnJlbnRseSBob3N0cyBXaW5lSFEpLgoJVHdlYWsgdGhlICdob3cgdG8gc3VibWl0IHBhdGNoZXMnIEZBUS4KCUFkZCBLeWxpeCBhbmQgTXVzaWNNYXRjaCBKdWtlQm94IHRvIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9ucyBwb3J0ZWQKCXVzaW5nIFdpbmUobGliKS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQmUgbW9yZSBleHBsaWNpdCB3aGVuIGRlc2NyaWJpbmcgd2hhdCBiZWxvbmdzIGluIFdpbmUgKEFQSSkgYW5kIHdoYXQKCWRvZXMgbm90IGJlbG9uZyBpbiBXaW5lIChkcml2ZXJzLCBXaW5kb3dzIGFwcGxldHMsIHdpbmRvdyBtYW5hZ2VycywKCWV0Yy4pLiBBbHNvIHBvaW50IHRvIHByb2plY3RzIHdoZXJlIHN1Y2ggY29udHJpYnV0aW9ucyB3b3VsZCBiZSBtb3JlCglhcHByb3ByaWF0ZS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQW5zd2VyIHRoaXMgZXRlcm5hbCBxdWVzdGlvbjoKCUNhbiBJIHVzZSBXaW5lIHRvIG1ha2UgdGhlIFdpbmRvd3MgZHJpdmVyIGZvciBteSBuZXR3b3JrIGNhcmQgLwoJZ3JhcGhpY3MgY2FyZCAvIHNjYW5uZXIgLyBldGMuIHdvcmsgb24gVW5peD8KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGFuIGVudHJ5IGFuc3dlcmluZyB0aGUgZXRlcm5hbCBxdWVzdGlvbjoKCVdoZW4gd2lsbCBXaW5lIGludGVncmF0ZSBhbiB4ODYgQ1BVIGVtdWxhdG9yPwoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywKCSAgZGxscy90d2Fpbi9jYXBhYmlsaXR5LmMsIGRsbHMvdHdhaW4vZHNfaW1hZ2UuYywKCSAgZGxscy90d2Fpbi9kc21fY3RybC5jLCBkbGxzL3R3YWluL3R3YWluMzJfbWFpbi5jLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5jLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVzIGZvciBidWlsZGluZyB3aXRoIHczMmFwaSBoZWFkZXJzIG9uIE1pbmd3LgoKCSogaW5jbHVkZS93aW5ubHMuaDogUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBpbnRlcm5hbCBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd3R5cGVzLmg6CglSZW1vdmVkIHJlZmVyZW5jZSB0byB0aGUgV0lORV9VTklDT0RFX1RFWFQgbWFjcm8gdGhhdCBubyBsb25nZXIKCWV4aXN0cy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fcy5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0VzLnJjLCBwcm9ncmFtcy9jbG9jay9Fcy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLCBwcm9ncmFtcy92aWV3L0VzLnJjLAoJICBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVNvbWUgbmV3IFNwYW5pc2ggdHJhbnNsYXRpb25zIGFuZCBpbXByb3ZlbWVudHMgdG8gb3RoZXIgZXhpc3RpbmcKCW9uZXMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJQXZvaWQgY3Jhc2ggaW4gV0NNRF9ydW5fcHJvZ3JhbSB3aGVuIG5vIGV4dGVuc2lvbiB3YXMgc3BlY2lmaWVkLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU29tZSBhcHBsaWNhdGlvbnMgZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBpbml0aWFsaXphdGlvbiBzdGVwcyBvZiB0aGUKCWN1c3RvbSBmaWxlIG9wZW4gZGlhbG9nLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9HRVR4eHgpIGZyb20gTlVMTCBwdlBhcmFtLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUd2VhayAnV2lsbCB0aGVyZSBiZSBhIFdpbmRvd3MgdmVyc2lvbiBvZiBXaW5lPyc6CgktIEFkZCBhIHBvaW50ZXIgdG8gdGhlIE1pbkdXIHByb2plY3QKCS0gRml4IHRoZSBSZWFjdE9TIGNhc2UKCS0gRXhwbGFpbiB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGVzZSBwb3J0aW5nIHByb2plY3RzCgoyMDAzLTA4LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3B0cmFjZS5jOiBDb3BlIHdpdGggd2FpdDQgYmVpbmcgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9zeXNkZXBzLmMsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCVN0b3JlIHRoZSBkZWJ1ZyBpbmZvIHN0cnVjdHVyZSBvbiB0aGUgdGhyZWFkIHN0YWNrLgoJTW92ZWQgdGhyZWFkIGluaXRpYWxpemF0aW9uIGNvZGUgZnJvbSBzeXNkZXBzLmMgdG8gdGhyZWFkLmMgdG8gYXZvaWQKCWFuIGluZGlyZWN0aW9uLgoKCSogaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9yYXMuaCwgaW5jbHVkZS93aW5kb3dzeC5oOgoJUmVtb3ZlZCBhIGZldyByZW1haW5pbmcgV0lOVkVSIGNoZWNrcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJSXQgc2VlbXMgRnJlZUJTRCBubyBsb25nZXIgcmVxdWlyZXMgbGlicHRocmVhZCB3aGVuIGxpbmtpbmcgd2l0aAoJT3BlbkdMLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglDb3JyZWN0bHkgcGFzcyB0aGUgZXhjZXB0aW9uIHRvIHRoZSBhcHBsaWNhdGlvbiB3aGVuCglCcmVha09uRmlyc3RDaGFuY2UgaXMgMC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fbi5yYywgcHJvZ3JhbXMvY2xvY2svSXQucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglTbWFsbCByZXNvdXJjZXMgZml4ZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfSXQucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1c2VsZXNzIGNvbW1lbnRzIHRoYXQgY2x1dHRlciB0aGUgY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yICh1bmRvY3VtZW50ZWQpIFNIQ3JlYXRlTGlua3MuCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZSBpbnN0YWxsIHNjcmlwdCB0byBtYXRjaCBjdXJyZW50IGJ1aWxkIHByb2Nlc3MuCglGaXggYSB3YXJuaW5nIGluIGdlbmVyYXRlZCBkbGwgbm93IHdlIGJ1aWxkIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3BlIHdpdGggcG90ZW50aWFsbHkgbW92ZWQgYW5kIHJlc2l6ZWQgZmlsZSB2aWV3IHdpbmRvdy4KCjIwMDMtMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW0ucmMsIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywKCSAgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywgZGxscy9udGRsbC9yZXNvdXJjZS5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIxNi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLAoJICBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbm5scy5oLCBtZW1vcnkvdmlydHVhbC5jLAoJICBtc2Rvcy9pb3BvcnRzLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmM6Cgl3aW5ubHMuaCBtdXN0IG5vdCBpbmNsdWRlIHdpbmJhc2UuaC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHRlc3RzIGZvciBidWZmZXIgcHJvcGVydHkgc2V0cy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3BsaXQgcHJvcGVydHkgc2V0cyBpbnRvIHR3byB0eXBlczogYnVmZmVyIGFuZCBwcml2YXRlLgoKCSogZGxscy93aW5lZG9zL2ZwdS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIEZQVSBlbXVsYXRpb24gdXNlIENTOklQIHdoZW4gZGV0ZXJtaW5pbmcgbG9jYXRpb24gb2YgY2FsbGluZwoJc29mdHdhcmUgaW50ZXJydXB0LgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50MzEuYywgZGxscy93aW5lZG9zL3JlbGF5LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmUgdW5uZWNlc3NhcnkgX193aW5lX2NhbGxfZnJvbV8xNl9yZWdzIGNhbGwgZnJhbWUgbWFuYWdlbWVudCBjb2RlCglmcm9tIHJhdyBtb2RlIHN3aXRjaCBoYW5kbGVyLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4IGJ1aWxkaW5nIGxpYndpbmVfdW5pY29kZSB3aXRoIHczMmFwaSBoZWFkZXJzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURsb3BlbiBsaWJuY3Vyc2VzLnNvIGluIHdpbmVjb25zb2xlLgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IEJJTkRJUiBpcyBubyBsb25nZXIgbmVlZGVkLgoKCSogdG9vbHMvd2luZWdjYy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglTdXBwb3J0IC1tY29uc29sZS4KCgkqIHRvb2xzL3dpbmVnY2MuYywgdG9vbHMvd2luZXdyYXAuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVJlbW92ZSBoYXJkY29kZWQgQklORElSIHBhdGhzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwKCSAgbGlicy93aW5lL2Vycm5vLmM6CglSZW1vdmUgdGhlIGR1bW15IHB0aHJlYWQgZnVuY3Rpb25zIGFuZCB1c2UgLWxwdGhyZWFkIGluc3RlYWQgdG8KCXJlc29sdmUgbWlzc2luZyBzeW1ib2xzIGluIEdMIGxpYnMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglVcGRhdGVkIExUIGtleWJvYXJkLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvZmlsZS5oOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgdGhlIERPU0ZTXyBzcGVjaWZpYyB0aW1lIHJlbGF0ZWQgY29udmVyc2lvbiByb3V0aW5lLCBhbmQgbWFrZQoJdXNlIG9mIHRoZSBudGRsbCBlcXVpdmFsZW50cy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglUcmFuc2xhdGUgYSBmZXcgbW9yZSBrZXJuZWwzMiBjYWxscyBpbnRvIHRoZSBudGRsbCBlcXVpdmFsZW50cy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIGNvZGUgZm9yIGhhbmRsaW5nICR7VkFSfSBjb25zdHJ1Y3RzIGluIC5pbmkgZmlsZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IDx3aW5lQGZyb3R6Lm9yZz4KCUZpeCBwYXJhbWV0ZXIgdG8gc25kX3BjbV9zd19wYXJhbXNfc2V0X3NpbGVuY2Vfc2l6ZSgpLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFwcGx5IG9ubHkgc3BlY2lmaWVkIHRlc3RzLgoJSW1wbGVtZW50IElTX1RFWFRfVU5JQ09ERV9SRVZFUlNFX1NJR05BVFVSRSwgSVNfVEVYVF9VTklDT0RFX1NUQVRJU1RJQ1MKCWFuZCBJU19URVhUX1VOSUNPREVfTlVMTF9CWVRFUyB0ZXN0cy4KCVJldmVydCBJU19URVhUX1VOSUNPREVfT0REX0xFTkdUSCB0ZXN0LgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywKCSAgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdHViIG91dCB0aGUgX1t3XXBvcGVuL19wY2xvc2UoKSBmdW5jdGlvbnMuCgoyMDAzLTA4LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3Byb2Nlc3MuYzoKCVdlIG5lZWQgdG8gaWdub3JlIFNUQVRVU19PQkpFQ1RfVFlQRV9NSVNNQVRDSCBlcnJvcnMgdG9vIHdoZW4gc2V0dGluZwoJdGhlIHByb2Nlc3MgY29uc29sZS4KCgkqIHByb2dyYW1zL2Nsb2NrL0l0LnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9JdC5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zeXN0ZW0uZHJ2LnNwZWMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5zcGVjLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglSZW5hbWVkIHN5c3RlbS5kbGwgdG8gc3lzdGVtLmRydi4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9pb3BvcnRzLmM6CglSZXBsYWNlZCByZW1haW5pbmcgY2FsbHMgdG8gUFJPRklMRV9HZXRXaW5lSW5pU3RyaW5nL0Jvb2wgYnkgZGlyZWN0CglyZWdpc3RyeSBhY2Nlc3Nlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIGk4biBlbnRyaWVzLgoKCSogZGxscy9tc3ZjcnQvY3BwLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgZXhjZXB0aW9uIGFzIHRoZSBiYXNlIGZvciBhbGwgZXhjZXB0aW9uIGRlcml2ZWQgY2xhc3Nlcy4KCUltcGxlbWVudCB0eXBlX2luZm8gbWV0aG9kcyBjb3JyZWN0bHkuCglBZGQgc3RhdGljIFJUVEkgZm9yIGV4cG9ydGVkIG9iamVjdHMuCglUaHJvdyBleGNlcHRpb25zIHdoZW4gcnVuIHRpbWUgY2FzdHMgZmFpbC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcmVnaXN0cnkga2V5IHVubG9hZGluZy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gaW4gcHJvY2VzcyBjcmVhdGlvbiAoc3RkIGhhbmRsZSBpbmhlcml0YW5jZSkuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglfZnRvbCBzaG91bGQgcmV0dXJuIGEgNjQtYml0IGludCAoc3BvdHRlZCBieSBKb24gR3JpZmZpdGhzKS4KCgkqIGRsbHMvd2luZWRvcy9yZWxheS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIGZvcmNpbmcgY2FsbCB0byBET1MgcmVsYXkgZnJvbSBwcm90ZWN0ZWQgbW9kZSwgbWFrZSBzdXJlIHRoYXQKCXJlbGF5IHNlZXMgb3JpZ2luYWwgc3RhY2sgYW5kIGNvZGUgcG9pbnRlcnMuIE1ha2UgaXQgcG9zc2libGUgZm9yIERPUwoJcmVsYXkgdG8gbW9kaWZ5IGNvZGUgYW5kIHN0YWNrIHBvaW50ZXJzLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcndpbiBXb2xmZiA8ZXJ3aW53b2xmZm5sQG1pY3JvZm9ybWF0aWNhLmNvbT4KCVJlbW92ZWQgVkVSU0lPTiB0eXBlZGVmLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tc2MuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglXcmFwIGVycm9yLXByb25lIG1zYyBzeW1ib2wgbG9hZGluZyB3aXRoIGEgX19UUlkgYmxvY2suCgoJKiBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBbGxvY2F0ZSBzcGFjZSB0byBjb250YWluIHRoZSBJTUFHRV9OVF9IRUFERVJTIHN0cnVjdHVyZSAoSW1hZ2VMb2FkCglmdW5jdGlvbikuCglBZGQgc29tZSBtb3JlIHRyYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHVucmVhY2hhYmxlIFRWSFRfT05JVEVNU1RBVEVJQ09OIGluIFRSRUVWSUVXX0xCdXR0b25Eb3duLgoKCSogZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWtlIFJ0bFRpbWVUb1NlY29uZHNTaW5jZTE5NzAgY29uc2lzdGVudCB3aXRoIG90aGVyIHRpbWUgY2FsbHMuCglEb2N1bWVudGF0aW9uIGZpeGVzLgoKMjAwMy0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgb2JqZWN0cy9kYy5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcgYW5kIGNhc2UgZml4ZXMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy93aW5lZG9zL2ZwdS5jOiBBZGRlZCBtaXNzaW5nIFxuIGluIFRSQUNFIGNhbGxzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOgoJRnJlZSB0aGUgZGVidWcgaW5mbyB3aGVuIG1ha2luZyBhIGNyaXRpY2FsIHNlY3Rpb24gZ2xvYmFsLgoKCSogbGlicy93cHAvcHJlcHJvYy5jLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL3dpZGwvdXRpbHMuYywKCSAgdG9vbHMvd2luZWR1bXAvbmUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYWlkbC5pZGw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFrZSBJMSBmaWVsZHMgZXhwbGljaXRseSBzaWduZWQuCglBZGQgc3VwcG9ydCBmb3IgSTggZmllbGRzIGluIHZhcmlhbnRzLgoJQWRkIGEgbWlzc2luZyB1bmRvY3VtZW50ZWQgRkFERl8gZmxhZy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBtdWx0aS10ZXh0dXJpbmcuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL3dpbm5scy5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG5ldyB0eXBlcyBhbmQgZnVuY3Rpb25zLgoJUmVtb3ZlIElUVV9JTVBMRU1FTlRFRF9URVNUUywgaXRzIG5vdCBwYXJ0IG9mIHRoZSBXaW4zMiBBcGkuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIFdhcmJsYWRlIGltYWdlIGxvYWRpbmcuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBidWcgd2hlcmUgbGFzdCB0ZXN0cyB3ZXJlIG5vdCBleGVjdXRlZC4KCVByaW50IG91dCBzb3VuZCBkZXZpY2UgaW5mby4KCgkqIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeCBDUFUgZmxhZyBoYW5kbGluZyB3aGVuIGludGVybmFsIGludGVycnVwdHMgYXJlIGJyYW5jaGVkIHRvLgoKCSogbG9hZGVyL21vZHVsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJV2luZG93cyBpZ25vcmVzIHZhbHVlcyBvZiBlX2NwYXJoZHIgYW5kIGVfY3JsYyBvZiB0aGUgTVogaGVhZGVyLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogUmF1bCA8em9tYmk4MkBob3QuZWU+CglTbWFsbCBFc3RvbmlhbiBrZXlib2FyZCBmaXguCgoJKiBkbGxzL2NhYmluZXQvZmRpLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRG9uJ3QgdG91Y2ggcGVyZiBpbiBGRElJc0NhYmluZXQsIEluc3RhbGxTaGllbGQgbWF5IGFscmVhZHkgaGF2ZSBmcmVlZAoJaXQuCgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbjogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSAkKEVYRUVYVCkgZm9yIHRoZSB3aW5lZHVtcCBleGVjdXRhYmxlLgoKCSogdG9vbHMvd3JjL3dyYy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJT25seSBzdGF0aWNzIGFyZSBzdXJlIHRvIGJlIHNldCB0byAwLCBleHBsaWNpdGx5IGluaXRpYWxpc2UgZ2xvYmFscy4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgcmVkdW5kYW50IHdpbmUgc3BlY2lmaWMgI2luY2x1ZGUuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJb2xlLyBkaXJlY3RvcnkgZG9lc24ndCBleGlzdCBhbnltb3JlLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDYXN0IGhyZXN1bHQgZXJyb3IgY29kZXMgdG8gSFJFU1VMVC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHRoaW5ncyBicm9rZW4gYnkgdGhlIGxhc3QgVFJFRVZJRVdfVXBkYXRlRGlzcEluZm8gcGF0Y2guCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZWdyZXNzaW9uIGZpeGVzIGZvciBOdHtSZWFkfFdyaXRlfUZpbGU6CgktIGFjdHVhbGx5IGJsb2NrIGluIFRJTUVPVVQgbW9kZQoJLSBpbiBvdmVybGFwcGVkIG1vZGUsIGlmIGFueSBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIHRoZW4gcHJvY2VzcyBpdAoJICB3aXRob3V0IHJldHVybmluZyBhIHBlbmRpbmcgc3RhdHVzIGNvZGUKCgkqIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMb2NhbGl6YXRpb24gdG8gdGhlIFBvcnR1Z3Vlc2Ugb2YgQnJhemlsLgoKMjAwMy0wOC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBfX2Vycm5vX2xvY2F0aW9uKCkgaGFuZGxpbmcgdG8gcHRocmVhZC5jLCBhbmQgYWRkZWQgc2ltaWxhcgoJaGFuZGxpbmcgZm9yIF9fcmVzX3N0YXRlKCkuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbjogQWRkZWQgbWlzc2luZyBkZXBlbmRlbmN5LgoKCSogcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzogRml4ZWQgaW5kZW50YXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZSBmcm9tIGRvY3MgLyBjb25maWcgdG9vbCB1c2VsZXNzIC8gb2Jzb2xldGVkIG9wdGlvbnMuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEWFQxLzMvNSBzdXBwb3J0IHdhcyBicm9rZW4sIGJ1dCB1bm5vdGljZWFibGUgc2luY2Ugd2UgYWxzbyBpbmRpY2F0ZWQKCWl0IHdhc24ndCBzdXBwb3J0ZWQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYzoKCUUuIEMuIEYuIFdvbGZmIDxlcndpbndvbGZmbmxAbWljcm9mb3JtYXRpY2EuY29tPgoJQWRkZWQgV2luZG93cyAyazMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgV2lkZUJ5dGVUb011bHRpQ2hhciBub3Qgc3RybGVuVy4KCVVzZSBIZWFwQWxsb2MsIG5vdCBtYWxsb2MuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIGNvbW1hbmQgbGluZSBzdXBwb3J0LgoKMjAwMy0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMDgxMy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbGlhcyBfdnNucHJpbnRmIGFzIHZzbnByaW50Zi4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCVN1cHBvcnQgZm9yIE1hYyBPUyBYIHBvd2VycGMgcmVnaXN0ZXIgbmFtZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCVBpZXJyZSBkJ0hlcmJlbW9udCkuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBjb21waWxhdGlvbiBlcnJvci4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVVzZSBfX1dJTkVfXyBpbnN0ZWFkIG9mIF9XSU5FXywgX1dJTjMyLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJUmVtb3ZlIG5vIGxvbmdlciBuZWNlc3NhcnkgaW5jbHVkZXMgPHNpZ25hbC5oPiwgPHdhaXQuaD4uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBmb3IgVFJFRVZJRVdfVXBkYXRlRGlzcEluZm8gdG8gdGVzdCB3aXRoIHRoZSBjb3JyZWN0IGNhbGxiYWNrTWFzay4KCgkqIG1pc2MvdmVyc2lvbi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgV2luZG93cyAyMDAzIHRvIHRoZSB2ZXJzaW9ucyBXaW5lIGNhbiByZXR1cm4uCgoJKiBvYmplY3RzL2RjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGluaXREYXRhIGFzIHdlbGwuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGRlZmluaXRpb25zIGZvciB0aGUgU19JUyogbWFjcm9zLgoKCSogaW5jbHVkZS93aW5udC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGEgYnVuY2ggb2YgSU1BR0VfU0laRU9GXyogY29uc3RhbnRzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc3BlYyBmb3IgSW5pdGlhdGVTeXN0ZW1TaHV0ZG93bkV4QSwgYXMgcG9pbnRlZCBvdXQgYnkgU3RlZmFuCglMZWljaHRlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zaS8uY3ZzaWdub3JlLAoJICBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvZGlzdGluY3QuYywgZGxscy9tc2kvaGFuZGxlLmMsCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3Rva2VuaXplLmMsCgkgIGRsbHMvbXNpL3doZXJlLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXNpLmgsCgkgIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1pY3Jvc29mdCBJbnN0YWxsZXIgKG1zaS5kbGwpLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRXh0ZW5kZWQgd2luZWZpbGUgZm9yIGFuIG9wdGlvbmFsIHNoZWxsIG5hbWVzcGFjZSBtb2RlLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJRG9uJ3QgdHJ5IHRvIGFsbG9jYXRlIHRoZSBkZWJ1ZyBpbmZvIGJlZm9yZSB0aGUgcHJvY2VzcyBoZWFwIGV4aXN0cy4KCjIwMDMtMDgtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgb2JqZWN0cy9nZGlvYmouYywKCSAgc2NoZWR1bGVyL3B0aHJlYWQuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFsbG9jYXRlIERlYnVnSW5mbyBmaWVsZCBmb3IgYWxsIGNyaXRpY2FsIHNlY3Rpb25zIChiYXNlZCBvbiBhIHBhdGNoCglieSBBbGV4IFBhc2FkeW4pLgoJR2V0IHJpZCBvZiB0aGUgV2luZS1zcGVjaWZpYyBDUklUSUNBTF9TRUNUSU9OX0lOSVQgbWFjcm8uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogQXZvaWQgY3Jhc2hlcyB3aGVuIGRldm1vZGUgaXMgbnVsbC4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3R0eWRydi9kYy5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmdkaS5oLAoJICBvYmplY3RzL2RjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBDcmVhdGVEQyB0byB1bmljb2RlIGluIHRoZSBkcml2ZXIgaW50ZXJmYWNlLgoKCSogZGxscy9udGRsbC9oZWFwLmM6IE1pbm9yIHRyYWNpbmcgZml4LgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IFggZGlzcGxheSBhbmQgbG9jYWxlIG9mIFggSW5wdXQgTWV0aG9kIGluIHRoZSBkZWJ1ZyBsb2cuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3dpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBGbGFzaFdpbmRvd0V4LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmM6IEpvaGFuIERhaGxpbiA8amRhaGxpbkBhc3luYy5jb20uYnI+CglVcGRhdGVkIFN3ZWRpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYywgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUZpeGVkIHRoZSBwdGhyZWFkIHdyYXBwZXJzIHRvIHdvcmsgd2l0aCB0aGUgbmV3IGdsaWJjL2xpbnV4dGhyZWFkcwoJaW50ZXJmYWNlIGluIGdsaWJjIDIuMy4yLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL3Bvd2VybWdudC5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvbmV3Zm5zLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29uc29saWRhdGUgYWxsIGtlcm5lbCBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4KCVByb3ZpZGUgcHJvdG90eXBlcyBhbmQgc3R1YnMgZm9yIG1pc3NpbmcgZnVuY3Rpb25zLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlnbm9yZSBzb21lIGtleWJvYXJkIGV2ZW50cy4gSW4gYW55IGNhc2Ugd2UgZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlCgl0aGVtLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIHNvbWUgd2luc3Bvb2wgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0d28gcHJpbnRlciBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cG9ydCBTSEJpbmRUb1BhcmVudCAoYWxyZWFkeSBpbXBsZW1lbnRlZCkuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBhZHZhcGkzMiBmdW5jdGlvbnMgSW5pdGlhdGVTeXN0ZW1TaHV0ZG93bkV4LCBTZXRFbnRyaWVzSW5BY2wKCWFuZCBTZXROYW1lZFNlY3VyaXR5SW5mby4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIEVTX1NFTEVDVElPTkJBUiBzdHlsZS4KCjIwMDMtMDgtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV01fUEFJTlQod1BhcmFtKSBtaWdodCBiZSBhIHZhbGlkIEhEQy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBY2NlcHQgU0laRV9NQVhJTUlaRUQgYXMgb25lIG9mIHN0YXR1c2VzIG9mIE1ESSB3aW5kb3dzLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBzb21lIG1pc3NpbmcgRlJfKiBkZWZpbmVzLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6IEpvaGFuIERhaGxpbiA8amRhaGxpbkBhc3luYy5jb20uYnI+CglNYWtlIHN1cmUgd2luaGVscCBkb2Vzbid0IHNjcm9sbCBvdXRzaWRlIG9mIGl0cyBkaXNwbGF5IGFyZWEuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBCdWlsZFRydXN0ZWVXaXRoU2lkKEEvVykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglyZXNvbHYuaCBtYXkgcmVxdWlyZSBuZXRpbmV0L2luLmgsIHNvIHRyeSB0byAjaW5jbHVkZSB0aGF0IHdoZW4KCWNoZWNraW5nIGZvciB0aGUgZm9ybWVyLgoKMjAwMy0wOC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1ha2UgZG9fYmxvY2sgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSAoYmFzZWQgb24gYSBwYXRjaCBieQoJTWlrZSBIZWFybikuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2NvbWNhdC9yZWdzdnIuYywgZGxscy9jdGwzZC9jdGwzZC5jLAoJICBkbGxzL2N0bDNkL2N0bDNkLnNwZWMsIGRsbHMvY3RsM2QvY3RsM2QzMi5jLCBkbGxzL2N0bDNkL2N0bDNkdjIuc3BlYywKCSAgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDkvZDNkOV9tYWluLmMsIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLCBkbGxzL29sZTMyL29sZTIuc3BlYywKCSAgZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywKCSAgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksCgkgIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3ByZXByb2Nlc3Nvci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJRml4ZWQgYnVpbGQgd2l0aCBvbGRlciBjb21waWxlcnMuCgoJKiBkbGxzL2QzZGltL3ZlcnNpb24ucmMsIGRsbHMvZGlucHV0L3ZlcnNpb24ucmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNldCB2ZXJzaW9uIHRvIERpcmVjdFggNy4KCjIwMDMtMDgtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNldCB2ZXJzaW9uIHRvIERpcmVjdFggNy4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCU1vdmUgZGVjbGFyYXRpb25zIHRvIGNvbXBpbGUgd2l0aCBvbGRlciBjb21waWxlcnMuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCZXR0ZXIgc3VwcG9ydCBmb3IgX19kZWNsc3BlYygpIChiYXNlZCBvbiBhIHN1Z2dlc3Rpb24gZnJvbSBPdmUKCUthYXZlbikuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJU3VwcGhhY2hva2UgU3VudGl3aWNoYXlhIDxtcmNob2tlQG9wZW50bGUub3JnPgoJQWRkZWQgVGhhaSBrZXlib2FyZCBsYXlvdXQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEdldCByaWQgb2Ygd3JvbmcvY29uZnVzaW5nIF9zdHJkdXBuQSB1c2FnZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9hYm91dC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLCBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglSb2JlcnQgRGlja2Vuc29uIDxyb2JkQHJlYWN0b3Mub3JnPgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgR1VJIGZvciByZWdlZGl0LgoKCSogZGxscy9kc291bmQvdGVzdHMvLmN2c2lnbm9yZTogQWRkZWQgcHJvcHNldC5vay4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJU3lzdGVtUGFyYW1ldGVyc0luZm8gcmV0dXJuaW5nIGEgdmFsdWUgZm9yIFdhbGxwYXBlciBkb2VzIG5vdCBtZWFuCgl0aGF0IHRoZSByZWdpc3RyeSBrZXkgZXhpc3RzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVVzZSB0aGUgRUxGIHNlY3Rpb25zIGZvciB0aGUgYWRkcmVzc2VzIG9mIGdsb2JhbHMsIGFzIHRoZSBTVEFCUyBhcmUKCWxpa2VseSB0byBiZSB3cm9uZy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCS0gUHJpbnQgc2hvcnQgQVNDSUkgc3RyaW5ncyB3aXRob3V0IHRoZSAiLi4uIgoJLSBNYWtlIHByaW50aW5nIGZvciBVbmljb2RlIHN0cmluZ3MgbW9yZSBzaW1pbGFyIHRvIEFTQ0lJLgoKMjAwMy0wOC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCBGaWxlIFNvdXJjZSAoQXN5bmMpIEZpbHRlci4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgQ09NIGFuZCBwcm9wZXJ0eSBzZXQgdGVzdHMuCglBZGRlZCBMSUJVVUlEIHRvIG1ha2VmaWxlLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBjbGFzcyBmYWN0b3JpZXMgZm9yIERpcmVjdFNvdW5kQ2FwdHVyZSwgRGlyZWN0U291bmRGdWxsRHVwbGV4CglhbmQgRGlyZWN0U291bmRQcml2YXRlLgoJQWRkZWQgZXJyb3IgY2hlY2tpbmcgdG8gUXVlcnlJbnRlcmZhY2UgYW5kIENyZWF0ZUludGVyZmFjZS4KCUFkZGVkIHNvbWUgbW9yZSBmdW5jdGlvbmFsaXR5IHRvIHByb3BlcnR5IHNldHMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglBdm9pZCBub24tcG9ydGFibGUgbG9uZyBsb25nIGNvbnN0YW50cy4KCgkqIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jLAoJICBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglXYXJuaW5nIGZpeGVzLgoKCSogbGlicy91dWlkL3V1aWQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lZCBGTVRJRHMgZm9yIG9sZTMyLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJT29wcywgYmFjayB0byBoYXJkIGNvZGluZyBpbml0aWFsIHRodW1iIHNpemUgdW50aWwgd2UgZmlndXJlIG91dCBob3cKCWl0IHJlYWxseSBzaG91bGQgd29yay4KCUZpeCB0aGUgY2hhbm5lbCBzaXplL3NlbGVjdGlvbiByYW5nZSBmb3IgdGhlIFRCU19FTkFCTEVTRUxSQU5HRQoJc3R5bGUuCglPbmUgcGl4ZWwgdHdlYWtzIGluIHNldmVyYWwgc3BvdHMuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZW51bW1lZGlhLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1waW5zLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei9waW4uaCwgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEJ1Z2ZpeCB3aGVuIGFkZGluZyBmaWx0ZXJzIHRvIGdyYXBoIGR1ZSB0byBub3QgaW5pdGlhbGl6aW5nCgkgIHZhcmlhYmxlcyBvbiBjcmVhdGlvbiBvZiBncmFwaC4KCS0gUmVtb3ZlIGNsdWUgb2Ygd2hlcmUgSSBjb3BpZWQgb25lIG9mIHRoZSBjb3B5cmlnaHQgbWVzc2FnZXMgZnJvbS4KCS0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGlucHV0IGFuZCBvdXRwdXQgcGlucyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgYQoJICBsb3Qgb2YgZmlsdGVycyBpbiBRdWFydHouCgoyMDAzLTA4LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIERvY3VtZW50YXRpb24gb2YgdGhlIGluZGV4LmRhdCBmaWxlcy4KCS0gUmVhZCBzdXBwb3J0IGZvciAiVGVtcG9yYXJ5IEludGVybmV0IEZpbGVzIi4KCS0gTGltaXRlZCB3cml0ZSBzdXBwb3J0IGZvciAiVGVtcG9yYXJ5IEludGVybmV0IEZpbGVzIiAocHJvdmlkZWQgZmlsZQoJICBkb2VzIG5vdCBuZWVkIGVubGFyZ2luZykuCgktIERlbGV0ZSBzdXBwb3J0ICh1bnRlc3RlZCBvbiBhbnl0aGluZyBvdGhlciB0aGFuIFRlbXBvcmFyeSBJbnRlcm5ldAoJICBGaWxlcykuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUF2b2lkIERTQSB0eXBlIGNvbmZsaWN0IGJldHdlZW4gc3NsLmggYW5kIGNvbW1jdHJsLmguCgoJKiBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJTWFrZSBJUHJvcGVydEJhZ19SZWFkIHVzZSBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSByYXRoZXIgdGhhbiBhCglzdGF0aWMgb25lLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJT25seSByZWFwcGx5IHRoZSB0ZXh0dXJlIHN0YXRlcyBuZWNlc3Nhcnkgd2hlbiBhIGRpZmZlcmVudCB0ZXh0dXJlCglnZXRzIGJvdW5kIHRvIHRoZSBzYW1lIHRleHR1cmUgdW5pdC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9nbF9hcGkuaCwKCSAgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgdGhlIG1pbWFwIGxvZCBiaWFzIGV4dGVuc2lvbi4KCgkqIG9iamVjdHMvZm9udC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIHNhbWUgZm9ybXVsYSB0byBjb252ZXJ0IGZyb20gZGV2aWNlIHRvIGxvZ2ljYWwgdW5pdHMgYXMgZXZlcnl3aGVyZQoJZWxzZS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBDYWxsV2luZG93UHJvY0EvVyBmcm9tIE5VTEwgcG9pbnRlcnMuCgoJKiBkbGxzL2NhYmluZXQvZmRpLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJTWFueSB3b3JkcyBhYm91dCBjYWJpbmV0cy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeCAtaSBvcHRpb24gZm9yIHdpbmVidWlsZCBsaW5raW5nLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBodHRwLVBPU1QgKHdlbGwsIGFueSBraW5kIG9mIGh0dHAgcmVxdWVzdCB0aGF0IHNlbmRzCglkYXRhIGluIHRoZSBscE9wdGlvbmFsIGZpZWxkKS4KCgkqIG1pc2MvY3B1LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIE1IeiBkZXRlY3Rpb24gY29kZS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvZHJhd3ByaW0uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglnbENvbG9yTWF0ZXJpYWwgZW5hYmxlL2Rpc2FibGUgc2V0dXAgaXMgb25seSBkb25lIHdoZW4gcmVhbGx5IG5lY2Vzc2FyeS4KCUlmIGdsQ29sb3JNYXRlcmlhbCBpcyBzZXQgdG8gdHJhY2sgY3VycmVudCBjb2xvciBhbmQgbm9uZSBpcyBzdXBwbGllZCwKCWl0IGdldHMgZGlzYWJsZWQuCglnbE1hdGVyaWFsIGlzIHJlc2V0IHdoZW4gSSB0aGluayBpdCBpcyBuZWNlc3NhcnkuCglTbG93IG1vZGUgbm93IGhhcyBkZWZhdWx0cyBmb3Igd2hlbiBmdmYgcGFybXMgYXJlIG5vdCBzdXBwbGllZCAoYXMgcGVyCglmYXN0IG1vZGUpLgoJU2xvdyBtb2RlIG5vdyBzZXRzIHVwIHRoZSBzcGVjdWxhciBjb2xvciAoZm9yZ290IHRoYXQgYml0IHByZXZpb3VzbHksCglJIHRoaW5rISkuCglUcmFjZSBub3cgbGlzdHMgdGhlIGZyb250LCBiYWNrIGFuZCBzdGVuY2lsIGJ1ZmZlcnMgZm9yIGVhc2Ugb2YKCWRlYnVnZ2luZy4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2dsX2FwaS5oLAoJICBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVByb3BlciBNSVJST1IgdGV4dHVyZSBhZGRyZXNzIHN1cHBvcnQuCgoJKiBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUlDcmVhdGVEZXZFbnVtX0NyZWF0ZUNsYXNzRW51bWVyYXRvciBjYW4gcmV0dXJuIFNfRkFMU0Ugd2hlbgoJdGhlcmUgaXMgbm8gY2F0ZWdvcnksIHNvIHJldHVybiBNS19FX05PT0JKRUNUIGZyb20KCUlQYXJzZURpc3BsYXlOYW1lX1BhcnNlRGlzcGxheU5hbWUuCgoJKiB3aW5kb3dzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBHZXRXaW5kb3dJbmZvKCkgd29yayBmb3IgYWxsIHdpbmRvd3MgYW5kIHJldHVybiBjb3JyZWN0IHZhbHVlcy4KCgkqIG9iamVjdHMvZm9udC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGx5IHRydW5jYXRlIHRtRmlyc3RDaGFyLCB0bUxhc3RDaGFyLCB0bUJyZWFrQ2hhciBhdCAyNTUgaW4gdGhlCglwcm9jZXNzIG9mIFctPkEgY29udmVyc2lvbi4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVtbmFudHMgb2YgdGhlIG9sZCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBTdGVwaGFuIEJFVVpFIDxmYmlnZ3VuQGhvdG1haWwuY29tPgoJLSBBdm9pZCBkaXZpc2lvbiBieSB6ZXJvIGluIFRSQUNLQkFSX0dldFRpY1BvcwoJLSBNYW5hZ2UgbmVnYXRpdmUgcmFuZ2UgVFJBQ0tCQVJfRHJhd09uZVRpYwoKMjAwMy0wOC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zd3NvY2svLmN2c2lnbm9yZSwKCSAgZGxscy9tc3dzb2NrL01ha2VmaWxlLmluLCBkbGxzL21zd3NvY2svbXN3c29jay5jLAoJICBkbGxzL21zd3NvY2svbXN3c29jay5zcGVjLCBkbGxzL21zd3NvY2svdmVyc2lvbi5yYzoKCUFuZHLpIEpvaGFuc2VuIDxhbmRyZWpvaEBjMmkubmV0PgoJSW50cm9kdWNlZCB0aGUgbXN3c29jayBkbGwuCglBZGRlZCBzdHVicyBmb3IgVHJhbnNtaXRGaWxlKCkgYW5kIEFjY2VwdEV4KCkuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNYWtlIHN1cmUgZGxsbmFtZSBkb2Vzbid0IGdldCBvcHRpbWl6ZWQgb3V0IChzcG90dGVkIGJ5IE1hcmN1cwoJTWVpc3NuZXIpLgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmM6IFByb3Blcmx5IGZyZWUgdGhyZWFkIHN0YWNrcyBvbiBOUFRMIHN5c3RlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglUaGUgaW5pdGlhbCBzaXplIG9mIHRoZSB0aHVtYiBkZXBlbmRzIG9uIFNNX0NZQ0FQVElPTi4KCUNvcnJlY3RseSBkcmF3IHRoZSB0aHVtYiBhcyBpbiBXaW5kb3dzLgoJVGhlIGNoYW5uZWwvdGh1bWIgcG9zaXRpb24gYWxzbyBkZXBlbmRzIG9uIFRCU19OT1RJQ0tTLgoJVGhlIGZpcnN0IGFuZCBsYXN0IHRpYyBtYXJrcyBzaG91bGQgYmUgaW5zZXQgZnJvbSB0aGUgY2hhbm5lbCBsZW5ndGgKCWJ5IGhhbGYgdGhlIHRodW1iIHdpZHRoLgoJV2hlbiBUQlNfQk9USCBzdHlsZSBzZXQsIG1ha2Ugc3VyZSB0byBkcmF3IGJvdGggc2V0cyBvZiB0aWNzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tc2MuYzogQW5kcukgSm9oYW5zZW4gPGFuZHJlam9oQGMyaS5uZXQ+CglBdm9pZCBjcmFzaGluZyB3aGVuIHVuYWJsZSB0byByZWFkIHBkYiBmaWxlLgoKCSogZGxscy9jYWJpbmV0L2ZkaS5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVJlbWVtYmVyIGRlY29tcHJlc3Npb24gc3RhdGUgZHVyaW5nIGV4dHJhY3Rpb24sIHNvIGFzIHRvIGF2b2lkCgl1bm5lY2Vzc2FyeSB3b3JrLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmgsIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglTcGxpdCBXaW4xNi8zMiBwcmludGVyIGRpYWxvZ3MuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZXBvcnQgc29tZSBuZXdzIGNhcHMgdGhhdCB3ZXJlIGFkZGVkIGluIERYNi4KCjIwMDMtMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY29tY2F0L2NvbWNhdC5zcGVjLAoJICBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dDgvZGlucHV0OC5zcGVjLAoJICBkbGxzL2RtYmFuZC9kbWJhbmQuc3BlYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvcy5zcGVjLAoJICBkbGxzL2RtaW1lL2RtaW1lLnNwZWMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXIuc3BlYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdC5zcGVjLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZS5zcGVjLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aC5zcGVjLCBkbGxzL2RtdXNpYy9kbXVzaWMuc3BlYywKCSAgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBuaHBhc3QvZHBuaHBhc3Quc3BlYywKCSAgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvbXByL21wci5zcGVjLAoJICBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsCgkgIGRsbHMvcWNhcC9xY2FwLnNwZWMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglNYWtlIHRoZSBEbGxSZWdpc3RlclNlcnZlciwgRGxsUmVnaXN0ZXJTZXJ2ZXJFeCwgRGxsVW5yZWdpc3RlclNlcnZlciwKCURsbEdldENsYXNzT2JqZWN0IGFuZCBEbGxDYW5VbmxvYWROb3cgZnVuY3Rpb25zIHByaXZhdGUgKHN1Z2dlc3RlZCBieQoJSm9uIEdyaWZmaXRocykuCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLCBkbGxzL2NhYmluZXQvZmRpLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gRVJSKCJXQVJOSU5HIikganVzdCBkb2Vzbid0IGxvb2sgcmlnaHQgOykKCS0gdHJlYXQgemVybyBmaWxlIGhhbmRsZSBhcyBpbnZhbGlkIGlmIHRoZSBjYWxsYmFjayByZXR1cm5zIGl0CgktIHByb3ZpZGUgdGhlIHNhbWUgYXJncyBhcyBXaW5kb3dzIHRvIHRoZSBPcGVuIGNhbGxiYWNrCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywgdG9vbHMvd2luZWluc3RhbGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCSdncmVwIC1xJyBpcyBub3QgcG9ydGFibGUgLT4gZG9uJ3QgdXNlIGl0LgoKCSogZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5oLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTb21lIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIFRFWENPT1JESU5ERVggY29kZS4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGRkcmF3X3RleCB0byBhZGQgdGV4dHVyZSBzbm9vcGluZyB3aXRob3V0IG5lZWRpbmcgdG8gcmVjb21waWxlLgoKMjAwMy0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIC1wcml2YXRlIGZsYWcgZm9yIGVudHJ5IHBvaW50cyB0aGF0IHNob3VsZG4ndCBiZSBpbXBvcnRlZCBmcm9tCglvdGhlciBkbGxzLgoJU3VwcG9ydCBQUklWQVRFIGZsYWcgaW4gLmRlZiBmaWxlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBKb24KCUdyaWZmaXRocykuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgaGFuZGxpbmcgb2YgY3VzdG9tIGRpYWxvZyB0ZW1wbGF0ZXMgcGFzc2VkIHRvCglHZXRPcGVuRmlsZU5hbWUuCgoJKiBtaXNjL2NwdS5jLCB3aW4zMi9uZXdmbnMuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTWVyZ2UgQ1BVIGRldGVjdGlvbiBjb2RlIGludG8gbWlzYy9jcHUuYy4KCUFkZCBzdXBwb3J0IGZvciBNaHogcmVnaXN0cnkga2V5LgoKCSogcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYzogU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJSW5jbHVkZSBwb3J0Lmggc28gd2UgZGVmaW5lIE1fUEkgb24gTWluZ3cgYnVpbGQuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNtYWxsIHNwZWxsaW5nL3B1bmN0dWF0aW9uIGZpeGVzLgoJU21hbGwgcmVwaHJhc2luZ3MuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBjYXBzIHN1cHBvcnQgKGllIG1vcmUgaW4gbGluZSB3aXRoIHdoYXQgR0wgcmVwb3J0cykuCgoJKiBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUFuZHLpIEpvaGFuc2VuIDxhbmRyZWpvaEBjMmkubmV0PgoJQWRkZWQgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgX3NldF9lcnJvcl9tb2RlKCkgZnVuY3Rpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSBzYW1lIEdVSURzIGFzIHdpbjJrIGFuZCB4cCBmb3IgZHNvdW5kIGRyaXZlcnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBidWcgd2hlcmUgYSBOVUxMIHByaW1hcnkgYnVmZmVyIHBvaW50ZXIgaXMgdXNlZCB3aGVuIHRoZQoJRGlyZWN0U291bmQgb2JqZWN0IGRpZG4ndCBjcmVhdGUgcHJvcGVybHkuCgoyMDAzLTA3LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIEdldE9iamVjdCBpcyBjYWxsZWQgd2l0aCBhIE5VTEwgcG9pbnRlciwgcmV0dXJuIHRoZSBvYmplY3QncwoJc2l6ZS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL2lucHV0LmM6CglJbXBsZW1lbnRlZCBpbnRlci10aHJlYWQgU2VuZE1lc3NhZ2VDYWxsYmFjay4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIGEgZGRyYXdfZnBzIGRlYnVnIGNoYW5uZWwKCS0gY2hlY2tlZCB3aGF0IFdpbmRvd3MgZG9lcyBvbiBlbXB0eSBzdXJmYWNlIGRlc2NyaXB0aW9uCgktIGZpeCB0aGUgR2V0VGV4dHVyZVN0YWdlU3RhZ2UgY2FsbAoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgQW5zaSB2ZXJzaW9uIG9mIFJlbmRlckZJTEVOQU1FIGFuZCBpbXBsZW1lbnQgYSBVbmljb2RlIHZlcnNpb24uCglJbXBsZW1lbnRlZCBDRlNUUl9GSUxFTkFNRSB3aXRoIFVuaWNvZGUgZmlsZW5hbWUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIEdldEZpbGVFdHRyaWJ1dGVzRXggZGVmaW5lLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRXh0ZW5kIGZvciBhZGRpdGlvbmFsIFNoZWxsIENvbnRlbnQgYW5kIEF0dHJpYnV0ZSBGbGFncy4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZTogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJTWFrZSBXSU5FX0dFVF9TT05BTUUgd29yayBvbiBOZXRCU0QuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBAMTMsIDE2MCwgMTYxLCAxNzMsIDE3NywgMTc4LCAxODksIDE5MiwgMjIxLCAyMzgsIDIzOSwgMjU3LAoJMjc4LCAyNzksIDI4NSwgMjg3LCAzNTUsIDM2MywgNDEzLCBDb2xvclJHQlRvSExTLgoJU3R1YiBAMTkxLENvbG9yQWRqdXN0THVtYS4KCU1pc2MgY2xlYW51cHMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCjIwMDMtMDctMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCURpc2FibGUgZ2NjIHN0cmljdCBhbGlhc2luZyBvcHRpbWl6YXRpb24gZm9yIG5vdy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90b2tlbi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgc2VjdXJpdHkgdG9rZW4gb2JqZWN0IGluIHdpbmVzZXJ2ZXIuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglTZXQgb2xlMzIgbmF0aXZlIGZvciBkY29tOTUvOTguCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCU1vdmUgY29tbTE2LmMgdG8gdGhlIDE2LWJpdCBzb3VyY2VzLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW46IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZCBudGRsbCB0byBsaXN0IG9mIGltcG9ydHMgZm9yIHVybG1vbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglNYWtlIHRoZSBQb3dlclBDIGludGVybG9ja2VkIGFzc2VtYmxlciBjb2RlIHZvbGF0aWxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBTdGVmYW4gSGFsbGVyIDxzaEBtb3VudHBvaW50LmNoPgoJSWdub3JpbmcgTElTVFZJRVdfU2Nyb2xsQ29sdW1ucygpIHJlcXVlc3QgaWYgbm8gY29sdW1ucyBpbiBsaXN0LgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZGVkIFBvd2VyUEMgc3VwcG9ydCBpbiBTWVNERVBTX1N3aXRjaFRvVGhyZWFkU3RhY2suCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCS0gbGVzc2VyIGFkanVzdG1lbnRzIGluIGNkbGdfUHQucmMgKGJldHRlciB2aXN1YWwpCgktIGxvY2FsaXphdGlvbiB0byB0aGUgUG9ydHVndWVzZSBvZiBCcmF6aWwgb2Ygd2luaW5ldCByZXNvdXJjZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgTG9va3VwUHJpdmlsZWdlVmFsdWVBL1cuCgoyMDAzLTA3LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wcm94eS5jOgoJU3VwcG9ydCBvYmplY3RzIHdpdGggbm8gbWV0aG9kIGRlZmluaXRpb25zIChzdWdnZXN0ZWQgYnkgSm9uCglHcmlmZml0aHMpLgoKCSogZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvcmVzb3VyY2UuaCwKCSAgZGxscy93aW5pbmV0L3JzcmMucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0VuLnJjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHN1cHBvcnQgZm9yIHByb3hpZXMgd2l0aCB1c2VybmFtZXMgYW5kIHBhc3N3b3Jkcy4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IFVzZSB0cmFjZSgpIGluc3RlYWQgb2YgcHJpbnRmKCkuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJT25seSByZXR1cm4gRkFMU0UgaW4gSUVudW1JRExpc3RfZm5OZXh0IGlmIG5vIGl0ZW0gY291bGQgYmUgZmV0Y2hlZCBhdAoJYWxsLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLCBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCBzb21lIHNtYWxsIHBvaW50ZXIgYWxpYXNpbmcgcHJvYmxlbXMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IEAyMDMuCglGaXggYSBicm93biBwYXBlciBiYWcgaW4gU3RyRm9ybWF0S0JTaXplVy4KCU1pc2MgY2xlYW51cHMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUZpeGVkIGNoZWNrIGZvciAuYmF0IGFuZCAuY21kIGV4dGVuc2lvbnMgKHNwb3R0ZWQgYnkgTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9vbGUzMi9naXQuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBHSVQgc2hvdWxkIG5vdCBkZXJlZmVyZW5jZSBwcHYgd2hlbiB1bm1hcnNoYWxsaW5nIGludGVyZmFjZS4KCS0gQ29ycmVjdGx5IGVsaW1pbmF0ZSByZWZjb3VudGluZyBpbiB0aGUgR0lULgoJLSBBZGQgd2FybmluZyB3aGVuIGdpdmVuIHJpaWQgZG9lcyBub3QgbWF0Y2guCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJTWFsbG9jU3B5IGNhbm5vdCBjYXVzZSBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgd2hlbiBjYiA9PSAwLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJRGVhbCB3aXRoIHRoZSBjYXNlIG9mIGxvYWRpbmcgYW4gZW1wdHkgUElETCBmcm9tIGEgc3RyZWFtIGJldHRlciBpbgoJSUxMb2FkRnJvbVN0cmVhbS4KCgkqIHByb2dyYW1zL3J1bmRsbDMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJcnVuZGxsMzIgcmVxdWlyZXMgYSB3aW5kb3cgZm9yIHNvbWUgZnVuY3Rpb25zIHRvIHdvcmssIHNvIGNyZWF0ZSBvbmUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbiBlbXB0eSBob29rIGZ1bmN0aW9uIGZvciBXU0FTZXRCbG9ja2luZ0hvb2sgdG8gcmV0dXJuLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBAMjgwLDM0MywzNDQuCglNaXNjIGNsZWFudXBzIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGEgaGFuZGxlIGZvciB1cmxtb24uZGxsLCBmaXggTVNWQyB3YXJuaW5nLgoKCSogZGxscy9zaGx3YXBpL2NsaXN0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggTVNWQyB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmVkdW1wL1JFQURNRTogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNwZWxsaW5nIGZpeC4KCgkqIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN1cHBvcnQgZmxvYXQgYW5kIGZ1bmN0aW9uIHB0ciBhcmdzIGJldHRlciwgLVcgd2FybmluZyBmaXhlcy4KCjIwMDMtMDctMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvdXRpbHMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQ2hhbmdlIF9fUFBDX18gZmxhZyB0byBfX3Bvd2VycGNfXy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlZmluZSBTSEdETkYuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgSUV4dHJhY3RJY29uIGZvciBBTlNJL1VuaWNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglGaXhlZCBwcm90b3R5cGVzIG9mIFZUYWJsZVByb2NTdHJ1YyBjYWxsYmFjayBmdW5jdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmgsIGluY2x1ZGUvd2luY3J5cHQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIGRlY2xhcmF0aW9uIG9mIFZUYWJsZVByb3ZTdHJ1YyBmcm9tIGRsbHMvYWR2YXBpMzIvY3J5cHQuaCB0bwoJaW5jbHVkZS93aW5jcnlwdC5oLgoKCSogZGxscy9zaGx3YXBpL2Fzc29jLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgc3R1YiBmb3IgQXNzb2NJc0Rhbmdlcm91cy4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2xvc3Nhcnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLCBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgaW5kZW50YXRpb24gb2YgbGlzdCBpdGVtcy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCZWdpbiB0byB1bmlmb3JtaXplIHNhbXBsZSBjb21tYW5kcyBpbiBkb2N1bWVudGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nbG9zc2FyeS5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTmFtZSBhbGwgc2VjdGlvbnMgb2YgdHlwZSBzZWN0MS4KCU5hbWUgdGhlIGdsb3NzYXJ5LgoKCSogZGxscy9kbWJhbmQvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvZG1iYW5kLnNwZWMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1iYW5kL3JlZ3N2ci5jLCBkbGxzL2RtY29tcG9zL01ha2VmaWxlLmluLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvcy5zcGVjLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1jb21wb3MvcmVnc3ZyLmMsCgkgIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWUuc3BlYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbWltZS9yZWdzdnIuYywgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsCgkgIGRsbHMvZG1pbWUvc29uZy5jLCBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS90cmFjay5jLAoJICBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyLnNwZWMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9nZXRsb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbWxvYWRlci9yZWdzdnIuYywKCSAgZGxscy9kbXNjcmlwdC9NYWtlZmlsZS5pbiwgZGxscy9kbXNjcmlwdC9kbXNjcmlwdC5zcGVjLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvcmVnc3ZyLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zdHlsZS9NYWtlZmlsZS5pbiwgZGxscy9kbXN0eWxlL2Rtc3R5bGUuc3BlYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9yZWdzdnIuYywgZGxscy9kbXN0eWxlL3N0eWxlLmMsCgkgIGRsbHMvZG1zeW50aC9NYWtlZmlsZS5pbiwgZGxscy9kbXN5bnRoL2Rtc3ludGguc3BlYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zeW50aC9yZWdzdnIuYywgZGxscy9kbXN5bnRoL3N5bnRoLmMsCgkgIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG11c2ljL2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9jbG9jay5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcGx1Z2lucy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfc2VnbWVudC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfc3R5bGUuYywgZGxscy9kbXVzaWMvZG11c2ljX3N5bnRoLmMsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2hlbHBlci5jLCBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL29iamVjdC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0LmMsIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9yZWdzdnIuYywKCSAgZGxscy9kbXVzaWMvdGhydS5jLCBkbGxzL2RtdXNpYzMyL01ha2VmaWxlLmluLCBpbmNsdWRlL2RtdXNpY2MuaCwKCSAgaW5jbHVkZS9kbXVzaWNpLmgsIGluY2x1ZGUvZG11c2ljcy5oOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglTcGxpdCB0aGUgZG11c2ljIGludGVyZmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTZW5kIFRWTl9JVEVNRVhQQU5ESU5HIHdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gZXhwYW5kIGEgdHJlZSBpdGVtCglfYmVmb3JlXyBjaGVja2luZyBmb3IgY2hpbGQgaXRlbXMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IG11bHRpcGxlIGNvbnNlY3V0aXZlIGRvd25sb2FkcyAoYnkgZmx1c2hpbmcgd2hlbiBuZWVkZWQgdGhlCgkgIGNvbW1hbmQgc29ja2V0KQoJLSBkZXRlY3QgYXR0ZW1wdHMgdG8gZG93bmxvYWQgbXVsdGlwbGUgZmlsZXMgYXQgdGhlIHNhbWUgdGltZQoJLSBmaXggc2l6ZSAvIGRhdGUgcmVwb3J0aW5nIHdoZW4gZW51bWVyYXRpbmcgZmlsZXMKCS0gZml4IFkySyBwcm9ibGVtIGluIE5UIHBhcnNpbmcgb2YgZmlsZXMKCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJQWx3YXlzIHVzZSBvdXIgb3duIGMybWFuLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywgcHJvZ3JhbXMvbm90ZXBhZC9MaWNlbnNlX0VuLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgTm90ZXBhZCB0byB1bmljb2RlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgR2V0U3lzdGVtV2luZG93c0RpcmVjdG9yeSwgR2V0Q3VycmVudEh3UHJvZmlsZS4KCVJlbW92ZSB3YXJuaW5ncyBidWlsZGluZyB1bmRlciBWUy5OZXQuCgoJKiBkb2N1bWVudGF0aW9uL29sZS5zZ21sOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglSZXZlcnQgYm9ndXMgc3BlbGxpbmcgImZpeCIuCgoJKiBkbGxzL21zZG1vLy5jdnNpZ25vcmUsIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vZG1vcmVnLmMsCgkgIGRsbHMvbXNkbW8vZG1vcnQuYywgZGxscy9tc2Rtby9tc2Rtby5zcGVjLCBkbGxzL21zZG1vL3JzcmMucmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gSW1wbGVtZW50ZWQgTW8qIG1ldGhvZHMuCgktIEFkZGVkIHN0dWJzIGZvciBETU9SZWdpc3RlciwgRE1PVW5yZWdpc3RlciwgRE1PRW51bSwgRE1PR2V0VHlwZXMsCgkgIERNT0dldE5hbWUuCgktIEFkZGVkIHZlcnNpb24gcmVzb3VyY2VzLgoKCSogZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBtaXNzaW5nIHJlZ2lzdGVyIGRlZmluZXMgZm9yIExpbnV4L1BQQy4KCgkqIGxvYWRlci9tb2R1bGUuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkIE1hY2gtTyAoRGFyd2luIGZpbGUgZm9ybWF0KSBzdXBwb3J0LgoKCSogZmlsZXMvZHJpdmUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgY291cGxlIG9mIGJ1Z3MgaW4gQ0RST01fR2V0U2VyaWFsOgoJIC0gaXQgd291bGQgZmFpbCBpZiBEZXZpY2VJb0NvbnRyb2wgc3VjY2VlZGVkLgoJIC0gaXQgd291bGQgbGVhayBoYW5kbGVzIGluIHNvbWUgY2FzZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZXQgZGVmYXVsdHMgZm9yIHRoZSBOZXh0L1ByZXYgYnV0dG9uLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgYSBDRE5fRk9MREVSQ0hBTkdFIG1lc3NhZ2Ugd2hlbiB3ZSBjaGFuZ2UgZm9sZGVycy4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRGlzYWJsZSBjbGllbnQgdGV4dHVyZSBzdGF0ZXMgd2hlbiBub3QgaW4gdXNlIChmYXN0IG1vZGUpIG90aGVyd2lzZQoJdHJhcHMgb2NjdXIuCglDb3JyZWN0IG51bWJlciBvZiB0ZXh0dXJlIGNvb3JkcyBzdXBwbGllZCBpbiBib3RoIGZhc3QgYW5kIHNsb3cgbW9kZS4KCURvbnQgc3VwcGx5IGEgZGVmYXVsdCBjb2xvdXIgb2Ygd2hpdGUgd2hlbiBkaWZmdXNlIG1vZGUgaXMgZGlzYWJsZWQuCglSZWVuYWJsZSBmYXN0IG1vZGUuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNaXNjIEZBUSBjaGFuZ2VzIGFuZCBpbXByb3ZlbWVudHMuCgoJKiBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEFkZGVkIHN1cHBvcnQgZm9yIFN1biBBdWRpbyBmaWxlcyBpbiB3YXZlLWZpbGUgaGFuZGxlci4KCS0gRmFsbGJhY2sgdG8gbW1pb09wZW5BIGlmIG1tb3BPcGVuVyBkb2Vzbid0IHdvcmsgKHdoZW4gdXNpbmcgV2luOXggRExMcykuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIHdyb25nIGFzc2VydCBpbiBQQ01fcm91bmQsIHdoaWNoIGRpZG4ndCBhbGxvdyB0byBjYWxsCglhY21TdHJlYW1TaXplIHdpdGggYSB2YWx1ZSBvZiAwIHRvIGNvbnZlcnQgLS0gbmF0aXZlIGFsbG93cyBpdC4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIEFWSVN0cmVhbVRpbWVUb1NhbXBsZSBhbmQgQVZJU3RyZWFtU2FtcGxlVG9UaW1lIG1ldGhvZHMgdG8KCSAgc3RheSBpbiBib3VuZHMgYW5kIGJlaGF2ZSBsaWtlIHRoZSBuYXRpdmUgb25lcy4KCS0gRmFsbGJhY2sgdG8gbW1pb09wZW5BIGlmIG1taW9PcGVuVyBkb2Vzbid0IHdvcmsgKHdoZW4gdXNpbmcgV2luOXggRExMcykuCgktIEZpeGVkIGEgYnVnIG9mIHVzaW5nIG1taW9EZXNjZW5kL21taW9Bc2NlbmQgKG9jY3VyZWQgd2l0aCBuYXRpdmUgbGlicykuCgktIFNpbGVudCBhIG1lc3NhZ2Ugd2hpY2ggY291bGQgYmUgaW5jb3JyZWN0IGZvciBub24tdmlkZW8gc3RyZWFtcy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gdXNlIFNJWkUgY29tbWFuZCB0byByZXRyaWV2ZSB0aGUgZmlsZSBzaXplIChhcyB0aGUgZmlsZSBzaXplIGlzIG5vdAoJICBwYXJ0IG9mIHRoZSBXaW5OVCBhY2tub3dsZWRnZW1lbnQgc3RyaW5nKQoJLSBmcmVlIHRoZSBoYW5kbGUgLyBjbG9zZSB0aGUgc29ja2V0IG9uIGVuZCBvZiBkb3dubG9hZAoJLSBmaXggSW50ZXJuZXRSZWFkRmlsZSBpbiB0aGUgRlRQIGNhc2UKCS0gZml4IEZUUF9SZWNlaXZlUmVzcG9uc2UKCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJS0VZX01BWCBpcyA1MTEsIHdoaWNoIGRvZXMgbm90IGZpdCBpbiBhIEJZVEUuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcsIG5ldyBzcGVjIGZpbGVzLgoKMjAwMy0wNy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgQDQ0MCwgNDQxLgoJV2FybmluZyBmaXhlcy9kb2N1bWVudGF0aW9uLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L3JlZ3N2ci5jLAoJICBkbGxzL2RkcmF3L3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGRkcmF3LmRsbCwgYW5kCglhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaCwKCSAgZGxscy9jYWJpbmV0L2ZkaS5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIGVsaW1pbmF0ZSBwZXNreSBnbG9iYWwgdmFyaWFibGVzOyBzaG91bGQgYmUgdGhyZWFkc2FmZSBub3cKCS0gZml4IG1vcmUgbWVtb3J5IGxlYWtzCgktIGZpeCBzb21lIGJ1Z3MKCS0gc29tZSBkZWNydWZ0aWZpY2F0aW9uCgktIGltcGxlbWVudCBzdXBwb3J0IGZvciBzcGxpdCBjYWJpbmV0cyBhbmQgIk5FWFRfQ0FCSU5FVCIgbm90aWZpY2F0aW9uCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgZG9jdW1lbnRhdGlvbiBjbGVhbnVwLgoKCSogdG9vbHMvYzJtYW4ucGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb3JyZWN0bHkgc3BvdCBmb3J3YXJkcy4KCVZhcmlvdXMgaW1wcm92ZW1lbnRzIGFuZCBmaXhlcyB0byB0aGUgb3V0cHV0LCBhZGQgaW5kZXggZm9yIGh0bWwuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgSW50ZXJuZXRDcmVhdGVVcmxBL1cgYW5kIENyZWF0ZVVybENhY2hlRW50cnlBLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGx3YXBpL2Fzc29jLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTW92ZSBJUXVlcnlBc3NvY2lhdGlvbnMgaW50byBzaGx3YXBpLiBEb2NzLy1XL01TVkMrKyBmaXhlcy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTVNWQyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBNU1ZDIHdhcm5pbmcuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IC1XIHdhcm5pbmdzLgoKCSogbGlicy91bmljb2RlL3N0cmluZy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJdnNucHJpbnRmVzogJSUgc2hvdWxkIG91dHB1dCBhIGxpdGVyYWwgJSBzaWduLgoKCSogbGlicy9wb3J0L21rc3RlbXBzLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNU1ZDIGRvZXNuJ3QgbGlrZSBLJlIgZnVuY3Rpb24gZGVjbGFyYXRpb25zOiB1c2UgYW5zaSBpbnN0ZWFkLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9kcmF3cHJpbS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBmcHMgZGVidWcgY2hhbm5lbCwgc28gd2UgY2FuIHNlZSBob3cgdGhlIGQzZCBjb2RlIGlzIHBlcmZvcm1pbmcgYW5kCgl0aGVpciBpbXBhY3Qgb2YgcGVyZm9ybWFuY2UgY2hhbmdlcy4KCVNldFRyYW5zZm9ybSBhbG1vc3QgcmV3cml0dGVuIGluIGEgbXVjaCBuZWF0ZXIgd2F5LCBhbmQgaW4KCWNvb3JkaW5hdGlvbiB3aXRoIGRyYXdwcmltIGl0IHNpZ25pZmljYW50bHkgcmVkdWNlcyB0aGUgbnVtYmVyIG9mCgl0aW1lcyB0aGF0IHdlIHJlbG9hZCB0aGUgbWF0cml4ZXMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEplZmYgTXVpemVsYWFyIDxtdWl6ZWxhYXJAcm9nZXJzLmNvbT4KCS0gYWRkIElNQUdFX0ZJTEVfTkVUX1JVTl9GUk9NX1NXQVAgZGVmaW5lCgktIHVwZGF0ZSBJTUFHRV9GSUxFX01BQ0hJTkVfKiBkZWZpbmVzCgktIHVwZGF0ZSBJTUFHRV9TVUJTWVNURU1fKiBkZWZpbmVzCgktIHVuY29tbWVudCBJTUFHRV9TQ05fVFlQRV9OT19QQUQgZGVmaW5lCgktIHVwZGF0ZSBJTUFHRV9TQ05fQUxJR05fKiBkZWZpbmVzCgoyMDAzLTA3LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogUHJpbnQgc3RhdHVzIGNvZGVzIGluIGhleC4KCgkqIGRsbHMvdXNlci93c3ByaW50Zi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+Cgl3dnNucHJpbnQgYWNjZXB0cyAlcCB0b28gKG9uIHdpbjJrKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0cmlwIFdTX0NBUFRJT04gYW5kIFdTX1NZU01FTlUgZm9yIGNoaWxkIGRpYWxvZ3MuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlZCBzdHViIGZvciBDcmVhdGVDbGFzc01vbmlrZXIuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBpbmNvcnJlY3Qgc3RyY2FzZWNtcCB1c2FnZS4KCgkqIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY2FsbCB3aW5pbmV0IGNhbGxiYWNrcyBpZiBkd0NvbnRleHQgaXMgbm9uLXplcm8uCgoJKiBkbGxzL21wci9wd2NhY2hlLmMsIGluY2x1ZGUvd2lubmV0d2suaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHBhc3N3b3JkIGNhY2hpbmcuCgoJKiBpbmNsdWRlL21zdmNydC9jb25pby5oLCBpbmNsdWRlL21zdmNydC9jcnRkYmcuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9laC5oLCBpbmNsdWRlL21zdmNydC9lcnJuby5oLAoJICBpbmNsdWRlL21zdmNydC9mY250bC5oLCBpbmNsdWRlL21zdmNydC9pby5oLCBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsIGluY2x1ZGUvbXN2Y3J0L21iY3R5cGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWJzdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLAoJICBpbmNsdWRlL21zdmNydC9zZWFyY2guaCwgaW5jbHVkZS9tc3ZjcnQvc2V0am1wLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3NoYXJlLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy9sb2NraW5nLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9uJ3QgcmVkZWZpbmUgX19XSU5FX1VTRV9NU1ZDUlQgKG1zdmMgd2FybmluZykuCglEb24ndCByZXR1cm4gYSB2b2lkIHZhbHVlIGluIHN3YWIoKS4KCSdsb25nIGxvbmcnIGlzIG5vdCByZWNvZ25pc2VkIGJ5IG1zdmMsIHVzZSBfX2ludDY0LgoKCSogZGxscy9zaGx3YXBpL3RocmVhZC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWlzYyBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGwuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHNvbWUgbmV3IFJ0bCogdGVzdHMuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXhlZCBtc3ZjIHdhcm5pbmcuCgoJKiBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBfX3BfX3dwZ21wdHIsIF93cGdtcHRyLgoJQXZvaWQgdXNpbmcgc3RhdGljIHN0b3JhZ2UgZm9yIHBnbSBwb2ludGVycy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXByb3ZlIHRoZSBzYW1wbGUgY29tbWVudC4KCgkqIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIEZJWE1FcyBhbmQgcHJvdG90eXBlcyBmb3Igbm93LWltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggY29tcGlsYXRpb24gdW5kZXIgVlMuTmV0LgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUhhbmRsZSBsb25nIGZpbGUgbmFtZXMgaW4gcHJlLWJ1aWxkIHN0ZXAgKHF1b3RlIHRoZW0pLgoJZGxscy9nZGkvd2luMTZkcnYgZG9lc24ndCBleGlzdCBhbnkgbW9yZS4KCgkqIGluY2x1ZGUvb2xlMi5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW5jbHVkZSBvbGVhdXRvLmggYmVmb3JlIG9sZWlkbC5oLCBhcyBwZXIgbmF0aXZlIGhlYWRlcnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGEgYnVuY2ggb2YgbWlzc2luZyBzdHVmZi4KCVVzZSBwcm9wZXIgdHlwZXMgZm9yIFNhZmVBcnJheS92YXJpYW50IHByb3RvdHlwZXMuCglDaGFuZ2UgSTEgZnVuY3Rpb25zIHRvIHRha2Ugc2lnbmVkIGNoYXJzCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkICItd3JhcCIgdG8gdGhlIHdyYXBwZWQgYXBwLCB0byBhdm9pZCBwb3NzaWJsZSBuYW1lIGNvbmZsaWN0cy4KCUFkZCB0aGUgYXBwIGRpciB0byBXSU5FRExMUEFUSC4KCjIwMDMtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkIFBvd2VyUEMgcHJvY2Vzc29yIGRldGVjdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9yZWdzdnIuYzoKCUZpeGVkIHN0cmluZy5oIGluY2x1ZGVzLgoKCSogZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL3JlZ3N2ci5jLCBkbGxzL2RtdXNpYy92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBkbXVzaWMuZGxsLAoJYW5kIGFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJUlBDUlQ0X05kckNsaWVudENhbGwyIGlzIEFUTSBoYXJkbHkgInNlbWktc3R1YiIuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUNoYW5nZSBfX2Rhcndpbl9fIHRvIF9fQVBQTEVfXy4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgVEVCIG9uIE1hYyBPUyBYLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRvIG5vdCBmb3JnZXQgdG8gc2V0IHRoZSAnaW5pdGlhbF91cGxvYWRfZG9uZScgZmxhZyAodG8gaGF2ZSBiZXR0ZXIKCSAgcGVyZm9ybWFuY2UpCgktIGJldHRlciBoYW5kbGluZyBvZiB0aGUgJ2luaXRpYWwnIGZsYWcgZm9yIGZyYW1lLWJ1ZmZlciBmbHVzaGVzCgoyMDAzLTA3LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sOiBBbmRyZXcgQm9yb2RpbiA8YWJvcm9kaW5Adm1haWwucnU+CglSZW1vdmVkIGV4dHJhIC9ib29rIHRhZy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgaW5jbHVkZS9kZHJhdy5oLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBzZXJ2ZXIvZmlsZS5oLAoJICB0b29scy93aW5lY29uZi5saWJzL2dlbmVyYWwuZW5nLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLmVuZywKCSAgdG9vbHMvd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcgZml4ZXMgKHMvb2NjdXJlZC9vY2N1cnJlZC8gYW5kIHZhcmlhbnRzKS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogV2FybmluZyBmaXguCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggc3BlYyBmaWxlIGZvciBGVFBGaW5kRmlyc3RGaWxlQS9XIGZ1bmN0aW9ucwoJLSBpbXBsZW1lbnQgcGFyc2luZyBvZiBOVCBkaXJlY3RvcnkgZm9ybWF0CgoJKiBkbGxzL3dpbmVkb3MvaW50MWEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSBpbnQxYSBCSU9TIHRpY2tzIGJlIGVxdWFsIHRvIEJJT1Mgc2VnbWVudCB0aWNrcy4KCUZpeCBidWdzIGluIGludDFhIHN1YmZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3ZlcnNpb24ucmMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvcmVnc3ZyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciwgYW5kIGFkZAoJT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgcmV0dXJuIGJ1ZmZlciBsYXJnZXIgKGZvciBleGFtcGxlIEV1cm9TaWduIGluIHVmdDggaXMgMysxCglieXRlcyBsb25nKS4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGluY2x1ZGUvdXJsbW9uLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50IFVSTERvd25sb2FkVG9GaWxlQS9XLgoKCSogaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvd2lubnQuaDoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUNoYW5nZSBfX1BQQ19fIGRlZmluZSB0byBfX3Bvd2VycGNfXy4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IENhc3BlciBIb3Juc3RydXAgPGNob3Juc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglEZWZpbmUgY29uc3RhbnRzIG9mIE1fUEkgJiBNX1BJXzIuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVNvbWUgYnJva2VuIGdhbWVzIGRvIG5vdCBwdXQgdGhlIFRFWFRVUkUgZmxhZ3MgaW4gdGhlIHN1cmZhY2UgY2Fwcy4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEZXNrdG9wIG1vZGUgc2hvdWxkIG9ubHkgZGlzYWJsZSBtb2RlIHN3aXRjaGluZywgbm90IGdhbW1hIHJhbXAKCXN1cHBvcnQuCgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmMsCgkgIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CgktIFJlbW92ZSBJZGxlKCkuCgktIEZpeCByZXBhaW50aW5nIGFydGVmYWN0cyBieSBkcmF3aW5nIG9ubHkgdGhyb3VnaCBXTV9QQUlOVC4KCS0gVW5pZnkgaGFuZCBkcmF3aW5nIGZ1bmN0aW9ucy4KCS0gMCAmIDYgdGlja3MgYXJlIG5vdyBhbHdheXMgdmVydGljYWwuCgoyMDAzLTA3LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuaCwKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2hvb2suYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oOgoJUnVuIFdIX0tFWUJPQVJEX0xMIGFuZCBXSF9NT1VTRV9MTCBob29rcyBpbiB0aGUgY29udGV4dCBvZiB0aGUgdGhyZWFkCgl0aGF0IHNldCB0aGUgaG9vay4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6ICBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hlY2sgaWYgJ0dMWF9BUkJfZ2V0X3Byb2NfYWRkcmVzcycgaXMgc3VwcG9ydGVkIGJlZm9yZSB1c2luZwoJZ2xYR2V0UHJvY0FkZHJlc3NBUkIuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglNYWtlIGluZGVudGF0aW9uIGNvbnNpc3RlbnQgKDQgY2hhcnMpLgoKCSogcHJvZ3JhbXMvY2xvY2svUkVBRE1FLCBwcm9ncmFtcy9jbG9jay9UT0RPLAoJICBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CgktIHJlbW92ZSBlc2NhcGVkIG5ld2xpbmVzLCBib2d1cyAiZXhpdCIsIHByaW50ZidzCgktIHN0YXJ0IGF0IGEgc2Vuc2libGUgc2l6ZQoJLSB0aWR5IHVwIFduZFByb2MKCS0gdXNlIGEgdGltZXIgaW5zdGVhZCBvZiBzbGVlcGluZyBpbiB0aGUgbWVzc2FnZSBsb29wIChVZ2ghKQoKCSogZGxscy9udGRsbC9maWxlLmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCXJlZ2lzdGVyX25ld19hc3luYyBzZXRzIHN0YXR1cyBhbHJlYWR5LiAgRG8gbm90IG92ZXJ3cml0ZSBpdCB3aXRoIHRoZQoJZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuCgoJKiBwcm9ncmFtcy93Y21kL0VuLnJjLCBwcm9ncmFtcy93Y21kL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCU1pbm9yIGZpeGVzIGluIFB0LCBFbiByZXNvdXJjZXMuCgoJKiBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxaQ29weTogbW9kaWZpZWQgdGltZXN0YW1wIG9mIGEgZXhwYW5kZWQgZmlsZSBoYXMgdG8gYmUgdGhlIHNhbWUgb2YKCW9yaWdpbmFsIGZpbGUuCgoJKiBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgdGhlIFNNVE9fQUJPUlRJRkhVTkcgZmxhZyBvZiBTZW5kTWVzc2FnZVRpbWVvdXQuCgoJKiBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29iamlkbC5pZGw6IFdhcm5pbmcgZml4LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbDoKCUF2b2lkIGVtcHR5IGxpbmVzIGF0IHRoZSBlbmQgb2YgZ2VuZXJhdGVkIGZpbGVzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIGZhc3QtcGF0aCBmb3IgY29sb3Ita2V5ZWQgQmx0cwoJLSBmaXggNTY1IGNvbG91ci1rZXlpbmcgY29udmVyc2lvbgoJLSBwcm9wZXJseSBoYW5kbGVzIFBpdGNoIGluIGNvbG91ciBjb252ZXJzaW9uCgktIGVhc2llciBhbmQgbGVzcyBidWdneSBVTlBBQ0tfV0lEVEggc3VwcG9ydAoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUxvYWQgZ2xYR2V0UHJvY0FkZHJlc3NBUkIgZHluYW1pY2FsbHkuCgoJKiBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHR5cG9zLgoKCSogcHJvZ3JhbXMvd2NtZC9Fbi5yYywgcHJvZ3JhbXMvd2NtZC9Gci5yYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglGcmVuY2ggdHJhbnNsYXRpb24gKyBtaXNjIGZpeGVzLgoKMjAwMy0wNy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDAzMDcwOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wNy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3dpbnByb2MuaCwgd2luZG93cy93aW5wcm9jLmM6CglTdG9yZSB3aW5kb3cgcHJvY2VkdXJlcyBpbiBhIHN0YXRpYyBhcnJheSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgaGVhcC4KCU9ubHkgYWxsb2NhdGUgdGhlIHdpbnByb2Mgc2VsZWN0b3Igd2hlbiBhY3R1YWxseSBuZWVkZWQuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglBdm9pZCBoYXJkLWNvZGVkIGNvbW1hbmQgbGluZSBsZW5ndGggbGltaXQgaW4gV0NNRF9wcm9jZXNzX2NvbW1hbmQuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUZpeGVkIGEgY291cGxlIG9mIGJ1ZmZlciBvdmVyZmxvd3MuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVVzZSBpbmxpbmUgdmVyc2lvbnMgb2YgQVBJcyBvbmx5IGludGVybmFsbHkgaW4gV2luZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jOiBDYXRhbGluIFBhdHVsZWEgPGNhdGFsaW5zQHZ2LmNhcmxldG9uLmNhPgoJT25seSBkaXNwbGF5IGZpbGVuYW1lcyB3aGVuIHNob3dpbmcgYWRkcmVzc2VzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBHcmVnIE1hcnNkZW4gPEdNYXJzZGVuQFdFU0NBTS5jb20+CglBbGxvdyBjb21tYW5kIGxpbmVzIHdpdGggcGlwZXMgdG8gYmUgcHJvY2Vzc2VkIGJ5IHdjbWQuCgoJKiB3aW4zMi9leGNlcHQuYzogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJTW9kaWZpZWQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBtZXNzYWdlIHRvIGNvbnRhaW4gYWxzbyB0aHJlYWQKCWlkZW50aWZpZXIuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUFkanVzdGVkIGdyYW1tYXIgdG8gYWNjZXB0IGFsc28gaGVscC1pZHMgZm9yIGRpYWxvZ2V4IGNvbnRyb2xzLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYzogUm9iZXJ0IEx1bm5vbiA8Ym9iQHlhcnJhYmVlLm5ldC5hdT4KCUZpeGVkIHNvbWUgY29tcGlsZSBwcm9ibGVtcyB1bmRlciBTb2xhcmlzLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJVXNlIE50UXVlcnlJbmZvcm1hdGlvblRocmVhZCB0byBpbXBsZW1lbnQgR2V0RXhpdENvZGVUaHJlYWQuCgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL2RpYWxvZzE2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgd2luZG93cy9kaWFsb2cuYzoKCU9ubHkgY29tcHV0ZSBkaWFsb2cgYmFzZSB1bml0cyBvbmNlIHdlIG5lZWQgdGhlbS4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLCBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3Rvb2xzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTcGVsbGluZyBhbmQgVVJMIGZpeGVzLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMl8xNi5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJLSBDcmVhdGUgbmV3IGZpbGUgb2xlMl8xNi5jIGZvciBvbGUyIDE2Yml0IG9ubHkgZnVuY3Rpb25zLgoJLSBNb3ZlIENMU0lERnJvbVByb2dJRDE2IHNvIGl0IGNhbiBiZSB1c2VkIGludGVybmFsbHkuCgktIENvbXBpbGUgb3V0IG1vcmUgV2luMTYgc291cmNlcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBjaGFyc2V0IGluZm9ybWF0aW9uIGFzIHVzZWQgYnkgRnJlZUJTRC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUZpeCBzcGVjIGVudHJ5IGZvciBad1NldFRpbWVyUmVzb2x1dGlvbi4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgaW5jbHVkZS93aW5ubHMuaCwgbWVtb3J5L2NvZGVwYWdlLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBDUF9VTklYQ1AuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGRSZWYgdHlwZSBpbmZvIHN0b3JlZCBpbiBTdGREaXNwYXRjaC4KCS0gRG9uJ3QgdXNlIG91dGVyIHVua25vd24gaW4gU3RkRGlzcGF0Y2guCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCBjcmFzaCB3aGVuIHRyeWluZyB0byBsb2FkIGJhZCBmb250cy4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCB0aGUgVGhyZWFkQmFzaWNJbmZvcm1hdGlvbiBjYXNlIGZvcgoJTnRRdWVyeUluZm9ybWF0aW9uVGhyZWFkLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2RtdXNpYy9oZWxwZXIuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjE2LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgaW5jbHVkZS9kZHJhdy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzaGVtZXNoLmJpej4KCVRoZSBiZWdpbmluZyBvZiBhICJidWlsZGluZyB3aW5lIiBkb2N1bWVudGF0aW9uLiBNb3JlIGRldGFpbGVkCglleHBsYW5hdGlvbiBvZiB0aGUgInNvZnQiIHZzLiAiaGFyZCIgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9udGRsbC9lbnYuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU51bGwgcGFyYW1ldGVycyBuZWVkIHRvIGJlIHF1b3RlZCBvbiB0aGUgY29tbWFuZGxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQcmVzZXJ2ZSBBL1cgd2hlbiBjcmVhdGluZyBwcm9wc2hlZXQgZGlhbG9ncy4KCjIwMDMtMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIE50UmVhZC9Xcml0ZVZpcnR1YWxNZW1vcnkuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUxvb2t1cCBDT00vTFBUIGRldmljZXMgaW4gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhleSBhcmUgdXNlZCwgaW5zdGVhZCBvZgoJbG9hZGluZyBldmVyeXRoaW5nIGF0IHN0YXJ0dXAuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2hpbWVtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL3ZnYS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVhbCBtb2RlIGNvbnRleHQgc2hvdWxkIGFsd2F5cyBoYXZlIFY4NiBmbGFnIHR1cm5lZCBvbi4KCUVudGVyaW5nIHByb3RlY3RlZCBtb2RlIHVzZXMgc2ltcGxlciBhbmQgbW9yZSByb2J1c3QgdmlydHVhbCBpbnRlcnJ1cHQKCWZsYWcgY2hlY2suCglNb3VzZSBldmVudHMgYXJlIG5vdyByZWNlaXZlZCBpbiBncmFwaGljcyBtb2Rlcy4KCUltcHJvdmVkIHRyYWNpbmcgb3V0cHV0IG9mIGludDMzIGhhbmRsZXIuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmVkIGEgbm8gbG9uZ2VyIHVzZWQgaGVhZGVyLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggRlBTIGNvbXB1dGF0aW9uCgktIHNvbWUgVFJBQ0VpbmcgZml4ZXMKCS0gb3B0aW1pemUgQmx0RmFzdCBsb2NraW5nIHJlY3RhbmdsZXMKCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy93aW4uaW5pOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCTYgbmV3IG1jaSBleHRlbnNpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXhlZCBhIHR5cG8gaW4gdGhlIHByZXZpb3VzIFNIR2V0RmlsZUluZm8oKSBwYXRjaC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglPbmx5IHB1dCAncHVyZScgR0wgMS4yIGNhbGxzIGluIHRoZSAnb3BlbmdsX25vcm0uYycgZmlsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGFsbG9jYXRpb24vY29ycnVwdGlvbiBidWcgd2hlbiBncm93aW5nIHRoZSBmb250IGNhY2hlLgoKCSogaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOXR5cGVzLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVNvbWUgZml4ZXMgb24gZDNkOCBhbmQgZDNkOSBoZWFkZXJzLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaGFuZGxpbmcgb2Ygc3ludGhlc2l6ZWQgZGF0YS4KCURvbid0IHJlcG9ydCBlcnJvcnMgd2hlbiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gb3duZXIuCglSZWludGVncmF0ZSB0aGUgQ09NUE9VTkRfVEVYVCBwYXRjaCBieSBLdXNhbmFnaSBLb3VpY2hpLgoKCSogZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3ZvbHVtZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNvbWUgY29zbWV0aWMgZml4ZXMKCS0gZml4IGEgYnVnIG9uIElEaXJlY3QzRFZvbHVtZThJbXBsX0FkZERpcnR5Qm94CgoyMDAzLTA3LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwKCSAgbGlicy93aW5lL2xvYWRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgYSBmaWxlX2V4aXN0cyBhcmd1bWVudCB0byB3aW5lX2RsbF9sb2FkIHRvIGFsbG93IGNoZWNraW5nCgl3aGV0aGVyIGEgZmFpbGVkIGRsbCBsb2FkIGlzIGJlY2F1c2UgdGhlIGZpbGUgZGlkbid0IGV4aXN0OyBtb3JlCglyb2J1c3QgdGhhbiB0cnlpbmcgdG8gZ3Vlc3MgdGhlIGNvbnRlbnRzIG9mIHRoZSBlcnJvciBzdHJpbmcuLi4KCUdldCByaWQgb2YgQlVJTFRJTjMyX2Rsb3Blbi4KCgkqIHNlcnZlci9ob29rLmMsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwKCSAgc2VydmVyL3VzZXIuaDoKCVN0b3JlIHRoZSBob29rIHRhYmxlIGluIHRoZSB0aHJlYWQgcXVldWUgaW5zdGVhZCBvZiB0aGUgdGhyZWFkCglzdHJ1Y3R1cmUsIGFuZCBtYWtlIHN1cmUgdGhlIHF1ZXVlIGlzIGFsbG9jYXRlZCB3aGVuIHNldHRpbmcgYSBob29rLgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmMsIGZpbGVzL3NtYi5oOgoJRml4ZWQgY29tcGlsZSB3aGVuIGZ1bmN0aW9ucyBhcmUgbm90IGlubGluZWQuCgoJKiBzZXJ2ZXIvZmQuYzogT25lIG1vcmUgd29ya2Fyb3VuZCBmb3IgYSBtaXNzaW5nIE5GUyBsb2NrIGRhZW1vbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogU3RlcGhhbiBCRVVaRSA8ZmJpZ2d1bkBob3RtYWlsLmNvbT4KCS0gRml4ZWQgaUluZGV4IHVzZSBpbiBTSEdldEZpbGVJbmZvQSAoYXMgb2YgTVNETiwgaUluZGV4IGlzIGNvcGllZCBpbgoJICB0aGUgaUljb24gZmllbGQgb2YgcHNmaSkKCS0gUmVtb3ZlZCBETExfVEhSRUFEX0FUVEFDSCBhbmQgRExMX1RIUkVBRF9ERVRBQ0ggY2FzZXMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUltcGxlbWVudCBVcGRhdGVUZXh0dXJlIGZvciAyRCB0ZXh0dXJlcyBvbmx5LgoJSGFuZGxlIGFscGhhb3AgZGlzYWJsZWQgYnV0IGNvbG9yIG9wIG5vdC1kaXNhYmxlIGluIGEgbW9yZSBhcHByb3ByaWF0ZQoJd2F5IChEb2NzIHNheSB0aGlzIGlzIGFuIGlsbGVnYWwgc3RhdGUgYW5kIHRoZW4gcHJvY2VlZCB0byB1c2UgaXQpLgoJVHJhY2Ugb3V0IHRleHR1cmVzIGFzIHRoZXkgYXJlIGNyZWF0ZWQuCglVcGRhdGUgdGhlIGNvbW1lbnRzIGFyb3VuZCB0aGUgZGVidWcgY29kZSBhbmQgY29tcGxldGUgdGhlIGRlYnVnZ2luZwoJc2V0IHNvIHRleHR1cmVzIHdoaWNoIGFyZSB1c2VkIGluIHRoZSBnYW1lIGNhbiBhbHNvIGJlIHZpZXdlZC4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBJbXByb3ZlIFF1ZXJ5SW50ZXJmYWNlIEZJWE1FIG1lc3NhZ2UuCgktIEFkZCBzdHVicyBmb3IgSU1lZGlhRmlsdGVyIGludGVyZmFjZSBpbiBJR3JhcGhCdWlsZGVyLgoJLSBJbXBsZW1lbnQgc29tZSBzaW1wbGUgbWV0aG9kcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFeGl0IGVhbGllciBmcm9tIExDTWFwU3RyaW5nQSBpbiB0aGUgY2FzZSBvZiBMQ01BUF9TT1JUS0VZLgoJRG9uJ3QgcmVseSBvbiBjb21wdXRpbmcgc3RyaW5nIGxlbmd0aCBieSBNdWx0aUJ5dGVUb1dpZGVDaGFyIGluCglDb21wYXJlU3RyaW5nQSwgZG8gaXQgbWFudWFsbHkuCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL2phY2suYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlIHN0YW5kYXJkIGRlYnVnZ2luZyBtYWNyb3MgZm9yIGphY2suCglKQUNLX1NPTkFNRSAtPiBTT05BTUVfTElCSkFDSyBzbyB3ZSBkbyBub3QgbmVlZCB0aGUgZGV2ZWwgc3ltbGluawoJdGhlcmUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRFBNSSBleGNlcHRpb25zIG9ubHkgaGFwcGVuIG9uIGkzODYuCgoyMDAzLTA3LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9jYWJpbmV0L2ZkaS5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdHdhaW4vdHdhaW4uaCwgZGxscy91c2VyL2xzdHIuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCBzb21lIGNvbW1vbiBzcGVsbGluZyBlcnJvcnMuCgoJKiBsb2FkZXIvdGFzay5jOgoJQXZvaWQgYWNjZXNzaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gVEFTS19DcmVhdGUgKHNwb3R0ZWQgYnkKCVJvYmVydCBTaGVhcm1hbikuCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IGNhc3RzIHdoZW4gYXNzaWduaW5nIE5VTEwgdG8gaGFuZGxlcy4KCgkqIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFrZSBJbml0IGFuZCBJbml0QXVkaW8gcmV0dXJuIGFuIGVycm9yIHdoZW4gbm8gYXVkaW8gZHJpdmVyIGlzCglhdmFpbGFibGUuCglGaXggY3Jhc2ggaW4gSW5pdEF1ZGlvIHdoZW4gcmVsZWFzaW5nIHRoZSBkc291bmQgb2JqZWN0LgoKCSogbGlicy9wb3J0L2ludGVybG9ja2VkLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIGlzeW5jIHRvIHRoZSBpbnRlcmxvY2tlZCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUG93ZXJQQyBpbmxpbmUgdmVyc2lvbnMgb2YgdGhlIGludGVybG9ja2VkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9tc2FjbS93aW5lYWNtLmgsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5tbS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gcmVuYW1lZCB3aW5tbS5PcGVuRHJpdmVyVyBpbnRvIHdpbm1tLk9wZW5Ecml2ZXIKCS0gcmVwbGFjZWQgYWxsIGludGVyLURMTCBjYWxscyAobXNhY20gYW5kIG1zdmlkZW8pIHRvIE9wZW5Ecml2ZXJBIHdpdGgKCSAgT3BlbkRyaXZlciAodW5pY29kZSBmb3JtKQoJLSBhcyBhIGNvbnNlcXVlbmNlLCBkcml2ZXIgbmFtZSBoYW5kbGluZyBpbiBtc2FjbSBpcyBub3cgbW9zdGx5CgkgIHVuaWNvZGUKCS0gbW92ZWQgVXNlcllpZWxkMTYgYW5kIFVuTWFwTFMgY2FsbCBvdXQgb2YgdGhlIDMyYml0IHBhcnQgb2Ygd2lubW0KCgkqIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgMiB0eXBvcyBpbiBteSBsYXN0IHBhdGNoLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGluY2x1ZGUvdmZ3Lmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgbWVtb3J5IGxlYWsgaW4gQVZJU2F2ZU9wdGlvbnMuCgktIEltcGxlbWVudGVkIEFWSVNhdmVWVyBtZXRob2QuCgktIFNlbWktc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgQ3JlYXRlRWRpdGFibGVTdHJlYW0gbWV0aG9kLgoJLSBBZGRlZCBzdXBwb3J0IGZvciBjcmVhdGlvbiBvZiBpbnRlcmxlYXZlZCBBVkkgZmlsZXMuCgktIEZpeGVkIGNyZWF0aW9uIG9mIGluZGV4IHRhYmxlIGluIEFWSSBmaWxlcy4KCS0gQWRkZWQgZGVjbGFyYXRpb24gZm9yIElBVklTdHJlYW1pbmcgaW50ZXJmYWNlLgoJLSBBZGRlZCBzb21lIG1vcmUgbWFjcm9zLgoJLSBGaXhlZCBzb21lIG1pbm9yIGJ1Z3MuCgoJKiBkbGxzL2QzZDgvdGV4dHVyZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIE1JUE1BUCBsZXZlbHMgaXMgcmVzZXQgd2hlbiByZWJpbmRpbmcgYW4gZXhpc3RpbmcgdGV4dHVyZSB0byBhCgl0ZXh0dXJlIHVuaXQuCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBHZXRMZXZlbENvdW50IHRvIHRoZSBiYXNldGV4dHVyZSBjbGFzcy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglPbmx5IHJlbGVhc2Ugb2JqZWN0IGlmIHdlIGFjdHVhbGx5IGdvdCBpdC4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIHBpeGVsIGNvb3JkaW5hdGVzIHBvaW50IHRvIHRoZSBib3R0b20gbGVmdCBvZiB0aGUgcGl4ZWwgbm90IHRoZQoJbWlkZGxlLgoKCSogb2JqZWN0cy90ZXh0LmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaEBzaGVtZXNoLmJpej4KCURvbid0IGNhbGwgdGhlIHJlb3JkZXJpbmcgZnVuY3Rpb24gaWYgdGhlIHN0cmluZyBsZW5ndGggaXMgMC4gVGhpcwoJZWxpbWluYXRlcyBhIG5vaXN5IEZJWE1FIGFib3V0IElDVSByZXR1cm5pbmcgYW4gaW5jb3JyZWN0IGVycm9yIGNvZGUuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggY29tcGlsYXRpb24gZHVlIHRvIG5hbWVsZXNzIHN0cnVjdHMgYW5kIHVuaW9ucy4KCjIwMDMtMDctMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3dwcC9wcmVwcm9jLmMsIGxpYnMvd3BwL3dwcC5jLCBsaWJzL3dwcC93cHBfcHJpdmF0ZS5oOgoJQ3JlYXRlIGEgbmV3IGxpc3Qgb2YgZGVmaW5lZCBzeW1ib2xzIHdoZW4gcGFyc2luZyBhIGZpbGUsIHRvIGFsbG93CglyZWN1cnNpdmUgcGFyc2luZyBvZiBtdWx0aXBsZSBmaWxlcy4KCgkqIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGluY2x1ZGUvYXhleHRlbmQuaWRsLCBpbmNsdWRlL2RtdXNpY2MuaCwgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91dWlkcy5oLCBsaWJzL3V1aWQvdXVpZC5jOgoJQWRkIHN0cm1pZi5oIHRvIHRoZSBoZWFkZXJzIGluY2x1ZGVkIGluIGxpYnV1aWQuCglGaXhlZCBhIGZldyBoZWFkZXIgY29uZmxpY3RzLgoKCSogZGxscy9kZXZlbnVtLy5jdnNpZ25vcmUsIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywgZGxscy9kZXZlbnVtL2RldmVudW0ucmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLCBkbGxzL2RldmVudW0vZmFjdG9yeS5jLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgRGV2RW51bSBkbGwuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBJRmlsdGVyTWFwcGVyMi4KCgkqIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9zdHJtaWYuaCwKCSAgaW5jbHVkZS91bmtud24uaCwgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCUFkZCAjaWZkZWZzIGFyb3VuZCBmb3J3YXJkcyBhbmQgaW50ZXJmYWNlcyBsaWtlIE1JREwgZG9lcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSByZW1vdmVkIG5leHQgJiBwcmV2IGZpZWxkcyBmcm9tIFdJTkVfTU9EUkVGIGFuZCBpbXBsZW1lbnQgaW5zdGVhZAoJICB0aGUgdGhyZWUgbGlua2VkIGxpc3RzIGluIExEUl9NT0RVTEUKCS0gYWRkZWQgUEVCX0xEUl9EQVRBIHN0cnVjdHVyZSB0byBQRUIKCS0gcmVtb3ZlZCBhIGNvdXBsZSBvZiBubyBsb25nZXIgbmVlZGVkIGdsb2JhbCAmIHN0YXRpYyB2YXJpYWJsZXMKCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lZG9zL2hpbWVtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBtZW1vcnkvaW5zdHIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVN0YXJ0IHByb2Nlc3NpbmcgYXN5bmNocm9ub3VzIERPUyBldmVudHMgaW4gRFBNSSBtb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJQWRkZWQgZDNkOSBkbGwuCgoJKiBkbGxzL2QzZDkvLmN2c2lnbm9yZSwgZGxscy9kM2Q5L01ha2VmaWxlLmluLCBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOS9kM2Q5LnNwZWMsIGRsbHMvZDNkOS9kM2Q5X21haW4uYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsCgkgIGRsbHMvZDNkOS9yZXNvdXJjZS5jLCBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvc3dhcGNoYWluLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJzaW9uLnJjLAoJICBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsIGRsbHMvZDNkOS92b2x1bWUuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywgZGxscy9kM2Q5L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLAoJICBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q5LmgsIGluY2x1ZGUvZDNkOXR5cGVzLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc29tZSBjbGVhbnVwcyBhbmQgZml4ZXMgb24gZDNkOCBhbmQgZDNkOSBoZWFkZXJzCgktIGEgbG90IG9mIHN0dWJzIGZvciBkM2Q5LmRsbAoKCSogbGlicy91dWlkL01ha2VmaWxlLmluLCBsaWJzL3V1aWQvZHg5Z3VpZC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBkM2Q5IGd1aWRzLgoKMjAwMy0wNi0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRlc3RzIGZvciBOT1JNX0lHTk9SRU5PTlNQQUNFIGFuZCBOT1JNX0lHTk9SRVNZTUJPTFMgaW4gdGhlCglMQ01hcFN0cmluZyhMQ01BUF9TT1JUS0VZKSBicmFuY2guCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmM6CglJbXBsZW1lbnRlZCBOdERlbGF5RXhlY3V0aW9uIGFuZCBtYWtlIFNsZWVwIGNhbGwgaXQuCglUaGUgaGFuZGxlIGNvdW50IG11c3Qgbm90IGJlIDAgaW4gTnRXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIChzcG90dGVkIGJ5CglUcm95IFJvbGxvKS4KCgkqIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBuaHBhc3QvbWFpbi5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2lzeXMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5jLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc25tcGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zbm1wYXBpL21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywKCSAgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS93aW5tbS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRm9yIGFsbCBETExzIHdpdGggZGVmaW5lZCBEbGxNYWluIGFuZCB3aGljaCBkbyBub3QgcmVxdWlyZQoJRExMX1RIUkVBRF9BVFRBQ0gvRExMX1RIUkVBRF9ERVRBQ0ggbm90aWZpY2F0aW9ucywgY2FsbAoJRGlzYWJsZVRocmVhZExpYnJhcnlDYWxscygpIGluIG9yZGVyIHRvIHNsaWdodGx5IGltcHJvdmUgcGVyZm9ybWFuY2UKCW9uIHRocmVhZCBjcmVhdGlvbi9leGl0aW5nLgoKCSogZGxscy9kbXVzaWMvaGVscGVyLmM6IEZpeGVkIHdhcm5pbmcuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2F4Y29yZS5pZGwsCgkgIGluY2x1ZGUvYXhleHRlbmQuaWRsLCBpbmNsdWRlL2RldmVudW0uaWRsLCBpbmNsdWRlL2R5bmdyYXBoLmlkbCwKCSAgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS9zdHJtaWYuaWRsOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkZWQgRFNob3cgaGVhZGVycy4KCS0gQWRkZWQgbmVlZGVkIGNvbnN0J3MgaW4gRmlsdGVyR3JhcGggaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfUHQucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUHQucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX1B0LnJjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUHQucmMsIGRsbHMvd2luZXBzL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19QdC5yYywgZGxscy93aW5tbS93aW5tbV9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJLSBMb2NhbGl6YXRpb24gdG8gUG9ydHVndWVzZSBvZiBCcmF6aWwKCS0gUmV2aXNpb24gYW5kIGFkZGl0aW9uIG9mIG1pc3NpbmcgcmVzb3VyY2VzCgktIE1pbm9yIHR5cG8gZml4IGFuZCBjb2RlcGFnZSBmaXggaW4gcHJvZ3JhbXMvd2luZWZpbGUgcmVzb3VyY2UuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxvY2FsaXphdGlvbiB0byBQb3J0dWd1ZXNlIG9mIEJyYXppbCBvZiBSRUFETUUgZmlsZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBDYXRhbGluIFBhdHVsZWEgPGNhdGFsaW5zQHZ2LmNhcmxldG9uLmNhPgoJRml4ZWQgVW5pY29kZSBzdHJpbmcgb3V0cHV0LgoKCSogZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvaGVscGVyLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCUZpbGUgbG9hZGluZyBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL3dpbm50LmgsIG1pc2MvY3B1LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUEZfUEFFX0VOQUJMRUQgYW5kIFBGX1hNTUk2NF9JTlNUUlVDVElPTlMgZGVmaW5lcy4KCURldGVjdCB0aGVtIGFuZCAzRE5PVyBhbmQgWE1NSV9JTlNUUlVDVElPTlMgZm9yIExpbnV4LgoKCSogZGxscy93aW5tbS93aW5lYXVkaW9pby9NYWtlZmlsZS5pbjoKCVJvYmVydCBMdW5ub24gPGJvYkB5YXJyYWJlZS5uZXQuYXU+CglBZGRlZCBsaWJ1dWlkIHRvIHdpbmVhdWRpb2lvIG1ha2VmaWxlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kcGFkZHIuaCwgaW5jbHVkZS9kcGxheTguaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgRGlyZWN0UGxheTggaGVhZGVycy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvc3lzdGVtLmMsIGRsbHMvdXNlci9jb21tMTYuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jOgoJUmVwbGFjZSBjYWxscyB0byBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIHdpdGggYSAwIGNvdW50IGJ5IGNhbGxzIHRvCglTbGVlcEV4LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEdldC9TZXRQcm9wVyBuZWVkcyBhIFVuaWNvZGUgc3RyaW5nLgoKCSogZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIGludGVyZnJhbWUgY29tcHJlc3Npb24gLSBub3cgd29ya3MgZm9yIFJMRTQgYW5kIFJMRTguCgktIEZpeGVkIGFsaWdubWVudCBvZiBSTEU0IGluIGFic29sdXRlIG1vZGUuCgktIEltcHJvdmVkIGNvbXByZXNzaW9uIChzbWFsbGVyIG91dHB1dCkuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCS0gYWRkZWQgMiBkbGxzCgktIGFkZGVkIGxpbmsgdG8gYXBpbGlzdAoJLSByZW1vdmVkIHN1Z2dlc3Rpb24gdG8gbG9vayBhdCBCeXRlIGZyb20gMjAgeWVhcnMgYWdvCgoJKiBtaXNjL2NwdS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIENQVSBkZXRlY3Rpb24gZm9yIEZyZWVCU0QgYW5kIFA0LgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciB2aWRlbyBjb21wcmVzc29yL2RlY29tcHJlc3NvciBkeW5hbWljIGluc3RhbGxhdGlvbi4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3RpbWVyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIHRpbWVyIElSUSBoYW5kbGVyIHJlZ3VsYXIgYnVpbHRpbiBpbnRlcnJ1cHQgaGFuZGxlciBpbnN0ZWFkIG9mCgl1c2luZyBhbiBhc3NlbWJsZXIgc3R1Yi4KCjIwMDMtMDYtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBpbmNsdWRlL2ltYWdlaGxwLmg6CglSZW1vdmVkIFdpbmUtc3BlY2lmaWMgZGVmaW5pdGlvbiBmcm9tIGV4cG9ydGVkIGhlYWRlciAoc3BvdHRlZCBieQoJU3RldmVuIEVkd2FyZHMpLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CgkzRCBidWZmZXIgYW5kIGxpc3RlbmVyIHJlZmVyZW5jZSBjb3VudHMgc2hvdWxkIGJlIGZpeGVkLgoJM0Qgc291bmQgbm93IHBsYXlzIGluIDNELgoJQ09NIGludGVyZmFjZXMgc2hvdWxkIGJlIGNvcnJlY3QgZm9yIGJ1ZmZlcnMgYW5kIDNEIHN0dWZmLiBUaGUgQ09NCglpbnRlcmZhY2UgaXMgYnJva2VuIG9uIG5vdGlmaWNhdGlvbnMgYnV0IEkgd2lsbCBmaXggdGhhdCBuZXh0LgoJRml4ZWQgdGhlIGJ1ZyB3aGVuIGNsb3NpbmcgYW5kIG9wZW5pbmcgdGhlIHNhbWUgb3IgYW5vdGhlciBzb3VuZAoJZGV2aWNlIHF1aWNrbHkuCglGaXhlZCBzb21lIGxvY2tpbmcgYnV0IHRoZXJlIGlzIGEgbG90IG9mIHdvcmsgbGVmdCB5ZXQuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglTdG9yZSBQcmludFN0cnVjdHVyZXMgaW4gYSB3aW5kb3cgcHJvcGVydHkgaW5zdGVhZCBvZiBleHRyYSB3aW5kb3cKCWJ5dGVzLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kcmF3cHJpbS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGN1cnJlbnRseSBhbHdheXMgdXNlIHNsb2F3IHBhdGggYXMgZmFzdCBwYXRoIGhhdmUgc29tZSBwcm9ibGVtcwoJLSBmaXggQVBJRU5UUlkgbWlzbWF0Y2hlZCB2YWx1ZSB1c2VkIGJ5IGdsIGZ1bmMgcG9pbnRlcnMgKGluCgkgIGQzZGNvcmVfZ2wuaCkKCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9iaWRpLmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZm9udC5jLAoJICBvYmplY3RzL3RleHQuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHNoZW1lc2guYml6PgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIHJlb3JkZXJpbmcgYWxnb3JpdGhtIGJ5IGNhbGxpbmcgSUNVJ3MgcmVvcmRlcmluZwoJZnVuY3Rpb25zLgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wbHVnaW5zLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZG11c2ljL2RtdXNpY19zZWdtZW50LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19zdHlsZS5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfc3ludGguYywKCSAgZGxscy9kbXVzaWMvaGVscGVyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaHVnZSBDT00gY2xlYW51cDogb25seSBrZWVwIGRtdXNpYzggdmVyc2lvbiBvZiBpbnRlcmZhY2VzIHdoZW4gdGhleQoJICBpbmhlcml0IGZyb20gZG11c2ljMSBhbmQgZG11c2ljMiB2ZXJzaW9uLiBBbmQgYWx3YXlzIHVzZSBkbXVzaWM4CgkgIHZlcnNpb25zIHdoZW4gYXZhaWxhYmxlLgoJLSByZWFsbHkgc3R1cGlkIGltcGxlbWVudGF0aW9uIG9mIElEaXJlY3RNdXNpY0xvYWRlcjg6OkdldE9iamVjdCB3aGVuCgkgIElEaXJlY3RNdXNpY1NjcmlwdCB3YW50ZWQKCS0gcmVhbGx5IGZpeCB0aGUgcmVmY291bnQgcHJvYmxlbSBmb3VuZCBieSBSb2sKCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUVuYWJsZSBhbGwgb2YgRGxsTWFpbigpLCBldmVuIGlmIGlmIG5vdCBNWl9TVVBQT1JURUQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgbGluZSB3cmFwcGluZyBmb3IgYSBGSVhNRS4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCURpc3BsYXkgdGhlIGludGVycnVwdCBudW1iZXIgaW4gaGV4YWRlY2ltYWwuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gU2lsZW5jZSB0aGUgRklYTUUgYWJvdXQgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBzaW5jZSBpdCBpcyB3cm9uZyBmb3IKCSAgOTkuOSUgb2YgY2FzZXMgKGlmIE1TIHdpbGwgZXZlciB1c2UgdGhlIGZlYXR1cmUgYXQgYWxsKQoJLSBBZGRlZCBzdHVicyBmb3IgSVR5cGVDb21wIGludGVyZmFjZSBpbiBJVHlwZUxpYgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBJVHlwZUNvbXAgaW4gSVR5cGVJbmZvCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGluY2x1ZGUvd2lubmxzLmgsCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy91bmljb2RlL21idG93Yy5jLAoJICBsaWJzL3VuaWNvZGUvc29ydGtleS5jLCBsaWJzL3VuaWNvZGUvdXRmOC5jLCBsaWJzL3VuaWNvZGUvd2N0b21iLmMsCgkgIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBMQ01hcFN0cmluZyB1c2luZyB1bmljb2RlIGNvbGxhdGlvbiB0YWJsZXMuCglNb3ZlIENvbXBhcmVTdHJpbmcgYW5kIExDTWFwU3RyaW5nIHRvIGRsbHMva2VybmVsL2xvY2FsZS5jLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zeXNkZXBzLmMsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIHNjaGVkdWxlci9maWJlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBzb21lIG9mIHRoZSBwcm9jZXNzIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCVJlbW92ZWQga2VybmVsIGRlcGVuZGVuY2llcyBmcm9tIHN5c2RlcHMuYyBhbmQgbW92ZWQgaXQgdG8gZGxscy9udGRsbC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglNYWtlIHN1cmUgdG8gcmV0dXJuIGFuIGVycm9yIGlmIGxvYWRfZGxsIGZhaWxzIGJlY2F1c2UgdGhlIGxvYWQgb3JkZXIKCWlzIGVtcHR5LgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglSZW1vdmVkIEZJWE1FIHdoZW4gbG9hZGluZyBzZWNvbmQgZXhlIGZpbGUuCgoJKiBsaWJzL3VuaWNvZGUvY29sbGF0aW9uLmMsIGxpYnMvdW5pY29kZS9jcG1hcC5wbDoKCUFkZGVkIGdlbmVyYXRpb24gb2YgdGFibGUgb2YgY29sbGF0aW9uIGtleXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCURtaXRyeSBUaW1vc2hrb3YpLgoKCSogZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgaW5jbHVzaW9uIG9mIDxzeXMvdGltZS5oPiBuZWVkZWQgZm9yIHN0cnVjdCB0aW1ldmFsIGRlY2xhcmF0aW9uLgoJUHJvdGVjdCBzb21lIG9wdGlvbmFsIGhlYWRlcnMgZnJvbSBpbmNsdXNpb24uCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglJbXBsZW1lbnRlZCBPbGVEcmF3LgoKMjAwMy0wNi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvdW5pY29kZS9jXzAzNy5jLCBsaWJzL3VuaWNvZGUvY18wNDIuYywgbGlicy91bmljb2RlL2NfMTAwMDAuYywKCSAgbGlicy91bmljb2RlL2NfMTAwMDYuYywgbGlicy91bmljb2RlL2NfMTAwMDcuYywKCSAgbGlicy91bmljb2RlL2NfMTAwMjkuYywgbGlicy91bmljb2RlL2NfMTAwNi5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDA3OS5jLCBsaWJzL3VuaWNvZGUvY18xMDA4MS5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDI2LmMsIGxpYnMvdW5pY29kZS9jXzEyNTAuYywgbGlicy91bmljb2RlL2NfMTI1MS5jLAoJICBsaWJzL3VuaWNvZGUvY18xMjUyLmMsIGxpYnMvdW5pY29kZS9jXzEyNTMuYywgbGlicy91bmljb2RlL2NfMTI1NC5jLAoJICBsaWJzL3VuaWNvZGUvY18xMjU1LmMsIGxpYnMvdW5pY29kZS9jXzEyNTYuYywgbGlicy91bmljb2RlL2NfMTI1Ny5jLAoJICBsaWJzL3VuaWNvZGUvY18xMjU4LmMsIGxpYnMvdW5pY29kZS9jXzIwODY2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzIwOTMyLmMsIGxpYnMvdW5pY29kZS9jXzI4NTkxLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTkyLmMsIGxpYnMvdW5pY29kZS9jXzI4NTkzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk0LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk2LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk4LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk5LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjAwLmMsIGxpYnMvdW5pY29kZS9jXzI4NjAzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjA0LmMsIGxpYnMvdW5pY29kZS9jXzI4NjA1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjA2LmMsIGxpYnMvdW5pY29kZS9jXzQyNC5jLCBsaWJzL3VuaWNvZGUvY180MzcuYywKCSAgbGlicy91bmljb2RlL2NfNTAwLmMsIGxpYnMvdW5pY29kZS9jXzczNy5jLCBsaWJzL3VuaWNvZGUvY183NzUuYywKCSAgbGlicy91bmljb2RlL2NfODUwLmMsIGxpYnMvdW5pY29kZS9jXzg1Mi5jLCBsaWJzL3VuaWNvZGUvY184NTUuYywKCSAgbGlicy91bmljb2RlL2NfODU2LmMsIGxpYnMvdW5pY29kZS9jXzg1Ny5jLCBsaWJzL3VuaWNvZGUvY184NjAuYywKCSAgbGlicy91bmljb2RlL2NfODYxLmMsIGxpYnMvdW5pY29kZS9jXzg2Mi5jLCBsaWJzL3VuaWNvZGUvY184NjMuYywKCSAgbGlicy91bmljb2RlL2NfODY0LmMsIGxpYnMvdW5pY29kZS9jXzg2NS5jLCBsaWJzL3VuaWNvZGUvY184NjYuYywKCSAgbGlicy91bmljb2RlL2NfODY5LmMsIGxpYnMvdW5pY29kZS9jXzg3NC5jLCBsaWJzL3VuaWNvZGUvY184NzUuYywKCSAgbGlicy91bmljb2RlL2NfODc4LmMsIGxpYnMvdW5pY29kZS9jXzkzMi5jLCBsaWJzL3VuaWNvZGUvY185MzYuYywKCSAgbGlicy91bmljb2RlL2NfOTQ5LmMsIGxpYnMvdW5pY29kZS9jXzk1MC5jLCBsaWJzL3VuaWNvZGUvY2FzZW1hcC5jLAoJICBsaWJzL3VuaWNvZGUvd2N0eXBlLmM6CglVcGRhdGVkIHRvIHRoZSBsYXRlc3QgVW5pY29kZSBzdGFuZGFyZC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9zbWIuYywKCSAgZmlsZXMvc21iLmgsIGluY2x1ZGUvYXN5bmMuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG1hZGUgYXN5bmMuaCByZWFkeSBmb3IgdXNlIGluIG50ZGxsOiByZXBsYWNlZCBhbGwgY2FsbHMgdG8ga2VybmVsMzIKCSAgZnVuY3Rpb25zIHdpdGggbnRkbGwgZXF1aXZhbGVudAoJLSByZXBsYWNlZCBzdGF0dXMgc2V0dGVyL2dldHRlciBmb3Igd2luZSBhc3luYyBzdHJ1Y3R1cmVzIHdpdGggZGlyZWN0CgkgIGFjY2VzcyB0byBhIChub3cgaW5jbHVkZWQpIElPX1NUQVRVU19CTE9DSyBzdHJ1Y3R1cmUKCS0gc2luY2Ugd2Ugbm93IGhhdmUgYSBJT19TVEFUVVNfQkxPQ0sgaW4gYXN5bmNfcHJpdmF0ZSwgd2Ugbm8gbG9uZ2VyCgkgIG5lZWQgaW4gbW9zdCBvZiB0aGUgdXNlciAoZGVyaXZhdGVkKSBzdHJ1Y3R1cmVzIGEgZmllbGQgZm9yCgkgIExQT1ZFUkxBUFBFRCAoaXQncyBzdG9yZWQgYXMgdGhlIElPX1NUQVRVU19CTE9DSykKCS0gcmV3cm90ZSB0aGUgYXN5bmMuaCB1c2VycyBhY2NvcmRpbmdseQoJLSBpbXBsZW1lbnRlZCBudGRsbC5OdHtSZWFkfFdyaXRlfUZpbGUgYW5kIGxldAoJICBrZXJuZWwzMi57UmVhZHxXcml0ZX1GaWxlKEV4KT8gdXNlIHRob3NlIG5ldyBudGRsbCBmdW5jdGlvbnMKCS0gcmV3cm90ZSBzbWIgcmVhZC93cml0ZSBpbnRlcmZhY2VzIHRvIGJlIG1vcmUgbnRkbGwgc3R5bGlzaCAobm8KCSAgb3ZlcmxhcHBlZCB5ZXQpCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgZGJnaGVscC5oIGhlYWRlci4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBhIHNtYWxsIHRlc3QgZm9yIHByb2Nlc3MgZXhpdCBjb2RlIHJldHJpZXZhbC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzogU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGNhbGxzIHRvIExvYWRMaWJyYXJ5MTYgYW5kIEZyZWVMaWJyYXJ5MTYuCgoyMDAzLTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVZhckFkZDogQWRkZWQgVlRfUjgsIFZUX0VNUFRZLCBWVF9OVUxMIGhhbmRsaW5nLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglNYXAgdG9wLWxldmVsIHdpbmRvd3Mgd2hlbiBXU19WSVNJQkxFIGlzIHNldCwgYnV0IGRvbid0IHVubWFwIHRoZW0KCXdoZW4gaXQncyBjbGVhcmVkLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglBbm90aGVyIG1ha2UgaW5zdGFsbCBkZXBlbmRlbmN5IGZpeC4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBpbmNsdWRlL2ZpbGUuaCwgd2luMzIvZGV2aWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gc3RhcnRlZCBpbXBsZW1lbnRpbmcgbnRkbGwuTnREZXZpY2VJb0NvbnRyb2xGaWxlIGFuZCBtYWRlCgkgIGtlcm5lbDMyLkRldmljZUlvQ29udHJvbCBjYWxsIGl0CgktIGNoYW5nZWQgY2Ryb20gaW9jdGwgZnVuY3Rpb24ncyBwcm90b3R5cGUgdG8gc3RpY2sgdG8KCSAgbnRkbGwuTnREZXZpY2VJb0NvbnRyb2xGaWxlIHNpZ25hdHVyZQoKCSogaW5jbHVkZS9kM2Q5LmgsIGluY2x1ZGUvZDNkOXR5cGVzLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCWQzZDkgaGVhZGVycyBhcmUgYmV0dGVyIHdoZW4gdGhleSBidWlsZC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCU1vcmUgc3BsaXR0aW5nIG9mIHRoZSBXaW4xNi8zMiBpbnRlcm5hbCBmaWxlZGxncHJvYyB3aW5kb3cgcHJvY2VkdXJlcwoJYW5kIGRpYWxvZyBpbml0LgoJTWFrZSBhIGZldyBpbnRlcm5hbCBmdW5jdGlvbiBzdGF0aWMgYW5kIHNoYXJlIGEgZmV3IG90aGVycy4KCgkqIGZpbGVzL3NtYi5jLCBmaWxlcy9zbWIuaDogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQSBsaXR0bGUgU01CIHByZXBhcmF0b3J5IHdvcms6CglEb24ndCBwdWJsaXNoIGludGVybmFsIGluZm9ybWF0aW9uLgoJQWRkIGEgZnVuY3Rpb24gZm9yIGRldGVjdGluZyBVTkMgbmFtZXMuCglBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IE5UIGFsbG93cyBlaXRoZXIgc2VwYXJhdG9yIGNoYXJhY3Rlci4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT2xlQ3JlYXRlRm9udEluZGlyZWN0KE5VTEwsLi4uKSB1c2VzIHRoZSBPTEUgU3RkRm9udC4KCUFkZGVkIHRlc3RjYXNlIGZvciBPbGVDcmVhdGVGb250SW5kaXJlY3QoTlVMTCkuCglBZGRlZCBWVF9OVUxMIC0+IFZUX0JPT0wgdmFyaWFudCBjb252ZXJ0ZXIuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcmVzb3VyY2UuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC90YXBlLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBmaWxlcy90YXBlLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHdpbjMyL2tlcm5lbDMyLmM6CglNb3ZlZCB0YXBlLmMgdG8gZGxscy9rZXJuZWwuCglNb3ZlZCBjcml0aWNhbCBzZWN0aW9uIGFuZCByZXNvdXJjZSB1cGRhdGUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoJU3RhcnRlZCBtb3Zpbmcgc29tZSBvZiB0aGUgdGhyZWFkIGZ1bmN0aW9ucyB0b28uCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBDcmVhdGVNZXRhRmlsZVcoTlVMTCkgY29ycmVjdGx5LgoKCSogZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJU3ZJdGVtQ21fZm5JbnZva2VDb21tYW5kOiBhZGRlZCBzdXBwb3J0IGZvciAiZGVsZXRlIiBjb21tYW5kLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gc3RhcnQgbW92aW5nIGEgZmV3IGZpbGUgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBmaWxlcy9maWxlLmMgdG8KCSAgZGxscy9rZXJuZWwgc3ViZGlyIChhbHNvIHNwbGl0dGluZyAxNmJpdCBBUElzIGluIGEgc2VwYXJhdGUgZmlsZSkKCS0gaW1wbGVtZW50ZWQgbnRkbGwuTnR7TG9ja3xVbmxvY2t9RmlsZSwgYW5kIG1hZGUgdXNlIG9mIHRob3NlIGZvciB0aGUKCSAga2VybmVsMzIgZXF1aXZhbGVudAoJLSBpbXBsZW1lbnRlZCBhIGZldyBpbmZvcm1hdGlvbiBjbGFzc2VzIGluIE50UXVlcnlJbmZvcm1hdGlvbkZpbGUgYW5kCgkgIE50U2V0SW5mb3JtYXRpb25GaWxlIChzdGlsbCBsb3RzIG9mIG1pc3NpbmcgY2xhc3NlcykKCS0gZW5oYW5jZWQgdGhlIGdldF9maWxlX2luZm8gc2VydmVyIHJlcXVlc3QgaW4gb3JkZXIgdG8gaW1wbGVtZW50CgkgIGNvcnJlY3RseSBOdFF1ZXJ5SW5mb3JtYXRpb25GaWxlIChjaGFuZ2UgdGltZSAmIGZpbGUgYWxsb2Mgc2l6ZSkKCS0gcmV3cm90ZSByZWdpc3RyeSBsb2FkaW5nIHRvIGNvbXBseSB3aXRoIGxhdGVzdCBjaGFuZ2VzCgoJKiBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvaGVscGVyLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCUFkZGVkIGZyYW1ld29yayBmb3IgZmlsZSBsb2FkaW5nLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRXhwb3NlIHBhcnQgb2YgRE9TVk1fU2VuZFF1ZXVlZEV2ZW50cygpIGFsc28gZm9yIHBsYXRmb3JtcyB3aXRob3V0CglNWl9TVVBQT1JURUQuCgoyMDAzLTA2LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NsaXBib2FyZC5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJLSB1c2UgZ2xvYmFsIGF0b21zIGZvciB0aGUgZm9ybWF0IGlkcwoJLSBhZGQgdGltZW91dCB3aGVuIGNhbGxpbmcgWENoZWNrVHlwZWRXaW5kb3dFdmVudAoJLSBmaXggYnJva2VuIElzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlOyBpdCB0cmllZCB0byBkbyBhIHRyaWNrIHdpdGgKCSAgRW51bUNsaXBib2FyZEZvcm1hdHMgYnkgbWFraW5nIGluY29ycmVjdCBhc3N1bXB0aW9ucwoJLSBpbiBYMTFEUlZfSXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUgZG8gYSBxdWljayBleGl0IGlmIG5vIG9uZSBvd25zCgkgIHRoZSBzZWxlY3Rpb24KCS0gYWRkIDEgc2Vjb25kICptaW5pbXVtKiB0aW1lIGxhcHNlIGJldHdlZW4gWFNlbGVjdGlvbk93bmVyIGNhbGxzCgktIHN5bmMgY2xpcGJvYXJkIG93bmVyc2hpcCBiZXR3ZWVuIGRpZmZlcmVudCB3aW5lIHByb2Nlc3NlcwoJLSBwcmV2ZW50cyBhcHBzIGZyb20gZ2V0dGluZyBpbnRvIHdpZXJkIHN0YXRlIHdoZXJlIHRoZXkgdGhvdWdodCB0aGV5CgkgIGRpZG4ndCBvd24gdGhlIHNlbGVjdGlvbiBidXQgdGhleSBkaWQgYW5kIGFzIGEgcmVzdWx0IHF1ZXJpZWQKCSAgdGhlbXNlbHZlcyBmb3IgYXZhaWxhYmxlIHNlbGVjdGlvbiBkYXRhCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgd2UgdXBkYXRlIGRjLT5iaXRzUGVyUGl4ZWwuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYzoKCUFkZGVkIHNwZWNpYWwgY2FzZSBmb3IgImRpc3BsYXkiIGluIERSSVZFUl9HZXREcml2ZXJOYW1lIHNvIHRoYXQKCUdldERDKE5VTEwsImRpc3BsYXkiKSB3b3Jrcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBlbmFibGUgY2xpZW50IHNpZGUgZm9udHMgdW5sZXNzIHdlIGhhdmUgYXQgbGVhc3Qgb25lIG5vbi1zeW1ib2wKCWZvbnQgaW5zdGFsbGVkIC0gdGhpcyBhdm9pZHMgYSBuYXN0eSBXaW5nZGluZ3Mgb25seSBzY2VuYXJpby4KCUFkZCB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIGZvbnQgcmVwbGFjZW1lbnRzLCB0aGlzIGVzc2VudGlhbGx5IGxldHMKCXlvdSBnaXZlIGEgc2Vjb25kIG5hbWUgdG8gYSBmb250IGZhbWlseSBzbyB0aGF0IGZhbWlseUEgZ2V0cwoJZW51bWVyYXRlZCBhcyBmYW1pbHlCIHRvby4KCUlmIHdlIGVuY291bnRlciB0d28gY29waWVzIG9mIHRoZSBzYW1lIGZvbnQgdGhlbiB1c2UgdGhlIG9uZSB3aXRoIHRoZQoJbGFyZ2VyIHZlcnNpb24gbnVtYmVyLgoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIEdldFRleHRDaGFyc2V0SW5mbyBpbXBsZW1lbnRhdGlvbiB0byB0aGUgZm9udCBkcml2ZXIuCgoJKiB3aW5kb3dzL3dpbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxlIG9wdGltaXphdGlvbiBpbiBFbmFibGVXaW5kb3cuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEdW1wIFJEV18gZmxhZ3MgaW4gUmVkcmF3V2luZG93LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsb25nIHdpdGggQWx0R3Igc3RhdGUgc2F2ZSBhbHNvIGFsbCBwb3NzaWJsZSBtb2RpZmllciBzdGF0ZXMuCgoJKiBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHlwZTQyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRm9yIFBvc3RTY3JpcHQgdmVyc2lvbnMgPCAyLjAxNSB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgYWxsb2NhdGUgc3BhY2UKCWZvciB0aGUgJ2dseWYnIGFycmF5LgoJVG8gY29uc2VydmUgVk0sIHdlIG9ubHkgYWxsb3cgdXAgdG8gdHdvIGZvbnRzIHRvIGJlIGRvd25sb2FkZWQgYmVmb3JlCglyZWNsYWltaW5nIHRoZWlyIFZNLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJdCBzZWVtcyBjdXBzR2V0RGVmYXVsdCByZXR1cm5zIHRoZSBzeXN0ZW0gZGVmYXVsdCBwcmludGVyIGFuZCBpZ25vcmVzCglhIHVzZXIncyBvdmVycmlkZS4gIFNvIHVzZSBjdXBzR2V0RGVzdHMgaW5zdGVhZCB3aGljaCBkb2VzIHJlc3BlY3QgdGhlCgl1c2VyJ3MgY2hvaWNlLgoJRGVsZXRlIGFsbCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBwcmludGVyIGtleXMgb24gc3RhcnR1cCBiZWZvcmUKCXF1ZXJ5aW5nIHRoZSBjdXBzIHNlcnZlci4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgZmlsZSBnZW5lcmF0aW9uIGZhaWxzLgoKCSogZGxscy93aW5lZG9zL2ludDEzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPX1JET05MWT09MCBidXQgaXQncyBjbGVhbmVyIHRvIHBhc3MgaXQgdG8gRFJJVkVfT3BlbkRldmljZSgpIGFueXdheS4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBub3RpZmljYXRpb24gZml4ZXMuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVjb3JkIFNldFdvcmxkVHJhbnNmb3JtIGFuZCBNb2RpZnlXb3JsZFRyYW5zZm9ybSBpbiBlbmhhbmNlZAoJbWV0YWZpbGVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglBZGRlZCBpbXBvcnQgbGlicyBkZXBlbmRlbmN5IGZvciBtYWtlIGluc3RhbGwuCgoJKiBwcm9ncmFtcy9jbG9jay9Fbi5yYywgcHJvZ3JhbXMvY2xvY2svUHQucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0VuLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9QdC5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3N0YXJ0L1B0LnJjLAoJICBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy92aWV3L0VuLnJjLCBwcm9ncmFtcy92aWV3L1B0LnJjLAoJICBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYywgcHJvZ3JhbXMvd2NtZC9Fbi5yYywgcHJvZ3JhbXMvd2NtZC9QdC5yYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9QdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9QdC5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCS0gbG9jYWxpemF0aW9uIHRvIHRoZSBQb3J0dWd1ZXNlIG9mIEJyYXppbCBvZiAicHJvZ3JhbXMvKiIKCS0gc2VwYXJhdGlvbiBvZiBzb21lIHJlc291cmNlcyB0aGF0IG9ubHkgZXhpc3RlZCBpbiBFbmdsaXNoCgktIGxlc3NlciBhZGp1c3RtZW50cyBpbiBtZW51cwoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBmaWxlcy9zbWIuYywgbWVtb3J5L2hlYXAuYywgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW4ga2VybmVsMzIsIHJlcGxhY2VkIGFsbCB7RW50ZXJ8TGVhdmV9Q3JpdGljYWxTZWN0aW9uIGNhbGxzIHdpdGgKCSAgbnRkbGwgY291bnRlcnBhcnRzCgktIHtFbnRlcnxMZWF2ZX1Dcml0aWNhbFNlY3Rpb24gaXMgbm93IGEgcHVyZSBmb3J3YXJkIGZyb20ga2VybmVsMzIgdG8KCSAgbnRkbGwgKHdlIG5vdyBsb25nZXIgY2FuIHVzZSB7RW50ZXJ8TGVhdmV9Q3JpdGljYWxTZWN0aW9uIGluIGtlcm5lbDMyKQoJLSByZXBsYWNlZCBhIGZldyBrZXJuZWwzMiBoZWFwIG1hbmFnZW1lbnQgY2FsbHMgZnJvbSBudGRsbCwgd2l0aAoJICBSdGxIZWFwKiBlcXVpdmFsZW50cwoKCSogZGxscy9jYWJpbmV0L2ZkaS5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gcmVtb3ZlIHVudXNlZCBsb29wIHRoYXQgYWx3YXlzIGl0ZXJhdGVzIG9uY2UKCS0gcmVtb3ZlIHdhcm5pbmcKCS0gcHJlcGFyYXRpb25zIHRvIHVzZSBtdWx0aXBsZSBmZGlfZGVjb21wX3N0YXRlIHN0cnVjdHVyZXMgaW4gYSBsaW5rZWRsaXN0LAoJICB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVtZW50IHNwbGl0IGNhYmluZXRzLCBpZiBhbGwgZ29lcyBhY2NvcmRpbmcKCSAgdG8gcGxhbiAtLSB0aGlzIGlzIHNvbWV3aGF0IGFuYWxvZ291cyB0byBzdHJ1Y3QgY2FiaW5ldCBpbiBjYWJleHRyYWN0LgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywgaW5jbHVkZS92ZncuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBzb21lIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaGVzLgoJLSBGaXhlZCBidWdzIGluIEFWSVNhdmVPcHRpb25zIGRpYWxvZyBoYW5kbGluZy4KCS0gRml4ZWQgYnVnIGluIEFWSUZJTEVfTG9hZEZpbGUgLS0gbm93IGNoZWNrIGZvciBtb3JlIHRoYW4KCSAgTUFYX0FWSVNUUkVBTVMgc3RyZWFtcyBpbiBmaWxlLgoJLSBJbXBsZW1lbnRlZCBBVklNYWtlRmlsZUZyb21TdHJlYW1zIGFuZCBBVklTYXZlVkEgbWV0aG9kLgoJLSBBZGRlZCBJQVZJRWRpdFN0cmVhbSBpbnRlcmZhY2UuCgktIEltcGxlbWVudGVkIEVkaXRTdHJlYW0qIG1ldGhvZHMuCgktIEFkZGVkIHN0dWJzIGZvciBBVklTYXZlVlcsIENyZWF0ZUVkaXRhYmxlU3RyZWFtLgoJLSBBZGRlZCBzdHVicyBmb3IgY2xpcGJvYXJkIGhhbmRsaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYWNjLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYWNjL01ha2VmaWxlLmluLCBkbGxzL29sZWFjYy9tYWluLmMsIGRsbHMvb2xlYWNjL29sZWFjYy5zcGVjOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDcmVhdGVkIGFuIGVtcHR5IG9sZWFjYyBETEwuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuYywKCSAgc2VydmVyL2NvbnNvbGUuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUluIGNvbnNvbGUgaW5wdXQgcmVjb3JkIHF1ZXVlLCByZXBsYWNlIHNlbWFwaG9yZSB3aXRoIGEgbWFudWFsIHJlc2V0CglldmVudCwgc28gdGhhdCB3ZSBnZXQgY29ycmVjdCBiZWhhdmlvciBpbiBzeW5jaHJvbml6YXRpb24gaGFuZGxpbmcuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MDkuYywKCSAgZGxscy93aW5lZG9zL3JlbGF5LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgSVJRIGFja25vd2xlZGdlIGhhbmRsZXIgZm9yIGludGVybmFsIElSUXMuCglDaGFuZ2UgRFBNSSBhc3luY2hyb25vdXMgZXZlbnQgaGFuZGxpbmcuCglBbHdheXMgdXNlIGFsdGVybmF0ZSBzdGFjayBpbiBEUE1JIHJlbGF5cyBhbmQgY2hlY2sgZm9yIHBlbmRpbmcgZXZlbnRzCglhZnRlciBvcmlnaW5hbCBzdGFjayBoYXMgYmVlbiByZXN0b3JlZC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogS3VzYW5hZ2kgS291aWNoaSA8c2xhc2hAbWEubmV3ZWIubmUuanA+CglBZGRlZCBMaXN0Vmlld19HZXRJdGVtVGV4dCBtYWNyby4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIFRSQUNFaW5nIGZpeGVzCgktIGZhc3RlciBCbHQgdG8gdGhlIGZyYW1lYnVmZmVyIHVzaW5nIHRleHR1cmUgZW5naW5lCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglGaXhlZCBSdXNzaWFuIGNvbW1kbGcgbG9jYWxpemF0aW9uLiBTb21lIHJlc291cmNlIGVsZW1lbnRzIGRpZG4ndCBoYXZlCglwcm9wZXIgc2l6ZSwgYW5kIHdlcmUgcGFydGlhbGx5IHZpc2libGUuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX3ByaXZhdGUuaCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gYWRkZWQgc3R1YnMgZm9yIEdldE9wZW5GaWxlTmFtZVByZXZpZXd7QSxXfQoJLSBhZGRlZCBzdHVicyBmb3IgR2V0U2F2ZUZpbGVOYW1lUHJldmlld3tBLFd9CgktIHJlbW92ZWQgaW52YWxpZCBWSURDLk1STEQgbGluZSBmcm9tIHN5c3RlbS5pbmkKCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgYnVncyBpbiBuZXR3b3JrIGludGVyZmFjZSBoYW5kbGluZyAoY29kZSAmIHRlc3QpLgoKMjAwMy0wNi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5oLCBzZXJ2ZXIvZmQuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRhcHRlZCBrZXJuZWwzMiBzbyB0aGF0IGl0IG5vIGxvbmdlciAoZGlyZWN0bHkpIG1hbmFnZXMgY29uc29sZQoJICBoYW5kbGVzIGFzIHdpbmVzZXJ2ZXIgaGFuZGxlcwoJLSBjb25zb2xlIGlucHV0IGhhbmRsZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHdhaXRhYmxlIChpbnB1dCByZWNvcmQKCSAgc3luY2hyb25pc2F0aW9uIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhIHNpbXBsZSBzZW1hcGhvcmUpLCBhbmQgcmVtb3ZlZAoJICBGRF9UWVBFX0NPTlNPTEUgZnJvbSBmZCB0eXBlcyBpbiB3aW5lc2VydmVyCgktIGNvbnNvbGUgaGFuZGxlcyBub3cgYWx3YXlzIGhhdmUgdGhlaXIgdHdvIGxvd2VyIGJpdCBzZXQgc28gb25lIGNhbgoJICBkaXN0aW5ndWlzaCBhIGNvbnNvbGUgaGFuZGxlIGZyb20gYSBrZXJuZWwgb2JqZWN0IGhhbmRsZQoJLSBpbXBsZW1lbnRlZCBzb21lIHVuZG9jdW1lbnRlZCBrZXJuZWwzMiBjb25zb2xlIHJlbGF0ZWQgQVBJcwoJICAoQ2xvc2VDb25zb2xlSGFuZGxlLCBHZXRDb25zb2xlSW5wdXRXYWl0SGFuZGxlLCBPcGVuQ29uc29sZVcsCgkgIFZlcmlmeUNvbnNvbGVJb0hhbmRsZSwgRHVwbGljYXRlQ29uc29sZUhhbmRsZSkKCS0gYWxsb3dlZCBhIGZldyBrZXJuZWwzMiBBUElzIHRvIHRha2UgY29uc29sZSBwc2V1ZG8taGFuZGxlcwoJICAoRmx1c2hGaWxlQnVmZmVyLCBHZXRGaWxlVHlwZSwgV2FpdEZvcipPYmplY3QqKQoJLSBzaW1wbGlmaWVkIHRoZSBjb25zb2xlIGluaGVyaXRhbmNlIGF0IHByb2Nlc3MgY3JlYXRpb24KCS0gaW4gY29uc29sZSB0ZXN0cywgbm8gbG9uZ2VyIGNyZWF0ZSBhIGNvbnNvbGUgaWYgb25lIGFscmVhZHkgZXhpc3RzCgoJKiBzZXJ2ZXIvbWFwcGluZy5jOgoJVGhlIHNlcnZlciBhbHNvIG5lZWRzIHRvIGNvcGUgd2l0aCBJTUFHRV9TQ05fQ05UX1VOSU5JVElBTElaRURfREFUQQoJYW5kIElNQUdFX1NDTl9DTlRfSU5JVElBTElaRURfREFUQSBmbGFncyBzZXQgdG9nZXRoZXIuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBzZWN0aW9uIG1hcHBpbmcgaW4gUEUgbG9hZGluZyB3aGVuIGJvdGgKCUlNQUdFX1NDTl9DTlRfVU5JTklUSUFMSVpFRF9EQVRBIGFuZCBJTUFHRV9TQ05fQ05UX0lOSVRJQUxJWkVEX0RBVEEKCWFyZSBzZXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU0hHZXRGaWxlSW5mbyBzaG91bGQgdG9sZXJhdGUgbnVsbCBwb2ludGVycy4KCjIwMDMtMDYtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogS3VzYW5hZ2kgS291aWNoaSA8c2xhc2hAbWEubmV3ZWIubmUuanA+CglTdG9yZSBXTV9OQU1FIGFuZCBXTV9JQ09OX05BTUUgaW4gQ09NUE9VTkRfVEVYVCBmb3JtYXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCURhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJLSBpbXBsZW1lbnRlZCBzdXBwb3J0IGZvciBodHRwcyBwcm90b2NvbAoJLSBmaXhlcyB0byB0aGUgaHR0cCBwcm90b2NvbAoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQWRkZWQgY2hlY2tzIGZvciBJQ1UgbGlicmFyaWVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFNoYWNoYXIgU2hlbWVzaCkuCgoJKiB0b29scy9tYWtlZGVwLmM6CglBZGRlZCBzdXBwb3J0IGZvciAjaW5jbHVkZSBpbiBJREwgZmlsZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iZXJ0CglTaGVhcm1hbikuCgoJKiBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgdHlwZWRlZiBmb3IgQ09MT1JSRUYuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCB1c2UgYW55IHR5cGVkZWZzIGluIHRoZSBHTCB0aHVua3MgdG8gcHJldmVudCBhbGwgcG9zc2libGUKCWNvbXBpbGF0aW9uIGlzc3Vlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZDNkOS5oLCBpbmNsdWRlL2QzZDljYXBzLmgsCgkgIGluY2x1ZGUvZDNkOXR5cGVzLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIGQzZDkgaGVhZGVycy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBpbnQzMSBWSUYgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KCUZpeCBhc3luY2hyb25vdXMgZXZlbnQgbG9ja2luZy4KCU1ha2UgYXN5bmNocm9ub3VzIGV2ZW50IGhhbmRsaW5nIHN1cHBvcnQgRFBNSS4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBhIHNlY3Rpb24gYWJvdXQgdXNpbmcga2dkYiBhbmQgZGRkIHRvIGRlYnVnIHdpbmUuCgoyMDAzLTA2LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMwNjE4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTA2LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9jb21jYXQvcmVnc3ZyLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvc21iLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJJ3NpemVvZiB0eXBlJyBpcyBiZXN0IGF2b2lkZWQgYXMgaXQgd29uJ3QgYWx3YXlzIGNvbXBpbGUgKGUuZy4gJ2ludAoJbWFpbigpIHtyZXR1cm4gc2l6ZW9mIGludDt9JykuIFVzZSAnc2l6ZW9mKHR5cGUpJyBpbnN0ZWFkLgoKCSogTElDRU5TRTogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbmNsdWRlIDIwMDMgaW4gdGhlIGNvcHlyaWdodCB5ZWFycy4KCgkqIHByb2dyYW1zL25vdGVwYWQvTGljZW5zZV9Fbi5jLCBwcm9ncmFtcy9ub3RlcGFkL2xpY2Vuc2UuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2luY2x1ZGUgPHdpbmRvd3MuaD4gaW5zdGVhZCBvZiAid2luZG93cy5oIi4KCgkqIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgcmVmZXJlbmNlIGNvdW50aW5nIGJ1ZyBJIGludHJvZHVjZWQuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvZmRpLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLAoJICB3aW5lZGVmYXVsdC5yZWcsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWIsCgkgIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9zaGVsbDMyLAoJICBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBsaWJzL3dwcC9wcGwubCwgb2JqZWN0cy9mb250LmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9yZWdpc3RlcnMuYywgdG9vbHMvd2luZWR1bXAvUkVBRE1FLAoJICB0b29scy93cmMvcGFyc2VyLnk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR5cG9zL3NwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZW52LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0ga2VybmVsMzIncyBlbnZpcm9ubWVudCB0ZXN0czogYSBmZXcgbW9yZSB0ZXN0cyBub3cgc3VjY2VlZAoJLSBhZGRlZCBzb21lIGNvbnNvbGUgcmVsYXRlZCB0ZXN0cyB0byBwcm9jZXNzIGNyZWF0aW9uCgktIGFkZGVkIGEgZmV3IG1vcmUgdGVzdCBjYXNlcyB0byB0aGUgbnRkbGwgZW52aXJvbm1lbnQgdGVzdHMKCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBudGRsbCBlbnZpcm9ubWVudCBmdW5jdGlvbnMgKG9uZSBpbiB0cmFjZSwKCSAgdGhlIG90aGVyIG9uZSBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBleHBhbnNpb24pCgktIHRoZSBwcm9jZXNzIHBhcmFtZXRlcnMsIHdoZW4gcGFzc2VkIHRocnUgd2luZXNlcnZlciwgYXJlIG5vdyBmdWxseQoJICBoYW5kbGVkIGluIG50ZGxsLCB0aGV5IGFyZSBzdG9yZWQgaW4gdGhlIFJUTF9VU0VSX1BST0NFU1NfUEFSQU1FVEVSUwoJICBzdHJ1Y3R1cmUuCgktIGxhdGVyIG9uIGluIGtlcm5lbDMyIGxvYWRpbmcgc2VxdWVuY2UsIHRob3NlIHBhcmFtZXRlcnMgYXJlIGNvcGllZAoJICBpbnRvIFNUQVJUVVBJTkZPIHNoYWRvdyBzdHJ1Y3R1cmVzCgktIGxhdGVyIG1vZGlmaWNhdGlvbiB0byB0aG9zZSBwYXJhbXRlcnMgYXJlIG5vdyByZWZsZWN0ZWQgdG8gdGhlCgkgIFJUTF9VU0VSX1BST0NFU1NfUEFSQU1FVEVSUyBzdHJ1Y3R1cmUgKGFuZCBTVEFSVFVQSU5GTyBpcyBrZXB0CgkgIHVudG91Y2hlZCkgKGZvciBleGFtcGxlLCBTdGRIYW5kbGUgc2V0dGluZykgKFdpbiAyayBiZWhhdmVzIGxpa2UgdGhpcykKCS0gRU5WREIgaGFzIGJlZW4gcmVtb3ZlZAoJLSBjb21tYW5kIGxpbmUgaW5oZXJpdGFuY2UgKGZyb20gdW5peCBjb21tYW5kIGxpbmUpIGlzIG5vdyBwdXJlbHkgaW4gbnRkbGwKCS0gYWxsIGtlcm5lbDMyIGVudmlyb25tZW50IGZ1bmN0aW9ucyBub3cgcmVseSBvbiB0aGVpciBudGRsbCBjb3VudGVycGFydHMKCS0gZ29vZGllczogaW5wdXQvb3V0cHV0IGhhbmRsZSBpbmhlcml0YW5jZSB3aGlsZSBhc2tpbmcgZm9yIGEgZGV0YWNoZWQKCSAgY29uc29sZSBpcyBiZXR0ZXIgaGFuZGxlZDsgYSBmZXcgbW9yZSBrZXJuZWwzMiBlbnZpcm9ubWVudCB0ZXN0cyBub3cKCSAgcGFzcyA7IHNpbGVuY2VkIGEgdmFsZ3JpbmQgd2FybmluZyBpbiBwcm9jZXNzIGNyZWF0aW9uCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUFkZGVkIEZyZW5jaCB0cmFuc2xhdGlvbiwgZmluaXNoZWQgRW5nbGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0OiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVRyYW5sYXRpb24gb2YgRW5nbGlzaCBSRUFETUUgdG8gUG9ydHVndWVzZS4KCgkqIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19zZWdtZW50LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWRkIElEaXJlY3RNdXNpY0NvbnRhaW5lciBzdXBwb3J0IGluCgkgIElEaXJlY3RNdXNpY0xvYWRlcjhJbXBsOjpMb2FkT2JqZWN0RnJvbUZpbGUKCS0gZG9uJ3QgdXNlIElEaXJlY3RNdXNpY1NlZ21lbnQqSW1wbCB3aGVuIElEaXJlY3RNdXNpY1NlZ21lbnQqOEltcGwKCSAgY2FuIGJlIHVzZWQgaW5zdGVhZCAoYXZvaWQgY29kZSBkdXBsaWNhdGlvbikKCgkqIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGRzb3VuZCBhbmQgZDNkIHdvcmtzIGJldHRlciB3aGVuIHgxMWRydiBsb2Nrcy91bmxvY2tzIGFyZSBjb3JyZWN0CgktIG1vcmUgdHJhY2VzCgoyMDAzLTA2LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCUFkZGVkIGFuIGFzc2VtYmx5IHdyYXBwZXIgdG8gcmV0cmlldmUgdGhlIHRoaXMgcG9pbnRlciBmcm9tICVlY3ggZm9yCglfdGhpc2NhbGwgZnVuY3Rpb25zLgoJRml4ZWQgc29tZSBidWdzLCBhbmQgYWRkZWQgYSBmZXcgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9naXQuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50IGEgY2xhc3MgZmFjdG9yeSBmb3IgdGhlIEdsb2JhbCBJbnRlcmZhY2UgVGFibGUuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLCBkbGxzL2NhYmluZXQvZmRpLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gbW92ZSBtYWNyb3MgYW5kIGNvbnN0YW50cyBpbnRvIGNhYmluZXQuaCB3aGVyZSB0aGV5IGNhbiBiZSBzaGFyZWQKCSAgYmV0d2VlbiBjYWJleHRyYWN0LmMgYW5kIGZkaS5jCgktIHJlbWluZGVycyB0byBlbGltaW5hdGUgZ2xvYmFsIHZhcmlhYmxlcyAoZm9yIG11bHRpdGhyZWFkCgkgIGNvbXBhdGliaWxpdHkpCgktIHJlbW92ZSBzdHJ1Y3QgZmRpX2NhYjogZHVlIHRvIHRoZSBuYXR1cmUgb2YgdGhlIEZESSBBUEksIHdlIGNhbm5vdAoJICBwcmVsb2FkIGFsbCB0aGUgY2FiaW5ldHM7IHRoaXMgYXBwZWFycyB0byBvYnZpYXRlIHRoZSBuZWVkIGZvciBzdHJ1Y3QKCSAgZmRpX2NhYgoJLSAib3BwcmVzcyIgKHRoYXQgaXMsIGRvIG5vdCBwcm9jZXNzKSBwYXJ0aWFsIGZpbGVzIHdoaWNoIHdlcmUKCSAgY29udGludWF0aW9ucyBmcm9tIGFub3RoZXIgY2FiaW5ldAoJLSBtb3JlIHRoYW4gb25lIHBhcnRpYWwgZmlsZSBjYW4gZXhpc3QgaW4gYSBzaW5nbGUgY2FiaW5ldCAoaG93IT8pIC0tCgkgIHNvIG1vdmUgdGhlIHBhcnRpYWwgZmlsZSBub3RpZmljYXRpb24gKGFuZCAib3BwcmVzc2lvbiIgdGhhdCBnb2VzIHdpdGgKCSAgaXQpIGludG8gdGhlIGxvb3AgdGhhdCBpdGVyYXRlcyB0aHJvdWdoIGZpbGVzCgoyMDAzLTA2LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFsbG9jYXRlIG5lY2Vzc2FyeSBkc291bmQgYnVmZmVycyBmb3Igc3RhbmRhcmQgYXVkaW8gcGF0aHMgYW5kIGVuYWJsZQoJcmV0cmlldmFsIG9mIHRoZWlyIGludGVyZmFjZXMgdmlhIEdldE9iamVjdEluUGF0aC4KCUZpeCBhbmQgY2xlYW4gZHNvdW5kIGFuZCBkbXVzaWNzIG9iamVjdHMgYWxsb2NhdGlvbiB3aGVuIGluaXRpYWxpemluZwoJdGhlIHBlcmZvcm1hbmNlIG9iamVjdC4KCVNvbWUgc3R1YnMgaW1wcm92ZW1lbnRzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZXdyb3RlIHRoZSBidWZmZXIgdG8gYnVmZmVyIGZhc3QgcGF0aCB1c2luZyBUZXh0dXJlIGVuZ2luZSAobXVjaAoJICBmYXN0ZXIgb24gbXkgTlZJRElBIGhhcmR3YXJlKQoJLSBzbWFsbCBvcHRpbWl6YXRpb25zCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvZGlucHV0Lmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gRElucHV0IFdpZGVDaGFyIGNsYXNzZXMgc3VwcG9ydC4gVGhpcyB0aW1lIGFsbCBkaW5wdXQgdmVyc2lvbnMgaGF2ZQoJICB3aWRlY2hhciBjbGFzc2VzLgoJLSBmaXggYSBzdHVwaWQgYnVnIGluIGNhbGxiYWNrIGhhbmRsaW5nIGNhdWdodCBieSBMaW9uZWwuCgktIGFkZCBzb21lIGZvcmdvdHRlbiBJSUQgb24gY2xhc3MgZmFjdG9yeSAoYmV0dGVyIGlmIHdlIHdhbnQgdG8gYWN0aXZlCgkgIHRoZSBjb2RlKQoJLSBtYW55IGNsZWFudXBzIG9uIENPTSBNYWNyb3MgKGRvbid0IG5lZWQgQSBhbmQgVyB2YXJpYW50cyBhcyB0aGV5IGFyZQoJICB0aGUgc2FtZSkKCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IEFkZERpcnR5UmVjdCB1bmNvcnJlY3QgYmVoYXZpb3IgKGNyYXNoIGluIHNvbWUgY2FzZXMpLiBCYXNlZCBvbiBhCglwYXRjaCBmcm9tIFJvZGVyaWNrIENvbGVuYnJhbmRlci4KCgkqIHdpbmVkZWZhdWx0LnJlZzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglEaXNwbGF5IGljb25zIG9mIGV4ZWN1dGFibGVzIGluIHRoZSBPcGVuRmlsZSBkaWFsb2cgYm94ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCTxtYUB0ZWNobm9wcmludC5jaD4KCUFkZGVkIEFkZEFjY2Vzc0FsbG93ZEFjZUV4LCBBZGRBY2Nlc3NEZW5pZWRBY2VFeCwgR2V0QWNsSW5mb3JtYXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2dsX2FwaS5oLCBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggc29tZSByZWdyZXNzaW9ucwoJLSBHZXREQyBkb2VzIG5vdCBsb2NrIGluIFJlYWRPbmx5IG1vZGUgYXMgaXQgbGVhZHMgdG8gcHJvYmxlbXMgd2l0aAoJICBzb21lIEQzRCBvcHRpbWl6YXRpb25zCgktIGFkZGVkIGEgZmFzdCBCYWNrID0+IEZyb250IC8gRnJvbnQgPT4gQmFjayBCbHQgZmFzdCBwYXRoCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0MTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IFdpbjE2LzMyIHNldHVwYXBpIGRldmljZSBpbnN0YWxsZXIgc3VwcG9ydC4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJU3R1YiBvdXQgU2V0VXJsQ2FjaGVFbnRyeUluZm9BL1cuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gVW5icmVhayB2ZXJ0aWNhbCB0cmFja2JhcnMKCS0gTWFrZSBpdCBtb3JlIGNsb3NlbHkgcmVzZW1ibGUgdGhlIG5hdGl2ZSBjb250cm9sCgktIEFkZCBmb2N1cyByZWN0YW5nbGUKCS0gTWlzYyBmaXhlcyBhbmQgY2xlYW51cHMKCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBZGQgc3R1YnMgZm9yIENvbnRyb2xfRmlsbENhY2hlX1J1bkRMTCBhbnNpL3VuaWNvZGUgdmFyaWFudHMuCgoJKiBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVbmJyZWFrIGdldFRjcFRhYmxlKCkgb24gTGludXgtYmFzZWQgc3lzdGVtcyBhbmQgbWFrZSBpdCB3b3JrIG9uIEJTRAoJYW5kIFNvbGFyaXMgYXMgd2VsbC4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQWRkIHRoZSBJRCBvZiB0aGUgYmxvY2tpbmcgdGhyZWFkIHRvIHRoZSBlcnJvciBtZXNzYWdlLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX1NpLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9TaS5yYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NpLnJjLCBkbGxzL3dpbmVwcy9yc3JjLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfU2kucmMsIGRsbHMvd2lubW0vd2lubW1fU2kucmMsIHByb2dyYW1zL3N0YXJ0L1NpLnJjLAoJICBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL1NpLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglVcGRhdGVkIGEgYnVuY2ggb2YgdHJhbnNsYXRpb25zIGZvciBTbG92ZW5pYW4gbGFuZ3VhZ2UuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcGF0aC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkOgoJLSBSdGxEb2VzRmlsZUV4aXN0c19VIGFzIGEgc3R1YgoJLSBSdGxEb3NTZWFyY2hQYXRoX1UKCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBHTCBzdGF0ZSBjaGFuZ2Ugb3B0aW1pemF0aW9ucwoJLSBzb21lIG1vcmUgcHJlcGFyYXRpb25zIGZvciBHTC1hY2NlbGVyYXRlZCBCbHRzCgktIGFkZGVkIGRlYnVnIGNvZGUgdG8gY29tcHV0ZSBGUFMgKG5pY2Ugd2hlbiBhZGRpbmcgb3B0aW1pemF0aW9ucykKCgkqIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBpbmNsdWRlL25iMzAuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBpcGhscGFwaSB0byBlbnVtZXJhdGUgTEFOIGFkYXB0ZXJzLgoJQWRkIG5hbWVzIHRvIE5ldEJJT1MgdHJhbnNwb3J0cywgYW5kIGVsaW1pbmF0ZXMgbG9vcGJhY2sgYWRhcHRlcnMgZnJvbQoJZW51bWVyYXRlZCBMQU4gYWRhcHRlcnMuCgoJKiBpbmNsdWRlL3N0cm1pZi5oOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTWFrZSB0aGUgaGVhZGVyIGluLWxpbmUgd2l0aCBjdXJyZW50IElDT00gbmFtaW5nIGNvbnZlbnRpb25zLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzogPG1pcnFAemllbW5pYWsudXN0cm9uaWUucHcuZWR1LnBsPgoJQ29ycmVjdCBtb2RlIG5yIHBhc3NlZCB0byBYMTFEUlZfWEY4NlZNX1NldEN1cnJlbnRNb2RlLgoKCSogd2luZWRlZmF1bHQucmVnOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBGaWx0ZXJHcmFwaCBDTFNJRCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuaCwgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJU3BsaXQgV2luMTYvMzIgZmlsZSBkaWFsb2dzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3RocmVhZC5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlIFNJR0FMUk0gaGFuZGxlci4KCVJlc2VydmUgVEVCIGZpZWxkIGZvciBEUE1JIHZpcnR1YWwgaW50ZXJydXB0IGZsYWcuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWlncmF0ZSBjcmVhdGUvb3BlbiBmaWxlIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoJU29tZSBmaXhlcyBiYXNlZCBvbiBwYXRjaCBieSBGZXJlbmMgV2FnbmVyLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgRE9TVk1fV2FpdCB3b3JrIGluIHByb3RlY3RlZCBtb2RlLgoJUmVwbGFjZSBTSE9VTERfUEVORCBtYWNybyB3aXRoIGEgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2NvbnRyb2wuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU1ha2UgdGhlIGhlYWRlciBpbi1saW5lIHdpdGggY3VycmVudCBJQ09NIG5hbWluZyBjb252ZW50aW9ucy4KCjIwMDMtMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzoKCUZpeGVkIFdDQ1VSU0VTX0luaXRCYWNrZW5kIHByb3RvdHlwZSBpbiB0aGUgbm8gY3Vyc2VzIGNhc2UuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglNYWtlIGl0IHBvc3NpYmxlIHRvIHJldHJpZXZlIGFuIGluaGVyaXRhYmxlIGhhbmRsZSBpbiBvcGVuX25hbWVkX3BpcGUKCShzcG90dGVkIGJ5IFV3ZSBCb25uZXMpLgoKMjAwMy0wNi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGxpYnMvTWFrZWxpYi5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW46CglQcm9wZXIgc3VwcG9ydCBmb3IgQ1BQRkxBR1MgYW5kIExERkxBR1MgKHN1Z2dlc3RlZCBieSBUb2RkIFZpZXJsaW5nKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ZXMgdGhlIENPTE9SRklMTCBjYXNlIGZvciBmcm9udC1idWZmZXIKCS0gc29tZSBwcmVwYXJhdGlvbnMgZm9yIEdMLWFjY2VsZXJhdGVkIEJsdHMKCS0gc29tZSBzbWFsbCBvcHRpbWl6YXRpb25zIGluIHRoZSBDbGVhciBjb2RlCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglUcmFjZSB3aGljaCByZWFsIG1vZGUgaW50ZXJydXB0IGlzIGVtdWxhdGVkLgoKCSogZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9wcml2YXRlLmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgZW5kIGZsYWdzIHdoaWxlIGVuY29kaW5nIC0tIG9ubHkgRU9JIGluc3RlYWQgb2YgRU9MIGFuZCBFT0kuCgktIEZpeGVkIDQtYml0IFJMRSBlbmNvZGluZyBvZiBrZXlmcmFtZXMuCgktIEZpeGVkIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaGVzLgoJLSBBZGRlZCBzb21lIG1pc3NpbmcgY29uc3Qncy4KCgkqIGRsbHMvY2FiaW5ldC9mZGkuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIG1vc3Qgb2YgRkRJQ29weSBpcyBub3cgaW1wbGVtZW50ZWQsIGFsdGhvdWdoIHRoZSBhY3R1YWwgZGVjb21wcmVzc2lvbiBpcyBub3QuCgktICJjYW4iIC0+ICJkbyIKCS0gYSBub3ZlbGxhIGFib3V0IGEgYnVnCgktIGZpeCBzb21lIG1lbW9yeSBsZWFrcwoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJUmVtb3ZlZCBvcmRpbmFscyB0aGF0IGRpZmZlciBiZXR3ZWVuIFdpbmRvd3MgdmVyc2lvbnMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3V0aWxzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRml4IHRoZSB0ZXh0dXJlIG9wZXJhdGlvbnMgdG8gcmVzb2x2ZSBnbGl0Y2hlcyBzaG93biBpbiBVVDIwMDMgd2hlbgoJZ2V0IHF1YWQgZGFtYWdlLgoJY2hlY2tHTGNhbGwgbXVzdCBub3Qgc3VwcGx5IGEgXG4gYXMgdGhhdCBpcyBzdXBwbGllZCBieSBpdHMKCWV4cGFuc2lvbi4KCVBlcmZvcm1hbmNlIGZpeGVzIHRvIHNhdmUgYXBwbHlpbmcgdGhlIHNhbWUgc3RhdGVzIDYgdGltZXMgYW5kIHRvCglyZWR1Y2UgZnVuY3Rpb24gY2FsbHMgd2hlbiBhY2Nlc3NpbmcgZnJvbnQvYmFjayBidWZmZXJzLgoJTWFrZSB0cmFjZXMgbW9yZSByZWFkYWJsZSBieSBtb3JlIGNvbnN0YW50cyAtPiBlbmdsaXNoIGRlc2NyaXB0aW9ucy4KCgkqIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWx3YXlzIHVzZSBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZThJbXBsIGluc3RlYWQgb2YKCSAgSURpcmVjdE11c2ljUGVyZm9ybWFuY2VJbXBsIChhcyB0aGUgZmlyc3QgaW5oZXJpdHMgZnJvbSB0aGUgc2Vjb25kKQoJLSBpbXBsZW1lbnQgbWFueSBMb2FkZXIsIEF1ZGlvUGF0aCBhbmQgUGVyZm9ybWFuY2U4IHN0dWJzIC0gZml4IHRoZQoJICBjbGFzcyBmYWN0b3J5CgktIG1vcmUgZGVidWcgdHJhY2VzCgktIGZvciBub3cgSURpcmVjdE11c2ljTG9hZGVyODo6TG9hZE9iamVjdEZyb21GaWxlIGFsd2F5cyByZXR1cm5zIG5vdAoJICBzdXBwb3J0ZWQgZm9ybWF0CgktIGZpeCB0aGUgSURpcmVjdE11c2ljUGVyZm9ybWFuY2U4OjpJbml0IChtYW55IGNyYXNoZXMpCgktIGltcGxlbWVudGF0aW9uIG9mIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlOEluaXRBdWRpbwoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvZGlucHV0Lmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYWtlIGRpbnB1dDggYmVoYXZpb3VyIG1vcmUgY29ycmVjdCBmb3IgbW91c2UgYW5kIGtleWJvYXJkLgoJRml4IHNtYWxsIGJ1ZyB3aGVuIGtleWJvYXJkIGJ1ZmZlciBvdmVyZmxvd3MuCglVc2UgRElfT0sgaW5zdGVhZCBvZiAwIGZvciByZXR1cm5lZCB2YWx1ZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBtYXRyaXggbXVsdGlwbGljYXRpb24uCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldC5oOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCBzb21lIHVnbGllcy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQWRkZWQgRXVybyBhbmQgYW50aXF1b3RlIHRvIHRoZSBGcmVuY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVdoZW4gZW11bGF0aW5nIGZ1bGxzY3JlZW4gaXQgaGVscHMgdG8gbm90IGFsbG9jYXRlIHNwYWNlIGZvciBtZW51IGJhcnMKCWFuZCBib3JkZXJzLiBNYWtlIHRoaXMgd2luZG93IGEgcG9wdXAgd2luZG93LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBpbmNsdWRlL3Jhcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc3R1YnMgZm9yIFJhc0RlbGV0ZVN1YkVudHJ5KiAobmV3IGluIFdpbk1lL1dpblhQKS4KCUFkZCBwcm90b3R5cGVzIGZvciBSYXNEZWxldGVFbnRyeSogYW5kIFJhc0RlbGV0ZVN1YkVudHJ5KiBpbiByYXMuaC4KCgkqIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSB0aGUgZml4ZWQgZnVuY3Rpb24gcGlwZWxpbmUgc3VwcG9ydCBtdWx0aXBsZSBzdHJlYW1zIGZvciBjcmVhdGVkCgl2ZXJ0ZXggc2hhZGVycyB3aXRoIG5vIGZ1bmN0aW9uIHN1cHBsaWVkLiBBbHNvIHNwbGl0IGRvd24gZHJhdwoJcHJpbWl0aXZlIGFsb25nIHRoZSBsaW5lcyBvZiB0aGUgZDNkY29yZSByZXF1aXJlbWVudHMgYW5kIHB1dCBpbiBzb21lCglkaWFnbm9zdGljIGFpZHMuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IFdpbjE2LzMyIGNvbG9yIGRpYWxvZyBzdXBwb3J0LgoJU3VwcG9ydGluZyBjb21waWxpbmcgb3V0IDE2IGJpdCBmaW5kIGRpYWxvZyBzdXBwb3J0LgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglJbmNsdWRlIHRpbWUuaCBpbnN0ZWFkIG9mIHN5cy90aW1lLmguCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9kc2hvdy5oLAoJICBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3V1aWRzLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdHViYmVkIHNvbWUgaW50ZXJmYWNlcyBmb3IgdGhlIEZpbHRlckdyYXBoIENMU0lELgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgZ2V0IGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBzZXQgY3VycmVudCBkaXJlY3RvcnkgaW50MjEKCXN1YmZ1bmN0aW9ucyBpbnRvIHdpbmVkb3MuIEZpeCBxdWl0ZSBhIGZldyBidWdzIGluIHRoZSBpbXBsZW1lbnRhdGlvbgoJb2YgdGhlc2UgZnVuY3Rpb25zLgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXQuaCwgZGxscy9jYWJpbmV0L2ZkaS5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIGltcGxlbWVudCBGREl7Q3JlYXRlLERlc3Ryb3ksSXNDYWJpbmV0fQoJLSBmaXggYSB0eXBvCgktIGR1cGxpY2F0ZSBhIGJ1ZwoJLSBzb21lIGJsYXRoZXJpbmcgYWJvdXQgY29kZSBkdXBsaWNhdGlvbgoJLSBjaGFuZ2UgZmRpLmMgaW5kZW50YXRpb24gdG8gYmUgY29uc2lzdGVudCB3aXRoIGNhYmV4dHJhY3QuYwoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgaW5kZXggaGFuZGxpbmcgZm9yIG11bHRpIGRpbWVuc2lvbmFsIGFycmF5cy4KCgkqIEJVR1M6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJLSBjb3NtZXRpYyBmaXhlcwoJLSByZW1vdmUgb2Jzb2xldGUgbGluawoKCSogd2luZWRlZmF1bHQucmVnOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCVNob3cgdGhhdCBUQ1AvSVAgaXMgaW5zdGFsbGVkIHRvIHdpbmRvd3MgYXBwcywgbGlrZSB3aW5pcGNmZy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbnRkZHNjc2kuaCwKCSAgd2luMzIvZGV2aWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIG92ZXJsYXBwZWQgaW9jdGwgcmVxdWVzdHMgKGFuZCBhIGZldyBvdGhlcgoJY29zbWV0aWNzKS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJZiAobiljdXJzZXMgd2Fzbid0IGF2YWlsYWJsZSBhdCBjb21waWxlIHRpbWU6CgktIHByaW50IHNlbnNpYmxlIGluZm9ybWF0aW9uCgktIGZhbGwgYmFjayB0byB1c2VyIGJhY2tlbmQKCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOiBQYXVsIEJhaW4gPHByYmFpbkBlc3NleC5hYy51az4KCVB1dCBJSURfSURpcmVjdElucHV0RGV2aWNlMkEgYmFjayBpbgoJSURpcmVjdElucHV0RGV2aWNlMkFJbXBsX1F1ZXJ5SW50ZXJmYWNlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZSBtb3JlIHN0cmluZ2VudCBpbiB0aGUgJ0xvY2snIGludmFsaWQgUkVDVCBjaGVjay4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZ3JhZGUgT3BlbkdMIHRodW5rcyB3aXRoIGxhdGVzdCB2ZXJzaW9uIG9mIE9wZW5HTCBleHRlbnNpb24KCXJlZ2lzdHJ5LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIE1ha2UgYnV0dG9uIHRleHQgY2VudHJlIGNvcnJlY3RseSB3aGVuIGRyb3Bkb3duIGFycm93IGlzIHByZXNlbnQKCS0gQ2VudHJlIGRyb3Bkb3duIGFycm93CgoJKiBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN0dWJzIGZvciBzb21lIG5ldyBXaW5YUCBBUElzLgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGluY2x1ZGUvdXJsbW9uLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhIHN0dWIgZm9yIENvbXBhcmVTZWN1cml0eUlkcyAobmV3IGluIFdpblhQKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgQkxUIENPTE9SX0ZJTEwgY2FzZS4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy90aW1lci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJU3BsaXQgdGltZXIgY29kZSBpbnRvIHNlcGFyYXRlIHNvdXJjZSBmaWxlLgoJU3RvcCB1c2luZyBTSUdBTFJNIGZvciB0aW1lcnMuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5oOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIHBhcmFub2lhOiBlbGltaW5hdGUgc29tZSBnbG9iYWwgdmFyaWFibGVzCgktIGJldHRlciByZW1pbmRlciBvbiBob3cgdG8gZml4IG1lbW9yeSBsZWFrcwoKMjAwMy0wNi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcGx1Z2lucy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfc2VnbWVudC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfc3R5bGUuYywgZGxscy9kbXVzaWMvZG11c2ljX3N5bnRoLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCS0gYWRkZWQgZGVidWcKCS0gaW1wbGVtZW50ZWQgZmFrZSBtaWRpICYgcGVyZm9ybWFuY2UgY2hhbm5lbHMKCS0gaW1wbGVtZW50ZWQgc29tZSBJRGlyZWN0TXVzaWMqOCogZnVuY3Rpb25zIHdoZXJlIElEaXJlY3RNdXNpYyoKCSAgZXF1aXZhbGVudCBleGlzdHMKCS0gSURpcmVjdE11c2ljKjggaW50ZXJmYWNlcyBjYW4gbm93IGJlIG9idGFpbmVkIGZyb20gSURpcmVjdE11c2ljCgkgIGludGVyZmFjZXMgKFF1ZXJ5SW50ZXJmYWNlLi4uKQoJLSBjaGFubmVsLXJlbGF0ZWQgcGVyZm9ybWFuY2UgZnVuY3Rpb25zIGFyZSBraW5kYSBpbXBsZW1lbnRlZCBub3cKCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEFyamVuIE5pZW5odWlzIDxhcmplbkBuaWVuaHVpc2JlaGVlci5ubD4KCU5ldyBpbXBsZW1lbnRhdGlvbiBvZiBHZGlHcmFkaWVudEZpbGwgdXNpbmcgaW50ZWdlciBtYXRoLgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggU2V0RGF0YUZvcm1hdCBhbmQgaW1wbGVtZW50IEdldERldmljZUluZm8gZm9yIG1vdXNlIGRldmljZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUFkZCBhIGRyaXZlIG1hcHBpbmcgZm9yIHJvb3QgdG8gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUNoZWNrIGZvciAvbGliL3RscyBkaXJlY3RvcnkgZm9yIFJlZCBIYXQgOS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUtlc3RlciBNYWRkb2NrIDxDaHJpc3RvcGhlci5NYWRkb2NrLjFAdW5pLm1hc3NleS5hYy5uej4KCUNoZWNrIGZvciBhIG51bGwgcG9pbnRlciBpbiBXU19zZXRzb2Nrb3B0LgoKCSogZGxscy91c2VyL2RkZS9taXNjLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVByb3RlY3QgV0RNTF9HZXRDb252IGFnYWluc3QgbnVsbCBoYW5kbGVzLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5oLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglTZXBhcmF0ZSBXaW4xNiBhbmQgV2luMzIgZm9udCBkaWFsb2cgc3VwcG9ydC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDb3JyZWN0bHkgY29udmVydCBpbnRvIEVYQ0VQVElPTl9SRUNPUkQgU0lHVFJBUHMgcmVjZWl2ZWQgZnJvbQoJRGVidWdCcmVha1Byb2Nlc3MuCgoyMDAzLTA2LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUltcGxlbWVudGVkIHdpbmluZXQuSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZUV4LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWxpZ24gdGhlIHRleHQgdmVydGljYWxseSBpbiBzaW5nbGUgbGluZSBsYWJlbHMgKHNwb3R0ZWQgYnkgQmlHZ1VuKS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4ZWQgY29tcGlsYXRpb24gcHJvYmxlbXMuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgX0dldHRuYW1lcy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJldHVybiBGQUxTRSB3aGVuIGRvaW5nIGFuIG92ZXJsYXBwZWQgQ29ubmVjdE5hbWVkUGlwZS4KCgkqIG9iamVjdHMvdGV4dC5jOiBJbmdtYXIgVGhpZW1hbm4gPGluZ21hckBnZWZhcy5jb20+CglJbXBsZW1lbnRlZCBQb2x5VGV4dE91dEEvUG9seVRleHRPdXRXLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBpbmNsdWRlL3NobG9iai5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gU3VwcG9ydCBhIGZldyBtb3JlIGZsYWdzCgktIFJld3JpdGUgdGhlIGVudW1lcmF0aW9uIGxvb3AKCS0gU3VwcG9ydCBub24tZGVza3RvcCByb290CgktIFNpbGVuY2UgaGFybWxlc3MgYW5kIGltcGxlbWVudGVkIGRlYnVnIG1lc3NhZ2VzCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUGVuZGluZyB0aW1lciBpbnRlcnJ1cHRzIG5vIGxvbmdlciBkZWFkbG9jayBET1NWTV9XYWl0LgoJUmVzdG9yZWQgaW50ZXJydXB0IHByaW9yaXRpZXMgdG8gY29ycmVjdCB2YWx1ZXMuCgoyMDAzLTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCB0aGUgdGV4dHVyZSB1cGxvYWQgY29kZSB3aGVuIFJFQ1QgaXMgYWN0dWFsbHkgdXNlZAoJLSBvcHRpbWl6ZSBGQiBMb2NrcyAvIFVubG9ja3Mgd2hlbiBSRUNUcyBhcmUgdXNlZAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBWaWV3cG9ydCBoYWNrIHRvIGdldCBzb21lIG9sZCBEM0QxIGdhbWVzIHRvIHdvcmsKCS0gVFJBQ0VpbmcgZml4CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc21hbGwgVFJBQ0VpbmcgZml4CgktIGZpeCBidWcgaW4gdGV4dHVyZSB1cGxvYWQgKEkgd29uZGVyIGhvdyBJIG1pc3NlZCB0aGlzIDotLyApCgktIGltcHJvdmUgdGhlIEQzRDEvMiB0ZXh0dXJlIG1hcHBpbmcgbW9kZXMKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggKHN0dXBpZCkgcmVncmVzc2lvbnMgaW50cm9kdWNlZCBieSBsYXN0IHNlcmllcyBvZiBwYXRjaAoJLSAyNCBicHAgaGFuZGxpbmcgZm9yIGxvY2sgLyB1bmxvY2sgY29kZQoJLSBzb21lIGJldHRlciBjaGVja3MgZm9yIEFscGhhUGl4ZWwgdmFsdWUKCS0gYmV0dGVyIFRSQUNFaW5nIHRvIGJldHRlciBjYXRjaCB0aHJlYWRpbmcgcHJvYmxlbXMKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIEdMIGNyaXRpY2FsIHNlY3Rpb24gZml4ZXMKCS0gb25seSBiaW5kIHRleHR1cmVzIGF0IHN0YXJ0IG9mIHJlbmRlcmluZwoJLSBvcHRpbWl6ZWQgdGhlIHRleHR1cmUgcGFyYW1ldGVyIGNvZGUKCS0gb3B0aW1pemUgb2YgdGhlICdkaXJ0eSBjaGVja2luZyBjb2RlJyBmb3IgbWlwbWFwcGluZwoJLSBoYW5kbGVzIHRoZSBNQVhNSVBMRVZFTCB0ZXh0dXJlIHBhcmFtZXRlcgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcHJvcGVyICh0ZXN0ZWQgb24gV2luMkspIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgRGlyZWN0M0Qgb2JqZWN0CgktIGZpeCBvbmUgY2FzZSBvZiByZWZlcmVuY2UgY291bnRpbmcgb24gdGV4dHVyZXMKCS0gZml4IHN0dXBpZCBidWcgaW4gdGV4dHVyZSB1cGxvYWQgY29kZQoJLSB5ZXQgYW5vdGhlciB0ZXh0dXJlIGVudW1lcmF0aW9uIHJlb3JkZXJpbmcKCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgYSBidWcgaW4gdGhlIEZyYW1lQnVmZmVyID0+IFRleHR1cmUgYmxpdHMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIFJFQ1Qgc3VwcG9ydCB0byB0aGUgdGV4dHVyZSB1cGxvYWQgY29kZQoJLSB1c2UgdGhlIGNvbW1vbiBjb2RlIGZvciB0aGUgRkIgVW5sb2NrIGNvZGUKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBjbGVhbi11cHMgKGV4dGVuc2lvbiBjb2RlIHRvIGJlIGFkZGVkIHNvb24pCgktIHNvbWUgaW50ZXJmYWNlIGNoYW5nZXMgZm9yIGZ1dHVyZSByZXVzZSBmb3IgQmx0IC8gTG9jayBjb2RlCgktIGZpeGVkIHNvbWUgUGl0Y2ggcHJvYmxlbXMgaW4gdGV4dHVyZSB1cGxvYWRzIChtb3N0bHkgZm9yICdzbWFsbCcKCSAgbWlwLW1hcHBpbmcgbGV2ZWxzKQoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlZmFjdG9yaW5nIG9mIHRoZSB0ZXh0dXJlIHVwbG9hZCBjb2RlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRleHR1cmUgcGFyYW1ldGVycyBoYW5kbGluZyBvbiB0ZXh0dXJlIGNoYW5nZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmUgc29tZSBleHRyYW5lb3VzIHNhdmluZyBvZiB0aGUgcmVhZCBidWZmZXIgc2V0dGluZ3MKCS0gY2xlYW5lZC11cCB0aGUgR0wgLyBkZXZpY2UgY3JpdGljYWwgc2VjdGlvbiBoYW5kbGluZwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHByb3RlY3Qgdmlld3BvcnQgc2V0dGluZyB3aXRoIEdMIGxvY2sKCS0gbm8gbmVlZCBhbnltb3JlIHRvIGZsdXNoIHRvIEZCIG9uIGV4ZWN1dGUgYnVmZmVyIGNhbGxpbmcKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU29tZSB0aHJlYWRpbmcgZml4ZXMgKHByZXZlbnRzIHNvbWUgZGVhZC1sb2NrcykuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2dsX2FwaS5oLCBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGltcGxlbWVudCBGQiA9PiBUZXh0dXJlIGJsaXRzCgktIGZpeCBjb21waWxhdGlvbiBvbiBub24tcmVjZW50IGdsZXh0Lmggc3lzdGVtcwoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGNsZWFuaW5nIG9mIHZvbHVtZS5jL3ZvbHVtZXRleHR1cmUuYyBhcyBkb25lIHByZXZpb3VzbHkgZm9yCgkgIHN1cmZhY2UuYy8qdGV4dHVyZS5jICh3aXRoIGFkZCBvZiBsb2NrYWJsZSwgbG9ja2VkIGFuZCBEaXJ0eSBmbGFncykKCS0gYWRkIG9mIGRpcnR5UmVjdC9kaXJ0eUJveCBmb3IgYmV0dGVyIGRpcnRpZmljYXRpb24gbWFuYWdlbWVudCAobm90CgkgIHVzZWQgeWV0LCBidXQgaHVnZSBvcHRpbWlzYXRpb24gY2FuIGJlIHBvc3NpYmxlIG5vdykKCS0gZml4IHNvbWUgZGVidWcgdHJhY2VzICh3ZWxsIGl0J3MgYmV0dGVyIHRvIHVzZSBkZWJ1Z19kM2Rwb29sKQoJLSBmaXggc29tZSBzdHVwaWQgcmVncmVzc2lvbiBvbiBwb2ludCBwYXJhbWV0ZXJzIChmb3Jnb3QgdG8gY2hlY2sKCSAgZXh0ZW5zaW9uIG9uIGZpbGxjYXBzKQoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWRkIGEgbmV3IHByaXZhdGUgaGVhZGVyIGQzZGNvcmVfZ2wuaCB0aGF0IGRlY2xhcmVzIG5lZWRlZCBvcGVuZ2wKCSAgZGVmaW5lcyBhbmQgdGhlIGNhcHMgZGVmaW5lcwoJLSBjbGVhbnVwIG9mIGRldmljZS5jIHVzaW5nIHRoZSBjYXBzIGRlZmluZXMgKGF2b2lkIHRoZSAjaWZkZWYKCSAgbmlndGhtYXJlKQoJLSBhZGQge1NldCxHZXR9R2FtbWFSYW1wIHN1cHBvcnQKCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvc3dhcGNoYWluLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc29tZSBjbGVhbnVwIGFuZCB3YXJuaW5nIGZpeGVzCgktIHNwbGl0IG9mIENyZWF0ZURldmljZSBnbC9neGwgZGV0ZWN0aW9uIGNvZGUgaW50byBGaWxsR0xDYXBzCgktIGltcGxlbWVudGF0aW9uIG9mIHJlc29sdXRpb24gY2hhbmdlICh1c2luZyBDaGFuZ2VEaXNwbGF5U2V0dGluZ3MpCgkgIGJ1dCBkZXNhY3RpdmVkIGFzIENoYW5nZURpc3BsYXlTZXR0aW5ncyBkb24ndCBzZWVtIHRvIHdvcmsgd2VsbAoJLSBiZWdpbiBvZiBzd2FwIGNoYWluIHN1cHBvcnQgKG5vdyBuZWVkIHRvIHNwbGl0L2NsZWFuCgkgIGd4bHBidWZmZXIvZ2x4cGl4bWFwIGNvZGUgZm9yIHN3YXAgY2hhaW4gdXNlKQoKCSogZGxscy9kM2Q4L3N1cmZhY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpeCB0aGUgZ2xSZWFkIGNhbGwgd2hlbiBwUmVjdCAhPSBOVUxMLCByZXNvbHZlIHRoZSBmaWxlIGZvcm1hdCBvZiB0aGUKCXNhdmVkIHNuYXBzaG90IGNvcnJlY3RseS4KCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggYW5vdGhlciB0aW1lIHRoZSBzdHVwaWQgbG9ja2luZyBidWcgKGkgaGFkIGFscmVhZHkgZml4ZWQgaXQgaW4KCSAgQWN0aXZlUmVuZGVyKQoJLSBmaXggc3R1cGlkIHJlc2NhbGluZyBvZiBjb2xvcnMgdmFsdWVzIG9uIFNhdmVTbmFwc2hvdAoKCSogZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHBpeGVsIHNoYWRlciBwcm9ncmFtIGR1bXAgY29kZQoJLSBwaXhlbCBzaGFkZXIgY29kZSBzcGxpdCBpbnRvIGEgbmV3ICJDT00gb2JqZWN0IiAoYXMgZG9uZSBiZWZvcmUgZm9yCgkgIHZlcnRleCBzaGFkZXIpCgktIHNvbWUgZml4ZXMgb24gVmFsaWRhdGUqIGZ1bmN0aW9ucyBjYWxsIHR5cGVzCgktIGFkZCBwaXhlbCBzaGFkZXIgKGllIGZyYWdtZW50X3Byb2dyYW0pIGRldGVjdGlvbiBvbiBjYXBzIGNvZGUKCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3V0aWxzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIGEgbG90IG9mIHRoZSByZW1haW5pbmcgdGV4dHVyZSBvcHMsIG1vdmUgY29kZSBpbnRvIHRoZQoJdXRpbHMgbW9kdWxlLCBhbmQgY2xlYW4gdXAgdGhlIG1haW4gY29kZSBwYXRoLgoKCSogZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzb21lIGNsZWFudXBzCgktIG1vcmUgY3ViZXRleHR1cmVzIGZpeGVzIChub3cgZDNkOCBzZGsgY3ViZW1hcCBzYW1wbGUgd29yayBhbG1vc3QKCSAgcGVyZmVjdGx5KQoJLSBhZGQgYSBuZXcgZGVidWcgZnVuY3Rpb24gImRlYnVnX2QzZHBvb2wiIGFuZCB1c2UgaXQKCS0gYWRkIGEgbmV3IHBhcmFtICh0aGUgZGV2aWNlKSBmb3IgdGhlIGNvbnZlcnNpb25zIGZ1bmN0aW9ucyAoYmVjYXVzZQoJICB3ZSBuZWVkIHRvIGNoZWNrIGNhcHMgdG8gc2VlIGhvdyB0byBjb252ZXJ0KQoJLSBzb21lIGNyYXNoZXMgZml4ZWQgaW4gcmVuZGVyIHRvIHN1cmZhY2UgY29kZSB3aXRoIG5vIHN0ZW5jaWwtZGVwdGgKCSAgc3VyZmFjZQoJLSBhIHZlcnkgc2ltcGxlIGNsaXBsYW5lIGZpeAoJLSBhIHN0dXBpZCBwYWxldHRlcyBmaXggKHN0dXBpZCBsYW5ndWFnZSkKCS0gYmVnaW4gb2YgYW5pc290cm9waWMgZmlsdGVyIHN1cHBvcnQKCS0gYmVnaW4gb2YgY29tcHJlc3NlZCB0ZXh0dXJlcyBzdXBwb3J0CgktIGEgdmVyeSB1c2VmdWwgZGVidWcgZnVuY3Rpb25zOiBJRGlyZWN0M0RTdXJmYWNlOEltcGxfU2F2ZVNuYXBzaG90IHRvCgkgIGR1bXAgc3VyZmFjZXMgYXMgcG5nIDspCgktIG1hbnkgdXNlZnVsIHN1cmZhY2VzIGRlYnVnIGNvZGUgKHVzaW5nIFNhdmVTbmFwc2hvdCkKCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IHNwZWN1bGFyIGVuYWJsZSByZW5kZXJzdGF0ZS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUF2b2lkIHRoZSB1c2Ugb2YgZ2xHZXQgd2hlbiB3ZSBrbm93IHRoZSBpbmZvcm1hdGlvbiBsb2NhbGx5LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3V0aWxzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJT3BlbmdsIDEuNCBhZGRlZCBzdGVuY2lsIHdyYXAgc3VwcG9ydCBhcyBwZXIgZGlyZWN0eCAoYWxzbyBpbiB0aGUKCUdMX0VYVF9zdGVuY2lsX3dyYXAgZXh0ZW5zaW9uKS4KCgkqIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBpbXBsZW1lbnRlZCByZW5kZXIgdG8gc3VyZmFjZXMgKGFuZCByZW5kZXIgdG8gbmV3IHJlbmRlcnRhcmdldHMpCgkgIHVzaW5nIGdseCBwYnVmZmVycyAod2l0aCBhIHVzZWZ1bCBkZWJ1ZyBjb2RlIHRvIGRpc3BsYXkgcmVuZGVyZWQKCSAgc3VyZmFjZSBpbnRvIHdpbmRvdyBkcmF3YWJsZSkKCS0gYmV0dGVyIGN1YmV0ZXh0dXJlcwoJLSBzcGxpdCB1dGlsaXRpZXMgZnVuY3Rpb25zIGludG8gdXRpbHMuYyBhbmQgYWRkZWQgbW9yZQoJLSBtb3JlIHJlYWRhYmxlIGRlYnVnIGFnYWluCgktIGEgYmV0dGVyIGNhcHMgY29kZSAobm90IHBlcmZlY3QgYnV0IGknbGwgdXNlIGdseCBjb2RlIGxhdGVyKQoJLSB1c2Ugb2YgdGhlIG5ldyBjYXBzIGNvZGUKCS0gYmVnaW4gb2YgVXBkYXRlVGV4dHVyZQoJLSBiZWdpbiBvZiBDdXJzb3Igc3VwcG9ydAoJLSBjbGVhbmluZyBtb3N0IG9mIGRlcHJlY2F0ZWQgI2lmIDAvI2VuZGlmCgktIGNvcnJlY3Qgc29tZSBsb2NrYWJsZS91bmxvY2thYmxlIGJlaGF2aW9yCgktIGNvcnJlY3Qgc29tZSByZXR1cm5zIGNvZGUKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkbyBub3Qgc2VhcmNoIGZvciBhdHRhY2hlZCBzdXJmYWNlcyBpZiB0aGUgdGV4dHVyZSBkb2Vzbid0IGhhdmUgdGhlCgkgIE1JUE1BUCBmbGFnIHNldAoJLSBhZGQgR0wgY3JpdC4gc2VjdGlvbiBzdXBwb3J0IGZvciBtYXRyaXggc2V0dGluZwoJLSBzdXBwb3J0IHRoZSB2YXJpb3VzIEJMRU5EIHRleHR1cmUgb3BlcmF0aW9ucwoKCSogZGxscy9kZHJhdy9tZXNhLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglBZGRlZCB0aGUgRDNEVEJMRU5EX0RFQ0FMIHJlbmRlciBzdGF0ZS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLAoJICBmaWxlcy9wcm9maWxlLmMsIG1lbW9yeS9nbG9iYWwuYywgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc29tZSB0eXBvcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYSBkeW5hbWljYWxseSBncm93aW5nIHJpbmcgYnVmZmVyIGZvciBvc3MsIGFsc2EsIGFydHMsIGFuZCBuYXMuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50OiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVVwZGF0ZWQgbXkgZS1tYWlsIGFkZHJlc3MuCgoJKiBsaWJzL3dwcC9wcGwubDogUGF1bCBMYXVmZXIgPFBhdWwuRS5MYXVmZXJAanBsLm5hc2EuZ292PgoJV29yayBhcm91bmQgZm9yIGZsZXggYnJhaW4gZGFtYWdlLgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBsb2NhbGVjb252KCkgd2l0aCBsaWJjIGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9tc3ZjcnQvdGltZS5oOiBBbnRvbmlvIExhcnJvc2EgSmlt6W5leiA8YW50bGFyckB0ZWRpYWwuY29tPgoJQWRkZWQgQ0xPQ0tTX1BFUl9TRUMuCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglBbnRvbmlvIExhcnJvc2EgSmlt6W5leiA8YW50bGFyckB0ZWRpYWwuY29tPgoJQWRkZWQgV1NBU2V0RXZlbnQgZm9yd2FyZC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy93aW4uaW5pOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCUFkZGVkIDEwIG5ldyBtY2kgZXh0ZW5zaW9ucy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJVXBkYXRlIGxpc3Rib3ggZGlyZWN0b3J5IG1vZGUgdG8gbmV3IEZpbmRGaXJzdEZpbGUgZXJyb3IgY29kZS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRHJhd1RleHRFeDogaG9ub3IgY2xpcHBpbmcgZm9yIHVuZGVyc2NvcmVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgRGlyZWN0U291bmQgZW50cmllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJV2l0aCA+MjU2IGNvbG91cnMsIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVhbGl6ZSBhIHBhbGV0dGUsIHNvIHNraXAgaXQKCWFuZCByZXR1cm4gdGhhdCBubyBwYWxldHRlIGVudHJpZXMgaGFkIHRvIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBiRmlyc3RQYWluIGZ1bmt5IG9wdGltaXphdGlvbiwgaXQgaXMgY2F1c2luZyB0b28gbXVjaCBncmllZi4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmgsIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNaWdyYXRlIG1vc3QgaW50MjEgaW9jdGwgcm91dGluZXMgdG8gd2luZWRvcy4KCU1pZ3JhdGUgaW50MjEgc2V0IGRyaXZlIHJvdXRpbmUgdG8gd2luZWRvcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgYSBzZW1pLXN0dWIgZm9yIEdldFByb2Nlc3NQcmlvcml0eUJvb3N0LgoKCSogZGxscy91c2VyL2RkZS9zZXJ2ZXIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmVydCBzb21lIHJlYWxseSB1bndhbnRlZCBjaGFuZ2VzIHRvIHRoZSBEREUgY29kZS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUltcHJvdmUgQ0RST01fR2V0SWRlSW50ZXJmYWNlIChiZWNvbWVzIENEUk9NX0dldEludGVyZmFjZUluZm8pLCBpbgoJb3JkZXIgdG8gYmV0dGVyIHN1cHBvcnQgU0NTSSBkcml2ZXMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUluY2x1ZGUgc3lzL3RpbWUuaCBmb3Igc3RydWN0IHRpbWV2YWwgZGVmaW5pdGlvbi4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCVVzZSBTQV9SRVNUQVJUIG9uIE5ldEJTRC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaW5lY29uc29sZSBjdXJzZXMgYmFja2VuZCBub3cgd29ya3MgZXZlbiBpZiB0ZXJtaW5hbCBpcyBzbWFsbGVyIHRoYW4KCWNvbnNvbGUgc2l6ZS4gQ3Vyc29yIGlzIG5vIGxvbmdlciBsZWZ0IGludG8gd3JvbmcgbG9jYXRpb24gYWZ0ZXIKCXNjcmVlbiB1cGRhdGVzLgoKCSogZGxscy9udGRsbC9zeW5jLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVRpbWVyIHJvdXRpbmVzIG11c3QgY2hlY2sgZm9yIE5VTEwgdGltZXIgbmFtZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvU2kucmMsIHByb2dyYW1zL3dpbmhlbHAvU2sucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGRlZCBzb21lIG1pc3Npbmcgc3RyaW5ncyB0byByZXNvdXJjZXMKCS0gbWFkZSB0aGUgZGVjb21wcmVzc2lvbiBjb2RlIGEgYml0IG1vcmUgcGVkYW50aWMgdG8gYXZvaWQgY3Jhc2hlcwoJLSBmaXhlZCBzdGFydHVwIHdpdGhvdXQgLkhMUCBmaWxlbmFtZSBwYXNzZWQgb24gY29tbWFuZCBsaW5lCgktIHBhc3NlZCBhIGZldyBtb3JlIGNvbW1hbmRzIGZyb20gcmVtb3RlIGFwcGxpY2F0aW9ucyB0byB0aGUgbWFjcm9zCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9nbF9hcGkuaCwgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJIE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCSBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTWFrZSBERHJhdyBub3QgbGlua2VkICdzdGF0aWNhbGx5JyB0byBPcGVuR0wuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6IE1hcmsgV2VzdGNvdHQgPG1hcmtAaG91c2VvZmZpc2gub3JnPgoJRElucHV0IGtleWJvYXJkIGhhbmRsaW5nIGNoZWNrcyBmb3IgaW5jb21pbmcgWDExIGV2ZW50cy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBDT00gYXBhcnRtZW50cy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgaW5jbHVkZS9kM2Q4dHlwZXMuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaWxsIGluIGxvdHMgb2YgdW5pbXBsZW1lbnRlZCByZW5kZXIgc3RhdGVzLgoKMjAwMy0wNS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUZpeCBjb21waWxlIGVycm9yLgoKCSogZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIGxvYWRlci9tb2R1bGUuYywgbWVtb3J5L2hlYXAuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVN0YXJ0IHRvIG1ha2UgdXNlIG9mIHRoZSBwcm9wZXIgUEVCIHN0cnVjdHVyZSBmb3IgcHJvY2VzcwoJaW5mb3JtYXRpb24uCgoJKiBtaXNjZW11L21haW4uYzogV2FybmluZyBmaXguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCB3aW4zMi9uZXdmbnMuYzoKCUJlZXAoKSBpcyBzdGlsbCBuZWVkZWQgaW4gbnRkbGwsIG1vdmUgaXQgYmFjayB0byBzb21lIHJhbmRvbSBmaWxlLgoKCSogbWlzY2VtdS9NYWtlZmlsZS5pbjoKCUFkZGVkIGRlcGVuZGVuY3kgb24gbGlibnRkbGwgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBsaW5rcwoJcHJvcGVybHkuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCAzZCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgYnVmZmVyIHRlc3RzLgoJQ2hlY2sgcmVmZXJlbmNlIGNvdW50IGF0IG9iamVjdCByZWxlYXNlLgoJUmVtb3ZlIHJlZHVuZGFudCBjb29wZXJhdGl2ZSBsZXZlbCBzZXR0aW5nLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CgktIG1ha2UgcGFyYW1ldGVyIGNoZWNraW5nIGFuZCBlcnJvciBub3RpZmljYXRpb24gY29uc2lzdGVudAoJLSBwcm9wYWdhdGUgZHJpdmVyIGFuZCBsb2NhbCBmdW5jdGlvbiBlcnJvcnMgd2hlcmUgbmVlZGVkCgktIGZpeCBlcnJvciByZXR1cm5zIHdoZXJlIHBvaW50ZXIgaXMgZ2l2ZW4gZm9yIHJldHVybmVkIGRhdGEKCS0gYWRkIDNkIGxpc3RlbmVyIHRvIHByaW1hcnkgYnVmZmVyIHdoZW4gbmVlZGVkCgktIGNvcHkgM2QgcGFydCBvZiBidWZmZXIgd2hlbiBkdXBsaWNhdGVkCgktIGZpeCBidWcgd2hlbiBwcmltYXJ5IGJ1ZmZlciBpcyByZW9wZW5lZCB3aXRoIHNtYWxsZXIgYnVmZmVyCgktIGxvb3NlbiByZXF1aXJlbWVudHMgb24gY2FwcyBkYXRhIHNpemUgY2hlY2sKCS0gc2V0IGNhcHMgZm9yIGVtdWxhdGVkIG1vZGUgYmFzZWQgb24gYWN0dWFsIGRyaXZlciBjYXBzCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVtb3ZlIGZvZ2dpbmcgdG9vIHdoZW4gZG9pbmcgdGhlIGZsdXNoIG9mIHRoZSBmcmFtZSBidWZmZXIKCS0gaGFuZGxlIGRlc3QgcmVjdCBpbiB0aGUgQmx0IERFUFRIX0ZJTEwgY2FzZQoJLSBmaXggUXVlcnlJbnRlcmZhY2Ugb24gdGhlIEQzRCBEZXZpY2UKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGxpc3R2aWV3IGN1c3RvbSBkcmF3IG5vdGlmaWNhdGlvbiBmb3IgQ0REU19JVEVNUFJFUEFJTlQgYW5kCglDRERTX1NVQklURU1QUkVQQUlOVCBtZXNzYWdlcy4KCgkqIGRsbHMvb2xlMzIvZGNvbS5oLCBkbGxzL29sZTMyL2Rjb20uaWRsOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEQ09NIElETCBmaWxlIGJhc2VkIG9uIHRoZSBEQ09NIHNwZWNpZmljYXRpb24uCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLAoJICBkbGxzL3JwY3J0NC9ycGNfbWlzYy5oLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUluaXRpYWwgc3VwcG9ydCBmb3IgUlBDIGNhbGwgZmFpbHVyZXMsIGJ5IGNhdGNoaW5nIFJQQyBzZXJ2ZXIKCWV4Y2VwdGlvbnMgYW5kIHJldHVybmluZyBzaW1wbGUgZmFpbHVyZSBwYWNrZXRzLCBhbmQgdGhyb3dpbmcKCWV4Y2VwdGlvbnMgb24gdGhlIGNsaWVudCBzaWRlIHdoZW4gdW5tYXJzaGFsbGluZyB0aGUgZmFpbHVyZSBwYWNrZXQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBdm9pZCBzZXR0aW5nIGFuZCByZXNldHRpbmcgdGhlIHNhbWUgdmFsdWVzIHdoZW4gdGhlcmUgYXJlIG1hbnkKCXJlY3RhbmdsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJVXBkYXRlIG9yZGVyaW5nIG9uIGluc2VydGlvbiBvZiBhbiBpdGVtLgoKMjAwMy0wNS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgY29kZSB0aGF0IHN0YXJ0cyB3aW5lc2hlbGxsaW5rLCBpbnN0ZWFkIGNyZWF0ZSBhIHdpbmRvd3MKCWNvbXBhdGlibGUgc2hvcnRjdXQgKCoubG5rKSBmaWxlLiBBZnRlciBjcmVhdGluZyB0aGF0IGZpbGUsIHN0YXJ0IGEKCWxpbmsgcHJvY2Vzc29yICh3aW5lbWVudWJ1aWxkZXIpIG9uIGl0LCB3aGljaCByZWFkcyBpdCBiYWNrIHRoZW4gY2FsbHMKCXdpbmVzaGVsbGxpbmsuCglSZXdvcmsgQ3JlYXRlU3RyZWFtRnJvbUZpbGUgdG8gY3JlYXRlIGFuIElTdHJlYW0gb2JqZWN0IHRoYXQgaXMKCXdyaXRlYWJsZS4KCgkqIGxpYnMvcG9ydC9zcGF3bi5jOgoJUmVzZXQgU0lHQ0hMRCBoYW5kbGVyIHRvIGRlZmF1bHQgaWYgd2UgbmVlZCB0byB3YWl0LiBSZXNldCBTSUdQSVBFCgloYW5kbGVyIGJlZm9yZSBleGVjLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglNb3ZlZCBhIGNvdXBsZSBvZiAxNi1iaXQgbW9kdWxlIGZ1bmN0aW9ucyBmcm9tIHRvIGxvYWRlci9uZS9tb2R1bGUuYy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jaGFuZ2UuYywgZGxscy9rZXJuZWwvZXJyb3IxNi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBtaXNjL2Vycm9yLmMsCgkgIG1pc2MvbWFpbi5jOgoJTW92ZWQgbWlzYy9lcnJvci5jIHRvIGRsbHMva2VybmVsL2Vycm9yMTYuYy4KCUdldCByaWQgb2YgbWlzYy9tYWluLmMuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9nZGlvYmouYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEdkaUNvbW1lbnQgZm9yIGVuaGFuY2VkIG1ldGFmaWxlcy4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmM6CglGaXhlZCB3cm9uZyBsZW5ndGggYXJndW1lbnQgaW4gZ2V0SW50ZXJmYWNlUGh5c2ljYWxCeU5hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnNlcnRpbmcgY29sdW1uIHplcm8gc2hvdWxkIG5vdCBtb2RpZnkgdGhlIG1haW4gaXRlbSAoc3BvdHRlZCBieQoJUm9iZXJ0IFNoZWFybWFuKS4KCgkqIG1pc2MvY3B1LmM6IEVyaWMgQW5ob2x0IDxldGFAbGNsYXJrLmVkdT4KCUFkZGVkIENQVSBkZXRlY3Rpb24gZm9yIEZyZWVCU0QuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgIm1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgd2FybmluZyBpbiBleGVyY2l6ZVNlcnZlcigpLgoKCSogZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGb3IgUlBDIHNlcnZlcnMsIGRvbid0IGRlYWxsb2NhdGUgdGhlIFJQQyByZXF1ZXN0IHBhY2tldCBiZWZvcmUgdGhlCglSUEMgcmVwbHkgcGFja2V0IGlzIHNlbnQsIGluIGNhc2UgbWFyc2hhbGxpbmcgdGhlIHJlcGx5IG5lZWRzIGFueSBvZgoJdGhlIHJlcXVlc3QgZGF0YS4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzZW1pLXN0dWIgZm9yIE5kclByb3h5RXJyb3JIYW5kbGVyLgoJRml4ZWQgYSBjYXNlIG9mIHBvdGVudGlhbCBzdGFjayB0cmFzaGluZy4KCjIwMDMtMDUtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgYWxsIHByb2Nlc3MgaW5pdGlhbGlzYXRpb24gY29kZSB0byBwcm9jZXNzLmMgYW5kIHJlbW92ZWQKCWxvYWRlci9tYWluLmMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBOdFF1ZXJ5T2JqZWN0IGFuZCBOdFNldEluZm9ybWF0aW9uT2JqZWN0IGZvciB0aGUKCU9iamVjdERhdGFJbmZvcm1hdGlvbiBjbGFzcy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIEdsb2JhbCogbWVtb3J5IEFQSSBmdW5jdGlvbnMgdGhyZWFkIHNhZmUuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOiBDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglBdm9pZCBwcmludGluZyBhbiB1bmluaXRpYWxpemVkIGJ1ZmZlci4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUltcGxlbWVudCBDRFJPTV9TY3NpUGFzc1Rocm91Z2ggYW5kIENEUk9NX1Njc2lQYXNzVGhyb3VnaERpcmVjdCBvbgoJTmV0QlNELgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3N5c3RlbS5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBtZW1vcnkvaW5zdHIuYywgbWlzYy9zeXN0ZW0uYzoKCU1vdmVkIHN5c3RlbS5kbGwgaW1wbGVtZW50YXRpb24gdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvb2xlY2xpMTYuYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVdpbjE2LzMyIHNlcGFyYXRpb24gb2Ygb2xlY2xpMzIuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVtb3ZlIGFsbCBvcGVuR0wgY2FsbHMgaW4gZXhlY3V0ZSBidWZmZXJzIGFuZCB1c2UgdGhlIERpcmVjdDNENyBBUElzLgoJRW5hYmxlIHJldHJpZXZpbmcgdGhlIHJlbmRlciB0YXJnZXQgc3VyZmFjZSBvZiBhIGRldmljZSB0aHJvdWdoIGl0cwoJUXVlcnlJbnRlcmZhY2UgbWV0aG9kLgoJQXZvaWQgbGlnaHRzIHVwZGF0aW5nIHdoZW4gYSB2aWV3cG9ydCBhbmQgYSBkZXZpY2UgaGF2ZSBub3QgYmVlbgoJYXNzb2NpYXRlZCB0byB0aGVtLgoJQ2xlYXIgdGhlIFogYnVmZmVyIG9ubHkgd2hlbiB3ZSdyZSBhc2tlZCB0byBieSBDaGVja2luZyBEM0RCVExfRklMTAoJZmxhZy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGRlZCBzb21lIGxvbmcgZmlsZW5hbWUgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvY3B1LmM6CglZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJSW1wbGVtZW50ZWQgR2V0U3lzdGVtSW5mbyBvbiBOZXRCU0QuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3BpcGUuYywgc2VydmVyL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50IGFub255bW91cyBwaXBlcyBvbiB0b3Agb2YgbmFtZWQgcGlwZXMuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSB0cmFjaW5nIGZpeGVzCgktIGZsdXNoIHRoZSByaWdodCBidWZmZXIgdG8gdGhlIHNjcmVlbgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglObyBuZWVkIHRvIGZsdXNoIHRoZSBzdXJmYWNlIGJhY2sgaWYgbGFzdCBsb2NrIHdhcyBhIFJPIGxvY2suCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci90aW1lci5jOgoJTW92ZWQgdGltZXIgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglIYW5kbGUgcmVxdWVzdHMgZm9yIENMU0lEX1BTRGlzcGF0Y2guCgoJKiBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9jcHNmLmgsCgkgIGRsbHMvcnBjcnQ0L2NzdHViLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIE5kckRsbFJlZ2lzdGVyUHJveHkgc28gaXQgcmVnaXN0ZXJzIHRoZSBrZXkgbmFtZXMgdGhhdCBvbGUzMgoJZXhwZWN0cy4gQmV0dGVyIGRlYnVnIHRyYWNlcyAoaW5jbHVkZSBuYW1lIG9mIGludGVyZmFjZSkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggYnVnIGluICdCbHQgREVQVEhfRklMTCcgb3ZlcnJpZGUKCS0gYWRkZWQgYSBsb2NrIGFyb3VuZCB0aGUgZmx1c2hpbmcgb2YgYSBzdXJmYWNlIHRvIHRoZSBmcmFtZSBidWZmZXIKCS0gb3B0aW1pemUgdGV4dHVyZSBsb2FkaW5nIG15IG1pbmltaXppbmcgdGhlIGNhc2VzIHdoZXJlIGEgY29udmVyc2lvbgoJICBuZWVkcyB0byBvY2N1ciBhbmQgYWxzbyBieSByZXVzaW5nIHRoZSBhbGxvY2F0ZWQgbWVtb3J5CgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RpbWVyLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCB0aW1lciByZWxhdGVkIGZ1bmN0aW9ucyBpbiBudGRsbCBhbmQgbWFrZSB0aGUga2VybmVsMzIKCWZ1bmN0aW9ucyB1c2UgdGhlbS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogVXNlIHRoZSB0cmFjZSBtYWNybyBmb3IgZGVidWdnaW5nIG91dHB1dC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGF2ZSBMaWdodHMgYW5kIENsaXBwbGFuZXMgdHJhbnNmb3JtZWQgcHJvcGVybHkuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglPbmx5IGNyZWF0ZSB0aGUgMTYtYml0IGR1bW15IG1vZHVsZSB3aGVuIHdlIG5lZWQgcmVhbGx5IGl0LgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2luaXQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglMb29rIHVwIHRoZSBwcmludGVyJ3MgcG9ydCBpbiB0aGUgcmVnaXN0cnkgaWYgbmVpdGhlciBDcmVhdGVEQyBvcgoJU3RhcnREb2Mgc3BlY2lmeSBvbmUuCglQaG90b3Nob3AgNyBoYXMgYSBidWcgdGhhdCByZXN1bHRzIGluIGNiSW5wdXQgYmVpbmcgMiBsZXNzIHRoYW4gdGhlCglsZW5ndGggb2YgdGhlIHN0cmluZyByYXRoZXIgdGhhbiAyIG1vcmUuICBTbyB1c2UgdGhlIFdPUkQgYXQKCWluX2RhdGFbMF0gaW5zdGVhZC4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ1VQUyB1c2VzIHRoZSBwcGQgZmlsZSB0byBzdG9yZSB0aGUgZGVmYXVsdCBwYXBlciBzaXplLCBzbyB3ZSdsbCByZWFkCglpdCBmcm9tIGhlcmUuCglJZiB0aGUgcHBkIGRvZXNuJ3QgY29udGFpbiBhbiBleHBsaWNpdCByZXNvbHV0aW9uIHRoZW4gZGVmYXVsdCB0bwoJMzAwZHBpLgoKCSogZGxscy9rZXJuZWwvbmxzLyoubmxzLCBpbmNsdWRlL3dpbm5scy5oOgoJQWRkZWQgdmFsdWUgZm9yIGRlZmF1bHQgVW5peCBjb2RlcGFnZSB0byBhbGwgdGhlIGxvY2FsZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgImRlcmVmZXJlbmNlIiBwb2ludGVyIGZsYWcuCglBZGRlZCBOZHJDbGVhck91dFBhcmFtZXRlcnMgc3R1Yi4KCgkqIGRsbHMvcnBjcnQ0L25kcl9vbGUuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQb3J0YWJpbGl0eSBmaXguIEJldHRlciBkZWJ1ZyBtZXNzYWdlcyAoZGlzcGxheSBJSUQgb2YgaW50ZXJmYWNlIHRvCgltYXJzaGFsKS4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLml0OgoJRnJhbmNlc2NvIERpIFB1bnppbyA8ZnJhbmNlc2NvX2RpcHVuemlvQHZpcmdpbGlvLml0PgoJSXRhbGlhbiB0cmFuc2xhdGlvbiBvZiB0aGUgUkVBRE1FIGZpbGUuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGltcGxlbWVudCB0aGUgVEZBQ1RPUiB0ZXh0dXJlIHN0YWdlIHN0YXRlCgktIHN1cHBvcnQgVGV4dHVyZSBtYXRyaWNlcwoJLSB2YXJpb3VzIG1pc2MuIGNsZWFuLXVwcwoKMjAwMy0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGluY2x1ZGUvZGRlLmgsIGluY2x1ZGUvZGRlbWwuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFeHBlY3QgbXVsdGlwbGUgRE5TXyBmbGFncy4KCVBhcnRpYWxseSBpbXBsZW1lbnRlZCBEZGVFbmFibGVDYWxsYmFjay4KCUNhbGwgYSBjYWxsYmFjayB3aXRoIFhUWVBfQ09OTkVDVF9DT05GSVJNIGFmdGVyIGFuIGFjY2VwdGVkCglYVFlQX0NPTk5FQ1QuCglBZGRlZCB0cmFjZXMsIGNsYXJpZnkgZGF0YSB0eXBlcywgb3RoZXIgY29zbWV0aWNzLgoKCSogb2JqZWN0cy9mb250LmM6IEZpeGVkIHJldHVybiB2YWx1ZSBvZiBHZXRUZXh0RmFjZUEuCgoJKiBvYmplY3RzL2RjLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZnRlciB3ZSB1cGRhdGUgdGhlIG1hcHBpbmcgbW9kZSByZXNlbGVjdCB0aGUgY3VycmVudCBmb250IGJhY2sgaW50bwoJdGhlIGRjIHNvIHRoYXQgaXRzIHNpemUgaXMgcmVjYWxjdWxhdGVkLgoKCSogZGxscy93aW5lcHMvcHMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGFkZCBzcGFjZXMgaW4gdGhlIFBvc3RTY3JpcHQgYmV0d2VlbiBldmVyeSBwaXhlbCAtIHRoaXMgbWFkZQoJZGVidWdnaW5nIGVhc2llciBidXQgcmVzdWx0cyBpbiBhbiBhd2Z1bCBsb3Qgb2Ygd2hpdGVzcGFjZSBiZWluZyBzZW50Cgl0byB0aGUgcHJpbnRlci4KCURvbid0IGdlbmVyYXRlIHRoZSAlJU9yaWVudGF0aW9uIERTQyBjb21tZW50LiAgVGhlIGN1cHMgcHN0b3BzIGZpbHRlcgoJdHJpZXMgdG8gcm90YXRlIHRoZSBpbWFnZSBieSA5MGRlZ3Mgd2hlbiB0byBpdCBzZWVzIHRoaXMgY29tbWVudC4KCVN0b3AgYSBjcmFzaCBpZiB0aGUgZG9jdW1lbnQgdGl0bGUgaXMgTlVMTC4KCgkqIGRsbHMvd2luZXBzL3R5cGUxLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZXNldCB0aGUgZXNjYXBlbWVudCBiYWNrIHRvIHplcm8gYmVmb3JlIHJldHJpZXZpbmcgdGhlIG91dGxpbmUgKHdlJ3JlCglhbHJlYWR5IGluIGEgcm90YXRlZCBjb29yZGluYXRlIHN5c3RlbSkuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2YgdGV4dCBhbGlnbiBtb2RlcyBmb3Igcm90YXRlZCB0ZXh0LgoKCSogZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQmFzaWMgaW1wbGVtZW50YXRpb24gb2YgRW51bVBvcnRzQTogZHVtcCBhbGwgdGhlIHNlcmlhbCBhbmQgcHJpbnRlcgoJcG9ydCBuYW1lcyBpbnRvIGEgc3RydWN0dXJlLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9TaS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHJlZHVuZGFudCBMQU5HVUFHRSBzdGF0ZW1lbnRzLgoKCSogcHJvZ3JhbXMvdmlldy92aWV3LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiB1bmluaXRpYWxpemVkIGJ1ZmZlci4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggQ3JlYXRlUHJvY2VzcygiYzpcUHJvZ3JhbSBGaWxlc1xoZWxsby5iYXQiKS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgY2FuJ3QgdXNlIFJ0bENyZWF0ZVVuaWNvZGVTdHJpbmdGcm9tQXNjaWl6IGZvciBXTV9TRVRURVhUIGFzIHRoZQoJcmVzdWx0aW5nIHVuaWNvZGUgc3RyaW5nIG1heSBiZSBncmVhdGVyIHRoYW4gMHhmZmZmIGJ5dGVzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9ucyBiZWZvcmUgY2FsbGluZyB0aGVtLgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIHdpbmRvd3MvY2xhc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHZXRDbGFzc0luZm8gcmV0dXJucyBjbGFzcyBhdG9tIG9uIHN1Y2Nlc3MuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgU0VFX01BU0tfQ0xBU1NLRVkgY2FzZSBmb3IgU2hlbGxFeGVjdXRlLgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBmb3IgTmV0U2VydmVyRW51bS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3Igbm9uLWZ1bGwgc2NyZWVuIHZpZXdwb3J0cyBhbmQgY2xlYXJpbmcuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgYSBmZXcgbW9yZSBkZXZpY2UgY2Fwcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglOZXcgX2xjcmVhdCB0ZXN0cyBmb3IgZmlsZW5hbWUgZW5kaW5nIGluIGEgc2xhc2ggYW5kIHZvbHVtZSBsYWJlbAoJYXR0cmlidXRlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvY2Ryb20uYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglBZGRlZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIENEUk9NX0dldElkZUludGVyZmFjZSBvbiBOZXRCU0QuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVVzZSBjb3JyZWN0IHR5cGUgb2YgcG9pbnRlciBpbiBTYWZlQXJyYXlDcmVhdGVWZWN0b3IgdG8gYXZvaWQgbWVtb3J5Cgljb3JydXB0aW9uLiBBZGQgdHJhY2VzLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkIGEgUElETCB0eXBlIEZvciBOZXR3b3JrIFByb3ZpZGVyLgoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUluY2x1ZGUgYXJwYS9uYW1lc2VyLmggYmVmb3JlIHJlc29sdi5oLgoKCSogY29udHJvbHMvZWRpdC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglSZXZlcnQgdGhlIFdNX0dFVERMR0NPREUgaGFuZGxpbmcgcGF0Y2ggY29tcGxldGVseSB0aGlzIHRpbWUuIEl0CglicmVha3MgdG9vIG11Y2guCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBnZXQgY3VycmVudCBkcml2ZSBpbnQyMSBmdW5jdGlvbiB0byB3aW5lZG9zLgoJRml4IHNwZWxsaW5nIG1pc3Rha2VzLgoJQWRkIHNvbWUgZHJpdmUgaGFuZGxpbmcgaGVscGVyIHJvdXRpbmVzLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCB2YWx1ZSBvZiBJSURfSVNoZWxsRm9sZGVyMi4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgaGFuZGxpbmcgb2YgcGl0Y2ggc2V0IHRvIDAuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBSR0IgMzIgc3VyZmFjZSBsb2NraW5nIChzZWVtcyB0byB3b3JrIGZpbmUgd2l0aG91dCByZXNvcnRpbmcgdG8KCUFscGhhIGhhY2tzKS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJTWFrZSBzdXJlIGRyYXdhYmxlX29yZyBpcyBzZXQgY29ycmVjdGx5IHdoZW4gdXNpbmcgb25lIG9mIHRoZSBwYXJlbnRzCglhcyBkcmF3YWJsZSAoZm91bmQgYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUF2b2lkIHRoZSAnQmVsb3cnIHN0YWNraW5nIG1vZGUgd2hlbiBjaGFuZ2luZyBaIG9yZGVyIHNpbmNlIG1hbnkKCXdpbmRvdyBtYW5hZ2VycyBkb24ndCBnZXQgaXQgcmlnaHQuCglGaXggWiBvcmRlciBzeW5jaHJvbml6YXRpb24gZm9yIGNoaWxkIHdpbmRvd3MgKGZvdW5kIGJ5IERtaXRyeQoJVGltb3Noa292IGFuZCBVbHJpY2ggQ3pla2FsbGEpLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hc2sgb3V0IE1XTU9fV0FJVEFMTCBpZiBvbmx5IHNlcnZlciBxdWV1ZSBoYW5kbGUgd2FzIHBhc3NlZCBpbi4KCgkqIGRsbHMvd2luZXBzL2JpdGJsdC5jLCBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvYnJ1c2guYywKCSAgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBjbGlwcGluZyBzbyB0aGF0IHRoZSBQUyBjbGlwIHBhdGggaXMgb25seSBzZXQganVzdCBiZWZvcmUgYW55CglncmFwaGljcyBvdXRwdXQgZXZlbnQuIERvaW5nIGl0IHRoaXMgd2F5IG1lYW5zIHdlIGRvbid0IGV2ZXIgbmVlZCB0bwoJY2FsbCBpbml0Y2xpcCB3aGljaCBpcyBhIEdvb2QgVGhpbmcuCgoJKiBmaWxlcy9kb3NfZnMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjYXN0cy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9yZWdpb24uYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRSYW5kb21SZ24oLi4uLDEpIHJldHVybnMgdGhlIGN1cnJlbnQgY2xpcHBpbmcgcmduLgoJTW92ZWQgR2V0UmFuZG9tUmduIGFuZCB0aGUgTWV0YVJnbiBmdW5jdGlvbnMgdG8gb2JqZWN0cy9jbGlwcGluZy5jLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3RvcmUgTURJIHdpbmRvdyBpbiB0aGUgY2FzZSBvZiBkaXNhYmxlZCBtYXhpbWl6ZSBidXR0b24uCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgaGJtQ29sb3Igb25seSBmb3IgY29sb3IgaWNvbnMgaW4gR2V0SWNvbkluZm8uCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQ2F0Y2ggYnJvYWRjYXN0IHdpbmRvdyBoYW5kbGVzIGluIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1c2luZwoJU2VuZE1lc3NhZ2UuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgQnJvYWRjYXN0U3lzdGVtTWVzc2FnZVcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlICVMIGVzY2FwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUmVhZENhYmluZXRTdGF0ZSBhbmQgV3JpdGVDYWJpbmV0U3RhdGUuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvcXVldWUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXNwZWN0IHRoZSB2ZXJzaW9uIFNQX0NPUFkgZmxhZ3Mgd2hlbiBpbnN0YWxsaW5nIGZpbGVzLgoJTWFrZSBHZW5JbnN0YWxsMTYgb25seSBjb3B5IGZpbGVzIGlmIHRoZSB2ZXJzaW9uIGlzIG5ldyBvciBzYW1lLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbWktY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBPbGVNZXRhZmlsZVBpY3RGcm9tSWNvbkFuZExhYmVsLgoKCSogZGxscy9nZGkvZW5obWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFN0cmV0Y2hESUJpdHMgaW4gdGhlIEVNRiBjb2RlLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIGlzc3VlcyBpbiBFTUZEUlZfRXh0VGV4dE91dC4KCgkqIGRsbHMvZ2RpL21mZHJ2L2luaXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY29yZCBlc2NhcGVzIGluIG1ldGFmaWxlcy4KCjIwMDMtMDUtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgZm9yIGRldmljZSBzdXJmYWNlIGxvY2tpbmcuCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbW9yIHVzZWZ1bGwgZGVidWcgZnVuY3Rpb25zIGRlYnVnX2QzZHVzYWdlIGFuZCBkZWJ1Z19kM2RkZXZpY2V0eXBlCgktIGZpeCBhIGNyYXNoIGluIHBpeGVsIHNoYWRlciBwYXJzZXIgKGhhcHBlbmVkIHdpdGggdW5yZWFsMikKCS0gY3VycmVudGx5IGRlc2FjdGl2ZSBwaXhlbCBzaGFkZXJzIGNhcHMgKHdpdGggI2RlZmluZSkgd2hpbGUgaHcKCSAgc2hhZGVycyBjb2RlIGlzbid0IG1lcmdlZAoJLSB3aGVuIHdlIGhhdmUgYSBzcGVjaWFsIGRlYnVnIGNoYW5uZWwgZm9yIHNoYWRlciwgdXNlIGl0IDspCgktIGZpeCBhZ2FpbiBzb21lIHN0dWJzIHJldHVybiB2YWx1ZQoJLSBtb3JlIG1vcmUgcmVhZGFibGUgdHJhY2VzIG5vdyAocHJpbmNpcGFseSBJRGlyZWN0M0Q4IGNhcGFjaXRpZXMKCSAgY2hlY2sgYW5kIHN1cmZhY2UgbG9ja2luZyBjb2RlKSB1c2luZyBuZXcgZGVidWcgZnVuY3Rpb25zCgktIGZpeC9jbGVhbmluZyB0aGUgc3VyZmFjZSBsb2NraW5nIGNvZGUKCS0gbm93IHdlIHN1cHBvcnQgRDNEVE9QX1NVQlNUUkFDVCBzbyBkZWNsYXJlIGl0IGluIGNhcHMKCS0gbm93IHN1cHBvcnQgdHJ1ZSAzMmJpdCAod2VsbCBYIDI0IGJpdCBjYW4gYmUgdXNlZCBhcyAzMiBiaXQgaW4gY2FwcwoJICBjb2RlKQoJLSBmaXJzdCB0cnkgdG8gZ2V0IEQzRFRTU19UQ0lfQ0FNRVJBU1BBQ0VOT1JNQUwgYW5kCgkgIEQzRFRTU19UQ0lfQ0FNRVJBU1BBQ0VSRUZMRUNUSU9OVkVDVE9SIGxvb2sgZ29vZAoJLSBuYXRpdmUgc3VwcG9ydCAzMiBiaXQgc3VwcG9ydCAobm93IGFwcGxpY2F0aW9uIGNhbiBjaG9vc2UgMTYgb3IgMzIKCSAgYml0IHN1cHBvcnQpIGlmIGN1cnJlbnQgcmVzb2x1dGlvbiBpcyAyNCBiaXQgKGFzIHdlIGNhbiBvbmx5IGxhdW5jaAoJICBnYW1lcyBpbiB3aW5kb3dlZCBtb2RlKQoJLSB0ZXh0dXJlcyBwYWxldHRlcyBzdXBwb3J0CgktIGZpeCByZWZsZXhpb24gcGxhY2VtZW50IGNvZGUgKHRoZSBzZGsgc2FtcGxlIGJlZ2luIHRvIHdvcmspCgktIGZpeCBhIHN0dXBpZCBjcmFzaCB3aGVuIHVzaW5nIHRyYWNlcyBpbiB2c2hhZGVyZGVjbGFyYXRpb24KCS0gbW9yZSBtb3JlIHJlYWRhYmxlIHRyYWNlcyAoaW5pdC9jYXBzKQoJLSBtb3JlIGN1YmV0ZXh0dXJlcyBmaXhlcwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTaWxlbmNlIHNvbWUgVFJBQ0VzIHRvIGJldHRlciBzcG90IHJlYWwgZXJyb3JzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YWlvbiBvZiBWYXJCc3RyRnJvbURlYy4KCjIwMDMtMDUtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvaG9vazE2LmMsIGRsbHMvdXNlci93bmQxNi5jLCBsb2FkZXIvdGFzay5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUF2b2lkIHVzaW5nIHRoZSBNYXBITW9kdWxlIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgbG9hZGVyL25lL21vZHVsZS5jOgoJQ2FsbCB0aGUgdXNlciBzaWduYWwgcHJvYyBmb3IgZXhlIG1vZHVsZXMgdG9vLCB0byBhdm9pZCBkdXBsaWNhdGluZwoJdGhlIG1vZHVsZSBjbGVhbnVwIGNvZGUuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBtZW1vcnkvaGVhcC5jLAoJICBtZW1vcnkvbG9jYWwuYzoKCU1vdmVkIG1vc3QgbG9jYWwgaGVhcCBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBERUNJTUFMX1NFVFpFUk8KCVJlbW92ZWQgYSB3b3JrYXJvdW5kIGZvciB0aGUgZm9ybWVyIHByb2JsZW0uCgoJKiB0b29scy93aW5laW5zdGFsbDogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJU2lsZW5jZSBlcnJvciBvbiBub24tcmVkaGF0IHN5c3RlbXMuCgoJKiB0b29scy9jMm1hbi5wbDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGb3JjZSBwZXJsIHRvIHVzZSBieXRlIHNlbWFudGljcy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglIVFRQX0h0dHBPcGVuUmVxdWVzdEE6IENhbGN1bGF0ZSBzaXplIGZyb20gdGhlIHJpZ2h0IGFyZ3VtZW50LgoKCSogZ3JhcGhpY3MvYml0Ymx0LmM6IEphZWtpbCBMZWUgPEphZWtpbC5MZWVAZWZpLmNvbT4KCUltcGxlbWVudCBNYXNrQmx0IHVzaW5nIEJpdEJsdCAoYWRhcHRlZCBieSBEaW1pdHJpZSBPLiBQYXVuKS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUltcGxlbWVudCB0ZXh0dXJlIHRyYW5zZm9ybSBmbGFncyB0aGUgYmVzdCB3ZSBjYW4gZm9yIG5vdy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9hdG9tLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIG1lbW9yeS9hdG9tLmM6CglNb3ZlZCBhdG9tIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpeGVkIHJhbmdlIGNoZWNraW5nIG9uIHRoZSBudW1iZXIgb2YgbGlnaHRzLgoJU2lsZW5jZSB0aGUgZml4bWVzLgoKMjAwMy0wNS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglOZXcgY29tY3RsMzIgdGVzdCBkaXJlY3RvcnkgYW5kIHRlc3QgY2FzZSBmb3IgRFBBX1NlYXJjaC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRFBBX1NlYXJjaDogSGFuZGxlIERQQVNfSU5TRVJUQkVGT1JFIG9uIGVtcHR5IGxpc3QuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy92eGQuYywgZGxscy93aW5lZG9zL3dwcm9jcy5zcGVjLCBtc2Rvcy92eGQuYzoKCU1vdmVkIHZ4ZCBzdXBwb3J0IHRvIHdpbmVkb3MuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTdXBwbHkgdGhlIGNvcnJlY3QgYm94IG9uIHRoZSBzY3JlZW4gdG8gYmUgcHJvY2Vzc2VkIGR1cmluZyB0aGUgY2xlYXIKCWNhbGwsIHVzaW5nIG9wZW5nbCBjb29yZGluYXRlcywgbm90IGRpcmVjdHggY29vcmRpbmF0ZXMuCgoJKiBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy91c2VyL3VzZXIxNi5jLCBpbmNsdWRlL21vZHVsZS5oLAoJICBpbmNsdWRlL3VzZXIuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLAoJICBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHdpbmRvd3MvdXNlci5jOgoJR2V0IHJpZCBvZiB0aGUgMzItYml0IHVzZXIgc2lnbmFsIHByb2Mgc2luY2Ugd2UgYWx3YXlzIHJ1biBidWlsdGluCglVU0VSIG5vdy4gIE1vdmVkIFVTRVIgbW9kdWxlIGNsZWFudXBzIHRvIHRoZSAxNi1iaXQgc2lnbmFsIHByb2MuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHViIGZvciBWYXJCc3RyRnJvbURlYy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBWVF9JMiA8LT4gVlRfVVNFUkRFRklORUQvVEtJTkRfRU5VTSBjb252ZXJzaW9ucyB0b28uCgoJKiBmaWxlcy9maWxlLmM6IFBoaWxpcCBNYXNvbiA8cG1hc29uQHJpY2FyZG8uY29tPgoJRm9yY2UgRklMRV9HZXRUZW1wRmlsZU5hbWUgdG8gY29udGludWUgbG9va2luZyBmb3IgbmV3IHRlbXAgZmlsZSBuYW1lCglpZiBlcnJvciByZXR1cm5lZCBmcm9tIENyZWF0ZUZpbGVXIGlzIEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU29sdmVkIHRoZSB0cmFuc3BhcmVuY3kgcHJvYmxlbSBzZWVuIGluIHRoZSBDbGlwTWlycm9yIFNESyBzYW1wbGUKCXByb3Blcmx5LiBBbHNvIGEgZmV3IHRhYnMtPnNwYWNlcyB0byBjb3JyZWN0IGZvcm1hdHRpbmcuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglTZXBhcmF0ZSBXaW4xNiBhbmQgV2luMzIgaW1wbGVtZW50YXRpb25zIGluIG1lbWxvY2tieXRlcy4KCgkqIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUluIGdldFRjcFRhYmxlKCksIGd1YXJkIExpbnV4LXNwZWNpZmljIGNvbnN0YW50cyBieSAjaWZkZWYuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc19hdF9nbXguYXQ+CglJbXBsZW1lbnQgZmlsZSBjb250cm9sIGJsb2NrIChGQ0IpIGZ1bmN0aW9uczoKCSAgSU5UMjFfT3BlbkZpbGVVc2luZ0ZDQiBbMHgwZl0sCgkgIElOVDIxX0Nsb3NlRmlsZVVzaW5nRkNCIFsweDEwXSwKCSAgSU5UMjFfU2VxdWVuaWFsUmVhZEZyb21GQ0IgWzB4MTRdLAoJICBJTlQyMV9TZXF1ZW5pYWxXcml0ZVRvRkNCIFsweDE1XSwKCSAgSU5UMjFfUmVhZFJhbmRvbVJlY29yZEZyb21GQ0IgWzB4MjFdLAoJICBJTlQyMV9Xcml0ZVJhbmRvbVJlY29yZFRvRkNCIFsweDIyXSwKCSAgSU5UMjFfUmFuZG9tQmxvY2tSZWFkRnJvbUZDQiBbMHgyN10sCgkgIElOVDIxX1JhbmRvbUJsb2NrV3JpdGVUb0ZDQiBbMHgyOF0uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglNb3JlIG5hbWVkIHBpcGVzIHRlc3RzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglFeHBsaWNpdGx5IGNsZWFuIGdlbmVyYXRlZCBzeW1saW5rcy4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBpbnN0YWxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuaCwgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSByZXdyaXRlIG9mIHRoZSBuYW1lZCBwaXBlIGNvZGUKCS0gYWxsb3cgTnRGaWxlRmx1c2hCdWZmZXJzIHRvIHdhaXQKCS0gYWxsb3cgRGlzY29ubmVjdE5hbWVkUGlwZSB0byBpbnZhbGlkYXRlIGNsaWVudCBjYWNoZWQgZmQKCS0gZml4IHRoZSBwaXBlIHRlc3Qgbm93IHRoYXQgb25lIGV4dHJhIHRlc3QgcGFzc2VzCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIFJ0bERvc1BhdGhOYW1lVG9OdFBhdGhOYW1lX1UsIFJ0bEdldEN1cnJlbnREaXJlY3RvcnlfVSwKCVJ0bEdldEZ1bGxQYXRoTmFtZV9VIGFuZCBSdGxTZXRDdXJyZW50RGlyZWN0b3J5X1UgKHRoZSBsYXN0IG9uZQoJcGFydGlhbGx5IGFzIHdlIGNhbid0IHRlc3Qgd2hldGhlciBhIHBhdGggZXhpc3RzIG9yIG5vdCkuCgoJKiBkbGxzL2ltbTMyL2ltbS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBhIG51bGwgcG9pbnRlciBjcmFzaCBpbiBJbW1HZXRPcGVuU3RhdHVzLgoKCSogZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IGNvbXBpbGF0aW9uIGVycm9yIHJlcG9ydGVkIGJ5IFN0ZWZhbiBMZWljaHRlciB3aGVuIHVzaW5nIG9sZAoJb3BlbkdMIGhlYWRlcnMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJUHJldmlvdXMgdmlld3BvcnQgZml4IG9ubHkgd29ya3MgZm9yIGZ1bGwgc2NyZWVuIGFwcGxpY2F0aW9ucyBhcyB3ZQoJZGlkbid0IGNoYW5nZSB0aGUgYmFjayBidWZmZXIgc2l6ZSBpbmZvcm1hdGlvbiB1bnRpbCBhZnRlciBjb3B5aW5nIHRoZQoJcHJlc2VudGF0aW9uIHBhcmFtZXRlcnMsIHNvIHdoZW4gc2V0dGluZyB1cCB0aGUgdmlld3BvcnQgdGhlCgliYWNrYnVmZmVyd2lkdGgvaGVpZ2h0IHdhcyAwLiBNb3ZlZCB0aGUgY29weSB1bnRpbCBhZnRlciBpdCBoYXMgYmVlbgoJY29ycmVjdGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBWYXJEZWNGcm9tU3RyLgoKCSogY29udHJvbHMvZWRpdC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglSZXZlcnQgdGhlIHByZXZpb3VzIHBhdGNoIGZvciBjYXB0dXJpbmcga2V5cyBpbiBhbiBlZGl0LWxpc3Rib3ggY29tYm8uCgoyMDAzLTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX2ltYWdlLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVJld3JvdGUgbW9kdWxlIFRMUyBzdXBwb3J0IGFuZCBtb3ZlZCBpdCB0byBudGRsbC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9taXNjZW11LmgsIG1lbW9yeS9pbnN0ci5jOgoJTWFkZSBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gcmV0dXJuIHRoZSBleGNlcHRpb24gY29kZS4KCURvbid0IGFsbG93IGludFhYIGluc3RydWN0aW9ucyBmcm9tIDMyLWJpdCBjb2RlIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglKdWtrYSBIZWlub25lbikuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglPbmx5IHByaW50IHdhcm5pbmcgb24gbm0gZmFpbHVyZSBiZWNhdXNlIGl0IGZhaWxzIG9uIGRhcndpbiBpZiB0aGVyZQoJYXJlIG5vIHN5bWJvbHMgKHJlcG9ydGVkIGJ5IFBpZXJyZSBkJ0hlcmJlbW9udCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL01ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+Cgl3aW5lamFjay5kcnYuc28gbmVlZHMgLWx3aW5lX3V1aWQgdG9vLgoKCSogZGxscy9kM2Q4L3NoYWRlci5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbmV3IGRlYnVnIGNoYW5uZWwgZm9yIHNoYWRlcnMgY29kZSAnZDNkX3NoYWRlcicKCS0gbW9yZSBkZWJ1Z2dpbmcgdHJhY2VzCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBkZWNsYXJlIGEgbmV3IGRlYnVnIGNoYW5lbCBmb3IgdmVydGV4IHNoYWRlcnMKCS0gc29tZSB1c2VmdWwgZGVidWcgZnVuY3Rpb25zIGZvciB0ZXh0dXJlcyBmb3JtYXQKCS0gY29ycmVjdCBEcmF3UHJpbWl0aXZlIChSSFcgY29ycmVjdG5lc3MgYW5kIHZzaGFkZXIgUkhXKQoJLSBtb3JlIGNvcHlyZWN0cyBmaXhlcyAob25seSB0d28gdW5pbXBsZW1lbnRlZCBiZWhhdmlvciByZW1haW4pCgktIGZpeCBHZXRGcm9udEJ1ZmZlciB0byBnZXQgc2NyZWVuc2hvdHMgc2FtcGxlcyB3b3JraW5nCgktIGFkZCBEM0RDT0xPUlRPR0xGTE9BVDQgYW5kIHVzZSBpdAoJLSBmaXJzdCB0cnkgb2YgRDNEUlNfRk9HVEFCTEVNT0RFIHN1cHBvcnQKCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRGVjbGFyZSB0aGF0IHdlIGNhbiBzdXBwb3J0IGN1YmUgdGV4dHVyZXMgbm93IChjdXJyZW50bHkgb25seSBjcmVhdGlvbgoJaXMgZG9uZSkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBtaXNzaW5nIEVORFNFU1NJT05fTE9HT0ZGIGRlZmluZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIFNldERsZ0l0ZW1UZXh0IGluc3RlYWQgb2Ygc2VuZGluZyBhIFdNX1NFVFRFWFQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHN1cmUgdGhlIHZpZXdwb3J0IGlzIGZyb20gdGhlIEdMIChib3R0b20gbGVmdCkgbm90IHRoZSBEaXJlY3RYCgkodG9wIGxlZnQpLgoKMjAwMy0wNS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL3R0eWRydi9kYy5jLAoJICBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvYml0bWFwLmMsCgkgIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYzoKCVVzZSBhIGRpZmZlcmVudCBtYWdpYyBmb3IgbWVtb3J5IERDcyBhbmQgZ2V0IHJpZCBvZiB0aGUgRENfTUVNT1JZCglmbGFnLgoKCSogZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG1vdmVkIGxvYWRpbmcgY29kZSBvZiB2b2x1bWUgdGV4dHVyZSB0byBWb2x1bWVUZXh0dXJlOjpQcmVsb2FkIGFzCgkgIGRvbmUgaW4gVGV4dHVyZS9DdWJlVGV4dHVyZQoJLSBmaXhlZCBzb21lIHN0dWJzIHJldHVybiB2YWx1ZXMKCgkqIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gY3ViZXRleHR1cmUgbG9hZGluZy9wcmVsb2FkaW5nCgktIHNvbWUgc3R1YnMgbXVzdCByZXR1cm4gMCAoYW5kIG5vbiBEM0RfT0spCgktIGZpeCBJRGlyZWN0M0RDdWJlVGV4dHVyZThJbXBsOjpHZXQqIChwb3RlbnRpYWxzIENEKQoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJUHJvcGVybHkgc3VwcG9ydCB0ZXh0dXJlIGNvb3JkaW5hdGUgaW5kZXhlcy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHN1cmUgd2UgYWR2ZXJ0aXplIG91ciBjYXBhYmlsaXRlcyBjb3JyZWN0bHkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IE1ha2UgdGhlIHRlc3QgcGFzcyBvbiBOVDQgdG9vLgoKCSogZGxscy9kM2Q4L3N0YXRlYmxvY2suYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUluaXRpYWxpemUgdGhlIHRleCBjb29yZCBpbmRleCBjb3JyZWN0bHkuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3B5UmVjdHMgbmVlZHMgdG8gbG9jayB0aGUgYXJlYSBpdCBpcyBjb3B5aW5nIHRvIChlc3AuIGlmIHRoYXQgYXJlYQoJaXMgdGhlIGJhY2sgYnVmZmVyLCBhcyBsb2NraW5nL3VubG9ja2luZyBjYXVzZXMgZ2xyZWFkL2RyYXcgcGl4ZWxzKS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1hcmsgc29tZSBzdXJmYWNlIGZvcm1hdHMgYXMgbm90IHN1cHBvcnRlZC4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXggc29tZSBzc2NhbmYgY2FzZXMgYW5kIHRlc3RjYXNlIHRvIGdldCB3eHRpZGUzMi5leGUgcnVubmluZy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglQcml2YXRlRXh0cmFjdEljb24qIHNob3VsZCBzZWFyY2ggdGhlIHBhdGggZm9yIHRoZSBpY29uIGZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglSZXZlcnQgY2hhbmdlIGZvciByZXNpemluZyBidXR0b25zLgoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZXMgZm9yIG5vbi1MaW51eCBzeXN0ZW1zLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1ha2Ugc3VyZSBwcmVmaXggaXMgYWN0dWFsbHkgaG9ub3VyZWQgYnkgY29uZmlndXJlLgoJVGVtcG9yYXJ5IGhhY2sgZm9yIHJlZGhhdCB1c2VycyB0byBlbmFibGUgTlBUTC4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gb2J2aW91cyB0eXBvIGluIGdldF9yZXNfbmFtZS4gU3BvdHRlZCBieSBNaWtlIE1jQ29ybWFjay4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2Ugc3VyZSB3aW5zb2NrLmggZ2V0cyBpbmNsdWRlZCBiZWZvcmUgc3RkbGliLmguCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3F1ZXVlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTZXRNZXNzYWdlRXh0cmFJbmZvLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0ZXN0IGZvciBHZXRMb25nUGF0aE5hbWVBKCJjOiIpLgoJQWRkZWQgYSB0ZXN0IGZvciBHZXRGdWxsUGF0aE5hbWVBKCJjOiIpLgoJRml4IGEgbnVtYmVyIG9mIG1lc3NhZ2VzIHRoYXQgcmVmZXJyZWQgdG8gR2V0TG9uZ1BhdGhOYW1lIGluc3RlYWQgb2YKCUdldEZ1bGxQYXRoTmFtZS4KCgkqIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hkb2N2dy92ZXJzaW9uLnJjLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svdmVyc2lvbi5yYywKCSAgZGxscy93c29jazMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwKCSAgZGxscy93c29jazMyL3ZlcnNpb24ucmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgQWRkUG9ydEEuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwYWNraW5nL3VucGFja2luZyBvZiBXTV9XSU5JTklDSEFOR0UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24vc3R1YiBvZiB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gc2hlbGwzMi4yNTYuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXNzIGNvcnJlY3QgcG9pbnRlciB0byBDb0NyZWF0ZUluc3RhbmNlIGluIFNITG9hZEluUHJvYy4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhIGxvYWQgb2Ygc2V0dXB4IERpKiBzdHVicy4KCgkqIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXNlIHN0cnRvdWxXIGluc3RlYWQgb2Ygc3RydG9sVyBmb3IgRFdPUkQgY29udmVyc2lvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBJVHlwZUxpYjJfQWRkUmVmJ3MuIE1ha2VzCglMb2FkVHlwZUxpYi9JVHlwZUxpYjJfUmVsZWFzZSB3b3JrLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIE9sZURvQXV0b0NvbnZlcnQuCgoJKiBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGEgbnVtYmVyIG9mIElNTSBmdW5jdGlvbnMuCglDcmVhdGUgYSBkZWZhdWx0IEhXTkQgdG8gcHJvY2VzcyBXTV9JTUUgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGhhbmRsaW5nIG9mIE9GTl9OT1ZBTElEQVRFIGZvciB3aW4zMSBzdHlsZSBmaWxlIGRpYWxvZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IFVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJhZCBub24tY2xpZW50IGNhbGN1bGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IERUTV9TRVRTWVNURU1USU1FLgoJTWFrZSB0aGUgc2hvdy9oaWRlIGJ1dHRvbiBhY3R1YWxseSBkbyBzb21ldGhpbmcuCglBZGQgc3VwcG9ydCBmb3IgdGhlICd5eXl5JyBmb3JtYXQuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5jOiBGaXhlZCBzb21lIHN0cmluZyBvdmVyZmxvd3MuCgoJKiBkbGxzL2lwaGxwYXBpLy5jdnNpZ25vcmU6IEFkZGVkIGlwaGxwYXBpLnNwZWMuZGVmLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSBzdXJlIHdpbnNvY2suaCBnZXRzIGluY2x1ZGVkIGJlZm9yZSBzdGRsaWIuaC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGEgZmV3IHN0eWxlIGlzc3Vlcy4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTGlzdGVkIHJlY2VudGx5IGFkZGVkIHNlY3Rpb25zJyB0eXBlcyAocmVzb3VyY2UsIHRscykgZm9yIGR1bXBpbmcgdG8KCXVzYWdlIHN0cmluZ3MuCglGaXhlZCBzb21lIGhlYWRlciBzaXplIHRlc3RpbmcuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVF1aWV0IHNvbWUgdmFsZ3JpbmQgcmVwb3J0cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIGEgc2V0IG9mIHRlc3RzIGZvciB0aGUgY29uc29sZSBBUEkuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgY29uc29sZSBvdXRwdXQgZm9yIG5vbiB3cmFwcGVkIG1vZGUuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUVuaGFuY2VkIHRlc3QgZm9yIHF1ZXJpZXMsIGFkZGVkIHRlc3RzIGZvciBleHBhbnNpb24uCgoJKiBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgUnRsRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX1UgYW5kIGZpeGVkIGFuIGluY29ycmVjdAoJYmVoYXZpb3IgaW4gUnRsUXVlcnlFbnZpcm9ubWVudFN0cmluZy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUlnbm9yZSAtbXRocmVhZHMsIGl0J3Mgbm90IG5lZWRlZCBpbiBVbml4LgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBzdHVicyBuZWVkZWQgZm9yIFdpbjk4IGV4cGxvcmVyLmV4ZS4KCgkqIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3NvY2tldC5jLAoJICBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDaGFuZ2VkIHdzb2NrMzIgdG8gdXNlIHRoZSBuZXcgaXBobHBhcGkgZm9yIGludGVyZmFjZSBhbmQgcm91dGUKCWVudW1lcmF0aW9uIGluIFdzQ29udHJvbC4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIGlwaGxwYXBpIHRvIGltcGxlbWVudCBTSU9fR0VUX0lOVEVSRkFDRV9MSVNUIGluIFdTQUlvY3RsLCBhbmQKCWNvcnJlY3RzIGlpRmxhZ3MgZW50cnkgaW4gdGhlIHJldHVybmVkIGludGVyZmFjZSBsaXN0LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBVc2UgaW50IGluc3RlYWQgb2Ygc29ja2xlbl90LgoKCSogY29udHJvbHMvZWRpdC5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBwcm9ibGVtIHdpdGggY2FwdHVyaW5nIFtyZXR1cm5dIGtleXMgaW4gbXVsdGktbGluZSBlZGl0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUdldCByaWQgb2YgZGlyZWN0IEltYWdlTGlzdCBhY2Nlc3MgaGFja3MuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5oOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglSZWFycmFuZ2UgbWVtYmVycyBvZiBISU1BR0VMSVNUIHRvIG1hdGNoIFdpbmRvd3MuCglSZXVzZSBpbWFnZSBhbmQgbWFzayBEQ3MuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCS0gU2F2ZSBtb3JlIHJlZ2lzdGVycyAoZXhjZXB0aW9uLCBmbG9hdC4uLikgaWYgdGhleSBhcmUgZGVmaW5lZC4KCS0gQWRkIE1hYyBPUyBYIHNpZ25hbCBzdXBwb3J0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaXBobHBhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9pcGhscGFwaS9NYWtlZmlsZS5pbiwgZGxscy9pcGhscGFwaS9pZmVudW0uYywKCSAgZGxscy9pcGhscGFwaS9pZmVudW0uaCwgZGxscy9pcGhscGFwaS9pcGhscGFwaS5zcGVjLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsCgkgIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5oLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL2lwZXhwb3J0LmgsIGluY2x1ZGUvaXBobHBhcGkuaCwgaW5jbHVkZS9pcGlmY29ucy5oLAoJICBpbmNsdWRlL2lwcnRybWliLmgsIGluY2x1ZGUvaXB0eXBlcy5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgaXBobHBhcGkuZGxsOyBtb3N0IEdldCogZnVuY3Rpb25zCglpbnRyb2R1Y2VkIHRocm91Z2ggV2luOTggYXJlIGluY2x1ZGVkLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQWxsb2NhdGUvZnJlZSB0aGUgMTYtYml0IHRocmVhZCBzdGFjayBpbiB0aGUga2VybmVsIGRsbCBpbml0IHJvdXRpbmUuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jOgoJUmVzZXQgc2lnbmFsIGhhbmRsZXJzIHdoZW4gc3RhcnRpbmcgY2hpbGQgcHJvY2Vzcy4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywKCSAgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9ycGNydDQvcnBjc3NfbnBfY2xpZW50LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBncmFwaGljcy9wYWludGluZy5jLAoJICBtc2Rvcy9wcGRldi5jLCBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsIHRvb2xzL2MybWFuLnBsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggbWlzY2VsbGFuZW91cyBzcGVsbGluZyBlcnJvcnMgYW5kIHR5cG9zLgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luc29jazIuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgcHJvdG90eXBlIGZvciBfX1dTQUZESXNTZXQuIEZpeCBzeW50YXggZXJyb3IuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29iamlkbC5pZGw6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBJbXBsZW1lbnQgYSBmZXcgbW9yZSBjYXNlcyBpbiBQcm9wVmFyaWFudENsZWFyLgoJLSBQYXJ0aWFsbHkgaW1wbGVtZW50IFByb3BWYXJpYW50Q29weS4KCS0gSW1wbGVtZW50IEZyZWVQcm9wVmFyaWFudEFycmF5LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgMiBtb3JlIEluc3RhbGxTaGllbGQgdGVtcG9yYXJ5IGV4ZXMgZm9yIERlc2t0b3AgTW9kZS4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3VwcG9ydCAxNCBhbmQgMTUgYXJndW1lbnRzIGluIFdPV19DYWxsUHJvYzMyVzE2LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCB1c2Ugb2YgZnJlZWQgbWVtb3J5LgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2UgdGhlICNpbmNsdWRlIG9yZGVyIHNvIHRoZSB0ZXN0IGNvbXBpbGVzIHdpdGggdGhlIE1TVkMgaGVhZGVycy4KCUZpeCBhIGZldyBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCWxpYnJhcnkvTWFrZWZpbGUuaW4gYW5kIHVuaWNvZGUvTWFrZWZpbGUuaW4gZG9uJ3QgZXhpc3QgYW55bW9yZS4KCgkqIG1pc2MvbWFpbi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgZGVidWcgY2hhbm5lbCBjbGVhbnVwLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCBOVUxMIHBvaW50ZXIgZXJyb3Igd2hlbiBkaXNwbGF5aW5nIGVycm9yIG1lc3NhZ2UgYWJvdXQgbWlzc2luZwoJZm9yd2FyZGVkIGV4cG9ydC4KCjIwMDMtMDUtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglDb21tZW50ZWQgb3V0IHRoZSBuZXcgd2luOTggZXhwb3J0cywgdGhleSBhcmUgY2F1c2luZyB0cm91YmxlLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUnRsVW5pY29kZVRvTXVsdGlCeXRlU2l6ZSBhcmd1bWVudCBpcyBub3QgYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLAoJdXNlICdwdHInLgoKCSogZGxscy9udGRsbC9oZWFwLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIHJldHVybiBpbiBIRUFQX1ZhbGlkYXRlSW5Vc2VBcmVuYS4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIF93ZnVsbHBhdGguCgoJKiBkbGxzL21wci9wd2NhY2hlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZXJyb3IgcmV0dXJuIHZhbHVlcyBmcm9tIHN0dWIgZnVuY3Rpb25zLgoKCSogZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXByL21wcl9tYWluLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBmb3IgRGxsQ2FuVW5sb2FkTm93LgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIHJlcXVlc3RlZCBhY2Nlc3MgcmlnaHRzIHdoZW4gZW11bGF0ZWQgdmVyc2lvbiBpcyBub3QgTlQuCgoJKiBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglGaXggdGhlIFBvbHlQb2x5Z29uIGZ1bmN0aW9uIHNvIGl0IHJlYWxseSBnZW5lcmF0ZXMgYSBwb2x5cG9seWdvbiBhbmQKCW5vdCBtdWx0aXBsZSBzZXRzIG9mIHBvbHlnb25zLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IHRoZSBjdXBzIHBvcnQgdG8gYmUgcmVkaXJlY3RhYmxlLiAgVGhpcyBnaXZlcyB1cyB0aGUgb3B0aW9uIG9mCglwaXBpbmcgdGhlIFBvc3RTY3JpcHQgdGhyb3VnaCBzb21ldGhpbmcgYmVmb3JlIGl0IGdldHMgc2VudCB0byB0aGUKCXByaW50ZXIgKGxpa2Ugd2UgY2FuIGFscmVhZHkgZG8gZm9yIG5vbi1jdXBzIHN5c3RlbXMpLgoKCSogZGxscy9jdGwzZC9jdGwzZDMyLmMsIGRsbHMvY3RsM2QvY3RsM2QzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgb3JkaW5hbHMgdG8gY3RsM2QzMi5kbGwsIE15T0RCQyByZWZlcmVuY2VzIGl0IGJ5IG9yZGluYWwuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgb2YgV01fSU1FX0NIQVIuCgoJKiBjb250cm9scy9zdGF0aWMuYywgaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZGVmaW5pdGlvbiBvZiBTU19VU0VSSVRFTS4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBDZXJ0U2F2ZVN0b3JlIGFuZCBDZXJ0RW51bUNlcnRpZmljYXRlc0luU3RvcmUuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIHBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uLgoJRml4ZWQgYSBtZW1vcnkgbGVhay4KCgkqIGNvbnRyb2xzL21lbnUuYzogRG9uJ3QgdHJhY2sgdGhlIHN5c3RlbSBtZW51IGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzdXJmYWNlIHBvb2wgaW5pdCBmaXhlcwoJLSBtaW5vciBpbmRlbnRhdGlvbiBhbmQgdHJhY2VzIGZpeGVzCgktIGZpeCBsb2NraW5nL3VubG9ja2luZy9kaXJ0eSBiZWhhdmlvciAoZGlydGlmeSBvbiBsb2NrKSArCgkgIG9wdGltaXNhdGlvbnMgKG9ubHkgY29weSB3aGVuIGRpcnR5KQoJLSBmaXggSURpcmVjdDNERGV2aWNlODo6Q2xlYXIgYmVoYXZpb3IgKHByb2JsZW0gc2VlbiBhZnRlciBhCgkgIGxvY2tpbmcvdW5sb2NraW5nIGNvZGUgZXJyb3IpCgktIGJlZ2luIHRvIGZpeCB2b2x1bWUgYW5kIGN1YmUgdGV4dHVyZXMgbWFuYWdlbWVudAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc2VwYXJhdGUgZ2VvbWV0cnkgdHJhY2luZyBpbiBhIG5ldyBkZWJ1ZyBjaGFubmVsIChkZHJhd19nZW9tKQoJLSBhZGRlZCBoYW5kbGluZyBmb3Igc29tZSBuZXcgdGV4dHVyaW5nIG9wcwoJLSBwcmVwYXJlIGZvciBhZGRpdGlvbiBvZiBtdWx0aS10ZXh0dXJpbmcKCS0gYW5vdGhlciB3YXkgdG8gZml4IHRoZSBkZXZpY2UgZW51bWVyYXRpb24gZm9yIHRoZSByZWZlcmVuY2UgZGV2aWNlCgktIGZpeCBjb21waWxhdGlvbiB3aXRoIHNvbWUgZ2xleHQuaCBmaWxlcwoJLSBmaXggYSBidWcgaW4gb25lIHRleHR1cmUgY29udmVyc2lvbiBmdW5jdGlvbgoJLSBhZGRlZCBuZXcgdGV4dHVyZSBmb3JtYXQgKGJ1dCBzdGlsbCB0ZXh0dXJpbmcgcHJvYmxlbXMgaW4gM0RNYXJrMjAwMCkKCgkqIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJVW5kZWYgaWZfdHlwZSwgaWZfbXR1IGFuZCBpZl9sYXN0Y2hhbmdlIGZvciBkYXJ3aW4uCgoJKiBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZCBzdXBwb3J0IGZvciBEYXJ3aW4ncyBwdHJhY2UuCgoyMDAzLTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbml0aWFsaXplIHRoZSBkd01pcG1hcENvdW50IGZpZWxkIGV2ZW4gaWYgdGhlIGFwcGxpY2F0aW9uIGZvcmdldHMgaXQuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIG1pcG1hcHBpbmcgc3VwcG9ydAoJLSBhZGRlZCBsb2NraW5nIGZvciBjb25jdXJyZW50IGFjY2VzcyB0byB0aGUgRDNEIGRldmljZQoJLSBpbXByb3ZlZCB0cmFjaW5nCgktIGFkZGVkIHN1cHBvcnQgZm9yIG1vc3QgdGV4dHVyZSBjb21iaW5lIHN0YWdlcyAoaW5zcGlyZWQgYnkgdGhlIEQzRDgKCSAgY29kZSkKCS0gZGlzYWJsZSBjdXJyZW50IGxvY2sgLyB1bmxvY2sgY29kZSBwZW5kaW5nIHByb3BlciBzb2x1dGlvbgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBTdGVwaGFuIEJldXplIDxmYmlnZ3VuQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldFRvb2xUaXBzIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCU9yZGluYWxzIDQxMC00MTMgYXJlIHRoZSB3aW5kb3cgc3ViY2xhc3NpbmcgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWZhcS5zZ21sOgoJU3RvcmUgdGhlIEhUTUwgaW50byBpbmRleC5odG1sIGxpa2UgZm9yIHRoZSBvdGhlciBkb2NzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLAoJICBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOC92b2x1bWUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBtaW5vciBDT00gZml4ZXMgKGZpeGVzIHNvbWUgY3Jhc2hlcyBvbiBzdHVwaWQgZ2FtZXMpCgktIG1pbm9yIGluZGVudGF0aW9uIGNoYW5nZXMKCS0gZml4IFNFTEVDVEFSRzIgYmVoYXZpb3IgKHdpdGggaGVscCBmcm9tIExpb25lbCBVbG1lcikKCS0gc3VyZmFjZSBsb2NraW5nL3VubG9ja2luZyAob25seSByZW5kZXJpbmcgYW5kIHRleHR1cmVzIHN1cmZhY2VzCgkgIHN1cHBvcnRlZCBub3cpCgktIGJlZ2lubmluZyBvZiBUYXJnZXQvRnJvbnQgc3VyZmFjZSBzdXBwb3J0CgktIHRyeSB0byBnZXQgRDNEVE9QX1NFTEVDVEFSR18qIHdvcmtpbmcKCS0gaW1wbGVtZW50ZWQgRDNEVE9QX1NVQlRSQUNUOiBjdXJyZW50bHkgb25seSBpZiBPcGVuR0wxLjMgaXMgdXNlZCwgd2UKCSAgaGF2ZSB0byB1c2UgR0xfU1VCVFJBQ1RfQVJCIGZvciBvdGhlciB2ZXJzaW9ucwoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgb2JqZWN0cy9kYy5jOgoJQWRkZWQgcGFydGlhbCBzdHViIGZvciBHZXRUcmFuc2Zvcm0uCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIFNIRmlsZU9wZXJhdGlvbkEvVyBkZWJ1Z2dpbmcgYSBsaXR0bGUuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJU3RvcCB3YXZlbWFwIGxvb2t1cCBpZiBhIGRldmljZSBpc24ndCBmdW5jdGlvbmFsIChzcG90dGVkIGJ5IExpb25lbAoJVWxtZXIpLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgcmVhZCBmcm9tIHN0ZGluIHVzZSBidWZmZXJlZCBpbnB1dCBjb2RlIGFuZCByZWRpcmVjdCBzdGRlcnIgdG8KCWNvbnNvbGUuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgaW9wb3J0IGluc3RydWN0aW9uIGVtdWxhdGlvbiBjYWxsIHdpbmVkb3MgaGFuZGxlcnMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglQb2xsIFggZXZlbnRzIGluIEdldElucHV0U3RhdGUgdGhlIHNhbWUgd2F5IGFzIGluIEdldFF1ZXVlU3RhdHVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGN1c3RvbSBkcmF3IGZvciBpdGVtIDAuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZSBicmFuY2ggZm9yd2FyZCBvcGVyYXRpb24gaW4gZXhlY3V0ZSBidWZmZXIuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVB1dCB0aGUgZGV2aWNlIG5hbWUgc3RyaW5nIG9uIHRoZSBzdGFjayBkdXJpbmcgZGV2aWNlcyBlbnVtZXJhdGlvbi4KCURpc2FibGUgcmVmZXJlbmNlIGVudW1lcmF0aW9uLgoKCSogY29udHJvbHMvZWRpdC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgbWlzc2luZyBSZWxlYXNlREMgaW4gRURJVF9CdWlsZExpbmVEZWZzX01MLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGxheWJhY2sgZXNjYXBlcyBpbiBtZXRhZmlsZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgZnVuY3Rpb24gbGluayBuYW1lcy4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgbGlicy9NYWtlbGliLnJ1bGVzIG9uIGRpc3RjbGVhbi4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvZGMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFNldFZpcnR1YWxSZXNvbHV0aW9uLgoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglXZSBzaG91bGQgcGFzcyB0aGUgY2FsbGVycyBjbGllbnQtYXJlYSByZWN0IGFuZCBjbGlwIHJlY3QgdG8geDExZHJ2CglvdGhlcndpc2Ugd2UnbGwgZmFpbCB0byBzY3JvbGwgYWxsIGNoaWxkcmVuLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBBdm9pZCBsb2NhbCBXSU5BUEkgZnVuY3Rpb24gcG9pbnRlcnMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEludGVybmV0U2V0T3B0aW9uRXhBL1cuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgbG9naWMgZm9yIHNldHRpbmcgdGhlIGxwcy0+ZkVyYXNlIGZsYWcgaW4gQmVnaW5QYWludC4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgQTwtPlcgbWFwcGluZ3MgZm9yIFdNX0lNRV9DSEFSLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBHbG9iYWxMb2NrIGZyb20gYmFkIHBvaW50ZXJzLgoKCSogbGlicy91bmljb2RlL3djdG9tYi5jOgoJSGFuZGxlIG92ZXJsYXBwaW5nIGJ1ZmZlcnMgcHJvcGVybHkgaW4gd2NzdG9tYnNfc2JjcyAoc3BvdHRlZCBieQoJRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRlbGV0ZSByZWdpb24gdW50aWwgYWZ0ZXIgd2UncmUgZG9uZSB3aXRoIGl0LgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gdmFsdWUgb2YgRXh0U2VsZWN0Q2xpcFJnbiBzaG91bGQgY29uc2lkZXIgdmlzaWJsZSByZWdpb24uCgoJKiBncmFwaGljcy9tYXBwaW5nLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIFNldE1hcE1vZGUgc2V0IGRlZmF1bHQgd2luZG93IGFuZCB2aWV3cG9ydCBleHRlbnRzIGFzIGluCglXaW5kb3dzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIHdjbWQgL2MgImM6XFByb2dyYW0gRmlsZXNcaGVsbG8uYmF0Ii4KCU1ha2UgL2MgYW5kIC9rIGVmZmVjdGl2ZWx5IGV4Y2x1c2l2ZSwgbGlrZSB0aGUgcmVhbCBjbWQgZG9lcy4KCUZpeCBoYW5kbGluZyBvZiAvcTogaXQncyBjb21wYXRpYmxlIHdpdGggL2MgYW5kIC9rLgoJQWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIC90IC94IGFuZCAveSwganVzdCBpZ25vcmUgdGhlbS4KCgkqIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVzZXQgdGhlIHJlc3VsdCBidWZmZXIgYWZ0ZXIgZWFjaCBhcmd1bWVudC4KCgkqIHNlcnZlci9mZC5jOgoJSWdub3JlIGxvY2tpbmcgZmFpbHVyZXMgY2F1c2VkIGJ5IG1pc3NpbmcgTkZTIGxvY2tpbmcgZGFlbW9uLgoJSGFuZGxlIEVJTlZBTCB0aGUgc2FtZSB3YXkgYXMgRU9WRVJGTE9XLgoKCSogd2luZG93cy9tc2dib3guYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlnbm9yZSBoaWdoIHdvcmQgb2Ygd1BhcmFtIHdoZW4gaGFuZGxpbmcgV01fQ09NTUFORCBpbiB0aGUgTWVzc2FnZUJveAoJcHJvYy4KCgkqIHdpbmRvd3MvaW5wdXQuYzogRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglGaXggQUxUIGNvbnRleHQgYml0IGZvciBXTV9LRVlET1dOL1VQLgoKCSogd2luZG93cy9kaWFsb2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgdHJlYXRzIGRpYWxvZyBjb250cm9sIGNsYXNzIGlkcyAwLTUgc2FtZSB3YXkgYXMgMHg4MC0weDg1LgoKCSogZGxscy91c2VyL2RpYWxvZzE2LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgYWJvcnQgZGlhbG9nIGNyZWF0aW9uIGlmIERTX05PRkFJTENSRUFURSBhbGxvd3MgdG8gY29udGludWUuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUmFzRW51bUVudHJpZXNXIHN0dWIuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgV3JpdGVGbXRVc2VyVHlwZVN0ZyBhbmQgUmVhZEZtdFVzZXJUeXBlU3RnLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaWxsIHRoZSBmaWxlZGlhbG9nOTUgY29udHJvbHMgYmVmb3JlIHNlbmRpbmcgYSBDRE5fSU5JVERPTkUKCW5vdGlmaWNhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUludmFsaWRhdGUgdGhlIHdpbmRvdyB3aGVuIHRoZSByYW5nZSBpcyBjaGFuZ2VkLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgQWNjZXNzQ2hlY2tBbmRBdWRpdEFsYXJtQS9XLgoKMjAwMy0wNS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDAzMDUwOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wNS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvdW5pY29kZS91dGY4LmM6CglGaXhlZCByZXR1cm4gdmFsdWUgb2Ygd2luZV91dGY4X3djc3RvbWJzIChzcG90dGVkIGJ5IEphbiBTcG9yYmVjaykuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gb25seSBlbnVtZXJhdGUgMzIgYnBwIEFSR0IgdGV4dHVyZSBmb3JtYXQgYW5kIHJlbW92ZSBSR0JBIG9uZQoJLSBhZGQgc3VwcG9ydCBmb3IgMzIgYnBwIEFSR0IgdGV4dHVyZSBmb3JtYXQKCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJd3JpdGVqdW1wKCkgbmVlZHMgdG8gdGVsbCB2YWxncmluZCB3aGljaCBwaWVjZSBvZiBjb2RlIGhhcyBiZWVuCgltb2RpZmllZC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+Cglfb3Blbl9vc2ZoYW5kbGUgaXMgZXhwZWN0ZWQgdG8gdGFrZSB0aGUgYWJzZW5jZSBvZiBlaXRoZXIgX09fVEVYVCBvcgoJX09fQklOQVJZIHRvIG1lYW4gX09fQklOQVJZLgoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIERpc2FibGUgc29tZSAnY2xhc3NpYycgZGVidWcgdHJhY2VzIChhdm9pZCB1c2VsZXNzIGZsb29kIG9mIHRyYWNlcwoJICB3aGlsZSBkZWJ1Z2dpbmcgZ2FtZXMpLgoJLSBGaXggdGhlIHRleHR1cmUgc2l6ZSBjYXBzIHVzaW5nIEdMX01BWF9URVhUVVJFX1NJWkUuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBGaXggc2NhbmxpbmUgc2l6ZSBpbiBPTEVQaWN0dXJlSW1wbF9Mb2FkIGZvciBqcGVnCgktIENvbnZlcnQgZnJvbSBSR0IgdG8gQkdSIGFjY29yZGluZyB0byBCSVRNQVBJTkZPSEVBREVSCgkgIGRvY3VtZW50YXRpb24uCgoJKiBjb250cm9scy9idXR0b24uYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglDb3JyZWN0bHkgZmlsbCB0aGUgYmFja2dyb3VuZCBvZiBhIGNoZWNrYm94IGJ1dHRvbi4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgbG9hZGVyL3BlX2ltYWdlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBjYWxsaW5nIHRoZSBUTFMgY2FsbGJhY2sgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogQWRkZWQgZHVtcGluZyBvZiB0aGUgVExTIGRpcmVjdG9yeS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRml4ZWQgd3JvbmcgZmlsZSBvZmZzZXQgdXNlZCB3aGVuIG1hcHBpbmcgdGhlIGltcG9ydCBkaXJlY3RvcnkgZnJvbSBhCglzaGFyZWQgc2VjdGlvbi4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBNb3ZlIHRleHR1cmUgbG9hZGluZyBpbnRvIFByZUxvYWQgZm9yIDJEIHRleHR1cmVzIChuZWVkcyBkb2luZyBmb3IKCSAgdGhlIG90aGVycyBhcyB3ZWxsKSwgYW5kIGNhbGwgd2hlbiBuZWVkZWQgYXMgd2VsbC4KCS0gQ2hhbmdlIEQzREZNVF9SNUc2QjUgaGFuZGxpbmcgdG8gbWFrZSBiYWNrZHJvcCBvZiBNYXggUGF5bmUgYXBwZWFyLgoJLSBBZGQgY29kZSB0byByZWplY3QgYXR0ZW1wdHMgdG8gdXNlIGludmFsaWQgdGV4dHVyZSB1bml0cyAoTWF4IFBheW5lCgkgIGRpZCB0aGlzIGEgbG90KS4KCS0gVmFsaWRhdGVEZXZpY2UgZml4bWUgc2lsZW5jZWQgYXMgaGFybWxlc3MgYnV0IG9jY3VycyBmcmVxdWVudGx5LgoJLSBBZGQgdHJhY2Ugd2hpY2ggY2FuIGJlIGNvbXBpbGVkIGluIHRvIGRlYnVnIHZlcnRleCBzaGFkZXJzLCBhbmQKCSAgY29ycmVjdCBmaXhtZXMgYW5kIGRwcmludGYncyBpbnRvIGFwcHJvcHJpYXRlIHRyYWNlIHN0YXRlbWVudHMuCgktIEVuc3VyZSB3ZSB0cmFjZSB3aGF0IHdlIHJldHVybiB3aGVuIHF1ZXJ5aW5nIHRoZSBkZXZpY2UgY2Fwcy4KCS0gQ29ycmVjdCBidWcgd2l0aCBuZWdhdGl2ZSBudW1iZXJzIGluIHZlcnRleCBzaGFkZXIgY29kZS4KCgkqIGluY2x1ZGUvd2lubnQuaDogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkIERhciwgRHNpc3IgYW5kIFRyYXAgcmVnaXN0ZXJzIGZvciB0aGUgUG93ZXJQQyBDT05URVhUIHN0cnVjdHVyZS4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9lbnYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgZW52aXJvbm1lbnQgdGVzdHMuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGEgYnVuY2ggb2YgZW52aXJvbm1lbnQgcmVsYXRlZCBOVERMTCBBUElzLgoKMjAwMy0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlLmM6IEFkZGVkIE5PTkFNRUxFU1NVTklPTi9TVFJVQ1QgZGVmaW5lcy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogRml4ZWQgdHlwbyBpbiByZXR1cm4gdmFsdWUgb2YgdGtpbGwoKS4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglNb3ZlZCB0aGUgRW51bVJlc291cmNlKiBmdW5jdGlvbnMgdG8gdGhlIGtlcm5lbCBkbGwsIGFuZCBmaXhlZCB0aGVpcgoJcHJvdG90eXBlcy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCVVzZSBSdGxGaW5kTWVzc2FnZSB0byBsb2FkIG1lc3NhZ2UgcmVzb3VyY2VzLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5oOgoJTWljaGFlbCBTY2hs/HRlciA8bWljaGFlbEBqb2hhbGxhLmRlPgoJQWRkZWQgd2dsR2V0RXh0ZW5zaW9uc1N0cmluZ0FSQi4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHNjcm9sbGluZyBzdXBwb3J0IGZvciBWR0EgdGV4dCBtb2RlLgoKMjAwMy0wNS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJQWRkZWQgY29tbWVudCBhYm91dCB3aHkgY2hhbmdpbmcgQUREUkVTU19TUEFDRV9MSU1JVCBpcyB3cm9uZy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHJldHJpZXZpbmcgcGFnZSBmYXVsdCBhZGRyZXNzIG9uIFNvbGFyaXMgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IFJvYmVydCBMdW5ub24pLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglJbiBhc3NlbWJsZXIgY2hlY2ssIHRyeSB0byB1c2UgZ2FzIGZpcnN0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYmVydAoJTHVubm9uKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogUm9iZXJ0IEx1bm5vbiA8Ym9iQHlhcnJhYmVlLm5ldC5hdT4KCUVsaW1pbmF0ZSBzZWdmYXVsdCBkdWUgdG8gTlVMTCBUaGlzLT5zSWNvUGF0aC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1lbnRpb24gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGZpbGUgaGVhZGVyLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIGl0IGVhc3kgdG8gdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIHdyYyB0byBjb21waWxlIHJlc291cmNlcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6IFRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJVGVzdHMgZm9yIFJ0bER1cGxpY2F0ZVVuaWNvZGVTdHJpbmcsIFJ0bEZpbmRDaGFySW5Vbmljb2RlU3RyaW5nLAoJUnRsSW5pdFVuaWNvZGVTdHJpbmdFeC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglJbXBsZW1lbnQgUnRsRHVwbGljYXRlVW5pY29kZVN0cmluZywgUnRsRmluZENoYXJJblVuaWNvZGVTdHJpbmcsCglSdGxJbml0VW5pY29kZVN0cmluZ0V4LgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzIGZvciBSdGxJbml0QW5zaVN0cmluZywgUnRsSW5pdFN0cmluZywKCVJ0bEluaXRVbmljb2RlU3RyaW5nLCBSdGxBbnNpU3RyaW5nVG9Vbmljb2RlU3RyaW5nIGFuZAoJUnRsT2VtU3RyaW5nVG9Vbmljb2RlU3RyaW5nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgaW5jbHVkZSA8ZXJybm8uaD4uCgoJKiBjb250cm9scy9lZGl0LmM6IEFjaGltIEthaXNlciA8bWFpbDFAa2Fpc2Vyc2l0ZS5kZT4KCVRha2UgZm9udCBtZXRyaWNzIGludG8gYWNjb3VudCBmb3IgRUNfVVNFRk9OVElORk8gbWFyZ2lucy4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUZpeGVkIGEgY291cGxlIG9mIHJhY2VzIHdpdGggZXhpdGluZyB0aHJlYWRzIGluIHN1c3BlbmRfZm9yX3B0cmFjZSgpLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOgoJRml4ZWQgcmV0dXJuIHZhbHVlIG9mIENyZWF0ZU5hbWVkUGlwZSAoc3BvdHRlZCBieSBNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3VwcG9ydCBmb3IgTXVsdGlwbHlUcmFuc2Zvcm0gKGhlbHBzIG1ha2UgdGhlIFNraW1tZWRNZXNoIFNESwoJc2FtcGxlIGxvb2sgYmV0dGVyKS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCB0aGUgYmVnaW5uaW5ncyBvZiBzdXBwb3J0IGZvciB0ZXh0dXJlIGNvb3JkaW5hdGVzLgoKCSogZGxscy9kcG5ocGFzdC9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeCByZXR1cm4gY29kZSBvZiBEUE5IUEFTVF9EbGxHZXRDbGFzc09iamVjdCBzdHViLgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCS0gaW1wbGVtZW50ZWQgc29tZSBtb3JlIHBvcnQgcmVsYXRlZC1mdW5jdGlvbnMKCS0gZml4ZWQgd2FybmluZ3MgKHJlcG9ydGVkIGJ5IEdlcmFsZCBQZmVpZmVyKQoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlcG9ydCBlcnJvcnMgdG8gYXBwbGljYXRpb25zIHdoZW4gaWxsZWdhbCBkYXRlcyBhcmUgcGFzc2VkIHRvIHNldAoJc3lzdGVtIGRhdGUgY2FsbCAocmVxdWlyZWQgYnkgbWFueSBpbnN0YWxsYXRpb24gY2hlY2tzKS4KCjIwMDMtMDUtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfUnUucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUnUucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX1J1LnJjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUnUucmMsIHByb2dyYW1zL2Nsb2NrL1J1LnJjLAoJICBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1J1LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vUnUucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvc3RhcnQvUnUucmMsCgkgIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1J1LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL1J1LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglJZ29yIFN0ZXBpbiA8aXNAeHRtLnJ1PgoJQWRkZWQgYSBsb3Qgb2YgUnVzc2lhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYzoKCU1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJU3VwcG9ydCBfTkVUX1dNX1BJTkcgcHJvdG9jb2wgc28gdGhlIFdNIGNhbiBkZXRlY3QgZnJlZXplcy4KCgkqIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGQgcmVnaXN0ZXIgcHJlc2VydmF0aW9uIHdoZW4gdXNpbmcgbGF3cnggaW5zdHJ1Y3Rpb24uCglGaXggJzsnIGVuZGluZyB0byAnXG4nIGVuZGluZyBmb3IgYSBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIGRhcndpbi4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCURtdXNpYyBjbGFzcyBmYWN0b3J5IGNhbiBub3cgY3JlYXRlIGRtbG9hZGVyOCBhbmQgZG1wZXJmb3JtYW5jZTguCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgbm9uLXg4NiBET1NWTV9XYWl0IHByb3RvdHlwZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgcG93ZXJwYyBjb21waWxlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUdpdmUgdGhlIHJpZ2h0IGlkcyB0byB0aGUgRGlyZWN0U291bmRDcmVhdGU4IGZ1bmN0aW9uICh0aGFua3MgdG8KCVJvYmVydCBSZWlmKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFjdHVhbGx5IHNldCB0aGUgR0wgY29udGV4dCBiZWZvcmUgZG9pbmcgYW55IEdMIGNhbGxzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGltZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIFNldFN5c3RlbVRpbWVBZGp1c3RtZW50IHN0dWIuCgoyMDAzLTA1LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOgoJQWRkZWQgZHVtbXkgcmVhZF9lbGZfaW5mbyBmb3IgdGhlIG5vbi1FTEYgY2FzZSAocmVwb3J0ZWQgYnkgU3RldmVuCglFZHdhcmRzKS4KCgkqIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vdmUgYWxsIHRlc3RzIHRvIG91dHNpZGUgdGhlIGxvb3Agd2hlbiBzZXR0aW5nIHZvbHVtZS4KCUFkZCB0cmFjZXMgdG8gZnVuY3Rpb25zLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gbWlzYy4gdHJhY2luZyBmaXhlcwoJLSBoYW5kbGUgSUlEX0lEaXJlY3RTb3VuZCg4KSBhcyB0aGUgZGVmYXVsdCBzb3VuZCBkcml2ZXIKCgkqIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgd2luZWRlZmF1bHQucmVnOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIERpcmVjdE11c2ljOkVudW1Qb3J0IGFuZCBEaXJlY3RNdXNpYzpHZXREZWZhdWx0UG9ydC4KCgkqIHNlcnZlci9zZW1hcGhvcmUuYzogUmVtb3ZlZCBubyBsb25nZXIgY29ycmVjdCBhc3NlcnRpb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFJlbW92ZWQgdXNlbGVzcyBjaGVjayBmb3IgcmVnaXN0cnkgZmlsZSB2ZXJzaW9uLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJldmVyc2VkIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGJ1ZmZlcnMgYW5kIG5vdGlmaWVzLgoJRml4ZWQgbm90aWZ5IHJldXNlIGJ1Zy4KCU1pbm9yIGRvY3VtZW50YXRpb24gYW5kIGVycm9yIG1lc3NhZ2UgY2xlYW51cC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZHJpdmVyIHByb3BlcnR5IHNldCBpbXBsZW1lbnRhdGlvbi4KCUZpeGVkIG5vdGlmeSByZWxlYXNlIGJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglXaGVuIGl0ZW1zIGFyZSBpbnNlcnRlZCBpbiBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgdHJlZXZpZXcsIHRoZSBmaXJzdAoJdmlzaWJsZSBpdGVtIHdhcyBub3QgY29ycmVjdGx5IHVwZGF0ZWQuCglUaGUgZmlyc3QgdmlzaWJsZSBpdGVtIHdhcyBzb21ldGltZXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGxvY2F0aW9uIG9mCglvdGhlciBpdGVtcyB3aGVuIGl0IGhhZCBiZWVuIGZyZWVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUNoZWNrIHRoZSBtYXNrIGZsYWdzIGluIHRoZSBpdGVtIHN0cnVjdHVyZSB0byBkZXRlcm1pbmUgaG93IG11Y2gKCW1lbW9yeSB0byByZWFkL3dyaXRlLgoKCSogZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlIG9ic29sZXRlIGNvZGUgZnJvbSBET1NWTV9XYWl0LgoJUHJlcGFyZSBET1NWTV9XYWl0IGZvciBoYW5kbGluZyBuZXN0ZWQgaW50ZXJydXB0cyBpbiBib3RoIHJlYWwgYW5kCglwcm90ZWN0ZWQgbW9kZS4KCVByb3ZpZGUgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIGtleWJvYXJkIHJlbGF0ZWQgZGVhZGxvY2suCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVwb3J0IGNvcnJlY3QgSVJRIGJhc2VzIHRvIERQTUkgYXBwbGljYXRpb25zLgoJTWFrZSBpbnQzMSBwcmludCBtb3JlIHRyYWNpbmcgaW5mb3JtYXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRml4IGFyZ3VtZW50IHBhc3NpbmcgdG8gRE9TIHByb2dyYW0gZnJvbSB3aW5ldmRtLgoJQWRkIHN1cHBvcnQgZm9yIGludm9raW5nIERPUyBwcm9ncmFtcyB3aXRoIGxvbmcgY29tbWFuZCBsaW5lcy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc3RhbGUgbGlua3MgZnJvbSB0aGUgRkFRLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdpbjk4IHVzZXIzMi5kbGwgZnVuY3Rpb24gZXhwb3J0cyBlbnRyaWVzLgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGltcHJvdmUgaW50cm8gdGV4dAoJLSBkZXNjcmliZSBhbHRlcm5hdGl2ZXMgdG8gV2luZQoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHNvbWUgb2Jzb2xldGUgYW5kL29yIHJlZHVuZGFudCBpbmZvLgoKMjAwMy0wNS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL3dpbmUvd3BwLmgsCgkgIGxpYnMvTWFrZWZpbGUuaW4sIGxpYnMvd3BwLy5jdnNpZ25vcmUsIGxpYnMvd3BwL01ha2VmaWxlLmluLAoJICBsaWJzL3dwcC9wcGwubCwgbGlicy93cHAvcHB5LnksIGxpYnMvd3BwL3ByZXByb2MuYywgbGlicy93cHAvd3BwLmMsCgkgIGxpYnMvd3BwL3dwcF9wcml2YXRlLmgsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aWRsL01ha2VmaWxlLmluLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2luZXdyYXBwZXIsCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmM6CglNb3ZlZCB0aGUgd3BwIGxpYnJhcnkgZnJvbSB0b29scy8gdG8gbGlicy8uCglDcmVhdGUgc3ltbGlua3MgdG8gdGhlIHZhcmlvdXMgbGlicmFyaWVzIGluIHRoZSBsaWJzIGRpcmVjdG9yeS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsaWJzLy5jdnNpZ25vcmUsIGxpYnMvTWFrZWxpYi5ydWxlcy5pbiwKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvTWFrZWZpbGUuaW46CglNb3ZlZCBydWxlcyBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcyBpbnRvIGEgZ2xvYmFsIE1ha2VsaWIucnVsZXMKCWZpbGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBJbXBsZW1lbnRlZCBSdGxBZGRBY2Nlc3NBbGxvd2VkQWNlLCBSdGxBZGRBY2Nlc3NEZW5pZWRBY2UsCgkgIFJ0bEFkZEFjZSwgUnRsVmFsaWRBY2wuCgktIEFkZGVkIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBpbiBhZHZhcGkzMi4KCS0gR3JvdXBlZCB0aGUgQUNMIGZ1bmN0aW9ucyBpbiBhZHZhcGkzMi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQXBwbGljYXRpb24gc3BlY2lmaWMgc2V0dGluZ3MgYXJlIGFsc28gc3VwcG9ydGVkIGZvciBkc291bmQgYW5kCgl2ZXJzaW9uIHNlY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogSWdvciBTdGVwaW4gPGlzQHh0bS5ydT4KCUNoYW5nZWQgZm9udCBjaGFyc2V0IGZyb20gQU5TSSB0byBERUZBVUxUX0NIQVJTRVQuCgoyMDAzLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQ2hhbmdlIHJldHVybiBjb2RlIGNvbXBhcmlzb24gaW4gQVZJIGNvbnRyb2wgKGZyb20gcGF0Y2ggYnkKCXN0YW5sZXlnNzZAeWFob28uY29tKS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglBZGQgZGVmYXVsdCBjb2RlYyBlbnRyeSAoZnJvbSBwYXRjaCBieSBzdGFubGV5Zzc2QHlhaG9vLmNvbSkuCgoJKiBjb250cm9scy9idXR0b24uYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEZpeCBzb21lIGluZGVudGF0aW9uIHByb2JsZW1zLgoJLSBIYW5kbGUgY29ycmVjdGx5IHRoZSBhbGlnbmVtZW50IG9mIHRoZSBjaGVja2JveGVzIGlmIHRoZQoJICBCU19UT1AvQlNfQk9UVE9NIGZsYWdzIGFyZSBzZXQuCgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglBdm9pZCBjYWxsaW5nIFdpbjMyIHJlc291cmNlIGZ1bmN0aW9ucyBvbiAxNi1iaXQgbW9kdWxlcy4KCgkqIG1pc2NlbXUvTWFrZWZpbGUuaW46CglXZSBzdGlsbCBuZWVkIHRvIGxpbmsgYWdhaW5zdCBudGRsbCB1bnRpbCB0aGUgcHRocmVhZCBzdHVmZiBpcyBmaXhlZAoJcHJvcGVybHkuCgoJKiBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kMTYuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsCgkgIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL2x6ZXhwYW5kLmg6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglGaXggZm9yIGJ1aWxkaW5nIGx6ZXhwYW5kIHdpdGggTWluZ3cgb3IgTVNfVkMrKyBpbmNsdWRlcwoKCSogbGlicy93aW5lL3dpbmUuZGVmOiBBZGRlZCB3aW5lX2luaXQuCgoJKiBkbGxzL250ZGxsL3Jlc291cmNlLmM6CglGaXhlZCB0eXBvIGluIGxhc3QgbWludXRlIGNoYW5nZSAoc3BvdHRlZCBieSBHZXJhbGQgUGZlaWZlcikuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcmVzb3VyY2UuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLAoJICBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglNb3ZlZCBtb3N0IG9mIHRoZSBrZXJuZWwgcmVzb3VyY2UgQVBJcyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJUHJvdGVjdCBCZWdpblBhaW50IGFuZCBFbmRQYWludCBmcm9tIGxwcyBiZWluZyBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggYm91bmRpbmcgcmVjdGFuZ2xlIGNvbXB1dGF0aW9uIGZvciBhbiBvd25lcmRyYXcgdGFiLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR2VuZXJhdGUgY3VzdG9tIGRyYXcgbm90aWZpY2F0aW9ucyBmb3Igb3duZXJkcmF3IGxpc3R2aWV3cyAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgTWF4aW1lIEJlbGxlbmfpKS4KCVJlb3JnYW5pemUgdGhlIGN1c3RvbSBkcmF3IGNvZGUgZm9yIGJldHRlciByZXVzZS4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywgZGxscy9uZXRhcGkzMi93a3N0YS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQmV0dGVyIEFQSSBjb21wbGlhbmNlIGFuZCB0ZXN0IGNhc2UgZm9yIE5ldFdrc3RhVHJhbnNwb3J0RW51bS4KCjIwMDMtMDQtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3Jlc291cmNlLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIG50ZGxsIHJlc291cmNlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBwcm9ibGVtIHdoZXJlIE9TUyB0cmlnZ2VyIHN1cHBvcnQgaXMgaW5jb25zaXN0ZW50LgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2dlbmVyaWMuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglHZXQgcmlkIG9mIHRoZSBDT01NRExHX2hJbnN0YW5jZSB2YXJpYWJsZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHNjb25mLmgsIGxpYnMvdXVpZC9keGd1aWQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBwYXJ0aWFsIHByb3BlcnR5IHNldCBzdXBwb3J0IHdoaWNoIGlzIHVzZWQgYnkgZHhkaWFnLmV4ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZHJpdmVyIG5vdGlmeSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglTbWFsbCBmaXggaW4gSURpcmVjdElucHV0RGV2aWNlMkltcGxfUXVlcnlJbnRlcmZhY2UuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEZpeCBzb21lIGluZGVudGF0aW9uLgoJLSBGaXggdGhlIGxvYWRpbmcgb2YgaWNvbiByZXNvdXJjZXMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmg6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlc2VydmUgc3BhY2UgZm9yIDE2IHN0cmVhbXMgaW4gdGhlIHN0YXRlYmxvY2suCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGUgY3JlYXRpb24gb2YgRGlyZWN0SW5wdXQgb2JqZWN0cyB0cm91Z2ggQ29DcmVhdGVJbnN0YW5jZS4KCjIwMDMtMDQtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IEZpeGVkIG5vbi1NWiBjYXNlIGJyb2tlbiBieSBwcmV2aW91cyBwYXRjaC4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUluc3RhbGwgd2luZXZkbS4KCgkqIG9iamVjdHMvZm9udC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIChzdHViKSBpbXBsZW1lbnRhdGlvbiBvZiBHZXRLZXJuaW5nUGFpcnMgZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5kZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgVXJsQ2FjaGUgc3R1YnMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIEdldFByaW50UHJvY2Vzc29yRGlyZWN0b3J5QSBzdHViLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogU3RlcGhhbiBCRVVaRSA8ZmJpZ2d1bkBob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIG1lc3NhZ2UgVENNX1NFVFBBRERJTkcgd2l0aCB0aGUgRGltaXRyaSdzIGFkdmljZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbGlicy93aW5lL2xvYWRlci5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvLmN2c2lnbm9yZSwKCSAgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV2ZG0vLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZXZkbS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzdGFydGluZyBXaW4xNiBhbmQgRE9TIHByb2dyYW1zIGZyb20gdGhlCgljb21tb24gcHJvY2VzcyBzdGFydHVwIGludG8gYSBzZXBhcmF0ZSB3aW5ldmRtIGFwcGxpY2F0aW9uLgoKCSogZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmM6IEFkZGVkIE5PTkFNRUxFU1NVTklPTi9TVFJVQ1QgZGVmaW5lcy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVNpbGVudGx5IGlnbm9yZSAnc28nIGxvYWRvcmRlciBpbiB0aGUgY29uZmlnIGZpbGUgaW5zdGVhZCBvZgoJZGlzcGxheWluZyBhbiBlcnJvci4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCU1ha2Ugc3VyZSB0aGF0IHNuZF9wY21fb3BlbiByZXR1cm5lZCBhIHZhbGlkIGhhbmRsZSBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jOgoJSmVycnkgSmkgPEplcnJ5SnpAaG90bWFpbC5jb20+CglUaGUgbWlzc2luZyBwYXJ0IG9mIG11bHRpcGxlIGRldmljZSBzdXBwb3J0IGZvciB3aW5lYXJ0cywgd2luZWF1ZGlvaW8sCgl3aW5lamFjayBhbmQgd2luZW5hcy4KCgkqIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmg6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJU29tZSBkbXVzaWMgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJQWRkZWQgc29tZSByZWdpc3RyeS1sb2FkaW5nIGNvZGUuCgoJKiBjb250cm9scy9lZGl0LmM6IEJyYWQgQ2FtcGJlbGwgPGJyYWRAc2VtZS5jb20uYXU+CglFTV9SRVBMQUNFU1RSIHdhcyBub3QgcmVzcGVjdGluZyBidWZmZXJfbGltaXQuCgoJKiB3aW4zMi9leGNlcHQuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZW1vdmVkIFctPkEgY2FsbHMgZnJvbSBGYXRhbEFwcEV4aXRXLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSB0cmFja2JhcidzIHNpemUuCgoyMDAzLTA0LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3B0cmFjZS5jOgoJUHJvcGVybHkgaGFuZGxlIHRoZSB3YWl0NCBzeXNjYWxsIGZhaWx1cmUgb24ga2VybmVscyB0aGF0IGRvbid0CglzdXBwb3J0IHRoZSBfX1dBTEwgZmxhZy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCUFkZGVkIGEgZmV3IHN0dWJzIG5lZWRlZCBieSB0aGUgZ2VuZXJhdGVkIG9haWRsX3AuYy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2FpZGxfcC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBwcm9wZXIgSURpc3BhdGNoIG1hcnNoYWxsaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYW55IHR5cG8gZml4ZXMgYW5kIGNhc2UgZml4ZXMuCglSZXBocmFzZWQgdGhpbmdzIGhlcmUgYW5kIHRoZXJlLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJQWRkZWQgbGlzdGJveCB0ZXN0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBidWcgY2F1c2VkIGJ5IE9TUyBpbmNvbnNpc3RlbnQgdHJpZ2dlciBvcGVyYXRpb24gb24gZGlmZmVyZW50CgloYXJkd2FyZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJUmVtb3ZlIHRoZSBzZW5kaW5nIG9mIE5NX1RPT0xUSVBTQ1JFQVRFRCB3aGljaCBpcyBub24gZXhpc3RlbnQgdW5kZXIKCVdpbmRvd3MgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgdHJhY2tiYXIuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBkbXVzaWMgcmVnaXN0cnkgZW50cmllcy4KCgkqIGRsbHMva2VybmVsL25scy9ubGQubmxzOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUR1dGNoIGxvY2FsaXNhdGlvbiBvZiBsYW5ndWFnZSBncm91cCBuYW1lcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHNvbWUgdHlwb3MgYW5kIGEgbWVtb3J5IGxlYWsgaW4gU0hGaWxlT3BlcmF0aW9uQS4KCjIwMDMtMDQtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJTW92ZWQgeDExZHJ2LmggdG8gZGxscy94MTFkcnYuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQga2VybmVsMzIuRmx1c2hGaWxlQnVmZmVycyB0byBudGRsbC5OdEZsdXNoQnVmZmVyc0ZpbGUuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgY2hhbmdlIHRvIHR0eWRydiB0byBpbnN0YWxsIHJlZ2lzdHJ5LCByZWdlZGl0IGRvZXNuJ3QgdXNlIFguCglNYWtlIHN1cmUgdGhlIGN1cnJlbnQgZGlyIGlzIG1hcHBlZCBpbiBET1MuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy91c2VyLmM6CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglJbXBsZW1lbnRlZCBFbnVtRGlzcGxheVNldHRpbmdzKiBhbmQgQ2hhbmdlRGlzcGxheVNldHRpbmdzKi4KCjIwMDMtMDQtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCB1c2VzIG9mIExEUEFUSC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU9ubHkgcmVhcHBseSB0aGUgd29ybGQsIHZpZXcgb3IgcHJvamVjdGlvbiB0cmFuc2Zvcm0gY2hhbmdlcyBpZiB3ZQoJcmVhbGx5IGhhdmUgdG8uCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNSVJST1JfQVJCIHN1cHBvcnQgaXMgbm90IGRlcGVuZGVudCBvbiBPcGVuR0wgMS4zIGFzIEkgb3JpZ2luYWxseQoJaWZkZWYnZWQuIEl0IGlzIGFwcGFyZW50bHkgaW50cm9kdWNlZCBmdWxseSBpbiAxLjQsIG9yIGRlcGVuZGVudCBvbgoJYW5vdGhlciBpZmRlZiwgR0xfQVJCX3RleHR1cmVfbWlycm9yZWRfcmVwZWF0LgoKCSogdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCVJlc291cmNlIG5hbWVzIGRvbid0IG5lZWQgYSBjYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uOyB0aGlzIGF2b2lkcwoJZGVwZW5kaW5nIG9uIGxpYndpbmVfdW5pY29kZS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJRGFuIFdvbGYgPGRqd29sZkByZWFsaXR5d2F2ZS5jb20+CglJbXBsZW1lbnRlZCBhIHN0dWIgZm9yIERldGVjdEF1dG9Qcm94eVVybC4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL2Rvc2NvbmYuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaCwgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZWQgZG9zY29uZi5jIHRvIHdpbmVkb3MuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEb24ndCByZWFwcGx5IGFsbCB0aGUgdGV4dHVyZSBzdGF0ZXMgaWYgdGhlIHRleHR1cmUgd2UgYXJlIHJlcGxhY2luZwoJaXMgdGhlIHNhbWUgYXMgdGhlIHRleHR1cmUgdGhlcmUgYWxyZWFkeSBhbmQgdGhlIHRleHR1cmUgaXMgbm90CgknZGlydHknLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglTdXBwb3J0IHJlc291cmNlcyBpbiBjcm9zcy1jb21waWxlZCB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL25scy9wdGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvcHRnLm5sczoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMb2NhbGl6YXRpb24gb2YgdGhlIG5ldyBsYW5ndWFnZSBncm91cCBzdHJpbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGludGVsbGl3YXJlLmNhPgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gb2Jzb2xldGUgZmlsZXMuCgoJKiBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVNpbGVuY2UgaW5kZXggYnVmZmVyIGxvY2sgKyBvZmZzZXQgZml4bWUgdG8gYSB0cmFjZSBiZWNhdXNlIHRoZQoJYmVoYXZpb3VyIHVuZGVyIHRoYXQgc2NlbmFyaW8gd29ya3MuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRE9UMyBpc24ndCB0aGVyZSBvbiBlYXJsaWVyIG9wZW5nbCB2ZXJzaW9ucy4KCjIwMDMtMDQtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaDoKCUNoZWNrIGZvciBzdHJ1Y3Qgb3B0aW9uIGluZGVwZW5kZW50bHkgb2YgdGhlIGdldG9wdF9sb25nIGNoZWNrLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJU2V0IFNBX05PQ0xEV0FJVCBpbiB0aGUgU0lHQ0hMRCBzaWdhY3Rpb24gdG8gYXZvaWQgem9tYmllcy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglXaGVuIGEgZ2FtZSByZXF1ZXN0cyBmdWxsc2NyZWVuLCBtYWtlIGl0cyB3aW5kb3cgdGhlIGRpbWVuc2lvbnMKCXJlcXVlc3RlZC4gSWRlYWxseSB0aGlzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBtYWtpbmcgdGhlIHNjcmVlbiB0aGF0CglyZXNvbHV0aW9uLCBidXQgdGhpcyBzdWZmaWNlcyBmb3Igbm93LgoKCSogbWlzYy92ZXJzaW9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFeHBsaWNpdGx5IGNhbGwgVkVSU0lPTl9Jbml0IHdpdGggdGhlIG1haW4gZXhlIGZpbGUgbmFtZSwgc28gdGhhdAoJYXBwbGljYXRpb24gc2V0dGluZ3Mgd29yayBmb3IgV2luMTYgYW5kIERPUyBhcHBzIHRvby4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHEsIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHE6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGludGVsbGl3YXJlLmNhPgoJVXNlIHRoZSBzdGFuZGFyZCBkYjJodG1sIGluc3RlYWQgb2Ygb3VyIGRiMmh0bWwtd2luZWhxIHNjcmlwdC4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglXaW5kb3dzIG5ldmVyIHJlcG9ydHMgMjQgYml0IGNvbG91cnMsIGFuZCBzb21lIGdhbWVzIGZhaWwgdG8gd29yawoJdW5sZXNzIGluIHNwZWNpZmljIG1vZGVzLiBSZXBvcnQgMTZiaXQgY29sb3VyIGZvciAyNGJpdCBtb2Rlcy4KCjIwMDMtMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aS10aHJlYWQgaW4gR0RCIHJlbW90ZSByZWFkL3dyaXRlIHJlZ2lzdGVyKHMpCgkgIGNvbW1hbmRzCgktIGJ5IGRlZmF1bHQsIGludGVybmFsIGVycm9ycyBhcmUgbm93IHZlcmJvc2UKCgkqIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmM6CglEb24ndCBib3RoZXIgc2VuZGluZyBXTV9OQ0NSRUFURSB0byB0aGUgZGVza3RvcCB3aW5kb3csIHRoaXMgZG9lc24ndAoJd29yayBhbnl3YXkgKHNwb3R0ZWQgYnkgVXdlIEJvbm5lcykuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCBkZXZpY2UgY2FwYWJpbGl0ZXMgaW5jbHVkaW5nIHN1cHBvcnQgaW4gcHJldmlvdXMgcGF0Y2gsIGFzCgl3ZWxsIGFzIG1ha2luZyB0aGUgdGV4dHVyZSBvcGVyYXRpb25zIGNhcGFiaWxpdGllcyBtb3JlIGFjY3VyYXRlLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIERvdFByb2R1Y3QzIHN1cHBvcnQgaWYgc3VwcG9ydGVkIGJ5IG9wZW5nbC4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmMsCgkgIGRsbHMva2VybmVsL25scy8qLm5scywgaW5jbHVkZS93aW5ubHMuaDoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQWRkZWQgcmVzb3VyY2Ugc3RyaW5ncyBmb3IgbGFuZ3VhZ2UgZ3JvdXBzLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVJlaW1wbGVtZW50IFNIRmlsZU9wZXJhdGlvbiBpbiBVbmljb2RlLCBiYXNlZCBvbiB0aGUgd29yayBvZiBEaWV0cmljaAoJVGVpY2tuZXIuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIGNvZGVzYW1wbGVyIHRleHR1cmUgYWRkcmVzc2luZyBtb2RlIHNhbXBsZSB3b3JrIGJldHRlci4KCUFkZCBtaXJyb3JzdXBwb3J0IChpZiBvcGVuZ2wgMS4zKSBhbmQgbWFrZSBjbGFtcCBhbmQgYm9yZGVyIGFwcGVhcgoJbW9yZSBzaW1pbGFyIHRvIFdpbmRvd3MuCgoJKiBpbmNsdWRlL3JwYy5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUR1bW15IFJQQyBleGNlcHRpb24gbWFjcm9zLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBzaW1wbGUgY2FjaGluZyBvZiBjbGllbnQgY29ubmVjdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2N2cy5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL29sZS5zZ21sLCBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3Rvb2xzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wa2cuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAaW50ZWxsaXdhcmUuY2E+CglSZW1vdmUgdGhlIGdlbmVyYXRpb24gb2YgYWxsIGRvY3VtZW50YXRpb24gaW4gb25lIGRvY3VtZW50LgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgcmFjZSBjb25kaXRpb24gb24gUlBDIHdvcmtlciB0aHJlYWQgY3JlYXRpb24sIGFuZCBhIHR5cG8uCgoJKiBkbGxzL3JwY3J0NC9jc3R1Yi5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIG1pc3NpbmcgQWRkUmVmLgoKCSogZmlsZXMvZHJpdmUuYzogTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCUZpeGVkIHR5cG8gaW4gY29tbWVudC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglUZXJtaW5hdGUgdGhlIGxmaW5kIGlubGluZSBmdW5jdGlvbi4KCgkqIG1pc2MvdmVyc2lvbi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2UgdGhlIHZlcnNpb24gb2Ygd2luMmsgdG8gU1AzLgoJQ2hhbmdlIHRoZSB2ZXJzaW9uIG9mIFhQIHRvIFNQMS4KCU1vZGlmeSB2YWx1ZXMgb2YgWFAgYWNjb3JkaW5nIHRvIGEgcG9zdCBieSBQaGlsaXBwIFdvbGxlcm1hbm4uCgoJKiB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCAtZm8gYXMgYSBzeW5vbnltIGZvciAtbywgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCByYy4KCUxpbmUgdXAgaGVscCBtZXNzYWdlLCBjbGVhbnVwIHNvbWUgZXJyb3IgbWVzc2FnZXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCU9uIExpbnV4OiBhdm9pZCBibG9ja2luZyBpbiBET1NGU19PcGVuRGlyX1ZGQVQgaWYgc3BlY2lmaWVkIHBhdGggaXMKCW5vdCBhIGRpcmVjdG9yeS4KCjIwMDMtMDQtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbnNvY2suaDogWWV0IGFub3RoZXIgYXR0ZW1wdCBhdCBmaXhpbmcgdGhlIGh0b25sIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oOgoJRml4ZWQgYWxsb2NhIGhhbmRsaW5nIHRoZSB3YXkgbWluZ3cgZG9lcyBpdCAocmVwb3J0ZWQgYnkgVmluY2VudAoJQulyb24pLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglBdm9pZCBsb2NhbCBXSU5BUEkgZnVuY3Rpb24gcG9pbnRlcnMgaW4gX2ludm9rZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50ZWQgSUxHZXREaXNwbGF5TmFtZUV4QSBhbmQgSUxHZXREaXNwbGF5TmFtZUV4VyBhbmQgY2FsbCB0aGVtCglmcm9tIElMR2V0RGlzcGxheU5hbWVBVyBhbmQgSUxHZXREaXNwbGF5TmFtZUV4QVcuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBjcmVhdGlvbiBvZiBhIGRlcHRoL3N0ZW5jaWwgYnVmZmVyIHdoZW4gY3JlYXRpbmcgYSBkZXZpY2UuCglJbXBsZW1lbnQgSURpcmVjdDNEOERldmljZUltcGxfR2V0RGVwdGhTdGVuY2lsQnVmZmVyLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJbWJ0b3djIHJldHVybnMgLTEgaWYgd2UgY2FuJ3QgZmluZCBhIHZhbGlkIG11bHRpYnl0ZSBjaGFyIGluIHRoZSBub24KCU5VTEwgc291cmNlIHN0cmluZy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVzIGZvciBTeXN0ZW1UaW1lVG9UelNwZWNpZmljTG9jYWxUaW1lKCkgYW5kCglUelNwZWNpZmljTG9jYWxUaW1lVG9TeXN0ZW1UaW1lKCkuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL25hbWVkX3BpcGUuYzoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUZpeCBmb3IgY2xpZW50IGFjY2Vzc2luZyBhIG5hbWVkIHBpcGUgYWZ0ZXIgdGhlIHNlcnZlciBjbG9zZXMgaXQuCgoJKiBmaWxlcy9kcml2ZS5jOiBNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJUmVmdXNlIHRvIHJlYWQgbm9uLWJsb2NrIGRldmljZSBzZXQgaW4gY29uZmlnLgoJQXZvaWQgYmxvY2tpbmcgb24gb3BlbiBpZiB1c2VyIHNldHMgZGV2aWNlIHRvIHVuY29ubmVjdGVkIHBpcGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmluZEZpcnN0RmlsZSBvbiByb290IGRpcmVjdG9yeSBzaG91bGQgZmFpbC4KCjIwMDMtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglGYWxsIGJhY2sgdG8ga2lsbCgpIGlmIHRoZSBrZXJuZWwgZG9lc24ndCBzdXBwb3J0IHRraWxsKCkuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgUnRsSXNOYW1lTGVnYWxET1M4RG90MyAoYmFzZWQgb24gYSBwYXRjaCBieSBFcmljIFBvdWVjaCkuCglJbXBsZW1lbnRlZCBSdGxVcGNhc2VVbmljb2RlU3RyaW5nVG9Db3VudGVkT2VtU3RyaW5nLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgd2luZWRlZmF1bHQucmVnOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CgktIEZpeCBEaXJlY3RQbGF5RW51bWVyYXRlQSBleGl0IGNvZGUuCgktIEFkZCBkZWZhdWx0IHJlZ2lzdHJ5IGVudHJ5IGZvciBEaXJlY3RQbGF5IFNlcnZpY2UgUHJvdmlkZXJzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IHRoZSBwYXRoIG9mIGtleWJvYXJkLmMgaW5zaWRlIGEgRklYTUUgbG9nIHN0YXRlbWVudC4KCgkqIHdpbjMyL2V4Y2VwdC5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCB1c2UgYSBoZXggbnVtYmVyIGZvciB0aGUgZXZlbnQgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLgoKCSogdG9vbHMvYzJtYW4ucGw6IFRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJQ2hhbmdlIGMybWFuIHRoYXQgaXQgd29ya3Mgd2l0aCB0aGUgbmV3IGZvcm1hdCBvZiB0aGUgc3BlYyBmaWxlcwoJKHdpdGhvdXQgZXhwb3J0ZWQgbmFtZSkuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURvbid0IGxpbmsgY3Jvc3MgY29tcGlsZWQgdGVzdHMgYWdhaW5zdCBXaW5lIGltcG9ydCBsaWJyYXJpZXMuCgoJKiBtaXNjL3ZlcnNpb24uYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJUHJpbnQgb3V0IFdpbmRvd3MgdmVyc2lvbiB2YWx1ZXMsIGluIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IHRoZSBMaXN0Vmlld19TZXRJdGVtU3RhdGUgbWFjcm8uCgoyMDAzLTA0LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUFsbG93IG92ZXJyaWRpbmcgQ0ZMQUdTIHdoZW4gcnVubmluZyBjb25maWd1cmUuIE90aGVyIHNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglJbnNlcnQgdGhlIGxhc3QgZnJlZSBibG9jayBvZiBhIHN1YmhlYXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJlZSBsaXN0IHRvCglhdm9pZCB1c2luZyB1bmNvbWl0dGVkIHNwYWNlIHVubGVzcyByZWFsbHkgbmVjZXNzYXJ5LgoKCSogaW5jbHVkZS93aW5lL2RlYnVnLmg6CglGaXhlZCBnY2MgdmFyYXJncyBtYWNybyBzeW50YXggKHJlcG9ydGVkIGJ5IEdhYnJpZWxlIEdpb3JnZXR0aSkuCgoJKiBsaWJzL3VuaWNvZGUvY18wNDIuYywgbGlicy91bmljb2RlL2NfMTAwMDAuYywgbGlicy91bmljb2RlL2NfMTAwMDcuYywKCSAgbGlicy91bmljb2RlL2NfMTAwMjkuYywgbGlicy91bmljb2RlL2NfMTAwNi5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDA3OS5jLCBsaWJzL3VuaWNvZGUvY18xMDA4MS5jLAoJICBsaWJzL3VuaWNvZGUvY18yMDg2Ni5jLCBsaWJzL3VuaWNvZGUvY18yMDkzMi5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5Mi5jLCBsaWJzL3VuaWNvZGUvY18yODU5My5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5NC5jLCBsaWJzL3VuaWNvZGUvY18yODU5NS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5Ni5jLCBsaWJzL3VuaWNvZGUvY18yODYwMC5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwNC5jLCBsaWJzL3VuaWNvZGUvY18yODYwNS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwNi5jLCBsaWJzL3VuaWNvZGUvY180MzcuYywgbGlicy91bmljb2RlL2NfNzM3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg1Mi5jLCBsaWJzL3VuaWNvZGUvY184NTUuYywgbGlicy91bmljb2RlL2NfODYwLmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2MS5jLCBsaWJzL3VuaWNvZGUvY184NjIuYywgbGlicy91bmljb2RlL2NfODY1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2Ni5jLCBsaWJzL3VuaWNvZGUvY184NzQuYywgbGlicy91bmljb2RlL2NfODc4LmMsCgkgIGxpYnMvdW5pY29kZS9jXzkzMi5jLCBsaWJzL3VuaWNvZGUvY185MzYuYywgbGlicy91bmljb2RlL2NfOTQ5LmMsCgkgIGxpYnMvdW5pY29kZS9jXzk1MC5jLCBsaWJzL3VuaWNvZGUvY3BtYXAucGwsIGxpYnMvdW5pY29kZS9kZWZhdWx0czoKCUhhY2tlZCAweDAwYTUgdG8gbWFwIHRvIGJhY2tzbGFzaCBpbiBTaGlmdC1KSVMgY29kZXBhZ2UuCglBZGRlZCBtYXBwaW5nIGZvciAweDAwYTYuCgoJKiBNYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggdHlwbzogc3FtbCAtPiBzZ21sLgoKCSogdG9vbHMvYzJtYW4ucGw6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSGFuZGxlIG11bHRpbGluZSBvdXRwdXQgZnJvbSBncmVwIGFuZCBkb24ndCBncmVwIGZvciBlbXB0eSBzdHJpbmdzLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhdmUgdGhlICdtYWtlX29wZW5nbCcgaW4gbGluZSB3aXRoIHRoZSAobWFudWFsbHkgZWRpdGVkKSBzcGVjIGZpbGUuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4IGJsYXRhbnRseSB3cm9uZyBTZXRGaWxlUG9pbnRlcigpIGNhbGxzLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCURvbWluaWsgU3RyYXNzZXIgPERvbWluaWsuU3RyYXNzZXJAdC1vbmxpbmUuZGU+CglQYXJ0aWFsbHkgaW1wbGVtZW50IHByb3h5IHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sCgkgIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLCBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLAoJICBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1wa2cuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUcmFuc2Zvcm0gdGhlIFBhY2thZ2luZyBHdWlkZSBpbnRvIGEgbmljZSBBU0NJSSBmaWxlLgoJVXBkYXRlIGl0IHRvIHRoZSBsYXRlc3QgaW5mbywgbWFrZSBpdCBsZXNzIHByb25lIHRvIG9ic29sZXNjZW5jZS4KCVVwZGF0ZWQgdGhlIFdpbmUgZXhlY3V0YWJsZXMgZnJvbSBsaXN0IHByb2R1Y2VkIGJ5IFRvbSBXaWNrbGluZS4KCjIwMDMtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogRG9uJ3QgdXNlIFdpbmUgZGVidWdnaW5nIEFQSSBpbiB0ZXN0cy4KCgkqIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUludGVycnVwdCBoYW5kbGluZyBub3cgcHJpbnRzIG1vcmUgdHJhY2UgaW5mb3JtYXRpb24uCglSZXBsYWNlZCBzb21lIG1hZ2ljIG51bWJlcnMgd2l0aCBwcmVwcm9jZXNzb3IgY29uc3RhbnRzLgoKCSogc2VydmVyL3NpZ25hbC5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJRml4IGZvciBjb21waWxpbmcgb24gTmV0QlNELgoKCSogaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUluY2x1ZGUgc2hsZ3VpZC5oIGZyb20gc2hsb2JqLmguCglFeHBvc2UgSVNoZWxsTGluayB0byBXaW5lbGliIGFwcHMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURlZmluZSBzb21lIGFkZGl0aW9uYWwgY29uc3RhbnRzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCWVycm5vIHNob3VsZCBub3QgYmUgdXNlZCBhcyBhIHZhcmlhYmxlIG5hbWUuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbmNyZWFzZSBNYXhTdHJlYW1zIHRvIDIgaW4gQ0FQUy4KCgkqIGluY2x1ZGUvZDNkOC5oOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGRlZmluZXMgdG8gZDNkOCBoZWFkZXIuCgoyMDAzLTA0LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3BhdGguYywKCSAgZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgUnRsRGV0ZXJtaW5lRG9zUGF0aE5hbWVUeXBlX1UgYW5kIFJ0bElzRG9zRGV2aWNlTmFtZV9VLgoKCSogZGxscy9vbGUzMi9vbGUxNi5jLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3Vua253bi5pZGwsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglUaGUgY29tX2ludGVyZmFjZSBhdHRyaWJ1dGUgaXMgbm90IG5lZWRlZCBvbiBkZXJpdmVkIGNsYXNzZXMuCglSZW1vdmVkIHRoZSBJQ09NX0NUSElTKiBtYWNyb3MuCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywKCSAgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLAoJICBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOC92b2x1bWUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5oLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oOgoJSGVhZGVyIGZpbGVzIG11c3Qgbm90IGluY2x1ZGUgY29uZmlnLmguCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJRml4ZWQgcnVsZXMgZm9yIGF1dG8gZG9jdW1lbnRhdGlvbiAocmVwb3J0ZWQgYnkgVmluY2VudCBC6XJvbikuCgoJKiBkbGxzL250ZGxsL250LmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCBOdFF1ZXJ5UHJvY2Vzc0luZm9ybWF0aW9uIGNhc2UgbmVlZGVkIGJ5IE5UIHZlcnNpb24gb2YgTVNJLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIGFsaWFzZXMgdG8gY29uZmlndXJlIGNoZWNrIGZvciBtaW5ndyBjcm9zcyBjb21waWxlciBhbmQgZGxsdG9vbC4KCjIwMDMtMDQtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBQQ00gZm9ybWF0IGV2YWx1YXRpb24gYnVnLgoJUHJvcGVybHkgY2xlYW4gdXAgcGFydGlhbGx5IGNyZWF0ZWQgc291bmQgYnVmZmVycy4KCgkqIE1ha2UucnVsZXMuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzIGZvciBpZGwgZmlsZXMuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUFkZGVkIHRoZSBHUkFESUVOVF9GSUxMX1RSSUFOR0xFIGNhc2UgaW4gR2RpR3JhZGllbnRGaWxsLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2VkIGNhcHR1cmUgZm9ybWF0IHByaW50aW5nIHRvIGhleC4KCgkqIGxpYnMvdXVpZC9keGd1aWQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBkaXJlY3Qgc291bmQgZHJpdmVyIGd1aWRzLgoKCSogZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvb2xlMzIvaWZzLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZDNkLmgsCgkgIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZHg4Y29yZS5oLCBpbmNsdWRlL2RkcmF3LmgsCgkgIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNjLmgsCgkgIGluY2x1ZGUvZG11c2ljaS5oLCBpbmNsdWRlL2RtdXNpY3MuaCwgaW5jbHVkZS9kb2NvYmouaCwKCSAgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc2RyaXZlci5oLAoJICBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3NlcnZwcm92LmgsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3Vua253bi5pZGwsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdmZ3LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb21jYXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9waGVscGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWd1aWQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2VydmljZXByb3ZpZGVyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmgsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglTaW1wbGlmaWVkIENPTSBpbnRlcmZhY2UgZGVjbGFyYXRpb25zLCByZW1vdmluZyB0aGUgbmVlZCB0byBkZWZpbmUKCWJvdGggYW4geHh4X01FVEhPRFMgYW5kIGFuIHh4eF9JTUVUSE9EUyBtYWNyby4KCjIwMDMtMDQtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkOC5oLAoJICBpbmNsdWRlL2QzZHg4Y29yZS5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsCgkgIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNjLmgsIGluY2x1ZGUvZG11c2ljaS5oLAoJICBpbmNsdWRlL2RtdXNpY3MuaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9kcGxheS5oLAoJICBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc2RyaXZlci5oLCBpbmNsdWRlL2Rzb3VuZC5oLAoJICBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLAoJICBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS92ZncuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbWNhdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtZ3VpZC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaCwKCSAgdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbC5oOgoJR2V0IHJpZCBvZiB0aGUgSUNPTV9DQUxMIG1hY3Jvcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogSWdub3JlICJVICIgaW4gbm0gLXUgb3V0cHV0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywKCSAgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9naXQuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUmVtb3ZlZCB1c2VzIG9mIHRoZSBub24gc3RhbmRhcmQgSUNPTV9WVEJMIG1hY3JvLgoKCSogZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwKCSAgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwKCSAgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkeDhjb3JlLmgsIGluY2x1ZGUvZGRyYXcuaCwKCSAgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwKCSAgaW5jbHVkZS9kbXVzaWNpLmgsIGluY2x1ZGUvZG11c2ljcy5oLCBpbmNsdWRlL2RvY29iai5oLAoJICBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsCgkgIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvc2VydnByb3YuaCwKCSAgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbWNhdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtZ3VpZC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaCwKCSAgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCVVzZSBhIG1vcmUgY29tcGF0aWJsZSB0ZWNobmlxdWUgdG8gZGVjbGFyZSBDT00gaW50ZXJmYWNlcyBtZXRob2RzLAoJdXNpbmcgTWljcm9zb2Z0J3MgU1RETUVUSE9EIG1hY3JvcyBpbnN0ZWFkIG9mIHRoZSBXaW5lLXNwZWNpZmljCglJQ09NX01FVEhPRCBvbmVzLgoKMjAwMy0wNC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL3ZlcnNpb24ucmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2VkIERMTCB2ZXJzaW9uIHRvIDguCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2UgZG9uJ3QgbmVlZCB0byBkbG9wZW4gdGhlIGFwcCBtb2R1bGUgYmVmb3JlIHRoZSBMb2FkTGlicmFyeSgpLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRkZWQgbW9yZSBleHRlbmRlZCBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGQgYW5kIGZpeCBhIGZldyBzdHVicyB0byByZXR1cm4gY29ycmVjdCBlcnJvci4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglLZWVwIFJFQURNRS5mciBpbiBzeW5jLgoKMjAwMy0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDAzMDQwOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFJFQURNRTogVXBkYXRlZCBVUkxzLgoKCSogZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWM4LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19idWZmZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX2NvbGxlY3Rpb24uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2RsaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfZG93bmxvYWQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BsdWdpbnMuYywgZGxscy9kbXVzaWMvZG11c2ljX3BvcnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BvcnRkbC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfc2VnbWVudC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfc3R5bGUuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3N5bnRoLmMsIGRsbHMvZG11c2ljL2RtdXNpY190aHJ1LmMsCgkgIGRsbHMvZG11c2ljL3JlZmVyZW5jZV9jbG9jay5jOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBhbGwgZG11c2ljIGludGVyZmFjZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUZpeGVkIHRhZ0xWRElTUElORk8gZGVmaW5pdGlvbi4KCgkqIHRvb2xzL3dpbmVtYWtlcjogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJRml4ZWQgZ2VuZXJhdGlvbiBvZiBtYWtlZmlsZXMgYW5kIHdyYXBwZXIgZmlsZXMgd2hlbiAiLS13cmFwIiBvcHRpb24KCWlzIHVzZWQuCgoJKiBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglPbmx5IGxvZyB0aGUgcGFyYW1ldGVycyBvZiB0YXBpR2V0TG9jYXRpb25JbmZvIGFzIGFkZHJlc3NlcywgYXMgb3V0cHV0CglwYXJhbWV0ZXJzIHRoZXkgcHJvYmFibHkgcG9pbnQgdG8gZ2FyYmFnZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29tcGFyZSB0aGUgdHdvIGl0ZW1zIGluIExJU1RCT1hfRmluZFN0cmluZ1BvcygpIGluIHRoZSBzYW1lIG9yZGVyIGFzCglpbiBXaW5kb3dzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBzb21lIG1vcmUgbmV3bHkgYXJyaXZlZCBkbGxzLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmV0dXJuIGNvcnJlY3Qgc2VnbWVudCBmb3IgVkVTQSBpbmZvcm1hdGlvbi4KCUNoZWNrIG9lbSBudW1iZXIvdmVyc2lvbiBmbGFnIGZpcnN0IGFuZCBhZnRlciB0aGF0IG92ZXJ3cml0ZSBjb25kaXRpb24KCWNvZGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCU1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglBZGQgc3R1YiBmb3IgSW52YWxpZGF0ZU5MU0NhY2hlLgoKCSogZmlsZXMvZHJpdmUuYzoKCU1ha2UgRFJJVkVfRmluZFJvb3RXIHJlYWxseSBiZWhhdmUgbGlrZSBEUklWRV9GaW5kUm9vdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvZG1iYW5kLnNwZWMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1jb21wb3MvLmN2c2lnbm9yZSwgZGxscy9kbWNvbXBvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvcy5zcGVjLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy92ZXJzaW9uLnJjLCBkbGxzL2RtaW1lLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sIGRsbHMvZG1pbWUvZG1pbWUuc3BlYywKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvdmVyc2lvbi5yYywKCSAgZGxscy9kbWxvYWRlci8uY3ZzaWdub3JlLCBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyLnNwZWMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLAoJICBkbGxzL2RtbG9hZGVyL3ZlcnNpb24ucmMsIGRsbHMvZG1zY3JpcHQvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXNjcmlwdC9NYWtlZmlsZS5pbiwgZGxscy9kbXNjcmlwdC9kbXNjcmlwdC5zcGVjLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC92ZXJzaW9uLnJjLAoJICBkbGxzL2Rtc3R5bGUvLmN2c2lnbm9yZSwgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZS5zcGVjLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsCgkgIGRsbHMvZG1zdHlsZS92ZXJzaW9uLnJjLCBkbGxzL2Rtc3ludGgvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXN5bnRoL01ha2VmaWxlLmluLCBkbGxzL2Rtc3ludGgvZG1zeW50aC5zcGVjLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtdXNpYzMyLy5jdnNpZ25vcmUsIGRsbHMvZG11c2ljMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG11c2ljMzIvZG11c2ljMzIuc3BlYywgZGxscy9kbXVzaWMzMi9kbXVzaWMzMl9tYWluLmMsCgkgIGRsbHMvZG11c2ljMzIvdmVyc2lvbi5yYywgZGxscy9kcG5ocGFzdC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbmhwYXN0L01ha2VmaWxlLmluLCBkbGxzL2RwbmhwYXN0L2RwbmhwYXN0LnNwZWMsCgkgIGRsbHMvZHBuaHBhc3QvbWFpbi5jLCBkbGxzL2RwbmhwYXN0L3ZlcnNpb24ucmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNmLmgsIGluY2x1ZGUvZG11c2ljaS5oLAoJICBpbmNsdWRlL2RtdXNpY3MuaCwgbGlicy91dWlkL2R4Z3VpZC5jOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBkcG5ocGFzdCBhbmQgZm9yIGFsbCB0aGUgZG11c2ljIGRsbHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEF2b2lkIHdhcm5pbmcuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglUZXN0cyBmb3IgUnRsVWxvbmdsb25nQnl0ZVN3YXAsIFJ0bFJhbmRvbSwgUnRsQXJlQWxsQWNjZXNzZXNHcmFudGVkLAoJUnRsQXJlQW55QWNjZXNzZXNHcmFudGVkLCBSdGxVbmljb2RlU3RyaW5nVG9BbnNpU3RyaW5nLAoJUnRsQXBwZW5kQXNjaWl6VG9TdHJpbmcsIFJ0bEFwcGVuZFN0cmluZ1RvU3RyaW5nLAoJUnRsQXBwZW5kVW5pY29kZVRvU3RyaW5nIGFuZCBSdGxBcHBlbmRVbmljb2RlU3RyaW5nVG9TdHJpbmcuCgoJKiBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglJbXBsZW1lbnRlZCBSdGxSYW5kb20sIFJ0bEFyZUFsbEFjY2Vzc2VzR3JhbnRlZCwKCVJ0bEFyZUFueUFjY2Vzc2VzR3JhbnRlZCwgUnRsQ29weUx1aWQsIFJ0bEVxdWFsTHVpZCwgUnRsTWFwR2VuZXJpY01hc2sKCWFuZCBSdGxDb3B5THVpZEFuZEF0dHJpYnV0ZXNBcnJheS4KCURvY3VtZW50YXRpb24gdXBkYXRlcyBmb3IgUnRsRXh0ZW5kZWRNYWdpY0RpdmlkZSwgUnRsVW5pZm9ybSwKCVJ0bFVuaWNvZGVTdHJpbmdUb0Fuc2lTdHJpbmcsIFJ0bEFwcGVuZEFzY2lpelRvU3RyaW5nLAoJUnRsQXBwZW5kU3RyaW5nVG9TdHJpbmcsIFJ0bEFwcGVuZFVuaWNvZGVUb1N0cmluZyBhbmQKCVJ0bEFwcGVuZFVuaWNvZGVTdHJpbmdUb1N0cmluZy4KCjIwMDMtMDQtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUZpeGVkIGVjdnQvZmN2dC9nY3Z0IGVudHJpZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBpbmNsdWRlL3Nub29wLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgcmVsYXkzMi9zbm9vcC5jOgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gZmlsdGVyIHJlbGF5IHRyYWNlcyBiYXNlZCBvbiB0aGUgbW9kdWxlIHRoYXQKCWNhbGxlZCB0aGUgZnVuY3Rpb24uIENsZWFuZWQgdXAgYSBmZXcgdHJhY2VzLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywKCSAgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jLCBncmFwaGljcy9wYWludGluZy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRlZCB0aGUgR1JBRElFTlRfRklMTF9SRUNUe0h8Vn0gY2FzZXMgb2YgR2RpR3JhZGllbnRGaWxsLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZ2xvc3Nhcnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDoKCVRvbSBIdWdoZXMgPHRoaEBjeWJlcnNjaWVuY2UuY29tPgoJRml4IGEgZmV3IGluY29ycmVjdCB0YWdzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaS5wbTogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNYWtlIHdpbmFwaV9jaGVjayBoYW5kbGUgc3BlYyBmaWxlcyB3aGVyZSBubyBoYW5kbGVyIGlzIHNwZWNpZmllZC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTeW5jIHdpbmFwaV9jaGVjayB0byBXaW5lIHNwZWMgZmlsZXMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnQgU0hMV0FQSV8yNjkgYW5kIFNITFdBUElfMjcwLgoJRml4IGEgMCByZWZlcmVuY2UgYnVnIGluIFNITFdBUElfNDM2IGFuZCBjaGFuZ2UgaXRzIHJldHVybiB2YWx1ZSB0bwoJd2hhdCBhdCBsZWFzdCBXMksgZG9lcyBhcyB3ZWxsLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogSmVycnkgSmVua2lucyA8SmVycnlfSl9KZW5raW5zQGhvdG1haWwuY29tPgoJQWxpZ24gZGF0YSB0byBwcm9wZXIgc2l6ZS4KCjIwMDMtMDQtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglSZXdyb3RlIG1vc3Qgb2YgdGhlIGltcG9ydCBmaXh1cCBjb2RlIHRvIGF2b2lkIGRvaW5nIHJlZHVuZGFudCB3b3JrCglmb3IgZXZlcnkgZW50cnkgcG9pbnQuIE1vdmVkIGl0IGFsbCB0byBkbGxzL250ZGxsL2xvYWRlci5jLgoJVmFyaW91cyBvcHRpbWl6YXRpb25zIGluIHRoZSBvdGhlciBsb2FkZXIgcm91dGluZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglGZXRjaCB0aGUgZXhlIG1vZHVsZSBkaXJlY3RseSBmcm9tIHRoZSBQREIgaW5zdGVhZCBvZiBjYWxsaW5nCglMZHJHZXREbGxIYW5kbGUuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBwcm9ibGVtIHdoZW4gbXVsdGlwbGUgZGV2aWNlcyBhcmUgcHJlc2VudCBhbmQgYSBkZXZpY2Ugb3RoZXIKCXRoYW4gdGhlIGZpcnN0IG9uZSBpcyB1c2VkLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmM6IEFsYmVydG8gTWFzc2FyaSA8YW1hc3NhcmlAcHJvZ3Jlc3MuY29tPgoJLSBUaGUgYmluZGNvbnRleHQgb2JqZWN0IHdhcyBsZWFraW5nIHN0cmluZ3MuCgktIFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIFJBUyBub3QgYmVpbmcgc3VwcG9ydGVkLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJV29yayBhcm91bmQgbm90IGltcGxlbWVudGVkIGlvY3RsIGluIEJTRC4KCjIwMDMtMDQtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IENsZWFuZWQgdXAgdGhlIG9wdGlvbiBtYXBwaW5nIGNvZGUgYSBiaXQuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLAoJICBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCBOdFF1ZXVlQXBjVGhyZWFkLCBhbmQgY2hhbmdlZCB0aGUgc2VydmVyIEFQQyBpbnRlcmZhY2UgdG8KCWFsd2F5cyB0YWtlIDMgcGFyYW1ldGVycy4KCUltcGxlbWVudGVkIGEgbnVtYmVyIG9mIG90aGVyIG50ZGxsIHRocmVhZCBmdW5jdGlvbnMsIGFuZCB1c2UgdGhlbQoJZnJvbSB0aGUga2VybmVsIG9uZXMuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jOiBXYXJuaW5nIGZpeGVzLgoKCSogTWFrZWZpbGUuaW4sIFJFQURNRSwgdG9vbHMvd2luZWNoZWNrOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU3RydWN0dXJlIFJFQURNRSBmaWxlIGluIGEgYmV0dGVyIHdheSwgc29tZSBkb2MgZml4ZXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglDb3JyZWN0IHRoZSBlcnJvciBjb2RlIHJldHVybmVkIHdoZW4gYSBmaWxlIGRvZXMgbm90IGV4aXN0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsCgkgIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dzMnRjcGlwLmg6CglNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCS0gTWFwIHdpbnNvY2sgc29ja29wdHMgdG8gdGhlIFBPU0lYIGVxdWl2YWxlbnRzIGZvciBJUCBtdWx0aWNhc3QuCgktIFJlbWFwIHdpbnNvY2sxIGNvbnN0YW50IHZhbHVlcyB0byB3aW5zb2NrMiB1c2luZyBhIGZvcndhcmRlcgoJICBmdW5jdGlvbi4KCS0gQ2hhbmdlIGEgRklYTUUgdG8gYSBUUkFDRSwgaXQgYXBwZWFyZWQgdG8gYmUgc2ltcGx5IHJlcG9ydGluZwoJICBwcm9ncmVzcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJTWVyZ2VkIFBFX0luaXRETEwgaW50byBNT0RVTEVfSW5pdERMTC4KCUZpeGVkIGEgZmV3IHRyYWNlcy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsCgkgIHdpbjMyL2V4Y2VwdC5jOgoJUmVtb3ZlIHRoZSBXaW5lLXNwZWNpZmljIEVYQ0VQVElPTl9DUklUSUNBTF9TRUNUSU9OX1dBSVQgZGVmaW5lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0ZC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydGQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0ZC9kZWJ1Zy5jLAoJICBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTVNWQ1JURC5ETEwgZGVidWdnaW5nIEMgcnVudGltZSBETEwuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglSZW1vdmVkIHRoZSBjb21tZW50ZWQgb3V0IHdpbnNvY2sgc3VwcG9ydCwgaXQgY2FuJ3Qgd29yayBhbnl3YXkuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCVlldCBhbm90aGVyIGhhY2sgdG8gdHJ5IHRvIG1ha2UgdGhpcyBmaWxlIGNvbXBpbGUgaW4gYWxsCgljaXJjdW1zdGFuY2VzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYSBmZXcgbWlzc2luZyBCTl8qIGNvbnN0YW50cy4KCjIwMDMtMDQtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzoKCUF2b2lkIHdhcm5pbmcgb24gcmVkZWZpbml0aW9uIG9mIEtFWV9FVkVOVC4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjYWxsIFdhaXRGb3IqT2JqZWN0KiBmcm9tIG50ZGxsIChidXQgTnRXYWl0Kk9iamVjdCopLgoKCSogZGxscy9kZHJhdy92ZXJzaW9uLnJjOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJVXBkYXRlIHZlcnNpb24gaW5mbyB0byA4LjEuCgoJKiBkbGxzL2QzZDgvLmN2c2lnbm9yZSwgZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvdmVyc2lvbi5yYywKCSAgZGxscy9kbXVzaWMvLmN2c2lnbm9yZSwgZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG11c2ljL3ZlcnNpb24ucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgdmVyc2lvbiBpbmZvLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG9uJ3Qgb3V0cHV0IHJlZ2lzdGVyIGZ1bmN0aW9uIGNvZGUgaWYgaXQncyBhIGZvcndhcmRlZCBlbnRyeSBwb2ludC4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgc29tZSBtaXNzaW5nIEhlYXBGcmVlJ3MgYW5kIG9uZSBtaXNzaW5nIGZyZWUuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVJlbW92ZSBib2d1cyBpbml0aWFsaXphdGlvbiBpbiBTZXRLZXlib2FyZFN0YXRlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHdpZGUgY2hhcmFjdGVyIGVudW1lcmF0aW9uIG9mIHNvdW5kIGRldmljZXMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYSBmZXcgbWlzc2luZyBEWDggZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJUGF1bCBNY05ldHQgPHBAdWxtY25ldHQuY29tPgoJU3R1YnMgZm9yIEJlZ2luVXBkYXRlUmVzb3VyY2VBKCksIEJlZ2luVXBkYXRlUmVzb3VyY2VXKCksCglFbmRVcGRhdGVSZXNvdXJjZUEoKSwgYW5kIEVuZFVwZGF0ZVJlc291cmNlVygpLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUFkZGVkIGhhY2sgdG8gcGF0Y2ggdGhlIGdsaWJjIGVycm5vX2xvY2F0aW9uIHRvIGp1bXAgdG8gb3VyIGZ1bmN0aW9uLAoJYmFzZWQgb24gYSBwYXRjaCBieSBNYXJjdXMgTWVpc3NuZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgbGlicy93aW5lL2Vycm5vLmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglBZGRlZCAtLXdpdGgtbnB0bCBjb25maWd1cmUgb3B0aW9uIGFuZCBuZWNlc3NhcnkgY2hhbmdlcyB0byBzdXBwb3J0CglydW5uaW5nIG9uIHRvcCBvZiBOUFRMIHRocmVhZHMuCgoyMDAzLTA0LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHNjaGVkdWxlci9zeXNkZXBzLmM6CglEb24ndCBib3RoZXIgY2hlY2tpbmcgZm9yIHRoZSBlcnJubyBmdW5jdGlvbiwgc2ltcGx5IGRlZmluZSBhbGwgb2YKCXRoZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IGJ1ZmZlciBvdmVyZmxvdyBpbiBkYXRldGltZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCVplcm8gaW5pdGlhbGl6ZSB0aGUgcmVzZXJ2ZWQgYnl0ZXMgaW4gdGhlIHRvb2xiYXIgZGV0YWlscyByZXR1cm5lZCBieQoJVE9PTEJBUl9HZXRCdXR0b24oKS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IEltYWdlTGlzdF9SZWFkIC0gdGhlIHJvb3QgY2F1c2Ugb2YgdWdseSB0b29sYmFyIGljb25zLgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvdGltZXIuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCBhYnNfdGltZV90IHN0cnVjdHVyZSB0byB0aGUgc2VydmVyIHByb3RvY29sLCBhbmQgYWRkZWQgYSBkdW1wCglyb3V0aW5lIGZvciBpdCB0aGF0IGRpc3BsYXlzIHRoZSByZWxhdGl2ZSB0aW1lb3V0IHRvIG1ha2UgdGltZW91dAoJdmFsdWVzIGVhc2llciB0byBpbnRlcnByZXQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1vcmUgaW5mb3JtYXRpb24gdG8gc29tZSBvZiB0aGUgZmFpbHVyZSBtZXNzYWdlcy4KCUZpeGVkIGEgYnVnIHdoZXJlIGdhcmJhZ2UgZGF0YSBpcyBwcmludGVkIG91dCBmb3IgdGhlIDIgTUh6IHRlc3RzLgoKCSogdG9vbHMvd2luZWdjYy5jLCB0b29scy93aW5ld3JhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgdXNlIG9mIHRoZSBuZXcgc3Bhd252cCBmdW5jdGlvbiBpbiB3aW5le2djYyx3cmFwfS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZW50cnkgZm9yIERpcmVjdFNvdW5kRnVsbER1cGxleENyZWF0ZS4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IER1bXAgc3RyaW5nIHJlc291cmNlcyBpbiBhIG1vcmUgcmVhZGFibGUgd2F5LgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvc3Bhd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAaW50ZWxsaXdhcmUuY2E+CglBZGQgc3Bhd252cCB0byB0aGUgcG9ydGFiaWxpdHkgbGliLgoKCSogc2VydmVyL3NpZ25hbC5jOgoJSW5pdGlhbGl6ZSB0aGUgZHVtbXkgY2hhciB3ZSBzZW5kIGRvd24gdGhlIHBpcGUgdG8gbWFrZSB2YWxncmluZAoJaGFwcHkuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluOgoJTWFrZSBzdXJlIHdlIGRvbid0IHVzZSBsaWJ3aW5lX3BvcnQgZnVuY3Rpb25zIHdoZW4gbGlua2luZyB3aXRoCgltc3ZjcnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9oZWFwLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglBZGRlZCBzdXBwb3J0IGZvciBtYXJraW5nIGhlYXAgYmxvY2tzIGFzIGluYWNjZXNzaWJsZS91bmluaXRpYWxpemVkIGlmCgl2YWxncmluZCBpcyBpbnN0YWxsZWQsIGJhc2VkIG9uIGEgcGF0Y2ggYnkgQWRhbSBHdW5keS4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGluY2x1ZGUvd2luc29jay5oOgoJSGFuZGxlIGh0b25sKCkgYW5kIGZyaWVuZHMgbGlrZSBzZWxlY3QoKSwgdGhpcyB3aWxsIGhvcGVmdWxseSBhdm9pZAoJY29uZmxpY3RzIHdpdGggVW5peCBoZWFkZXJzLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9udGRsbC9ydGxiaXRtYXAuYywgZGxscy9zZXR1cGFwaS9kaXJpZC5jLCBkbGxzL3NoZG9jdncvZXZlbnRzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9nbG9iYWwuYywKCSAgdG9vbHMvd2luZWNvbmY6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTb21lIHNwZWxsaW5nIGFuZCBmb3JtYXR0aW5nIGZpeGVzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFIgdHlwZXMgaW4gc3RhYnMgcGFyc2luZy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBGb3JtYXRDb2RlIGVudHJpZXMuCgoyMDAzLTA0LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggdGVzdCB0byBzdWNjZWVkIGluIFdpbiA5OC8ySyBhbmQgbW9zdCBwcm9iYWJseSBNRS9YUCBhcyB3ZWxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdGhyZWFkLmgsCgkgIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUFkZGVkIFNZU0RFUFNfR2V0VW5peFRpZCB0byByZXR1cm4gdGhlIFVuaXggdGhyZWFkIGlkIHRvIHNlbmQgdG8gdGhlCglzZXJ2ZXIuCgoJKiBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglNb3ZlZCBwcm90b3R5cGUgZm9yIFNIQmluZFRvUGFyZW50KCkgdG8gc2hsb2JqLmguCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2xvc3Nhcnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBuZXcsIG11Y2ggbW9yZSBkZXRhaWxlZCBhbmQgZWFzaWVyICJzdGVwLWJ5LXN0ZXAiIGxheW91dAoJLSBiZXR0ZXIgaW50cm8KCS0gYWRkIEdsb3NzYXJ5IChnbG9zc2FyeS5zZ21sKQoJLSBtdWNoIGJldHRlciBHZXR0aW5nIFdpbmUgY2hhcHRlcgoJLSBtdWNoIGJldHRlciBXaW5lIGNvbmZpZ3VyYXRpb24gY2hhcHRlcgoJLSBiZXR0ZXIgV2luZSBkcml2ZSBsYXllciBjb25maWd1cmF0aW9uIHNlY3Rpb24KCS0gZXhwbGFpbiB3aW5lc2VydmVyIGNtZGxpbmUgb3B0aW9ucwoJLSByZWFycmFuZ2VkIHRvbnMgb2YgdGhpbmdzIGludG8gYSBsZXNzIG1lc3N5IHN0YXRlCgktIHRvbnMgb2YgamFuaXRvcmlhbCBmaXhlcwoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvd2luZWRvcy9pbnQxYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsCgkgIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwgcHJvZ3JhbXMvd2luZWRiZy9kYmcueToKCVBvcnRhYmlsaXR5IGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmVnY2MuYywKCSAgdG9vbHMvd2luZXdyYXAuYzoKCVVzZSBfc3Bhd252cCB0byByZXBsYWNlIGZvcmsgZm9yIG5vbi1Vbml4IHBsYXRmb3Jtcy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBzdGRjYWxsIGRsbCBlbnRyeSBwb2ludC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJUmVtb3ZlZCB1c2VzIG9mIHVfbG9uZy4gVXNlIHZvaWQqIHR5cGUgZm9yIHBvaW50ZXJzIHdoZXJlIHBvc3NpYmxlLgoKMjAwMy0wMy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luaW5ldC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUZpeCBzb21lIHByb2JsZW1zIGZvdW5kIHdoaWxlIGNvbXBpbGluZyBhbmQgbGlua2luZyBXaW5lIHVuZGVyCglDeWd3aW4uCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCVRyeSB0byBtYWtlIHdpbnNvY2suaCBtb3JlIHBvcnRhYmxlIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEZyYW5jb2lzCglHb3VnZXQpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTmV3IHdpbmVjZmcgc2tlbGV0b24gYXBwLCBiYXNlZCBoZWF2aWx5IG9uIG9yaWdpbmFsIHdvcmsgYnkgSmFjbwoJR3JlZWZmLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgdG9vbHMvd2luZWNoZWNrLCB3aW5lZGVmYXVsdC5yZWc6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCVVzZSByZWdlZGl0IGluc3RlYWQgb2YgcmVnYXBpLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglUcmFjZSBmb3JtYXQgZml4LgoKCSogZGxscy9udGRsbC9zeW5jLmM6IEFkZGVkIG1pc3NpbmcgTk9OQU1FTEVTU1NUUlVDVC9VTklPTi4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aW1lci5jOgoJTW92ZWQgV2FpdEZvck11bHRpcGxlT2JqZWN0cyB0byBudGRsbCAoYmFzZWQgb24gYSBwYXRjaCBieSBFcmljCglQb3VlY2gpLgoJQWRkZWQgTlRETExfZ2V0X3NlcnZlcl90aW1lb3V0IGZ1bmN0aW9uIHRvIGNvbXB1dGUgbnRkbGwtc3R5bGUKCXRpbWVvdXRzIGFuZCBhZGFwdGVkIHRoZSB0aW1lciBjb2RlIHRvIHVzZSBpdC4KCgkqIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJLSBzL2N2cyAtUEFkIHVwZGF0ZS9jdnMgdXBkYXRlIC1QQWQvLgoJLSBGaXggdGhlIE9kaW4gbGluay4KCS0gQWRkIGEgbGluayB0byBCZVdpbmUuCgktIFNtYWxsIHR5cG8gZml4ZXMgYW5kIHJlcGhyYXNpbmcuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglGcmFtZXdvcmsgZm9yIHRoZSBkb3BwbGVyIGVmZmVjdC4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJKHNvcnRhKSBpbXBsZW1lbnRlZCBFbnVtUG9ydHMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IHJhbmRvbSBzZWdmYXVsdHMgaW4gWDExRFJWX1NldEltYWdlQml0c18xLgoKMjAwMy0wMy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglVc2UgdGhlIHJpZ2h0IGJ1ZmZlciBzaXplIGluIFNZU1BBUkFNU19Mb2FkIGluc3RlYWQgb2Ygc29tZSByYW5kb20KCXZhbHVlLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglDbGVhciB0aGUgZW50aXJlIHJlcXVlc3QsIG5vdCBqdXN0IHRoZSBlbmQsIGluIGNhc2UgaXQgY29udGFpbnMKCXBhZGRpbmcgYnl0ZXMuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUZpeGVkIHJlZ3Jlc3Npb24gaW4gVkVSU0lPTl9HZXRMaW5rZWREbGxWZXJzaW9uKCkgaW50cm9kdWNlZCBieQoJcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCU1TVkNSVF9mY2xvc2UoKSBtdXN0bid0IHVzZSB0aGUgX2ZsYWcgZmllbGQgZnJvbSB0aGUgZmlsZSBzdHJ1Y3R1cmUKCWFmdGVyIF9jbG9zZSgpIGhhcyBiZWVuIGNhbGxlZC4KCVdoZW4gX29wZW5fb3NmaGFuZGxlKCkgaXMgdXNlZCBieSBNRkMncyBDU3RkaW9GaWxlLCBpdCBleHBlY3RzIHdyaXRlCglhY2Nlc3MgZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBzZXQgdGhlIG5lY2Vzc2FyeSBmbGFnIGJpdC4KCgkqIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglVbmljb2RlIHN0cmluZ3MgdGVybWluYXRpb24gZml4ZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGEgcmVncmVzc2lvbiB3aGVuIGxvYWRpbmcgYSByZWFsIHdpbmRvd3MgcmVnaXN0cnkuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgaW5jbHVkZS93aW5iYXNlLmgsIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgcHJvdG90eXBlIGZvciBHZXRDb21wcmVzc2VkRmlsZVNpemUuIE1vdmUgc29tZSBpbnQyMSBmdW5jdGlvbnMgdG8KCXdpbmVkb3MuIEltcHJvdmUgZmlsZSBhdHRyaWJ1dGUgZnVuY3Rpb25zLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglEb24ndCBsb29rIGF0IHRoZSBzZWNvbmQgY2hhcmFjdGVyIG9mIHRoZSBwYXRoIHVubGVzcyB0aGUgZmlyc3QKCWNoYXJhY3RlciBpcyBub24tTlVMLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglEb24ndCBjb252ZXJ0IHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgdGhlIGZpbGVuYW1lIGZyb20gd2lkZSB0bwoJbXVsdGlieXRlLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJTWFrZSBzdXJlIHRoZSBuZXcgYXJyYXkgb2YgcHJpbnRlciBwb2ludGVycyBpcyBOVUxMIGluaXRpYWxpemVkLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCURvbid0IHJlYWQgdW5pbml0aWFsaXplZCBkYXRhIHdoZW4gYSAnJCcgaXMgZm91bmQuCgoJKiBsaWJzL3dpbmUvbGR0LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJTWFrZSBzdXJlIGFsbCB0aGUgYml0cyBvZiB0aGUgTERUIGFyZSBpbml0aWFsaXplZC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJSW5pdGlhbGl6ZSBscExvZ0ZvbnQtPmxmUXVhbGl0eSB0byB0aGUgZGVmYXVsdC4KCjIwMDMtMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglBZGQgaW5mbyBvbiBob3cgdG8gdXNlIHRoZSBXaW5lIHVuaW5zdGFsbGVyLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL2RpYWxvZzE2LmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3duZDE2LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglNb3ZlZCAxNi1iaXQgZGlhbG9nIHJvdXRpbmVzIHRvIGEgc2VwYXJhdGUgZGlhbG9nMTYuYyBmaWxlLgoJRml4ZWQgd2luZG93IGNyZWF0aW9uIHRvIGNyZWF0ZSBBU0NJSSB3aW5kb3dzIHdoZW4gY2FsbGVkIHRocm91Z2ggb25lCglvZiB0aGUgQVNDSUkgZGlhbG9nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogQXZvaWQgY3Jhc2ggaWYgc25kX3BjbV9vcGVuIGZhaWxzLgoKCSogZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZTMyL3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIG9sZTMyLmRsbCwgYW5kCglhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwKCSAgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBubyBsb25nZXIgbmVlZGVkIC1tIG9wdGlvbiwgaWdub3JlIC1yIGZvciBjb21wYXRpYmlsaXR5Cgl3aXRoIHJjLgoJUmVuYW1lIC1CIHRvIC0tZW5kaWFuZXNzLCAtZCB0byAtLWRlYnVnLCAtVyB0byAtLXBlZGFudGljLgoJQWRkIGEgbmV3IC1VLC0tdW5kZWZpbmUgb3B0aW9uIHRvIHVuZGVmaW5lZCBwcmVwcm9jZXNzb3Igc3ltYm9scy4KCUNsZWFudXAgdGhlIGhlbHAgbWVzc2FnZSAob3JkZXIgdGhlIGxvbmcgb3B0aW9ucyBhbHBoYWJldGljYWxseSkuCgoJKiBpbmNsdWRlL21zdmNydC9lcnJuby5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGVycm5vIGxpbmthZ2Ugd2hlbiBjb21waWxpbmcgaW4gQysrLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBbGJlcnRvIE1hc3NhcmkgPGFtYXNzYXJpQHByb2dyZXNzLmNvbT4KCUFkZGVkIEludGVybmV0U2V0U3RhdHVzQ2FsbGJhY2tBIGFuZCBhIHN0dWIgZm9yCglJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrVy4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZHJpdmUuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2lnbmFsLmM6CglSZXBsYWNlZCBXSU5FX0NIRUNLX1NUUlVDVF9NRU1CRVIgYXV0b2NvbmYgbWFjcm8gYnkgdGhlIHN0YW5kYXJkCglBQ19DSEVDS19NRU1CRVJTLiBBZGRlZCBjaGVjayBmb3Igc2lfZmQgaW4gc2lnaW5mb190LgoKCSogbGlicy93aW5lL2xvYWRlci5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJc3RkaW50Lmggc2hvdWxkIGJlIGluY2x1ZGVkIGZvciBjb21waWxpbmcgb24gTmV0QlNELgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJQWRkZWQgZmllbGRzIGZyb20gTmV0QlNEIHN0cnVjdCBzaWdjb250ZXh0IG9uIGkzODYuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglBZGRlZCB0aGUgc3lzY3RsIGNhbGxzIGZvciBOZXRCU0QgdG8gZGV0ZXJtaW5lIHRoZSBwaHlzaWNhbCBtZW1vcnkKCWF2YWlsYWJsZS4KCgkqIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmLCBsaWJzL3dpbmUvd2luZS5kZWY6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXhlZCB0aGUgLmRlZiBmaWxlcyBmb3IgdGhlIE1pbmd3IGJ1aWxkLgoKMjAwMy0wMy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dwcC9wcmVwcm9jLmMsIHRvb2xzL3dwcC93cHAuYywgdG9vbHMvd3BwL3dwcC5oLAoJICB0b29scy93cHAvd3BwX3ByaXZhdGUuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbGxvdyB3cHAgdXNlcnMgdG8gdW5kZWZpbmUgcHJldmlvdXNseSBkZWZpbmVkIHN5bWJvbHMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93cmMvd3JjLmMsCgkgIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHVudXNlZCBvcHRpb25zIC1hIGFuZCAtQy4KCUNvbGxhcHNlIHRoZSAtdyBpbnRvIC1PLCBmb3Igc3ltbWV0cnkgd2l0aCAtSi4KCVVwZGF0ZSB0aGUgbWFuIHBhZ2UgdG8gdGhlIGxhdGVzdCBvcHRpb25zLgoKCSogdG9vbHMvd2luZW1ha2VyOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IHBhc3MgdW5uZWNlc3NhcnkgZmxhZ3MgdG8gd3JjIGluIGdlbmVyYXRlZCBtYWtlZmlsZXMuCgoJKiBkbGxzL21zdmNydC9kaXIuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+Cglfd3NwbGl0cGF0aDogRGlzcGxheSBjb3JyZWN0bHkgdGhlIHBhdGggYmVpbmcgc3BsaXQuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnRlZCBTSExXQVBJXzI2NiBhbmQgU0hMV0FQSV8yNzEuCgoJKiBvYmplY3RzL2RjLmM6IFAuIENocmlzdGVhcyA8cF9jaHJpc3RAaG9sLmdyPgoJRml4ZWQgdHlwbyBpbiBTZXRHcmFwaGljc01vZGUuCgoJKiBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYzogUC4gQ2hyaXN0ZWFzIDxwX2NocmlzdEBob2wuZ3I+CglJbXBsZW1lbnRlZCBNYWtlU3VyZURpcmVjdG9yeVBhdGhFeGlzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJVHJlZVZpZXcgc2hvdWxkIG5vdCBzZW5kIHR3byBjbGljayBub3RpZmljYXRpb25zIHdoZW4gYlRyYWNrIGlzIHRydWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ29zbWV0aWMgZml4ZXMuCgoyMDAzLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudGVkIENoZWNrRXNjYXBlc0EvVy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jaGFuZ2UuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZmlsZXMvY2hhbmdlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc2lnbmFsLmMsIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgZmlsZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucywgYmFzZWQgb24gYSBwYXRjaCBieSBNaWtlCglNY0Nvcm1hY2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCB0aGUgbG9va2luIGNvbWJvYm94IG92ZXJsYXBwaW5nIHRoZSB0b29sYmFyIGluIG9wZW4vc2F2ZSBmaWxlCglkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJVFJFRVZJRVdfR2V0SXRlbUEgc2hvdWxkIGlnbm9yZSBzdGF0ZU1hc2suCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBuZXcgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHJlbGF0aXZlIGZpbGUgb3IgZm9sZGVyIEl0ZW1JRExpc3QKCWZvciBhIHBhdGggYW5kIGNoYW5nZSB1c2FnZSBvZiBTSFNpbXBsZUlETGlzdEZyb21QYXRoIHRvIGNhbGwgbmV3CglmdW5jdGlvbiBpbnN0ZWFkLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgbGlicy93aW5lL2Vycm5vLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIGVycm5vX2xvY2F0aW9uIHN1cHBvcnQgdG8gc3lzZGVwcy5jLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZmQuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zaWduYWwuYywgc2VydmVyL3RocmVhZC5oOgoJQWRkZWQgZ2VuZXJpYyBzaWduYWwgaGFuZGxpbmcgbWVjaGFuaXNtIGJhc2VkIG9uIHBpcGVzIHRvIHN5bmNocm9uaXplCglzaWduYWxzIHdpdGggdGhlIG1haW4gcG9sbCBsb29wLgoKCSogaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJVXNlIGFsaWFzZXMgaW5zdGVhZCBvZiAjZGVmaW5lcyBmb3IgdGhlIHZhcmFyZ3MgZnVuY3Rpb25zIHdoZW4gdXNpbmcKCWdjYy4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbW9kdWxlLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsCgkgIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG5vIGxvbmdlciB1c2luZyBrZXJuZWwzMidzIEFQSXMgYnV0IG50ZGxsJ3MKCS0gQlVJTFRJTjMyX2Rsb3BlbiBub3cgcHJvcGVybHkgcmV0dXJucyBOVERMTCBzdHlsZSBzdGF0dXMgY29kZXMKCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IFN0ZXBoYW4gQkVVWkUgPGZiaWdndW5AaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBhIGRlZmF1bHQgYmVoYXZpb3IgZm9yIFNQSV9HRVRHUkFESUVOVENBUFRJT05TIGZsYWcgaW4KCVN5c3RlbVBhcmFtZXRlcnNJbmZvQS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBpbmNsdWRlL3dpbm5scy5oOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglTdHVicyBmb3IgRW51bVN5c3RlbUxhbmd1YWdlR3JvdXBze0F8V30uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQ29ycmVjdCB0aGUgY2hlY2sgZm9yIGNoYW5nZWQgdHJlZXZpZXcgaXRlbXMsIHNvIGl0ZW0gc2V0cyByZXBhaW50Cglwcm9wZXJseS4KCjIwMDMtMDMtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJU3RvcmUgJWdzIGluIHRoZSBURUIgb24gZXZlcnkgY2FsbCB0byAxNi1iaXQgY29kZSwgYW5kIGRvbid0IHJlc3RvcmUKCWl0IGZyb20gdGhlIFRFQiBmb3Igc2lnbmFscyB0aGF0IGRpZCBub3QgaGFwcGVuIGluIDE2LWJpdCBjb2RlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggaG93IHRoZSBzaXplIG9mIHRoZSBkaWFsb2cgaXMgY29tcHV0ZWQgYW5kIHRoZSBjaGlsZCBjb21wb25lbnQKCXBsYWNlZC4KCUluIGNhc2UgdGhlIGhlbHAgYnV0dG9uIGFuZCB0aGUgcmVhZG9ubHkgY2hlY2sgYm94IGFyZSBoaWRkZW4sIHBlcmZvcm0KCXRoZSByZXNpemluZyBiZWZvcmUgY2FsbGluZyB0aGUgaG9vayBwcm9jZWR1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJTGV0IHdjbWQgaGFuZGxlIC5jbWQgZmlsZXMgbGlrZSAuYmF0IGZpbGVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBrZXJuZWwzMidzIEFQSXMgYnV0IG50ZGxsJ3MuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgdHJhaWxpbmcgZnVsbC1zdG9wIHRvIHdhcm5pbmcgaW4gRElSX0dldFBhdGgoKS4KCjIwMDMtMDMtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglBdm9pZCByZWZlcmVuY2UgdG8gd2luZV9nZXRfY3MgZnVuY3Rpb24gZnJvbSBsaWJ3aW5lLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglSZXZlcnQgYnJva2VuIGNoYW5nZSB0byB0aGUgc2Nyb2xsYmFyIHBvc2l0aW9uIGFkanVzdG1lbnQgY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBtaXNjZW11L01ha2VmaWxlLmluOgoJSWYgc3VwcG9ydGVkLCByZWxvY2F0ZSB0aGUgbWFpbiB3aW5lIGJpbmFyeSB0byBhIGhpZ2hlciBhZGRyZXNzIHRvCglsZWF2ZSBtb3JlIHNwYWNlIGZvciB0aGUgV2luMzIgZXhlY3V0YWJsZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCU1ha2Ugc3VyZSBjaGFuZ2VzIHRvIHRoZSBkZWJ1ZyByZWdpc3RlcnMgd2hpbGUgaW5zaWRlIGEgU0lHVFJBUAoJZXhjZXB0aW9uIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQWxleCBQYXNhZHluKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBCcmlhbiBWaW5jZW50IDxWaW5jZW50QkBjb3BwZXJjb2xvcmFkby5jb20+CglQcm9tcHQgdGhlIHVzZXIgYWdhaW4gaWYgdGhleSBkb24ndCBnZXQgdGhlIHJvb3QgcGFzc3dvcmQgcmlnaHQuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEb24ndCBhdHRlbXB0IHRvIGNvbXBpbGUgLnJlcyBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNlbmQgTFZOX09EQ0FDSEVISU5UIG5vdGlmaWNhdGlvbiBmb3IgTFZTX09XTkVSREFUQSBzdHlsZSBpbiBhbGwgbW9kZXMKCShiYXNlZCBvbiBhIHBhdGNoIGJ5IFZpdGFsaXkgTWFyZ29sZW4pLgoKCSogZGxscy9pbW0zMi9pbW0uYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUdldCByaWQgb2YgVy0+QSBjYWxscy4KCgkqIG9iamVjdHMvdGV4dC5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzaGVtZXNoLmJpej4KCVJlb3JkZXJpbmcgY2FuIHRha2UgcGxhY2UgZXZlbiBpZiB0aGUgZm9udCBkb2VzIG5vdCBpZGVudGlmeSBpdHNlbGYgYXMKCWEgcmVvcmRlcmluZyBvbmUuCgoyMDAzLTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnMvcG9ydC9ta3N0ZW1wcy5jLAoJICBsaWJzL3BvcnQvdXNsZWVwLmMsIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbjoKCVBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCVByb3Blcmx5IGluaXRpYWxpemUga2V5Ym9hcmQgYXV0by1yZXBlYXQgZm9yIGFsbCBYIGNvbm5lY3Rpb25zLgoKCSogaW5jbHVkZS9ycGNwcm94eS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tbWVudCBvdXQgdW5uZWVkZWQgZXh0ZW5zaW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglTSEluaXRSZXN0cmljdGVkKCkgZml4IGJvb2xlYW4gZXJyb3IgaW50cm9kdWNlZCBpbiBsYXN0IHBhdGNoLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldFByaXZhdGVQcm9maWxlSW50IGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jdGwzZC9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2ludGFiMzIvTWFrZWZpbGUuaW4sCgkgIG1pc2NlbXUvTWFrZWZpbGUuaW46CglMaXN0IDE2LWJpdCBzcGVjIGZpbGVzIGV4cGxpY2l0bHkgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBzb21lIHZlcnNpb25zCglvZiBtYWtlLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglDb252ZXJ0ZWQgd2luZWJ1aWxkIG9wdGlvbiBwYXJzaW5nIHRvIHVzZSBnZXRvcHRfbG9uZy4gQWRkZWQgYSBudW1iZXIKCW9mIGxvbmcgYWxpYXNlcyBmb3IgdGhlIGV4aXN0aW5nIHNob3J0IG9wdGlvbnMuCgoJKiBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS93aW5lLmRlZjoKCUFkZGVkIGEgLmRlZiBmaWxlIGZvciBsaWJ3aW5lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1ha2UgdXNlIG9mIC5oYWxmIGFuZC9vciAuYXNjaWl6IGFzc2VtYmxlciBrZXl3b3JkcyB3aGVuIG5lY2Vzc2FyeS4KCjIwMDMtMDMtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21zdmNydC9jb25pby5oLCBpbmNsdWRlL21zdmNydC9jdHlwZS5oLAoJICBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL21zdmNydC9zdHJpbmcuaDoKCU1hZGh1cmEgU2FoYXNyYWJ1ZGhlIDxzYWhhc3JhYkB1c2MuZWR1PgoJQ2hhbmdlZCB0aGUgbWFjcm9zIGluIHRoZSBtc3ZjcnQgaGVhZGVycyB0byBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCUNoYW5nZWQgdGhlIFNFVF9BWCBldGMuIG1hY3JvcyB0byBub3QgcmV0dXJuIGEgdmFsdWUuCgoJKiBtc2Rvcy9pbnQyMS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggdHdvIGNvbXBhcmlzb25zIGJldHdlZW4gYSAzMiBiaXQgcmVnaXN0ZXIgd2l0aCBhIDE2IGJpdCBlcnJvcgoJY29kZS4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYywKCSAgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3B0cmFjZS5jLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglNYWtlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgdGhyZWFkIFVuaXggcGlkIGFuZCB0aGUgcHJvY2VzcyB3aWRlCglwaWQgZm9yIHBsYXRmb3JtcyB0aGF0IHVzZSBib3RoLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUZpeGVkIGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbiBvZiBzb21lIG9mIHRoZSB3bS0+bGRyIGZpZWxkcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2NoZWNrbGluay5jLCBsaWJzL01ha2VmaWxlLmluLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvdXVpZC9NYWtlZmlsZS5pbiwKCSAgbGlicy93aW5lLy5jdnNpZ25vcmUsIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL2NvbmZpZy5jLAoJICBsaWJzL3dpbmUvZGVidWcuYywgbGlicy93aW5lL2Vycm5vLmMsIGxpYnMvd2luZS9sZHQuYywKCSAgbGlicy93aW5lL2xvYWRlci5jLCB0b29scy93aW5ld3JhcHBlcjoKCU1vdmVkIGxpYndpbmUgdG8gbGlicy8gZGlyZWN0b3J5LgoJU29tZSBtYWtlZmlsZSBmaXhlcyBhbmQgY2xlYW51cHMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvbGNmb3JtYXQuYywgb2xlL29sZTJubHMuYzoKCU1vdmVkIGRhdGUvdGltZS9jdXJyZW5jeSBmb3JtYXQgaGFuZGxpbmcgdG8gbmV3IGxjZm9ybWF0LmMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCVRlc3RzIGZvciBSdGxDb21wYXJlTWVtb3J5VWxvbmcsIFJ0bFVuaWZvcm0sIFJ0bERvd25jYXNlVW5pY29kZVN0cmluZywKCVJ0bEFwcGVuZFVuaWNvZGVTdHJpbmdUb1N0cmluZy4KCgkqIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCS0gSW1wbGVtZW50IFJ0bERvd25jYXNlVW5pY29kZVN0cmluZywgUnRsVW5pZm9ybSwgaXN3ZGlnaXQsIGlzd2xvd2VyLAoJICBpc3dzcGFjZSwgaXN3eGRpZ2l0LgoJLSBGaXhlZCBSdGxJbnQ2NFRvVW5pY29kZVN0cmluZyBhbmQgUnRsSW50ZWdlclRvVW5pY29kZVN0cmluZy4KCS0gQWNjb3JkaW5nIHRvIHRlc3RzIFJ0bEFwcGVuZFVuaWNvZGVTdHJpbmdUb1N0cmluZyBsZWF2ZXMgdGhlCgkgIGRlc3RpbmF0aW9uIHVuY2hhbmdlZCB3aGVuIHRoZSBzb3VyY2UgbGVuZ3RoIGlzIDAgKEZJWEVEKS4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzIGluIFJ0bEV4dGVuZGVkTWFnaWNEaXZpZGUsCgkgIFJ0bExhcmdlSW50ZWdlclRvQ2hhciwgUnRsSW50NjRUb1VuaWNvZGVTdHJpbmcsIFJ0bFVwcGVyQ2hhciwKCSAgUnRsVXBwZXJTdHJpbmcsIFJ0bFVwY2FzZVVuaWNvZGVDaGFyLCBSdGxDaGFyVG9JbnRlZ2VyLAoJICBSdGxJbnRlZ2VyVG9DaGFyLCBSdGxVbmljb2RlU3RyaW5nVG9JbnRlZ2VyLAoJICBSdGxJbnRlZ2VyVG9Vbmljb2RlU3RyaW5nLCBfdWx0b2EsIF9sdG9hLCBfaXRvYSwgX3VpNjR0b2EsIF9pNjR0b2EsCgkgIF9hdG9pNjQsIF91bHRvdywgX2x0b3csIF9pdG93LCBfdWk2NHRvdywgX2k2NHRvdywgX3d0b2wsIF93dG9pLAoJICBfd3RvaTY0LgoKMjAwMy0wMy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJU3BsaXQgc2lnbmFsIGJsb2NraW5nIGNvZGUgb3V0IG9mIFNJR05BTF9SZXNldCBpbnRvIFNJR05BTF9CbG9jay4KCUFkZGVkIFNJR1RFUk0gaGFuZGxlci4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglzaGVsbC5jIGlzIG5vdyAxNi1iaXQgb25seS4KCgkqIHNlcnZlci9mZC5jOgoJSWdub3JlIGZjbnRsIGZhaWx1cmUgd2hlbiBzZXR0aW5nIGEgd3JpdGUgbG9jayBvbiBhIHJlYWQgb25seSBmaWxlLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbGlicy91bmljb2RlL2Nhc2VtYXAuYywKCSAgbGlicy91bmljb2RlL2NwbWFwLnBsLCBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jLCBsaWJzL3VuaWNvZGUvbWJ0b3djLmMsCgkgIGxpYnMvdW5pY29kZS91dGY4LmMsIGxpYnMvdW5pY29kZS93Y3RvbWIuYywgbGlicy91bmljb2RlL3djdHlwZS5jLAoJICBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZiwgbWVtb3J5L2NvZGVwYWdlLmMsIHRvb2xzL3dtYy9sYW5nLmMsCgkgIHRvb2xzL3dtYy9tY2wuYywgdG9vbHMvd21jL3dyaXRlLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwKCSAgdG9vbHMvd3JjL3V0aWxzLmM6CglBZGRlZCAnd2luZScgcHJlZml4IHRvIGxpYndpbmVfdW5pY29kZSBleHBvcnRzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9wZV9pbWFnZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgTU9EUkVGLmZpbmRfZXhwb3J0IGZpZWxkLgoKCSogZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCS0gQWRkIG5ldyBXMksgcG9saWNpZXMgdG8gdGhlIGtub3duIGxpc3Qgb2YgcG9saWNpZXMuCgktIE1vZGlmeSB0aGUgYWxnb3JpdGhtZSB0byBnbyB0aHJvdWdoIHRoZSBsaXN0IHVudGlsIGEgTlVMTCBlbnRyeSBpcwoJICBmb3VuZCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlIG51bWJlciBvZiBlbGVtZW50cyAoSSB3YXMgdG8gbGF6eSB0bwoJICBjb3VudCB0aGVtIGFnYWluIDstKQoJLSBGaXggU0hJbml0UmVzdHJpY3RlZCB0byB3b3JrIGFzIFVuaWNvZGUgb24gTlQgc3lzdGVtcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IHNvbWUgbW9yZSBXaW4gQVBJIGZ1bmN0aW9ucyBhbmQgYWRkIHN1cHBvcnQgZnVuY3Rpb25zIGZvcgoJY29taW5nIGNoYW5nZXMgdG8gU0hGaWxlT3BlcmF0aW9uLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGxpYnMvTWFrZWZpbGUuaW4sIGxpYnMvdW5pY29kZS8uY3ZzaWdub3JlLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvdW5pY29kZS9jXzAzNy5jLCBsaWJzL3VuaWNvZGUvY18wNDIuYywKCSAgbGlicy91bmljb2RlL2NfMTAwMDAuYywgbGlicy91bmljb2RlL2NfMTAwMDYuYywKCSAgbGlicy91bmljb2RlL2NfMTAwMDcuYywgbGlicy91bmljb2RlL2NfMTAwMjkuYywKCSAgbGlicy91bmljb2RlL2NfMTAwNi5jLCBsaWJzL3VuaWNvZGUvY18xMDA3OS5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDA4MS5jLCBsaWJzL3VuaWNvZGUvY18xMDI2LmMsIGxpYnMvdW5pY29kZS9jXzEyNTAuYywKCSAgbGlicy91bmljb2RlL2NfMTI1MS5jLCBsaWJzL3VuaWNvZGUvY18xMjUyLmMsIGxpYnMvdW5pY29kZS9jXzEyNTMuYywKCSAgbGlicy91bmljb2RlL2NfMTI1NC5jLCBsaWJzL3VuaWNvZGUvY18xMjU1LmMsIGxpYnMvdW5pY29kZS9jXzEyNTYuYywKCSAgbGlicy91bmljb2RlL2NfMTI1Ny5jLCBsaWJzL3VuaWNvZGUvY18xMjU4LmMsIGxpYnMvdW5pY29kZS9jXzIwODY2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzIwOTMyLmMsIGxpYnMvdW5pY29kZS9jXzI4NTkxLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTkyLmMsIGxpYnMvdW5pY29kZS9jXzI4NTkzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk0LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk2LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk4LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk5LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjAwLmMsIGxpYnMvdW5pY29kZS9jXzI4NjAzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjA0LmMsIGxpYnMvdW5pY29kZS9jXzI4NjA1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjA2LmMsIGxpYnMvdW5pY29kZS9jXzQyNC5jLCBsaWJzL3VuaWNvZGUvY180MzcuYywKCSAgbGlicy91bmljb2RlL2NfNTAwLmMsIGxpYnMvdW5pY29kZS9jXzczNy5jLCBsaWJzL3VuaWNvZGUvY183NzUuYywKCSAgbGlicy91bmljb2RlL2NfODUwLmMsIGxpYnMvdW5pY29kZS9jXzg1Mi5jLCBsaWJzL3VuaWNvZGUvY184NTUuYywKCSAgbGlicy91bmljb2RlL2NfODU2LmMsIGxpYnMvdW5pY29kZS9jXzg1Ny5jLCBsaWJzL3VuaWNvZGUvY184NjAuYywKCSAgbGlicy91bmljb2RlL2NfODYxLmMsIGxpYnMvdW5pY29kZS9jXzg2Mi5jLCBsaWJzL3VuaWNvZGUvY184NjMuYywKCSAgbGlicy91bmljb2RlL2NfODY0LmMsIGxpYnMvdW5pY29kZS9jXzg2NS5jLCBsaWJzL3VuaWNvZGUvY184NjYuYywKCSAgbGlicy91bmljb2RlL2NfODY5LmMsIGxpYnMvdW5pY29kZS9jXzg3NC5jLCBsaWJzL3VuaWNvZGUvY184NzUuYywKCSAgbGlicy91bmljb2RlL2NfODc4LmMsIGxpYnMvdW5pY29kZS9jXzkzMi5jLCBsaWJzL3VuaWNvZGUvY185MzYuYywKCSAgbGlicy91bmljb2RlL2NfOTQ5LmMsIGxpYnMvdW5pY29kZS9jXzk1MC5jLCBsaWJzL3VuaWNvZGUvY2FzZW1hcC5jLAoJICBsaWJzL3VuaWNvZGUvY29tcG9zZS5jLCBsaWJzL3VuaWNvZGUvY3BtYXAucGwsCgkgIGxpYnMvdW5pY29kZS9jcHRhYmxlLmMsIGxpYnMvdW5pY29kZS9kZWZhdWx0cywgbGlicy91bmljb2RlL21idG93Yy5jLAoJICBsaWJzL3VuaWNvZGUvc3RyaW5nLmMsIGxpYnMvdW5pY29kZS91dGY4LmMsIGxpYnMvdW5pY29kZS93Y3RvbWIuYywKCSAgbGlicy91bmljb2RlL3djdHlwZS5jLCBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZiwKCSAgdG9vbHMvd2luZXdyYXBwZXI6CglNb3ZlZCBsaWJ3aW5lX3VuaWNvZGUgdG8gdGhlIGxpYnMvIGRpcmVjdG9yeS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJld3JvdGUgbWFwcGluZyBvZiBtb2R1bGUgaW50byBtZW1vcnkgdXNpbmcgb25seSBOVERMTCBBUElzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIHdpbmVkZWZhdWx0LnJlZywKCSAgZGxscy9kbXVzaWMvLmN2c2lnbm9yZSwgZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuc3BlYywgZGxscy9kbXVzaWMvZG11c2ljOC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfYnVmZmVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19kbGluc3RydW1lbnQuYywgZGxscy9kbXVzaWMvZG11c2ljX2Rvd25sb2FkLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0LmMsIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0ZGwuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3RocnUuYywKCSAgZGxscy9kbXVzaWMvcmVmZXJlbmNlX2Nsb2NrLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGxzMS5oLAoJICBpbmNsdWRlL2RtZGxzLmgsIGluY2x1ZGUvZG1lcnJvci5oLCBpbmNsdWRlL2RtdXNidWZmLmgsCgkgIGluY2x1ZGUvZG11c2ljYy5oLCBsaWJzL3V1aWQvZHhndWlkLmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZG11c2ljIGRsbC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBtaXNjL3ZlcnNpb24uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBMZHJRdWVyeVByb2Nlc3NNb2R1bGVJbmZvcm1hdGlvbgoJLSByZXdyb3RlIFZFUlNJT05fR2V0TGlua2VkRGxsVmVyc2lvbigpIHdpdGggdGhpcyBuZXcgZnVuY3Rpb24gaW5zdGVhZAoJICBvZiBhY2Nlc3NpbmcgZGlyZWN0bHkgdGhlIG1vZHJlZiBsaXN0CgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZvcndhcmQtZGVjbGFyZSBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIsIGFzIGl0IGlzCglMaW51eC1zcGVjaWZpYyBhbmQgbm90IGF2YWlsYWJsZSBpbiB0aGUgaGVhZGVycyBvZiBvdGhlciBzeXN0ZW1zLgoKMjAwMy0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1vdmVkIFtlZmddY3Z0IGZ1bmN0aW9ucyB0byBtc3ZjcnQgYW5kIGZpeGVkIHRoZW0gdG8gdXNlIGEgcGVyLXRocmVhZAoJYnVmZmVyLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLAoJICBsaWJzL3BvcnQvbWVtY3B5X3VuYWxpZ25lZC5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCUFkZGVkIG1lbWNweV91bmFsaWduZWQgdG8gbGlid2luZV9wb3J0LgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIG9sZS9vbGUybmxzLmM6CglNb3ZlZCBhIGNvdXBsZSBvZiBsb2NhbGUgZnVuY3Rpb25zIGZyb20gb2xlMm5scy5jIGludG8gbG9jYWxlLmMuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOiBBZGRlZCBzcHJpbnRmVyBhbmQgdnNwcmludGZXLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy92ZXJzaW9uLmMsIHJlbGF5MzIvcmVsYXkzODYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgV0lORV9NT0RSRUYuZmxhZ3MgdG8gV0lORV9NT0RSRUYubGRyLkZsYWdzLCBhbmQgbWFrZSB1c2Ugb2YgdGhlCglzYW1lIGZsYWdzIHZhbHVlcyBhcyBXaW4yMDAwLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvaW50ZXJsb2NrZWQuYzoKCU1vdmVkIGludGVybG9ja2VkIGZ1bmN0aW9ucyB0byBsaWJ3aW5lX3BvcnQuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgbWlzYy92ZXJzaW9uLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZSBzb21lIGZpZWxkcyAocmVmQ291bnQsIHRsc19pbmRleCBhbmQgbW9kdWxlKSBmcm9tIFdJTkVfTU9EUkVGIHRvCglMRFJfTU9EVUxFLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgdW5uZWVkZWQgdW5peCB0byBXaW4zMiBlcnJvciBtYXBwaW5nLgoKCSogdG9vbHMvd2luZWdjYy5jOiBSZXBsYWNlZCB0ZW1wbmFtIGJ5IG1rc3RlbXBzLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYzoKCURvbid0IHVzZSBsaWJ3aW5lX3BvcnQgaW4gbWFrZWRlcCB0byBhdm9pZCBkZXBlbmRlbmN5IHByb2JsZW1zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy93c29jazMyL3Byb3RvY29sLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L21rc3RlbXAuYywgbGlicy9wb3J0L21rc3RlbXBzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2VydmVyL2ZpbGUuYywKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93cHAvd3BwLmM6CglSZXBsYWNlZCBta3N0ZW1wIGJ5IG1rc3RlbXBzIGZyb20gbGliaWJlcnR5LgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lY2Vzc2FyeSBwb3J0YWJpbGl0eSBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglDaGFuZ2VkIG5hbWUgb2YgdGhlIGFzbSB2ZXJzaW9uIG9mIFJ0bFVsb25nL3Nob3J0Qnl0ZVN3YXAgdG8gYXZvaWQKCWNvbmZsaWN0cyB3aXRoIHRoZSBpbmxpbmUgdmVyc2lvbi4KCgkqIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW50cm9kdWNlIHRoZSAtSiwgLS1pbnB1dC1mb3JtYXQgb3B0aW9ucyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoCgl3aW5kcmVzLgoJQ29sbHBhc2UgdGhlIC1lIG9wdGlvbiBpbnRvIHRoZSAtSiBvcHRpb24uIFVwZGF0ZSBtYW4gcGFnZS4KCUNsZWFudXAgZmlsZSBoZWFkZXIgKHJlbW92ZSBoaXN0b3J5IHRoYXQncyBhbHJlYWR5IGluIGxvZyBtc2dzLCBldGMuKQoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglSZW1vdmUgaW5jb3JyZWN0IGVudHJ5IGZvciAxNiBiaXQgZHJpdmVyIHN1cHBvcnQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVHdlYWsgZXJyb3IgbWVzc2FnZSBpbiBQUk9GSUxFX1VzYWdlV2luZUluaSgpLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCB0aGUgbW9kdWxlIGxvYWRpbmcvdW5sb2FkaW5nIGNvZGUgYW5kIHRoZSByZW1haW5pbmcgbmVlZGVkCglzdGF0aWMgdmFyaWFibGVzIHRvIG50ZGxsLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIGxvYWRlci9tb2R1bGUuYzoKCVBhcnRpYWxseSBpbXBsZW1lbnRlZCBMZHJMb2NrL1VubG9ja0xvYWRlckxvY2suCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5zcGVjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLAoJICBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9jdGwzZC9jdGwzZDMyLnNwZWMsIGRsbHMvZDNkOC9kM2Q4LnNwZWMsIGRsbHMvZDNkeDgvZDNkeDguc3BlYywKCSAgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dDgvZGlucHV0OC5zcGVjLAoJICBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvaWNtcC9pY21wLnNwZWMsCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywKCSAgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywKCSAgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLAoJICBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsCgkgIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3N0aS9zdGkuc3BlYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHdhaW4vdHdhaW5fMzIuc3BlYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywKCSAgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLAoJICBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLnNwZWMsCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglUYWtlIGFkdmFudGFnZSBvZiBuZXcgd2luZWJ1aWxkIHN5bnRheCB0byByZW1vdmUgcmVkdW5kYW50IGZ1bmN0aW9uCgluYW1lcyBpbiBzcGVjIGZpbGVzLgoKCSogZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJQWRkZWQgY2hlY2sgZm9yIGR1cGxpY2F0ZSBvcmRpbmFscywgYW5kIGZpeGVkIGJ1ZyBpdCB1bmNvdmVyZWQgaW4KCW1zbmV0MzIuc3BlYy4KCgkqIGRsbHMvb2xlMzIvZ2l0LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJRml4ZWQgY29weXJpZ2h0IGRhdGUuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBsaWJzL01ha2VmaWxlLmluLCBsaWJzL3V1aWQvLmN2c2lnbm9yZSwKCSAgbGlicy91dWlkL01ha2VmaWxlLmluLCBsaWJzL3V1aWQvZHg4Z3VpZC5jLCBsaWJzL3V1aWQvZHhndWlkLmMsCgkgIGxpYnMvdXVpZC91dWlkLmMsIG9sZS8uY3ZzaWdub3JlLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9keDhndWlkLmMsCgkgIG9sZS9keGd1aWQuYywgb2xlL3V1aWQuYzoKCU1vdmVkIGxpYndpbmVfdXVpZCB0byB0aGUgbmV3IGxpYnMvIGRpcmVjdG9yeS4KCjIwMDMtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSAtSiwgLVAsIGFuZCAtViBhcyB0aGV5IGhhdmUgbG9uZyBvcHRpb25zIGVxdWl2YWxlbnRzLgoJVXBkYXRlIGRvY3VtZW50YXRpb24sIHNtYWxsIGNvZGUgY2xlYW51cHMuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9nZXRvcHQuYywKCSAgbGlicy9wb3J0L2dldG9wdC5oLCBsaWJzL3BvcnQvZ2V0b3B0MS5jOgoJQWRkZWQgZ2V0b3B0IHJvdXRpbmUgdG8gbGlid2luZV9wb3J0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IERpbWl0cmllCglPLiBQYXVuKS4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbjogV2Ugc3RpbGwgbmVlZCBsaWJ3aW5lIGhlcmUuLi4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBsaWJzLy5jdnNpZ25vcmUsCgkgIGxpYnMvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC8uY3ZzaWdub3JlLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sCgkgIGxpYnMvcG9ydC9nZXRwYWdlc2l6ZS5jLCBsaWJzL3BvcnQvbHN0YXQuYywgbGlicy9wb3J0L21lbW1vdmUuYywKCSAgbGlicy9wb3J0L21rc3RlbXAuYywgbGlicy9wb3J0L3ByZWFkLmMsIGxpYnMvcG9ydC9wd3JpdGUuYywKCSAgbGlicy9wb3J0L3N0YXRmcy5jLCBsaWJzL3BvcnQvc3RyY2FzZWNtcC5jLCBsaWJzL3BvcnQvc3RyZXJyb3IuYywKCSAgbGlicy9wb3J0L3N0cm5jYXNlY21wLmMsIGxpYnMvcG9ydC91c2xlZXAuYywgbWlzY2VtdS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aWRsL01ha2VmaWxlLmluLAoJICB0b29scy93aWRsL3V0aWxzLmMsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJQ3JlYXRlZCBhIHNlcGFyYXRlIHN0YXRpYyBwb3J0YWJpbGl0eSBsaWJyYXJ5IGFuZCBtb3ZlZCBzb21lIG9mIHRoZQoJbGlid2luZSByb3V0aW5lcyBpbiB0aGVyZS4KCjIwMDMtMDMtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzAzMTguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDMtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZpeGVkIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIFNlbmRNZXNzYWdlIHRvIHJldHVybiB0b28gZWFybHkgaW4gY2VydGFpbgoJY2FzZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIFJ0bCpCeXRlU3dhcCgpIGZ1bmN0aW9ucywgYmFzZWQgb24gYSBwYXRjaCBieSBKb24KCUdyaWZmaXRocy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvcnJlY3QgdGhlIGFndW1lbnQgY291bnQgZm9yIFJ0bEluaXRpYWxpemVHZW5lcmljVGFibGUoKS4KCUZpeCBteSBvd24gYnJvd24gcGFwZXIgYmFnIGluIFJ0bEZpbGxNZW1vcnlVbG9uZygpLgoJUnRsR2V0TnRWZXJzaW9uTnVtYmVycygpIHNob3VsZCBuZXZlciByZXR1cm4gPCA1LgoJUmVtb3ZlIFJ0bENvcHlNZW1vcnkoKSwgaXRzIG5vdCBhbiBudGRsbCBleHBvcnQuCglJbXBsZW1lbnQgUnRsQ29tcGFyZU1lbW9yeVVsb25nKCksIFJ0bENvbXB1dGVDcmMzMigpLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJTWFrZSBHZXRNb2R1bGVGaWxlTmFtZUEgY2FsbCBHZXRNb2R1bGVGaWxlTmFtZVcuIFNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYzogQXZvaWQgZXhwbGljaXQgbG9uZyBsb25nIGNvbnN0YW50cy4KCgkqIGluY2x1ZGUvZGRyYXdpLmg6IEZpeGVkIGEgZmV3IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZWRlZnMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdXJsLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVN0dWIgZm9yIFNIQXV0b0NvbXBsZXRlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjE2LmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgZGxscy9zaGx3YXBpL3VybC5jLAoJICBkbGxzL3NobHdhcGkvd3NwcmludGYuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3dzb2NrMzIvc2VydmljZS5jLAoJICBvbGUvb2xlMm5scy5jLCB3aW5kb3dzL2RjZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9tb2R1bGUuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBsb2FkZXIvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRkZWQgTERSX01PRFVMRSBzdHJ1Y3R1cmUgdG8gV0lORV9NT0RSRUYgYW5kIG1hZGUgZHVtbXkgZmlsbGluZyBvZgoJICB0aGlzIHN0cnVjdHVyZQoJLSBpbXBsZW1lbnRhdGlvbiBvZiBMZHJGaW5kRW50cnkKCS0gaW1wbGVtZW50YXRpb24gb2YgR2V0TW9kdWxlRmlsZU5hbWVbQVddIG9uIHRvcCBvZiBMZHJGaW5kRW50cnkKCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJVGVzdHMgZm9yIF9pdG9hLCBfbHRvYSwgX3VsdG9hLCBfaTY0dG9hLCBfdWk2NHRvYSwgX2l0b3csIF9sdG93LAoJX3VsdG93LCBfaTY0dG93LCBfdWk2NHRvdywgX2F0b2k2NCwgX3d0b2ksIF93dG9sLCBfd3RvaTY0LgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmg6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBzaWduYXR1cmUgb2Ygb3Blbl9mZCgpLgoKCSogZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBfX0N4eERldGVjdFJldGhyb3coKSwgIF9fQ3h4UXVlcnlFeGNlcHRpb25TaXplKCkuCglDb25zdGlmeSBwYXJhbWV0ZXJzIChlbmFibGluZyBzdGF0aWMgUlRUSSkuCglNb3ZlIHR5cGUgZGVmaW5pdGlvbnMgaW50byBhIGhlYWRlciBmb3Igc2hhcmluZyB3aXRoIGNwcC5jIG9iamVjdHMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglIYW5kbGUgZW5kIG9mIGxpbmUgYXMgYSBzeW50YWN0aWMgZWxlbWVudCBpbiB0aGUgc3BlYyBmaWxlIHBhcnNlcjsKCWJhY2tzbGFzaGVzIGNhbiBiZSB1c2VkIHRvIGNvbnRpbnVlIGxpbmVzLiBUaGlzIGFsbG93cyB1cyB0byBza2lwIG92ZXIKCWVycm9ycyB0byBjb250aW51ZSBwYXJzaW5nLCBhbmQgYWxzbyB0byBtYWtlIHNwZWNpZmljYXRpb24gb2YgYW4gZW50cnkKCXBvaW50IGxpbmsgbmFtZSBvcHRpb25hbC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuaCwgc2VydmVyL2xpc3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCBmaWxlIGxvY2tpbmcgZnVuY3Rpb25zIChwYXJ0bHkgYmFzZWQgb24gbXkgb2xkIENvcmVsCglwYXRjaCkuIEFkZGVkIGEgZmV3IHJlZ3Jlc3Npb24gdGVzdHMuCgoyMDAzLTAzLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTb21ld2hhdCBtb3JlIHJlbGlhYmxlIGRzb3VuZCBwb3NpdGlvbiBub3RpZmljYXRpb25zLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJSmFuaXRvcmlhbC4gR2V0IHJpZCBvZiBXLT5BIGNhbGwuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVmaW5lIHRoZSB1X3tjaGFyLHNob3J0LGludCxsb25nfSBpbiBtc3ZjcnQvc3lzL3R5cGVzLmggZm9yIFVuaXgKCWNvbXBhdGliaWxpdHkgKG5lZWRlZCBieSB3aW5zb2NrLmggYXMgd2VsbCkuCgoJKiBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1vdmUgYSBjb3VwbGUgb2Ygc2hhcmVkIGRlZmluaXRpb25zIGludG8gbXN2Y3J0LmguCglpbml0X3Z0YWJsZXMoKSBpcyByZWR1bmRhbnQgd2l0aCB1cGNvbWluZyBmaXhlcyB0byBjeHggZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvbXRkbGwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCV9FWElUX0xPQ0syIGlzIHVzZWQgYnkgdHlwZV9pbmZvIG9iamVjdHMuCgoJKiBpbmNsdWRlL3dpbnJlZy5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgdGhlIFJlbW90ZSBTaHV0ZG93biBBcGkgY2FsbHMuCgoJKiBkbGxzL250ZGxsL3NlYy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglDb252ZXJ0IFdJTkVfRFBSSU5URiBjYWxscyB0byBXSU5FX1RSQUNFLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlbW92ZWQgc3VwcG9ydCBmb3IgdGhlICdmb3J3YXJkJyBvcmRpbmFsIHR5cGUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjOgoJUmVwbGFjZWQgZm9yd2FyZHMgYnkgbm9ybWFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRml4ZWQgYSBjb3VwbGUgb2YgcmVsYXkgYXJndW1lbnRzLCBhbmQgdXBkYXRlZCBzb21lIG9mIHRoZSBzdHViCgljb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUZpeCB0aGUgdGFiIGhlaWdodCBzbyB0aGUgbGFiZWxzIGRvbid0IGNsaXAsIGFuZCByZXN0b3JlIHRoZSBvZmZzZXQKCWNvbnN0YW50IHRvIHdoYXQgaXQgd2FzIGJlZm9yZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUZpeCBhIHR5cG8uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglBZGQgQ1NJRExfUFJPRklMRVMuICBJbXByb3ZlZCBsb2dnaW5nIGZvciBub24tZXhpc3RlbnQgQ1NJREwgdmFsdWVzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJRml4IGEgY291cGxlIElOVC9VSU5UIGNvbXBhcmlzb25zLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglUcmVhdCBibGFuayBwcm90b2NvbCB0aGUgc2FtZSBhcyBOVUxMIGluIGdldHNlcnZieW5hbWUgJgoJZ2V0c2VydmJ5cG9ydC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9kcGxheS9kcGxheS5zcGVjLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsCgkgIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsCgkgIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93b3czMi93b3czMi5zcGVjLAoJICBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjOgoJUmVwbGFjZWQgZm9yd2FyZHMgYnkgbm9ybWFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglJbXBsZW1lbnRlZCBfZ2V0ZGxscHJvY2FkZHIoKSwgaXQgY2Fubm90IGJlIHNpbXBseSBhIGZvcndhcmQgdG8KCUdldFByb2NBZGRyZXNzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJRGlzYWJsZSAndmFyaWFibGUnIGluIFdpbjMyIHNwZWMgZmlsZXMuCglBZGRlZCBzdXBwb3J0IGZvciBmb3J3YXJkZWQgJ2V4dGVybicgb3JkaW5hbHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogQXZvaWQgd2FybmluZ3MuCgoyMDAzLTAzLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJRG9uJ3QgZW50ZXIgYW4gaW1wb3J0ZWQgZGxsIGluIHRoZSBpbXBvcnQgdGFibGUgYXQgYWxsIGlmIHdlIGRpZG4ndAoJbmVlZCB0byBpbXBvcnQgYW55IHN5bWJvbCBmcm9tIGl0LgoKCSogaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCVByb3Blcmx5IGltcG9ydCBiYXNldHNkLmggYW5kIGd1aWRkZWYuaC4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvdXRpbHMuYywgdG9vbHMvd2lkbC93aWRsLmM6CglNYWtlIHN1cmUgd2UgZGlzcGxheSB0aGUgY29ycmVjdCBmaWxlIG5hbWUgYW5kIGxpbmUgaW4gZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCS0gbWFrZSBTSEdldEZpbGVJbmZvIGhhbmRsZSByZWxhdGl2ZSBwYXRocwoJLSBmaXggcmVxdWVzdHMgZm9yIGxhcmdlIGljb25zCgoyMDAzLTAzLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvbWlzYy5jOgoJSW1wbGVtZW50ZWQgX2Noa2VzcCwgYmFzZWQgb24gYSBwYXRjaCBieSBKb24gR3JpZmZpdGhzLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2V4aXQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEaXNwbGF5IGFibm9ybWFsIGV4aXQgdGV4dCBpbiBhIG1lc3NhZ2UgYm94IGZvciBHVUkgYXBwcy4KCgkqIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBtaXNzaW5nIHR5cGVzIG5lZWRlZCBmb3IgdGhlIHVwY29taW5nIG9jaWRsLmlkbC4KCUFkZCBtaXNzaW5nIHZhcmlhbnQgdHlwZXMuCglDb3JyZWN0IHRoZSBkZWZpbml0aW9uIG9mIERFQ0lNQUwgdHlwZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBBZGRlZCAjaWZkZWYgY2hlY2tzIGZvciBTT1VORF9NSVhFUl9JTkZPLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudDogQWRkZWQgSm9uIEdyaWZmaXRocy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZWQgcnVsZXMgZm9yIEFQSSBkb2MgZ2VuZXJhdGlvbi4KCUFkZCBzZ21scGFnZXMgdGFyZ2V0IGZvciBtYWtpbmcgYSBkb2Nib29rICdXaW5lIEFQSSBHdWlkZScuCgoJKiB0b29scy9jMm1hbi5wbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcHJvdmUgdGhlIGxvb2svY29udGVudCBvZiB0aGUgbWFuIHBhZ2Ugb3V0cHV0LgoJR2VuZXJhdGUgZm9yIGFsbCBleHBvcnRlZCBmdW5jdGlvbnMgKHRoYXQgaGF2ZSBkb2NzKS4KCUFkZCBkbGwgc3VtbWFyeSBwYWdlLCBIVE1MIGFuZCBTR01MIG91dHB1dC4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50IHRoZSBBUEkgZ2VuZXJhdGlvbiBwcm9jZXNzIGFuZCBmb3JtYXQuCglQcm92aWRlIGFuIG92ZXJ2aWV3IG9mIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gc3lzdGVtLgoJQSBjb3VwbGUgb2YgbWlub3Igb3RoZXIgZml4ZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIFJ0bERvd25jYXNlVW5pY29kZUNoYXIoKSwgUnRsRXF1YWxDb21wdXRlck5hbWUoKSwKCVJ0bEVxdWFsRG9tYWluTmFtZSgpLiBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL3NobHdhcGkvaXN0cmVhbS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU0hDcmVhdGVUaHJlYWQgaXMgZXhwb3J0ZWQgYnkgbmFtZSBfYW5kXyBvcmRpbmFsLgoKCSogZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvcnJlY3QgYmVoYXZpb3VyIGZvciBzb21lIGVycm9yIGNvbmRpdGlvbnMuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL3dpbmUvZGVidWcuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlYWxseSBnZXQgcmlkIG9mIGRlYnVnIGNvZGUvc3RyaW5ncyBpZiB3ZSdyZSBidWlsZGluZyB3aXRob3V0IHRoZW0uCgoJKiBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIF9fcF9fcGdtcHRyLCBfcGdtcHRyLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU9ubHkgc29ydCB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgYWN0dWFsbHkgZm91bmQuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJT3V0cHV0IGEgZHVtbXkgZnVuY3Rpb24gZm9yIGxpbmtpbmcuCglEZWZpbmUgX19XSU5FX1VTRV9OQVRJVkVfSEVBREVSUyBmb3IgdGVzdHMgdGhhdCBuZWVkIHRvIGNhcmUuCglDaGFuZ2UgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvcm1hdCB0byBwcmV2ZW50IHdpbmVkYmcgZnJvbSBjcmFzaGluZy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQcm90ZWN0IHRoZSBURVhUTUVUUklDIHN0cnVjdCBmcm9tIHJlZGVmaW5pdGlvbi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJUmVwbGFjZSBEUFJJTlRGIHdpdGggVFJBQ0UuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGluY2x1ZGUvbW1kZGsuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBkaXJlY3Qgc291bmQgZGV2aWNlcy4KCgkqIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywKCSAgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywgZGxscy92ZXJzaW9uL2luZm8uYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGZpbGVzL3NtYi5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVJlcGxhY2UgRFBSSU5URiB3aXRoIFRSQUNFLgoKCSogd2luZWRlZmF1bHQucmVnOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVJlbmFtZSAiU2hvcnRjdXQiIHRvICJEZXNrdG9wIi4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglJbml0IHNpZ25hbHMgYmVmb3JlIGNhbGxpbmcgQ0xJRU5UX0luaXRUaHJlYWQgc2luY2Ugd2UgY2FuIHJlY2VpdmUgYQoJc2lnbmFsIHRoZXJlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUNoYW5nZXMgZm9yIEljb24gYW5kIFNtYWxsSWNvbiBtb2RlczoKCSAtIGZpeCB0eXBvIGNhdXNpbmcgd3Jvbmcgc2Nyb2xsIGJvdW5kYXJpZXMKCSAtIHJldmVyc2UgbW91c2Ugd2hlZWwgc2Nyb2xsIGRpcmVjdGlvbnMKCSAtIGZpeCBuYXZpZ2F0aW9uIHdpdGgga2V5Ym9hcmQgd2hlbiBhdXRvIGFycmFuZ2VkCgoyMDAzLTAzLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOiBDbGVhbmVkIHVwIGxvYWRfbGlicmFyeV9hc19kYXRhZmlsZSgpLgoKCSogZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9udGRsbC9zZWMuYzoKCUF2b2lkIEdldFByb2Nlc3NIZWFwKCkgaW5zaWRlIG50ZGxsLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBzdHViIGZvciBHZXREZXZpY2VQb3dlclN0YXRlKCkuCgoJKiBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLCBkbGxzL21zbmV0MzIvbXNuZXRfbWFpbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkZWQgYSBzdHViIGZvciBtc25ldDMyLjU3CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTcGFjaW5nIGluZm9ybWF0aW9uIGlzIHNpZ25lZCAoZGVidWdnZWQgYW5kIGZpeGVkIGJ5IFZpdGFsaXkKCU1hcmdvbGVuKS4KCURlY29kZSBzcGFjaW5nIGluZm9ybWF0aW9uIGluIHRoZSB3aW5kb3cgcHJvY2VkdXJlLgoJU29tZSBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2ludGVybmwuaCwgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBMZHJMb2FkRGxsIG91dCBvZiBsb2FkZXIvbW9kdWxlLmMKCS0gaW4gaW1wYWN0ZWQgZnVuY3Rpb25zLCBlbnN1cmUgdGhhdCB3ZSBvbmx5IHVzZSBudGRsbCBmdW5jdGlvbnMKCS0gZm9yIGludGVybmFsIGxvYWRpbmcsIHN0YXJ0IHVzaW5nIE5URExMIHN0eWxlIGZvciBlcnJvciByZXBvcnRpbmcKCS0gbWFraW5nIHVzZSBvZiBuZXcgTGRyTG9hZERsbAoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUphbml0b3JpYWwuIEdldCByaWQgb2YgVy0+QSBjYWxscy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglSZXBsYWNlIERQUklOVEYgd2l0aCBUUkFDRS4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuYzoKCUFkZGVkIC1mIG9wdGlvbiB0byBtYWtlIHdpbmVzZXJ2ZXIgcmVtYWluIGluIHRoZSBmb3JlZ3JvdW5kIGZvcgoJZGVidWdnaW5nLgoJQ2xvc2Ugc3RkaW4vc3Rkb3V0IHdoZW4gbm90IGluIHRoZSBmb3JlZ3JvdW5kIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglGcmFuY29pcyBHb3VnZXQpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jOiBXYXJuaW5nIGZpeGVzLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglPbmx5IHByaW50IHRoZSB0cmFjZSBoZWFkZXIgd2hlbiB3ZSBhcmUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIG5ldwoJbGluZSAoc3VnZ2VzdGVkIGJ5IERpbWl0cmllIE8uIFBhdW4pLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGF0aW9uIG9mIExkclVubG9hZERsbCBvdXQgb2YgbG9hZGVyL21vZHVsZS5jCgktIGluIGltcGFjdGVkIGZ1bmN0aW9ucywgZW5zdXJlIHRoYXQgd2Ugb25seSB1c2UgbnRkbGwgZnVuY3Rpb25zCgktIG1ha2luZyB1c2Ugb2YgbmV3IExkclVubG9hZERsbAoKMjAwMy0wMy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zbWIuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jOgoJQWRkZWQgYW4gaW5vZGUgb2JqZWN0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBmb3IgYQoJZ2l2ZW4gZmlsZS4KCVBsdWdnZWQgYSBjb3VwbGUgb2YgcG90ZW50aWFsIGZpbGUgZGVzY3JpcHRvciBsZWFrcy4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsCgkgIHVuaWNvZGUvc3RyaW5nLmMsIHVuaWNvZGUvd2luZV91bmljb2RlLmRlZjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglNb3ZlIHZzbndwcmludGYgaW1wbGVtZW50YXRpb24gdG8gbGlid2luZV91bmljb2RlLCBleHBvcnQgc25wcmludGZXCglhbmQgdnNucHJpbnRmVyBmcm9tIHRoZXJlLCBmb3J3YXJkIE1TVkNSVCBhbmQgTlRETEwgZnVuY3Rpb25zIHRvCglsaWJ3aW5lX3VuaWNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvbnN0aWZ5IHRoZSBzdHJpbmdzIGluIHRoZSBwb2xpY3kgY2FjaGUuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvd2NzLmMsCgkgIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJRm9yd2FyZCB0byB0aGUgbnRkbGwgZnVuY3Rpb25zIF9pdG9hLCBfbHRvYSwgX3VsdG9hLCBfaTY0dG9hLAoJX3VpNjR0b2EsIF9pdG93LCBfbHRvdywgX3VsdG93LCBfaTY0dG93LCBfdWk2NHRvdywgX2F0b2k2NCwgX3d0b2ksCglfd3RvbCwgX3d0b2k2NCBmcm9tIG1zdmNydCAvIG1zdmNydDIwLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCUltcGxlbWVudCBfaXRvYSwgX2x0b2EsIF91bHRvYSwgX2k2NHRvYSwgX3VpNjR0b2EsIF9pdG93LCBfbHRvdywKCV91bHRvdywgX2k2NHRvdywgX3VpNjR0b3csIF9hdG9pNjQsIF93dG9pLCBfd3RvbCwgX3d0b2k2NC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgMiBmZCBsZWFrcyBpbiBjb21tIGZ1bmN0aW9ucy4KCVJlbW92ZWQgZXJyb25lb3VzIEdldExhc3RFcnJvcigpIGNoZWNrIGluIFdhaXRDb21tRXZlbnQoKS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwsIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBJbXBsZW1lbnQgZmluZXIgZ3JhaW5lZCBjb250cm9sIG92ZXIgd2hhdCBnZXRzIHJ1bi4KCS0gSW1wbGVtZW50IGNvbW1hbmQgbGluZSB0byBjb250cm9sIHByZXNldHMgb2Ygc2FpZCBjb250cm9sIGZvcgoJICB2YXJpb3VzIHNjZW5hcmlvczoKCSAgbyBzdGFydCAtIHNlc3Npb24gc3RhcnR1cCAtIHJ1biBldmVyeXRoaW5nLgoJICBvIHJlc3RhcnQgLSBzZXNzaW9uIGNsb3NlIChwcmVzdW1lYWJseSBhZnRlciByZWJvb3QpIC0gb25seSBwZXJmb3JtCgkgICAgKm9uY2Ugb3BlcmF0aW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZCBmbGFncyBmb3IgUmVnUmVzdG9yZUtleS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gUmVkdWNlZCB0YWIgb2Zmc2V0IGNvbnN0YW50IHNsaWdodGx5IHRvIGF2b2lkIGNsaXBwaW5nIHRoZSBsYWJlbC4KCS0gUHJldmVudCBsYWJlbCBvdmVyZHJhdyBvZiB1cGRvd24gY29udHJvbCBieSByZWR1Y2luZyB0aGUgd2lkdGggb2YKCSAgdGhlIGludmFsaWRhdGVkIHJlZ2lvbi4KCjIwMDMtMDMtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYywKCSAgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5oOgoJQXR0YWNoaW5nIHRoZSBkZWJ1Z2dlciB0byBhIHJ1bm5pbmcgcHJvY2VzcyBzaG91bGQgd29yayBhZ2FpbgoJKHJlcG9ydGVkIGJ5IEVyaWMgUG91ZWNoKS4gTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2dpdC5jLCB3aW5lZGVmYXVsdC5yZWcsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIGdsb2JhbCBpbnRlcmZhY2UgdGFibGUgb2JqZWN0IHVzaW5nIGEgc2ltcGxlIGxpbmtlZAoJbGlzdC4KCjIwMDMtMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglQdXQgY29uc29sZSBkb2N1bWVudGF0aW9uIGluIHN5bmMgd2l0aCBjdXJyZW50IGNvbnNvbGUgc3RhdHVzLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJLSBpbXBsZW1lbnRlZCBwYW5uaW5nCgktIGltcGxlbWVudGVkIGNvbmluZwoJLSBtYW55IG1pbm9yIGZpeGVzCgoJKiByZWxheTMyL3Nub29wLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNOT09QX1ByaW50QXJnOiBkb24ndCB0cnkgdG8gZGVjaXBoZXIgc25vb3AgYXJncyB3aGVuIHNlaCBjaGFuZWwgaXMKCW9uLgoKCSogc2VydmVyL3B0cmFjZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeGVkIHR5cG8gaW4gUHJpdmF0ZUV4dHJhY3RJY29uRXhXIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSXQncyBub3QganVzdCBoZWlnaHQgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBkZWZhdWx0IGJ5IHBhc3NpbmcgemVybyB0bwoJVENNX1NFVElURU1TSVpFLCBidXQgYWxzbyB3aWR0aC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gZml4ZWQgYW5vdGhlciByZWdyZXNzaW9uIGluIHN1Yi1wcm9jZXNzIGNyZWF0aW9uIChjdXJzZXMgYmFja2VuZAoJICBtdXN0IGJlIGRlZmF1bHQgZm9yIEFsbG9jQ29uc29sZSgpIGludm9jYXRpb24pCgktIGZpeGVkIGVuZGxlc3MgbG9vcCB3aGVuIHVua25vd24gYXJndW1lbnQgd2FzIHBhc3NlZCBvbiBjb21tYW5kbGluZQoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBlcnJvciBjb2RlIHdoZW4gbm8gbWFwcGluZyBpcyBmb3VuZCBmb3Igd2F2ZSBpbnB1dC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50ZWQgU0hSZWdTZXRVU1ZhbHVlQSBhbmQgU0hSZWdTZXRVU1ZhbHVlVy4KCjIwMDMtMDMtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3J0bGJpdG1hcC5jOgoJUmV3cm90ZSBSdGxGaW5ke01vc3QsTGVhc3R9U2lnbmlmaWNhbnRCaXQgaW4gYSBtb3JlIHBvcnRhYmxlIHdheS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglKYW5pdG9yaWFsLiBHZXQgcmlkIG9mIFctPkEgY2FsbC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBBbmRyZXcgSm9obnN0b24gPGpvaG5zdG9uYW1AbG9naWNhLmNvbT4KCU1vdmUga2V5Ym9hcmQgZXZlbnQgcHJvY2Vzc2luZyBmcm9tIFduZFByb2MgY29kZSBpbnRvIHRoZSBleGlzdGluZwoJaGVscGVyLgoJQ3JlYXRlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgY3JlYXRlIGV2ZW50IGFuZCBjbGVhbiB1cCBjb2RlLgoJUmVtb3ZlIG1hY3JvIGZvciBkZXRlY3RpbmcgaW52YWxpZCBTQ1JPTExJTkZPIHN0cnVjdHVyZXMgYW5kIG1ha2UgaXQKCWFuIGlubGluZSBmdW5jdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglBbGxvdyBtb2RpZnlpbmcgYSBtZW51IHN0cmluZyB0byBiZSBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJVE9PTEJBUl9BZGRCaXRtYXAoKSBhbmQgVE9PTEJBUl9SZXBsYWNlQml0bWFwKCkgYXJlIG5vdCBzdXBwb3NlZCB0bwoJbW9kaWZ5IHRoZSBiaXRtYXAgLSB3ZSBjYWxsIEltYWdlTGlzdF9BZGRNYXNrZWQoKSB3aGljaCB0dXJucyBhbGwKCW1hc2tlZCBwaXhlbHMgYmxhY2suIEZpeGVkIGJ5IG1ha2luZyBhIGNvcHkgb2YgdGhlIGJpdG1hcCB0byBnaXZlIHRvCglJbWFnZUxpc3RfQWRkTWFza2VkKCkuCgoJKiBjb250cm9scy9zY3JvbGwuYzogQW5kcmV3IEpvaG5zdG9uIDxqb2huc3RvbmFtQGxvZ2ljYS5jb20+CgktIEdldFNjcm9sbFJhbmdlIHplcm9zIHRoZSByZXR1cm4gcGFyYW1ldGVycyBmb3Igbm8gaW5mb1B0cgoJLSBHZXRTY3JvbGxSYW5nZSwgR2V0U2Nyb2xsUG9zIGFuZCBHZXRTY3JvbGxJbmZvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZQoJICB3aW5kb3cgZm9yIHRoZSBTQl9DVEwgY2FzZQoJLSBNb3ZlZCBjb2RlIGZvciBHZXRTY3JvbGwqIHRvIGludG8gd29ya2VyIGZ1bmN0aW9ucwoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBidWcgd2hlcmUgdGhlIGVuYWJsZSBzdGF0ZSBvZiB0aGUgb3V0cHV0IGFuZCBpbnB1dCB3ZXJlIG5vdCBzZXQKCXByb3Blcmx5IHdoZW4gZG9pbmcgZnVsbCBkdXBsZXguCglGaXhlZCBidWcgd2hlcmUgcmVzZXR0aW5nIHRoZSBvdXRwdXQgd291bGQgYWZmZWN0IHRoZSBjYXB0dXJlIHdoZW4KCWRvaW5nIGZ1bGwgZHVwbGV4LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIGJ1ZyB3aGVyZSBhIGNhcHR1cmUgZGV2aWNlIHdhcyB1c2VkIGFmdGVyIGl0IGZhaWxlZCB0byBvcGVuCglkdWUgdG8gYSBtaXNzaW5nIGRyaXZlci4KCUFkZGVkIHRlc3RzIHRvIHRyeSBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIG9mIHNhbXBsZSByYXRlLCBzYW1wbGUKCXNpemUgYW5kIG1vbm8vc3RlcmVvLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVdhcyB1c2luZyB0aGUgd3JvbmcgZGVmaW5lIGZvciB0aGUgQ1VQUyBzb25hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJV2hlbiBzaGlmdGluZyB0aGUgbGlzdCdzIGluZGljZXMsIHdlIG11c3Qgbm90IHNlbmQgbm90aWZ5IG1lc3NhZ2VzIGlmCgl3ZSBoYXZlIHRvIHJlZm9jdXMuIEl0ZW0gbW9kaWZpY2F0aW9uIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9zZWQgdG8gYmUKCWNhbGxlZCBoZXJlLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBpbiBzdWItcHJvY2VzcyBjcmVhdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIENhcHMgY2xlYW4tdXAgd2hlbiBubyBPcGVuR0wgY29tcGlsZWQgaW4KCS0gZml4IHNvbWUgZm9udHMgZGlzcGxheWluZyBwcm9ibGVtcwoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQ2xhcmlmeSBwYXRjaCByZXF1aXJlbWVudHMuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGQgaW1wb3J0IG9mIG50ZGxsLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglQUk9QU0hFRVRfQ3JlYXRlRGlhbG9nKCkgaXMgZG9jdW1lbnRlZCB0byByZXR1cm4gLTEgb24gZmFpbHVyZSwgYW5kCgl0aGUgZGlhbG9nIGhhbmRsZSBvbiBzdWNjZXNzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUFycmFuZ2VDdHJsUG9zaXRpb25zKCkgZGlkIG5vdCBjb3BlIGNvcnJlY3RseSB3aXRoIGEgdGVtcGxhdGVkIGRpYWxvZwoJd2hpY2ggaGFzIGFuIGV4dHJhICdwcmV2aWV3JyBjb250cm9sIHRvIHRoZSByaWdodCBvZiB0aGUgJ21hcmtlcicKCWNvbnRyb2wuCglGSUxFRExHOTVfSGFuZGxlX0dldEZpbGVQYXRoKCkgZGlkIG5vdCByZXR1cm4gdGhlIHBhdGggLSBpdCB3YXNuJ3QKCWNvbWJpbmluZyB0aGUgcGF0aCB3aXRoIHRoZSBmaWxlbmFtZS4KCjIwMDMtMDMtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJyYXJ5L2xkdC5jOgoJSGFyZGNvZGUgc2V0X3RocmVhZF9hcmVhIHN5c2NhbGwgbnVtYmVyIHRvIGF2b2lkIHRyb3VibGUgd2l0aCBicm9rZW4KCWhlYWRlcnMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBMZHJHZXRQcm9jZWR1cmVBZGRyZXNzIGFuZCBtYWRlIHVzZSBvZiBpdCBmb3IKCSAgR2V0UHJvY0FkZHJlc3MKCS0gaW1wbGVtZW50ZWQgTGRyR2V0RGxsSGFuZGxlIGFuZCBtYWRlIHVzZSBvZiBpdCBpbiBHZXRNb2R1bGVIYW5kbGUKCS0gcmVtb3ZlZCBNT0RVTEVfRGxsVGhyZWFkRGV0YWNoIGZyb20gbG9hZGVyL21vZHVsZS5jIChzaG91bGQgaGF2ZQoJICBiZWVuIHJlbW92ZWQgaW4gYSBwcmV2aW91cyBwYXRjaCkKCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0ICdzdHViJyB3Z2xHZXRFeHRlbnNpb25zU3RyaW5nRVhUIGZ1bmN0aW9uLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3Igc2V0dGluZyB0aGUgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCglsZXZlbCBqdXN0IGxpa2UgdGhlIGRpcmVjdCBzb3VuZCBjb250cm9sIHBhbmVsIGFwcC4KCU1vcmUgd29yayBvbiB0aGUgZnVsbCBkdXBsZXggaW50ZXJmYWNlIHNvIHRoZSBjb21waWxlIHdhcm5pbmcgaXMgbm8KCWxvbmdlciBnZW5lcmF0ZWQuICBGdWxsIGR1cGxleCBpbnRlcmZhY2UgaXMgc3RpbGwgc3R1YmJlZCBvdXQuCglNb3ZlZCBmdWxsIGR1cGxleCBtaXhlciByZXNldCBmaXggaW50byB3aW5lb3NzIGRyaXZlciB3aGVyZSBpdAoJYmVsb25ncy4KCUFkZGVkIHNvbWUgbW9yZSBsb2NraW5nIGZpeGVzLgoJQ2FwdHVyZSBhbmQgZnVsbCBkdXBsZXggYXJlIG5vdyBzdGFibGUuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBGSVhNRSBmb3IgZnVsbCBkdXBsZXguCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglKYW5pdG9yaWFsLiBHZXQgcmlkIG9mIFctPkEgY2FsbC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUhhbmRsZSBjb2VyY2luZyBWVF9ESVNQQVRDSCBpbnRvIFZUX1BUUi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglUUkVFVklFV19VcGRhdGVTY3JvbGxCYXJzKCkgbm93IGNvcGVzIHdpdGggYW4gZW1wdHkgdHJlZS4KCjIwMDMtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIFNPIGxvYWRpbmcgdHlwZS4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglBbGxvdyB0byBydW4gYXV0b2V4ZWMuYmF0IHdoZW4gbGF1bmNoaW5nIHdjbWQsIGl0IHdhcyBicm9rZW4gZHVlIHRvIGEKCWZ1bmN0aW9uIGNoYW5nZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGQgZmV3IFNGR0FPX0NBTiogYXR0cmlidXRlcyB0byBzdXBwb3J0ZWQgbGlzdC4KCgkqIHRvb2xzL2V4YW1pbmUtcmVsYXk6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgZnVsbCBsaXN0aW5nIGZvcm1hdCBvcHRpb24uCglGaXggYW4gaW5maW5pdGUgbG9vcCBpZiB0aGUgbGFzdCBsaW5lIGlzIGEgcGFydGlhbCBsaW5lLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQ2hhbmdlZCBzb21lIHN0dWZmIHNvIGRpc3RhbmNlIGF0dGVudWF0aW9uIHdvcmtzIGZvciBib3RoIDNkCglwcm9jZXNzaW5nIG1vZGVzLgoKMjAwMy0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jLAoJICBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJVXNlIFNJR1VTUjEgaW5zdGVhZCBvZiBTSUdTVE9QIHRvIHN1c3BlbmQgdGhyZWFkcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgd2F2ZUluIHRlc3RzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJRml4ZWQgaW50IGNvbnZlcnNpb24gaW4gR2V0UHJpdmF0ZVByb2ZpbGVJbnQgc28gdGhhdCBhbGwgdGhlIHRlc3RzCglzdWNjZWVkLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL21vZHVsZS5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGFkZGVkIExkciogaW5mb3JtYXRpb24gdG8gaW5jbHVkZS93aW50ZXJubC5oCgktIGV4cG9ydGVkIGEgZmV3IGZ1bmN0aW9ucy9nbG9iYWwgdmFycyBmcm9tIG1vZHVsZS5oIHdoaWxlIHdlIG1vdmUKCSAgY29kZSBmcm9tIGxvYWRlci9tb2R1bGUuYyB0byBkbGxzL250ZGxsL2xvYWRlci5jCgktIGltcGxlbWVudGVkIExkclNodXRkb3duUHJvY2VzcywgTGRyU2h1dGRvd25UaHJlYWQgYW5kCgkgIExkckRpc2FibGVUaHJlYWRDYWxsb3V0c0ZvckRsbCAoYW5kIG1hZGUgdXNlIG9mIHRoZW0pCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB0ZXN0cyBmb3IgR2V0UHJpdmF0ZVByb2ZpbGVJbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBpbnZpc2libGUgdGFicyBpbiBUYWJDb250cm9scyB3aXRoIGZpeGVkIHRhYiB3aWR0aC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJRG9jdW1lbnQgW1dpbk1NXSBkcml2ZXJzIG9wdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGltZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBfZGF5bGlnaHQgc3R1YiBpbnQsIGFuZCBfX3BfX2RheWxpZ2h0IGZ1bmN0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2ludHZhci5oLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgQ3RybC1DIGhhbmRsaW5nIGlmIG5vdCBydW5uaW5nIGluIGEgY29uc29sZS4KCUFkZGVkIChtYWludGVuYW5jZSkgY29uZmlndXJhdGlvbiB2YXIgdG8gdHJpZ2dlciBleHRlcm5hbCBkZWJ1Z2dlciBvbgoJd2luZWRiZydzIGV4Y2VwdGlvbnMuCgoJKiBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBlbmRsZXNzIGxvb3AgaW4gU3RyUEJya1cuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHVwZGF0ZSB0byBsYXRlc3QgR0wgc3BlYyBmaWxlcwoJLSBhZGRlZCBLVFggQnVmZmVyIFJlZ2lvbiBleHRlbnNpb24KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSByZWFsIG1vZGUgaW50ZXJydXB0IGVtdWxhdGlvbiBjb2RlIHRvIGZpbGUgaW50ZXJydXB0cy5jLgoJUmVtb3ZlIGxhc3Qgd3JhcHBlciBjaGVjayBmcm9tIGludDMxIGhhbmRsZXIuCglNb3ZlIFJNL1BNIGhhcmR3YXJlIGludGVycnVwdCBlbXVsYXRpb24gY29kZSB0byBzZXBhcmF0ZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgZGVjb2Rpbmcgb2YgbG9uZyBmaWxlIG5hbWUgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCglNb3ZlIHNvbWUgaW50MjEgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCgoJKiBmaWxlcy9kcml2ZS5jOiBFbnJpY28gSG9ybiA8ZmFybWJveTFAc3ViZGltZW5zaW9uLmNvbT4KCVNpbXBsZSB3YXkgdG8gZ2V0IHRoZSBsYWJlbCBvZiBtaXhlZC1tb2RlIGNkLgoKCSogY29udHJvbHMvbWVudS5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJSmFuaXRvcmlhbC4gR2V0IHJpZCBvZiBXLT5BIGNhbGwuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglWYXJBZGQ6IHNldCAncmMnIGNvcnJlY3RseSBmcm9tIEJTVFIgYWRkaXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgVlRfUFRSLT5WVF9WQVJJQU5UIGFyZ3VtZW50cyBvZiBJbnZva2UuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGFkZGVkIGFiaWxpdHkgdG8gdXNlIC0tYmFja2VuZD0oY3Vyc2VzfHVzZXIpIGFzIHdpbmVjb25zb2xlIHBhcmFtZXRlcgoJLSByZXdyb3RlIHdpbmVjb25zb2xlIGNvbW1hbmQgbGluZSBvcHRpb24gcGFyc2luZwoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gY3Vyc2VzIGJhY2tlbmQsIGFwcGx5IHRoZSBxdWljay1lZGl0IGRpcmVjdGl2ZSBmcm9tIHJlZ2lzdHJ5LgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgY29kZSB0byBoYW5kbGUgZnVsbCBkdXBsZXggcHJvcGVybHkuCglBZGRlZCBzdXBwb3J0IGZvciBjYXB0dXJlIGRyaXZlciAoZGlzYWJsZWQpLgoJRml4ZWQgZGlyZWN0IHNvdW5kIGNhcHR1cmUgdGVzdCB0byBoYW5kbGUgbm90aWZpY2F0aW9ucyBwcm9wZXJseS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBpbmNsdWRlL2RzZHJpdmVyLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2FwdHVyZSB0aHJlYWQgY2hlY2tzIHF1ZXVlIGZvciBtb3JlIGhlYWRlcnMgYmVmb3JlIGdpdmluZyBlcnJvci4KCUNhcHR1cmUgZHJpdmVyIHdvcmsgc3RhcnRlZC4KCjIwMDMtMDItMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6CglPbmx5IGRvIHRoZSB1bmxvYWRfZGxsIHNlcnZlciBjYWxsIGF0IHRoZSB0aW1lIHdlIGFjdHVhbGx5IHVubG9hZCB0aGUKCWRsbC4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglTdXNwZW5kZWQgdGhyZWFkcyBzaG91bGQgbm90IGFjcXVpcmUgc3luY2hyb25pemF0aW9uIG9iamVjdHMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIHN1cHBvcnRlZCBQbGF0Zm9ybXMgZGlkbid0IG1lbnRpb24gTWFjT1MgWCBwcm9taW5lbnRseSBlbm91Z2ggYnkKCSAgZmFyLi4uCgktIGFkZCBzb21lIFVSTHMsIGNvcnJlY3QgVVJMIGhhbmRsaW5nCgktIHJlbW92ZSBsaW51eC5jb3JlbC5jb20sIGFzIGl0J3MgREVBRCA6LVwKCjIwMDMtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJUHJvcGVybHkgc2F2ZS9yZXN0b3JlICVncyByZWdpc3RlciBhY3Jvc3MgMTYtYml0IGNhbGxzLgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3V0dGh1bmsuYywKCSAgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywKCSAgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2hvb2sxNi5jLAoJICBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgZGxscy91c2VyL3duZDE2LmMsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5tbS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGluY2x1ZGUvd293bnQzMi5oLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHdpbmRvd3MvZHJpdmVyLmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVJlcGxhY2VkIG1vc3QgdXNlcyBvZiB0aGUgYXV0by1nZW5lcmF0ZWQgZ2x1ZSBjb2RlIGJ5IGV4cGxpY2l0IGNhbGxzCgl0byBXT1dDYWxsYmFjazE2RXguCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IEFsYmVydG8gTWFzc2FyaSA8YW1hc3NhcmlAcHJvZ3Jlc3MuY29tPgoJRml4ZXMgdG8gSVNoZWxsRm9sZGVyOjpHZXRBdHRyaWJ1dGVzT2Y6CgktIGJlZm9yZSBjb21wdXRpbmcgdGhlIGZsYWdzIGZvciB0aGUgcmVxdWVzdGVkIGVudHJ5LCByZXNldCB0aGUgYml0cwoJICB3ZSBkb24ndCBzdXBwb3J0LCBvciB3ZSB3aWxsIHRlbGwgc29tZXRoaW5nIHdlIGRpZG4ndCB3YW50IHRvLgoJLSBpbnN0ZWFkIG9mIHVzaW5nIGFuIGhleGFkZWNpbWFsIG1hc2sgZm9yIHRoZSB1bnN1cHBvcnRlZCBmbGFncywgdXNlCgkgIGEgbWFzayBtYWRlIG9mIHRoZSBzdXBwb3J0ZWQgb25lcwoJLSByZXBsYWNlIHRoZSBvYnNjdXJlIGhleGFkZWNpbWFsIHZhbHVlcyB3aXRoIHRoZSBwcm9wZXIgbWFjcm9zCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBDcmVhdGVUaHJlYWQxNiB0byBrZXJuZWwsIGFuZCBtYWRlIGl0IHVzZSBXT1dDYWxsYmFjazE2LgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBwcm9ncmFtcy93aW5lZGJnL2ludHZhci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIFVzZVhUZXJtIGludGVybmFsIHZhcmlhYmxlLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gZG9uJ3QgY3JlYXRlIGEgbmV3IGNvbnNvbGUgdXBvbiBzdGFydHVwCgktIG5vIGxvbmdlciBhc3N1bWUgd2UncmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgY29uc29sZQoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluOgoJR2V0IHJpZCBvZiB3aW4xNmRydiBkaXJlY3RvcnkuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2dkaS5leGUuc3BlYzoKCVJlbW92ZWQgdGhlIDE2LWJpdCBncmFwaGljcyBkcml2ZXIgc3VwcG9ydDsgdGhpcyBoYXMgYmVlbiBicm9rZW4gZm9yIGEKCWxvbmcgdGltZSBhbnl3YXkuCgoyMDAzLTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvbWlzY2VtdS5oLAoJICBpbmNsdWRlL3NlbGVjdG9ycy5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xkdC5jLAoJICBsb2FkZXIvdGFzay5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIExEVCBzZWxlY3RvciBhbGxvY2F0aW9uIHJvdXRpbmVzIHRvIGxpYndpbmUuCglBZGRlZCBzdXBwb3J0IGZvciBjb3JyZWN0IGxvY2tpbmcgb2YgYWxsIExEVCBvcGVyYXRpb25zLgoJQWRkZWQgc2VwYXJhdGUgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgdGhlICVmcyBzZWxlY3Rvciwgd2hpY2ggYWxsb3dzCgl1c2luZyBhIGdsb2JhbCBHRFQgc2VsZWN0b3Igb24gcmVjZW50IExpbnV4IGtlcm5lbHMuCgoJKiBmaWxlcy9maWxlLmM6CglNb3ZlRmlsZVtBV10gc2hvdWxkIHNpbXBseSBjYWxsIE1vdmVGaWxlRXhbQVddLiBTaG91bGQgZml4IGlzc3VlCglyZXBvcnRlZCBieSBSb2RlcmljayBDb2xlbmJyYW5kZXIuCgoJKiBkbGxzL3dpbmVkb3Mvc291bmRibGFzdGVyLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJSW1wbGVtZW50ZWQgRFNQIFZlcnNpb24gY29tbWFuZC4KCgkqIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwKCSAgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy93cml0ZXJlcy5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBhc3NlbWJseSBnZW5lcmF0aW9uIGZyb20gd3JjLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgY29udHJvbGxlciBpbmZvIGFuZCBzdGF0ZS9mdW5jdGlvbmFsaXR5IGluZm8gaW5pdGlhbGl6YXRpb24gdG8KCXdpbmVkb3MuIENvbnZlcnQgbWFueSBpbmNvcnJlY3RseSBzdGF0aWMgZmllbGRzIGludG8gZHluYW1pYwoJZmllbGRzLiBGaXggdmVzYSBtb2RlIHJlcG9ydGluZyBhbmQgcmVhbGxvYyBtZW1vcnkgYmxvY2sgY29uc2lzdGVuY3kKCWNoZWNrcy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJlaGF2aW9yIHdoZW4gY2hhbmdpbmcgYm90aCBzYiBhbmQgd2luIHNpemUsIGFzIHRoZSBvcmRlciBvZgoJb3BlcmF0aW9uIGlzIGltcG9ydGFudCB0byBrZWVwIHNiIGFsd2F5cyBiaWdnZXIgdGhhbiB3aW4uCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJT25seSBwcmludCA0IGhleGRpZ2l0cyBmb3IgdGlkLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQ2hlY2sgYm90aCBwb2ludGVycyBpbiBHZXRDb250YWluaW5nVHlwZUxpYi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvZ2xvYmFsLmM6CglNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUltcGxlbWVudGVkIEdsb2JhbE1lbW9yeVN0YXR1c0V4KCkuCgoJKiBpbmNsdWRlL2RvY29iai5oOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUFkZCBzb21lIE9MRUNNRElEcyBwcmVzZW50IGluIE1TIGhlYWRlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCU1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQWRkZWQgYSAiYmFzaWMgdXNhZ2UiIHNlY3Rpb24gdGhhdCBkZWFscyB3aXRoIGluc3RhbGxhdGlvbiwKCXVuaW5zdGFsbGF0aW9uIGFuZCBjb250cm9sIHBhbmVsIGFwcGxldHMgdG8gdGhlICJSdW5uaW5nIFdpbmUiIHBhcnQgb2YKCXRoZSB1c2VycyBndWlkZS4KCjIwMDMtMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUFkZGVkIHNlbmRfdGhyZWFkX3NpZ25hbCgpIGZ1bmN0aW9uIGFuZCBwcm9wZXJseSBoYW5kbGUgZXJyb3JzIGNhdXNlZAoJYnkgdGhlIHRocmVhZCBoYXZpbmcgYWxyZWFkeSBkaWVkIHdoZW4gd2Ugc2VuZCBpdCBhIHNpZ25hbC4KCVVzZSAtMSBpbnN0ZWFkIG9mIDAgYXMgaW52YWxpZCBVbml4IHBpZCB2YWx1ZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBBdm9pZCBzb21lIHJlZHVuZGFudCBjYWxscyB0byB0aW1lKE5VTEwpLgoJdG91Y2hfa2V5KCkgbXVzdCBub3QgYmUgY2FsbGVkIGluIGNyZWF0ZV9rZXkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVHVybiBvZmYgLVdwb2ludGVyLWFyaXRoIGlmIGl0IGdlbmVyYXRlcyB3YXJuaW5ncyB3aGVuIGluY2x1ZGluZwoJc3RyaW5nLmguCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFRpbSBTZWdhbGwgPHRpbUBjb2JiZXIuY29tPgoJQWNjZXB0IGVpdGhlciBUVklfUk9PVCBvciBOVUxMIGZvciB0aGUgcGFyZW50IHRvIGltcGx5IHNvcnQgdGhlIGVudGlyZQoJdHJlZS4KCgkqIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gbWFkZSBzdXBwb3J0IGZvciBwYWdlZCBvdXRwdXQgYSBnZW5lcmljIGZlYXR1cmUgaW4gd2NtZAoJLSByZXdyb3RlIERJUiBjb21tYW5kIGFjY29yZGluZ2x5CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRm9yYmlkcyBzZWxlY3RpbmcgKGZvciBjbGlwYm9hcmQpIGFyZWFzIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwKCXNjcmVlbi1idWZmZXIgc2l6ZS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW50ZXJuZXRPcGVuVXJsQSAoaHR0cC9zIGNhc2UpOiBVc2UgY2xpZW50IGZvciBIdHRwT3BlblJlcXVlc3RBLCBkb24ndAoJaW5zZXJ0IEhPU1Q6IHR3aWNlLgoJSHR0cEFkZFJlcXVlc3RIZWFkZXJzQTogYWxsb3cgbHBzekhlYWRlciA9PSBOVUxMLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5vIG5lZWQgdG8gc3VwcG9ydCAtbXdpbmRvd3MgYXMgYSBzeW5vbmltIGZvciAtbWd1aTogaXQncyBhIGdjYy1pc20KCXRoYXQgaXMgaGFuZGxlZCBpbiB3aW5lZ2NjLgoJTGluayBpbiBHREkgb25seSBpbiBndWkgbW9kZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCU5vdyBjb21waWxlcyBvbiB3aW5kb3dzLiAgQWRkZWQgYSBjb3VwbGUgbW9yZSBjaGVja3MuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRGVmaW5lIENEX1NFQ1MgYW5kIENEX0ZSQU1FUyBhbHNvIG9uIG5vbi1MaW51eCBzeXN0ZW1zLiAgQXZvaWQgYQoJbm9uLXBvcnRhYmxlIFRSQUNFIG9uIG5vbi1MaW51eCBzeXN0ZW1zLgoKMjAwMy0wMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJUGFzcyB0aGUgcGlkIG9mIHRoZSBuZXcgcHJvY2VzcyBpbiB0aGUgbmV3X3Byb2Nlc3MgcmVxdWVzdCwgZG9uJ3QKCWRlcGVuZCBvbiB0aGUgcGFyZW50IHBpZCB0byBmaW5kIHRoZSBzdGFydHVwIGluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglSZW1vdmUgc29tZSB1bnJlYWNoYWJsZSBjb2RlLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIHByb2JsZW0gZ2V0dGluZyB0aGUgR1VJRCB0byBjb21waWxlIHVuZGVyIHdpbmRvd3MgYW5kIHdpbmUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggVFJBQ0UgZm9ybWF0IHN0cmluZy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnQgR2V0RGV2aWNlSW5mbyBhbmQgR2V0T2JqZWN0SW5mbyBmb3IgdGhlIGtleWJvYXJkIGRldmljZS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfWmgucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjaGVja3Mgd2hlbiBlZGl0aW5nIHdpbmRvdyBhbmQgc2Igc2l6ZSBzbyB0aGF0IHRoZXkgYXJlIGtlcHQKCWNvbnNpc3RlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGhhbmRsaW5nIGZvciBQU05SRVRfSU5WQUxJRCBpbiBQU05fQVBQTFkgbm90aWZpY2F0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTZXQgYSBkZWZhdWx0IDUwIGxpbmVzIGluIGhpc3RvcnkgZm9yIGNvbnNvbGUgYXBwcy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCU1ha2UgJ2NtZCAvYyBjbCAvTVVNQkxFIGZvby5jJyBwYXNzIC9NVU1CTEUgdG8gY2wuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgbWlzc2luZyBMZWF2ZUNyaXRpY2FsU2VjdGlvbidzIGluIGVycm9yIHBhdGguCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUHJpbnQgb3V0IG5hbWUgb2YgZmxvYXQgZXhjZXB0aW9ucy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUxpbmsgaW4gc2hlbGwzMiBvbmx5IGluIGd1aSBtb2RlLgoJQWRkIGFsbCB0aGUgc3RhbmRhcmQgZGVmaW5lcyB0aGF0IE1pbkdXIHByb3ZpZGVzICh3aXRoIHRoZSBleGNlcHRpb24KCW9mIF9fTUlOR1dfXywgdGhhdCdzIE1pbkdXIHByZXJvZ2F0aXZlKS4KCURvIG5vdCBwYXNzIGFsb25nIGxpbmtlciBvcHRpb25zIHdoZW4gb25seSBjb21waWxpbmcuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIERpcmVjdFNvdW5kRnVsbER1cGxleCBhbmQgbW92ZWQgc29tZSBHVUlEcwoJYXJvdW5kLgoKMjAwMy0wMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMDIxOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmU6IEFkZGVkIHBpcGUub2suCgoJKiBBVVRIT1JTLCBkbGxzL3NoZWxsMzIvYXV0aG9ycy5oOiBVcGRhdGVkIGF1dGhvcnMgbGlzdC4KCgkqIHNlcnZlci9jb25zb2xlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVhZC1vdmVyZmxvdyBzcG90dGVkIGJ5IHZhbGdyaW5kLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUlnbm9yZSBnZXQgc2hhZG93IGJ1ZmZlciBmdW5jdGlvbi4KCVJlbWVtYmVyIHRvIHN5bmNocm9uaXplIFZHQSBkaXNwbGF5IG9uIHByb2dyYW0gZXhpdCBiZWNhdXNlIHVwZGF0ZQoJdGhyZWFkIG1heSBub3QgaGF2ZSB0aW1lIHRvIHJ1bi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJRml4ZWQgaW5zdGFsbGF0aW9uIG9yZGVyIG9mIGxpbmthYmxlIGRsbHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgaW5jbHVkZS9taXNjZW11LmgsCgkgIG1lbW9yeS9nbG9iYWwuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIHJlc2l6ZSBtZW1vcnkgYmxvY2sgdG8gd2luZWRvcyBhbmQgbWFrZSBpdCByZXNpemUgaW4gcGxhY2UgYW5kCgl3b3JrIGNvcnJlY3RseSBldmVuIHdoZW4gdHJ5aW5nIHRvIGFsbG9jYXRlIHRvbyBtdWNoIG1lbW9yeS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUm91Z2ggaW1wbGVtZW50YXRpb24gb2YgX09fVEVYVC9fT19CSU5BUlkgdHJhbnNsYXRpb24gYnkgZG9pbmcgc2luZ2xlCglieXRlIHJlYWQvd3JpdGVzIGluIF9PX1RFWFQgbW9kZSBhbmQgQ1IvTFIgaGFuZGxpbmcuCglmcHV0L2dldHdjIG11c3QgcmVhZCBtdWx0aWJ5dGUgY2hhcmFjdGVycyBpbiBfT19URVhULgoJQWRkZWQgdGVzdCBjYXNlcyBmb3IgX09fVEVYVC9fT19CSU5BUlkgZmlsZSBoYW5kbGluZyBhbmQgZmdldHdzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJLSBTb21lIHN5c3RlbXMvZHJpdmVzIGFyZSB2ZXJ5IHNsb3cgdG8gcmVhZCB0aGUgVE9DLiBUbyBhZGRyZXNzIHRoaXMKCSAgaXNzdWUsIHdlIGFyZSBjYWNoaW5nIGl0IGluc2lkZSB0aGUgZHJpdmVyLgoJLSBXaW5kb3dzIHdpbGwgc2VlayB3aGlsZSBub3QgcGxheWluZywgTGludXggd2lsbCBub3QuIFdlIGFyZQoJICBwcm92aWRpbmcgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5kb3dzIGJ5IGFsc28gY2FjaGluZyB0aGUKCSAgY3VycmVudCBwb3NpdGlvbi4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCUF2b2lkIHBsYXlpbmcgZGF0YSB0cmFja3MuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgd2FybmluZ3MuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6CglEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJQWRkZWQgY2hlY2sgZm9yIGlsbGVnYWwgcGlwZSBuYW1lcy4KCUFkZGVkIHJlZ3Jlc3Npb24gdGVzdC4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ29udmVydCBUd2lwcyB2YWx1ZXMgZnJvbSB0aGUgcmVnaXN0cnkuCgoJKiBjb250cm9scy9lZGl0LmM6IFNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJRGlldHJpY2ggVGVpY2tuZXIgPERpZXRyaWNoX1RlaWNrbmVyQHQtb25saW5lLmRlPgoJLSBGaXhlZCBpbmNvcnJlY3QgdW5kbyBidWZmZXIgc2l6ZSAocHJldmlvdXMgY29kZSBjYXVzZWQgaGVhcAoJICBjb3JydXB0aW9uIHdoZW4gdXNpbmcgYmFja3NwYWNlIG1hbnkgdGltZXMpLgoJLSBBbHdheXMga2lsbCB0aW1lciB3aGVuIGxlZnQgbW91c2UgYnV0dG9uIGlzIHJlbGVhc2VkIGFuZCBpbiBjYXB0dXJlZAoJICBzdGF0ZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmgsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGb3IgYmV0dGVyIGNvbmN1cnJlbmN5LCBzZXBhcmF0ZSB0aGUgY29ubmVjdGlvbnMgZnJvbSB0aGUgYmluZGluZ3MuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAdC1tb2JpbGUuYXQ+CgktIEltcGxlbWVudCBSdGxDaGFyVG9JbnRlZ2VyLCBSdGxFeHRlbmRlZE1hZ2ljRGl2aWRlLCBSdGxVcHBlckNoYXIsCgkgIFJ0bEludDY0VG9Vbmljb2RlU3RyaW5nLCBSdGxJbnRlZ2VyVG9DaGFyLCBSdGxJbnRlZ2VyVG9Vbmljb2RlU3RyaW5nLAoJICBSdGxMYXJnZUludGVnZXJUb0NoYXIsIFJ0bFVuaWNvZGVTdHJpbmdUb0ludGVnZXIgYW5kCgkgIFJ0bFVwY2FzZVVuaWNvZGVDaGFyLgoJLSBVc2UgdG91cHBlclcgaW5zdGVhZCBvZiB0b3VwcGVyIGluIFJ0bENvbXBhcmVVbmljb2RlU3RyaW5nLgoKCSogZGxscy9tc3ZjcnQvZGlyLmM6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCS0gQXZvaWQgcG9zc2libGUgc2VnIGZhdWx0IHdoZW4gY2FsbGluZyBUUkFDRSB3aXRoIE5VTEwgc3RyaW5nIHBvaW50ZXJzLgoJLSBGaXggYmFkIHNpZGUtZWZmZWN0IG9mIG1ha2VwYXRoIG9uIGlucHV0IHBhcmFtZXRlcnMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglJbmNyZWFzZSBzaXplIG9mIGluc3VmZmljaWVudGx5IGJpZyBzdGFjayBhbGxvY2F0ZWQgYnVmZmVyIHVzZWQgZm9yCgllcnJvciBtZXNzYWdlcyBpbiBQUk9DRVNTX0luaXRXaW5lLgoKCSogZGxscy9rZXJuZWwvZWRpdGxpbmUuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiB1cGRhdGluZyB0aGUgZWRpdGVkIGxpbmUsIHJlbWVtYmVyIHRvIHVwZGF0ZSBhdHRyaWJ1dGVzLCB0b28uCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIHJlbW92ZWQgdW51c2VkIGZ1bmN0aW9uOiBTZXRTeW1ib2xWYWx1ZQoJLSBlbmhhbmNlZCBhIGJpdCBBZGRTeW1ib2wgcmVnYXJkaW5nIGludmFsaWQgc3ltYm9sIG1hbmFnZW1lbnQgKGFuZAoJICBlbmhhbmNlZCBpdHMgdHJhY2VzKQoJLSBub3cgcHJpbnRpbmcgdHlwZSBpbmZvcm1hdGlvbiBpbiAnaW5mbyBzeW0nCgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBhZGRlZCBwYXJzaW5nIG9mIEMrKyBpbmhlcml0ZW5jZSBpbmZvcm1hdGlvbgoJLSBhZGRlZCBhbiBpbnRlcm5hbCB0cmFjZSBmb3IgZGlzcGxheWluZyBlcnJvcnMgaW4gdHlwZWRlZiBwYXJzaW5nCgktIGVuaGFuY2VkIEVMRiBzeW1ib2wgbWFuYWdlbWVudCAoZGlyZWN0IGNhbGwgdG8gQWRkU3ltYm9sIGluIEVMRgoJICBoZWFkZXIpCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBIGZpeCB0byBnZXQgZWRpdCBjb250cm9sIHNjcm9sbHMgYmFycyB0byBkcmF3IGluIHRoZSBjb3JyZWN0Cglwb3NpdGlvbi4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAdC1tb2JpbGUuYXQ+CglUZXN0cyBmb3IgUnRsQ2hhclRvSW50ZWdlciwgUnRsRXh0ZW5kZWRNYWdpY0RpdmlkZSwgUnRsVXBwZXJDaGFyLAoJUnRsSW50NjRUb1VuaWNvZGVTdHJpbmcsIFJ0bEludGVnZXJUb0NoYXIsIFJ0bEludGVnZXJUb1VuaWNvZGVTdHJpbmcsCglSdGxMYXJnZUludGVnZXJUb0NoYXIsIFJ0bFVuaWNvZGVTdHJpbmdUb0ludGVnZXIgYW5kCglSdGxVcGNhc2VVbmljb2RlQ2hhci4KCgkqIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAdC1tb2JpbGUuYXQ+CgktIEltcGxlbWVudCBSdGxDaGFyVG9JbnRlZ2VyLCBSdGxFeHRlbmRlZE1hZ2ljRGl2aWRlLCBSdGxVcHBlckNoYXIsCgkgIFJ0bEludDY0VG9Vbmljb2RlU3RyaW5nLCBSdGxJbnRlZ2VyVG9DaGFyLCBSdGxJbnRlZ2VyVG9Vbmljb2RlU3RyaW5nLAoJICBSdGxMYXJnZUludGVnZXJUb0NoYXIsIFJ0bFVuaWNvZGVTdHJpbmdUb0ludGVnZXIgYW5kCgkgIFJ0bFVwY2FzZVVuaWNvZGVDaGFyLgoJLSBVc2UgdG91cHBlclcgaW5zdGVhZCBvZiB0b3VwcGVyIGluIFJ0bENvbXBhcmVVbmljb2RlU3RyaW5nLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6IEFsYmVydG8gTWFzc2FyaSA8YW1hc3NhcmlAcHJvZ3Jlc3MuY29tPgoJLSB0aGUgZmlyc3QgYXJndW1lbnQgaW4gc2V2ZXJhbCBVbmljb2RlIGZ1bmN0aW9ucyB3YXMgYW4gQVNDSUkgc3RyaW5nCgkgIGluc3RlYWQgb2YgYSBVbmljb2RlIG9uZQoJLSBhZGRlZCBtb3JlIG1hY3JvIGRlZmluaXRpb25zCgoJKiBpbmNsdWRlL3JwY3Byb3h5Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJIkltcGxlbWVudGVkIiBJSURfQlNfKiBtYWNyb3MuCgoJKiBzZXJ2ZXIvcXVldWUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyByZWxlYXNlX29iamVjdC4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jaGFuZ2UuYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2ZkLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hvb2suYywKCSAgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbWIuYywKCSAgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLAoJICBzZXJ2ZXIvdGltZXIuYzoKCU1vdmVkIGFsbCByZWZlcmVuY2VzIHRvIGZpbGUgZGVzY3JpcHRvcnMgb3V0IG9mIHRoZSBnZW5lcmljIG9iamVjdAoJc3RydWN0dXJlLgoJQ2hhbmdlZCB0aGUgcG9sbCgpLXJlbGF0ZWQgcm91dGluZXMgdG8gZGVhbCB3aXRoIGZpbGUgZGVzY3JpcHRvcnMKCWluc3RlYWQgb2Ygb2JqZWN0cyBhbmQgaW50ZWdyYXRlZCBwb2xsIHN1cHBvcnQgaW50byBmZC5jLgoKMjAwMy0wMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy91c2VyL2hvb2suYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLAoJICBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3Mvc3B5LmM6CglQcmludCB0aHJlYWQgaWRzIGluIHRyYWNlcyB3aXRoIG9ubHkgNCBkaWdpdHMgbm93IHRoYXQgdGhleSBhcmUgc21hbGwKCWludGVnZXJzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogUHJpbnQgZGxsIG5hbWUgdG9vIGZvciBzdHViIGV4Y2VwdGlvbnMuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglDb3JyZWN0bHkgZW5jb2RlIHdQYXJhbSBmb3IgV01fU1lTQ09NTUFORCxTQ19TSVpFIG1lc3NhZ2VzLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYzogQWxiZXJ0byBNYXNzYXJpIDxhbWFzc2FyaUBwcm9ncmVzcy5jb20+CglBZGRlZCBzdHViIGZvciBDcnlwdFVucHJvdGVjdERhdGEuCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGQgZW50cnkgZm9yIG5vIGh0bWwgaW4gcGF0Y2hlcy4KCgkqIHRvb2xzL3dpbmVnY2MuYywgdG9vbHMvd2luZXdyYXAuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0B0LW1vYmlsZS5hdD4KCS0gRml4IHNtYWxsIGJ1ZyBpbiBSdGxGaW5kTW9zdFNpZ25pZmljYW50Qml0LiBJdCByZXR1cm5lZCBzb21ldGltZXMKCSAgd3JvbmcgcmVzdWx0cyBpZiBtb3JlIHRoZW4gb25lIGJpdCB3YXMgc2V0LgoJLSBVcGRhdGUgdGhlIHRlc3QgY2FzZXMgYXMgd2VsbC4KCjIwMDMtMDItMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvbWFwcGluZy5jOgoJTWFrZSBzdXJlIGdldF9maWxlX3NpemUgdXNlcyBhIHZhbGlkIGZkIChzcG90dGVkIGJ5IFV3ZSBCb25uZXMpLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJU2V0IGRlZmF1bHQgbG9hZG9yZGVyIHRvIG5hdGl2ZSBmb3IgZGxscyB0aGF0IGNvbnRhaW4gYW4gZXhwbGljaXQKCXBhdGguCgoJKiBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJVXBkYXRlZCByZWdyZXNzaW9uIHRlc3RpbmcgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGxvd2VkIHdhdmVJbk1lc3NhZ2UgdG8gdXNlIHBoeXNpY2FsIGluZm9ybWF0aW9uIChhcyB3YXZlT3V0IGRvZXMpLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTkRSIG1hcnNoYWxsaW5nIGZpeGVzLgoKCSogZGxscy9ycGNydDQvY3BzZi5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1ha2UgTmRyRGxsUmVnaXN0ZXJQcm94eSB1c2UgdGhlIGludGVyZmFjZSBzdHViIGhlYWRlciBpbnN0ZWFkIG9mIHRoZQoJaW50ZXJmYWNlIHByb3h5IGhlYWRlciB0byBhdm9pZCBzdHVibGVzcyBwcm94eSBhbWJpZ3VpdGllcy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGFkZGVkIEdldE5hbWUoKSB0byByZXRyaWV2ZSB0eXBlIG5hbWUKCS0gcmVpbXBsZW1lbnRlZCBEdW1wVHlwZXMgc28gdGhhdCBpdCByZWFsbHkgZHVtcHMgdGhlIHR5cGVzIGNvbnRlbnQKCS0gbm93IHByaW50aW5nIHR5cGUgaW5mb3JtYXRpb24gaW4gJ2luZm8gc3ltJwoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueTogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBleHByIGZyZWVpbmcgd2hlbiB0cmFuc2xhdGluZyBhIGNvbW1hbmQgKG5vIGxvbmdlciBkb25lIG9uIGVhY2gKCWNvbW1hbmQgd2hpY2ggdXNlcyBhbiBleHByKS4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCVJlaW1wbGVtZW50ZWQgZGlzdGFuY2UgYXR0ZW51YXRpb24gZm9ybXVsYS4KCVJlbW92ZWQgY29uaW5nIGZvcm11bGEgc2luY2UgaSBiZWxpZXZlIGl0J3MgaW5hcHByb3ByaWF0ZS4KCjIwMDMtMDItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIEltcGxlbWVudGVkIHR3byBsb29rdXAgdGFibGVzIGZvciB0aGUgc2FtcGxlIGZvbnRzLiBUaGUgZmlyc3QsCgkgICJDSEFSU0VUX09SREVSIiwgaXMgZm9yIGNvbnZlcnRpbmcgY29kZXBhZ2UgdG8gb3JkaW5hbCBjaGFyc2V0IG51bSwKCSAgYW5kIHRoZSBzZWNvbmQsICJTQU1QTEVfTEFOR19URVhUIiwgaXMgZm9yIGdpdmluZyB0aGUgYWN0dWFsIHNhbXBsZQoJICB0ZXh0LgoJLSBSZW1vdmVkIGFsbCByZWZlcmVuY2VzIHRvIGNoYW5naW5nIHRoZSBmb250IGRpcmVjdGx5IGluIHN0YzUuCgktIE1vZGlmaWVkIHRoZSAiSW52YWxpZGF0ZVJlY3QiIGNhbGxzIHRvIGludmFsaWRhdGUgdGhlIHJlY3Qgd2hlcmUKCSAgc3RjNSBpcywgcmF0aGVyIHRoYW4gc3RjNSBpdHNlbGYuCgktIEFkZGVkIGhhbmRsaW5nIG9mIFdNX1BBSU5UIHRoYXQgZHJhd3MgdGhlIHNhbXBsZSB0ZXh0LCBwcm9wZXJseQoJICB0cnVuY2F0ZWQuCgktIFJlbW92ZWQgaGFuZGxpbmcgb2YgV01fQ1RMQ09MT1IgLSBubyBsb25nZXIgbmVjY2Vzc2FyeS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgZGlyZWN0IHNvdW5kIGNhcHR1cmUgYW5kIGEgcmVhbCBkaXJlY3Qgc291bmQgY2FwdHVyZQoJZHJpdmVyLiBDYXB0dXJlIG5vdyB3b3JrcyB3aXRoIHNvbWUgc2tpcHBpbmcuIEZ1bGwgZHVwbGV4IGRvZXMgbm90IGJ1dAoJSSB3aWxsIGJlIHdvcmtpbmcgb24gdGhhdCBuZXh0LgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGFkZGl0aW9uYWwgZm9ybWF0cy4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW4gcmVhZC93cml0ZSBwb3NpdGlvbnMgd2hlbiB0aGUgZm9ybWF0IGlzIG1hcHBlZAoJdXNpbmcgYWNtLgoJRml4ZWQgYSBidWcgd2hlcmUgdGhlIG51bWJlciBvZiB3YXZlT3V0IGRldmljZXMgaXMgdXNlZCB3aGVuIGl0ZXJhdGluZwoJb3ZlciB3YXZlSW4gZGV2aWNlcy4KCjIwMDMtMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVN0YXJ0ZWQgdG8gYWRkIHN1cHBvcnQgZm9yIGEgcmVhbCBkaXJlY3Qgc291bmQgY2FwdHVyZSBkcml2ZXIuCglDaGFuZ2VkIHRoZSBjYXB0dXJlIGZyYWdtZW50IHNpemUgYnV0IHRoaXMgc3RpbGwgbmVlZHMgdHVuaW5nIGZvciBiZXN0CglwZXJmb3JtYW5jZS4KCgkqIGluY2x1ZGUvZHNkcml2ZXIuaCwgaW5jbHVkZS9kc291bmQuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZC9maXhlZCBzb21lIGRlZmluaXRpb25zIGZvciBkaXJlY3Qgc291bmQgY2FwdHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVN1cHBvcnQgdGhlIHVuZG9jdW1lbnRlZCBiZWhhdmlvciBvZiBkZWxldGluZyBjb2x1bW4gemVyby4KCgkqIHNlcnZlci9zbmFwc2hvdC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gaW4gcHJvY2VzcyBwYXJlbnQgaGFuZGxpbmcuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJUm9sbCBsb29wIGJhY2sgdXAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CgktIG1ha2Ugd29ybGQgdHJhbnNmb3JtcyB3b3JrIGluIEVNRnMKCS0gZml4IGRlY2xhcmF0aW9uIG9mIEdESUNPTU1FTlRfKiBtYWNyb3MKCS0gcmVmdXNlIHRvIGxvYWQgdW5hbGlnbmVkIEVNRnMKCS0gZml4IFNldFdpbk1ldGFGaWxlQml0cwoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgaW5jbHVkZS9sbXdrc3RhLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTZXBhcmF0ZSAiRW51bWVyYXRlIEhhcmR3YXJlIEFkZHJlc3NlcyIgYXMgZnVuY3Rpb24sIGFzIG90aGVyIG5ldGFwaTMyCglmdW5jdGlvbiBuZWVkIGl0LgoJSW1wbGVtZW50ZWQgbGV2ZWwgMCBvZiBOZXRXa3N0YVRyYW5zcG9ydEVudW0uCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUltcGxlbWVudGVkIF9tYnNuYmNhdC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9hdG9tLmMsCgkgIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwKCSAgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmMsCgkgIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsCgkgIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwKCSAgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9ob29rLmMsIHNlcnZlci9tYXBwaW5nLmMsCgkgIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvb2JqZWN0LmMsCgkgIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbWIuYywKCSAgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmMsCgkgIHNlcnZlci90cmFjZS5jLCB3aW4zMi9kZXZpY2UuYzoKCUNoYW5nZWQgZmQgb3BlcmF0aW9ucyB0byB0YWtlIGEgc3RydWN0IGZkIGluc3RlYWQgb2YgYSBzdHJ1Y3Qgb2JqZWN0LgoJUmVtb3ZlZCBnZXRfZmlsZV9pbmZvIGZ1bmN0aW9uIGZyb20gb2JqZWN0IG9wZXJhdGlvbnMuCglBZGRlZCBnZXRfZGV2aWNlX2lkIHJlcXVlc3QgdG8gYXZvaWQgYWJ1c2luZyBnZXRfZmlsZV9pbmZvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29ycmVjdGx5IHJlbWVtYmVyIHRoZSBmaXJzdCBwYWludCBldmVudCwgYnV0IGRlbGF5IGl0ZW0gbWV0cmljcwoJY2FsY3VsYXRpb24gdW50aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21lIGl0ZW1zLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBtb3VzZSBldmVudCBnZW5lcmF0aW9uCgktIGJldHRlciBtYW5hZ2VtZW50IG9mIHNvbWUga2V5cwoJLSBub3cgZ2VuZXJhdGluZyBzZXZlcmFsIHdpbmNvbi1ldmVudHMgZm9yIGEgZ2l2ZW4gY3Vyc2VzLWV2ZW50CgktIGFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIFYtc2Nyb2xsaW5nIChkaXNhYmxlZCBieSBkZWZhdWx0KQoJLSBmaXhlZCBwcmludGluZyBvZiBzb21lIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMKCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglPdXRwdXR0aW5nIGJhY2tzcGFjZXMgc2hvdWxkIG9ubHkgbW92ZSB0aGUgY3Vyc29yLgoJVGV4dCBidWZmZXIgY29weSBpcyBub3cgYWx3YXlzIGluaXRpYWxpemVkIGNvcnJlY3RseS4KCVByZXNlcnZlIHZpZGVvIG1lbW9yeSBmbGFnIGlzIHBhcnNlZCBhbmQgdGV4dCBzY3JlZW4gaXMgbm93IHJlYWxseQoJY2xlYXJlZCB3aGVuIGZsYWcgaXMgY2xlYXIuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglSZW1vdmVkIHRoZSBub25leGlzdGFudCBjb21tYW5kICJkZWJ1Z21zZyIgZnJvbSB3aW5lZGJnIGhlbHAgc2NyZWVuLgoKMjAwMy0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVzZSB0aGUgZHdTdGFydFZlcnRleCBhcmd1bWVudCBpbiB0aGUgRHJhdypQcmltaXRpdmVWQiBtZXRob2RzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlIGFsZ29yaXRobSB0byBkZXRlY3QgbGlnaHRlZCAvIHVubGlnaHRlZCB2ZXJ0aWNlcy4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGFuZGxlIHRoZSBDT0xPUlZFUlRFWCByZW5kZXIgc3RhdGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglUcmFjZSBhZnRlciB0aGUgbWF0cml4IGhhcyBiZWVuIGNvcGllZCwgbm90IGJlZm9yZS4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6CglSZW1vdmVkIGRpcmVjdCByZWZlcmVuY2VzIHRvIHRoZSBmaWxlIGRlc2NyaXB0b3IsIHVzZSB0aGUgbmV3IGZkCglmdW5jdGlvbnMgaW5zdGVhZCBzbyB0aGF0IGdldF9mZCB3b3JrcyBwcm9wZXJseS4KCgkqIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzogU2VyZ2VpIFR1cmNoYW5vdiA8cGx1bWJlckBwcmludC52bGFkLnJ1PgoJLSBfU0hTdHJEdXBBQSBmb3Jnb3QgYWJvdXQgdGVybWluYXRpbmcgJ1wwJy4KCS0gU0hTdHJEdXBBIGFkZHMgZXh0cmEgdGVybWluYXRvciB3aGljaCBpcyBub3QgbmVlZGVkIGFzIHRoZSBsZW5ndGgKCSAgcmV0dXJuZWQgYnkgTXVsdGlCeXRlVG9XaWRlQ2hhcigsLC0xLCwpIGFscmVhZHkgaW5jbHVkZXMgaXQuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4IHdhcm5pbmcgaW4gX19jcnRMQ01hcFN0cmluZ0EuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgd2FybmluZ3MgY2F1c2VkIGJ5IGFzc2VydCguLi4pLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglSZXBsYWNlIEhFQVBfc3RyZHVwQXRvVyBjYWxsIGFuZCBkZWxldGUgZXh0cmEKCVJ0bENyZWF0ZVVuaWNvZGVTdHJpbmdGcm9tQXNjaWl6LgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGVkIEVudW1PYmplY3RzIGZvciB0aGUga2V5Ym9hcmQgZGV2aWNlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXhlZCBHZXRUcmFuc2Zvcm0KCS0gaW1wbGVtZW50ZWQgTXVsdGlwbHlUcmFuc2Zvcm0KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBmb2dnaW5nIGZvciB0cmFuc2Zvcm1lZCB2ZXJ0aWNlcy4KCgkqIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZGVkIHNvbWUgbWlzc2luZyBMZWF2ZUNyaXRpY2FsU2VjdGlvbidzLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL29sZTMyL3JwYy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVJlbW92ZSBkZWFkIGNvZGUgYWZ0ZXIgcmV0dXJuIG9yIHByb3Blcmx5IGNvbW1lbnQgaXQgb3V0LgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGQgZW50cnkgZm9yICJFcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKSIuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVdpbnNwb29sIGV4cGVjdHMgTlVMTHMgdG8gYmUgcHJlc2VydmVkIGluIGFzY2lpIHRvIHVuaWNvZGUKCWNvbnZlcnNpb25zLgoKCSogbG9hZGVyL2VsZi5jOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglJbmNyZWFzZSBzaXplIG9mIGluc3VmZmljaWVudGx5IGJpZyBzdGFjayBhbGxvY2F0ZWQgYnVmZmVyIHVzZWQgZm9yCgllcnJvciBtZXNzYWdlcyBpbiBFTEZfTG9hZExpYnJhcnlFeEEuCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2Lmg6CglXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBHZXREZXZpY2VDYXBzIGluIG1ldGFmaWxlIGRyaXZlci4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCUFkZGVkIEJZVEUgZXhwbGljaXQgY2FzdHMgaW4gUkdCIG1hY3JvIGRlZmluaXRpb24uCgoJKiBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOiBNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJTWFrZSB0cmFjZSBvdXRwdXQgcHJvZHVjZWQgYnkgd2luZWJvb3QgbW9yZSB1c2VmdWwuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlcG9ydCBhbiBlcnJvciBpZiBHZXREZXZpY2VEYXRhIGlzIGNhbGxlZCBvbiBhbiBVbmFjcXVpcmVkIGRldmljZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIHRvb2xzL3dpbmVjb25mOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCU1vZGlmeSB0aGUgd2luZWNvbmYgdGFncyBzbyB0aGF0IHRoZSBzYW1wbGUgY29uZmlnIGNhbiBiZSBpbmNsdWRlZCBpbgoJdGhlIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBjb21tZW50IGluIFpmcm9tWnByb2ouCglGaXggbWlzc2luZyBwYXRoIGluIGxpZ2h0aW5nIGNvZGUuCglNb3ZlIHNvbWUgT3BlbkdMIGZvZyBpbml0IHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSURpcmVjdDNERGV2aWNlN19Mb2FkLgoKMjAwMy0wMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbWIuYywKCSAgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeGVzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1zZG9zL2RwbWkuYywKCSAgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlb3JnYW5pemUgSU9DVEwgaGFuZGxpbmcuCglNb3ZlIEFTUEkgaG9va2luZyB0byB3aW5lZG9zLgoJTW92ZSBzb21lIG1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCglSZW1vdmUgdW5uZWNlc3NhcnkgZXhwb3J0cyBmcm9tIHdpbmVkb3MgZGxsLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFBFX2ZpeHVwX2ltcG9ydHMgcmVwb3J0ICJtb2R1bGUgZmlsZSBub3QgZm91bmQiIG9ubHkgaW4gY2FzZSBvZiBhCgkiZmlsZSBub3QgZm91bmQiIGVycm9yLiBPdGhlcndpc2UgcmVwb3J0IGZhaWx1cmUgYW5kIGVycm9yIG51bWJlci4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHVuZGVmaW5lZCBvcGVyYXRpb24gY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIGxvY2tpbmcgdG8gVkdBX1NldFdpbmRvd1N0YXJ0LgoJTW92ZSBjb25zb2xlIHVwZGF0ZXMgdG8gdXBkYXRlIHRocmVhZCBpbnN0ZWFkIG9mIGltbWVkaWF0ZWx5IHdyaXRpbmcKCXRvIGNvbnNvbGUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHN1cHBvcnQgZm9yIFZFU0EgbW9kZSBpbmZvcm1hdGlvbi4KCVJlb3JnYW5pemUgY29udHJvbGxlciBhbmQgc3RhdGUgaW5mb3JtYXRpb24gcm91dGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wdXRlIG1hdHJpeCBvZiBmaXJzdCBwYWludCB3aGVuIHdlIGFjdHVhbGx5IGhhdmUgc29tZSBpdGVtcwoJKHByb2JsZW0gZmlyc3Qgc3BvdHRlZCAmIGRlYnVnZ2VkIGJ5IER1YW5lIENsYXJrKS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBtaXNzaW5nIExpc3RWaWV3X1NldEl0ZW1Db3VudCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdHViIGZvciB1bmRvY3VtZW50ZWQgJ3dnbEdldERlZmF1bHRQcm9jQWRkcmVzcycgZnVuY3Rpb24uCgoJKiBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmM6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCUZpeCB3cm9uZyBzdHJ1Y3R1cmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNpemUgb2YgYSBtZW1jcHkgaW4KCU1GRFJWX0NyZWF0ZUJydXNoSW5kaXJlY3QuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCB0aW1lIHpvbmUgY2FsY3VsYXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2l0aCBoZWxwIGZyb20gRW5pbyBTY2h1dHQgSnIgPGVuaW8ucy5qckBvcGVyYW1haWwuY29tPgoJU2tpcCB0aGUgb3ZlcmxhcHBlZCBJL08gdGVzdHMgb24gZmlsZXMgb24gV2luOXguCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIF9fY3J0TENNYXBTdHJpbmdBLgoKCSogZGxscy9jdGwzZC9jdGwzZC5jLCBkbGxzL2N0bDNkL2N0bDNkMzIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglNYW5hZ2UgaW50ZXJuYWwgY3RsM2QgYXV0byBzdWJjbGFzcyBmbGFnLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglPbmx5IGluc3RhbGwgdGhlIGtleWJvYXJkIGhvb2sgb24gZGV2aWNlIGNyZWF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9leHRfZGVidWdnZXIuYywgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVRyYW5zbGF0ZWQgc3ByaW50ZiBjYWxscyBpbnRvIHNucHJpbnRmLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gdHJhbnNsYXRlZCBzcHJpbnRmIGNhbGxzIGludG8gc25wcmludGYKCS0gYWRkZWQgaGVscGVyIGZvciBzZW5kaW5nIHN0cmluZ3MgaW4gaGV4IGZvcm0KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUF0dGFjaCBjb21tYW5kIG5vIGxvbmdlciB3b3JrZWQgYXMgZXhwZWN0ZWQsIGZpeGVkIGl0LgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglGaXhlZCBoYW5kbGluZyBvZiBQQVRIIGNvbW1hbmQgd2l0aCBzcGFjZXMuCgoJKiB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBvcHRpb24gdG8gc2V0IHByZXByb2Nlc3NvciAobm90IHlldCBpbXBsZW1lbnRlZCkuCglSZW1vdmUgdGhlIC1OIG9wdGlvbiwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byAnLVAgY2F0Jy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBzdXBwb3J0IGZvciAyNCBicHAgdG8gX0JsdF9Db2xvckZpbGwuCglGaXggZW5kaWFubmVzcyBpc3N1ZSBpbiBESUJfRGlyZWN0RHJhd1N1cmZhY2VfQmx0LgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgRklYTUUgb24gc3R1YiBleGNlcHRpb24uCgoyMDAzLTAyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHM6CglNYWRlIHByb2Nlc3MgYW5kIHRocmVhZCBpZHMgc21hbGwgaW50ZWdlcnMgaW5zdGVhZCBvZiBwb2ludGVycy4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglTdG9yZSBtYnN0b2soKSBuZXh0IHBvaW50ZXIgaW4gdGhlIHBlci10aHJlYWQgZGF0YS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSW1wbGVtZW50ZWQgX21ic3RvayBhbmQgX21ic25ic2V0LgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taXNjLmgsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIG1hcnNoYWxsaW5nIG9mIHBvaW50ZXJzLCBzaW1wbGUgYW5kIGNvbXBsZXggc3RydWN0dXJlcywKCWNvbmZvcm1hbnQgYW5kIGNvbXBsZXggYXJyYXlzLCBhbmQgdXNlci1tYXJzaGFsbGVkIHR5cGVzLgoJSW1wcm92ZWQgbWFyc2hhbGxpbmcgb2YgY29uZm9ybWFudCBzdHJpbmdzIGFuZCBpbnRlcmZhY2UgcG9pbnRlcnMgYQoJYml0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHIua2FsYmVybWF0dGVyQGhjY25ldC5ubD4KCUNoYW5nZSBTSENyZWF0ZURpcmVjdG9yeSBhbmQgV2luMzJEZWxldGVGaWxlIHRvIGJlIFVuaWNvZGUgb3IgQU5TSSBkZXBlbmRpbmcKCW9uIE9TIHZlcnNpb24uIEFkZCBTaENyZWF0ZURpcmVjdG9yeUV4IEFQSS4KCgkqIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSBSRUFETUUud3JjIGludG8gd3JjJ3MgbWFuIHBhZ2UuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL3BhbGV0dGUuYzoKCUFuZHJldyBKb2huIEh1Z2hlcyA8aHVnaGVzMjAwMkBidGludGVybmV0LmNvbT4KCUV4dGVuZGVkIFNldFN5c3RlbVBhbGV0dGVVc2UgdG8gZGVhbCB3aXRoIGVycm9yIGNvbmRpdGlvbnMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCBzb21lIGNhcGFiaWxpdGllcywgYW5kIGRlZmF1bHQgb3RoZXJzIHRvIGZ1bGx5IHN1cHBvcnRlZCBmb3IKCW5vdy4KCjIwMDMtMDEtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dyY19yc2MuaDogTm8gbG9uZ2VyIHVzZWQuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgaW5jbHVkZS93aW5nZGkuaDoKCUFuZHJldyBKb2huIEh1Z2hlcyA8aHVnaGVzMjAwMkBidGludGVybmV0LmNvbT4KCS0gRGV2aWNlQ2FwYWJpbGl0aWVzMTYgbm93IGNhbGxzIFBTRFJWX0RldmljZUNhcGFiaWxpdGllcy4KCS0gRXh0RGV2aWNlTW9kZTE2IG5vdyBjYWxscyBQU0RSVl9FeHREZXZpY2VNb2RlLgoJLSBFeHRlbmRlZCBzd2l0Y2ggc3RhdGVtZW50IGluIERldmljZUNhcGFiaWxpdGllcyB0byBoYW5kbGUgbmV3CgkgIG9wdGlvbnMuCgktIEFkZGVkIGNvbW1lbnRzIHRvIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiBiYWQgZGF0YSBpbiBUYWJiZWRUZXh0T3V0L1RhYmJlZFRleHRFeHRlbnQKCUNoZWNrZWQgd2l0aDoKCWEpIE51bGwgdGFic3RvcCBhcnJheSB3aXRoIG5vbi16ZXJvIG51bWJlciBvZiBlbnRyaWVzCgliKSBOZWdhdGl2ZSBudW1iZXIgb2YgZW50cmllcyAoTVNETiBpcyB3cm9uZzsgaXQgaXMgbm90IGFuIGVycm9yKQoJYykgU2luZ2xlIHRhYndpZHRoIG9mIG5lZ2F0aXZlIHNpemUKCWQpIFNpbmdsZSBzcGVjaWZpZWQgdGFid2lkdGggb2YgemVybyBzaXplCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJldXNlQnVmZmVyIHNob3VsZCBiZSBGQUxTRSBmb3IgUlBDIGNsaWVudHMuCglTb21lIGNsZWFudXBzIGFuZCBlbGltaW5hdGlvbiBvZiBzb21lIGR1cGxpY2F0ZSBjb2RlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIGJ1ZyBpbiBDb21wbGV0ZUJpbmRpbmdBL1cuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgUnBjUmFpc2VFeGNlcHRpb24uCgoJKiBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3dpbmUvcnBjZmMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBSUEMgZGVmaW5pdGlvbnMuCgoJKiB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sCgkgIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvd3JpdGVyZXMuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgaGVhZGVyIGZpbGUgZ2VuZXJhdGlvbiwgYW5kIHJlbGF0ZWQgb3B0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJbXBsZW1lbnRlZCBtYnNpY29sbCAod2l0aG91dCBsb2NhbGUgaGFuZGxpbmcpLgoKCSogZGxscy93aW5tbS93aW5tbV9TaS5yYzogV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCVJlbW92ZWQgaW52YWxpZCBjaGFyLgoKMjAwMy0wMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIEFkZGVkIGV4cGVyaW1lbnRhbCBwYXJzaW5nIGZvciBDKysgY29kZSAoYnV0IHdpbmVkYmcgZG9lc24ndCBzdXBwb3J0CgkgIEMrKyBBQkkpLgoJLSBOb3cgbG9hZGluZyBzeW1ib2xzIGZvciBpbmNsdWRlZCBmaWxlcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglYQ2xvc2VJTSBzb21ldGltZXMgY3Jhc2hlcyBpbiBYbGliLCBkb24ndCBjYWxsIGl0LgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IExpdSBTcGlkZXIgPGxpdXNwaWRlckB5YWhvby5jb20+CglBZGRlZCBYTkZvY3VzV2luZG93IGF0dHJpYnV0ZSB3aGVuIGNyZWF0aW5nIGEgSUMuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY2hhbmdlLmMsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLAoJICBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL2hhbmRsZS5jLAoJICBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLAoJICBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NtYi5jLCBzZXJ2ZXIvc25hcHNob3QuYywKCSAgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYzoKCVN0YXJ0ZWQgbW92aW5nIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBVbml4IGZpbGUgZGVzY3JpcHRvcnMgdG8gYQoJc2VwYXJhdGUgZmQgb2JqZWN0LiBUaGlzIHdpbGwgYmUgbmVlZGVkIGZvciBmaWxlIGxvY2tpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBSZW1vdmVkIG5vIGxvbmdlciB1c2VkIHF1ZXVlICYgbW9kcmVmIHJlbGF0ZWQgY29tbWFuZHMuCgktIFByb3RlY3RlZCB3YWxrIGNvbW1hbmRzIHdoaWxlIGJlaW5nIGNhbGxlZCB3aXRoIG5vIHByb2Nlc3MgbG9hZGVkLgoJLSBJbiBjb21tYW5kIGdyYW1tYXIsIGFsbG93ZWQgc29tZSBleHByZXNzaW9ucyB3aGlsZSBvbmx5IG51bWJlcnMKCSAgd2hlcmUgYWNjZXB0ZWQuCgktIFJlbmFtZWQgJ2luZm8gbWFwcycgaW5mbyAnd2FsayBtYXBzJyBhbmQgbGV0IGl0IHdvcmsgb24gYW55CgkgIHByb2Nlc3MuCgoJKiBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLAoJICBkbGxzL3dzb2NrMzIvc2VydmljZS5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBpbmNsdWRlL25zcGFwaS5oOgoJQW5kcmV3IEpvaG4gSHVnaGVzIDxodWdoZXMyMDAyQGJ0aW50ZXJuZXQuY29tPgoJUHJvdmlkZSBzdHViIGltcGxlbWVudGF0aW9ucyBvZiBHZXRUeXBlQnlOYW1lQSBhbmQgU2V0U2VydmljZUEuCgoJKiBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvcG9ydC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHdyaXRhYmxlLXN0cmluZ3Mgc3VwcG9ydC4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCU9ubHkgd2FybiBpZiBtZXNzYWdlIGlzID49IFdNX1VTRVIgJiYgPCBXTV9BUFAuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBEZWZlciBvZiBJRGlyZWN0M0RWZXJ0ZXhTaGFkZXJfU2V0Q29uc3RhbnQsIHdhaXRpbmcgZm9yCglEcmF3UHJpbWl0aXZlIGNhbGwuCgktIEJlZ2lubmluZyBvZiBWZXJ0ZXhTaGFkZXIgY29uc3RhbnRzIHN1cHBvcnQgaW50byBzdGF0ZWJsb2NrIChvbmx5CgkgIHN0b3JlZCwgbm90IGNhcHR1cmVkIHlldCkuCgktIEZpeCBjb21waWF0aW9uIHdpdGggbml2ZGlhIEdML2dsLmggYW5kIG1lc2EgR2wvZ2xleHQgaGVhZGVycyBhcwoJICByZXBvcnRlZCBieSBBbmRyZXcgSm9obiBIdWdoZXMuCgktIE9uZSBnbEFjdGl2ZVRleHR1cmUvZ2xBY3RpdmVUZXh0dXJlQVJCIG1pc3NpbmcuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBtaXNzaW5nIGNhc3RzIHJlbGF0ZWQgdG8gcHRocmVhZF90LiBUd2VhayBjb21tZW50cy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXggYnVmZmVyZWQgaW5wdXQgZnVuY3Rpb24uIEFkZCBzdXBwb3J0IGZvciBVTUIgc3ViZnVuY3Rpb25zIHRvCgltZW1vcnkgYWxsb2NhdGlvbiBzdHJhdGVneSBmdW5jdGlvbi4gTW92ZSBmbG9jayB0byB3aW5lZG9zLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX3ByaXZhdGUuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBtYWRlIElDSW5mbyBjbG9zZXIgdG8gV2luZG93cyBiZWhhdmlvciAoaS5lLiBubyBsb25nZXIgb3BlbnMgdGhlCgkgIGRyaXZlcikKCS0gZml4ZWQgbW9zdCBlbmRpYW5lc3MgcmVsYXRlZCBidWdzIGluIGZvdXJDQyBoYW5kbGluZwoJLSBhZGRlZCBkZWJ1ZyBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgZm91ckNDOnMKCS0gaW50ZXJuYWwgZnVuY3Rpb24gZml4ZXMgYW5kIHNwZWVkLXVwCgoJKiBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCUFkZCByZWFsIHN5bnRheCBkb2MgZm9yIExBQkVMIGNvbW1hbmQuCgoyMDAzLTAxLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLAoJICBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVNvbWUgbmVlZGVkIGNsZWFudXBzIGZvciBmdXR1cmUgZHg5IGFuZCBkM2QgY29tbW9uIGxheWVyIHN1cHBvcnQ6CgkgIC0gc3RhdGVibG9ja3MgdG8gSURpcmVjdDNEU3RhdGVCbG9ja0ltcGwgaW50ZXJmYWNlIGFuZCBtb3ZpbmcgaW50bwoJICAgIGEgbmV3IGZpbGUgKHN0YXRlYmxvY2suYykKCSAgLSBzaGFkZXJzIHRvIElEaXJlY3QzRCpTaGFkZXJJbXBsIGludGVyZmFjZXMKCSAgLSBzcGxpdHRpbmcgdnNoYWRlciBhbmQgdnNoYWRlciBkZWNsYXJhdGlvbiBhcyBpbiBkeDkgaW50byAyCgkgICAgaW50ZXJmYWNlcyAoZm9yIGZ1dHVyZSBjb21tb24gbGF5ZXIgdXNlKQoJICAtIHZzaGFkZXIgZGVjbGFyYXRpb24gY29kZSB0byBhIG5ldyBmaWxlICh2c2FkZXJkZWNsYXJhdGlvbi5jKQoJICAtIGRldmljZSBjYWxscyB0byBuZXcgaW50ZXJmYWNlcyAocmVkaXJlY3Qgc3R1YnMpCglTaW1wbGUgdGV4dHVyZSBmaXggZm9yIGEgbGl0dGxlIHJlZ3Jlc3Npb24gYWZ0ZXIgbGFzdCBKYXNvbidzIHBhdGNoZXMuCglTb21lIGNhcHMgY29kZSB1c2luZyB0aGUgR0wvZ2xleHQuaCBkZWZpbmVzIChHTF9WRVJTSU9OXyopLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWRfcmVzLmg6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmVjb2RlQHN1bi5jb25zdW1lci5vcmcuaWw+CglJbXBsZW1lbnRlZCBmb250IHNlbGVjdGlvbi4KCUFkZGVkIGFjY2VsZXJhdG9ycyByZXNvdXJjZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUHJvcGVybHkgI2RlZmluZSBzaXB4X25vZGUgZm9yIEZyZWVCU0QuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJVXBkYXRlZCB0aGUgU2FtcGxlIGNvbmZpZwoJUmVwbGFjZWQgPHBhcmE+IHdpdGggPHByb2dyYW1saXN0aW5nPi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGouc2NobWllZEB0LW9ubGluZS5kZT4KCUZpeCBEb0RyYWdEcm9wIGluIGNhc2Ugb2YgY2hpbGQgd2luZG93cy4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCVdoZW4gdXNpbmcgZGVza3RvcCBtb2RlIGF0dGFjaCBhbGwgdGhyZWFkIGlucHV0cyB0b2dldGhlciwgc28gdGhhdAoJa2V5Ym9hcmQgZm9jdXMgd29ya3MgcHJvcGVybHkuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJUmVtb3ZlZCB0aGUgb2xkIHdpbi5pbmkgc2FtcGxlIHJlcGxhY2VkIGl0IHdpdGggYSBSSCA4LjAgcnBtIC5zcGVjLgoJQ2hhbmdlZCB0aXRsZSBuYW1lIG9mIHNlY3Rpb24gNS4xLgoJT3RoZXIgc21hbGwgZml4ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBmcmVlIHRoZSBvbGQgc3RyaW5nIGluIFN5c1JlQWxsb2NTdHJpbmdMZW4sIHJldXNlIHRoZSBvbGQKCXN0cmluZyBtZW1vcnkgKGlmICdpbicgaXMgTlVMTCkuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCBjb21waWxlciB3YXJuaW5nIGluIFNUT1JBR0VfZ2V0X2ZyZWVfcHBzX2VudHJ5KCkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIHNlcnZlci9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRG8gbm90IGNsZWFyIEZEX1dJTkVfQ09OTkVDVEVEIG9uIHNodXRkb3duKCkuIEZEX1dJTkVfQ09OTkVDVEVECgkoY3VycmVudGx5IHVudXNlZCkgY2FuIHRodXMgYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBzdHJlYW0gc29ja2V0Cgl3YXMgZXZlciBjb25uZWN0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSNCBhbmQgUjggY29tcGFyaXNvbiB0byBWYXJDbXAuCglBZGRlZCBJMiB0byBWYXJGb3JtYXQuCglBZGRlZCBWYXJTdWIsIFZhckRpdiwgVmFyTXVsIGZvciBpbnRlZ2VyIGFuZCBmbG9hdCB0eXBlcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXBsYWNlIEZJWE1FcyB3aXRoIFRSQUNFcyBpbiB0aG9zZSBwYWdpbmcgZnVuY3Rpb25zIHRoYXQgcmVhbGx5IGFyZQoJbm90IHN1cHBvc2VkIHRvIGRvIGFueXRoaW5nLgoJQWRkIHNpbXBsZSBlbXVsYXRpb24gb2YgY29wcm9jZXNzb3Igc3RhdGUgZnVuY3Rpb25zLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJldHVybiBzY2FuY29kZSB3aGVuIGV4dGVuZGVkIGtleWNvZGVzIGFyZSByZWFkIHVzaW5nIGNvbnNvbGUgaW5wdXQKCWZ1bmN0aW9ucy4gTW92ZSBmaWxlIHN0YW1wIGhhbmRsaW5nIHRvIHdpbmVkb3MuIEltcGxlbWVudCBET1M3IGZpbGUKCXN0YW1wIGV4dGVuc2lvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZWNvZGVAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gRGVmaW5lZCBJRHMgZm9yIHN0cmluZyBjb25zdGFudHMgZm9yIGZvbnQgY29sb3IgbmFtZXMgYW5kIGZvciB0aGUKCSAgdmFyaW91cyBjaGFyc2V0cy4KCS0gTG9hZCB0aGUgY29sb3IgbmFtZXMgZnJvbSB0aGUgcmVzb3VyY2VzIGluIHRoZSBmb250cyBkaWFsb2cuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgaW5jbHVkZS93aW5pbmV0Lmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgkiSW50ZXJuZXRBdXRvRGlhbCIgc2hvdWxkIGJlICJJbnRlcm5ldEF1dG9kaWFsIi4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSGFuZGxlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHJldHJhY2Ugc2VwYXJhdGVseS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglVbmlmeSBWR0EgYW5kIFZFU0EgdmlkZW8gbW9kZSBzZXR0aW5nIGNvZGUuCgoyMDAzLTAxLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZDNkaW0vLmN2c2lnbm9yZSwKCSAgZGxscy9kM2RpbS9NYWtlZmlsZS5pbiwgZGxscy9kM2RpbS9kM2RpbS5zcGVjLAoJICBkbGxzL2QzZGltL2QzZGltX21haW4uYywgZGxscy9kM2RpbS92ZXJzaW9uLnJjOgoJRW5yaWNvIEhvcm4gPGZhcm1ib3kxQHN1YmRpbWVuc2lvbi5jb20+CglBZGRlZCBkM2RpbS5kbGwgd2l0aCBzdHVicy4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYywKCSAgZmlsZXMvc21iLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL21zZ2JveC5jOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGluY2x1c2lvbiBvZiBoZWFwLmguCgoJKiBpbmNsdWRlL3JpY2hlZGl0LmgsIGluY2x1ZGUvd2lubnQuaDoKCVJlbW92ZWQgYSBjb3VwbGUgb2YgZXh0cmEgc2VtaWNvbG9ucy4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglGaXhlZCAkUFJFRklYIGxvY2F0aW9uLgoJU29tZSBzbWFsbCB1cGRhdGVzLgoJQWRkZWQgc2FtcGxlIGNvbmZpZy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdXBwb3J0IGZvciBjb2xvciBtYXRlcmlhbCBzb3VyY2VzLCB3aXRoIGhlbHAgZnJvbSBMdWNoby4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglMZW9uYXJkbyBRdWlqYW5vIFZpbmNlbnppIDxscXVpamFub0BwbnVkY3IuY29tPgoJRml4ZWQgTGF0aW4gQW1lcmljYW4ga2V5Ym9hcmQgKGtleSAiPyEiIHdhcyByZXZlcnNlZCkuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCVJlbW92ZWQgc29tZSBVbmljb2RlIC0+IEFzY2lpIGNyb3NzLWNhbGxzLgoKCSogZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlbW92ZWQgd2luZG93cyB2ZXJzaW9uIGNoZWNrcyBmcm9tIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnkgdGVzdHMuCgoJKiBvYmplY3RzL2RjLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUxvYWQgZGVmYXVsdCBzdG9jayBiaXRtYXAgaW4gQ3JlYXRlREMoKS4KCjIwMDMtMDEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2hlYXAuaDogTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCVJlbW92ZSB0aGUgSEVBUF9zdHJkdXBBdG9XIG1hY3JvLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvdXNlci9ob29rLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvZW52aXJvbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglSZW1vdmVkIGNhbGxzIHRvIEhFQVBfc3RyZHVwQXRvVy4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9wcnRkcnYuYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBmaWxlcy9zbWIuYywgbGlicmFyeS9jb25maWcuYywgbXNkb3MvaW50MjEuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLAoJICBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NtYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUmVtb3ZlIGVycm5vLmggZnJvbSBmaWxlcyB0aGF0IGRvIG5vdCBuZWVkIGl0LgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVXNlIGRldmljZSBtYXggbGlnaHRzIGFuZCBjbGlwcGxhbmUgc3VwcG9ydC4gQWxzbyBjaGFuZ2UgY2xpcHBsYW5lIHRvCgliZSBhZmZlY3RlZCBieSB2aWV3IG1hdHJpeC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglLZXlzeW0gY2hlY2sgc2hvdWxkIHVzZSAweDgwMDAgaW5zdGVhZCBvZiAweDgwMCAoc3BvdHRlZCBieSBEbWl0cnkKCVRpbW9zaGtvdikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6CglBZGRlZCAtV3BvaW50ZXItYXJpdGggZ2NjIGZsYWcsIGFuZCBmaXhlZCB0aGUgcmVzdWx0aW5nIHdhcm5pbmdzLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IHNvbWUgcHJvYmxlbXMgd2hlbiBFeHRyYWN0IGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UuCgoJKiB0b29scy93cmMvd3JjLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRGVjbGFyZSB2YXJpYWJsZSBvbmx5IGlmIG5lZWRlZC4KCgkqIGRsbHMvbXNhY20vZm9ybWF0LmM6IFdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CglBdWRpbyBjb2RlY3Mgd2VyZSBlcnJvbmVvdXNseSBiZWluZyBsaXN0ZWQgbXVsdGlwbGUgdGltZXMsIG1ha2luZyBpdAoJZGlmZmljdWx0IHRvIHJ1biBjZXJ0YWluIGFwcGxpY2F0aW9ucyBsaWtlIFZpcnR1YWxEdWIuCgoJKiBkbGxzL21zYWNtL3N0cmVhbS5jOiBXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJTWFrZSBzdXJlIHRoZSBwYXJhbWV0ZXIgcGhhcyBpcyBjb3JyZWN0IGJ5IHNldHRpbmcgaXQgZXF1YWwgdG8gTlVMTCBpbgoJcXVlcnkgbW9kZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbXByb3ZlIHBvcnRhYmlsaXR5IHdydC4gc3RydWN0IHNvY2thZGRyX2lweC4KCgkqIGZpbGVzL3NtYi5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVByb3Blcmx5IGNhc3Qgc3RydWN0IHNvY2thZGRyX2luKiB0byBzdHJ1Y3Qgc29ja2FkZHIqIHdoZXJlIG5lZWRlZC4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQWRkZWQgZGVhZCBrZXlzIHN1cHBvcnQgdXNpbmcgWCBpbnB1dCBtZXRob2RzIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQ3JlYXRlIGFuIFggaW5wdXQgY29udGV4dCBmb3IgZWFjaCB0b3AtbGV2ZWwgd2luZG93LgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBJQ09NX0NBTExzIGZvciBJRm9udF94eCBtZXRob2RzLgoJQWRkZWQgSVBlcnNpc3RQcm9wZXJ0eUJhZywgSVBlcnNpc3RTdHJlYW1Jbml0IGludGVyZmFjZXMgd2l0aCBzdHVicy4KCUltcGxlbWVudGVkIElEaXNwYXRjaDo6SW52b2tlIGZvciB0aGUgdXNlZCBESVNQSURzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJldHVybiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB3aGVuIHdyaXRpbmcgdG8gRE9TIGNvbnNvbGUgdXNpbmcgaW50MjEKCWZ1bmN0aW9uIDB4NDAuIE1vdmUgc29tZSBpbnQyMSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW9yZ2FuaXplIGludDEwIGNvZGUuIEZpeCBjb21tZW50cy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCVdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CglGaXhlZCBpbml0aWFsaXphdGlvbiBvZiBzekRldmljZSBpbiBJQ0lORk8uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50IHZlcnRleCBhbmQgcGl4ZWwgZm9nLgoJRml4IGZvZyBjb2xvciBpbml0aWFsaXphdGlvbi4KCjIwMDMtMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYzoKCU1ha2Ugc3VyZSB0byBhbHdheXMgc2V0IFggZm9jdXMgb24gdGhlIHRvcC1sZXZlbCB3aW5kb3csIG5vdCBvbgoJY2hpbGQgd2luZG93cy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCS50eHQgZmlsZXMgYXJlIGhhbmRsZWQgYnkgbm90ZXBhZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvc3RhcnQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvc3RhcnQvRW4ucmMsCgkgIHByb2dyYW1zL3N0YXJ0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9zdGFydC9yZXNvdXJjZXMuaCwKCSAgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvc3RhcnQvc3RhcnQuYywgdG9vbHMvd2luZWluc3RhbGw6CglEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJQWRkZWQgV2luZG93cy1jb21wYXRpYmxlIHN0YXJ0LmV4ZS4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNoYW5nZSBTSENoYW5nZU5vdGlmeSB0byBiZSBVbmljb2RlIGFuZCBBTlNJIGluZGlmZmVyZW50LCBhcyB0aGUgdHlwZQoJb2YgcGFyYW1ldGVycyBpcyByZWFsbHkgZGVmaW5lZCBieSB1RmxhZ3MgcGFyYW1ldGVyLgoKCSogZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jOiBMaXUgU3BpZGVyIDxsaXVzcGlkZXJAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgR2V0RmlsZVRpdGxlVzsgR2V0RmlsZVRpdGxlQSBub3cgaXMgYSBjYWxsIHRvCglHZXRGaWxlVGl0bGVXLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCUZpeCBpbmNvcnJlY3QgYWxwaGFiZXRpY2FsIG9yZGVyIGJ5IGxhc3QgbmFtZS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglPbmx5IGRlY2xhcmUgdmFyaWFibGVzIHdlIGFjdHVhbGx5IG5lZWQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQcmludCBhIGxhcmdlIGZhaWx1cmUgbWVzc2FnZSBpZiB3ZSB0cnkgdG8gbG9hZCBzdGRvbGUzMi50bGIgYW5kCglmYWlsLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCUZpeGVkIHByb2JsZW1zIHdpdGggZmluZGluZyBhbmQgbGlzdGluZyBhbGwgdGhlIHZpZGVvCgljb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGNvZGVjcy4KCVByb3BlciBpbml0aWFsaXphdGlvbiBvZiBzekRyaXZlciBmaWVsZCBpbiBJQ0lORk8gYnkgSUNHZXRJbmZvLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQ2xlYXIgYml0cyBpbiBzdHJ1Y3R1cmUgcGFzc2VkIHRvIElPbGVDb21tYW5kVGFyZ2V0X1F1ZXJ5U3RhdHVzIHRvCgkgIHNob3cgdGhhdCB3ZSBkb24ndCBzdXBwb3J0IGFueSBFeGVjJ3MuCgktIEFkZCB0d28gRXhlYyBjYXNlcyB0aGF0IHdlcmUgZm91bmQgZHVyaW5nIHRlc3RpbmcuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBbGxvY2F0ZSBwYWxldHRlIG9iamVjdHMgb24gdGhlIGxhcmdlIGdkaSBoZWFwLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIHVzaW5nIGNvcnJlY3QgYXJncyBkdXJpbmcgY29tcGxlbWVudCB0ZXh0dXJlIG9wZXJhdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU1vdmVkIHRoZSBJUFggY2hlY2sgc28gdGhhdCB0aGUgc3lzL3NvY2tldC5oIGNoZWNrIGhhcyBhbHJlYWR5IGJlZW4KCWRvbmUgd2hlbiB3ZSBjaGVjayBmb3IgSVBYIGhlYWRlcnMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglSZXN0b3JlIHRoZSB0ZXh0dXJlIGVudiBtb2RlIG9uIFNldFRleHR1cmUgLSBGaXhlcyBwcm9ibGVtIGluCgljb2Rlc2FtcGxlciBkZW1vLgoKCSogZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCBNT05JVE9SSU5GT0VYQSxXIGRlZmluaXRpb24gdG8gdGhlIG9uZSBpbiBNU0ROIHdoaWNoIGRvZXMgbm90CgljYXVzZSBnY2MgMy4zIHdhcm5pbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgRGVza3RvcCBtb2RlIGZvciAzIGtub3duIGJhZCB3b3JraW5nIEluc3RhbGxTaGllbGQgdmVyc2lvbnMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgdG9vbHMvd3JjL3BhcnNlci5sOgoJRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCVwgYXQgRU9MIGluIHN0cmluZyBub3cgYmVoYXZlcyBsaWtlIGluIG1zdmM2J3MgcmMuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJQWRkZWQgbXlzZWxmIHRvIGF1dGhvcnMgc2VjdGlvbi4KCVVwZGF0ZWQgbGFzdCByZXZpc2lvbiBkYXRlLgoJU29tZSBzbWFsbCB1cGRhdGVzLgoKMjAwMy0wMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcm92aWRlIHZlcnkgbXVjaCBuZWVkZWQgcmVjb21tZW5kYXRpb25zIG9uIGhvdyB0byB3cml0ZSBnb29kIGVycm9yCgltZXNzYWdlcy4KCUl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2Ugd2luZG93cy5oIGluIGNvbmZvcm1hbmNlIHRlc3RzLgoJQWRkaW5nIG15c2VsZiB0byB0aGUgYXV0aG9ycyBsaXN0LgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoZWNrIGZvciBzeXNwYXJhbXMga2V5cyBpbiBlaXRoZXIgdGhlIFdpbjl4IG9yIE5UIGxvY2F0aW9ucy4gVGhpcwoJbWFrZXMgdGhlIHRlc3Qgc3VjY2VlZCBvbiBXaW45eCBhbmQgTlQ0IHBsYXRmb3Jtcy4KCUFkZCBhICdzdHJpY3QnIG1vZGUgd2hpY2ggc3BlY2lmaWNhbGx5IG1ha2VzIHN1cmUgdGhhdCB0aGUgTlQgbG9jYXRpb24KCWlzIHNldC4gSW4gc3RyaWN0IG1vZGUgdGhlIHRlc3Qgc3VjY2VlZHMgb24gV2luZG93cyBYUCBhbmQgV2luZS4KCgkqIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwKCSAgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgb2Jzb2xldGUgd3JjIG9wdGlvbnM6IC1BLCAtVCwgYW5kIC10LgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBzdXJlIHdlIGFsd2F5cyBrbm93IGFib3V0IHRoZSA0OCBhbmQgOTZrSHogZm9ybWF0cyBldmVuIGlmIHRoZXkKCWFyZSBub3QgZGVmaW5lZCBpbiB0aGUgKG9sZCkgV2luZG93cyBoZWFkZXJzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluY2x1ZGUgJHByZWZpeC9pbmNsdWRlL3dpbmUvd2luZG93cyBpbnRvIHRoZSBXSU5FIGluY2x1ZGUgc2VhcmNoIHBhdGguCgl3cmMgbm8gbG9uZ2VyIHVuZGVyc3RhbmRzIC1yIChub3QgbmVlZGVkKS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjaW5jbHVkZSA8c3RkbGliLmg+IGluc3RlYWQgb2YgdGhlIG5vbi1zdGFuZGFyZCA8bWFsbG9jLmg+LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgbW9yZSBsaWdodCBzdGF0ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgl7R2V0LFNldH1UaHJlYWRQcmlvcml0eUJvb3N0IGFyZSBzdHVicyBvbiBXaW45OC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRXh0ZW5kIHRoZSBjb2RlIHRvIHNldCBib3RoIHRoZSBXaW45eCBhbmQgdGhlIE5UIHJlZ2lzdHJ5IGtleXMuIE9ubHkKCXRoZSBOVCBrZXlzIGFyZSBhdXRob3JpdGF0aXZlIChpLmUuIHdlIHNldCB0aGUgV2luOXgga2V5cyBidXQgZG9uJ3QKCXJlLXJlYWQgdGhlbSkuCgoJKiBkbGxzL2NvbWNhdC8uY3ZzaWdub3JlLCBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jYXQvdmVyc2lvbi5yYywgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUFkZGVkIG9wdGlvbmFsIE9MRVNlbGZSZWdpc3RlciB0byB3aW5lX2NvbW1vbl92ZXIucmMsIHVzZWQgaW4KCWRsbHMvY29tY2F0LgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1ha2UgRDNEMS4uMyBsaWdodHMgY29kZSByZWx5IG9uIEQzRDcuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglPbmx5IHJlbG9hZCB0aGUgbWlwbWFwIGltYWdlcyB3aGVuIGRpcnR5LgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJUmVtb3ZlIHNvbWUgY2FsbHMgdG8gSEVBUF9zdHJkdXBBdG9XIGZyb20gYWR2YXBpMzIuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTGF3c29uIFdoaXRuZXkgPHdoaXRubDczQGp1bm8uY29tPgoJRml4IHJldmVyc2VkIGhvdXIgYW5kIG1pbnV0ZSBpbiBpbnQgMjEgYWg9MmMuCgoyMDAzLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMwMTE1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOgoJUmVtb3ZlZCBmbGFnIGNoZWNrcyBpbiBTZXRNZW51SXRlbUluZm9BLCBOVCBkb2Vzbid0IGRvIHRoaXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdhcm4gaWYgb3Blbl9jb3VudCBpcyBhbHJlYWR5IDAgd2hlbiBPU1NfQ2xvc2VEZXZpY2UgaXMgY2FsbGVkLgoJRG9uJ3QgZGVjcmVtZW50IGl0IGluIHRoYXQgY2FzZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVRoZSBNaW5vbHRhIERpTUFHRSBJbWFnZSBWaWV3ZXIgcmVsaWVzIG9uIEdsb2JhbHssUmV9QWxsb2MgY2FsbGVkIHdpdGgKCXRoZSBHTUVNX01PVkVBQkxFIGZsYWcgc2V0LCB0byBhbGxvY2F0ZSB0aGUgZXhhY3Qgc3BlY2lmaWVkIHNpemUgYW5kCglubyBieXRlIG1vcmUgd2hlbiBzaXplIGlzIGEgbXVsdGlwbGUgb2YgOC4gVG8gYWNoaWV2ZSB0aGlzIGFsaWduIHRoZQoJc3RvcmFnZSBuZWVkZWQgZm9yIHRoZSBIR0xPQkFMIGluIHRoZSBoZWFwIHRvIDhieXRlIGJvdW5kYXJ5LgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgc2FtZSA4LzE2Yml0IGNvbnZlcnNpb24gcm91dGluZXMgYXMgaW4gcGNtY29udmVydGVyLmMuCglSZW9yZGVyIHRoZSB0d28gaWZzIGluIHRoZSBmaXJzdCBwYXJ0IG9mIGNwX2ZpZWxkcyB0byBzaW1wbGlmeSB0aGUKCWNvZGUuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldEZvcm1hdCBtYXkgbm90IGNoYW5nZSB0aGUgcHJpbWFyeSBidWZmZXIgZm9ybWF0IGFzIHJlcXVlc3RlZC4KCUR1bXAgdGhlIGVmZmVjdGl2ZSBmb3JtYXQgYW5kIHByZXBhcmUgdGhlIHRvbmUgc2lnbmFsIGFjY29yZGluZ2x5LgoJUGxheSB0b25lcyBmcm9tIHRoZSBzZWNvbmRhcnkgYnVmZmVycyBhdCAtM2RCIHJhdGhlciB0aGFuIC0xMmRCLgoJQWx3YXlzIHByaW50IHRoZSB2b2x1bWUgdGhlIHRvbmUgaXMgZ29pbmcgdG8gYmUgcGxheWVkIGF0LgoJUmVtb3ZlIHRoZSBnYW1lZGV2IFVSTC4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCB1c2Ugb2xkX3NwYWNpbmctMSBpZiBvbGRfc3BhY2luZyBhbHJlYWR5IGhhcyB0aGUgbWluaW11bSB2YWx1ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIE1NU1lTX05PRVJST1IgZXZlbiBpZiB3ZSBkb24ndCBvcGVuIHRoZSBkZXZpY2Ugd2l0aCB0aGUKCXJlcXVlc3RlZCBmb3JtYXQsIG90aGVyd2lzZSBPU1NfT3BlbkRldmljZSB3aWxsIG5vdCBpbmNyZW1lbnQKCW9wZW5fY291bnQuCglVc2UgLTEgdG8gc2lnbmFsIE9TU19SYXdPcGVuRGV2aWNlIG5vdCB0byBkbyBpb2N0bHMgYmVjYXVzZSAwIGlzCglhbWJpZ3VvdXMgKGFsc28gbWVhbnMgbW9ubyBhcyBvcHBvc2VkIHRvIHN0ZXJlbykuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgb2xlL29sZTJubHMuYzoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUNvcnJlY3QgR2V0RGF0ZUZvcm1hdCBoYW5kbGluZyBvZiB1bmluaXRpYWxpc2VkIGZpZWxkczogb25seSB0aGUgeWVhciwKCW1vbnRoIGFuZCBkYXkgZmllbGRzIG1hdHRlcjsgdGhlIHJlc3QgbWF5IGJlIHVuaW5pdGlhbGlzZWQuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCW9rKCkgZG9lcyBub3Qgc3VwcG9ydCAnJVMnLiBTdG9yZSB0aGUgQW5zaSB2ZXJzaW9uLCBjb252ZXJ0IHRvIFVuaWNvZGUKCXdoZW4gbmVlZGVkLCBhbmQgcHJpbnQgdGhlIEFuc2kgdmVyc2lvbiB1c2luZyBvaygpLgoJRml4ICd2YWx1ZSBpcyBzbyBsYXJnZSBpdCBpcyB1bnNpZ25lZCcgd2FybmluZ3MuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJVXNlIHByb3BlciBmaWxlIHNoYXJpbmcgcGFyYW1ldGVycyB3aGVuIG9wZW5pbmcgZmlsZXMuCglGaXhlZCBoYW5kbGluZyBvZiAnaWYgYSA9PSBiJyBzeW50YXggaW4gYmF0Y2ggZmlsZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYzogSnVlcmdlbiBTY2htaWVkIDxqLnNjaG1pZWRAdC1vbmxpbmUuZGU+CglUcmFuc2xhdGVkIHNvbWUgcmVtYWluaW5nIEVuZ2xpc2ggd29yZHMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEZpeGVkIHR5cG8uCgoJKiBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsIGluY2x1ZGUvd2luZGVmLmg6CglEZWZpbmUgX19zdGRjYWxsIGluIG1zdmNydC9wcm9jZXNzLmggaWYgd2luZGVmLmggaGFzbid0IGJlZW4gaW5jbHVkZWQuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdGhyZWFkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGouc2NobWllZEB0LW9ubGluZS5kZT4KCUdpdmUgc29tZSBmdW5jdGlvbnMgcmVhbCBuYW1lcy4KCgkqIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBBZGRlZCBhICJydW5DbWQiIGZ1bmN0aW9uLCBiYXNlZCBvbiBBbmRyZWFzIE1vaHIncwoJICAiQk9PVF9DcmVhdGVQcm9jZXNzIiBmdW5jdGlvbi4KCS0gQWRkZWQgYSBmdW5jdGlvbiAiUHJvY2Vzc1J1bktleXMiLCB0byBwcm9jZXNzIGFsbCB0aGUga2V5cyB0aGF0IGhhdmUKCSAgdGhlIGNvbW1vbiAiUnVuIiBzeW50YXguCgktIENhbGxlZCB0aGUgbmV3IGZ1bmN0aW9uIGZyb20gbWFpbiBmb3IgYWxsIHRoZSB2YXJpb3VzIGtleXMuCgoJKiBjb250cm9scy9tZW51LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJRmFpbCBTZXRNZW51SXRlbUluZm8gaWYgYm90aCBNRlRfQklUTUFQIGFuZCBNRlRfU0VQQVJBVE9SIGFyZQoJc3BlY2lmaWVkIChhbiBhcGkgdmlvbGF0aW9uKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeUEgcGFzcyBhbGwgdGVzdHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zcG9vbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdGVzdHMgZm9yIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnlBLgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVNlcGFyYXRlIHRoZSBISU5TVEFOQ0VzIHVzZWQgYnkgR2V0U2hlbGxPbGUoKSBhbmQgb3RoZXIgZGVsYXkgbG9hZAoJZnVuY3Rpb25zLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIHRoZSBwd2F2ZSBhcnJheSB3aGVuZXZlciB3ZSBkb24ndCBoYXZlIGEgaGFyZHdhcmUgYnVmZmVyLgoJQWx3YXlzIGNyZWF0ZSB0aGUgd2luZW9zcyB0aHJlYWQuCglDaGFuZ2UgdGhlIG1tYXAgRVJSIGludG8gYSBUUkFDRTogdGhlcmUgYXJlIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHdoZXJlCgltbWFwIHdpbGwgZmFpbCBhbmQgd2UgY2FuIGRlYWwgd2l0aCB0aGVtLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sZHQuYzoKCUplcm9lbiBKYW5zc2VuIDxqYXBqQHhzNGFsbC5ubD4KCUZpeGVkIHdpbmVfbGR0X2NvcHkgaW1wb3J0aW5nIG9uIGN5Z3dpbi4KCjIwMDMtMDEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLAoJICBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvcnBjcnQ0L3JwY3NzX25wX2NsaWVudC5jLAoJICBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgbWVtb3J5L2dsb2JhbC5jLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYywKCSAgcHJvZ3JhbXMvcnBjc3MvbnBfc2VydmVyLmMsIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHdpbjMyL25ld2Zucy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgKFBPSU5URVIpTlVMTCBjYXN0cy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJSGFuZGxlIHRoZSBXU19FWF9MRUZUU0NST0xMQkFSIHN0eWxlICh0aGF0IGlzLCBkcmF3IHRoZSB2ZXJ0aWNhbAoJc2Nyb2xsYmFyIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGNvbnRyb2wpLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGJlZ2lubmluZyBvZiB2ZXJ0ZXggbWF0cml4IGJsZW5kaW5nIHVzaW5nIGV4dGVuc2lvbnMgKGN1cnJlbnRseQoJICBhbHBoYSBhbHBoYSBzdGFnZSBhcyBpIGhhdmVuJ3QgdW5kZXJzdGFuZCBuZWVkZWQgZXh0ZW5zaW9uIGJlaGF2aW9yKQoJLSBtb2RpZnkgU2V0UmVuZGVyU3RhdGUgZm9yIG1hdHJpeCBibGVuZGluZyBzcGVjaWZpYyBwYXJhbXMKCS0gYnkgZGVmYXVsdCBkaWZmdXNlIGNvbG9yIGlzIHdoaXRlIDspCgktIGNvbW1lbnRzIG1vc3Qgb2YgdGhlIHRyYWNlcyAoZWxzZSBmbG9vZCAuLi4pCgktIGFkZCBtb3JlIHVybHMgaW4gY29tbWVudHMKCS0gaW5kZW50LCBjbGVhbnVwcwoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUJlZ2lubmluZyBvZiBtb3JlIENPTSBjb21wbGlhbnQgYmVoYXZpb3I6CgktIEFkZFJlZi9SZWxlYXNlIHdoZXJlIG5lZWRlZAoJLSB1c2UgSVVua25vd24qIGluc3RlYWQgdm9pZCoKCS0gZml4IG1hbnkgR2V0RGV2aWNlIHVzaW5nIEFkZFJlZgoJLSBmaXggSURpcmVjdDNEU3VyZmFjZThJbXBsX0dldENvbnRhaW5lciB1c2luZyBRdWVyeUludGVyZmFjZQoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29weXJlY3Qgc2hvdWxkIGZsYWcgZGVzdGluYXRpb24gdGV4dHVyZSBhcyBkaXJ0eSwgdG8gZm9yY2UgaXQgdG8gYmUKCXJlbG9hZGVkLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdXBwb3J0IGZvciBzb21lIG9mIHRoZSB0ZXh0dXJlIGFkZHJlc3Mgc3RhdGVzIGFuZCBib3JkZXIgY29sb3VyLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBtb3ZlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBpbiBWZXJ0ZXhTaGFkZXIgc3RydWN0CgktIGJldHRlciB0cmFjZXMKCS0gc3BlY2lmaWMgaW5wdXQgZGF0YSBmaWxsaW5nIGZ1bmN0aW9uIGZvciB2ZXJ0ZXggc2hhZGVycyB1c2luZyB2ZXJ0ZXgKCSAgc2hhZGVyIGRlY2xhcmF0aW9uIChhbmQgbm90IEZWRiAuLi4gbWF5YmUgRlZGIHdpbGwgcmV0dXJuIGZvciBmYXN0CgkgIHBhdGggd2l0aCBzaW1wbGVzIHZlcnRleCBzaGFkZXIgZGVjbGFyYXRpb25zKQoJLSBodWdlIHZlcnRleCBzaGFkZXIgZml4ZXM6CgkgIC0gYWRkIGFuZCBmaXggbWFueSB2cyAoMS4wLT4yLjApIHVzZWQgb3Bjb2RlcyBpbiBjb21wbGV4IHNoYWRlcnMKCSAgLSBpbXByb3ZlbWVudHMgdG8gcHJvZ3JhbXMgcGFyc2VyOiBwYXJzZSBjb21tZW50cywgdmVyc2lvbiwgLi4KCSAgLSBhZGQgYSB2ZXJ0ZXggc2hhZGVyIGlucHV0IGZpbGxlciBmdW5jdGlvbiAocGFyc2luZyB2ZXJ0ZXggc2hhZGVyCgkgICAgZGVjbGFyYXRpb24pOiBhbG1vc3QgY29tcGxldGUKCS0gY29tbWVudHMgbW9zdCBvZiB0aGUgdHJhY2VzIChlbHNlIGZsb29kIC4uLikKCS0gYWRkIG1vcmUgdXJscyBpbiBjb21tZW50cwoJLSBpbmRlbnQsIGNsZWFudXBzCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUNoZWNrIGZvciB2c25wcmludGYgYW5kIF92c25wcmludGYsIGFuZCBkZWZpbmUgdnNucHJpbnRmIHdpdGgKCV92c25wcmludGYgaWYgbmVlZGVkLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCVVwZGF0ZWQgYXV0aG9ycyBlLW1haWwgYWRyZXNzZXMuCglBZGRlZCBteSBlLW1haWwgdG8gdGhlIGxpc3QuCgoJKiBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gQWRkZWQgbGlzdGluZyBvZiB3aGF0IHRoZSBib290IHByb2Nlc3MgaXMgbGlrZSwgbGlzdGluZyB3aGF0IGlzIGFuZAoJICB3aGF0IGlzIG5vdCAoeWV0KSBkb25lLgoJLSBGaXhlZCBpbmNvcnJlY3Qgc3RhdGVtZW50IGluIHRoZSAiYnVncyIgbGlzdC4KCS0gQWRkZWQgdHJhY2Ugd2hlbiBldmVyeXRoaW5nIGlzIGRvbmUuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglDaGVjayBmb3IgcGVuZGluZyBYIGV2ZW50cyBiZWZvcmUgZ2V0dGluZyBxdWV1ZSBzdGF0dXMuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJLSBBbGlnbiB0aGUgY2xlYW51cCBwaGFzZSBvZiBSZWxlYXNlU3RnTWVkaXVtIHRvIHRoZSBuYXRpdmUgQVBJLgoJLSBXaGVuIHRoZSBkYXRhIGlzIGEgYml0bWFwIG9yIGFuIGVuaGFuY2VkIG1ldGFmaWxlLCB1c2UgdGhlIGNvcnJlY3QKCSAgZGF0YSBtZW1iZXIuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3R1YnMgZm9yIFVufExvY2tTZXJ2aWNlRGF0YWJhc2UuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBjb25lIHN1cHBvcnQuCgoJKiB3aW5kb3dzL2RlZmRsZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJUG9zdCBjb3JyZWN0IG5vdGlmaWNhdGlvbiBjb2RlIG9uIFdNX0NMT1NFIGZvciBkaWFsb2dzLgoKCSogY29udHJvbHMvbWVudS5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJTW92ZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBpbnRvIHRoZSBleHBvcnRlZCBmdW5jdGlvbgoJRHJhd01lbnVCYXJUZW1wLgoKMjAwMy0wMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIHdpbjMyL2V4Y2VwdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkIHNvbWUgc3R1YnMuCgktIEltcGxlbWVudCBrZXJuZWwzMi5GYXRhbEV4aXQuCgoJKiBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvdmVyc2lvbi5yYzoKCUVucmljbyBIb3JuIDxmYXJtYm95MUBzdWJkaW1lbnNpb24uY29tPgoJQWRkIHZlcnNpb24gaW5mbyB0byBkaW5wdXQuCgoJKiBkbGxzL2Rzb3VuZC8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdmVyc2lvbi5yYzoKCUVucmljbyBIb3JuIDxmYXJtYm95MUBzdWJkaW1lbnNpb24uY29tPgoJQWRkIHZlcnNpb24gaW5mbyB0byBkbGwvZHNvdW5kLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGhlIHJlZ2lzdHJ5IGtleXMgb2YgU1BJX0lDT05IT1JJWk9OVEFMU1BBQ0lORywKCVNQSV9JQ09OVkVSVElDQUxTUEFDSU5HIGFuZCBTUElfU0VUSUNPTlRJVExFV1JBUCB0byBtYXRjaCBYUC4KCVRoZSBTUElfU0VUQk9SREVSIHRlc3QgbGVhdmVzIGFuIGluY29yZWN0IGJvcmRlciBzZXR0aW5nIGFuZCBpcyBqdXN0Cgl0b28gZXJyYXRpYzogY29tbWVudCBpdCBvdXQgZm9yIG5vdy4KCU1vZGlmaWVkIHRoZSBTUElfSUNPTkhPUklaT05UQUxTUEFDSU5HLCBTUElfSUNPTlZFUlRJQ0FMU1BBQ0lORyBhbmQKCVNQSV9TRVRXT1JLQVJFQSB0byBub3QgY2F1c2UgdGhlIGljb25zIHRvIGJlIHJlb3JnYW5pemVkLgoJRG9uJ3QgdGVzdCBvdXQtb2YtYm91bmQgdmFsdWVzIGZvciBTUElfU0VUS0VZQk9BUkRTUEVFRCBhcyBiZWhhdmlvcgoJZGlmZmVycyBhY2Nyb3NzIFdpbmRvd3MgcGxhdGZvcm1zLgoJT24gV2luOXggdGhlIG1heGltdW0gdmFsdWUgZm9yIFNQSV9TRVRTQ1JFRU5TQVZFVElNRU9VVCBpcyAzMjc2Ny4KCVRoZSByZWdpc3RyeSBrZXlzIGFuZCB2YWx1ZXMgc3RvcmVkIGluIHRoZW0gZm9yCglTUElfSUNPTkhPUklaT05UQUxTUEFDSU5HIGFuZCBTUElfSUNPTlZFUlRJQ0FMU1BBQ0lORyBkZXBlbmQgb24gdGhlCglXaW5kb3dzIHBsYXRmb3JtOiBpZ25vcmUgdGhlbS4KCU5vIFdpbmRvd3MgcGxhdGZvcm0gc2VlbXMgdG8gU1BJX1NFVEZBU1RUQVNLU1dJVENIOiBubyBsb25nZXIgdGVzdCBpdC4KCVRoZSBsUGFyYW0gb2YgV01fU0VUVElOR0NIQU5HRSBpcyBxdWl0ZSB1c2VsZXNzIChldmVuIHRoZSBNU0ROIHNheXMKCXNvISkgYW5kIHZhcmllcyBhY2Nyb3NzIFdpbmRvd3MgcGxhdGZvcm1zLiBJZ25vcmUgaXQuCglBbHdheXMgY2hlY2sgdGhlIFN5c3RlbVBhcmFtZXRlcnNJbmZvQSByZXR1cm4gY29kZSBhcyBpdCBmYWlscyBpbiB2ZXJ5CglzdHJhbmdlIHdheXMgb24gc29tZSBwbGF0Zm9ybXMuIFNraXAgdW5zdXBwb3J0ZWQgc2V0dGluZ3MuCglTa2lwIFVuaWNvZGUgdGVzdHMgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVN1cHBvcnQgYSBmZXcgdHJpdmlhbCBjYXNlcyBpbiBQcm9wVmFyaWFudENsZWFyLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFsaWduUmVjdHMgc3R1Yi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYzoKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgcmVnZXguaC4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglBZGRlZCBtaXNzaW5nIC5zbyBmaWxlcyBpbiAzOjIuCglBZGRlZCB3aW5lbWFrZXIgaW4gMzozLgoJQWRkZWQgbWlzc2luZyAuaCBmaWxlcyBpbiAzOjQuCglBZGRlZCBkb2MgaHRtbCBmaWxlcyBpbiAzOjUuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVmaW5lIHRoZSAob2xkIG5hbWUpIHN0cnVjdCBzdGF0LCBpdCBpcyB1c2VkIGJ5IHByb2dyYW1zIHVzaW5nIHRoZQoJb2xkIG5hbWVzLgoKCSogZGxscy9kcGxheXgvdmVyc2lvbi5yYzogRW5yaWNvIEhvcm4gPGZhcm1ib3kxQHN1YmRpbWVuc2lvbi5jb20+CglFeHRlbmQgdmVyc2lvbiBpbmZvLgoKCSogZGxscy9kZHJhdy9kZHJhdy9oYWwuYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBkYXRlIHRoZSAnRElSRUNURFJBVzcnIGZsYWcgYWNjb3JkaW5nIHRvIHRoZSBpbnRlcmZhY2UgaW5pdGlhbGl6ZWQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgY2FzZSBvZiBmbG9hdHMgaW4gVmFyQnN0ckZyb21SNCwgVmFyQnN0ckZyb21SOCBhbmQKCVZhckJzdHJGcm9tQ3kuCglXZSBjYW5ub3QgY2hlY2sgZm9yIGVxdWFsaXR5IG9mIGZsb2F0cyBvciBkb3VibGVzIGJlY2F1c2Ugb2Ygcm91bmRpbmcKCWVycm9ycy4gQ2hlY2sgZXF1YWxpdHkgdG8gMTQgZGlnaXRzIGZvciBkb3VibGVzLgoJQWRkIG1vcmUgcHJlY2lzaW9uIHRvIHRoZSBleHBlY3RlZCByZXN1bHRzIHNvIHRoYXQgdGhleSBtYXRjaCBhY3R1YWwKCXJlc3VsdHMuCglQcmludCBmbG9hdGluZyB2YWx1ZXMgd2l0aCBtb3JlIHByZWNpc2lvbiBzbyB3ZSBrbm93IHdoYXQgd2VudCB3cm9uZy4KCVNwZWNpZnkgdGhlIGxvY2FsZSBmb3IgYWxsIHZhcmlhbnQgZnVuY3Rpb25zIHRoYXQgZGVwZW5kIG9uIGl0LgoJQWRkZWQgcmV0dXJuIGNvZGVzIGZvciBXaW45NS4gV2luOTUgcmV0dXJucyBkYXRlcyB3aXRoIG9ubHkgdHdvIGRpZ2l0cwoJZm9yIHRoZSB5ZWFyLgoJVW5jb21tZW50ZWQgbW9yZSBWYXJpYW50Q29weUluZCBhbmQgVmFyaWFudENoYW5nZVR5cGVFeCB0ZXN0cy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2Ugb25seSBBbnNpIEFQSXMgZm9yIGNsZWFuaW5nIHVwIHRoZSByZWdpc3RyeS4KCVNraXAgVW5pY29kZSB0ZXN0cyBpZiB0aGUgVW5pY29kZSBBUElzIGFyZSBub3QgaW1wbGVtZW50ZWQuCglJZiB0aGUgdmFsdWUgbmFtZSBidWZmZXIgaXMgdG9vIHNtYWxsLCBXaW45eCByZXR1cm5zIHRoZSBudW1iZXIgb2YKCWNoYXJhY3RlcnMgcmV0dXJuZWQgYXMgc3BlY2lmaWVkIGluIHRoZSBNU0ROIHdoaWxlIG90aGVyIFdpbmRvd3MKCXJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgJ1wwJykuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU1BJX0dFVE1JTklNSVpFRE1FVFJJQ1MgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGVzdHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcywgZGVidWcgYW5kIHN1c3BlbmQgZmxhZ3MuCgoyMDAzLTAxLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzogV2FybmluZyBmaXhlcy4KCgkqIGluY2x1ZGUvbXN2Y3J0L2lvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIGlubGluZSBmdW5jdGlvbnMgaW5zdGVhZCBvZiBtYWNyb3MgdG8gYXZvaWQgcHJvYmxlbXMgaW4gQysrLgoJSW5saW5lIGZ1bmN0aW9ucyByZXNwZWN0IHNjb3BlLCB3aGVyZWFzIG1hY3JvcyBkb24ndC4KCURlZmluZSB1bWFzayBpbiBzeXMvc3RhdC5oLCBhbmQgbW9kZV90IGluIHN5cy90eXBlcy5oLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAnaW5mbyBzeW1ib2wnIGNvbW1hbmQgdG8gbG9vayBmb3IgZGVmaW5lZCBzeW1ib2xzLgoKCSogZGxscy9zdGkvc3RpLnNwZWMsIGRsbHMvc3RpL3N0aV9tYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1vcmUgc3R1YnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vZGlmeSBPU1NfV2F2ZXtJbixPdXR9SW5pdCB0byByZXBvcnQgdGhlIGV4YWN0IGNhcGFiaWxpdGllcyBvZiB0aGUKCU9TUyBkcml2ZXIuCglBZGQgc3VwcG9ydCBmb3IgdGhlIDQ4a0h6IGFuZCA5NmtIeiBmb3JtYXRzLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTb21lIGNvZGUgY2xlYW51cHMuCglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCglSZW1vdmVkIHVubmVlZGVkIGludGVybmFsIHZhcmlhYmxlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6IFByaW50IHRoZSBtZXNzYWdlIG5hbWUgZm9yIHJlZ2lzdGVyZWQgbWVzc2FnZXMuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOiBGaXhlZCBFT0YgcmV0dXJuIHZhbHVlIGZvciBzc2NhbmYuCgoJKiBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLCBkbGxzL2NvbWNhdC9yZWdzdnIuYywKCSAgZGxscy9jb21jYXQvcmVnc3ZyLmg6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglSZWltcGxlbWVudGVkIERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGluIGEgbW9yZQoJZ2VuZXJhbGx5IHVzZWZ1bCB3YXksIGVudGlyZWx5IGluIHJlZ3N2ci5jLiAgQWRkZWQgKHVuKXJlZ2lzdHJhdGlvbiBvZgoJaW50ZXJmYWNlcy4KCgkqIGZpbGVzL2ZpbGUuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCVJlbW92ZWQgdGhlIEZJWE1FcyB3aGVuIHBlcmZvcm1pbmcgTW92ZUZpbGVFeCB3aXRoCglNT1ZFRklMRV9ERUxBWV9VTlRJTF9SRUJPT1QsIGFzIHdpbmVib290IHdpbGwgbm93IHRha2UgY2FyZSBvZiBpdC4KCgkqIHByb2dyYW1zL3dpbmVib290L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUltcGxlbWVudGVkIHRoZSAicGVuZGluZyByZW5hbWUiIHJlZ2lzdHJ5IHByb2Nlc3NpbmcuCgoJKiB0b29scy93cHAvcHBsLmw6IEpvaGFubmVzIEUuIFNjaGluZGVsaW4gPEpvaGFubmVzLlNjaGluZGVsaW5AZ214LmRlPgoJQWxsb3cgQysrIGNvbW1lbnRzIGFmdGVyICNlbmRpZi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ3JlYXRlIHN0dWJzIGZvciBjaHNpemUsIGR1cCwgYW5kIGR1cDIuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfSHUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1poLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIEdVSSBwYXJ0IGZvciBzZXR0aW5nIHRoZSBlZGl0aW9uIG1vZGUgZmxhdm9yLgoKCSogbXNkb3MvdnhkLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBub24gbmVlZGVkIGluY2x1ZGUgb2YgbW9kdWxlLmguCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ29lcmNlIFZUX1VOS05PV04gPC0+IFZUX0RJU1BBVENILCBOVUxMIGlzIHZhbGlkIGluIHRoZXNlIGNhc2VzLgoJRHJvcCBWVF94IC0+IFZUX3ggY29lcmNpb25zLCB0aGV5IGFyZSBoYW5kbGVkIGJlZm9yZSB0aGUgc3dpdGNoKCkKCWFscmVhZHkuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ29udmVydCBWVF9ESVNQQVRDSCB2YXJpYW50cyBpbnRvIFZUX1VTRVJERUZJTkVEL1RLSU5EX0RJU1BBVENIIGFuZAoJVEtJTkRfSU5URVJGQUNFIHRhcmdldHMsIFF1ZXJ5IElJRF9JRGlzcGF0Y2ggaWYgbmVjZXNzYXJ5LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUltcGxlbWVudGVkIENvR2V0VHJlYXRBc0NsYXNzLgoKCSogdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCB3aW5kcmVzIGNvbXBhdGliaWxpdHkgc3dpdGNoZXM6IC12LCAtLVtuby1ddXNlLXRlbXAtZmlsZS4KCU5ldyAtaCBvcHRpb24gdG8gY29uZm9ybSB0byBzdGFuZGFyZCBwcmFjdGljZSAoYW5kIE1TJyByYykuCglVcGRhdGVkIGRvY3VtZW50YXRpb24sIG1pbm9yIG9wdGlvbiBwYXJzaW5nIGNsZWFudXAuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRFNCLlNldEZvcm1hdDpUcmFjZSB0aGUgcmVxdWVzdGVkIGZvcm1hdCBhcyBzb29uIGFzIHBvc3NpYmxlIGluIGNhc2UKCWl0IGlzIG5vdCBzdXBwb3J0ZWQgYW5kIHNpbXBsaWZ5IHZhbGlkaXR5IGNoZWNrLgoJSW5pdGlhbGl6ZSB0aGUgYnVmZmVyIGZvcm1hdCwgYW5kIG9ubHkgZnJvbSB0aGUgZmllbGRzIHdlIGNoZWNrZWQuCglEaXJlY3RTb3VuZENyZWF0ZTggZnVsbHkgaW5pdGlhbGl6ZXMgdGhlIGJ1ZmZlciBmb3JtYXQgKGp1c3QgaW4gY2FzZSkuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlZmluZSBxc29ydCBhbmQgYnNlYXJjaCBpbiBzdGRsaWIuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L2RpcmVudC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBkaXJlbnQuaCBoZWFkZXIgZm9yIFVuaXgvbWluZ3cgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggbGF0ZW50IGRlYWRsb2NrIGluIERTT1VORF9jYWxsYmFjay4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJLSByZXR1cm4gRU9GIHdoZW4gc3RyZWFtIGlzIGVtcHR5CgktIGNvbmZvcm1hbmNlIHRlc3QgdXBkYXRlZAoKMjAwMy0wMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dwcC9wcGwubDoKCUZpeGVkIGhhbmRsaW5nIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWZ0ZXIgI2Vsc2UgYW5kICNlbmRpZi4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1poLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmM6CglMaXUgU3BpZGVyIDxsaXVzcGlkZXJAeWFob28uY29tPgoJQWRkZWQgU2ltcGxpZmllZCBDaGluZXNlIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L3N5cy91bmlzdGQuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvdW5pc3RkLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHVuaXN0ZC5oIGZpbGVzIGZvciBtaW5ndy9Vbml4IGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CgkzZCBzb3VuZCBkaW1pbmlzaGVzIHdpdGggZGlzdGFuY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8ai5zY2htaWVkQHQtb25saW5lLmRlPgoJRml4ZWQgY3Jhc2ggaW4gd2luYW1wIHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9oci4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8ai5zY2htaWVkQHQtb25saW5lLmRlPgoJRml4IHJlY2VudGx5IGJyb2tlbiBHZXREaXNwbGF5TmFtZXNPZiBvZiBuYW1lcyBvZiBzaGVsbCBleHRlbnNpb24KCWRsbHMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQ2hhbmdlIHR5cGVzIG9mIFdQQVJBTSwgTFBBUkFNIGFuZCBMUkVTVUxUIGFjY29yZGluZyB0byBNUyBTREsgZGVmaW5pdGlvbnMuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdXBwb3J0IGRlZmF1bHQgb3V0cHV0IG5hbWUgKGEub3V0KTsgc29tZSBjb25maWd1cmUgc2NyaXB0cyBjaGVjayBmb3IKCWl0LgoKCSogZmlsZXMvZmlsZS5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJU2V0IGNvcnJlY3QgbGFzdCBlcnJvciBpZiB0aGUgcGF0aCBjb250YWlucyB3aWxkY2FyZCBjaGFyYWN0ZXJzLgoKMjAwMy0wMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR0lGIGRlY29tcHJlc3NvciBzdXBwb3J0IHRvIE9MRSBBdXRvbWF0aW9uIElQaWN0dXJlcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNhbGN1bGF0ZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgYSBjb3B5cmVjdCBjb3JyZWN0bHkuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYW4gZWRpdGlvbiBtb2RlIGZsYXZvciAod2luMzIvZW1hY3MuLi4pIHRvIHRoZSBjb25zb2xlIHNldHRpbmdzCglpbiB0aGUgcmVnaXN0cnkuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2NvbnNvbGVfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBpbmNsdWRlL3dpbmNvbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTZXQgdGhlIGVkaXRpb24gbW9kZSBhcyBhIHNwZWNpZmljIGF0dHJpYnV0ZSwgbm90IGFuIGV4dGVuc2lvbiBvZiB0aGUKCWNvbnNvbGUgbW9kZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZW1hY3MgZWRpdGlvbiBmbGF2b3IgKGl0J3Mgbm93IGEgY29uc29sZSBhdHRyaWJ1dGUpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJSWYgYml0L3N0cmV0Y2hibHQgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBEQ3MgYXJlIHRoZSBzYW1lLCBtYWtlIHN1cmUKCXRoZSBjaGFuZ2VzIGFyZSBjb21taXR0ZWQgYmVmb3JlIHVubG9ja2luZy4KCgkqIE1ha2UucnVsZXMuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLAoJICB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3BwL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglEbyBub3QgZGVmaW5lIF9fV0lORVNSQ19fIHdoZW4gYnVpbGRpbmcgdG9vbHMgYW5kIG1pc2NlbXUuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJUmVtb3ZlIGdsb2JhbCBOT05BTUVMRVNTKiBkZWZpbmUgZm9yIHRlc3RzIHRvby4KCgkqIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVJlZ2VuZXJhdGVkIHdpdGggbGF0ZXN0IHdpZGwuCgoJKiBNYWtlLnJ1bGVzLmluLCBpbmNsdWRlL01ha2VmaWxlLmluOgoJQWRkZWQgYSBmZXcgcnVsZXMgdG8gcmVidWlsZCBpZGwgaGVhZGVycy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvd2lkbC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEZWNsYXJlIHVzZXItbWFyc2hhbGxlciBwcm90b3R5cGVzIGZvciB0eXBlcyBkZWNsYXJlZCB3aXRoIFt3aXJlX21hcnNoYWxdLgoJRGVmaW5lIF9fV0lETF9fIHByZXByb2Nlc3NvciBtYWNybywgc28gV2luZS1zcGVjaWZpYyBJREwgY2FuIGJlIGVuY2xvc2VkCglpbiAjaWZkZWYgX19XSURMX18uIEZpeGVkIGEgZmlsZSBvdXRwdXQgYnVnLgoKCSogcHJvZ3JhbXMvY2xvY2svWmgucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsIHByb2dyYW1zL25vdGVwYWQvWmgucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9aaC5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9aaC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJbGl1IHNwaWRlciA8bGl1c3BpZGVyQHlhaG9vLmNvbT4KCUFkZGVkIFNpbXBsaWZpZWQgQ2hpbmVzZSByZXNvdXJjZXMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOgoJTWF0dGhldyBNYXN0cmFjY2kgPG1hdHRAYWNsYXJvLmNvbT4KCUFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgUGF0aENyZWF0ZUZyb21VcmxXIGFuZCBhZGQgdGhlIHN0YXJ0IGZvciBzb21lCglVUkwgdW5pdCB0ZXN0cy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ2hlY2sgYW5kIGRlZmluZSBBUyAoZm9yIGNyb3NzL2JpYXJjaCBjb21waWxlciBzdXBwb3J0KS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQWRkIC1nc3RhYnMrIG9wdGlvbiBpZiBzdXBwb3J0ZWQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWFyY3VzCglNZWlzc25lcikuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93cmMvd3JjLmMsCgkgIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbGxhcHNlIHRoZSAtaEhycyBvcHRpb25zIGludG8gdGhlIC1PIG9wdGlvbi4KCUdlbmVyYXRlIC5yZXMgZmlsZXMgYnkgZGVmYXVsdC4KCgkqIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIEdldE1vZHVsZUJhc2VOYW1lKEFXKSwgR2V0TW9kdWxlRmlsZU5hbWVFeChBVykgYW5kCglHZXRNb2R1bGVJbmZvcm1hdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIG5vIGxvbmdlciBkZXBlbmQgb24gdG9vbGhlbHAgZGVmaW5pdGlvbnMgZm9yIGdlbmVyYXRpbmcgc25hcHNob3RzCgktIGFkZGVkIGdldF9kbGxfaW5mbyByZXF1ZXN0CgoyMDAzLTAxLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wc2FwaS5oOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBtaXNzaW5nIEFQSXMuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywKCSAgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3R0eWRydi93bmQuYywKCSAgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL3RleHQuYywKCSAgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsCgkgIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCUNoYW5nZSBSRUNUIHRvIHVzZSBMT05HIHRvIG1hdGNoIHdpbjMyIHN0YW5kYXJkIGhlYWRlcnMgYW5kIGZpeCBmb3JtYXQKCXN0cmluZ3MgdG8gdXNlICVsZCBmb3IgUkVDVCBlbGVtZW50cy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJU3RvcmUgdGhlIGtleWJvYXJkIHN0YXRlIGluIHRoZSB0aHJlYWQgaW5wdXQgc3RydWN0dXJlIG9uIHRoZSBzZXJ2ZXIKCXNpZGUuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGxvY2FsIHZhcmlhYmxlIChzcG90dGVkIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogc2VydmVyL2FzeW5jLmM6CglHcmFiIHRoZSB0aHJlYWQgb2JqZWN0IGluIGNhc2UgdGhlIHRocmVhZCB0ZXJtaW5hdGVzIHdpdGggcGVuZGluZwoJYXN5bmMgcmVxdWVzdHMgKHNwb3R0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIHdpbmRvd3Mvd2luLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglXU19DQVBUSU9OIGlzIGEgdHdvIGJpdCBmaWVsZCwgc28gdGVzdCBhcHByb3ByaWF0ZWx5LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeUE6IGRvIG5vdCBjcmFzaCBvbiBudWxsIHBvaW50ZXJzLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJU3RvcmUgdGhlIGhhcmR3YXJlIG1lc3NhZ2VzIGluIHRoZSB0aHJlYWQgaW5wdXQgc3RydWN0dXJlLCBub3QgaW4gdGhlCgl0aHJlYWQgcXVldWUuIEdldCByaWQgb2YgdGhlIGNvb2tlZCBtZXNzYWdlcyBxdWV1ZS4KCjIwMDMtMDEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLAoJICBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYzoKCURlZmluZWQgTk9OQU1FTEVTU1VOSU9OL1NUUlVDVCBkaXJlY3RseSBpbiB0aGUgZmlsZXMgdGhhdCBuZWVkIGl0CglpbnN0ZWFkIG9mIGdsb2JhbGx5IGluIHRoZSBtYWtlZmlsZS4KCgkqIGluY2x1ZGUvdGNoYXIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSB0aGUgc3RhbmRhcmQgc3ltYm9sIG5hbWVzIGluc3RlYWQgb2YgdGhlIG1zdmNydCBzcGVjaWZpYyBvbmVzLgoKCSogZGxscy93aW5lcHMvYnVpbHRpbi5jLCBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9mb250LmMsCgkgIGRsbHMvd2luZXBzL3R5cGUxLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgZXh0cmEgI2luY2x1ZGUgZGlyZWN0aXZlcyBmcm9tIHdpbnNwb29sLmguCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIHJld3JvdGUgYSBsaXR0bGUgYml0IHRoZSBzdGF0ZSBtYWdhZ2VtZW50IHRvIHJlbW92ZSB0aGUgUmVuZGVyU3RhdGUKCSAgIHN0dWN0dXJlIGFuZCB1c2Ugb25seSB0aGUgc3RhdGVfYmxvY2sgY29kZQoJIC0gZmFjdG9yaXplIHNvbWUgY29kZSBiZXR3ZWVuIGludGVyZmFjZSByZXZpc2lvbnMKCSAtIGZpeCBzb21lIHNtYWxscyBidWdzCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIE9TU19SYXdPcGVuRGV2aWNlLCBhbHdheXMgcmV0cmlldmUgdGhlIGRldmljZSBmb3JtYXQgYW5kIHN0b3JlIGl0CglpbiB0aGUgT1NTX0RFVklDRSBzdHJ1Y3R1cmUuCglNb2RpZnkgb3VyIGludGVybmFsIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgY2FuIGJlIHRvbGQgdG8gc3RpbGwgb3BlbgoJdGhlIGRldmljZSBldmVuIGlmIHRoZSBkZXZpY2UgZm9ybWF0IGlzIG5vdCBhbiBleGFjdCBtYXRjaC4KCUluIHdvZE9wZW4gcmV0dXJuIHRoZSBhY3R1YWwgZGV2aWNlIGZvcm1hdCBpZiB0aGUgV0FWRV9ESVJFQ1RTT1VORAoJZmxhZyBpcyBzZXQuCglGaXhlcyBEaXJlY3RTb3VuZCBvbiBpODEwIHNvdW5kY2FyZHMgKGkuZS4gY2FyZHMgc3VwcG9ydGluZyBvbmx5Cgk0ODAwMHgxNngyKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywKCSAgZGxscy9kc291bmQvc291bmQzZC5jLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9ycGNydDQvbmRyX29sZS5jLAoJICBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLAoJICBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdHdhaW4vZHNtX2N0cmwuYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZG9zL2ludDJmLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2lubnQuaCwKCSAgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIG1lbW9yeS9oZWFwLmMsCgkgIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL3Z4ZC5jLAoJICBzY2hlZHVsZXIvdGltZXIuYywgdG9vbHMvd2luZWR1bXAvcGUuYywgd2luMzIvbmV3Zm5zLmMsCgkgIHdpbmRvd3MvaW5wdXQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWZpbmUgTk9OQU1FTEVTU3tTVFJVQ1QsVU5JT059IGV4cGxpY2l0bHkgaW4gdGhlIGZpbGVzIHRoYXQgbmVlZCB0aGVtLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUZWFjaCB3aW5lZ2NjIHRvIHByb2R1Y2UgZXhlY3V0YWJsZXMgZGlyZWN0bHkgZnJvbSBhIGJ1bmNoIG9mIHNvdXJjZSBmaWxlcy4KCUNyZWF0ZSBhIHdpbmVnKysgYWtpbiB0byBnKysuIERyb3Agc3VwcG9ydCBmb3IgdGhlIGFidXNlZCAteGMrKyBzd2l0Y2hlZC4KCgkqIHdpbmRvd3Mvd2luLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBIHdpbmRvdyB3aXRoIGEgV1NfRVhfQVBQV0lORE9XIGV4dGVuZGVkIHN0eWxlIGNhbiBhbHNvIGdldCBhIG1lbnUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcHJvdG9jb2wgcGFja2V0IGhhbmRsaW5nIHdoZW4gd2luZWRiZyBpcyB0b28gc2xvdyB0byBhbnN3ZXIuCgoJKiBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gQ2xlYW5lZCB1cCB0aGUgY29kZSAoc2F2aW5nIG9uIGNoYWluaW5nIHN0cmluZ3MpIGJ5IENEaW5nIHRvIHRoZQoJICBzeXN0ZW0gcm9vdCBkaXJlY3RvcnkgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuCgktIFdpbGwgbm93IHJlbmFtZSB3aW5pbml0LmluaSB0byB3aW5pbml0LmJhayBpbnN0ZWFkIG9mIGVyYXNpbmcgaXQgYXMKCSAgYmVmb3JlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBvcGVuIHRoZSBkZXZpY2UgaW4gdGhlIGRlZmF1bHQgMjIwNTB4OHgyIGZvcm1hdCwgYW5kIGxldCBpdAoJcmVwb3J0IHRoZSBhY3R1YWwgZGV2aWNlIGZvcm1hdCB0byB1cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBCbG9ja1NpemUgY2hlY2suCgoJKiBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdHVicyBmb3IgRGxsR2V0Q2xhc3NPYmplY3QsIE9sZVtHU11ldENsaXBib2FyZCBpbiBvbGUyLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglDaHJpc3RvcGggRnJpY2sgPGZyaWNrQFNDLU5ldHdvcmtzLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgKEdldHxTZXQpQ2xpcFBsYW5lIGZvciBkM2Q3LgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1hbnkgb2xlYXV0MzIgQVBJcyBhcmUgbWlzc2luZyBvbiBXaW45NS9JRTMuIExvYWQgdGhlbSBkeW5hbWljYWxseS4KCVVuY29tbWVudCBzb21lICdOVUxMJyB0ZXN0cyBhcyB0aGV5IHBhc3Mgb24gV2luZG93cyBhbmQgb24gV2luZS4KCUNvbW1lbnQgb3V0IHRob3NlIHRoYXQgY3Jhc2ggb24gV2luOTUgYW5kIGluZGljYXRlIHdoeSB0aGV5IGFyZQoJY29tbWVudGVkIG91dC4KCVJlbW92ZSB0d28gcmVkdW5kYW50IHRlc3RzIGluIHZhcnRlc3QuYyAoVmFySTFGcm9tQm9vbCBhbmQKCVZhclVJMkZyb21JMiwgbGFzdCBkaWZmIGh1bmspLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTdGFuZGFyZGl6ZSB0aGUgY2FwaXRhbGl6YXRpb24gb2YgV2luZS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN1cHBvcnQgZm9yIC5kcnYgZXh0ZW5zaW9uIChmb3Igd2luc3Bvb2wuZHJ2IHRlc3RzIGZvciBpbnN0YW5jZSkuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIHNvbWUgdXBkYXRlIHByb2JsZW1zIChnZW5lcmljICYgd2hpbGUgc2Nyb2xsaW5nKQoJLSBub3cgZ2VuZXJhdGluZyBrZXkgZXZlbnQgZm9yIEN0cmwtW0EtWl0gdGhhdCBvdXIgZWRpdGxpbmUgdW5kZXJzdGFuZHMKCS0gaW1wbGVtZW50ZWQgY3Vyc29yIHZpc2liaWxpdHkKCjIwMDMtMDEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1Z3MgaW4gY2FzdCBvcGVyYXRvci4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oOgoJRml4ZWQgc29tZSBpc3N1ZXMgY2F1c2VkIGJ5IHRoZSBuZXcgb2FpZGwuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYWlkbC5pZGwsCgkgIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVdyb3RlIGEgbmV3IG9haWRsLmlkbCB0byByZXBsYWNlIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmggYW5kCglpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJbWluZ3cgbGlua3MgaW4gY29tZGxnMzIsIHNoZWxsMzIsIGFuZCBhZHZhcGkzMiBieSBkZWZhdWx0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGYWN0b3JpemUgdGhlICdvcnRobycgY29kZSAod2lsbCBiZSBuZWVkZWQgbGF0ZXIgb24pLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJZ25vcmUgdGhlIExQU1VSRkFDRSBiaXQgaWYgQUxMT0NPTkxPQUQgaXMgc2V0LgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsCgkgIHRvb2xzL2J1Z19yZXBvcnQucGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVN0YW5kYXJkaXplIHRoZSBjYXBpdGFsaXphdGlvbiBvZiBXaW5lLgoKCSogcHJvZ3JhbXMvY2xvY2svRGEucmMsIHByb2dyYW1zL2Nsb2NrL0RlLnJjLCBwcm9ncmFtcy9jbG9jay9Fbi5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2Nsb2NrL0ZpLnJjLCBwcm9ncmFtcy9jbG9jay9Gci5yYywKCSAgcHJvZ3JhbXMvY2xvY2svUHQucmMsIHByb2dyYW1zL2Nsb2NrL1NrLnJjLCBwcm9ncmFtcy9jbG9jay9Tdy5yYywKCSAgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvRmkucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRnIucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU2kucmMsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU3cucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vRW4ucmMsIHByb2dyYW1zL3Byb2dtYW4vRnIucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRGEucmMsIHByb2dyYW1zL3dpbmhlbHAvRGUucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRW4ucmMsIHByb2dyYW1zL3dpbmhlbHAvRXMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRmkucmMsIHByb2dyYW1zL3dpbmhlbHAvRnIucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvSHUucmMsIHByb2dyYW1zL3dpbmhlbHAvSXQucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvS28ucmMsIHByb2dyYW1zL3dpbmhlbHAvUHQucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvU3cucmMsIHByb2dyYW1zL3dpbmhlbHAvVmEucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvV2EucmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmVjb2RlQHN1bi5jb25zdW1lci5vcmcuaWw+CglDaGFuZ2UgdGhlIFNVQkxBTkdfTkVVVFJBTCBjbGF1c2UgaW4gYWxsIHdpbmVsaWIgYXBwbGljYXRpb25zIHRvCglTVUJMQU5HX0RFRkFVTFQsIGFzIHRoZXkgc2hvdWxkIGJlLgoKCSogc2VydmVyL2NvbnNvbGUuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIEZpeGVkIHNldmVyYWwgYnVncyB3aGlsZSByZXNpemluZyBhbiBleGlzdGluZyBzY3JlZW5idWZmZXIuCgktIFJlZHVjZWQgdXBkYXRlIGFyZWEgZm9yIHNvbWUgd3JpdGUgY29uZGl0aW9ucy4KCS0gU3RhcnRlZCBpbXBsZW1lbnRpbmcgZXZlbnQgbWVzc2FnZSBjb2xsYXBzaW5nLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVBhc3MgLWwncyB0aGF0IGFyZSBub3QgLmRsbCdzIG9yIC5hJ3MgdG8gdGhlIGxpbmtlci4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRGVmaW5lIHRoZSBzdGFuZGFyZCBfX1dJTkVfXyBhbmQgX19XSU4zMl9fIG1hY3Jvcy4KCS0gTWFwIC1sdXVpZCB0byAtbHdpbmVfdXVpZCwgaW4gVW5peCAtbHV1aWQgZG9lcyBzb21ldGhpbmcgZWxzZS4KCgkqIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvb2NpZGwuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbmNsdWRlIG9haWRsLmggaW5zdGVhZCBvZiB3aW5lL29ial9vbGVhdXQuaC4KCgkqIGluY2x1ZGUvb2xlaWRsLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJVGVtcG9yYXJpbHkgaW5jbHVkZSBvYmpiYXNlLmggZnJvbSBvbGVpZGwuaC4KCVJlbW92ZWQgaW5jbHVzaW9uIG9mIG9ial9lcnJvcmluZm8uaC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUF2b2lkIGRpcmVjdCBJQ09NX0NBTEwgdXNhZ2UuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgb2xlL2R4Z3VpZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBhIGNvdXBsZSBvZiBkZWZpbml0aW9ucyBmcm9tIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmggdG8KCWluY2x1ZGUvb2xlYXV0by5oLgoKCSogTWFrZWZpbGUuaW46IENocmlzdG9waCBGcmljayA8ZnJpY2tAU0MtTmV0d29ya3MuZGU+CglDcmVhdGlvbiBvZiBhIHRhZ3MgZmlsZSB3aXRoIHRoZSBjdGFncyB0b29sLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggaW4gdGhlIEdldEhhbmRsZSBtZXRob2QKCS0gZmFjdG9yaXplIHNvbWUgY29kZSBiZXR3ZWVuIEQzRDEvMi8zIGFuZCBEM0Q3CgktIGZpeCByZWZlcmVuY2UgY291bnRpbmcgZm9yIHBhbGV0dGVzCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLAoJICBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglvbGUybmxzLmMgaXMgYSAxNmJpdCBvbmx5LgoJTm8gbmVlZCB0byBkZWZpbmUgSUNPTSBtYWNyb3MgZm9yIDE2Yml0IGlmYWNlIElNYWxsb2MxNi4KCURlZmluZSBhbmQgaW1wbGVtZW50IEhHTE9CQUxfTG9ja0J5dGVzMTYuCglTdGFydGVkIG9uIFN0Z09wZW5TdG9yYWdlT25JTG9ja0J5dGVzLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNldmVyYWwgbWlzc2luZyBLMzJXT1cqIHByb3RvdHlwZXMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSB2dCBmaWVsZCBzaG91bGQgYmUgYSBWQVJUWVBFIG5vdCBhIFZBUkVOVU0uCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21waWxhdGlvbiB3YXJuaW5ncy4KCjIwMDMtMDEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVib290Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVib290L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lY29kZUBzdW4uY29uc3VtZXIub3JnLmlsPgoJSW5pdGlhbCB3aW5lYm9vdCBpbXBsZW1lbnRhdGlvbjsgYXQgdGhpcyBzdGFnZSBvbmx5IHdpbmluaXQuaW5pCglwcm9jZXNzaW5nIGhhcyBiZWVuIHdyaXR0ZW4uCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CgktIDNkIGJ1ZmZlcnMgcHJvZHVjZSBzb3VuZHMKCS0gc29tZSBvdGhlciBzbWFsbCBmaXhlcwoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJLSBjbGVhbmVkICpTZXQqIGZ1bmN0aW9ucwoJLSBhZGRlZCBpbml0aWFsIGNvZGUgZm9yIDNkIGJ1ZmZlciByZWNhbGN1bGF0aW5nCgktIGFkZGVkIHNvbWUgYXV4aWxpYXJ5IGZ1bmN0aW9ucwoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBpbmNsdWRlL21tZGRrLmgsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vYmppZGwuaWRsLCBpbmNsdWRlL29jaWRsLmgsCgkgIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaCwKCSAgaW5jbHVkZS9ycGNwcm94eS5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS90Y2hhci5oLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5kb3dzLmgsCgkgIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwKCSAgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zb2NrLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgaW5jbHVkZS93b3dudDMyLmgsIGluY2x1ZGUvd3R5cGVzLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmlkbCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwKCSAgb2xlL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwgdG9vbHMvd2luYXBpL21zdmNtYWtlciwKCSAgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cHAvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwKCSAgdW5pY29kZS9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW5hbWUgX19XSU5FX18gdG8gX19XSU5FU1JDX18uCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2QzZDh0eXBlcy5oLCBpbmNsdWRlL21zdmNydC9laC5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCVJlbW92ZWQgYSBmZXcgbW9yZSAjaWZkZWYgX19XSU5FX18uCgoJKiBpbmNsdWRlL3dpbm50Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFbmFibGUgbmFtZWxlc3Mgc3RydWN0dXJlcyBpbiBDKysgZm9yIGdjYyA+PSAzLnggKGRpc2NvdmVyeSBhbmQKCXRlc3RpbmcgZG9uZSBieSBEYW4gS2VnZWwpLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUGFzcyBvbmx5IHRoZSAtbyAtbCAtTCBvcHRpb25zIHRvIHdpbmV3cmFwLCBpZ25vcmUgdGhlIHJlc3QuCgoyMDAzLTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZW1ha2VyOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBubyBsb25nZXIgdXNlZCB0ZXN0cyBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZQoJc2NyaXB0LgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2luY2x1ZGUgPHN0ZGxpYi5oPiBpbnN0ZWFkIG9mIHRoZSBub24tc3RhbmRhcmQgPG1hbGxvYy5oPi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUVuYWJsZSBaIGJ1ZmZlciBieSBkZWZhdWx0LgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIFRJTUVfS0lMTF9TWU5DSFJPTk9VUy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3Blcmx5IGhhbmRsZSB0aGUgLU0gc3dpdGNoLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3Blcmx5IGxpbmsgYWdhaW5zIC5hIGZpbGVzIHVzaW5nIHRoZSAtbCBzd2l0Y2guCglTdXBwb3J0IG1vcmUgdmVyYm9zZSBvdXRwdXQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGRlZCBiYXNpYyBzdXBwb3J0IGZvciBtaXBtYXBpbmcsIHZlcmlmaWVkIHVzaW5nIHNhbXBsZSBmcm9tCgljb2Rlc2FtcGxlci5jb20uCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIFVzZSBmYXN0ZXIgdmVydGV4IGFycmF5cyAocmF0aGVyIHRoYW4gcHJvY2Vzc2luZyB2ZXJ0ZXhlcyBvbmUgYnkKCSAgb25lKSwgd2hlbmV2ZXIgcG9zc2libGUuCgktIExlc3MgdHJhY2UgaW4gdGhlIHNsb3dlciBmb3JtIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgZml4ZXMgLyBvcHRpbWlzYXRpb25zIGluIHRoZSBjb2xvciBrZXlpbmcgY29kZQoJLSBtaW5pbWl6ZSBhdCB0aGUgbWF4aW11bSB0ZXh0dXJlIHVwbG9hZHMKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlLWFjdGl2YXRlIHRoZSBjb2xvci1rZXlpbmcgY29kZQoJLSBmaXggeWV0IGFnYWluIHRleHR1cmUgZW51bWVyYXRpb24gdG8gcGxlYXNlIGFsbCBnYW1lcyA6LS8KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVlbmFibGUgZGV2aWNlJ3MgZGVmYXVsdCByZW5kZXIgc3RhdGVzIGluaXRpYWxpemF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IG9yZGVyIG9mIHRleHR1cmUgZW51bWVyYXRpb24gdG8gZml4IHlldCBhbm90aGVyIHNldCBvZiBkdW1iIGdhbWVzLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglCZWdpbm5pbmcgb2Ygc3RhdGUgYmxvY2suCglJbml0aWFsaXplIHRoZSBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgRDNEIGRlZmF1bHQgdmFsdWVzLgoJSW1wbGVtZW50cyBHZXRSZW5kZXJTdGF0ZSwgR2V0VGV4dHVyZVN0YWdlU3RhdGUgYW5kIEdldExpZ2h0U3RhdGUuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBoYWNrIGZvciBvbmUgY2FzZSBvZiB0aGUgUHJvY2Vzc1ZlcnRpY2VzIGNhc2UKCS0gc29tZSBjaGFuZ2VzIGluIHRoZSBleGVjdXRlIGJ1ZmZlciB0byByZXVzZSB0aGUgbmV3IE1hdHJpeCBjb2RlCgktIGFsd2F5cyByZWluaXRpYWxpemUgdGhlIGVudW1lcmF0aW9uIHN0cnVjdHVyZXMgaW4gY2FzZSBzb21lIGdhbWVzCgkgIG1vZGlmeSB0aGVtCgktIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSAodW51c2VkKSBSZXNlcnZlZDEgZmllbGQgaW4gdGhlIEZWRiBmb3JtYXRzCgktIGZpeCAzMiBiaXQgdGV4dHVyaW5nIGFuZCBhZGRlZCBtb3JlIGNoZWNrcwoJLSByZW1vdmUgc29tZSB1c2VsZXNzIGFuZCBhbm5veWluZyBmaXhtZQoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gY3JlYXRlIGEgZnVuY3Rpb24gdG8gc2V0IHRoZSB2YXJpb3VzIHRyYW5zZm9ybWF0aW9uIG1hdHJpY2VzIHRvCgkgIGZhY3Rvcml6ZSB0aGUgY29kZSBiZXR3ZWVuIHRoZSB2YXJpb3VzIGNvZGUgcGF0aAoJLSBmaXhlZCBzb21lIGxvZ2dpbmcgc3R1ZmYKCgkqIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG1vcmUgdGh1bmtpbmcgaW4gdGhlIEQzRFZlcnRleEJ1ZmZlciBDT00gb2JqZWN0CgktIGFkZGVkICdzdXBwb3J0JyBmb3IgR2V0SW5mbwoKCSogZGxscy9kZHJhdy9kM2Rjb21tb24uYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGxpZ2h0IGltcHJvdmVtZW50cwoJLSBtaXNjLiBmaXhlcwoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNpbXBsaWZ5IHRoZSBjb2RlIGZvciB0aGUgZ2VuZXJhdGVkIHdyYXBwZXIuCglNaXNjZWxsYW5lb3VzIHNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsIGRsbHMvY29tY2F0L2NvbWNhdF9wcml2YXRlLmgsCgkgIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfcHJpdmF0ZS5oLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL29sZWRsZ19tYWluLmMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL21hcGljb2RlLmgsCgkgIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9tZWRpYW9iai5oLCBpbmNsdWRlL29haWRsLmgsCgkgIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlaWRsLmgsCgkgIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS93aW5nZGkuaCwKCSAgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW51c2VyLmgsIG9sZS9keDhndWlkLmMsIG9sZS9keGd1aWQuYywKCSAgb2xlL3V1aWQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFbGltaW5hdGUgbG90cyBvZiBfX1dJTkVfXyBjb25kaXRpb25hbHMgZnJvbSB0aGUgaGVhZGVycy4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBpbmNsdWRlL2QzZC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBhZGRpdGlvbm5hbCBmbGFncyBsb2dnZWQKCS0gZml4ZXMgaW4gdGhlIHZlcnRleCBidWZmZXIgdGh1bmtpbmcgKyBvcHRpbWl6ZWQgZmxhZyBzdXBwb3J0CgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2luOXggZG9lcyBub3Qgc3VwcG9ydCB7R2V0LFNldH1XaW5kb3dMb25nVy4gVXNlIHRoZSBBbnNpIHZlcnNpb24KCWluc3RlYWQgc2luY2UgaXQgd29uJ3QgaW1wYWN0IF90aGVzZV8gdGVzdHMgYW55d2F5LgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2RlYnVnLmM6CglBZGRlZCB3aW5lX2RiZ19zcHJpbnRmIGZ1bmN0aW9uIHRoYXQgYWxsb2NhdGVzIGEgdGVtcG9yYXJ5IGJ1ZmZlciBpbgoJdGhlIHBlci10aHJlYWQgc3RyaW5ncyBhcmVhLgoJQWRkZWQgaW5saW5lIGZ1bmN0aW9ucyB0byBmb3JtYXQgUE9JTlQsIFNJWkUgYW5kIFJFQ1Qgc3RydWN0dXJlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3NobG9iai5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNIR2V0TWFsbG9jKCkgcmV0dXJucyBhIEhSRVNVTFQsIG5vdCBhIERXT1JELgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWZpbmUgTlVMTCBpZiBpdCdzIG5vdCBkZWZpbmVkIGFscmVhZHkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hlY2sgdGhlIHZhbHVlIG9mIHRoZSBwZm5DYWxsYmFjayBpbiBhZGRpdGlvbiB0byB0aGUgY2FsbGJhY2sgYml0LgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1cHBvcnQgb3V0cHV0aW5nIGZpbGVzIHRvIGEgZGlmZmVyZW50IGRpcmVjdG9yeSB0aGFuIHB3ZC4KCVNtYWxsIGNsZWFudXBzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwLCB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgLS1pbmNsdWRlLXF1b3RlcyBvcHRpb24gdGhhdCBmaXhlcyAjaW5jbHVkZSB0byB1c2UgdGhlIGNvcnJlY3QKCW9mIDw+IGFuZCAiIi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnkgZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJTGlzdHZpZXcgc2hvdWxkIHNjcm9sbCBieSBhdCBsZWFzdCBvbmUgY29sdW1uLCBmaXhlcyBidWcgd2hlcmUgaXRlbQoJYmVpbmcgd2lkZXIgdGhhbiBsaXN0dmlldyBwcmV2ZW50cyBhbnkgc2Nyb2xsaW5nIGZyb20gb2NjdXJpbmcuICBBZGRlZAoJcHJpbnRpbmcgb2YgdGhlIHNjcm9sbCBjb2RlIHRleHQgZHVyaW5nIHRyYWNpbmcgb2Ygc2Nyb2xsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglTaGVsbEV4ZWN1dGUoTlVMTCwgIndvcmRwYWQuZXhlIiwpIG5vdyBjb3JyZWN0bHkgZmluZHMgd29yZHBhZC5leGUgaW4KCUFwcCBQYXRocy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglEb21pbmlrIFN0cmFzc2VyIDxEb21pbmlrLlN0cmFzc2VyQHQtb25saW5lLmRlPgoJSW1wbGVtZW50IFZlclNldENvbmRpdGlvbk1hc2sgYnkgZm9yd2FyZGluZyB0byBudGRsbC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2FsbCBsc3RyY21wVyByYXRoZXIgdGhhbiB3Y3NjbXAuCgoyMDAzLTAxLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLAoJICBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgU2FmZUFycmF5e1NldElJRCxHZXRJSUQsU2V0UmVjb3JkSW5mbyxHZXRSZWNvcmRJbmZvfS4KCUFkZGVkIHN1cHBvcnQgZm9yIEZBREZfSEFWRUlJRCwgRkFERl9SRUNPUkQsIEZBREZfSEFWRVZBUlRZUEUuCglJbXBsZW1lbnRlZCBTYWZlQXJyYXlBbGxvY0Rlc2NyaXB0b3JFeCBhbmQgU2FmZUFycmF5R2V0VmFyVHlwZQoJY29ycmVjdGx5LgoJRml4ZWQgc2Vjb25kIGFyZ3VtZW50IG9mIFNhZmVBcnJheUNvcHlEYXRhIChpdCBpcyBqdXN0IFNBRkVBUlJBWSopLgoJQ2hhbmdlZCBhbGxvY2F0aW9uIHRvIGluY2x1ZGUgMTYgYnl0ZXMgYmVmb3JlIHRoZSBTQUZFQVJSQVkgKHRvIHN0b3JlCglJSUQvVkFSVFlQRS9JUmVjb3JkSW5mbyopLgoJVkFSVFlQRSAtPiBzaXplIGFycmF5IHdhcyBub3QgaW5kZXhlZCBjb3JyZWN0bHkuCglBZGRlZCBsb3RzIG9mIHRlc3RjYXNlcyBmb3IgbW9zdCBmdW5jdGlvbmFsaXR5LgoJQWRkZWQgSVJlY29yZEluZm8gaW50ZXJmYWNlIGRlZmluaXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgVlRfRVJST1ItPlZUX0k0L1ZUX1I0IGNvZXJjaW9uLgoJVmFyaWFudENvcHkgZG9lcyBub3QgbmVlZCB0byBjaGVjayB0aGUgcmV0dXJuIG9mIFZhcmlhbnRDbGVhci4KCVZhcmlhbnRDb3B5SW5kIG5vdyBjb3BpZXMgVlRfVU5LTk9XTiBhbmQgVlRfRElTUEFUQ0ggdG9vLgoJVmFyQ21wIGhhbmRsZXMgVlRfQk9PTC4KCVZhckZvcm1hdCBoYW5kbGVzIFZUX0JTVFIuCgljb2VyY2VfYXJyYXkgZml4ZWQgZm9yIFZUX0FSUkFZfFZUX1VJMSAtPiBWVF9CU1RSIGFuZCBWVF9BUlJBWXx4IC0+CglWVF9TQUZFQVJSQVkgY2FzZXMuCglWYXJDYXQgdHJpZXMgdG8gY29lcmNlIHR5cGVzIGludG8gVlRfQlNUUiB0byBkbyBjYXQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVByb2Nlc3MgVEtJTkRfQUxJQVMgaW4gU0xURyB0eXBlbGlicywgMHgxNCBpbiB0aGUgdGFpbCBpcyB0aGUKCXRkZXNjQWxpYXMudnQgZW50cnkuCglBZGRlZCBhIHNtYWxsIGhhbmRsZXIgZm9yIFRLSU5EX0RJU1BBVENIIGluIFNMVEcuCglJVHlwZUxpYl9SZWxlYXNlIGNhbiBoYXZlIGEgTlVMTCBwb2ludGVyIGFzIElUeXBlSW5mbyouCglTcGxpdCBvdXQgX2NvcHlfYXJnIGZ1bmN0aW9uIGZvciBib3RoIERpc3BDYWxsIGFuZCBJVHlwZUluZm9fZm5JbnZva2UsCglhZGRlZCBzb21lIG1vcmUgZnVuY3Rpb25hbGl0eS4KCUlUeXBlSW5mb19mbkludm9rZSBjYW4gaGFuZGxlIFZUX1VTRVJERUZJTkVEIHZhcmlhbnRzLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIGFiaWxpdHkgb2YgcGxheWluZyBhIHRlc3QgdG9uZSB3aGVuIGluIGludGVyYWN0aXZlIG1vZGUuCglUZXN0IGJvdGggcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGJ1ZmZlcnMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJLSBJbXBsZW1lbnRlZCBJbnRlcm5ldENyYWNrVXJsVyBhbmQgcmUtaW1wbGVtZW50ZWQgSW50ZXJuZXRDcmFja1VybEEKCSAgYnkgdXNpbmcgdGhlIFVuaWNvZGUgdmVyc2lvbi4KCS0gSW50ZXJuZXRDcmFja1VybFcgbm93IHBhcnNlcyBVUkwgaGF2aW5nIHRoZSAiYWJvdXQiIGFuZCAicmVzIgoJICBzY2hlbWVzLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgQysrIHN1cHBvcnQgJiBzbWFsbCBjbGVhbnVwcy4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdXBwb3J0IEMrKyBsaW5raW5nIHdpdGggYSBuZXcgLUMgc3dpdGNoLgoJTW9kaWZ5IHRoZSBhcHAgbGF1bmNoZXIgdG8gcGFzcyBhbGwgb3B0aW9ucyBidXQgLS1kZWJ1Z21zZyBhbmQgLS1kbGwKCXRvIHRoZSBhcHAuCglMaW5rIHRoZSB3cmFwcGVyIGFnYWluc3QgYWxsIG9mIHRoZSBhcHAncyBsaWJzLgoJRHJvcCBzdXBwb3J0IGZvciBwYXNzaW5nIHRoZSBkbGwgbmFtZXMgdG8gdGhlIGxhdW5jaGVyLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBmb3Igc3R1cGlkIGFwcGxpY2F0aW9ucyByZWFkaW5nIHNvbWUgYnl0ZXMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKCXN1cmZhY2UgbWVtb3J5LgoKCSogZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBlbnVtZXJhdGlvbiBvZiB0aGUgUmVmZXJlbmNlIGRldmljZSAoc29tZSBnYW1lcyBzZWVtcyB0byBuZWVkCgkgIGl0IHRvIHdvcmsgYW5kIHRoZXkgd2FudCBpdCBlbnVtZXJhdGVkIGZpcnN0Li4pCgktIHNvbWUgY29tbWVudHMgYWJvdXQgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggWiBtYXNraW5nCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgcGVyLXZlcnRleCBtYXRlcmlhbCBwcm9wZXJ0aWVzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlaW1wbGVtZW50ZWQgU3dhcFRleHR1cmVIYW5kbGVzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVtb3ZlZCBzb21lIHVzZWxlc3MgV0FSTnMKCS0gZml4ZWQgYmFja2ZhY2UgY3VsbGluZyBhbmQgbWF0ZXJpYWwgc2V0dGluZ3MKCgkqIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBJRGlyZWN0M0RWZXJ0ZXhCdWZmZXIgaW50ZXJmYWNlLgoJSW1wbGVtZW50cyBHZXRWZXJ0ZXhCdWZmZXJEZXNjLgoJUmVtb3ZlIHNvbWUgdXNlbGVzcyBGSVhNRS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGJlZ2lubmluZyBvZiBNYXRlcmlhbCBhbmQgTGlnaHQgc3VwcG9ydCBmb3IgRDNENwoJLSBuZXcgcmVuZGVyaW5nIHN0YXRlcyBzdXBwb3J0ZWQKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRleHR1cmluZy4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhbGxvdyBhcHBsaWNhdGlvbiB0byBsb2FkIHBhbGV0dGUtbGVzcyB0ZXh0dXJlcwoJLSBoYW5kbGUgcGFsZXR0ZSBjaGFuZ2Ugb2YgbG9hZGVkIHRleHR1cmVzCgktIHNvbWUgY2hhbmdlcyBpbiB0aGUgRXhlY3V0ZUJ1ZmZlcgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHNvbWUgdHJhY2luZyBpbiB0aGUgZmFrZSBaQnVmZmVyIG1ldGhvZHMKCS0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIERFUFRIX0ZJTEwgQkxUCgktIHNldCBieSBkZWZhdXQgcGVyc3BlY3RpdmUgY29ycmVjdGlvbiB0byBuaWNlc3QuCgktIGRlY3JlYXNlIHRoZSBsaW1pdCB3aGVyZSAndycgaXMgaWdub3JlZAoKCSogZGxscy9kZHJhdy9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzb21lIGJsZW5kIHN0YXRlcy4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgbW9yZSBibGVuZCBzdGF0ZXMuCgoJKiBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUHJldmVudCBtZW1vcnkgbGVhayBpbiBmcmVlaW5nIG9mIHRoZSBWZXJ0ZXhCdWZmZXIuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnQgR2V0VHJhbnNmb3JtIGFuZCByZXdvcmsgYSBiaXQgdGhlIG1hdHJpY2VzIHN0b3JhZ2UuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaW1wbGVtZW50ZWQgR2V0VGV4dHVyZQoJLSBzZW1pLXN0dWJiZWQgVmFsaWRhdGVUZXh0dXJlCgktIGZpeGVkIHNvbWUgZXJyb3JzIGluIGxvZ2dpbmcKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkICdibHQnIGFuZCAnYmx0ZmFzdCcgb3ZlcnJpZGUgZnVuY3Rpb25zLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCAnZW11bGF0ZWQnIFZlcnRleEJ1ZmZlciBzdXBwb3J0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkbyBub3QgdXNlIHRoZSBhbHBoYSBjb29yZGluYXRlcyB3aGVuIEFMUEhBQkxFTkQgaXMgZGlzYWJsZWQKCS0gZGlzYWJsZSBmb2dnaW5nIGluIHRoZSBYWVpSSFcgY2FzZQoJLSB2YXJpb3VzIG90aGVyIHNtYWxsIGZpeGVzCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZhY3Rvcml6ZSBzb21lIGNvZGUgaW4gdGhlIHRleHR1cmUgdXBsb2FkaW5nIGZ1bmN0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGFuZGxlIHRleHR1cmUgYWRkcmVzc2luZyB0aGUgRDNENyB3YXkuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVByZXZlbnQgbG9jay11cCBpbiBwYWxldHRlZCB0ZXh0dXJlIHdpdGggbm8gcGFsZXR0ZSBjYXNlLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglFbmFibGUgdGhlIGFwcGxpY2F0aW9uIHRvIGNyZWF0ZSBmaXJzdCB0ZXh0dXJlcyBhbmQgdGhlbiB0aGUgRDNECglkZXZpY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jdGwzZC8uY3ZzaWdub3JlLAoJICBkbGxzL2N0bDNkL01ha2VmaWxlLmluLCBkbGxzL2N0bDNkL2N0bDNkLmMsIGRsbHMvY3RsM2QvY3RsM2Quc3BlYywKCSAgZGxscy9jdGwzZC9jdGwzZDMyLmMsIGRsbHMvY3RsM2QvY3RsM2QzMi5zcGVjLAoJICBkbGxzL2N0bDNkL2N0bDNkdjIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUFkZGVkIGN0bDNkLCBjdGwzZHYyIGFuZCBjdGwzZDMyIEFQSSBpbXBsZW1lbnRhdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwgdG9vbHMvd3JjL3dyYy5tYW46CglVcGRhdGVkIGZvciByZWNlbnQgb3B0aW9ucyBjaGFuZ2VzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9kM2Q4L3NoYWRlci5jLAoJICBkbGxzL2QzZHg4L2QzZHg4X21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgaW5jbHVkZS9kM2R4OGNvcmUuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luZW1ha2VyOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCVNldmVyYWwgaW1wcm92ZW1lbnRzIGFuZCBjb3JyZWN0aW9ucywgZm9yZW1vc3QgYmVpbmcgY29ycmVjdGluZyB3cmMKCWZsYWdzIGFuZCBzaGFyZWQgb2JqZWN0IGZpbGUgbmFtaW5nLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGltcHJvdmVtZW50IGFuZCBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBzdHJwYnJrVyBmcm9tIGZpbGVkbGc5NS5jIHRvIHdpbmUvdW5pY29kZS5oLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFJlcGxhY2VGaWxlLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB3cmFwcGVyIGdlbmVyYXRpb24gdG8gd2luZXdyYXAuCglRdWl0ZSBhIGZldyBtaWNybyBjbGVhbnVwcywgY29kZSBzaG91bGQgYmUgc2ltcGxlciB0byBmb2xsb3cuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21waWxlIHdpdGggV0lORV9VTklDT0RFX05BVElWRSBkZWZpbmVkLCBlc3NlbnRpYWwgZm9yIEMrKy4KCU5ldyAtViBvcHRpb24gdG8gZGlzcGxheSB0aGUgdmVyc2lvbi4KCURvIG5vdCBsaW5rIC1sYywgc2NyZXdzIHVwIGxpbmtpbmcsIGp1c3QgZ2V0IHRoZSBkZWZhdWx0LgoKCSogZGxscy9rZXJuZWwvd2luZGVidWcuYywgZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9pbnQyZi5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy94bXMuYywgbWVtb3J5L2dsb2JhbC5jLAoJICB0b29scy9mbnQyYmRmLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgdW51c2VkICNpbmNsdWRlIG9mIG1vZHVsZS5oLgoKCSogZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zaGFkZXIuYywgaW5jbHVkZS9kM2Q4LmgsCgkgIGluY2x1ZGUvZDNkOHR5cGVzLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW50ZWdyYXRpb24gd2l0aCBEcmF3UHJpbWl0aXZlCgktIHJlbW92ZSBub24tZXN0aGV0aWMgYysrIGNvbW1lbnRzIGludG8gYyBjb21tZW50cyBibG9jayA7KQoJLSBtb3JlIG1vcmUgZGVidWcKCS0gaW5kZW50LCBjbGVhbnVwcwoJLSB0cnlpbmcgdG8gdXNlIERJRkZVU0UgYW5kIFNQRUNVTEFSIGZvciB2ZXJ0ZXggc2hhZGVyCgktIG1hbnkgZml4ZXMKCS0gaW50ZWdyYXRpb24gd2l0aCBKYXNvbidzIHRleHR1cmUgcGF0Y2gKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTb21lIGNsZWFuLXVwcyBhZnRlciB0aGUgRHJhd1ByaW1pdGl2ZSByZXdyaXRlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggY3Jhc2ggaW4gR2V0QXZhaWxhYmxlVmlkTWVtIGZ1bmN0aW9uIHdoZW4gVFJBQ0UgaXMgYWN0aXZhdGVkLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglXaGVuIHVubWFwcGluZyBhICh3YXZlfG1pZGkpLWhlYWRlciB1bnByZXBhcmUgbWVzc2FnZSwgbWFrZSBzdXJlIHRoZQoJdW5wcmVwYXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBuYXN0eSBidWdzIGluIGRyYXdkaWIgY3JlYXRpb24vZGVsZXRpb24uCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLCBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsCgkgIGRsbHMvcWNhcC9xY2FwLnNwZWMsIGRsbHMvcWNhcC9xY2FwX21haW4uYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYzoKCURvbWluaWsgU3RyYXNzZXIgPERvbWluaWsuU3RyYXNzZXJAdC1vbmxpbmUuZGU+CglTb21lIHN0dWJzIGZvciBkbGwgc2V0dXAgbmVlZGVkIGJ5IElFNiBzZXR1cC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwb3J0IERsbEdldENsYXNzT2JqZWN0IG9mIENMU0lEX1N0ZFBpY3R1cmUuCglQSUNUWVBFX05PTkUgaGFzIHdpZHRoL2hlaWdodCAwLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUxldCBBTklNQVRFX09wZW5BIHJldHVybiBGQUxTRSAoPSBmYWlsdXJlKSB1cG9uIGEgcmVxdWVzdCB0byBjbG9zZSBhCglwcmV2aW91c2x5IG9wZW5lZCBBVkkgY2xpcCB3aGVuIHRoZXJlIGlzbid0IG9uZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUluY3JlbWVudCBsb2cgb3V0cHV0IGZyb20gMjAwIGxpbmVzIHRvIDMwMDAgbGluZXMuCglBZGRlZCBXaW4gWFAgYXMgYSBsaXN0ZWQgV2luZG93cyB2ZXJzaW9uLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggb2ZmX3QgY2FzdCB0aGF0IGJyZWFrcyBGcmVlQlNELgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGluY2x1ZGUvd2luZS90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFdJTkVURVNUX0lOVEVSQUNUSVZFLiBJZiBzZXQgdGhlbiB0ZXN0cyBjYW4gcGVyZm9ybQoJYWRkaXRpb25hbCBleHBsaWNpdGx5IGludGVyYWN0aXZlIHRlc3RzLgoJTW9kaWZ5IHRoZSB3aW5tbSB0ZXN0IHRvIHVzZSBXSU5FVEVTVF9JTlRFUkFDVElWRS4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglJQmluZEN0eDo6UmVnaXN0ZXJPYmplY3RQYXJhbSBpcyBzdXBwb3NlZCB0byByZXBsYWNlIHRoZSBvbGQgdmFsdWUgaWYKCXRoZSBrZXkgaXMgYWxyZWFkeSByZWdpc3RlcmVkLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuaDoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglWYWxpZGF0ZSBpbWFnZWxpc3RzIHdpdGggY2hyaXN0bWFzIG1hZ2ljLgoKCSogZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBtYXBwaW5nIG9mIFNUQVRVU19ERVZJQ0VfTk9UX0NPTk5FQ1RFRCB0byBtYXRjaCBYUC4KCUZpeGVkIHRoZSBwcm90b3R5cGUgb2Ygc3RhdHVzdG9kb3NlcnJvciB0byBtYWtlIHRoZSB0ZXN0IHdvcmsgb24gTlQ0LgoJQWRkZWQgYWx0ZXJuYXRlIHJldHVybiB2YWx1ZXMgdG8gbWFrZSB0aGUgdGVzdCB3b3JrIG9uIFdpbjk4LgoJQ2hlY2sgd2hldGhlciBSdGxOdFN0YXR1c1RvRG9zRXJyb3IgaXNtaXNzaW5nIHRvIG1ha2UgdGhlIHRlc3Qgd29yayBvbgoJV2luOTUuCglBZGRlZCBhIHN0cmljdCBvcHRpb24gdG8gY2F1c2UgdGhlIHRlc3QgdG8gb25seSBhY2NlcHQgdGhlIHN0YW5kYXJkCgltYXBwaW5nLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IHNwcmludGYgY2FsbHMuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHRoZSAtRiBvcHRpb24gdG8gc2V0IGEgRExMJ3MgZmlsZW5hbWUuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJRGVmYXVsdCB0byAkUCRHIHByb21wdC4gIE1ha2Ugd2lkdGggb2YgZGF0ZSAxMCBjaGFyYWN0ZXJzIHRvIGFsaWduCglkYXRlIGNvbHVtbiB3aXRoIERBVEVfU0hPUlREQVRFIGZvcm1hdC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJVXNlIHRoZSBsb2NhbGUgaWQgd2UgY3JlYXRlZCBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gb3IgdXNlciBkZWZhdWx0LAoJb3RoZXJ3aXNlIHNvbWUgdGVzdHMgYXJlIGJyb2tlbiBvbiBzeXN0ZW1zIHdoZXJlIHRoaW5ncyBhcmVuJ3QKCWVuZ2xpc2gvdXMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoyMDAyLTEyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEZpeGVkIHF1b3RpbmcgaW4gSU5TVEFMTCBjaGVjay4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCVBhc3MgdGhlIGNvcnJlY3QgaW5zdGFuY2Ugd2hlbiBpbnN0YWxsaW5nIHRoZSBtb3VzZSBob29rIChzcG90dGVkIGJ5CglMaW9uZWwgVWxtZXIpLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFjdHVhbGx5IHVzZSB0aGUgYmFja2dyb3VuZCBjb2xvciB3aGVuIENsZWFyLWluZwoJLSByZXBsYWNlIGdsT3J0aG8gYnkgYSBoYW5kLWJ1aWx0IG1hdHJpeAoJLSBmaXggYXBwbGljYXRpb25zIGRvaW5nIFNldFRyYW5zZm9ybSArIHVzaW5nIFhZWlJIVyB2ZXJ0aWNlcwoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZhY3Rvcml6ZSBDbGVhciBtZXRob2QgYmV0d2VlbiBWaWV3cG9ydCBhbmQgRGV2aWNlCgktIHNvbWUgbW9yZSByZW5kZXJpbmcgc3RhdGVzIGhhbmRsZWQKCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgdmlld3BvcnRzIHRoZSBEM0Q3IHdheS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHNvbWUgc3RlbmNpbCAvIEQzRERldmljZTcgY2FwYWJpbGl0aWVzLgoKCSogREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwKCSAgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCUplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJVXBkYXRlZCBkaXJlY3RvcnkgaW5mbyBpbiBERVZFTE9QRVJTLUhJTlRTLCBhbmQgSVJDIGluZm8gaW4gc2V2ZXJhbAoJZG9jdW1lbnRzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDb21iaW5lIHRleHR1cmluZyBmb3IgRDNEMyBhbmQgNyBieSB0aHVua2luZyAzIHRvIDcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIHRoZSB0ZXN0IHN0cmluZ3MgaW50byB0aGVpciBvd24gYXJyYXkgYW5kIGNvbnZlcnQgdGhlbSB0byB1bmljb2RlCgl1c2luZyBhIGZvciBsb29wLiBUaGlzIGxldHMgdXMgbGF0ZXIgcHJpbnQgdGhlIG9mZmVuZGluZyBzdHJpbmcgd2hlbiBhCgl0ZXN0IGZhaWxzLgoJRml4IHRoZSBNU1ZDIGNvbXBpbGF0aW9uIGVycm9yIChYWFhlMTgzKSBhbmQgd2FybmluZ3MgKHB1dCBzdWZmaXhlcyBhcwoJaW4gMEwgJiAxLjBGLCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MsIHMvLTIxNDc0ODM2NDgvMHg4MDAwMDAwMEwvKS4KCVVuY29tbWVudCB0aGUgRGF0ZUZyb21TdHIgdGVzdHMgYW5kIGZpbGwgaW4gdGhlIHRvZG8gZmllbGRzIHdoZXJlCglhcHByb3ByaWF0ZS4KCURlZmluZSBhbiBOQl9PTEVfU1RSSU5HUyBtYWNybyBhbmQgdXNlIGl0IHRvIG1ha2Ugc3VyZSBhbGwgdGhlIGFycmF5cwoJaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIGZpZWxkcy4KCUluIHRoZSAqRnJvbVN0ciBsb29wcywgZmlsbCB0aGUgcmV0dXJuIGZpZWxkIHdpdGggYSBkdW1teSB2YWx1ZSAoNDIpCgliZWZvcmUgY2FsbGluZyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbi4gVGhpcyB3YXkgYSB0ZXN0IG5vIGxvbmdlcgoJZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBwcmV2aW91cyB0ZXN0IGZhaWxlZCBvciBub3QhCglJZiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFpbCwgdGhlbiByZXR2YWwgaXMgbWVhbmluZ2xlc3MgLT4gb21pdCBpdAoJZnJvbSB0aGUgcmVzdWx0IGFycmF5cy4KCUlmIGEgdGVzdCBhY3R1YWxseSBmYWlscyBvciB3YXMgZXhwZWN0ZWQgdG8gZmFpbCwgdGhlbiB0aGVyZSBpcyBubwoJcG9pbnQgaW4gY2hlY2tpbmcgcmV0dmFsLgoJSW1wcm92ZSBlcnJvciByZXBvcnRpbmcuCglQYXNzIHRoZSBwcmludGYtc3R5bGUgZm9ybWF0IGRpcmVjdGx5IHRvIG9rLCByZW1vdmUgdGhlIHVubmVjZXNzYXJ5CglzcHJpbnRmcy4KCgkqIGRsbHMvZGRyYXcvZDNkY29tbW9uLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEdW1wIG5ldyBEM0Q3IHJlbmRlcmluZyBzdGF0ZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZhY3Rvcml6ZSB0aGUgRDNEMS8yIGRyYXdfcHJpbWl0aXZlIGNvZGUgd2l0aCB0aGUgbmV3IHN0cmlkZWQgZnVuY3Rpb24KCS0gcmV3cm90ZSBhIGxpdHRsZSBiaXQgdGhpcyBzdHJpZGVkIGZ1bmN0aW9uIHRvIGFsd2F5cyB1c2UgdGhlIHN0YXRpYwoJICBmdW5jdGlvbnMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTWFrZSBzdXJlIElOU1RBTEwgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgdG9wIGRpciB3aGVuIHVzaW5nIHRoZQoJc2NyaXB0IGluIHRvb2xzLy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJVGhlIG5hbWUgb2YgdGhlIGRyaXZlciBzaG91bGQgYmUgdGhlIDE2LWJpdCBvbmUgaW4gY2FzZSB0aGUgYXBwIHRyaWVzCgl0byBsb2FkIGl0LgoKCSogZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYywgaW5jbHVkZS9ycGNkY2UuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZGVmaW5pdGlvbnMgZm9yIFV1aWR7VG8sRnJvbX1TdHJpbmcsIFJwY1N0cmluZ0ZyZWUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhlIGRlZmludGlvbiBvZiB7LExQfU5NX1RSRUVWSUVXe0EsV30uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGEgY291cGxlIG1pc3NpbmcgbWFjcm9zLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZW1vdmUgdXNlbGVzcyBGSVhNRXMgc2luY2UgdGhlcmUgaXMgbm90aGluZyB0byBkbyBpbiBCZWdpblNjZW5lIGFuZAoJRW5kU2NlbmUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVVwZGF0ZSBhbmQgY2xlYW4tdXAgZHJhd19wcmltaXRpdmVfc3RyaWRlZF83LgoJTWFrZSBkcmF3X3ByaW1pdGl2ZV83IGJhc2VkIG9uIGRyYXdfcHJpbWl0aXZlX3N0cmlkZWRfNy4KCjIwMDItMTItMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggbWlwbWFwIHRleHR1cmUgY3JlYXRpb24KCS0gc29tZSBsb2dnaW5nIGltcHJvdmVtZW50cwoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IHNtYWxsIFRSQUNFIGJ1ZyBpbnRyb2R1Y2VkIGluIGEgcHJldmlvdXMgcGF0Y2gKCS0gYWRkIFdSQVBVIC8gV1JBUFYgd2FybmluZwoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZXBzL3dpbmVwczE2LmRydi5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMxNi5zcGVjOgoJd2luZXBzMTYuZGxsIHNob3VsZCBiZSBuYW1lZCAuZHJ2LgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3MuZHJ2LnNwZWMsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sOgoJSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglDb3JyZWN0IGFsbCBpbnN0YW5jZXMgb2YgbWl4TWVzc2FnZSB0byBteGRNZXNzYWdlLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBsaWJyYXJ5IHBhdGggKC1MKS4KCUFkZCBzdXBwb3J0IGZvciBsaW5raW5nIGFnYWluc3Qgc3RhdGljIGxpYnMuCglJZ25vcmUgLVcgZm9yIGdjYyBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYXZlIHRoZSAnTG9jaycgd2FybmluZyBhIGJpdCBjbGVhcmVyLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZXBvcnQgdGhhdCB3ZSBkbyBub3Qgc3VwcG9ydCBjb21wcmVzc2VkIHRleHR1cmUgeWV0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggcmV0dXJuaW5nIG9mIGNhcGFiaWxpdGllcyBpbiBGaW5kRGV2aWNlCgktIGZpbGwgcHJvcGVybHkgc29tZSBjYXBzIGFjY29yZGluZyB0byB3aGF0IE9wZW5HTCBjYW4gZG8KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVZhcmlhbnRDaGFuZ2VUeXBlRXggZm9yIFZUX0FSUkFZIHwgdHlwZSBzdHlsZSB2YXJpYW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBWYXJCc3RyQ21wL0NhdCAuc3BlYyBlbnRyaWVzLgoJU3RhcnRlZCByZWdyZXNzaW9uIHRlc3QgZm9yIFNhZmVBcnJheSBmdW5jdGlvbnMuCglGaXhlZCBTYWZlQXJyYXlBbGxvY0Rlc2NyaXB0b3IgKGNoZWNrIGJvdW5kcywgc2V0IGNEaW1zKS4KCUZpeGVkIFZBUlRZUEVfU0laRSBhcnJheSBlbnRyaWVzIHNvIGl0IG1hdGNoZXMgbmF0aXZlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJUmVwb3J0IG1vZGUgcGFkZGluZyB0d2Vha3MuCglGaXggdG8gTElTVFZJRVdfR2V0U3ViSXRlbVJlY3QuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsCgkgIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJR2V0IHJpZCBvZiBvbGUuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3Vua253bi5pZGwsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNZXJnZSB0aGUgcmVzdCBvZiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCBpbnRvIGluY2x1ZGUvb2JqYmFzZS5oLgoKCSogZGxscy9jb21jYXQvY29tY2F0LmgsIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdF9wcml2YXRlLmgsIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9jb21jYXQvbWFuYWdlci5jLAoJICBkbGxzL2NvbWNhdC9yZWdpc3Rlci5jLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBpbmNsdWRlL2NvbWNhdC5oOgoJUmVtb3ZlZCBzb21lIHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIHdpbmUvb2JqX2Jhc2UuaC4KCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURSSVZFX0luaXQ6IFVzZSBzdHJ0b3VsVyB0byBpbml0aWFsaXplIHRoZSBkcml2ZSBzZXJpYWwgbnVtYmVyLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZXZlcmFsIGJ1Z3M6CgkgLSB3cm9uZyBkcmF3aW5nIGZvciBjaGFycyBvdXRzaWRlIHRoZSAyMC03RiByYW5nZQoJIC0gY29uc29sZSBtb3VzZSBldmVudCBnZW5lcmF0aW9uCgkgLSBjb25zb2xlIEFsdC0/IGNoYXIgZXZlbnQgZ2VuZXJhdGlvbgoJUHJlZml4IGZvciBjdXJzZXMgZnVuY3Rpb25zIGlzIG5vdyBXQ0NVUlNFU18gaW5zdGVhZCBvZiBXQ0NVUlNFXy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVF1ZXJ5IG9wZW5nbCB0byBlbnN1cmUgaXQgc3VwcG9ydHMgbXVsdGl0ZXh0dXJlLCBhbmQgaG9ub3VyIHRoZSBudW1iZXIKCW9mIHN1cHBvcnRlZCB0ZXh0dXJlIHVuaXRzLiBFc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgTlZpZGlhIGRyaXZlcnMKCXdoaWNoIG9ubHkgc3VwcG9ydCAyIHRleHR1cmUgdW5pdHMuCgoJKiBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBEaXJlY3QzRDIgPT4gRGlyZWN0M0QzIHRodW5rIGZvciBGaW5kRGV2aWNlLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9vYWlkbC5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVdoZXJlIElDT00gbWFjcm9zIGFyZSBuZWVkZWQsIGluY2x1ZGUgb2JqYmFzZS5oLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBtaXNzaW5nIEdldEFjdGl2ZU9iamVjdCBkZWNsYXJhdGlvbi4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBtaXNzaW5nIExQRFJPUEZJTEVTIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJREVWTU9ERSBzdHJ1Y3R1cmUgdXNlcyBzaG9ydCBub3QgU0hPUlQgZm9yIGl0cyBmaWVsZHMuCgoyMDAyLTEyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDIxMjE5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTEyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJRG9uJ3QgaWdub3JlIHNwcmludGYvc3NjYW5mIGltcG9ydHMsIHNlbWFudGljcyBhcmUgbm90IGV4YWN0bHkgdGhlCglzYW1lIG9uIFdpbmRvd3MuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJSGFuZGxlIHVua25vd24gZm9ybWF0IGNoYXJzIGNvcnJlY3RseSAoc3BvdHRlZCBieSBHefZyZ3kgJ05vZycKCUplbmV5KSBhbmQgYWRkZWQgdGVzdCBmb3IgaXQuCglSZW1vdmVkIHVubmVlZGVkIF9MXyBtYWNyby4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCU1vcmUgaW5mb3JtYXRpb24gb24gc3R5bGUgYW5kIGZvcm1hdCBvZiBwYXRjaGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwgdW5pY29kZS9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgLS1hZGQtc3RkY2FsbC1hbGlhcyBmbGFnLgoKCSogdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21pbmd3cmFwLmMsIHRvb2xzL3dpbmVnY2MuYzoKCVJlbmFtZWQgbWluZ3dyYXAgdG8gd2luZWdjYy4KCVJlbW92ZWQgLURXSU5FX0RFRklORV9XQ0hBUl9ULgoKCSogdG9vbHMvd3BwL3dwcC5jOiBUYXBpbyBLYXV0dG8gPGVsZWtuYWRlckBwaG5ldC5maT4KCUZpeCBmb3IgbWlzc2luZyBwcGRlYnVnIHZhcmlhYmxlLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZTE2LmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywKCSAgZGxscy9vbGUzMi9ycGMuYzoKCUZpeGVkIGEgZmV3IHByb2JsZW1zIGNhdXNlZCBieSB0aGUgbmV3IG9iamlkbC5pZGwuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBHZXRXaW5NZXRhRmlsZUJpdHMoKSBkZWNsYXJhdGlvbi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2JqaWRsLmlkbCwKCSAgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwKCSAgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJV3JvdGUgYSBuZXcgb2JqaWRsLmlkbCB0byByZXBsYWNlIGEgbnVtYmVyIG9mIGluY2x1ZGUvd2luZS9vYmpfKi5oCglmaWxlcy4KCgkqIGRsbHMvY2FiaW5ldC9NYWtlZmlsZS5pbiwgZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywKCSAgZGxscy9jYWJpbmV0L2NhYmluZXQuaCwgZGxscy9jYWJpbmV0L2NhYmluZXQuc3BlYywKCSAgZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jLCBkbGxzL2NhYmluZXQvZmRpLmMsCgkgIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCB3aW5lZGVmYXVsdC5yZWc6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gcG9ydCBjYWJleHRyYWN0IHRvIHdpbmUKCS0gaW1wbGVtZW50IGNhYmluZXQuZGxsLkV4dHJhY3QsIHVybG1vbi5kbGwuRXh0cmFjdAoJLSBhZGQgU1A2YSByZWdpc3RyeSBrZXkgdG8gd2luZWRlZmF1bHQucmVnCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOiBBdm9pZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFiQGJydHVyYm8uY29tPgoJSW5jbHVkZWQgYSBzcGVjaWZpYyBBQk5ULTIgc2NhbiBhbmQgdmtleSB0YWJsZXMsIGFuZCBhbiBBQk5ULTIKCWtleWJvYXJkIHdpdGggPEFMVD48R1I+IGtleSBjb2Rlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBhIGNvdXBsZSBvZiB0eXBlcyBmcm9tIGluY2x1ZGUvd2luZS9vYmpfKi5oIHRvCglpbmNsdWRlL3d0eXBlcy5pZGwuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZGVmaW5lcyBmb3IgTFZfSVRFTSwgTFZfRElTUElORk8sIGFuZCBMVl9GSU5ESU5GTy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbiBXaW45eCAiaGlcbiIgZ2l2ZXMgdXMgImhpXHJcbiIuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgZGVmaW5pdGlvbnMgZm9yIE5bV11QU1RSLgoJQWRkIGEgYnVuY2ggb2YgU0VfKiBkZWZpbml0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIEdldFRpbWVGb3JtYXQoKSBhbmQgR2V0RGF0ZUZvcm1hdCgpLgoJVW5jb21tZW50IHdpbmVfdG9kbyB0ZXN0cyB0aGF0IG5vdyBzdWNjZWVkIHdpdGggZml4ZXMgdG8KCUdldFRpbWUvRGF0ZUZvcm1hdCgpLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL29sZTJubHMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUdldERhdGVGb3JtYXQoKSBhbmQgR2V0VGltZUZvcm1hdCgpIHNob3VsZCBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlCgl0aW1lL2RhdGUgc3RydWN0dXJlIGl0IGlzIHByb2Nlc3NpbmcuCglBZGQgY29tbWVudHMgdG8gZGVzY3JpYmUgZmxhZ3MgYmVoYXZpb3IuCglBZGQgc3VwcG9ydCBmb3IgVElNRV9GT1JDRTI0SE9VUkZPUk1BVCwgVElNRV9OT01JTlVURVNPUlNFQ09ORFMsCglUSU1FX05PU0VDT05EUyBhbmQgVElNRV9OT1RJTUVNQVJLRVIuCglBZGQgY2hlY2sgaW4gR2V0RGF0ZUZvcm1hdFcoKSBmb3IgaW52YWxpZCBmbGFnIGNvbWJpbmF0aW9ucy4KCUFkZGVkIHNvbWUgbWlzc2luZyBEQVRFXyogZGVmaW5lcyB0byB3aW5ubHMuaC4KCUJlaGF2aW9yIHZlcmlmaWVkIGFnYWluc3QgTlQ0LjAuCgoJKiBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLAoJICBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvc2NhbmYuYywgZGxscy9tc3ZjcnQvc2NhbmYuaCwKCSAgZGxscy9tc3ZjcnQvd2NzLmM6CglVc2UgTVNWQ1JUX3djaGFyX3QgaW5zdGVhZCBvZiBXQ0hBUiBzbyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBtYXRjaGVzCgl0aGUgcHJvdG90eXBlcy4KCgkqIHRvb2xzL3dtYy9tY3kueTogQXZvaWQgcmVmZXJlbmNpbmcgcG90ZW50aWFsbHkgZnJlZWQgdG9rZW4uCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdXJsLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgVXJsQ3JlYXRlRnJvbVBhdGhbQVddIGFuZCBzbGlnaHRseSByZWxhdGVkCglQYXRoQ3JlYXRlRnJvbUZpbGVBLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJU3R1YiBmb3IgR2V0U2VjdXJpdHlJbmZvRXhXKCkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FjY2N0cmwuaDogQWRkZWQgYWNjY3RybC5oIGhlYWRlci4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSAtTCB3cmMgb3B0aW9uLCBhcyBubyBhdXRvbWF0aWMgZnVkZ2luZyBvZiBmaWxlbmFtZXMgY2FuCglldmVyIGJlIGNvcnJlY3QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9wYWludGluZy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZVdpbmRvdyByZXR1cm5zIGEgQk9PTGVhbi4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXJmYWNlIGR1bXBpbmcgZnVuY3Rpb24gZm9yIGRlYnVnLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGltZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudGF0aW9uIG9mIFN5c3RlbVRpbWVUb1R6U3BlY2lmaWNMb2NhbFRpbWUoKSBhbmQKCVR6U3BlY2lmaWNMb2NhbFRpbWVUb1N5c3RlbVRpbWUoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUludHJvZHVjZWQgc29tZSBkZWNsYXJhdGlvbnMgYW5kIHJlc291cmNlcyBuZWVkZWQgZm9yIGEgbW9yZSBjb21wbGV0ZQoJaW1wbGVtZW50YXRpb24gb2YgU0hGaWxlT3BlcmF0aW9uLgoKCSogb2xlL29sZTJubHMuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQ29tcGFyZVN0cmluZ1cgc2hvdWxkIHJldHVybiAwIHdoZW4gb25lIG9mIHRoZSBwcm92aWRlZCBzdHJpbmdzIGlzIGEKCU5VTEwgcG9pbnRlci4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBpbmNsdWRlL2RkZW1sLmg6CglMUENPTlZDT05URVhUIHNob3VsZCBiZSBQQ09OVkNPTlRFWFQgKHNwb3R0ZWQgYnkgRGltaXRyaWUgTy4gUGF1bikuCglTYW1lIGZvciBMUEhTWlBBSVIgYW5kIExQQ09OVklORk8uCgoJKiBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBzb21lIGRlZmluaXRpb25zIGZyb20gaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmggdG8KCWRsbHMvb2xlMzIvbW9uaWtlci5oLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FwaWJ1Zi5jLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU9uIFdpbjl4IG5ldGFwaTMyLmRsbCBkb2VzIG5vdCBleHBvcnQgYSBzaW5nbGUgQVBJIHNvIHdlIGRvIGEKCUdldFByb2NBZGRyZXNzIGZvciBlYWNoIG9mIHRoZW0gYW5kIHNraXAgdGhlIHRlc3RzIHdoZW4gbmVjZXNzYXJ5LgoJT24gV2luOXggR2V0VXNlck5hbWVXIGFuZCBHZXRDb21wdXRlck5hbWVXIGFyZSBzdHVicy4KCUltcHJvdmUgZXJyb3IgcmVwb3J0aW5nIGluIGFjY2Vzcy5jLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYywgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlY2xhcmUgTG9jYWxEaXNjYXJkIGFuZCBHbG9iYWxEaXNjYXJkICh1c2VkIGJ5IGtlcm5lbC90ZXN0cy9hbGxvYy5jKQoJUmVtb3ZlIHRoZSBESVNDQVJEX0RFRklORUQgI2lmZGVmcy4KCVJlbW92ZSBhbm90aGVyIGRvdWJsZSBIZWFwRnJlZSAoY2F1c2VkIGFuIGFzc2VydCB3aGVuIHJ1biBvbiBOVDQpLAoJYW5kIGEgSGVhcFNpemUgb24gYSBmcmVlZCBoZWFwICh0aGUgdGVzdCBmYWlsZWQgb24gV2luOXgpLgoJRml4IHRoZSBMb2NhbExvY2svTG9jYWxVbmxvY2sgdGVzdHMgKHRoZSBtZW1vcnkgbXVzdCBiZSBhbGxvY2F0ZWQKCXdpdGggTE1FTV9NT1ZFQUJMRSBvdGhlcndpc2UgdGhlIHRlc3RzIGRvbid0IG1ha2Ugc2Vuc2UpLgoJUmVtb3ZlIG1hbnkgdW5uZWNlc3NhcnkgY2FzdHMuCglJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcgc29tZXdoYXQuCgoyMDAyLTEyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUltcHJvdmUgZXJyb3IgcmVwb3J0aW5nLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbCBmaWxlbmFtZXMgY29udGFpbmluZyBhICI6IiBhcmUgaW52YWxpZCBvbiBXaW45eCBhbmQgMjAwMCBidXQgYXJlCgl2YWxpZCBvbiBOVDQgLT4gcmVtb3ZlIHRoZXNlIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCSNpZmRlZi1vdXQgZGVjb2RlVyBzaW5jZSBpdCBpcyBub3QgdXNlZCB5ZXQuCglGaXggdGhlIGxwRGVza3RvcCBhbmQgbHBUaXRsZSBjaGVja3Mgb24gTlQgcGxhdGZvcm1zLgoKCSogZGxscy91c2VyL3Rlc3RzL3dzcHJpbnRmLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJd3NwcmludGZXIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luOXggcGxhdGZvcm1zLgoJd3NwcmludGZ7QSxXfVRlc3Qgc2hvdWxkIGJlIHZvaWQuCglJbXByb3ZlIGVycm9yIHJlcG9ydGluZy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZXMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVVucXVvdGVkIHNvbWUgMTYtYml0IHR5cGVzLCBzbyB0aGUgSURMIGNvbXBpbGVyIGNhbiB1c2UgdGhlbS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFwIHN0cmNhc2VjbXAgdG8gX3N0cmljbXAuCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBDT00gQVBJIHByb3RvdHlwZXMgdG8gb2JqYmFzZS5oLCBmcm9tIHdpbmUvb2JqXyouaC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIG9sZS91dWlkLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZWQgYSBmZXcgbW9yZSBpbmNsdXNpb25zIG9mIGRlcHJlY2F0ZWQgd2luZS9vYmpfKi5oIGhlYWRlcnMuCgoJKiBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCU1hZGUgY3J0ZGxsIGEgbm9ybWFsIHVzZXIgb2YgbXN2Y3J0IGJ5IHNldHRpbmcgdGhlIHJpZ2h0IGluY2x1ZGUKCXBhdGguCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvc2NhbmYuYywKCSAgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9laC5oLCBpbmNsdWRlL21zdmNydC9lcnJuby5oLAoJICBpbmNsdWRlL21zdmNydC9pby5oLCBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsIGluY2x1ZGUvbXN2Y3J0L21iY3R5cGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWJzdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLAoJICBpbmNsdWRlL21zdmNydC9zZWFyY2guaCwgaW5jbHVkZS9tc3ZjcnQvc2V0am1wLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLCBpbmNsdWRlL21zdmNydC9zdGRpby5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUF2b2lkIGluY2x1ZGluZyBvdGhlciBoZWFkZXJzIGZyb20gdGhlIG1zdmNydCBoZWFkZXJzLCBkdXBsaWNhdGUgc29tZQoJZGVmaW5pdGlvbnMgaW5zdGVhZCBsaWtlIFdpbmRvd3MgZG9lcy4KCUFsd2F5cyBkZWZpbmUgd2NoYXJfdCAoc3VnZ2VzdGVkIGJ5IERpbWl0cmllIE8uIFBhdW4pLCBhbmQgdXNlIHdjaGFyX3QKCWV2ZXJ5d2hlcmUgaW5zdGVhZCBvZiBXQ0hBUiB0byBhdm9pZCBkZXBlbmRpbmcgb24gV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJIC0gc29tZSBmaXhlcyBpbiBDcmVhdGVEZXZpY2UgaW5pdAoJIC0gdmVydGV4IHNoYWRlciBkZWNsYXJhdGlvbiBwYXJzZXIgKHdpdGggb3V0cHV0IGR1bXApIGFuZAoJICAgaW50ZXJwcmV0YXRpb24gKGdlbmVyYXRlIHRoZSBGVkYgZGVzY3JpcHRvciBmb3IgcHJvZ3JhbSBpbnB1dCkKCSAtIHZlcnRleCBzaGFkZXIgcHJvZ3JhbSBwYXJzZXIgKHdpdGggb3V0cHV0IGR1bXApCgkgLSBzb2Z0d2FyZSB2ZXJ0ZXggc2hhZGVyIHByb2dyYW0gZW11bGF0aW9uCgoJKiBpbmNsdWRlL2QzZDh0eXBlcy5oOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIHNvbWUgbmVjZXNzYXJ5IGRlZmluaXRpb25zIGZvciBEM0Q4IFZlcnRleCBhbmQgUGl4ZWwgc2hhZGVyCglzdXBwb3J0LgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSWYgYSAucmVnIGZ1bmN0aW9uIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBzeW1saW5rIHRoZW4gd3JpdGUgZGlyZWN0bHkKCXRvIHRoZSBmaWxlIHJhdGhlciB0aGFuIHJlcGxhY2luZyBpdCB3aXRoIGEgdGVtcCBmaWxlLiAgVGhpcyBwcmVzZXJ2ZXMKCW93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgUnRsVGltZVRvRWxhcHNlZFRpbWVGaWVsZHMuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBpbiBhbm90aGVyIHBsYWNlIGluIHRoZSBjb2RlIGNvbXB1dGluZyB0aGUgbWVtb3J5IHVzYWdlLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQdXJnZSB0cmFjZXMgb2YgdGhlIG9sZCByZWxheSBkZWJ1ZyBtZWNoYW5pc20gYW5kIGRvY3VtZW50IG5ldwoJbWVjaGFuaXNtIGJldHRlci4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYywgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIHN0cmxlbiBvciBsc3RybGVuQSBhcyBhcHByb3ByaWF0ZSB0byBhdm9pZCBzaWduZWQvdW5zaWduZWQKCXdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgbGluayBjb21tYW5kIHNwZWNpZmllcyB3aGljaCB2ZXJzaW9uIG9mIHRoZSBDIGxpYnJhcnkgdG8gbGluayB3aXRoCgkoc2VlIC9NW1REXWQ/IG9wdGlvbikuIFNvIHdlIG11c3Qgbm90IGV4cGxpY2l0bHkgbGluayB3aXRoCgknbXN2Y3J0LmxpYicuIEZpeGVzIHRoZSBtc3ZjcnQgdGVzdCBjcmFzaGVzLgoKCSogaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBVVUlEIHR5cGUgdG8gcnBjZGNlLmgsIGFzIGluIHRoZSBNUyBSUEMgaGVhZGVycy4KCVJlbW92ZWQgcmVkdW5kYW50IHByb3RvdHlwZS4KCjIwMDItMTItMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYzogRGVidWcgY2hhbm5lbHMgY2xlYW51cC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9maWJlci5jOgoJSW1wbGVtZW50ZWQgdGhlIEZpYmVyKiBmdW5jdGlvbnMgKHdpdGggdGhlIGhlbHAgb2YgSHV3IERhdmllcykuCgoJKiBpbmNsdWRlL3Vua253bi5oLCB0b29scy93aWRsL2hlYWRlci5jOgoJRml4IHRoZSB0eXBlIG9mIHRoZSBUaGlzIHBvaW50ZXIgaW4gdGhlIHZ0YmwgZnVuY3Rpb25zIGluaGVyaXRlZCBmcm9tCgl0aGUgYmFzZSBjbGFzcy4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IEZpeGVkIHdhcm5pbmdzLgoKCSogc2VydmVyL2hvb2suYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJVGhlIGhhbmRsZXIgZm9yIHRoZSBzZXJ2ZXIgbWVzc2FnZSBnZXRfbmV4dF9ob29rIHdhcyByZXR1cm5pbmcgdGhlCgltb2R1bGUgbmFtZSBvZiB0aGUgY3VycmVudCBob29rLCBpbnN0ZWFkIG9mIHRoZSBuZXh0IG9uZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciB7U3RhcnQsRW5kfXtEb2MsUGFnZX1QcmludGVyLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglOZWVkIHRvIGluaXRpYWxpemUgdHJhY2tpbmcgdmFsdWUgb24gbW91c2Vkb3duLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOgoJQmlsbCBDdXJyaWUgPGJpbGxAdGFuaXdoYS5vcmc+CglmZG9wZW46IGRvbid0IHJld2luZCB0aGUgZmlsZSBhZnRlciBjcmVhdGluZyB0aGUgRklMRSogaGFuZGxlLiBBZGRlZAoJdW5pdCB0ZXN0IGZvciB0aGF0LgoKCSogY29udHJvbHMvbWVudS5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglTZXQgdGhlIE9EU19ESVNBQkxFRCBiaXQgd2hlbiB0aGUgaXRlbSBpcyBncmF5ZWQuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmV0dGVyIGhhbmRsaW5nIG9mIGVycm9ycyB3aGlsZSBmb3JrL2V4ZWNpbmcuCglBZGQgdmVyYm9zZSBjb21tYW5kIGxpbmUgc3dpdGNoLgoJQWRkIC16IGRlZnMgYXQgbGluayBzdGFnZSwgdG8gY2F0Y2ggbWlzc2luZyBzeW1ib2xzLgoKCSogdG9vbHMvbWluZ3dyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVBhc3MgdGhlIGd1aSBmbGFnIHRvIHdpbmV3cmFwIGlmIHdlJ3JlIGxpbmtpbmcgYSBHVUkgYXBwLgoKCSogZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglNb3ZlIENWUyBkb2N1IGZyb20gVXNlciBHdWlkZSB0byBEZXZlbCBHdWlkZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUlmIHdlIHN1cHBvcnQgJ25vbi1uYXRpdmUnIHRleHR1cmUgZm9ybWF0LCBhZHZlcnRpc2UgaXQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglUaGUgc2ltcGxlIGJpdHMgb2YgZm9nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2ludGFiMzIvLmN2c2lnbm9yZSwKCSAgZGxscy93aW50YWIzMi9NYWtlZmlsZS5pbiwgZGxscy93aW50YWIzMi9jb250ZXh0LmMsCgkgIGRsbHMvd2ludGFiMzIvbWFuYWdlci5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYi5zcGVjLAoJICBkbGxzL3dpbnRhYjMyL3dpbnRhYjE2LmMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuc3BlYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9wa3RkZWYuaCwgaW5jbHVkZS93aW50YWIuaCwKCSAgaW5jbHVkZS93aW50YWJ4Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN0dWJzIGZvciBXSU5UQUJ7LDMyfS5ETEwgKHVzZWQgYnkgbWFueSBpbXBvcnRhbnQgZHJhd2luZwoJYXBwbGljYXRpb25zIGZvciBzdXBwb3J0aW5nIHRhYmxldHMpLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZCBzdGFuZGFyZCBkaXNwYXRjaCBpbXBsZW1lbnRhdGlvbiAoQ3JlYXRlU3RkRGlzcGF0Y2gpLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaDogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCURpcmVjdCB0aGUgb3V0cHV0IG9mIHRoZSB0ZXN0cyB0byBzdGRvdXQgc28gdGhhdCBXaW45OCBjYW4gcmVkaXJlY3QKCXRoZSBvdXRwdXQgdG8gYSBmaWxlLgoKCSogZGxscy9uZXRhcGkzMi9hY2Nlc3MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU5ldFVzZXJHZXRJbmZvOiBpbXBsZW1lbnRlZCBMZXZlbCAxLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvZHg4Z3VpZC5jLCBvbGUvZHhndWlkLmMsIG9sZS91dWlkLmM6CglTcGxpdCBEaXJlY3RYIEdVSURzIHRvIHNlcGFyYXRlIGZpbGVzIHRvIGF2b2lkIGhlYWRlciBjb25mbGljdHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L01ha2VmaWxlLmluLAoJICBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywKCSAgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvbWFrZV9kbGxzLAoJICBkbGxzL2QzZHg4Ly5jdnNpZ25vcmUsIGRsbHMvZDNkeDgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZDNkeDgvZDNkeDguc3BlYywgZGxscy9kM2R4OC9kM2R4OF9tYWluLmMsCgkgIGRsbHMvZDNkeDgvZDNkeDhjb3JlX3ByaXZhdGUuaCwgZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDh0eXBlcy5oLAoJICBpbmNsdWRlL2QzZHg4Y29yZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNvbWUgRDNEOCBmaXhlcwoJLSBiZWdpbm5pbmcgb2Ygc2hhZGVycyBzdXBwb3J0IChWZXJ0ZXggYW5kIFBpeGVsIFNoYWRlcnMgMS4xIG9uCgkgIERpcmVjdFg4KQoJLSBiZWdpbm5pbmcgb2YgRDNEWDggc3VwcG9ydCB0aGUgRDNEOCB1dGlsaXR5IEFQSSAodmVyeSBiYXNpYywgb25seQoJICB0aGUgY29yZSBoZWFkZXIpCgoyMDAyLTEyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS91bmtud24uaWRsLAoJICBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJV3JvdGUgYSBXaW5lLWNvbXBhdGlibGUgdW5rbnduLmlkbCwgbW92aW5nIHRoZSBJVW5rbm93biBkZWZpbml0aW9uCglmcm9tIHdpbmUvb2JqX2Jhc2UuaCB0byB0aGUgZ2VuZXJhdGVkIHVua253bi5oLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDaGFuZ2UgY2FsbHMgdG8gQ0xTSURGcm9tU3RyaW5nIHRvIFNIQ0xTSURGcm9tU3RyaW5nVyBleGNlcHQgaW4KCVNIQ0xTSURGcm9tU3RyaW5nVyBmb3IgdGhlIHRpbWUgYmVpbmcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBhY3R1YWxseSB1c2UgUExVSUQKCS0gaW5pdGlhbGl6ZSB0aGUgb3V0Ym91bmQgbHBMdWlkIHZhcmlhYmxlIHdpdGggYm9ndXMgdmFsdWVzCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggYmFkIFRSQUNFCgktIGZpeGVkIGNvbXB1dGF0aW9uIG9mIG1lbW9yeSB1c2VkIGJ5IGEgdGV4dHVyZQoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmV2ZXJ0IHNvbWUgb3B0aW1pc2F0aW9ucyBicmVha2luZyBzb21lIGdhbWVzCgktIGFkZGVkIGEgbmV3IHRleHR1cmUgZm9ybWF0ICg0NDQ0IEFSR0IpCgktIGZpeGVkIHRoZSBjb21wdXRhdGlvbiBvZiBjb2xvcnMKCS0gYWRkZWQgbmV3IHJlbmRlciBzdGF0ZXMgYW5kIGZvZyBzdXBwb3J0IChOT1QgaGFuZGxlZCB5ZXQgZm9yCgkgIHRyYW5zZm9ybWVkIHZlcnRpY2VzKQoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBEcmF3UHJpbWl0aXZlU3RyaWRlZCBhbmQgRHJhd0luZGV4UHJpbWl0aXZlU3RyaWRlZC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggYSBtZW1vcnkgbGVhayBhbmQgb3B0aW1pemUgYSBsaXR0bGUgYml0IHRoZSBnZW5lcmljIHBhdGguCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXByb3ZlIHRyYWNlcyArIHNtYWxsIGZpeC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBUd2lzdCBkZW1vCgktIHNvbWUgY2xlYW4tdXBzIC8gdHJhY2VzCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBjb25maWcuaC9wb3J0LmggdG8gYWxsb3cgY29tcGlsYXRpb24vbGlua2luZyBpbiBNU1ZDLgoJRml4IHNvbWUgdW5zaWduZWQvc2lnbmVkIHdhcm5pbmdzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CgktIEltcGxlbWVudCBvcmRpbmFscyAxNjcgYW5kIDE3MS4KCS0gQWRkIHN0dWJzIGZvciBvcmRpbmFscyAyODIgYW5kIDQwNi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTWFrZSBzb21lIHNoZWxsMzIgZmlsZXMgY29tcGlsZSBpbiBNU1ZDLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCURvIGF0IGxlYXN0IHNvbWV0aGluZyBmb3IgU0hEcmFnRHJvcCBmdW5jdGlvbnMgYWx0aG91Z2ggdGhhdCBpc24ndCB0aGUKCWNvbXBsZXRlIG9wZXJhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgZGVidWcgaW5mbyBmb3IgSUV4dHJhY3RJY29uVy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydHMgdGhlIEFMUEhBRlVOQyBhbmQgQUxQSEFSRUYgcmVuZGVyaW5nIHN0YXRlcy4KCgkqIHRvb2xzL21ha2VfY3Rlc3RzOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT24gV2luZG93cyB3aW5kZWYuaCBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5iYXNlLmguCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgY2FwYWNpdHkgb2YgcGxheWluZyBhIHRlc3QgdG9uZSB1c2luZyB0aGUgJ3BsYXknIG9wdGlvbi4KCUZhY3Rvcml6ZSB0aGUgcmVndWxhciBhbmQgV0FWRV9GT1JNQVRfRElSRUNUIHRlc3RzLgoJVGVzdCB0aGUgbmV3IDQ4IGFuZCA5NmtIeiBmb3JtYXRzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGFuIEEvVyBzdHJ1Y3R1cmUgc2l6ZSBidWcgaW4gRHJhd0NhcHRpb25UZW1wVygpLgoKCSogdG9vbHMvcnVudGVzdDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAnLS0nIG9wdGlvbiBmb3IgcGFzc2luZyBleHRyYSBhcmd1bWVudHMgdG8gdGhlIHRlc3QuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglTZXBhcmF0ZSBYU2htIHVzaW5nIGNvZGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuaCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGxpbmtzIGNhbiBub3cgc3ByZWFkIGFjcm9zcyBzZXZlcmFsIGVsZW1lbnRzCgktIGxpbmsgaW5mb3JtYXRpb24gaXMgbm93IHNoYXJlZCBiZXR3ZWVuIGZpbGUgJiBwcmVzZW50YXRpb24KCS0gZmlyc3QgdHJ5IGF0IGhhbmRsaW5nIG1ldGFmaWxlcwoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGlzc3VlcyB3aXRoIHRoZSBnZGIgcHJveHkuCgoJKiBkbGxzL2tlcm5lbC9jb21tLnNwZWM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgV2luMy4xIGV4cG9ydCBzdHVicy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBzcGVsbGluZyBjb3JyZWN0aW9ucwoJLSBwcm9wZXJseSBkb2N1bWVudCBob3cgdG8gc2V0IHRoZSBET1MgUEFUSAoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUltcGxlbWVudGVkIFZhck9yKCkuCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCBzdXBwb3J0IGZvciB0aGUgVGV4dHVyZUFkZHJlc3MgcmVuZGVyIHN0YXRlLgoKMjAwMi0xMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvd2lkbC5jLAoJICB0b29scy93aWRsL3dpZGwuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJT3V0cHV0IHJhdyBJQ09NLWxlc3MgQy9DKysgaW50ZXJmYWNlIGRlZmluaXRpb25zIGJ5IGRlZmF1bHQuIEFkZGVkIG5ldwoJLWIgYW5kIC1CIGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciBjb21wYXRpYmlsaXR5IHdpdGggSUNPTSBtYWNyb3MuCgoJKiB0b29scy93aW5lbWFrZXI6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJVXBkYXRlZCB3aW5lbWFrZXIgdG8gYWNjb3VudCBmb3IgY2hhbmdlIGluIHdpbmUncyBsaW5raW5nIG1ldGhvZC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywKCSAgZGxscy93aW5tbS93aW5tbS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gdGhlIGxhdGVzdCBzZGsgdGhlIHt3YXZlT3V0LG1pZGlPdXR9e0dldCxTZXR9Vm9sdW1lIGZ1bmN0aW9ucyB0YWtlCglhIGhhbmRsZSBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaGFuZ3VwIGNvbmRpdGlvbiBhdCB0aGUgZW5kIG9mIHNvbWUgcGxheWJhY2suCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBzdXBwb3J0IGZvciBkZWZpbmluZyBmb3J3YXJkIGZ1bmN0aW9ucyBhcyBzdGRjYWxsIHNvIHRoYXQgd2UgY2FuCglnZXQgdGhlIHByb3BlciBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzdGRjYWxsIGRlY29yYXRpb24uCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBkbGxzL21ha2VfZGxsczoKCVVzZSBpbXBvcnQgbGlicmFyaWVzIHdoZW4gYnVpbGRpbmcgdGVzdHMgdG9vLiBNYWtlIHN1cmUgdGhlIC5hCglsaWJyYXJpZXMgYXJlIGJ1aWx0IGZvciBjcm9zc3Rlc3QuCgoJKiBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCB0b29scy93aWRsL01ha2VmaWxlLmluLAoJICB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dwcC9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJQWRkZWQgeS50YWIuW2NoXSBwc2V1ZG8tZGVwZW5kZW5jaWVzIHRvIGZpeCBwYXJhbGxlbCBtYWtlcy4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvaGltZW0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZWRvcy9yZWxheS5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvczE2LnNwZWM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc3VwcG9ydCBmb3IgRFBNSTMyLiBNYWtlIHdpbmVkb3MxNi5kbGwgdW5uZWNlc3NhcnkuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSByZXdvcmsgaG93IHRleHR1cmluZyBpcyBkb25lIGluIHRoZSBEM0QgZHJpdmVyCgkgLSBhZGRlZCB0aGUgZ2VuZXJpYyBwYXRoIGZvciBEcmF3UHJpbWl0aXZlIEFQSSBpbiBEM0QgMyAvIDcKCgkqIHRvb2xzL21pbmd3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUZWFjaCBtaW5nd3JhcCB0byB1c2Ugd2luZXdyYXAgdG8gZG8gdGhlIGxpbmtpbmcsIGp1c3QgbGlrZSBnY2MgdXNlcwoJbGQgdG8gbGluayBvbiBVbml4LiBCYXNlZCBsb29zZWx5IG9uIGEgdUNsaWIgdXRpbGl0eSBkZXZlbG9wZWQgYnkKCU1hbnVlbCBOb3ZvYSBJSUkuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZXdyYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBjbGVhbnVwcyB0byBtYXRjaCBjdXJyZW50IGJ1aWxkIHByb2Nlc3MuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGJhZCBsb2dpYyBpbiA9PSBOVUxMIHRlc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBVbmljb2RlIElFeHRyYWN0SWNvbiBjcmVhdGlvbiBpbgoJSVNoZWxsRm9sZGVyLT5HZXRVSU9iamVjdE9mLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGNyYXNoIHdoZW4gY29uc3RydWN0aW5nIEFOU0kgaW50ZXJmYWNlIHBvaW50ZXIgdG8gSUV4dHJhY3RJY29uLAoJZm91bmQgYnkgVXdlIEJvbm5lcy4KCUFkZCBzb21lIHRyYWNlcyB0byB0aGUgY29uc3RydWN0b3JzLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW5jbHVkZSBndWlkZGVmLmggaW4gd2lkbHR5cGVzLmguCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHVuYWJsZSB0byBzZXQgdGhlIGRlc2lyZWQgZm9ybWF0LCBPU1NfUmF3T3BlbkRldmljZSBzaG91bGQgY2FsbAoJVFJBQ0UsIG5vdCBFUlIuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU91ciByZXNhbXBsaW5nIGFsZ29yaXRobSBpcyBxdWl0ZSBwcmltaXRpdmUgc28gdHJ5IHNpbXBsZSA4LzE2Cgltb25vL3N0ZXJlbyBjb252ZXJzaW9ucyBmaXJzdC4gT25seSByZXNhbXBsZSBpZiB3ZSBjYW5ub3QgYXZvaWQgaXQuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIHNsaWdobHkgbW9yZSBhY2N1cmF0ZSBmb3JtdWxhIGZvciBDODE2LgoJV3JhcCBhIGNvdXBsZSBvZiBjb21tZW50cyB0byA4MCBjb2x1bW5zLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGRsbHMvd2lubW0vd2lubW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiBnaXZlbiBhIGJhZCBkZXZpY2UgaWQgd2F2ZU91dEdldERldkNhcHNBIGlzIHN1cHBvc2VkIHRvIHJldHVybgoJTU1TWVNFUlJfQkFEREVWSUNFSUQuIEZpeGVzIGEgdG9kb193aW5lIGluIHRoZSB3aW5tbSB0ZXN0LgoKMjAwMi0xMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZGVkIFVuaWNvZGUgdmVyc2lvbnMgb2YgdGhlIEhDUl8gaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9jdW1lbnQgaG93IHRvIGNyb3NzLWNvbXBpbGUgdGhlIHRlc3RzIHdpdGggTWluR1cuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgKG4pY3Vyc2VzIGJhY2tlbmQgdG8gdGhlIHdpbmVjb25zb2xlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnJhcnkvcG9ydC5jOgoJQnJhZCBDYW1wYmVsbCA8YnJhZEBzZW1lLmNvbS5hdT4KCUFkZGVkIGFkZGl0aW9uYWwgdGVzdCBmb3IgZ2N2dCBhcyB1Q2xpYmMgYXBwZWFycyB0byBoYXZlIHRoaXMgYW5kIG5vdAoJZWN2dC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBhc3luY2hyb25vdXMgc2lnbmFscyBhcmUgYmxvY2tlZCwgYmxvY2sgYWxzbyBTSUdVU1IyLgoJRml4IHJhY2UgdGhhdCBtYWRlIHNpZ25hbCBoYW5kbGVyIGZvcmdldCB0byByZXN0b3JlIEZTIHJlZ2lzdGVyLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBTdHJTdHJJVy4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElEaXJlY3RTb3VuZDNETGlzdGVuZXJJbXBsX1NldCooKS4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJQXZvaWQgY2FzdHMgYmV0d2VlbiBMQVJHRV9JTlRFR0VSIGFuZCBGSUxFVElNRS4KCUZpeGVkIGRheSBvZiB3ZWVrIG9mIGVwb2NoLgoJU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglGaXhlZCBzb21lIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2ZpbGUuYywgd2luMzIvdGltZS5jOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCS0gUmVpbXBsZW1lbnQgdGltZSBmdW5jdGlvbnMgdXNpbmcgbnRkbGwgZnVuY3Rpb25zLgoJLSBTb21lIGNsZWFudXBzLgoKCSogZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBpbmNsdWRlL2xtZXJyLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJU3R1YiBOZXRHZXREQ05hbWUoKS4gIEFkZCBpbiB0aGUgcmVzdCBvZiB0aGUgTkVSUl8qIGRlZmluZXMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRXh0ZW5kIHRoZSB0ZXN0IGJ5IGNyZWF0aW5nIGEgUHJpbWFyeUJ1ZmZlciBvYmplY3QgYW5kIHBlcmZvcm0gYSBmZXcKCWJhc2ljIHRlc3RzIHN1Y2ggYXMgcXVlcnlpbmcgaXRzIGNoYXJhY3RlcmlzdGljcyBhbmQgY2hhbmdpbmcgaXRzCglmb3JtYXQuCglDaGFuZ2luZyB0aGUgZm9ybWF0IHJlcXVpcmVzIHRoYXQgd2UgY2FsbCBTZXRjb29wZXJhdGl2ZUxldmVsIGZpcnN0LAoJd2hpY2ggbWVhbnMgd2UgbmVlZCBhbiBod25kLiBTbyB0aGUgdGVzdCBtdXN0IG5vdyBsaW5rIHdpdGgKCXVzZXIzMi5kbGwuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlEaXJlY3RTb3VuZEJ1ZmZlci5HZXRDYXBzIHNob3VsZCBmYWlsIGlmIGNhcHMuZHdTaXplIGlzIG5vdCBzZXQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglUaGFua3MgdG8gTHVjaG8sIHRleHQgc3VwcG9ydCBpbiBzYW1wbGVzIG5vdyBzdGFydHMgdG8KCWFwcGVhci4gVGV4dHVyZXMgbm93IHNhdmVkIGluIHN0YXRlIGJsb2NrcywgYW5kIGNvcnJlY3QgRlZGJ3MgdXNlZCBmb3IKCWRyYXdpbmcuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lamFjay8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVqYWNrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svamFjay5jLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2phY2suaCwgZGxscy93aW5tbS93aW5lamFjay93aW5lamFjay5kcnYuc3BlYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGQgc3VwcG9ydCBmb3IgSmFjayBhdWRpbyBzZXJ2ZXIuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0aGUgNDggYW5kIDk2a0h6IGZvcm1hdHMuCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQ2hhbmdlIGxhdW5jaCBmdW5jdGlvbnMgdG8gdXNlIHVuaWNvZGUgYW5kIGltcGxlbWVudCBDb250cm9sX1J1bkRMTFcuCgktIEVuYWJsZSBzdXBwb3J0IGZvciB1bmljb2RlIGluIGNvbnRyb2wgcGFuZWwgYXBwbGljYXRpb25zLgoKCSogbG9hZGVyL3Rhc2suYzoKCURvbid0IGNyYXNoIGluIERpcmVjdGVkWWllbGQxNiBpZiBubyBvdGhlciB0YXNrIGlzIHJ1bm5pbmcuCgoJKiB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZXdyYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglOZXcgd2luZSBidWlsZCB1dGlsaXR5IHRoYXQgc2hvdWxkIG1ha2UgaXQgZWFzeSBmb3IgV2luZWxpYiBhcHBzIHRvCglsaW5rLCBhbmQgZ2VuZXJhdGUgYW4gZXhlY3V0YWJsZS4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLAoJICBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4ZWQgc29tZSBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCU5pa29sYXkgU3RlZmFub3YgPG5zdGVmYW5vdkBjcy5tYW4uYWMudWs+CglGaXggaXNzdWVzIHdpdGggaTgxMC1iYXNlZCBhdWRpbyBjYXJkcy4KCVN1cHBvcnQgZm9yIHVzZXItc2VsZWN0YWJsZSBhdWRpbyBjYXJkcyB0aHJvdWdoIHRoZSBBTFNBX0NBUkQKCWVudmlyb25tZW50IHZhcmlhYmxlIChNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsKS4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglUeXBvIGZvdW5kIGJ5IGNvbXBpbGluZyB3aXRoIHN0YW5kYXJkIE1TVkMgd2FybmluZyBsZXZlbC4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hhbmdlICdHZXR0aW5nLVdpbmUnIHRvICdGQVEtR2V0dGluZy1XaW5lJyBzaW5jZSB0aGUgZm9ybWVyIGlzCglhbHJlYWR5IHVzZWQgaW4gZ2V0dGluZy5zZ21sLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHdlYWsgdGhlIHNjcmVlbiBzZWN0aW9ucy4KCUFkZCB2YXJpb3VzIHRhZ3Mgc3VjaCBhczogcHJvbXB0LCB1c2VyaW5wdXQsIHJlcGxhY2VhYmxlLCBmaWxlbmFtZS4KCVVzZSAnPC8+JyB0byBjbG9zZSB0YWdzLgoKCSogaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlZCB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyB0byBtYXRjaCB0aGUgbGF0ZXN0IFdpbmRvd3MgU0RLIGFuZCB0bwoJaW5jbHVkZSBvdXIgbmV3IGhlYWRlcnMuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBJRGlyZWN0U291bmQzREJ1ZmZlckltcGxfU2V0KigpLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggU0hCcm93c2VGb3JGb2xkZXIgVyAtPiBBIGNhbGxzLgoKMjAwMi0xMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsCgkgIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvdXNlci9sc3RyLmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZXhjcHQuaCwgaW5jbHVkZS9tc3ZjcnQvZXhjcHQuaCwKCSAgaW5jbHVkZS93aW5kb3dzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywgcmVsYXkzMi9zbm9vcC5jLAoJICB3aW4zMi9leGNlcHQuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBleGNwdC5oIG91dCBvZiBpbmNsdWRlL21zdmNydC8gYXMgaXQgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCBhbnkKCXN0YW5kYXJkIFVuaXggaGVhZGVyLgoKCSogcHJvZ3JhbXMvZXhwYW5kL2V4cGFuZC5jOiBGaXhlZCBMWkNvcHkgcmV0dXJuIHZhbHVlIGNoZWNrLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgSURpcmVjdFNvdW5kM0RMaXN0ZW5lckltcGxfR2V0KigpIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDbGVhbnVwIEludGVybmFsRXh0cmFjdEljb25FeC4gVGhlIFByaXZhdGVFeHRyYWN0SWNvbnMgZnVuY3Rpb25zCglzaG91bGQgYWxzbyBoYW5kbGUgdGhlIGNhc2UgZm9yIDMyYml0IFBFIGFuZCAxNmJpdCBORSBmaWxlcyBzbyBubyBuZWVkCgl0byBkbyB0aGlzIGhlcmUgaW4gYSBkaWZmZXJlbnQgd2F5LCB0b28uCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVJlc29sdmUgU0hHZXRQYXRoRnJvbUlETGlzdFcgLT4gIFNIR2V0UGF0aEZyb21JRExpc3RBIGNhbGwuCglSZW1vdmUgRml4bWUgY29tbWVudCBpbiBTSEdldFBhdGhGcm9tSURMaXN0IGFzIFN0clJldFRvU3RyTiBzaG91bGQKCXRha2UgY2FyZSBvZiB0aGlzLgoJR2V0IHJpZCBvZiBzb21lIHVuc2lnbmVkL3NpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzIHdpdGggZGVmYXVsdAoJd2FybmluZ3MgaW4gTVNWQy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudCBJRXh0cmFjdEljb25XIGFuZCBpbmhlcml0IElFeHRyYWN0SWNvbkEgZnJvbSBpdC4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGEgcG9zc2libGUgbWVtb3J5IGxlYWsgd2hlbiBleHRyYWN0aW5nIGZyb20gYW4gSUNPIGZpbGUuCglGaXggc29tZSBzaWduZWQvdW5zaWduZWQgd2FybmluZ3Mgc2hvd2luZyB1cCBpbiBNU1ZDIHdpdGggZGVmYXVsdAoJd2FybmluZyBsZXZlbC4KCUZpeCBwb3NzaWJsZSBwcm9ibGVtIHdpdGggc2hvcnQgUElNQUdFX05UX0hFQURFUlMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJSW1wbGVtZW50ZWQgRGlzcENhbGxGdW5jIHNvIHRoYXQgaXQgd29ya3Mgd2hlbiBjYWxsaW5nIGV2ZW50IGhhbmRsZXJzCgl0aGF0IGhhdmUgbm8gcmV0dXJuIHZhbHVlLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQ2FsbGluZyBTYWZlQXJyYXlEZXN0cm95IG9uIGEgZGVzdHJveWVkIGFycmF5IHNob3VsZCBiZSBhIG5vLW9wLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgc29tZSBzdHVicy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglBZGQgJ2Rpc3RjbGVhbicgdGFyZ2V0IHRvIHdpbmVtYWtlci1nZW5lcmF0ZWQgcHJvamVjdHMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCU1NRFJWX0dldERlc2NyaXB0aW9uMzIgZml4ICsgYSBmZXcgY29zbWV0aWMgaW1wcm92ZW1lbnRzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWVudGlvbiB0aGUgYXBwbGljYXRpb25zIHRoYXQgZGVwZW5kIG9uIHRoZSBiZWhhdmlvciBjaGVja2VkIGJ5IHRoZQoJR2V0TG9jYWxlSW5mb0EgcGFydGlhbCBidWZmZXIgdGVzdC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXZlcnRlZCBsYXN0IFZUX1VTRVJERUZJTkVEIHBhdGNoICh3YXMgYnJva2VuKS4KCU1hcnNoYWwgVEtJTkRfRElTUEFUQ0ggaW50ZXJmYWNlcyBqdXN0IGxpa2UgVEtJTkRfSU5URVJGQUNFLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNlcGFyYXRlZCBvdXQgMTZiaXQgc291cmNlcyBmb3Igb2xlMmRpc3AuZGxsLgoKCSogdG9vbHMvd3JjL3dyYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGRpc3BsYXkgdGhlIGxvbmcgb3B0aW9ucyBpbiB0aGUgdXNhZ2UgbWVzc2FnZSBpZiB3ZSBkb24ndAoJYWN0dWFsbHkgc3VwcG9ydCB0aGVtLiBTbWFsbCBvdGhlciBjbGVhbnVwcy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJRml4IHJldHVybiBmcm9tIElPQ1RMX0NEUk9NX0NIRUNLX1ZFUklGWS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBlcnJvciByZXBvcnRpbmcgaW4gd2F2ZW1hcC5jOndvZE9wZW4oKTsgdGhpcyBzb2x2ZXMgdGhlCgl3YXZlT3V0T3BlbiBwcm9ibGVtIHNvIHRoYXQgd2UgY2FuIHJlbW92ZSB0aGUgdG9kb193aW5lLgoJV2luOXggZG9lcyBub3Qgc3VwcG9ydCBXQVZFX0ZPUk1BVF9ESVJFQ1QuCglEb24ndCBjaGVjayB0aGUgZm9ybWF0IGlmIHRoZSB3YXZlT3V0T3BlbiBjb21tYW5kIGZhaWxlZC4KCVVzZSB0cmFjZSwgbm90IHdpbmV0ZXN0X3RyYWNlIQoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBBbHNvIHRyYWNlIGltcGxpY2l0bHkgbG9hZGVkIGRsbHMgZm9yICtsb2FkZGxsLgoKCSogZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvY2FiaW5ldC8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwKCSAgZGxscy9jcnlwdDMyLy5jdnNpZ25vcmUsIGRsbHMvZDNkOC8uY3ZzaWdub3JlLAoJICBkbGxzL2RjaW1hbjMyLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwKCSAgZGxscy9kZXZlbnVtLy5jdnNpZ25vcmUsIGRsbHMvZGlucHV0OC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2x1MzIvLmN2c2lnbm9yZSwgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNkbW8vLmN2c2lnbm9yZSwKCSAgZGxscy9tc2ltZzMyLy5jdnNpZ25vcmUsIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydDIwLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vbXNybGUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL25ldGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwKCSAgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL3BzYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvcWNhcC8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei8uY3ZzaWdub3JlLAoJICBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLAoJICBkbGxzL3NubXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zdGkvLmN2c2lnbm9yZSwKCSAgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy91cmwvLmN2c2lnbm9yZSwgZGxscy91cmxtb24vLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5lZG9zLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubmxzLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2ludHJ1c3QvLmN2c2lnbm9yZSwKCSAgZGxscy93b3czMi8uY3ZzaWdub3JlLCBkbGxzL3dzb2NrMzIvLmN2c2lnbm9yZSwKCSAgZGxscy94MTFkcnYvLmN2c2lnbm9yZToKCUFkZGVkIC5zcGVjLmRlZiBmaWxlcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWFrZV9kbGxzLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglJbXBsZW1lbnRlZCBpbXBvcnQgbGlicmFyaWVzOyBvbiBVbml4IHdlIGltcG9ydCB0aGUgLmRlZiBmaWxlCglkaXJlY3RseSwgb24gTWluZ3cgd2UgdXNlIGl0IHRvIGJ1aWxkIHRoZSAuYSBsaWJyYXJ5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJTWFkZSBzdGRjYWxsIGRlY29yYXRpb24gaW4gLmRlZiBmaWxlcyB0aGUgZGVmYXVsdCwgYW5kIGFkZGVkIC1rIG9wdGlvbgoJdG8gc3dpdGNoIGl0IG9mZi4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIxNi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGxpdCBvdXQgMTZiaXQgY29kZSBpbnRvIHR5cGVsaWIxNi5jLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgdGVzdCB3aGV0aGVyIEdldHtDdXJyZW5jeSxEYXRlLE51bWJlcixUaW1lfUZvcm1hdEEgd3JpdGVzIGFzCgltdWNoIGFzIHBvc3NpYmxlIGluIHRoZSBidWZmZXIgZXZlbiBpZiBpdCBpcyB0b28gc21hbGwuIFRoaXMgaXMKCXVuZG9jdW1lbnRlZCBhbmQgZG9lcyBub3QgbWF0Y2ggdGhlIFdpbjl4IGJlaGF2aW9yLgoJU2tpcCBVbmljb2RlIHRlc3RzIG9uIFdpbjl4LgoJRml4IHVzYWdlIG9mIG1lbXNldC9zaXplb2YvQ09VTlRPRi4KCUZpeCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MgKGluIE1TVkMpIGJ5IHVzaW5nIGxzdHJsZW5BIGluc3RlYWQgb2YKCXN0cmxlbi4KCgkqIG9sZS9vbGUybmxzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW4gR2V0e0N1cnJlbmN5LE51bWJlcn1Gb3JtYXRBLCBTZXRMYXN0RXJyb3IgdG8KCUVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIgaWYgdGhlIGJ1ZmZlciBpcyB0b28gc21hbGwuCgoJKiBkbGxzL2dsdTMyL2dsdTMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzdHVicyBmb3IgbWlzc2luZyBBUElzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2tpcCB0aGUgVW5pY29kZSB0ZXN0cyBvbiBXaW45eC4KCVRlc3QgR2V0e1N5c3RlbSxXaW5kb3dzfURpcmVjdG9yeXtBLFd9KE5VTEwsIDApLiBUaGlzIGlzIGEgbW9yZQoJc3RhbmRhcmQgd2F5IHRvIGdldCBsZW5fd2l0aF9udWxsIHRvby4KCUFkYXB0IHRoZSBlcnJvciBjb2RlIGNoZWNrcyB0byB0YWtlIGludG8gYWNjb3VudCB2YXJpYXRpb25zIGJldHdlZW4KCVdpbjl4IGFuZCBOVC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGVycm9yIGNvZGVzIHJldHVybmVkIGJ5IERlbGV0ZUZpbGV7QSxXfSB0byBtYXRjaCBOVC4KCUFkYXB0IHRoZSBEZWxldGVGaWxlQSBlcnJvciBjb2RlIGNoZWNrcyB0byB0YWtlIGludG8gYWNjb3VudCB2YXJpYXRpb25zCgliZXR3ZWVuIFdpbjl4IGFuZCBOVC4KCVRlc3QgRGVsZXRlRmlsZShOVUxMKS4KCUFkZCB0ZXN0cyBmb3IgRGVsZXRlRmlsZVcuCglPbiBOVCwgY2FsbGluZyBfbGNsb3NlIG9uIGFuIGFscmVhZHkgY2xvc2VkIGhhbmRsZSB3aWxsIGNhdXNlIG1lbW9yeQoJY29ycnVwdGlvbiBhbmQgdGh1cyBzb21ldGltZXMgY3Jhc2ggLT4gcmVtb3ZlZCB0aGUgcmVsZXZhbnQgdGVzdC4KCVNraXAgdGhlIFVuaWNvZGUgdGVzdHMgd2hlbiBvbiBXaW45eC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLAoJICBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBsaXN0IG9mIHN5bWJvbHMgdG8gaWdub3JlIGJ5IGRlZmF1bHQgaW4gd2luZWJ1aWxkLgoJTWFkZSB0aGUgLWkgb3B0aW9uIHN1cHBvcnQgcmVtb3ZpbmcgaWdub3JlZCBzeW1ib2xzIHRvby4KCVJlbW92ZWQgdGhlIC1ub2ltcG9ydCBmbGFnIGluIHNwZWMgZmlsZXMuCgoJKiB0b29scy9taW5nd3JhcC5jOiBXYXJuaW5nIGZpeC4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgQmluZE1vbmlrZXIgZnVuY3Rpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBzaGVsbDMyLkV4dHJhY3RJY29uIHdpdGggQS0+VyBhbmQgMTYgLT4gMzIgY2FsbHMuCgoJKiBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBZGRlZCBzdHVicyBmb3IgRnRwQ29tbWFuZFtBfFddLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29kZXBhZ2UuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgV2luOXggcGxhdGZvcm1zIHN1cHBvcnQgV2lkZUNoYXJUb011bHRpQnl0ZSBhbmQKCU11bHRpQnl0ZVRvV2lkZUNoYXIgYnV0IG5vdCBsc3RyY21wVyEgU28gSSBpbXBsZW1lbnRlZCBvdXIgb3duIHNvCgl0aGF0IHdlIGNhbiBoYXZlIGEgbWVhbmluZ2Z1bCB0ZXN0LgoKCSogbXNkb3MvZG9zbWVtLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUdpdmUgRE9TIGFwcGxpY2F0aW9ucyA2MzhrIG9mIGZyZWUgY29udmVudGlvbmFsIG1lbW9yeS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXJpYWxpemUvZGVzZXJpYWxpemUgYWxsIHJlZnR5cGVzIGluIFZUX1VTRVJERUZJTkVELgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2tpcCB0aGUgVW5pY29kZSB0ZXN0cyAoZWZmZWN0aXZlbHkgYWxsIHRlc3RzIGN1cnJlbnRseSkgb24gV2luOXguCgoyMDAyLTEyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbjoKCVBhc3MgdGhlIC1KIG9wdGlvbiB0byB3cmMgdG8gYXZvaWQgaW5jbHVkaW5nIGluc3RhbGxlZCBoZWFkZXJzLgoKCSogdG9vbHMvbWluZ3dyYXAuYzoKCVdpbmUgaW50ZXJuYWwgaW5jbHVkZXMgc2hvdWxkIG5vdCBiZSBpbiB0aGUgaW5jbHVkZSBwYXRoLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvd3JjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJd3JjIHNob3VsZCBiZSBhd2FyZSBvZiB0aGUgbG9jYXRpb24gb2YgdGhlIHN5c3RlbSBoZWFkZXJzLgoKCSogdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy9jb25maWcuc3ViOiBVcGRhdGVkIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCVRyeSB0byBvcGVuIHNvdXJjZSBmaWxlIGluIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0IGluIGNhc2UgaXQgaXMgYQoJZ2VuZXJhdGVkIGZpbGUuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUdlbmVyYXRlIHByb3BlciBkZXBlbmRlbmNpZXMgZm9yIHRlc3RsaXN0LmMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy93aW5tbS93aW5tbV9TaS5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglGaXhlZCBzb21lIGNoYXJhY3RlcnMuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUFkZGVkIFdJTkVfQ0hFQ0tfREVGSU5FIG1hY3JvIHRvIGZhY3RvciBvdXQgc29tZSByZXBlYXRlZCBjb2RlLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdGltZS5jLAoJICBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCS0gSW1wbGVtZW50IFJ0bExvY2FsVGltZVRvU3lzdGVtVGltZSBhbmQgUnRsU3lzdGVtVGltZVRvTG9jYWxUaW1lLgoJLSBVc2UgbmV3IHRpbWUgZnVuY3Rpb25zIHRvIHJlaW1wbGVtZW50IEZpbGVUaW1lVG9Mb2NhbFRpbWUgYW5kCgkgIExvY2FsVGltZVRvRmlsZVRpbWUuCgoJKiB0b29scy9ydW50ZXN0OiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzdGRlcnIgcmVkaXJlY3Rpb24uCglTaW1wbGlmeSAkaW5maWxlIGV4aXN0ZW5jZSB0ZXN0LgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXaGVuIHJlcG9ydGluZyBhIHRlc3QgZmFpbHVyZSwgb25seSByZXBvcnQgdGhlIGZpbGUgbmFtZSwgbm90IHRoZSBmdWxsCglwYXRoLgoJTWVyZ2Ugd2luZXRlc3Rfc2V0X3RyYWNlX2xvY2F0aW9uIHdpdGggd2luZXRlc3Rfc2V0X29rX2xvY2F0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBGcm9tOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCSciJyBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBvbiBXaW45eCBzbyB3ZSBjYW5ub3QgdGVzdCBpdC4KCUdldFNob3J0UGF0aE5hbWVBIGJlaGF2ZXMgZGlmZmVyZW50bHkgb24gV2luOXggYW5kIE5UOiBvbiBOVCBpdAoJc3VjY2VlZHMgZXZlbiBpZiBub3QgYWxsIHBhdGggY29tcG9uZW50cyBleGlzdCwgYXMgbG9uZyBhcyB0aGV5IGFyZQoJYWxyZWFkeSBpbiB0aGUgOC4zIGZvcm1hdC4KCVdpbmUgYXBwYXJlbnRseSBpbXBsZW1lbnRzIHRoZSBOVCBiZWhhdmlvciB0aHVzIG1hbnkgdG9kb193aW5lIHdlbnQKCWF3YXkuCglGaXhlZCBzb21lIGVycm9yIGNvZGUgY2hlY2tzIHRvIHRha2UgaW50byBhY2NvdW50IGFsbCBwb3NzaWJsZSByZXR1cm4KCXZhbHVlcy4KCUdldFRlbXBGaWxlTmFtZUEgYXBwZWFycyB0byBvbmx5IHVzZSB0aGUgbG93ZXIgMTZiaXRzIG9mIHRoZSBpZCBvbgoJV2luOTUgKGFuZCBuZXZlciByZXR1cm5zIG1vcmUgdGhhbiAxNiBiaXRzIG9uIG90aGVyIHBsYXRmb3JtcykuCglHZXRMb25nUGF0aE5hbWVBIGlzIG1pc3Npbmcgb24gc29tZSBXaW5kb3dzIHZlcnNpb25zLgoJTW9kaWZpZWQgdGhlIEdldFRlbXBQYXRoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGV5IHJldHVybiB0aGUgZXhwZWN0ZWQKCXZhbHVlLiBSZW1vdmVkIHRoZSByZWR1bmRhbnQgdGVzdHMgKGUuZy4gaWYgYnVmWzBdPT0wIHRoZW4gYnVmIT0iZm9vIiwKCW5vIG5lZWQgdG8gdGVzdCBib3RoKS4KCVRoZSAnbGVuX3dpdGhfbnVsbCAtIDEnIGNhc2UgaXMgbm90IHRlc3RhYmxlIGFzIHRoZSBXaW5kb3dzIGJlaGF2aW9yCgl2YXJpZXMgdG9vIG11Y2ggYmV0d2VlbiB2ZXJzaW9ucy4KCVdlIGNhbm5vdCBjaGVjayB3aGV0aGVyIFdpbmRvd3MgdG91Y2hlcyB0aGUgYnVmZmVyIGVpdGhlciBhcyB0aGlzCgloZWF2aWx5IGRlcGVuZHMgb24gdGhlIFdpbmRvd3MgdmVyc2lvbiBhbmQgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlcyBvZgoJdGhlIGNhbGwuCglGaW5hbGx5IE5UNCBzb21ldGltZXMgZXhhZ2dlcmF0ZXMgdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUltcGxlbWVudCAkViBpbiBidWlsdGluIFBST01QVC4KCjIwMDItMTItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmgsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvdHdhaW4vdHdhaW4uaCwgZGxscy93aW5lZG9zL2ludDE3LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyOS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lcHMvcHBkLmMsCgkgIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGRsbHMvd2luZXBzL3R5cGUxYWZtLmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaWYxNjMyL3JlbGF5LmMsCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsCgkgIGluY2x1ZGUvd2luZS9ycGNzc19zaGFyZWQuaCwgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L2xvYWRlci5jLAoJICBtZW1vcnkvaW5zdHIuYywgbWlzYy9yZWdpc3RyeS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLAoJICBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsCgkgIHRvb2xzL3dpbmVkdW1wL25lLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6Cgl3aW5udC5oIHNob3VsZCBub3QgYmUgc2VsZi1jb250YWluZWQsIGl0IG11c3QgZGVwZW5kIG9uIHdpbmRlZi5oIHNvCgl0aGF0IFNUUklDVCB3b3JrcyBjb3JyZWN0bHk7IG1vdmVkIHNvbWUgZGVmaW5pdGlvbnMgYmFjayB0byB3aW5kZWYuaAoJd2hlcmUgdGhleSBiZWxvbmcsIGFuZCByZW1vdmVkIGEgY291cGxlIG9mIGRlZmluaXRpb25zIHRoYXQgZG9uJ3QKCWV4aXN0IG9uIFdpbmRvd3MuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CgktRFNUUklDVCBpcyBub3cgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogU3RldmVuIEVkd2FyZHMgPGlzb19sYXRpb25AaG90bWFpbC5jb20+CglBbHBoYSBwb3J0aW5nIGZpeC4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQWRkZWQgcGFyYW1ldGVycyB0byBOdFh4eFBvcnQgZnVuY3Rpb25zIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgYSBkZWZpbml0aW9uIGZvciBTVFJJQ1QuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIFJFR19RV09SRCBhbmQgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4uCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jLAoJICBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBpbnQyMSBjb3VudHJ5IGluZm9ybWF0aW9uIGhhbmRsaW5nIHRvIHdpbmVkb3MuCglJbXByb3ZlIGNvdW50cnkgaW5mb3JtYXRpb24gaGFuZGxpbmcuCglNb3ZlIGNvbGxhdGUgdGFibGUgdG8gdXBwZXIgbWVtb3J5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dyYy93cmMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHcmFjZWZ1bGx5IGRlZ3JhZGUgdG8gZ2V0b3B0IGlmIGdldG9wdF9sb25nIGRvZXMgbm90IGV4aXN0LgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVN1cHByZXNzIHNvbWUgc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDaGFuZ2UgdGhlIHJldHVybiB2YWx1ZSBmb3IgRXh0cmFjdEljb25FeCBmcm9tIEhJQ09OIHRvIFVJTlQgYW5kIG1ha2UKCXRoZSBmdW5jdGlvbiBjYWxsIGRpcmVjdGx5IHVzZXIzMi5Qcml2YXRlRXh0cmFjdEljb25FeC4KCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCS0gTW9kaWZ5IElDT19FeHRyYWN0SWNvbkV4VyB0bzoKCSAgICByZXR1cm4gbW9yZSBjb21wbGlhbnQgdmFsdWVzIGZvciB1c2FnZSBpbiBQcml2YXRlRXh0cmFjdEljb25zIGFuZCBQcml2YXRlRXh0cmFjdEljb25FeAoJICAgIGFjY2VwdCBhbmQgZmlsbCBpbiB0aGUgaWNvbiBpZGVudGlmaWVyIGFycmF5IGNvcnJlY3RseSBpZiBwcm92aWRlZAoJICAgIGFsbG93IHRvIHJldHJpZXZlIGJvdGggc21hbGwgYW5kIGxhcmdlIGljb25zIHRvZ2V0aGVyLgoJLSBTaW1wbGlmeSBQcml2YXRlRXh0cmF4dEljb25zCgktIE1vZGlmeSBQcml2YXRlRXh0cmFjdEljb25FeFcgdG86CgkgICB1c2UgY29tcGF0aWJsZSBzaWduYXR1cmUgdG8gRXh0cmFjdEljb25FeCBpbiBzaGVsbDMyIHdoaWNoIGl0IHJlYWxseSBpcyBkaXJlY3RseQoJICAgICBhcyB0ZXN0ZWQgb24gVzJLIGJ5IGNhbGxpbmcgYm90aCBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzCgkgICBkaXJlY3RseSBjYWxsIGludGVybmFsIGV4dHJhY3Rpb24gZnVuY3Rpb24KCSAgIGZpeCBlcnJvciB3aGVuIHJlcXVlc3RpbmcgMSBpY29uIGZvciBib3RoIHNpemVzCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHZXQgcmlkIG9mIGdlbmVyaWMgbm90aWZpY2F0aW9uIHN1cHBvcnQgaW4gY29tY3RybDMyLiBUaGUgTVMgZG9jcyB3ZXJlCgltaXNsZWFkaW5nIGluIHRoYXQgYWxsIGNvbnRyb2xzIHNlbmQgdGhlc2Ugbm90aWZpY2F0aW9ucy4gVGhleSBkb24ndC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUGx1ZyBhIGJ1bmNoIG9mIG1lbW9yeSBsZWFrcy4KCS0gTWFrZSByYW5nZXNfZGVzdHJveSBiZWhhdmUgbW9yZSBsaWtlIGZyZWUoKS4KCS0gRml4IG1lc3NlZCB1cCBpbmRlbnRhdGlvbiBmcm9tIHRhYnMgc2V0IHRvIDQgY2hhcnMuCgktIFVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVJlc2V0IHRoZSBvc3MgZGV2aWNlIGJlZm9yZSB3ZSB0cnkgdG8gY2xvc2UgaXQuICBGaXhlcyBoYW5nIG9uIHN0YXJ0dXAKCW9mIFN0YXJjcmFmdCBkdWUgdG8gb3NzIGRldmljZSBiZWluZyBpbiBhIGJhZCBzdGF0ZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVmFyQWRkIHN1cHBvcnQgZm9yIGludGVnZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCSBVcGRhdGUgV2luZSBGQVEgdG8gbGF0ZXN0IHJldmlzaW9uLgoJICAtIEJldHRlciBCb2Nocy9QbGV4ODYgaW5mbwoJICAtIEFkZCBRJkEgYWJvdXQgdXBncmFkaW5nIGNvbmZpZ3VyYXRpb24KCSAgLSBSZXBsYWNlIERlbmViYSdzIENhbnZhcyA3IHdpdGggQWJpbGl0eSBPZmZpY2UKCUZyb20gZW50cmllcyBzdWJtaXR0ZWQgYnkgVG9tIFdpY2tsaW5lLgoKCSogd2luZG93cy9pbnB1dC5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCU1ha2UgV01fTU9VU0VIT1ZFUiBjb29yZGluYXRlcyBjbGllbnQgcmVsYXRpdmUuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5udC5oOgoJU3RldmVuIEVkd2FyZHMgPGlzb19sYXRpb25AaG90bWFpbC5jb20+CglBbHBoYSBwb3J0aW5nIGZpeGVzLgoKMjAwMi0xMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZXBsYWNlZCAnaWdub3JlJyBzcGVjIGZpbGUgZGlyZWN0aXZlIGJ5IHRoZSAtaSBvcHRpb24uCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46IERvbid0IGJ1aWxkIHRlc3RzIGJ5IGRlZmF1bHQganVzdCB5ZXQuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBTSERlZkV4dHJhY3RJY29ue0FXfSBmdW5jdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglVcGRhdGUgZGVidWdnZXIgZG9jdW1lbnRhdGlvbiBmb3Igd2hlbiBwcm9ncmFtcyBoYW5ncy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBzaWduYXR1cmUgb2YgU0hMV0FQSV8zMzQgYXMgaXRzIHN0cmluZyBwYXJhbWV0ZXIgcmVhbGx5IGlzIGFuCglvdXRwdXQuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpbGxzIHRoZSBuYW1lIG9mIHRoZSBhcmd1bWVudHMgb2YgdGhlIENPTSBtZXRob2RzLCBlbHNlIE1TVkMgZG9lc24ndAoJbGlrZSB0aGVtLgoKCSogZmlsZXMvZHJpdmUuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXREaXNrRnJlZVNwYWNlRXggZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2RldmljZXMuYywKCSAgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaGltZW0uYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgaW5jbHVkZS9tc2Rvcy5oLCBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBpbnQwOCBzdHViIGFuZCBMT0wgdG8gdXBwZXIgbWVtb3J5LgoJTW92ZSBzaW1wbGUgaW50MjEgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCgoyMDAyLTEyLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUNoZWNrIGZpbGUgaGVhZGVyIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBvYmplY3QgZmlsZXMgYW5kIHJlc291cmNlcwoJc28gdGhhdCB0aGUgLXIgb3B0aW9uIGlzIG5vdCBuZWNlc3NhcnkuCgoJKiB0b29scy9NYWtlZmlsZS5pbjogRml4ZWQgbWluZ3dyYXAgaW5zdGFsbCBjb21tYW5kLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCUZpeGVkIHRoZSBsaXN0IG9mIGFjY2VwdGVkIHR5cGVzIHBhc3NlZCB0byBIdHRwT3BlblJlcXVlc3RBLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IFBhcnNlRmllbGRXIGZ1bmN0aW9uIGJhc2VkIG9uIGl0cyBBTlNJIHNpYmxpbmcuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CgkgLSBXaGVuIHNlbmRpbmcgYSByZXF1ZXN0IHVzaW5nIEh0dHBPcGVuUmVxdWVzdC9IdHRwU2VuZFJlcXVlc3QsIHNlbmQgdGhlCgkgICBVc2VyLUFnZW50IGhlYWRlcjsgZml4ZWQgdGhlIEFjY2VwdCBhbmQgdGhlIFJlZmVyZXIgaGVhZGVyIGhhbmRsaW5nIHRvCgkgICByZWFsbHkgd29yay4KCSAtIEZpeGVkIGJ1ZyBpbiB0aGUgSFRUUF9Qcm9jZXNzSGVhZGVyOiB3aGVuIGEgc2Vjb25kIHZhbHVlIHdhcyBzdXBwb3NlZCB0byBiZQoJICAgYWRkZWQgdG8gYW4gZXhpc3Rpbmcgb25lLCB0aGUgYnVmZmVyIHdhcyByZWR1Y2VkIHRvIGJlIDEgY2hhciBsb25nIGluc3RlYWQKCSAgIG9mIGJlaW5nIGV4cGFuZGVkLCBkdWUgdG8gdGhlIHByZWNlZGVuY2UgcnVsZXMgb2YgdGhlIG9wZXJhdG9yICc/Jy4KCSAtIEFkZGVkIHN1cHBvcnQgZm9yIG9wZW5pbmcgVVJMcyB0aGF0IHJlZGlyZWN0IHRvIGEgZGlmZmVyZW50IHBsYWNlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9wcnNodC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWZpbmUgUFNIX1dJWkFSRDk3IChwcm9ibGVtIHJlcG9ydGVkIGJ5IGpheW16QGZyZWUuZnIpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBDaHJpc3RvcGggRnJpY2sgPGZyaWNrQFNDLU5ldHdvcmtzLmRlPgoJRm9yY2UgKFdTXylTT19SRVVTRUFERFIgYmVmb3JlIGJpbmRpbmcgdG8gYSBzb2NrZXQ7IGlnbm9yZQoJKFdTXylTT19ET05UUk9VVEU7IE5ldHdvcmsgZ2FtZXMgaW4gR3JhbmQgUHJpeCBMZWdlbmRzIGFuZCBOYXNjYXIgMjAwMgoJYXJlIHBvc3NpYmxlIG5vdy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCUJ1aWxkIHRlc3QgcHJvZ3JhbXMgYXMgcGFydCBvZiB0aGUgbm9ybWFsIGJ1aWxkLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHNvbWUgcGFyYW1ldGVyIHR5cGVzLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBDT00gQVBJIHByb3RvdHlwZXMgaW4gaW5jbHVkZS93aW5lL29ial9iYXNlLmggdG8KCWluY2x1ZGUvb2JqYmFzZS5oLgoKCSogdG9vbHMvd3JjL3dyYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSB3cmMgY29tbWFuZCBsaW5lIGNvbXBhdGlibGUgd2l0aCB3aW5kcmVzLgoKCSogdG9vbHMvTWFrZWZpbGUuaW46CglGaXhlZCBwYXNzaW5nIG9mIC1ESU5DTFVERURJUiB3aGVuIGJ1aWxkaW5nIG1pbmd3cmFwLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluc3RhbGwgRERLIGhlYWRlcnMgYXMgd2VsbC4KCjIwMDItMTItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL29iamJhc2UuaDogQWRkZWQgcnBjLmggaW5jbHVkZSB0byBmaXggdGVzdHMgY29tcGlsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uaCwKCSAgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLAoJICBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9jc3R1Yi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvb2FpZGwuaCwKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUuaCwKCSAgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLAoJICBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NlcnZwcm92LmgsCgkgIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2VydmljZXByb3ZpZGVyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IG5vIGZpbGVzIGV4Y2VwdCB1bmtud24uaCBpbmNsdWRlIHdpbmUvb2JqX2Jhc2UuaAoJZGlyZWN0bHkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHdpbjMyL2RldmljZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZXBsYWNlIDB4JXAgd2l0aCAlcC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFBldGVyIE1sYWRlayA8cG1sYWRla0BzdXNlLmN6PgoJQWRkZWQgMiBtb3JlIEN6ZWNoIGtleWJvYXJkIGxheW91dHMgY29tcGF0aWJsZSB3aXRoIFhGcmVlODYgNC4xLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBpbmNsdWRlL3dpbmluZXQuaDoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCSAtIE1vdmVkIEdldFVybENhY2hlRW50cnlJbmZvQSBhbmQgQ29tbWl0VXJsQ2FjaGVFbnRyeUEgdG8gdXJsY2FjaGUuYy4KCSAtIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgR2V0VXJsQ2FjaGVFbnRyeUluZm9FeFcuCgkgLSBJbXBsZW1lbnRlZCBJbnRlcm5ldFF1ZXJ5T3B0aW9uVywgSW50ZXJuZXRDb21iaW5lVXJsW0F8V10uCgkgLSBJbnRlcm5ldFNldE9wdGlvblcgcHJpbnRzIEZJWE1FcyB3aXRoIG1vcmUgaW5mb3JtYXRpb25zLgoJIC0gSU5URVJORVRfU2V0TGFzdEVycm9yIHdhcyBjcmFzaGluZyBpZiBjYWxsZWQgYWZ0ZXIgdGhlIHRocmVhZAoJICAgbG9jYWwgc3RvcmFnZSBhcmVhIGhhZCBhbHJlYWR5IGJlZW4gZGVsZXRlZCAoaXQgaGFwcGVucyBpZiB5b3UKCSAgIGNsb3NlIEludGVybmV0IEV4cGxvcmVyIHdoaWxlIHRoZSBkb3dubG9hZCBpcyBzdGlsbCBpbiBwcm9ncmVzcykuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJQmFjayBvdXQgdGhlIGFSdHMgdm9sdW1lIHBhdGNoLCB0aGlzIGlzIG5vdCB1c2VyLWZyaWVuZGx5IGF0IGFsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgc2ltcGxlIHRlc3QgZm9yIElEaXJlY3RTb3VuZC5HZXRDYXBzLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZmFxLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV3JhcCBmYXEuc2dtbCBpbiBhbiBhcnRpY2xlIHRhZyBpbiB3aW5lLWRvYy5zZ21sLgoJU2V0IHRoZSBhcnRpY2xlIGNsYXNzIHRvICdmYXEnLgoJTW92ZSB0aGUgdGl0bGUgdG8gZmFxLnNnbWwuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byB0aGUgUGVybCB0ZXN0cy4KCUFkZGVkIGEgc2VjdGlvbiBkZXNjcmliaW5nIGhvdyB0byBidWlsZCBhbmQgcnVuIHRlc3RzIG9uIFdpbmRvd3MuCglUaGUgVmlzdWFsIEMrKyBzZWN0aW9uIHNob3VsZCBiZSByZWxhdGl2ZWx5IGNvbXBsZXRlIGJ1dCB0aGUgTWluR1cgYW5kCgljcm9zcy1jb21waWxpbmcgc2VjdGlvbiBzdGlsbCBuZWVkIHNvbWUgd29yay4KCgkqIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIHByb3RvdHlwZXMgZm9yIElFeHRyYWN0SWNvblcgaW50ZXJmYWNlLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglNYXJzaGFsIFZUX1I0ICg0IGJ5dGUgZmxvYXQpLgoKCSogdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21pbmd3cmFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTmV3IE1pbkdXIHdyYXBwZXIgdGhhdCBtYWtlcyBnY2Mgb24gTGludXggYmVoYXZlIGxpa2UgTWluR1cgb24KCVdpbmRvd3MsIHVzaW5nIHRoZSBXaW5lIGhlYWRlcnMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGF2ZSBvbmx5IG9uZSBHVUlEIGZvciBXaW5lJ3MgT3BlbkdMIEQzRCBkZXZpY2UuCgoJKiB0b29scy93aW5laW5zdGFsbDogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglJbnN0YWxsIGFwcHMgaW4gd2luZG93c1xzeXN0ZW0gc2luY2UgdGhhdCdzIHdoYXQgdGhlIHN5c3RlbSBkaXJlY3RvcnkKCWlzIHNldCB0byBpbiB0aGUgY29uZmlnIGZpbGUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJQ29ycmVjdCAyIGJ1Z3MgY29ubmVjdGVkIHRvIGFzeW5jaHJvbm91cyBzaHV0ZG93bigpOgoJLSBDYW5ub3QgY2FsbCBXU0FHZXRPdmVybGFwcGVkUmVzdWx0KCkgYmVjYXVzZSBjb21wbGV0aW9uIGZ1bmN0aW9uCgkgIGRlc3Ryb3lzIHRoZSBvdmVybGFwcGVkIHN0cnVjdHVyZS4KCS0gd3MyX2FzeW5jX2NsZWFudXAoKSBjYWxsZWQgdHdpY2UgaW4gY2FzZSBvZiBmYWlsdXJlLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglTZXQgdGhlIHNvY2tldCB0byBvdmVybGFwcGVkIG1vZGUuCgoJKiBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTa2lwIFVuaWNvZGUgdGVzdHMgaWYgdGhlcmUncyBubyBVbmljb2RlIHN1cHBvcnQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGFuIGVycm9yIGlmIGR3U2l6ZSBpcyBub3QgdmFsaWQuCglObyBuZWVkIHRvIGR1bXAgZHdGbGFncyBiZWZvcmUgaXQgaXMgaW5pdGlhbGl6ZWQuCgoJKiBpbmNsdWRlL21zdmNydC9lcnJuby5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIEVERUFETE9DSy4KCjIwMDItMTItMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBpbmNsdWRlL01ha2VmaWxlLmluOgoJQWRkZWQgcnVsZXMgZm9yIGNvbXBpbGluZyBJREwgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglBZGRlZCBydWxlcyBmb3IgYnVpbGRpbmcgdGhlIEZBUS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL2hvb2sxNi5jLAoJICBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5oLCBkbGxzL3VzZXIvbXNnMTYuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvd2lucHJvYy5oLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvaW5wdXQuaCwKCSAgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zcHkuaCwKCSAgaW5jbHVkZS9zeXNtZXRyaWNzLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbnByb2MuaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVtb3ZlZCBpbnB1dC5oLCBxdWV1ZS5oLCBzcHkuaCBhbmQgc3lzbWV0cmljcy5oIGFuZCBtb3ZlZCB0aGVpcgoJY29udGVudHMgdG8gdXNlci5oLgoJTW92ZWQgbWVzc2FnZS5oIGFuZCB3aW5wcm9jLmggdG8gZGxscy91c2VyLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZmFxLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkZWQgdGhlIEZBUSwgYW5kIGJ1aWxkIGl0IHdoZW4gY3JlYXRpbmcgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQoJd2Vic2l0ZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgQ09NU1BFQyBjb21tYW5kIGludGVycHJldGVyIHRvIHJ1biAuYmF0IGZpbGVzLgoKCSogbXNkb3MvaW50MjEuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgZXJyb3IgY2hlY2tpbmcgaW4gZmlsZSBjcmVhdGlvbiBhbmQgY2xvc2luZy4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgc3VwcG9ydCBmb3IgRDNEQkxFTkRfT05FIGZvciBEM0RSRU5ERVJTVEFURV97REVTVC9TUkN9QkxFTkQuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvaWNtcGFwaS5oLAoJICBpbmNsdWRlL2lwZXhwb3J0LmgsIGluY2x1ZGUvd2luZS9pY21wYXBpLmgsIGluY2x1ZGUvd2luZS9pcGV4cG9ydC5oOgoJSW5zdGFsbCBpcGV4cG9ydC5oIGFuZCBpY21wYXBpLmggd2l0aCB0aGUgb3RoZXIgV2luZG93cyBpbmNsdWRlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIG1vcmUgdHlwZXMgdG8gd3R5cGVzLmlkbC4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4ZWQgdGVzdCB0byBydW4gZmluZSAoMCBlcnJvcnMpIG9uIFdpbiBOVC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBpbmNsdWRlL3NobG9iai5oOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJU0hHZXRTZXRTZXR0aW5ncyBoYXMgbm93IHRoZSByaWdodCBzaWduYXR1cmUgYW5kIHRoZSBleHBlY3RlZCBiZWhhdmlvcgoJd2hlbiB0aGUgdXNlciBpcyBhc2tpbmcgdG8gZ2V0IHRoZSBjdXJyZW50IHNldHRpbmdzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggQU5TSS0+VW5pY29kZSBjYWxsaW5nIGZvciBFeHRyYWN0SWNvbkV4QS9XLgoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTW9kaWZ5IFByaXZhdGVFeHRyYWN0SWNvbnN7QVd9IHRvIG1hdGNoIGJldHRlciBjdXJyZW50IE1EU04KCWRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2hhbmdlIGhlYWRlciBpbnN0YWxsIGxvY2F0aW9uIGFzIHN1Y2g6CgkgICR7cHJlZml4fS9pbmNsdWRlL3dpbmUvd2luZG93cyAgLS0gc3RhbmRhcmQgV2luZG93cyBoZWFkZXJzCgkgICR7cHJlZml4fS9pbmNsdWRlL3dpbmUvbXN2Y3J0ICAgLS0gTVMgVmlzdWFsIEMgUnVudGltZSBsaWJyYXJ5CgkgICR7cHJlZml4fS9pbmNsdWRlL3dpbmUgICAgICAgICAgLS0gV2luZSBzcGVjaWZpYyBoZWFkZXJzCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3R0eWRydi91c2VyLmMsCgkgIGRsbHMveDExZHJ2L3gxMWZvbnQuaCwgZ3JhcGhpY3MvZm9udGVuZ2luZS5jLCBncmFwaGljcy9wYWludGluZy5jLAoJICBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2ZvbnQuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUveDExZm9udC5oLCBsb2FkZXIvdGFzay5jLAoJICBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jOgoJTWVyZ2VkIGZvbnQuaCBhbmQgcGF0aC5oIGludG8gZ2RpLmguIE1vdmVkIHgxMWZvbnQuaCB0bwoJZGxscy94MTFkcnYuIFJlbW92ZWQgYSBudW1iZXIgb2YgdW5uZWNlc3NhcnkgI2luY2x1ZGVzLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIubCwKCSAgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3dpZGwuYywKCSAgdG9vbHMvd2lkbC93aWRsLmgsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVBhcnNlIHRoZSBOT1Qgb3BlcmF0b3IsIHRoZSBbaWRlbXBvdGVudF0gYXR0cmlidXRlLCBhbmQgdGhlIGhhbmRsZV90CglhbmQgZXJyb3Jfc3RhdHVzX3QgdHlwZXMuIEltcHJvdmVkIHNvbWUgcGFyc2luZyBydWxlcyB0byBnZXQgcmlkIG9mCgl0aGUgTElOS19MQVNUIGFuZCBMSU5LX1NBRkUgbWFjcm9zLiBFbmNsb3NlIGdlbmVyYXRlZCAuaCBmaWxlIHdpdGhpbgoJYW4gZXh0ZXJuICJDIiAoZm9yIEMrKykuIE91dHB1dCBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciByZWd1bGFyIFJQQwoJaW50ZXJmYWNlcy4gIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ2xlYW4gdXAgaW50MjEgaGFuZGxpbmcuIE1vdmUgZXJyb3IgaGFuZGxpbmcgdG8gd2luZWRvcy4KCUNhbGwgSU5UX0ludDIxSGFuZGxlciBvbmx5IHRvIGVtdWxhdGUgc2VsZWN0ZWQgZnVuY3Rpb25zLgoKMjAwMi0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2hpbWVtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIERQTUkgc2VnbWVudHMgdG8gd2luZWRvcy4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBvbmx5IGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3Igbm9uLWFscmVhZHkgbG9hZGVkIHRleHR1cmVzCgktIGltcGxlbWVudCBHZXRDYXBzIGZvciBEM0REZXZpY2U3CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmgsIGRsbHMvcnBjcnQ0L3JwY19lcG1hcC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9ycGNydDQvcnBjc3NfbnBfY2xpZW50LmMsIGRsbHMvcnBjcnQ0L3JwY3NzX25wX2NsaWVudC5oLAoJICBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY2RjZXAuaCwgaW5jbHVkZS9ycGNuZHIuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9ycGNzc19zaGFyZWQuaCwKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JwY3NzLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JwY3NzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ycGNzcy9lcG1hcF9zZXJ2ZXIuYywKCSAgcHJvZ3JhbXMvcnBjc3MvbnBfc2VydmVyLmMsIHByb2dyYW1zL3JwY3NzL3JwY3NzLmgsCgkgIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PiwKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJLSBwcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBlbmRwb2ludC1tYXBwaW5nIHZpYSBhIG5ldyBvbi1kZW1hbmQKCSAgc2VydmVyLWlzaCBwcm9jZXNzCgktIG1vcmUgaGVhZGVyIGZpeHVwcwoJLSAocmUpaW1wbGVtZW50IFJwY0VwUmVnaXN0ZXJBLCBScGNFcFVucmVnaXN0ZXIsIGFuZAoJICBScGNFcFJlc29sdmVCaW5kaW5nIHVzaW5nIHRoZSBuZXcgcnBjc3MgZnVuY3Rpb25hbGl0eQoJLSB1cGRhdGUgdGhlIHRvZG8gbGlzdCBpbiBycGNydDRfbWFpbi5jIGEgYml0CgktIG1hbnkgYmVhdXRpZmljYXRpb25zIGFuZCB0b3VjaC11cHMKCS0gY29tbWFuZC1saW5lIGNvbmZpZ3VyYWJsZSB0aW1lb3V0CgktIG1pY3JvLWNsaWVudCBpbWJlZGRlZCBpbiBucF9zZXJ2ZXIuYwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgRDNETElHSFRTVEFURV9DT0xPUlZFUlRFWCB0byBwcmV2ZW50IFNldExpZ2h0U3RhdGUgZnJvbQoJZmFpbGluZy4KCgkqIGRsbHMvY2FiaW5ldC9NYWtlZmlsZS5pbiwgZGxscy9jYWJpbmV0L2ZjaS5jLCBkbGxzL2NhYmluZXQvZmRpLmMsCgkgIGluY2x1ZGUvZmNpLmgsIGluY2x1ZGUvZmRpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIEZJWE1FOnMgaW4gdGhlIHN0dWJzLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBpbXBsZW1lbnQgdGhlIHRleHR1cmluZyB0aGUgRDNEMyB3YXkKCS0gcHJlcGFyZSBmb3IgbXVsdGktdGV4dHVyaW5nIHN1cHBvcnQKCgkqIGluY2x1ZGUvd2luZ2RpLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJvdGVjdCBQQUxFVFRFRU5UUlkgYW5kIExPR1BBTEVUVEUgd2l0aCAjaWZuZGVmcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9kcG1pLmMsCgkgIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW5hbWUgb2xkIERPUzNDYWxsIGFzIElOVF9JbnQyMUhhbmRsZXIgYW5kIG1ha2UgbmV3IERPUzNDYWxsIGNhbGwKCWRpcmVjdGx5IHdpbmVkb3MgaW50MjEgaGFuZGxlci4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMy5jLCB3aW4zMi9kZXZpY2UuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBpbnQxMyBoYW5kbGVyIHRvIHdpbmVkb3MuCgoJKiBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUZpeCBmb3IgTUlESSBNYXBwZXIuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLAoJICBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywKCSAgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywKCSAgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywKCSAgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLCBkbGxzL21zdmlkZW8vbWNpd25kLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsCgkgIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsCgkgIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBncmFwaGljcy9wYXRoLmMsCgkgIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW52ZXIvd2ludmVyLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbXVsdGltb24uYywKCSAgd2luZG93cy9wYWludGluZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHVubmVjZXNzYXJ5IEhBTkRMRSB0eXBlY2FzdHMuCgoyMDAyLTExLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgRDNEIGNhcGFiaWxpdHkuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFjdHVhbGx5IHVzZSB0aGUgVmVydGV4QnVmZmVyIHN0dWJzCgktIGltcGxlbWVudCBMb2NrIGZ1bmN0aW9uIHRvIHByZXZlbnQgY3Jhc2ggd2hlbiB0aGUgc3R1YnMgYXJlIHVzZWQKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmVnaW5uaW5nIG9mIHN1cHBvcnQgZm9yIEQzRDcgLyBEM0REZXZpY2U3LgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJUmVtb3ZlZCBzb21lIGNoZWNrbGluayBydWxlcyBtYWRlIHVubmVjZXNzYXJ5IGJ5IHRoZSAteiBkZWZzIGxpbmtlcgoJZmxhZy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSBzb21lIG1vcmUgY29kZSBzaGFyaW5nIGJldHdlZW4gRDNERGV2aWNlIHZlcnNpb25zCgkgLSBpbXBsZW1lbnRhdGlvbiBvZiBEM0RGVkZfVExWRVJURVggZm9ybWF0IGZhc3QgcGF0aAoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYSB3YXkgdG8gdGVsbCBtc3ZjcnQgdG8gZGVmaW5lIHdjaGFyX3QuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSBmaXhlZCBEM0RGVkZfVkVSVEVYIGNhc2UKCSAtIHNvbWUgb3RoZXIgbWlzY2VsbGFuZW91cyBmaXhlcwoKCSogcHJvZ3JhbXMvd2luZWRiZy9SRUFETUU6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSBDUkxGIGVuZCBvZiBsaW5lcyBpbiBMRiBvbmx5LgoKCSogZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIHN0YXJ0IG9mIHN1cHBvcnQgZm9yIGRldmljZSBsb2NraW5nIC8gdW5sb2NraW5nIHZpYSBnbFJlYWRQaXhlbHMgLwoJICAgZ2xEcmF3UGl4ZWxzIGludGVyZmFjZSAoc2xvdyBidXQgc2hvdWxkIGJlIGVub3VnaCBmb3IgYSBzdGFydCkKCSAtIGltcGxlbWVudCBvbmUgdmVydGV4IGNhc2UgZm9yIHRoZSBEM0QzLzcgRHJhd1ByaW1pdGl2ZSBmdW5jdGlvbnMKCSAtIGZpeCBhIG1pc3NpbmcgXG4gaW4gYSBUUkFDRSBjYWxsCgoJKiBkbGxzL2tlcm5lbC9ubHMvYmVsLm5sczogSGxlYiBWYWxvc2thIDxlbF9nbG9idXNAdHV0LmJ5PgoJU29tZSBmaXhlcyB0byBCZWxhcnVzaWFuIGxvY2FsZS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCBidWcgY2F1c2VkIGJ5IGNoYW5nZXMgdG8gV2luZS4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgcnVubmluZyBhbGwgdGhlIHRlc3RzIGluIGJhdGNoLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJe0dldCxTZXR9VGhyZWFkUHJpb3JpdHlCb29zdCBhbmQgU2V0VGhyZWFkSWRlYWxQcm9jZXNzb3IgYXJlIG1pc3NpbmcKCW9uIFdpbjk1IC0+IHVzZSBHZXRQcm9jQWRkcmVzcy4KCUNsZWFudXAgdGhlIGhhbmRsaW5nIG9mIE9wZW5UaHJlYWQuCglDaGVjayBTdXNwZW5kVGhyZWFkIGFmdGVyIGEgdGhyZWFkIHRlcm1pbmF0ZXMgKG5lZWRlZCBieSBJcGl4KS4KCVJlbW92ZSB1bm5lY2Vzc2FyeSB2ZXJzaW9uIGNoZWNrcyAoY2hlY2sgZm9yCglFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRCBhbmQgc2ltaWxhciBpbnN0ZWFkKS4KCUNsZWFudXAgY2FzdHMsIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29ucy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RyaXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJR2V0RGlza0ZyZWVTcGFjZShhbGwgTlVMTHMpIGNyYXNoZXMgb24gTlQ0IC0+IHJlbW92ZWQuCglHZXREaXNrRnJlZVNwYWNlKCIuIiB8ICIuLiIpIGZhaWxzIG9uIFdpbjk4IGFuZCBOVDQgYnV0IHN1Y2NlZWRzIG9uIFhQCgktPiByZW1vdmVkLgoJU2tpcCB0aGUgR2V0RGlza0ZyZWVTcGFjZSB0ZXN0cyBvbiBmbG9wcHkgZHJpdmVzIGJlY2F1c2UgTlQgcG9wcyB1cCBhCglNZXNzYWdlQm94IGlmIG5vIGZsb3BweSBpcyBwcmVzZW50LgoJRml4IHRoZSBlcnJvciBjb2RlIGNoZWNrcyB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgoJV2luOXgsIE5UNCBhbmQgWFAuCglTa2lwIHRoZSB1bmljb2RlIHRlc3RzIGlmIHRoZSBmaXJzdCBjYWxsIHJldHVybnMKCUVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVELgoJV2hlbmV2ZXIgYSB0ZXN0IGZhaWxzLCBwcmludCBzdWZmaWNpZW50IGluZm9ybWF0aW9uICh0eXBpY2FsbHkgcmV0dXJuCgljb2RlIGFuZCBHZXRMYXN0RXJyb3IoKSEpIHRvIGxldCB0aGUgZGV2ZWxvcGVyIGZpZ3VyZSBvdXQgd2hhdCBpcwoJd3JvbmcuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoTlVMTCwgTlVMTCkgY3Jhc2hlcyBvbiBXaW45OCAtPiByZW1vdmVkLgoJU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoIiIsIHZhbHVlKSBjcmFzaGVzIG9uIE5UNCAtPiByZW1vdmVkLgoJVGhlIGJlaGF2aW9yIG9mIFNldEVudmlyb25tZW50VmFyaWFibGVBKCIiLCAiIikgdmFyaWVzIHRvIG11Y2ggLT4KCXJlbW92ZWQuCglUZXN0IHRoZSBiZWhhdmlvciBvZiBTZXRFbnZpcm9ubWVudFZhcmlhYmxle0EsV30obmFtZSwgIiIpIHRha2luZyBpbnRvCglhY2NvdW50IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdpbjl4IGFuZCBOVC4KCVRlc3QgdGhlIGJlaGF2aW9yIG9mIEdldEVudmlyb25tZW50VmFyaWFibGV7QSxXfShuYW1lLCBidWYsIDApLgoJRml4IHRoZSBlcnJvciBjb2RlIGNoZWNrcyB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgoJV2luOXgsIE5UNCBhbmQgWFAuCglTa2lwIHRoZSB1bmljb2RlIHRlc3RzIGlmIHRoZSBmaXJzdCBjYWxsIHJldHVybnMKCUVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVELgoJV2hlbmV2ZXIgYSB0ZXN0IGZhaWxzLCBwcmludCBzdWZmaWNpZW50IGluZm9ybWF0aW9uICh0eXBpY2FsbHkgcmV0dXJuCgljb2RlIGFuZCBHZXRMYXN0RXJyb3IoKSEpIHRvIGxldCB0aGUgZGV2ZWxvcGVyIGZpZ3VyZSBvdXQgd2hhdCBpcwoJd3JvbmcuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGluY2x1ZGUvc2hlbGxhcGkuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiB3aXRoIGNvcnJlY3QgcHJvdG90eXBlcyBmb3IKCUV4dHJhY3RBc3NvY2lhdGVkSWNvbkV4QS9XLgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIHdjbWQgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGVkIEdldFJlbmRlclRhcmdldC4KCgkqIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgZW51bWVyYXRpb24gb2YgWkJ1ZmZlciBmb3JtYXQuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJVXBkYXRlIHRoZSBkZWJ1Z2dlciBkb2N1bWVudGF0aW9uIGZvciBjdXJyZW50IHVzYWdlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVBhcnRpYWxseSBpbXBsZW1lbnRlZCBrZXJuZWwvdXNlciB0aW1lcyBpbiBHZXRUaHJlYWRUaW1lcyAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgUnlhbiBDdW1taW5nKS4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnQgd2dsQ3JlYXRlTGF5ZXJDb250ZXh0IGZvciBsYXllciAwLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IGZvcmdldCB0byBBZGRSZWYgdGhlIHJldHVybmVkIERpcmVjdDNEIGludGVyZmFjZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRkcmF3LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGQgRERDQVBTMl9DQU5SRU5ERVJXSU5ET1dFRCBjYXBhYmlsaXRpZXMgdG8gb3VyIEREcmF3IGRyaXZlci4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIGRlY2xhcmF0aW9uIGZvciBTaWduYWxPYmplY3RBbmRXYWl0LgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgY29uc3RhbnRzIGZvciBfc2V0X2Vycm9yX21vZGUoKS4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglGaXhlZCAzMiBiaXQgZmxhZyBpbiBtaWRpT3V0U2hvcnRNc2cuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlcGxhY2UgTFBERFNVUkZBQ0VERVNDIGJ5IExQRERTVVJGQUNFREVTQzIgaW4gSURpcmVjdERyYXdTdXJmYWNlNAoJbWV0aG9kcyBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCB0ZXh0IG1vZGUgdmFsdWUuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIDQ4IGFuZCA5NmtIeiBXQVZFX0ZPUk1BVCBjb25zdGFudHMuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci5oLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglIYW5kbGUgZW5jYXBzdWxhdGVkIHVuaW9ucyBpbiBhIGNsZWFuZXIgKGFuZCBsZXNzIGJ1Z2d5KSB3YXkuIEVtaXQgdGhlCgluYW1lcyAiRFVNTVlVTklPTk5BTUUiIGFuZCAiRFVNTVlTVFJVQ1ROQU1FIiBmb3IgYW5vbnltb3VzIHVuaW9ucyBhbmQKCXN0cnVjdHMuIFN1cHBvcnQgY29uc3QgYW5kIGV4dGVybiBkZWZpbml0aW9ucy4gUmV0YWluIHRva2VucyAoYW5kCgl3aGV0aGVyIG51bWJlcnMgYXJlIGhleCBvciBub3QpIHVzZWQgZm9yIGNvbXB1dGluZyBjb25zdGFudAoJZXhwcmVzc2lvbnMsIHNvIHRoYXQgdGhlIGZ1bGwgZXhwcmVzc2lvbiBjYW4gYmUgd3JpdHRlbiB0byB0aGUgaGVhZGVyCglmaWxlIGluc3RlYWQgb2YgdGhlIGNvbXB1dGVkIGludGVnZXIgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uLiBQYXJzZQoJdGhlIHNpemVvZigpIG9wZXJhdG9yLiAgQ29tcHV0ZSBhbmQgcmVtZW1iZXIgY29uc3RhbnQgZGVmaW5pdGlvbnMgYW5kCgllbnVtIHZhbHVlcyBzbyB0aGV5IGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zLiBJbXByb3ZlZCBpZGVudGlmaWVyCglsb29rdXAgc3BlZWQuIEZpeGVkIHNvbWUgYnVncy4KCgkqIGluY2x1ZGUvd3R5cGVzLmlkbDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBtaXNzaW5nIHVuaW9uIG5hbWVzIGZvciBzb21lIGVuY2Fwc3VsYXRlZCB1bmlvbnMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBjYXBzIGZpbGxpbmcgdG8gYmUgbW9yZSBpbiBsaW5lIHdpdGggd2hhdCB3ZSBzdXBwb3J0CgktIG9wdGltaXplIGEgbGl0dGxlIGJpdCB0aGUgRHJhd1ByaW1pdGl2ZSBmdW5jdGlvbgoKCSogZmlsZXMvZmlsZS5jOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4ZWQgc29tZSBwcm9ibGVtcyB3aXRoIGFzeW5jaHJvbm91cyBmaWxlIElPLgoKMjAwMi0xMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gZml4IHRleHR1cmUgc25vb3BpbmcgKHBsdXMgYWRkcyBzbm9vcCBmb3IgMTU1NSBmb3JtYXQpCgkgLSBhZGQgdGV4dHVyZSBtZW1vcnkgdXNhZ2UgdHJhY2tpbmcKCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJUHJvdmlkZSBzdHVicyBmb3IgRG5zSG9zdG5hbWVUb0NvbXB1dGVyTmFtZUEvVy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgYSBjb3VwbGUgb2Ygc3R1YiBmdW5jdGlvbnMgdGhhdCB3ZSBpbXBvcnQgc28KCXRoYXQgd2UgZG9uJ3QgaW1wb3J0IHN0dWJzIGRpcmVjdGx5LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvaW50MjUuYywgZGxscy93aW5lZG9zL2ludDI2LmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQyNS5jLAoJICBtc2Rvcy9pbnQyNi5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZWQgaGFuZGxlcnMgZm9yIGludDI1IGFuZCBpbnQyNiB0byB3aW5lZG9zLgoKCSogb2JqZWN0cy9mb250LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUVudW1Gb250MTYgc2hvdWxkIGVudW1lcmF0ZSBnZGkgZm9udHMgdG9vLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBUeXBlc2FmZSBwYXJhbWV0ZXJzIGZyb20gVFJFRVZJRVdfTm90aWZ5Rm9ybWF0LgoJLSBSZXdyaXRlIFRSRUVWSUVXX05vdGlmeUZvcm1hdC4KCS0gRml4IHNldmVyYWwgaW52b2NhdGlvbnMgb2YgVFJFRVZJRVdfU2VuZFRyZWV2aWV3Tm90aWZ5LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgU3dpdGNoVG9UaHJlYWQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IGZvciBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBhYnMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBmb3IgZGVwcmVjYXRlZCB1c2Ugb2YgbGFiZWwgYXQgdGhlIGVuZCBvZiBjb21wb3VuZCBzdGF0ZW1lbnQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgb2xlL29sZTJubHMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCBHZXROdW1iZXJGb3JtYXRBIGZvciB6ZXJvIGRlY2ltYWxzIGFuZCBmb3IgemVybyBncm91cGluZy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOiBNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJUHJldmVudCBXaW5oZWxwIGZyb20gY3Jhc2hpbmcgd2hlbiBpdCBjYW4ndCBmaW5kIHRoZSBoZWxwZmlsZS4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBzb21lIEREUkFXIGFuZCBEM0QgZGVmaW5pdGlvbnMuCgoJKiB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGltcHJvdmVtZW50IGFuZCBidWcgZml4ZXMuCgoyMDAyLTExLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDIxMTI1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTExLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnJhcnkvcG9ydC5jLAoJICBzY2hlZHVsZXIvcHRocmVhZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBwdGhyZWFkcyBvbiBGcmVlQlNEIChiYXNlZCBvbiBwYXRjaCBieSBBbGV4YW5kcmUgSnVsbGlhcmQpLgoKCSogd2luZG93cy9kaWFsb2cuYzogQWRkZWQgQ1NfREJMQ0xLUyBzdHlsZSB0byBkaWFsb2cgd2luZG93IGNsYXNzLgoKCSogb2JqZWN0cy9mb250LmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CglDaGFuZ2Ugc29tZSBvZiB0aGUgbnVtYmVyIHNlcGVyYXRvcnMgdG8gIk5ldXRyYWwiIHJhdGhlciB0aGFuICJMZWZ0IHRvCglyaWdodCIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3RpbWVyLmM6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVN0dWJzIGZvciBDcmVhdGVUaW1lclF1ZXVlIGFuZCBEZWxldGVUaW1lclF1ZXVlRXguCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2luc3ZjLmg6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCUFzc29ydGVkIFdpbjJrL1dpblhQIHN0dWJzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ29udmVydGVkIGltcGxlbWVudGF0aW9uIG9mIF9sc2VlayB0byBfbHNlZWtpNjQsIGltcGxlbWVudGVkIF9sc2VlayBieQoJY2FsbGluZyBfbHNlZWtpNjQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgcmVnaXN0cnkgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVgxMURSVl9EcmF3QXJjOiBEb24ndCBvdmVyd3JpdGUgdGhlIEVORENBUCBzdHlsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9wZW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVgxMURSVl9TZWxlY3RQZW4oKTogRG9uJ3QgdXNlIGEgcGVuIHdpdGggaGFsZiB0aGUgd2lkdGguCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgdGhlIG1pc3NpbmcgY3ggbWVtYmVyIHRvIHRoZSBNeURMR0lURU1URU1QTEFURUVYIHN0cnVjdC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNvbnZlcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBfc3RhdCBhbmQgX2ZzdGF0IHRvIF9zdGF0aTY0IGFuZAoJX2ZzdGF0aTY0LgoJSW1wbGVtZW50ZWQgX3N0YXQvX2ZzdGF0IGJ5IGNhbGxpbmcgX3N0YXRpNjQvX2ZzdGF0aTY0LgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3VwcG9ydCBmb3IgVmFyQW5kIGJldHdlZW4gaW50ZWdlcnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gUHJldmVudCB0aGUgYmFja2J1ZmZlciB0byBhbHNvIGhhdmUgdGhlIGZyb250YnVmZmVyIGZsYWcgc2V0LgoJLSBMb2cgdGhlIExvY2tpbmcgZmxhZ3MuCgktIFByaW50IHN5bWJvbGljIG5hbWUgKGlmIGFueSkgb2YgemVybyB2YWx1ZXMgZm9yIGJpdCBmaWVsZHMgKHRoYW5rcwoJICBBbmRpKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJTW92ZWQgc29tZSBHZXRUaHJlYWRUaW1lcyB0ZXN0cyBvdXQgb2YgdGhlIHRvZG8gYmxvY2suCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsCgkgIHNlcnZlci90cmFjZS5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCVBhcnRpYWxseSBpbXBsZW1lbnQgR2V0VGhyZWFkVGltZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFdhcm5pbmdzIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdGltZS5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJLSBNb3ZlIFNldFN5c3RlbVRpbWUsIEdldFRpbWVab25lSW5mb3JtYXRpb24gYW5kCgkgIFNldFRpbWVab25lSW5mb3JtYXRpb24gaW1wbGVtZW50YXRpb24gdG8gbnRkbGwuCgktIERvY3UgdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUxWTl9HRVRESVNQSU5GTyBzZWVtcyB0byBhbHdheXMgYmUgQW5zaS4KCgkqIG9iamVjdHMvZGliLmM6IFN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJU3RyZXRjaERJQml0czogYXZvaWQgY3Jhc2ggb24gbnVsbCBwb2ludGVycy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkIHN1cHBvcnQgZm9yIHBhaW50aW5nIFNCU19TSVpFQk9YIHN0eWxlIHByb3Blcmx5LgoKMjAwMi0xMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvaW50MTEuYywgZGxscy93aW5lZG9zL2ludDE1LmMsIGRsbHMvd2luZWRvcy9pbnQ1Yy5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZHBtaS5jLAoJICBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQ1Yy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZWQgaGFuZGxlcnMgZm9yIGludDExLCBpbnQxNSBhbmQgaW50NWMgdG8gd2luZWRvcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uaCwKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGQgaW1wbGVtZW50YXRpb24gZm9yIEZpbmREZXZpY2UgZnVuY3Rpb24KCS0gc29tZSBtaXNjZWxsYW5lb3VzIGNsZWFuLXVwcyAvIGFkZGl0aW9ucwoKCSogbWlzYy9yZWdpc3RyeS5jOgoJUmVwbGFjZSBtb3N0IFBST0ZJTEVfR2V0V2luZUluaSBjYWxscyBieSBkaXJlY3QgcmVnaXN0cnkgYWNjZXNzZXMuCglLZWVwIHRoZSBjb25maWcga2V5IG9wZW4gdG8gcXVlcnkgYWxsIHZhbHVlcyBpbnN0ZWFkIG9mIHJlLW9wZW5pbmcgaXQKCWFsbCB0aGUgdGltZS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglBZGRlZCBkaXN0IHJ1bGUgZm9yIGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gdGFyYmFsbHMuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJQWRkZWQgQ1NfREJMQ0xLUyBzbyB0aGF0IHN5c3RyYXkgcmVjZWl2ZXMgZG91YmxlIGNsaWNrcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglWR0EgdGV4dCBtb2RlIG5vIGxvbmdlciBmbGlja2VycyBhbmQgaXQgaXMgbXVjaCBmYXN0ZXIuCglWR0EgdGV4dCBtb2RlIGlzIG5vdyBpbml0aWFsaXplZCBlYXJsaWVyLgoJVkdBIHRleHQgbW9kZSBpcyBub3cgZW11bGF0ZWQgZXZlbiB3aXRob3V0IGNvbnNvbGUuCgoJKiBkbGxzL3VzZXIvaG9vay5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgVW5ob29rV2luZG93c0hvb2s6IGNsZWFyIHRoZSBoYW5kbGUgc28gdGhhdCB0aGUgc2VydmVyIGRvZXNuJ3QKCXRyeSB0byB1c2UgaXQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZWVuYWJsZSBPcGVuR0wgc3VyZmFjZSdzIGZsaXAgbWV0aG9kLgoJUmVlbmFibGUgZXhlY3V0ZSBidWZmZXJzLgoJU29tZSBidWcgZml4ZXMuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOiBKZW5zIEhvZmZtYW5uIDxob2ZmbWFqc0BnbXguZGU+CglQYXNzIGNvcnJlY3QgaW5zdGFuY2UgaW4ga2V5Ym9hcmRfaG9vayBzZXR1cC4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmM6CglNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJRml4IHNvbWUgdW5pY29kZS0+YXNjaWkgY2FsbHMuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkIHVzaW5nIGxhYmVscyBhdCB0aGUgZW5kIG9mIGNvbW1wb3VuZCBzdGF0ZW1lbnRzLgoKMjAwMi0xMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9tYWluLmM6CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgUFJPRklMRV9Mb2FkV2luZUluaSgpLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9pbnQyZi5jLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBpbmNsdWRlL21pc2NlbXUuaCwKCSAgbXNkb3MvaW50MmYuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgaW50MmYgaGFuZGxlciB0byB3aW5lZG9zLgoJQ2xlYW4gd2luZWRvcyBoZWFkZXJzIGEgYml0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwKCSAgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCSBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiAibWFrZSBldmVyeXRoaW5nIiBpcyBub3cgdG8gYnVpbGQgc2VwYXJhdGUKCWd1aWRlcyByYXRoZXIgdGhhbiB0aGUgYmlnIG9uZS4KCURldGVybWluZXMgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxlZCBkb2Nib29rIGZpbHRlciAoZGIyaHRtbCBvcgoJZG9jYm9vazJodG1sLCBldGMuKSBpbiBjb25maWd1cmUsIGRlZmF1bHRpbmcgdG8gZmFsc2UgaWYgYWJzZW50LgoKCSogd2luZG93cy9pbnB1dC5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUFsdGVyZWQgV01fTU9VU0VIT1ZFUiBzbyB0aGUgbFBhcmFtIGFuZCB3UGFyYW0gZmllbGRzIGFyZSBzZXQKCWNvcnJlY3RseSB0byB2aXJ0dWFsIGtleSBzdGF0ZXMgYW5kIGN1cnNvciBwb3NpdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5udC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJUmVtb3ZlZCB0aGUgV0lORV9OT19TVFJJQ1Qgc3VwcG9ydC4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWxsb3cgYXBwcyB0byBkZWZpbmUgIF9faW50ezgsMTYsMzIsNjR9IG9uIHRoZSBjb21tYW5kIGxpbmUuCgoyMDAyLTExLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOiBGaXhlZCB1c2Ugb2YgSEJNTUVOVV8qIGluIHN3aXRjaCBzdGF0ZW1lbnRzLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLCBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3RleHQuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL21hcHBpbmcuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBvYmplY3RzL2JpdG1hcC5jLAoJICBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLAoJICBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3JlZ2lvbi5jOgoJTWFkZSBnZGkgY29tcGlsZSB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIC1EU1RSSUNUIGlzc3Vlcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLAoJICBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy91aXRvb2xzLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NhcmV0LmMsIGRsbHMvdXNlci9jb21tMTYuYywKCSAgZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3BhaW50aW5nLmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCB3aW5kb3dzL2NsYXNzLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc3B5LmMsCgkgIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJTWFkZSB1c2VyIGNvbXBpbGUgd2l0aCAtRFNUUklDVC4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgdG9vbHMvd2luZWluc3RhbGw6CglSZW1vdmVkIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcgb2xkIGZvcm1hdCBjb25maWcsIGV2ZXJ5Ym9keSBzaG91bGQKCWhhdmUgY29udmVydGVkIGJ5IG5vdy4KCVJlbW92ZWQgbG9nIGluZm8gZnJvbSB3aW5laW5zdGFsbCwgdGhpcyBpbmZvIGlzIGFscmVhZHkgaW4gQ2hhbmdlTG9nLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9jbGFzcy5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9zdHJ1Y3QzMi5jLAoJICB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgbW9yZSAtRFNUUklDVCBpc3N1ZXMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdXNlcjE2LmM6CglQcm9wZXJseSBzcGxpdCB0aGUgMTYtYml0IHZlcnNpb25zIG9mIEdyYXlTdHJpbmcgYW5kIFRhYmJlZFRleHRPdXQuCgoJKiBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsCgkgIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3VzZXIvY2FyZXQuYywgZGxscy91c2VyL2ZvY3VzLmMsCgkgIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywgZGxscy91c2VyL3RleHQuYywKCSAgZGxscy91c2VyL3VzZXIxNi5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsCgkgIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJTW92ZWQgc29tZSBtb3JlIDE2LWJpdCBmdW5jdGlvbnMgdG8gdXNlcjE2LmMuCglBIGZldyBmaXhlcyBmb3IgLURTVFJJQ1QuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCUNvbXBpbGUgb2xlMzIgd2l0aCAtRFNUUklDVC4KCjIwMDItMTEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLAoJICBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglKb2hhbiBEYWhsaW4gPGpkYWhsaW5AYXN5bmMuY29tLmJyPgoJTWFrZSBzaGVsbDMyIGNvbXBpbGUgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGcuaCwKCSAgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJQW5kcmV3IEpvaG4gSHVnaGVzIDxodWdoZXMyMDAyQGJ0aW50ZXJuZXQuY29tPgoJTWFrZSBjb21tZGxnIGNvbXBpbGUgd2l0aCAtRFNUUklDVC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJUmVtb3ZlIG9ic29sZXRlIC0tZW5hYmxlLW9wZW5nbC4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhbGlhc2luZyBwcm9ibGVtcyAoZG8gbm90IHVzZSAoUE9JTlQqKSZyZWN0IGNvbnN0cnVjdHMpLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBpbmNsdWRlL3dpbmNvbi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgdGhlIENPT1JEIDwtPiBEV09SRCBjb252ZXJzaW9uIHRoZSBjYW5vbmljYWwgd2F5LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglIYXZlIFBvc3RNZXNzYWdlIGNhbGwgUG9zdFRocmVhZE1lc3NhZ2Ugd2hlbiBod25kIGlzIE5VTEwuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBkZWZpbml0aW9uIGZvciBXU0FFRElTQ09OLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFJlbW92ZWQgT3BlbkdMIHRocmVhZCBzYWZldHkgY2hlY2suCglSZW5hbWVkIG9wdGlvbiB0byAtLXdpdGhvdXQtb3BlbmdsIGZvciBjb25zaXN0ZW5jeS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS93aW4xNmRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL21hcHBpbmcuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU29tZSAtRFNUUklDVCBmaXhlcy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4ZWQgY2lyY3VsYXIgaW5jbHVkZSBzZXF1ZW5jZSB3aW5zb2NrLmggLT4gd2luZG93cy5oIC0+IHdpbnNvY2syLmgKCS0+IHdpbnNvY2suaC4KCgkqIHdpbmRvd3MvY2xhc3MuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXQvU2V0Q2xhc3NMb25nIGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlcGxhY2VkIENyZWF0ZURDQSBieSBDcmVhdGVEQ1cgaW4gTG9hZEltYWdlVy4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkY29taW1wbC5oLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uaCwKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgaW5jbHVkZS9kM2QuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIENsZWFuIHVwIGFsbCB0aGUgRDNEIENPTSBoYW5kbGluZyAoYnV0IHRoZSB1bmRlcmxheWluZyBjb2RlIGlzIHN0aWxsCgkgIGFzIHVnbHkgYXMgYmVmb3JlKS4KCS0gSGFuZGxlIHByb3Blcmx5IChpZSBhcyBvbiByZWFsIFdpbmRvd3MpIG5lZ2F0aXZlIHZhbHVlcyBpbgoJICByZWN0YW5nbGVzIGR1cmluZyBibGl0dGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJVXNlIHRoZSAnLXogZGVmcycgbGlua2VyIG9wdGlvbiBpZiBzdXBwb3J0ZWQgdG8gYmV0dGVyIGNhdGNoIHVuZGVmaW5lZAoJc3ltYm9scy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQ2FybCBTb3BjaGFrIDxjYXJsLnNvcGNoYWtAY2VnaXMxMjMuY29tPgoJSWdub3JlIGJ1ZmZlciBsaW1pdCBvbiBXTV9TRVRURVhULgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglTdHViIGZvciBTZXREQ0JydXNoQ29sb3IuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCUFkZCAtbGMgd2hlbiBsaW5raW5nIGRsbHMgdG8gYXZvaWQgd2FybmluZ3Mgb24gRnJlZUJTRC4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9maWxlLmMsIGZpbGVzL3NtYi5jLCBmaWxlcy90YXBlLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvZ2xvYmFsLmMsCgkgIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLAoJICBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvbmV3Zm5zLmM6CglBbmRyZXcgSm9obiBIdWdoZXMgPGh1Z2hlczIwMDJAYnRpbnRlcm5ldC5jb20+CglCdWlsZCBudGRsbCB3aXRoIC1EU1RSSUNULgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJQWRkZWQgd3JhcHBlciB0byByZXBsYWNlIGxsc2VlaytscmVhZCB0byBhdm9pZCBIQU5ETEUvSEZJTEUKCWNvbnZlcnNpb25zLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIElmIHJ1bm5pbmcgd2luZWluc3RhbGwgYW5kIGFza2luZyBub3QgdG8gaW5zdGFsbCwgdGhlIHN5bWJvbGljIGxpbmtzCgkgIGFyZSBubyBjcmVhdGVkIHBvaW50aW5nIHRvIHRoZSBzb3VyY2UgdHJlZSBmaWxlcyByYXRoZXIgdG8gdGhlCgkgIChub24tZXhpc3RpbmcpICRsaWJkaXIKCS0gSWYgV2luZG93cyBpcyBmb3VuZCBvbiB0aGUgc3lzdGVtLCB0aGUgaW5zdGFsbGVyIGRvZXMgbm90IGFzc3VtZQoJICB0aGF0IHRoZSB1c2VyIGlzIGludGVyZXN0ZWQgaW4gdXNpbmcgaXQuIEluc3RlYWQsIHRoZSB1c2VyIGlzIGFza2VkLAoJICBhbmQgaWYgc2hlIGFuc3dlcnMgIm5vIiwgV2luZSBpcyBpbnN0YWxsZWQgYXMgaWYgbm8gV2luZG93cyB3YXMKCSAgZm91bmQuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGwuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgImdlbmVyYXRlIGhlYWRlcnMgb25seSIgY29tbWFuZC1saW5lIG9wdGlvbi4gSW1wbGVtZW50ZWQgaW1wb3J0cwoJZnJvbSBpbnNpZGUgaW50ZXJmYWNlIGRlZmluaXRpb25zLiBGaXhlZCBhIGZldyBwcm9ibGVtcyB3aXRoCglnZW5lcmF0aW5nIGhlYWRlciBmaWxlcyBmb3IgQ09NIGludGVyZmFjZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbG9hZGVyL3Rhc2suYywgbXNkb3MvaW50MjEuYywKCSAgbXNkb3MvaW50ZXJydXB0cy5jLCB3aW5kb3dzL3VzZXIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZWQgbGFzdCB1c2VycyBvZiBtc2Rvcy9pbnRlcnJ1cHRzLmMuCgoyMDAyLTExLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2hvb2suYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvaG9vay5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3VzZXIuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIHN5c3RlbS13aWRlIGhvb2tzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglSZW1vdmVkIC1ub2ltcG9ydCBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgZm9yd2FyZHMgdG8gbnRkbGwuCglBZGRlZCAtbm9pbXBvcnQgb24gZnVuY3Rpb25zIHRoYXQgZGlyZWN0bHkgY2FsbCB0aGUgbGliYyBlcXVpdmFsZW50LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfQ24ucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dbi5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCB0b29scy93bWMvbGFuZy5jOgoJVGlzaGVuZyBDaGVuIDxzaGFkb3dAamNucC5wa3UuZWR1LmNuPgoJQWRkZWQgU2ltcGxpZmllZCBDaGluZXNlIHN1cHBvcnQuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgV2luMzIgQVBJIHJlbGF0aXZlIHRvIDE2IGJpdCBzdWJzeXN0ZW0gZm9yIHRoZSAzMiBiaXQKCXBhcnQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciBzdXBwb3J0IGZvciBtdWx0aXBsZSBtaWRpIGRldmljZXMgb24gdGhlIE9TUyBpbnRlcmZhY2UuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmgsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9zdHJpbmcuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglXcm90ZSBiYWNrICYgaGlzdG9yeSBzdXBwb3J0LgoJQ29ycmVjdGx5IGltcGxlbWVudGVkIDw8IGFuZCA+PiBidXR0b25zLgoJQWRkZWQgc3VwcG9ydCBmb3IgcGFnZSBsZXZlbCBtYWNyb3MuCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJd2luZWR1bXAgd2FzIHN0aWxsIHVzaW5nIHRoZSAiaW5pdCIga2V5d29yZCBpbiB0aGUgLnNwZWMgZmlsZS4KCgkqIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsIGluY2x1ZGUvc2VsZWN0b3JzLmgsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtc2Rvcy92eGQuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZSBzb21lIFdpbjMycyBzcGVjaWZpYyBjb2RlLgoKCSogbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MjAuYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWlzY2VtdS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlZCBvYnNvbGV0ZSBjb2RlLgoKMjAwMi0xMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglJbXBsZW1lbnRlZCBzb21lIGlzbWJjKiBmdW5jdGlvbnMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgR3JlZyBUdXJuZXIpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY2FiaW5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL2NhYmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvY2FiaW5ldC9jYWJpbmV0LnNwZWMsCgkgIGRsbHMvY2FiaW5ldC9mY2kuYywgZGxscy9jYWJpbmV0L2ZkaS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2ZjaS5oLCBpbmNsdWRlL2ZkaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIGNhYmluZXQuZGxsLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkIHNvbWUgUmljaEVkaXQgMi4wLzMuMCBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgUGVla05hbWVkUGlwZQoJRml4ZWQgYSBsb3Qgb2YgYmFkbHkgaW5kZW50ZWQgZnVuY3Rpb25zLgoKMjAwMi0xMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLAoJICBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZW1vdmVkIHN1cHBvcnQgZm9yICdyc3JjJyBzcGVjIGZpbGUgc3RhdGVtZW50LgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9ydGYuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUdldCByaWQgb2YgdGhlIHZhcmFyZyBhbmQgZ2VuZXJpYyBzdHVmZi4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmVkIHNvbWUgdW51c2VkIHR5cGVzLgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGRlZCBuZXRkYi5oIHByb3RlY3Rpb24uCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3RyaWN0IGFsaWFzaW5nIGlzc3VlIGluIF9fcHRocmVhZF9vbmNlIGFuZCBTZXRXYWl0YWJsZVRpbWVyLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDFhLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmVkIGxhc3QgdXNlciBvZiBtc2Rvcy9pbnQxYS5jLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgaW5jbHVkZS9jYWxsYmFjay5oLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZHBtaS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlZCBvYnNvbGV0ZSBJTlRfSW50MzFIYW5kbGVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU2V0dGluZyB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgY2FuIGNoYW5nZSB0aGUgdmFsdWVzIGZvciB0aGUKCXZlcnRpY2FsIG9uZSBzbyBtYWtlIHN1cmUgd2UgY29tcHV0ZSB0aGVtIHNlcGFyYXRlbHkuCgoJKiBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglBZGRlZCBlbXB0eSBYMTFEUlZfT3BlbkdMX0luaXQgZm9yIHRoZSBub24tT3BlbkdMIGNhc2UuCgoJKiBkbGxzL250ZGxsL2xhcmdlX2ludC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHN0cmljdCBhbGlhc2luZyBwcm9ibGVtIGluIFJ0bEVubGFyZ2VkVW5zaWduZWREaXZpZGUuCgoJKiBpbmNsdWRlL3dpbmNvbi5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHN0cmljdCBhbGlhc2luZyBwcm9ibGVtIGluCglfX3dpbmVfR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplX3dyYXBwZXIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmgsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciB3aW5kb3cgaW5mb3JtYXRpb24gZnJvbSB0aGUgLmhscCBmaWxlLgoJQWRkZWQgc3VwcG9ydCBmb3Igd2luZG93IG51bWJlcnMgaW4gbGluay4KCgkqIHdpbmRvd3MvaW5wdXQuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBMb2FkS2V5Ym9hcmRMYXlvdXQgZnJvbSBBU0NJSSB0byBVbmljb2RlLgoKCSogaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnVzZXIuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglObyB2ZXJzaW9uIG9mIEdOVSBDKysgKHVubGlrZSBHTlUgQykgc3VwcG9ydHMgdW5uYW1lZCBzdHJ1Y3RzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VwcG9ydCBjb21tY3RybCBtZXNzYWdlLWhlbHBlciBtYWNyb3MgaW4gQysrLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBEZWxldGVEQyBpbnN0ZWFkIG9mIERlbGV0ZU9iamVjdCB0byBmcmVlIEhEQ3MgKHNwb3R0ZWQgYnkgRGlldHJpY2gKCVRlaWNrbmVyIDxEaWV0cmljaF9UZWlja25lckB0LW9ubGluZS5kZT4pLgoJQ2xlYXIgdGhlIGltYWdlbGlzdCBzdHJ1Y3R1cmUgb24gZGVsZXRpb24sIGFzIHNvbWUgc3R1cGlkIGFwcHMgZnJlZQoJaW1hZ2VsaXN0cyBtdWx0aXBsZSB0aW1lcy4KCgkqIHdpbmRvd3MvdXNlci5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEVudW1EaXNwbGF5U2V0dGluZ3MgZnJvbSBBU0NJSSB0byBVbmljb2RlLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBkZWZpbml0aW9ucyBmb3Igc3RydWN0dXJlcyB1c2VkIGJ5IE50UXVlcnlGaWxlSW5mby4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCS0gTW92ZSBTdGdJc1N0b3JhZ2VGaWxlMTYncyBpbXBsZW1lbnRhdGlvbiB0byBTdGdJc1N0b3JhZ2VGaWxlOyBwb3J0CgkgIGl0IHRvIFdpbjMyLgoJLSBNb3ZlIFN0Z0lzU3RvcmFnZUZpbGUgZnJvbSBzdG9yYWdlLmMgdG8gc3RvcmFnZTMyLmMuCgktIFN0Z0lzU3RvcmFnZUZpbGUgb25seSByZXR1cm5zIFNfT0ssIFNUR19FX0ZJTEVOT1RGT1VORCwgYW5kIFNfRkFMU0UuCgktIFN0Z0lzU3RvcmFnZUZpbGUgZG9lc24ndCBjaGVjayBpZiBhIGZpbGUgaXMgbGFyZ2UgZW5vdWdoIHRvIGJlIGEKCSAgc3RvcmFnZSBmaWxlLCBpdCBvbmx5IGNoZWNrcyBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSA4LWJ5dGUgbWFnaWMuCgoJKiBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3dpbmluZXQuaDogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJLSBBZGRlZCBzb21lIGRlZmluaXRpb25zLgoJLSBGaXhlZCBzaWduYXR1cmUgb2YgR2V0VXJsQ2FjaGVFbnRyeUluZm9FeFcuCgoJKiB0b29scy93aW5laW5zdGFsbDogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJSW5zdGFsbCBsaW5rIHRvIHJ1bmRsbDMyLmV4ZSB0b28uCgoJKiBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglGaXggY3Jhc2ggd2hlbiBpbnZva2VkIHdpdGggbm8gYXJndW1lbnRzLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IFJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglNYWtlIExvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeDE2IGNhbGwgTG9va3VwSWNvbklkRnJvbURpcmVjdG9yeUV4LAoJaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KCjIwMDItMTEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzoKCVdhcm5pbmcgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kM2Q4L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2dsdTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUveDExZHJ2Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTG9hZCBPcGVuR0wgbGlicmFyeSBkeW5hbWljYWxseSBmcm9tIHgxMWRydi4KCgkqIGxvYWRlci9tb2R1bGUuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglEb24ndCBmdWxseSBwcm9jZXNzIEZyZWVMaWJyYXJ5IHdoZW4gcHJvY2VzcyBpcyBzdG9wcGluZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglJbXBsZW1lbnRlZCBHZXRGaWxlU2l6ZUV4IChiYXNlZCBvbiBhIHBhdGNoIGJ5IFN0ZXZlIEx1c3RiYWRlcikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3J1bmRsbDMyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3J1bmRsbDMyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQWRkZWQgcnVuZGxsMzIgdXRpbGl0eS4KCgkqIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsCgkgIGluY2x1ZGUvY2FsbGJhY2suaCwgbXNkb3MvZHBtaS5jLCB3aW4zMi9kZXZpY2UuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCURldmljZUlvQ29udHJvbCBub3cgY2FsbHMgd2luZWRvcyBpbnRlcnJ1cHQgaGFuZGxlcnMuCglGaXhlZCBSYXdNb2RlU3dpdGNoLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglGaXggU01fQ1lWVEhVTUIsIFNNX0NYU01TSVpFLCBTTV9DWE1FTlVDSEVDSyBhbmQgU01fQ1lNRU5VQ0hFQ0suCgoJKiBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5oLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLnlhY2MueSwKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZXdyb3RlIG1hY3JvIGVuZ2luZSBmb3IgYWRkaW5nIGR5bmFtaWMgbWFjcm8gbG9hZGluZyBjYXBhYmlsaXR5LgoJV3JvdGUgUmVnaXN0ZXJSb3V0aW5lIGFuZCBJc0Jvb2sgbWFjcm9zLgoKCSogZGxscy9nZGkvbWZkcnYvZGMuYywgZGxscy93aW5lcHMvdGV4dC5jLCBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXIgaGFuZGxpbmcgb2YgU2V0VGV4dENoYXJhY3RlckV4dHJhLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvcmVnaXN0cnkuYywgd2luMzIvaW5pdC5jLCB3aW4zMi9uZXdmbnMuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIEFsbG93IHNldHRpbmcgTmV0QklPUyBDb21wdXRlck5hbWUgdGhyb3VnaCByZWdpc3RyeS4KCS0gS2VlcCBvbGQgYmVoYXZpb3IgYXMgZGVmYXVsdCwgdXNpbmcgbmV3IGNvbmZpZyBvcHRpb24gdG8gY2hhbmdlLgoJLSBJbXBsZW1lbnQgU2V0Q29tcHV0ZXJOYW1lKCksIFNldENvbXB1dGVyTmFtZUV4KCksCgkgIEdldENvbXB1dGVyTmFtZUV4KCkuCgktIENvbXB1dGVyTmFtZSBpbml0aWFsaXphdGlvbiBtb3ZlZCB0byBrZXJuZWwzMi4KCgkqIGRsbHMvbnRkbGwvcnRsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgUnRsRG9zUGF0aE5hbWVUb050UGF0aE5hbWVfVS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHRlc3RzIGNvbXBpbGUgb24gV2luZG93cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWxzbyBzaWxlbmNlIElTaGVsbExpbmtBX2ZuU2V0U2hvd0NtZC4KCgkqIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLAoJICBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBFc2NhcGVzICpfUEFUSCBhbmQgUE9TVFNDUklQVF9JR05PUkUuCgoyMDAyLTExLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDbGllbnQgc2lkZSByZW5kZXIgZm9udHMgZm9yIFhTZXJ2ZXJzIHdpdGhvdXQgdGhlIFJlbmRlciBleHRlbnNpb24KCXVzaW5nIFgxMSBjb3JlIHJlcXVlc3RzLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgUmVsZWFzZURDIGZ1bmN0aW9uIHRvIHRoZSBVU0VSIGRyaXZlciBpbnRlcmZhY2UuCgoyMDAyLTExLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gY29tcGFyZSB0aGUgd29ybGQgdHJhbnNmb3JtcyAoYXQgbGVhc3QgdGhlIDQgc2NhbGluZwoJZWxlbWVudHMpIHdoZW4gd2UgYWNjZXB0IGEgZm9udCBmcm9tIHRoZSBjYWNoZS4KCUdldCB0aGUgY29ycmVjdCB2YWx1ZXMgZm9yIHRoZSB1bmRlcnNjb3JlIHNpemUgYW5kIHBvc2l0aW9uLgoJQWRkZWQgYSBtaXNzaW5nIGNsb3NlZGlyKCkuCgoJKiBkbGxzL3dpbmVwcy9ncmFwaGljcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IFBTRFJWX0RyYXdBcmMgdG8gd29yayBwcm9wZXJseSB3aXRoIGxvZ2ljYWwgY29vcmRzLgoKCSogZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUluc3RlYWQgb2YgdHJ5aW5nIHRvIGRvd25sb2FkIHRoZSBUeXBlIDQyIGdscHloIG1ldHJpY3MgaW5jcmVtZW50YWxseQoJKHdoaWNoIG1vc3QgcHJpbnRlcnMgZG9uJ3Qgc2VlbSB0byB1bmRlcnN0YW5kKSwgd2UnbGwgZG93bmxvYWQgdGhlCgl3aG9sZSBobXR4IHRhYmxlIGluIG9uZSBnbyAoc2lnaCkgdW5sZXNzIGl0J3MgbGFyZ2VyIHRoYW4gNjRLIGluIHdoaWNoCgljYXNlIHdlJ2xsIGdvIGJhY2sgdG8gdXNpbmcgYSBUeXBlIDEgZm9udC4KCgkqIGRsbHMvd2luZXBzL3R5cGUxLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBjYW4ndCBjYWNoZSB0aGUgdW5zY2FsZWQgZm9udCdzIGhmb250LCBzaW5jZSB0aGUgbWFwcGluZyBtb2RlIG1heQoJY2hhbmdlLiAgVGhpcyByZXN1bHRlZCBpbiBzb21lIGdseXBocyBiZWluZyBkb3dubG9hZGVkIGF0IHRoZSB3cm9uZwoJc2l6ZS4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglNYWtlIHN1cmUgd2lkbCBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgaGVhZGVycyBpdCBoYXMgdG8gZ2VuZXJhdGUuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBVcGRhdGVkIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9saW5lLmMsIHdpbmVkZWZhdWx0LnJlZzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglaZXJvIG91dCB0aGUgcmV0dXJuZWQgTElORVRSQU5TTEFURUNBUFMgc3RydWN0dXJlLgoJUmVhZCBjb3VudHJ5IGxpc3QgZnJvbSB0aGUgcmVnaXN0cnkuCglBZGQgYSBsb2FkIG9mIGNvdW50cmllcyB0byB3aW5lZGVmYXVsdC5yZWcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgYSBDRE5fRklMRU9LIGluIEZJTEVETEc5NV9Pbk9wZW5NdWx0aXBsZUZpbGVzLgoJUmVzdHJ1Y3R1cmUgdGhlIGhhbmRsaW5nIG9mIEN1c3RvbSBkaWFsb2cgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBpbWFnZSBsaXN0cy4KCS0gQWRkIFRCTl9JTklUQ1VTVE9NSVpFIG5vdGlmaWNhdGlvbi4KCS0gQ29ycmVjdGx5IHBvcHVsYXRlIFRCTl9RVUVSWURFTEVURS4KCS0gU3VwcG9ydCBUQk5fR0VUQlVUVE9OSU5GT1cuCgoJKiBjb250cm9scy9jb21iby5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBidWcgd2l0aCBjb21ibyBib3hlcyB3aGVyZSBvbmx5IDEgaXRlbXMgd2FzIGJlaW5nIGRpc3BsYXllZC4KCgkqIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBzaWduIHByb2JsZW0gaW4gR2V0V2luZG93V29yZC9Mb25nIGNoZWNrIGZvciBvZmZzZXQgbGFyZ2VyIHRoYW4KCXRoZSB3aW5kb3cgZXh0cmEgYnl0ZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgSVN0cmVhbSBhbmQgSVN0b3JhZ2UgaW50ZXJmYWNlIGVudHJpZXMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDYXAgdGhlIHJlcG9ydGVkIHBoeXNpY2FsIG1lbW9yeSB0byAyR0IgdG8gcHJldmVudCBhcHBsaWNhdGlvbnMKCShlLmcuIFF1aWNrVGltZSA2KSBmcm9tIGNyYXNoaW5nLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFpbnRhaW4gbG93ZXIgY2FzZWQgZmlsZSBuYW1lcyBpbiB0aGUgV2luZSBjb25maWcgZGlyZWN0b3J5LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBpc284ODU5LTE1IG9uIEV1cm9wZWFuIGtleWJvYXJkcy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdvcmsgd2l0aCB0aGUgY29ycmVjdCBzdWJrZXkgd2l0aCBsb2FkaW5nIGtleXMuIE5vdCBhIHRydWUgZml4IHRvIHRoZQoJTG9hZEtleS9TYXZlS2V5IHNpdHVhdGlvbi4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmV3IEdESSBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWJzIGFuZCBkZWNsYXJhdGlvbnMgZm9yIFdTQUluc3RhbGxTZXJ2aWNlQ2xhc3NBL1cuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNvdW50ZXIgdG8ga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIG91dHN0YW5kaW5nIGFzeW5jCglyZXF1ZXN0cy4gIFRoaXMgZ2V0cyBhcm91bmQgYSBwcm9ibGVtIHdoZXJlIGEgU2V0RXZlbnQgY291bGQgYmUgY2FsbGVkCgliZWZvcmUgYSBwcmV2aW91cyBldmVudCBoYWQgYmVlbiBkZWFsdCB3aXRoLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIEltYWdlTGlzdF9HZXRJbWFnZUluZm8gYmVmb3JlIGFkanVzdGluZyB0aGUKCXNpemUuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZHVjZSB0aGUgbWF4aW11bSBsZW5ndGggb2YgZGVidWcgc3RyaW5ncyB0byA4MCBjaGFyYWN0ZXJzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglEbyBub3QgZGVmaW5lIE1aX1NVUFBPUlRFRCBpZiB3ZSBkbyBub3QgaGF2ZSBzeXMvdm04Ni5oIGZvciBhbGwgdGhlCglzdHJ1Y3QgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuaDogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJT25seSBpbmNsdWRlIGN1cnNlcyBoZWFkZXJzIGlmIHdlIGFyZSB1c2luZyBjdXJzZXMgYXQgYWxsLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUlUeXBlSW5mbzo6SW52b2tlIG5vdyBpcyBhYmxlIHRvIGludm9rZSBhIGZ1bmN0aW9uIGV2ZW4gd2hlbiBpdCBpcwoJcHJvdmlkZWQgd2l0aCBhIGJ5cmVmIGFyZ3VtZW50LgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJRml4ZWQgZGF0YSBjb3B5aW5nIGluIG1zdmNydF9hcmd2dG9zIChzcG90dGVkIGJ5IGJpbGxAdGFuaXdoYS5vcmcpLgoKCSogaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsLCB0b29scy93aWRsL3dpZGwuYzoKCU1vdmVkIHJwYy5oIGluY2x1c2lvbiBpbiB3aWRsLWdlbmVyYXRlZCBmaWxlIHNvIHRoYXQgdGVzdHMgY29tcGlsZS4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3gxMWZvbnQuaCwKCSAgb2JqZWN0cy9mb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgV2luZSBoZWFkZXJzIGFuZCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmgsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZXZlcmFsIGJ1Z3MgaW46CgkgIC0gcGFnZS9wYXJhZ3JhcGggcmVhZGluZyBmb3IgPj0gV2luOTUgaGVscCBmaWxlcyB3aXRob3V0IGNvbXByZXNzaW9uCgkgIC0gYml0bWFwICYgbWV0YWZpbGUgbG9hZGluZwoJICAtIGJ0cmVlIHJlYWRpbmcKCU5vdyBjYWNoaW5nIGJpdG1hcCBsb2FkaW5nIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCglTZXZlcmFsIGludGVybmFsIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgQ0ZfRU5BQkxFVEVNUExBVEVIQU5ETEUuCgktIFJldmlzZWQgdGhlIEZJWE1FIG9uIHVuc3VwcG9ydGVkIGZsYWdzIHRvIG5vdCByZXBvcnRlZCB0aGUgZmxhZ3Mgbm93CgkgIHR1cm5lZCBzdXBwb3J0ZWQuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBJc0hvc3RJblByb3h5QnlwYXNzTGlzdCBhbmQgR2V0VXJsQ2FjaGVFbnRyeUluZm9FeEEuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFjdHVhbGx5IGV4aXQgbG9vcCBvbiAnXDAnIHdoaWxlIHByaW50aW5nIGEgc3RyaW5nLgoKCSogaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglXcm90ZSBhIFdpbmUtY29tcGF0aWJsZSB3dHlwZXMuaWRsLCBhbmQgZ2VuZXJhdGVkIHd0eXBlcy5oIGZyb20gaXQuCgoyMDAyLTExLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZnB1LmMsIGRsbHMvd2luZWRvcy9pbnQxMi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTMuYywgZGxscy93aW5lZG9zL2ludDFhLmMsIGRsbHMvd2luZWRvcy9pbnQyYS5jLAoJICBkbGxzL3dpbmVkb3MvaW50NDEuYywgZGxscy93aW5lZG9zL2ludDRiLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2ZwdS5jLCBtc2Rvcy9pbnQxMi5jLAoJICBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBzaW1wbGUgaW50ZXJydXB0IGhhbmRsZXJzIHRvIHdpbmVkb3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVNpbGVuY2UgSVNoZWxsTGluazo6U2V0U2hvd0NtZCBmb3IgdGhlIGNhc2Ugd2Ugc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVVwZGF0ZSBSZXBvcnRpbmcgQnVncyBzZWN0aW9uIHRvIHJlZmxlY3QgY3VycmVudCBzdGF0ZSBvZiB3aW5lIGJ1Z3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+Cgl1Y29udGV4dC5oIGNoZWNrIHJlcXVpcmVzIHNpZ25hbC5oLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCVRoZSBhbHJlYWR5IGltcGxlbWVudGVkIGZ1bmN0aW9uIHN3c2NhbmYgd2FzIG1pc3NpbmcgYW4gZW50cnkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBsaW5rIGFnYWluc3QgLWxjdXBzIGRpcmVjdGx5LCBidXQgZHluYW1pY2FsbHkgbG9hZCBpdCBpZgoJcHJlc2VudCAoanVzdCBsaWtlIGZyZWV0eXBlIGV0Yy4pCgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRmlyc3Qgb2YgdGVzdHMgZm9yIHRoZSBSdGwqIHN0cmluZyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIFJ0bFVuaWNvZGVTdHJpbmdUb0ludGVnZXIuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBtdWx0aW1lZGlhLnNnbWwgdG8gc3RhbmRhbG9uZSB3aW5lLWRldmVsIGd1aWRlLCB3YXMgYWxyZWFkeSBpbgoJd2luZS1kb2Muc2dtbC4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHE6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0bHkgaWRlbnRpZnkgYSBSZWRIYXQgZGlzdHJpYnV0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IER1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglSZWFycmFuZ2VkIGNvZGUgdG8gbWFrZSBpdCBtb3JlIHJlYWRhYmxlLgoJQWRkZWQgaW4gUmVkaGF0IGluc3RhbGwgaW5zdHJ1Y3Rpb25zLCBhbmQgbWFkZSBub3RlIGluIE90aGVyIERpc3RybydzCglzZWN0aW9uIHRvIGNoZWNrIHRoZSBSZWRoYXQgcGFnZSBpZiB5b3UgYXJlIHVzaW5nIE1hbmRyYWtlLCBhcyBpdCBpcwoJUmVkaGF0LWJhc2VkLgoJVXBkYXRlZCBGVFAgbGlzdCBpbiB0aGUgZG9jcywgb25seSAxIGxpbmsgZGlmZmVyZW50IGZyb20gdGhlIG1vc3QgcmVjZW50CglBTk5PVU5DRSwgd293IQoJQWRkZWQgaW5zdHJ1Y3Rpb25zIG9uIHVuLXRhcnJpbmcsIGNvbXBpbGluZywgYW5kIGluc3RhbGxpbmcgd2luZSBmcm9tCglhIHRhcmJhbGwuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWw6IER1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglDb3JyZWN0ZWQgY29kZSBzcGFjaW5nIGZvciByZWFkYWJpbGl0eS4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6IER1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglDaGFuZ2UgZmlyc3QgdXNhZ2Ugb2YgdGhlIFdvcmQgTGludXggaW50byBhIGxpbmsgdG8gdGhlIGxpbnV4IEZBUSBhdAoJbGludXhkb2Mub3JnLgoJQ2hhbmdlIGZpcnN0IHVzYWdlIG9mIHRoZSB3b3JkIFgxMSBpbnRvIGEgbGluayB0byB0aGUgWDExIEZBUSBhdAoJeGZyZWU4Ni5vcmcuCglBZGQgd2luZS1kZXZlbCB0byB0aGUgcGxhY2VzIHRvIGdvIGZvciBidXJuaW5nIHF1ZXN0aW9ucy4KCVVwcGVkIHRoZSBzeXN0ZW0gcmVxJ3MgdG8gdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLgoJRml4ZWQgYSBmZXcgZ3JhbW1hdGljYWwgZXJyb3JzIGFuZCBtYWRlIHRoZSB0ZXh0IGxvb2sgYSBsaXR0bGUKCXByZXR0aWVyLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudDogRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUFkZCB0aGUgd2luZS1kZXZlbCBsaXN0IGFuZCBteXNlbGYgdG8gdGhlIGVudGl0aWVzIHRvIGJlIHJlZmVyZW5jZWQgaW4KCXRoZSBkb2NzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBGaXggYnVnIGluIG11bHRpdGV4dHVyaW5nIGludHJvZHVjZWQgZHVyaW5nIGR1bW15IHRleHR1cmUgY2hhbmdlcy4KCS0gQWRkaXRpb25hbCB0cmFjZXMuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJSW1wbGVtZW50ZWQgYm9keSBvZiBIR0xPQkFMU3RyZWFtSW1wbDo6Q2xvbmUuCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBZGRlZCBIdHRwT3BlblJlcXVlc3RXLCBIdHRwUXVlcnlJbmZvVywgSHR0cFNlbmRSZXF1ZXN0Vy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVN1cHBvcnQgZm9yIGVudW1zLCBhcnJheXMsIGVuY2Fwc3VsYXRlZCB1bmlvbnMsIHNpZ25lZC91bnNpZ25lZAoJcXVhbGlmaWVycywgVVVJRHMsIGluY2x1ZGUgZ3VhcmRzLCB0aGUgbmV3IElDT01fREVGSU5FMSBtYWNybywgYW5kCglzb21lIG90aGVyIGltcHJvdmVtZW50cy4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBwYXJ0cyB0aGF0IGhhdmUgYmVlbiBtb3ZlZCBhbHJlYWR5IGluIHRoZSBEZXZlbG9wbWVudCBHdWlkZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglBZGQgdGVzdCBmb3IgRGVsZXRlRmlsZUEgd2l0aCBlbXB0eSBwYXRocy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91cmxtb24vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvd2luaW5ldC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY190eXBlLnBtLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRlc3RzIGZvciBhIGZldyBuZXcgRExMcy4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIGluY2x1ZGUvc2hsd2FwaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNtYXRjaGVzIGJldHdlZW4gdGhlIFdpbmUgaGVhZGVycyBhbmQgdGhlIE1pY3Jvc29mdCBoZWFkZXJzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzogRml4ZWQgc3BhcmMgY2hlY2suCgoyMDAyLTExLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJTWFrZSB0aGUgaW5zdHJ1Y3Rpb25zIG9mIGhvdyB0byBpbnN0YWxsIHNnbWwgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIElUeXBlSW5mbzo6R2V0RGxsRW50cnkoKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglQcm9wZXIgbG9nZ2luZyBvZiBERFNDQVBTIC8gRERTQ0FQUzIgc3RydWN0dXJlcy4KCgkqIGRsbHMvdXNlci91c2VyMTYuYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvc3RyaW5nLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCB3aW5kb3dzL3dpbmhlbHAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgYSBXaW5lLW9ubHkgc2NoZW1lIGZvciBpbnRlcnByb2Nlc3MgV2luSGVscCBtZXNzYWdlCglwYXNzaW5nLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHNvbWUgTlVMTCBkZXJlZmVyZW5jaW5nLgoKCSogbXNkb3MvaW50MTEuYzogUm9iZXJ0ICdBZG1pcmFsJyBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglGaXhlZCBiaXQgMiB2YWx1ZSBhbmQgc2V0IGJpdCAxIHRvby4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW46CglSZW1vdmVkIHdpbmV0ZXN0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTWFya28gS3JlZW4gPG1hcmtvQGwtdC5lZT4KCUNsaXAgYm90dG9tIGNvb3JkaW5hdGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgdG9vbHMvbWFrZV9jdGVzdHMsCgkgIHRvb2xzL3J1bnRlc3Q6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSBtYWtlX2N0ZXN0cyBhbmQgcnVudGVzdCBpbiBzaGVsbC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9pbnQzMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBhbGwgaW50MzEgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCglGaXggc29tZSBvYnZpb3VzIGJ1Z3MgaW4gaW50MzEgZnVuY3Rpb25zLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIEZpeGVkIG9wdGlvbnMgLS1jcm9zcy1jYWxsLXt1bmljb2RlLWFzY2lpLHdpbjMyLXdpbjE2fS4KCS0gTWlub3IgcmVvcmdhbml6YXRpb24gb2YgdGhlIGdsb2JhbCBjaGVja3MuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCBjYXNlIGZvciBub24gc3BhcmMgLyBub24gaTM4NiBTWVNERVBTX0NhbGxPblN0YWNrLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgT2xlTG9hZFBpY3R1cmVFeC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNpbGVuY2Ugb25lIEZJWE1FKCkuIEltcGxlbWVudCBJVHlwZUluZm86OkdldERvY3VtZW50YXRpb24gZm9yCgl2YXJpYWJsZSBkZXNjcmlwdGlvbnMuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHByb3Blcmx5IHVubG9hZGluZyBtdWx0aW1lZGlhIGRyaXZlcnMgd2hlbiB3aW5tbSB1bmxvYWRzLgoKCSogd2luZG93cy9tc2dib3guYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUZpeCBjb3B5L3Bhc3RlIGJ1Zy4gTWFrZSBNZXNzYWdlQm94IHdpdGhvdXQgYW4gaWNvbiBsb29rIGJldHRlci4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgSENXIDQuMCBmaWxlcyB3aXRob3V0IHBocmFzZSBpbWFnZSBjb21wcmVzc2lvbi4KCjIwMDItMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gd2hlcmUgbmVlZGVkIGZvciBGcmVlQlNELgoJLSBBZGRlZCBwcm90ZWN0aW9uIGZvciAjaW5jbHVkZSA8c3lzL3tzb2NrZXQsdW59Lmg+LgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmVjb2RlQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIENoYW5nZWQgYWxsIG51bWVyaWMgcmVzb3VyY2VzIGluIENob29zZUZvbnQgdG8gbGFiZWxzIGZvciBiZXR0ZXIKCSAgcmVhZGFiaWxpdHkuCgktIENoYW5nZWQgYWxsIGhhbmRsaW5nIG9mIHN0YzYgKDEwOTMpIHRvIGF0YzUgKDEwOTIpIHNvIHRoYXQgd2lsbCBiZQoJICBjb21wYXRpYmxlIHdpdGggV2luZG93cyByZXNvdXJjZSBudW1iZXJzLgoJLSBBZGRlZCBjb2RlIHRvIGxvYWQgdGhlIHVzZXIncyByZXNvdXJjZXMgcmF0aGVyIHRoYW4gb3VyIG93biBpZgoJICBDRl9FTkFCTEVURU1QTEFURSBpcyBwYXNzZWQgaW4gImZsYWdzIi4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGllcnJlIEJleXNzYWMgPHBiLXdpbmVAZmFzdGVyaXguZnJtdWcub3JnPgoJQXZvaWQgRnJlZUJTRCBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIGRicmVnIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgSU1hbGxvYyBkZWZpbml0aW9uIGZyb20gb2JqX2Jhc2UuaCB0byBvYmpfbWlzYy5oLgoKCSogaW5jbHVkZS9jdXN0Y250bC5oOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglBZGRlZCBXSU5FTElCX05BTUVfQVcgZm9yIExQQ0NJTkZPLgoKCSogZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJRml4ZWQgYnVnIGluIGNvbnRleHQgcmVnaXN0ZXJzLCBhZGRlZCBIQU5ETEVSX0RFRiBhbmQgSEFORExFUl9DT05URVhUCgltYWNyb3MuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU9ubHkgZW5hYmxlIFZNODYgbW9kZSBpZiB3ZSBoYXZlIHRoZSA8c3lzL3ZtODYuaD4gaW5jbHVkZSBmaWxlLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBpbmNsdWRlL3Jhcy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJTmV3IHN0cnVjdHVyZXM6IFJBU0lQQUREUiwgUkFTREVWSU5GTywgUkFTRU5UUlkuCglOZXcgc3R1YnM6IFJhc1NldEVudHJ5UHJvcGVydGllcy4KCVJhc0VudW1EZXZpY2VzQSBlbmhhbmNlZC4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCVRoZSBvYmplY3QgcmV0dXJuZWQgYnkgSUVudW1GT1JNQVRFVEM6OkNsb25lIHNob3VsZCBoYXZlIHRoZSBzYW1lCgljdXJzb3IgcG9zaXRpb24gb2YgdGhlIHNvdXJjZSBvYmplY3QuCgoJKiBkbGxzL3JwY3J0NC9jc3R1Yi5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBdm9pZCBjcmFzaGluZyB3aGVuIHJlbGVhc2luZyBhbiBOZHJDU3RkU3R1YkJ1ZmZlciB0aGF0IGhhZCBiZWVuCglwcmV2aW91c2x5IGRpc2Nvbm5lY3RlZC4KCgkqIGZpbGVzL2ZpbGUuYzogUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCS0gU2lsZW5jZSBhbm5veWluZyAiRW1wdHkgcGF0aCBwYXNzZWQiIGVycm9yLgoJLSBTZXQgZXJyb3IgY29ycmVjdGx5IHdoZW4gYW4gZW1wdHkgcGF0aCBpcyBwYXNzZWQgdG8gRGVsZXRlRmlsZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBvbGUvb2xlMm5scy5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCVJlbW92ZSBPTEVfR2V0Rm9ybWF0QSwgcmVpbXBsZW1lbnQgR2V0RGF0ZUZvcm1hdEEgYW5kIEdldFRpbWVGb3JtYXRBCglhcyB3cmFwcGVycyBhcm91bmQgdGhlaXIgVW5pY29kZSB2ZXJzaW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyYWZ0IGltcGxlbWVudGF0aW9uIG9mIERpc3BDYWxsRnVuYy4KCjIwMDItMTEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCURpc2FibGUgYWRkcmVzcyBzcGFjZSBsaW1pdCBjaGVjayBvbiBub24taTM4NiBwbGF0Zm9ybXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgZHJhdyB0aGUgdGV4dCBvZiB0aGUgaXRlbSBiZWluZyBlZGl0ZWQuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJQWRkZWQgcXVvdGVzIHRvIGFzc2VtYmx5IGxhbmd1YWdlIG91dHB1dC4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUltcGxlbWVudGVkIFNZU0RFUFNfQ2FsbE9uU3RhY2sgZm9yIHNwYXJjcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglCdWcgZml4ZXMgcmVsYXRlZCB0byBzcGFyYyA0LWJ5dGUgYm91bmRhcnkgYWxpZ25tZW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoZSAnanVtcGluZyBzZWxlY3Rpb24nIGJ1ZyAoIzExMDgpLgoJTWlzYyBzbWFsbCBjbGVhbnVwcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVdoZW4gY2hlY2tpbmcgZm9yIHN5cy9tb3VudC5oIGFuZCBzeXMvdXNlci5oIGFsc28gaW5jbHVkZSBzeXMvdHlwZXMuaAoJaWYgYXZhaWxhYmxlLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBjb2RlIGZvciBkZXRlY3Rpb24gb2YgbWlzc2luZyB0eXBlcy4KCS0gQWRkZWQgbWlzc2luZyB0eXBlcy4KCS0gQWRkZWQgYSBmdW5jdGlvbiBmb3IgZWFjaCB0eXBlIHRlc3QgdG8gaW1wcm92ZSBjb21waWxpbmcgd2l0aCAtTzIuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFJlbW92ZSBzdHVwaWQgaW5kZW50YXRpb25zIGZyb20gdHJhY2UgbXNncy4KCS0gVXBkYXRlIHRoZSBycGMgVE9ETyBsaXN0IGEgYml0LgoJLSBBZGQgc29tZSBjb25zdGFudHMgZm9yIHdpbmFwaV9jaGVjay4KCS0gTmlsIHBvaW50ZXIgc3VwcG9ydCBmb3Igc29tZSBVVUlEIGZ1bmN0aW9ucyAoc3BvdHRlZCBieSBPbGl2aWVyCgkgIEV2YWxldCkuCgoJKiBjb250cm9scy9tZW51LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglSZW1vdmUgRVJSKCkgaWYgbWVudSBlbnRyeSBpc24ndCBvZiB0eXBlIE1GX1NUUklORyBhcyBzb21lCglhcHBsaWNhdGlvbnMgc2V0IGZsYWdzIG9mIE1UX1NFUEFSQVRPUiBhbmQgZXJyb25lb3VzIGVycm9ycyBhcmUKCXByb2R1Y2VkLiAgQWRkIGEgY291cGxlIG9mIGNvbW1lbnRzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CgktIEZpeCBSdGxUaW1lVG9UaW1lRmllbGRzIHRvIGFjdHVhbGx5IHdvcmsuCgktIFJlbW92ZSBjb21tZW50cyBhYm91dCBsZWFwIHNlY29uZHMsIHdpbmRvd3MgZG9lc24ndCB0YWtlIHRoYXQgaW50bwoJICBhY2NvdW50LgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglTdGFydCB1c2luZyB3aW5lZG9zIGhhbmRsZXJzIGZvciBhbGwgaW50ZXJydXB0cy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvbXB1dGUgU01fQ1lNQVhJTUlaRUQgcHVyZWx5IGJhc2VkIG9uIHRoZSBzY3JlZW4gaGVpZ2h0IHVudGlsIHdlIGtub3cKCWhvdyB0byB0YWtlIGludG8gYWNjb3VudCAnc3RhcnQgbWVudXMnIGNvcnJlY3RseS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L3dpbmUuc3BlYywKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLCB0b29scy93aW5lbWFrZXI6CglBZGRlZCB3aW5lYnVpbGQgLWUgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGVudHJ5IHBvaW50IGFuZCByZW1vdmVkIHRoZQoJJ2luaXQnIHNwZWMgZmlsZSBkaXJlY3RpdmUuCglXaW5lYnVpbGQgbG9uZyBvcHRpb25zIG5vdyB1c2UgYSBtb3JlIHN0YW5kYXJkIGRvdWJsZSBkYXNoIGZvcm1hdAoJKG9sZGVyIGZvcm1hdCBzdGlsbCBzdXBwb3J0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KS4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywKCSAgZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MTYuYywKCSAgZGxscy93aW5lZG9zL2ludDE3LmMsIGRsbHMvd2luZWRvcy9pbnQyMC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDI5LmMsIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvaW50NjcuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgSUNPTV9ERUZJTkUxIG1hY3JvIHRvIGRlZmluZSBhIENPTSBpbnRlcmZhY2Ugd2l0aG91dCBhIGJhc2UKCWNsYXNzLgoJVXNlIGl0IHRvIGRlZmluZSBJVW5rbm93bi4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBTdGVuY2lsIG1hcHBpbmcgbm93IHdvcmtzIChpdCBoZWxwcyB0byBhY3R1YWxseSBhbGxvY2F0ZSBhIHN0ZW5jaWwKCSAgYnVmZmVyKS4KCS0gVGV4dHVyZSBtYXBwaW5nIGNvcnJlY3RlZCBpZiBubyByZWFsIHRleHR1cmUgYm91bmQuCgktIENvZGUgbm93IGRldGVjdHMgd2hpY2ggb3BlbmdsIGV4dGVuc2lvbnMgYXJlIHByZXNlbnQgLSB0byBiZQoJICBleHRlbmRlZCBsYXRlci4KCS0gTW9yZSBkZWJ1ZyB0cmFjZXBvaW50cy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIGFzc2VydCBieSBzaW1wbGUgaWYgKyB3YXJuaW5nIG1lc3NhZ2UgZm9yIHRvbyBsb25nIHN5bWJvbHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBtb3N0IGludDMxIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoJQWRkIERQTUkzMiBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZ2FtbWEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmM6CglNYXR0aGV3IEJsb2NoIDxtYXR0aGV3QGJ5dGVtYXJrLmNvLnVrPgoJVnRhYmxlIGZpeGVzLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgUmFzVmFsaWRhdGVFbnRyeU5hbWVBIHN0dWIuCgoyMDAyLTExLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9jb21jYXQvY29tY2F0LnNwZWMsIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLAoJICBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywKCSAgZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsCgkgIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zaXN5cy9tc2lzeXMuYywgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuc3BlYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3NubXBhcGkvbWFpbi5jLCBkbGxzL3NubXBhcGkvc25tcGFwaS5zcGVjLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywKCSAgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNYWRlIHRoZSBkbGwgZW50cnkgcG9pbnQgZGVmYXVsdCB0byBEbGxNYWluIGFuZCByZW1vdmVkIG1vc3Qgb2YgdGhlCgknaW5pdCcgc3BlYyBmaWxlIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmM6IFdhcm5pbmcgZml4LgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCUhhbmRsZSBGT1JNQVRfTUVTU0FHRV9GUk9NX0hNT0RVTEUgYW5kIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIGJvdGgKCWJlaW5nIHNldCBhdCBvbmNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5tbS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS90ZXN0cy93YXZlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBzb3VuZCBmb3JtYXQgc3VwcG9ydCB3aXRoIHdhdmVPdXRHZXREZXZDYXBzIGFuZCB3YXZlT3V0T3Blbi4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJSGFjayB0byBkZXRlY3QgcmVnaXN0ZXIgZnVuY3Rpb25zIGF1dG9tYXRpY2FsbHkgc28gdGhhdCByZWxheSBkZWJ1ZwoJYWxzbyB3b3JrcyBmb3IgZnVuY3Rpb25zIHVzaW5nIHRoZSBERUZJTkVfUkVHU19FTlRSWV9QT0lOVCBtYWNyb3MuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogTWFrZSBDT01TUEVDIHBvaW50IHRvIHdjbWQuZXhlLCBub3QgY29tbWFuZC5jb20uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zeXNwYXJhbXMuYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBub29wIHJlZGVmaW5pdGlvbiBvZiBTUElfW0dFVC9TRVRdTUVOVVVOREVSTElORVMKCS0gZGVmaW5lIGFuZCBmaXhtZSBmb3IKCSAgU1BJX1tHRVQvU0VUXVtTRUxFQ1RJT05GQURFL0RST1BTSEFET1cvS0VZQk9BUkRDVUVTXQoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSHUucmMsIHByb2dyYW1zL2Nsb2NrL0h1LnJjLAoJICBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0h1LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vSHUucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfSHUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvSHUucmM6Cglab2x5IE5hZ3kgPG5hZ3l6b2xpQGRyb3Rwb3N0YS5odT4KCUFkZGVkL3VwZ3JhZGVkIEh1bmdhcmlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIGluY2x1ZGUveDExZm9udC5oLCBtZW1vcnkvdmlydHVhbC5jLCBtc2Rvcy92eGQuYywKCSAgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBXaW5lIGhlYWRlcnMgYW5kIHRoZSBNaWNyb3NvZnQgaGVhZGVycy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIGl0IHRvIHN1cHBvcnQgY2hhbmdlcyBpbiBXaW5lLgoJLSBBZGRlZCBzdXBwb3J0IGZvciBDKysgY29tcGlsYXRpb24gKG9mZiBieSBkZWZhdWx0KS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS90ZXN0cy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0ZXN0cyBmb3Igbm9ybWFsIHR5cGVzIChub3QganVzdCBzdHJ1Y3R1cmVzKS4KCgkqIGluY2x1ZGUvd2lubmxzLmg6IFJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglBZGRlZCBtaXNzaW5nIENTVFJfIGRlZmluaXRpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPU1NfUmF3T3BlbkRldmljZSBzaG91bGQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBmb3JtYXQgaXMgbm90CglzdXBwb3J0ZWQuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJQWRkIHN0dWIgZm9yIFJhc0VudW1Db25uZWN0aW9uc1cuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bW1AbHN0LmRlPgoJSGFuZGxlIGVycm9ycyBpbiBzdGQgbWFyc2hhbGxlciBiZXR0ZXIsIGRvIG5vdCBjcmFzaC4KCUFkZGVkIGFub3RoZXIgZXJyb3IgbWVzc2FnZSBpZiBzb21lIHByb2dyYW0gdHJpZXMgdG8gbWFyc2hhbAoJSU9sZU9iamVjdC4KCU9sZUNyZWF0ZSgpIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBMb2NhbCBTZXJ2ZXJzIHRvbyAoaXQgY2FuJ3QgYXMgb2YKCW5vdywganVzdCBmb3IgZGVidWdnaW5nKS4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9pbml0LmM6IE1hcmN1cyBNZWlzc25lciA8bW1AbHN0LmRlPgoJU3BlY2lmeSBleGlzdGluZyBleHRyYSBzaXplIG9mIFdJTkVQUyBEZXZtb2RlIHN0cnVjdHVyZS4KCU1ha2UgRXh0RGV2aWNlTW9kZTE2IGluIFdJTkVQUyByZXR1cm4gdGhlIGNvcnJlY3Qgc2l6ZS4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogSmFjbyBHcmVlZmYgPGphY29AcHV4ZWRvLm9yZz4KCVNraXAgdGhlIGFsbG9jYXRpb24gb2YgYSBuZXcgY29uc29sZSBvbiAid2NtZCAvYyA8Y29tbWFuZD4iIGV4ZWN1dGlvbiwKCXVzaW5nIHRoZSBjdXJyZW50IGFsbG9jYXRlZCBTVERJTiBhbmQgU1RET1VUIGhhbmRsZXMgZm9yIGNvbW1hbmQKCWlucHV0L291dHB1dC4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBkbGxzL3dpbmVkb3MvaW50NjcuYywgZGxscy93aW5lZG9zL3htcy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSWdub3JlIFZDUEkgaW5zdGFsbGF0aW9uIGNoZWNrcy4gSGFuZGxlIFhNUyBxdWVyeSBhbnkgZXh0ZW5kZWQgbWVtb3J5CglmdW5jdGlvbi4gQWRkIHN0dWJzIGZvciBnZXQvc2V0IGV4Y2VwdGlvbiBoYW5kbGVyIHZlY3Rvci4KCgkqIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2Rvc21lbS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiByZXR1cm5pbmcgZnJvbSAzMi1iaXQgZGVmYXVsdCBpbnRlcnJ1cHQgaGFuZGxlcnMsIGVmbGFncyBhcmUgbm93CglyZXR1cm5lZCBjb3JyZWN0bHkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGl0aW9uYWwgZXhwb3J0ZWQgY2FwYWJpbGl0aWVzIHRvIHBsZWFzZSBzb21lIHBpY2t5IGdhbWVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG9ubHkgY29tcGFyZSB0aGUgZmlyc3QgV09SRCBpbiB0aGUgRERTQ0FQUzIgc3RydWN0dXJlIGlmIG5vIERYNwoJLSBhZGQgc29tZSBUUkFDRXMKCgkqIGRsbHMvZGRyYXcvaGVscGVyLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBdWdtZW50IHRoZSBERFNDQVBTMiBkdW1waW5nIHJvdXRpbmUgd2l0aCBuZXcgY2Fwcy4KCjIwMDItMTAtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMjEwMzEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMTAtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglBZGRlZCBjbG9iYmVyIGxpc3RzIHRvIHRoZSBpbmxpbmUgYXNzZW1ibHkgZnVuY3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCUZpeGVkIHNvbWUgaGFuZGxlIGNvbnZlcnNpb25zIGZvciAtRFNUUklDVC4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjZGNlLmgsCgkgIGluY2x1ZGUvcnBjZGNlcC5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggc29tZSBwcm9ibGVtcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggc3R1cGlkIGNsb25lIG9mIGJyb2tlbiBtYWNybywgZm91bmQgYnkgTWFyY3VzLgoKCSogaW5jbHVkZS93aW5lL3JwY2ZjLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBSUEMgZm9ybWF0IGNoYXJhY3RlcnMgZnJvbSBNUyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZW1vdmUgcXVvdGVzIGZyb20gZmlsZW5hbWUgYmVmb3JlIGNhbGxpbmcgTG9hZExpYnJhcnkgaW4gRG9MYXVuY2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCS0gRml4ZWQgdHlwbyBpbiBTSEdldEZpbGVJbmZvQS4KCS0gUHJvcGVybHkgY29udmVydCByZXR1cm4gdmFsdWVzIGJhY2sgdG8gVW5pY29kZSBpbiBTSEdldEZpbGVJbmZvVy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgaW5jbHVkZS9ycGNkY2VwLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVJlbW92ZSAjaWZkZWYgV0lOTlQgY29uZGl0aW9uYWxzOyBqdXN0IHVzZSB0aGUgTlQgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFVzZSBhcHByb3ByaWF0ZSBwZXItcGxhdGZvcm0gTkRSX0xPQ0FMIERhdGEgUmVwcmVzZW50YXRpb24uCgktIE1pbm9yIGhvdXNla2VlcGluZyBjaGFuZ2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglFc2NhcGUgXCBpbiBwYXRoIGFuZCBhcmd1bWVudHMuCglVc2UgVU5JWCBzdHlsZSB3b3JrX2Rpciwgbm90IHdpbmRvd3MgZGlyLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9TaS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCVVwZGF0ZWQgU2xvdmVuaWFuIHJlc291cmNlcyBmb3IgKG5ldykgdmVyc2lvbiBvZiBwcm9nbWFuLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjZGNlLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gRml4IG9mZnNldCBidWcgaW4gdGhlIGNvbmZvcm1hbnQgc3RyaW5nIHVubWFyc2hhbGwgcm91dGluZS4KCS0gRml4IGRpc2NyZXBhbmN5IGJldHdlZW4gaGVhZGVycyBhbmQgaW1wbGVtZW50YXRpb24gb2YKCSAgSV9ScGNCaW5kaW5nU2V0QXN5bmMgd2hlbiBjb21waWxpbmcgdW5kZXIgV0lOTlQuCgktIEVsaW1pbmF0ZSByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuICJsaXN0ZW5fY291bnQiCgkgIGFuZCAic3RkX2xpc3RlbiIgaW4gcnBjX3NlcnZlci5oLgoJLSBDb2RlLXN0dWJzIGZvciBScGNTZXJ2ZXJVbnJlZ2lzdGVySWYsIFJwY1NlcnZlclVucmVnaXN0ZXJJZkV4LgoJLSBBdHRlbXB0IHRvIGltcGxlbWVudCBScGNNZ210U3RvcFNlcnZlckxpc3RlbmluZyAoZGVmaW5pdGVseSBub3QKCSAgaGFwcHkganVzdCB5ZXQpLgoJLSBScGNTZXJ2ZXJVbnJlZ2lzdGVySWZFeCB3YXNuJ3QgeHAtc2VwY2lmaWMgYWZ0ZXIgYWxsOyB0aGlzIGxlYWRzIG1lIHRvCgkgIHN1c3BlY3QgdGhlcmUgYXJlIG1vcmUgc3VjaCBtaXN0YWtlcyBpbiB0aGUgc3BlYy1maWxlIGNvbW1lbnRzLCBidXQgSQoJICBoYXZlbid0IGxvb2tlZCBpbnRvIGl0IG9yIGZpeGVkIHRoZW0geWV0IChjb21pbmcgc29vbikuCgktIENsZWFudXBzLCB0cmFjZS1lbmhhbmNlbWVudHMsIGV0Yy4KCgkqIHNlcnZlci9ob29rLmM6CglXb3JrIGFyb3VuZCB0byBtYWtlIHN5c3RlbS1nbG9iYWwgaG9va3MgYXQgbGVhc3QgcnVuIGluIHRoZSB0aHJlYWQKCXRoYXQgc2V0IHRoZW0uCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jOgoJU3BsaXQgb3V0IHNvbWUgbW9yZSAxNi1iaXQgY29kZS4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCV9zZWhfbG9uZ2ptcF91bndpbmQgaXMgaTM4NiBvbmx5IGZvciBub3cuCgoJKiBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIENhc3QgTkRSXyogI2RlZmluZXMgdG8gKHVuc2lnbmVkIGxvbmcpIGluc3RlYWQgb2YgKFVJTlQzMikgbGlrZSBNUwoJICBoZWFkZXJzLgoJLSBDcmVhdGUgX19SUENfTUFDX18gYW5kIF9fUlBDX1dJTjY0X18gY29uZGl0aW9uYWwgI2RlZmluZXMuCgktIENvcnJlY3QgTkRSX0xPQ0FMX0RBVEFfUkVQUkVTRU5UQVRJT04gZm9yIE1hYydzLgoJLSBOZXcgTkRSX0xPQ0FMX0lTX0JJR19FTkRJQU4gY29uZGl0aW9uYWwgI2RlZmluZS4KCS0gI2RlZmluZSBUQVJHRVRfSVNfTlQ1MF9PUl9MQVRFUi4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVJlbmFtZSB0aGUgKl8zMl9SRUFEIG1hY3JvcyB0byAqX1VJTlQzMl9SRUFEIGZvciBjbGFyaXR5LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9Fbi5yYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IEVuZ2xpc2ggcHJvZ21hbiByZXNvdXJjZXMgYnkgdHJhbnNsYXRpbmcgRnJlbmNoIGJpdHMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0ZyLnJjOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTbWFsbCBjbGVhbnVwIGZvciB0aGUgRnJlbmNoIHByb2dtYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IENhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCWxQYXJhbSB3YXMgbm90IHByb3Blcmx5IHNlbnQgaW4gQ09NQk9FWF9EcmF3SXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFwcGVuZCBjb2x1bW5zIHdpdGggbGFyZ2UgY29sdW1uIGluZGljZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL2NsaWVudC5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJTWluZ3cgcG9ydGluZyBmaXguCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglQcmV2ZW50IGNyYXNoZXMgd2hlbiBET1MgcHJvZ3JhbSB0cmllcyB0byBhY2Nlc3MgY29uc29sZSBhbmQgbm8KCVdpbmRvd3MgY29uc29sZSBpcyBhdmFpbGFibGUuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUNvbnZlcnRlZCB4MTFkcnYgdG8gLURTVFJJQ1QuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLAoJICB3aW5kb3dzL2RyaXZlci5jOgoJTW92ZWQgMTYtYml0IGRlZmluaXRpb25zIG91dCBvZiBtbWRkay5oIGludG8gbW1zeXN0ZW0xNi5oLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglGaXhlZCBhIG51bWJlciBvZiAtRFNUUklDVCB3YXJuaW5ncy4KCgkqIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIG5lc3RlZCBleGNlcHRpb25zIGhhcHBlbmluZyBpbnNpZGUgYSBjYXRjaCBibG9jay4KCgkqIHdpbmRvd3MvbXNnYm94LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNU0dCT1hfRGxnUHJvYzogYnJlYWsgb3V0IG9mIFdNX0NPTU1BTkQuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3dpbmVwcy9kcml2ZXIuYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy90aW1lci5jLAoJICB3aW5kb3dzL3dpbmhlbHAuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglGaXggc29tZSB0eXBlcyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyBhY2NvcmRpbmcgdG8gUGxhdGZvcm0gU0RLCglkZWZpbml0aW9ucy4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywKCSAgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGluY2x1ZGUvbW1kZGsuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJd2lubW0vbW1zeXN0ZW0gbm93IGNvbXBpbGVzIHdpdGggLURTVFJJQ1QuCgoJKiBpbmNsdWRlL3Zmdy5oOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNwbGl0IGJldHdlZW4gMTYgLyAzMiBiaXQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBzb21lIHRyZWV2aWV3IG5vdGlmaWNhdGlvbiBjb2RlcyBiZXR3ZWVuIEFOU0kvVW5pY29kZSBtb2RlLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZXR1cm4gY29ycmVjdCB2YWx1ZXMgZm9yIHdhdmUoSW58T3V0KUdldFBvc2l0aW9uIGV2ZW4gaWYgcGxheWluZyBub24KCVBDTSBmaWxlcy4KCgkqIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX3ByaXZhdGUuaCwKCSAgZGxscy9tc3ZpZGVvL3ZmdzE2Lmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNwbGl0IGJldHdlZW4gMTYgLyAzMiBiaXQgY29kZS4KCjIwMDItMTAtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZTogQWRkZWQgd2luZWRvczE2LnNwZWMuYy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXJzdCB2ZXJzaW9uIG9mIG1zdmNydCBzY2FuZiB0ZXN0LgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsCgkgIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy93aW4uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTb21lIG1vcmUgZml4ZXMgZm9yIGNvbXBpbGluZyB0aGUgdXNlciBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL3dpbmVkb3MxNi5zcGVjOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHdpbmVkb3MxNi5kbGwgd2hpY2ggY29udGFpbnMgMTYtYml0IHByb3RlY3RlZCBtb2RlIGludGVycnVwdCBlbnRyeQoJcG9pbnRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglGaXhlZCBTSEdGSV9TWVNJQ09OSU5ERVggZmxhZyBoYW5kbGluZy4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBpbmNsdWRlL3dpbmUvdGVzdC5oLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jdGVzdHMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJTW92ZWQgdGhlIHRlc3Qgcm91dGluZXMgZnJvbSB3dG1haW4uYyBpbnRvIHdpbmUvdGVzdC5oIHNvIHRoYXQgdGhleQoJY2FuIGJlIGNvbXBpbGVkIHNlcGFyYXRlbHkgd2l0aCBkaWZmZXJlbnQgZmxhZ3MgZm9yIGVhY2ggZGxsLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIExJVFRMRV9FTkRJQU5fMzJfUkVBRCBtYWNybyB0byBhdCBsZWFzdCBjb21waWxlLgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIERlZmluZSBTT0NLRVQgYXMgVUlOVF9QVFIgZm9yIFdpbjY0ICh0aGFua3MgdG8gUC4gU3RyaWR2YWxsKS4KCS0gTWFrZSB3aW5zb2NrIGNvbXBpbGUgd2l0aG91dCBXSU5FX05PX1NUUklDVC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUG93ZXJwYyBpbnN0cnVjdGlvbiBwb2ludGVyIGlzIElhciwgbm90IEVpcC4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJd2F2ZW1hcCBub3cgY29tcGlsZXMgd2l0aCAtRFNUUklDVC4KCjIwMDItMTAtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5laW5zdGFsbDoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBzdXBwb3J0IGZvciBwYXRjaGluZyB0aGUgZGVidWdnZXIgcGF0aCBpbiB0aGUKCXJlZ2lzdHJ5LgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJT25seSBydW4gdGhlIDMyLWJpdCBjaGVja2xpbmsgZm9yIGRsbHMgdGhhdCBjb250YWluIDE2LWJpdCBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBhZGRlZCB0cm91Ymxlc2hvb3Rpbmcgc2VjdGlvbiB0byBXaW5lIFVzZXJzIEd1aWRlICh0YWtlbiBmcm9tIFdpbmUKCSAgVHJvdWJsZXNob290aW5nIEd1aWRlKQoJLSBkb2N1bWVudGVkIFdpbmRvd3MvRE9TIHZlcnNpb24gdmFsdWVzIChncnJyICEpCgktIG1pc2MuIG90aGVyIHN0dWZmCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaW50MjAuYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vZGlmeSB3aW5lZG9zIGludGVycnVwdCBoYW5kbGVycyBzbyB0aGF0IHRoZXkgd29yayB3aXRoIFBNCglpbnRlcnJ1cHRzLgoJQWRkIGZvcndhcmRpbmcgZnVuY3Rpb25zIGZvciBoYW5kbGVycyBpbiBvdGhlciBETExzLgoJTWFrZSBET1NWTV9HZXRCdWlsdGluSGFuZGxlciB1c2Ugc3RhdGljIHRhYmxlIGluc3RlYWQgb2YKCUdldFByb2NBZGRyZXNzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggZm9yIGxpc3R2aWV3IHdoZWVsbW91c2UgbWVzc2FnZSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luZS90ZXN0Lmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQge29rLHRyYWNlfV8gbWFjcm9zIHRvIHRha2UgZXhwbGljaXQgZmlsZSBhbmQgbGluZSBudW1iZXIuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIG1vcmUgY29tbWVudHMgYW5kIGNvbW1lbnQtY2xlYW51cAoJLSBhdHRlbXB0IHRvIGltcGxlbWVudCBOZHJDb25mb3JtYW50U3RyaW5nTWVtb3J5U2l6ZQoJLSBmaXggTmRyQ29uZm9ybWFudFN0cmluZ1VuTWFyc2hhbGwKCS0gdzAwdCEKCgkqIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCAxNiBiaXQgam95c3RpY2sgZnVuY3Rpb24gdG8gbW1zeXN0ZW0uYy4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2suYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gaW50ZXJuYWwgcmVuYW1pbmcgKG5vIGxvbmdlciB1c2luZyBNTVNZU1RFTSBwcmVmaXhlcyBmb3IgV0lOTU0gb25seQoJICBmdW5jdGlvbnMpCgktIG1vdmVkIHRpbWUgMTYvMzIgY29udmVyc2lvbnMgZnVuY3Rpb25zIHRvIDE2IGJpdCBzb3VyY2UgZmlsZXMKCS0gZmluYWwgTWFrZWZpbGUgY2hhbmdlcyAoMTYgYml0IHBhcnQgY2FuIG5vdyByZWFsbHkgYmUgbm90IGNvbXBpbGVkCgkgIHdoZW4gLWRpc2FibGUtd2luMTYgaXMgcmVxdWVzdGVkKQoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBsZXQgYWxsIHRpbWUgcmVsYXRlZCBmdW5jdGlvbnMgbWFrZSB1c2Ugb2YgbG93IGxldmVsIGRyaXZlcnMgMTYgYml0CgkgIGZ1bmN0aW9ucwoJLSBzb21lIHJlbmFtaW5nIChwcmVmaXhpbmcgaW50ZXJuYWwgdGltZSBmdW5jdGlvbnMgd2l0aCBUSU1FKQoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGwgbG93IGxldmVsIGRyaXZlciBmdW5jdGlvbnMgKGludGVybmFscyBmb3Igd2F2ZSwgbWlkaSwgbWl4ZXIgYW5kCglhdXgpIGFyZSBub3cgY2xlYW5seSBzZXBhcmF0ZWQuCgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsIE1DSSBmdW5jdGlvbnMgYXJlIG5vdyBjbGVhbmx5IHNlcGFyYXRlZC4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9wbGF5c291bmQuYywKCSAgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsIGRyaXZlciBmdW5jdGlvbnMgYXJlIG5vdyBwcm9wZXJseSBzZXBhcmF0ZWQuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSByZXZpc2l0ZWQgbW1zeXN0ZW0vd2lubW0gbG9hZGluZyBtZWNoYW5pc20KCS0gYWRkZWQgV0lOTU1fQ2hlY2tNTVN5c3RlbSBmdW5jdGlvbiAoaGVscHMgMzIgYml0IGNvZGUgZGV0ZWN0CgkgIHByZXNlbmNlIG9mIG91ciBvd24gbW1zeXN0ZW0gRExMKQoJLSBzb21lIGludGVybmFsIHJlbmFtaW5nIChNVUxUSU1FRElBID0+IFdJTk1NKQoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgb25seSBzdG9yaW5nIHRocmVhZCBpZCBmb3IgbWNpIHRhc2tzICgxNiBiaXQgaHRhc2sgaXMgbm93IGdvdHRlbgoJZnJvbSBXT1cgZnVuY3Rpb25zKS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZpeGVkIFNob3dXaW5kb3dBc3luYy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL3F1ZXVlLmM6CglSZW1vdmVkIGEgY291cGxlIG9mIG5vIGxvbmdlciB1c2VkIHF1ZXVlIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGUgdXBkYXRlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglTZXBhcmF0ZSBvdXQgMTYtYml0IFNoZWxsRXhlY3V0ZSBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglGaXhlZCBmb250IG9iamVjdCBsZWFrIGluIFdNX1NFVEZPTlQgaGFuZGxlci4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJQ29ycmVjdGlvbnMgdG8gdGhlIFNwYW5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglIYWdlbiBIZWlkdWNrIDx3aWJveDFAd2lmYS51bmktbGVpcHppZy5kZT4KCUFkZGVkIFdTQVNlbmREaXNjb25uZWN0LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU2lsZW5jZSB1bm5lZWRlZCBFUlIgd2hpbGUgY29udmVydGluZyB0YXNrcy4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gZmluaXNoIG1taW8gc2VwYXJhdGlvbgoJLSBubyBsb25nZXIgc3RvcmluZyBmdW5jdGlvbiBwb2ludGVycyBpbiBnbG9iYWwgSURhdGEKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNlbmQgdGhlIHJpZ2h0IG5vdGlmaWNhdGlvbiBjb2RlIChBL1cpIGRlcGVuZGluZyBvbiB0aGUgVW5pY29kZQoJc2V0dGluZy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXJfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3V0aWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZCBuZXcgb3B0aW9ucyAtLXdpbmUgYW5kIC0td2luZXRlc3Qgc28gd29ya3NwYWNlIGFuZCBwcm9qZWN0IGZpbGVzCglmb3IgV2luZSBhbmQgV2luZXRlc3QgbWlnaHQgYmUgZ2VuZXJhdGVkIGluZGVwZW5kZW50bHkuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywKCSAgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB0ZXN0cyB0byBjb21waWxlIHdpdGggTVMgQyBvbiBXaW5kb3dzLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3VwcG9ydCBmb3IgZXhjbHVkaW5nIG9wdGlvbmFsIGZpZWxkcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNtYXRjaGVzIGJldHdlZW4gdGhlIFdpbmUgaGVhZGVycyBhbmQgdGhlIE1pY3Jvc29mdCBoZWFkZXJzLgoKCSogZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jOiBKYWNvIEdyZWVmZiA8amFjb0BwdXhlZG8ub3JnPgoJTWFkZSB0aGUgcmVwb3J0aW5nIGZvciB0aGUgKGN1cnJlbnQpIHVuc3VwcG9ydGVkIGZsYWdzIGluIEdlbkluc3RhbGwxNgoJbW9yZSB1c2VyLWZyaWVuZGx5LCBpLmUuIHJlcG9ydCBwZXIgbWlzc2luZyBmbGFnIGluc3RlYWQgb2YgRFdPUkQgdmFsdWUuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZm9jdXMuYywKCSAgZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL2hvb2sxNi5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvaG9vay5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwKCSAgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvbGlzdC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHdpbmRvd3MvaG9vay5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jOgoJUmV3cm90ZSBob29rIHN1cHBvcnQgdG8gc3RvcmUgdGhlIGhvb2sgY2hhaW4gaW4gdGhlIHNlcnZlci4KCVNwbGl0IG9mZiAxNi1iaXQgaG9vayBmdW5jdGlvbnMgYW5kIHJlLWltcGxlbWVudGVkIHRoZW0gb24gdG9wIG9mIHRoZQoJMzItYml0IG9uZXM7IHN5c3RlbS13aWRlIDE2LWJpdCBob29rcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBhdCB0aGlzCglwb2ludC4KCjIwMDItMTAtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywgd2luMzIvZXhjZXB0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmFpc2UgYW4gZXhjZXB0aW9uIGlmIGFueSBXaW5lIG9yIFdpbmVsaWIgY29kZSBkb2VzIGFuIGFzc2VydC4KCgkqIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmM6IFN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4LgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gUHVsbCB0aGUgYnVmZmVyIGZyb20gdGhlIHJwYyBtZXNzYWdlIGludG8gdGhlIG1pZGwgc3R1YiBtZXNzYWdlCgkgIGR1cmluZyBScGNTZXJ2ZXJJbml0aWFsaXplTmV3LgoJLSBBdHRlbXB0IHRvIGltcGxlbWVudCBOZHJDb25mb3JtYW50U3RyaW5nVW5tYXJzaGFsbC4KCS0gTW9yZSBhc3NlcnRpb25zLgoJLSBDb21tZW50cyBhbmQgY2xlYW51cHMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglBZGQgYSBidW5jaCBvZiBzdHVicywgYWxsIG9mIHdoaWNoIEkgcHJlc3VtZSB0byBiZSBXWFAgYWRkaXRpb25zLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3MvaW50MTYuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gTWFrZSBpbnQwOSB1cGRhdGUgdGhlIEJJT1MgZGF0YSBzZWdtZW50J3Mga2V5Ym9hcmQgc3RhdHVzIGZsYWdzCgkgIGJ5dGVzLCBpbXBsZW1lbnQgcGF1c2Uga2V5IGhhbmRsaW5nLgoJLSBMZXQgaW50MTYvMDIgcmVhZCB0aGUga2V5Ym9hcmQgc3RhdHVzIGZsYWdzIGJ5dGVzIGluc3RlYWQgb2YgY2FsbGluZwoJICBHZXRBc3luY0tleVN0YXRlKCkuCgktIE1ha2UgdGhlIGtleWJvYXJkIHN0YXRlIGJ1ZmZlciB1c2VkIGZvciBHZXQqS2V5KigpIHJlZmxlY3QKCSAgVktfTC9STUVOVSBwcm9wZXJseS4KCS0gU21hbGwgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglzZXRfbWFpbl9pdGVtOiBpZ25vcmUgbWVhbmluZ2xlc3MgYml0cyBpbiBzdGF0ZU1hc2sgZm9yIExWU19PV05FUkRBVEEKCWluc3RlYWQgb2YgZmFpbGluZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYzoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglTZXBhcmF0ZSBvdXQgMTYtYml0IHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gQ2xlYW4gdXAgYW5kIGFkZCBzb21lIGNvbW1lbnRzLgoJLSBBZGQgTkRSIERhdGEgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgoJLSBQcm9wYWdhdGUgRGF0YVJlcHJlc2VudGF0aW9uIGludG8gYW5kIG91dCBvZiBwYWNrZXQgaGVhZGVycy4KCS0gSW1wbGVtZW50IE5kclNlcnZlckluaXRpYWxpemVOZXcKCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZSBsb3cgbGV2ZWwgbXVsdGltZWRpYSBtZXNzYWdlIG1hcHBpbmcgb3V0IG9mIDMyIGJpdCBjb2RlLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZSBNQ0kgbWVzc2FnZSBtYXBwaW5nIG91dCBvZiAzMiBiaXQgY29kZS4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZSBkcml2ZXIgbWVzc2FnZSBtYXBwaW5nIG91dCBvZiAzMiBiaXQgY29kZS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUhhbmRsZSB0ZXh0dXJlIEZWRiBmb3JtYXRzIHdoZW4gbm8gdGV4dHVyZSBpcyBib3VuZC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gRGlzdGluZ3Vpc2ggYmV0d2VlbiBhY3R1YWwgcGFyYW5vaWEgYW5kIG1lYW5pbmdmdWwgYnVmZmVyIHNwYWNlLgoJLSBObyBuZWVkIHRvICN1bmRlZiBCVUZGRVJfUEFSQU5PSUEgaGVyZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIG1haW4gaXRlbSBpbiByZXBvcnQgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3Blcmx5IGZpbGwgbFBhcmFtIGluIE5NTElTVFZJRVcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggY3Jhc2gtaW5kdWNpbmcgdHlwby90aGlua28uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYXJrIGltbXV0YWJsZSBvYmplY3RzIGFzIGNvbnN0LiBGaXggaW5jb25zaXN0ZW50ICotc3R5bGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgTFZISVRURVNUSU5GTyBkZWJ1ZyBoZWxwZXIuIE1vcmUgdHJhY2luZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlc3BpdGUgd2hhdCB0aGUgZG9jcyBzYXksIHdlIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgbGlzdCBvbgoJV01fU0VUUkVEUkFXKFRSVUUpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRWxpbWluYXRlIGZsaWNrZXIgd2hlbiByZXNpemluZywgZG9jcyB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCwgYW5kIHNpbXBsaWZpY2F0aW9uIG9mIFVwZGF0ZVNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYW5kbGUgZm9jdXMgaXRlbSBwcm9wZXJseSBpbiBTZXRJdGVtQ291bnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgb25seSB0aGUgbmVjZXNzYXJ5IHNlbGVjdGlvbnMgd2hlbiBzZXR0aW5nIHRoZSBpdGVtIGNvdW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSBvZiB0aGUgU2V0SXRlbUNvdW50OiBidWdzIGdvdCBzcXVhc2hlZCwKCUxWU0lDRl97Tk9TQ1JPTEwsTk9JTlZBTElEQVRFQUxMfSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgcm91dGluZXMgZm9yIG1hbmlwdWxhdGluZyBwcm90ZWN0ZWQgbW9kZSBpbnRlcnJ1cHQgaGFuZGxlcnMgdG8KCXdpbmVkb3MgZGxsLiBBZGQgcm91dGluZSBmb3IgY2hlY2tpbmcgaWYgcHJvY2VzcyBpcyBXaW5kb3dzIHByb2Nlc3MuCglGaXggRE9TVk1fSXNEb3MzMiBpbnRlcmZhY2UuIE1vdmUgcmVhbCBtb2RlIGludGVycnVwdCBoYW5kbGVyCgltYW5pcHVsYXRpb24gcm91dGluZXMgdG8gaW50ZXJydXB0cy5jLgoKCSogd2luZG93cy91c2VyLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1ha2UgR2V0RnJlZVN5c3RlbVJlc291cmNlczE2IHByaW50IGl0cyB2YWx1ZXMgb24gVFJBQ0UuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvd25kMTYuYywgd2luZG93cy9kZWZkbGcuYywKCSAgd2luZG93cy9tZGkuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTb21lIGZpeGVzIGZvciB0aGUgY29tcGlsYXRpb24gb2YgdGhlIHVzZXIgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgY29weXJlY3RzIHN1cHBvcnQuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBDbGVhbiB1cCBhbmQgZW5oYW5jZSBzb21lIHRyYWNlcy4KCS0gU3R1YnMgZm9yIE5kckNvbnZlcnQsIE5kckNvbnZlcnQyLCBhbmQgTmRyU2VydmVySW5pdGlhbGl6ZU5ldy4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIHRoZSBTSENPTlRGX0lOQ0xVREVISURERU4gZmxhZy4KCgkqIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHpleHBhbmQxNi5jLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYzoKCU1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglNYWRlIGx6ZXhwYW5kIGNvbXBpbGUgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWNpU2VuZFN0cmluZyBkZWJ1ZyByZXBvcnRpbmcgd2hlbiBhbiBlcnJvciBvY2N1cnMgKHNwb3R0ZWQgYnkKCUVybGFuZCBMZXdpbikuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvd25kMTYuYywKCSAgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJTW92ZWQgYSBmZXcgcmVtYWluaW5nIDE2LWJpdCB3aW5kb3cgZnVuY3Rpb25zIHRvIHduZDE2LmMgYW5kIG1vdmVkIGl0Cgl0byB0aGUgQ19TUkNTMTYgc291cmNlcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSBzdGF0ZSBpbmZvcm1hdGlvbi4KCS0gQWRkIGR1bW15IHRleHR1cmVzIHNvIHRleHR1cmUgb3BlcmF0aW9ucyB3aGljaCBkb250IHJlZmVyZW5jZSB0aGUKCSAgdGV4dHVyZSBjYW4gd29yay4KCS0gU3VwcG9ydCAyZCBhbmQgM2QgdGV4dHVyZXMgcHJvcGVybHkuCgktIFJlYXBwbHkgdGhlIHRleHR1cmUgc3RhdGUgaW5mb3JtYXRpb24gYXMgdGV4dHVyZXMgZ2V0IHNldCwgYXMgb3BlbmdsCgkgIHN0b3JlcyB0aGUgc3RhdGUgYWxvbmcgd2l0aCB0aGUgYm91bmQgdGV4dHVyZSB3aGVyZWFzIGRpcmVjdHggdXNlcyB0aGUKCSAgY3VycmVudCBzdGF0ZSBpbmZvcm1hdGlvbiBkdXJpbmcgdGhlIGRyYXcgc3RhZ2UuCgktIDNyZCBhdHRlbXB0IHRvIHNvcnQgb3V0IGxpZ2h0aW5nLCBmb3IgcHJvZ3JhbXMgd2hpY2ggZG9udCBzZXQgbm9ybWFscy4KCS0gVGVtcG9yYXJpbHkgc2lsZW5jZSBzb21lIHVubmVjZXNzYXJ5IGZpeG1lcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbT4KCWxQYXJhbSB3YXMgbm90IHByb3Blcmx5IHNlbnQgaW4gVFRNX0FERFRPT0xXLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tPgoJbFBhcmFtIHdhcyBub3QgcHJvcGVybHkgc2VudCBpbiBDQkVOX0dFVERJU1BJTkZPVy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJQ29weSB0aGUgbmVjZXNzYXJ5IGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJ1Y3QgdG8gdGhlIGFzY2lpIG9uZSBpbgoJRE9TRlNfRmluZE5leHQuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJSmFjbyBHcmVlZmYgPGphY29AcHV4ZWRvLm9yZz4KCS0gSW1wbGVtZW50YXRpb24gb2YgW0ludGVybmV0fEZ0cF0qVyBmdW5jdGlvbnMgdG8gZXh0ZW5kIChhbG1vc3QpCgkgIG5vbi1leGlzdGFudCB3aWRlLWNoYXJhY3RlciBzdXBwb3J0LgoJLSBNb3ZlZCBzb21lIGZ1bmN0aW9ucyBmcm9tICJzdHViIGluIHdpbmluZXQuc3BlYyIgdG8gIkZJWE1FKCJTVFVCIikiCgkgIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9mIGNoYW5nZXMuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggZW5kaWFubmVzcyBkZXBlbmRlbmN5IGluIHRoZSAodGhlcmUgaXMgb25seSBvbmUgOikgKSBtYXJzaGFsbAoJZnVuY3Rpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tPgoJVGhlIGZ1bmN0aW9uIFNIR2V0RmlsZUluZm9BIHdhc24ndCBzdXBwb3J0aW5nIHRoZSBmbGFnCglTSEdGSV9VU0VGSUxFQVRUUklCVVRFUy4KCjIwMDItMTAtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9kZ2EyLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQXZvaWQgWDExIGVycm9yIGR1cmluZyBER0EgZGV0ZWN0aW9uLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvY29uc29sZS5jLAoJICBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUga2VybmVsIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gVXNlIG1lbXNldCBpbnN0ZWFkIG9mIFplcm9NZW1vcnksIGp1c3QgdG8gYmUgY29uc2lzdGVudCB3aXRoIE92ZSdzCgkgIGNvZGUuCgktIEFkZCBzb21lIGFzc2VydGlvbnMgd2hlcmUgYXNzdW1wdGlvbnMgYXJlIG1hZGUgKG5lZWQgd2F5IG1vcmUpLgoJLSBQbHVnIHRoZSBiaW5kaW5nIGhhbmRsZSBpbnRvIHRoZSBSUENfTUVTU0FHRSBkdXJpbmcgTmRyR2V0QnVmZmVyLgoJLSBJbXBsZW1lbnQgTmRyU2VuZFJlY2VpdmUuCgktIEF0dGVtcHQgdG8gc3VwcG9ydCBjbGllbnQgYW5kIHNlcnZlciBiaW5kaW5ncyBpbiBJX1JwY1NlbmRbUmVjZWl2ZV0uCgoJKiBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglEb24ndCB0b3VjaCB0aGUgVGhpcyBwb2ludGVyIGFmdGVyIGl0IGhhcyBiZWVuIGZyZWVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUluc3RhbGwgdGhlIHNoZWxsIGhvb2sgYXMgYSAzMi1iaXQgaG9vay4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywKCSAgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIGFkdmFwaTMyIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWFkZSB0aGUgbnRkbGwgcmVnaXN0cnkgZnVuY3Rpb25zIHVzZSBIS0VZIGluc3RlYWQgb2YgSEFORExFLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gZml4IHNvbWUgcHNlbGxpbmcKCS0gZW5oYW5jZSBzb21lIFRSQUNFcwoKCSogd2luZWRlZmF1bHQucmVnOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUFkZGVkIERpcmVjdFBsYXlMb2JieSBDTFNJRCBlbnRyaWVzLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9taXNjLmgsIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3dpbmUvcnBjZmMuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBNYWtlIGV4cGxpY2l0IHNvbWUgbWlzc2luZyBpbmNsdWRlIGRlcGVuZGVuY2llcy4KCS0gSW1wbGVtZW50IE5kckdldEJ1ZmZlciwgTmRyRnJlZUJ1ZmZlciwgTmRyQ29uZm9ybWFudFN0cmluZ0J1ZmZlclNpemUKCSAgYW5kIE5kckNvbmZvcm1hbnRTdHJpbmdNYXJzaGFsbC4KCS0gRGVmaW5lIHRoZSBSUENfRkNfQ19DU1RSSU5HIGNvbnN0YW50LgoJLSBQZXJoYXBzIEkgZG9uJ3Qgd2FudCB0aG9zZSBNSURMXypfRk9STUFUX1NUUklORyBzdHJ1Y3RzLCBhZnRlcgoJICBhbGwuIFJlbW92ZWQuCgktIEFkZCBSUEMgdG9kbyBsaXN0LgoJLSBNSURMX1NUVUJfTUVTU0FHRS51RmxhZ3MgYXJlbid0LgoJLSBDb21tZW50IG91dCB0aGUgTmRyQ2xpZW50Q2FsbDIgbW9jay11cCBzaW5jZSB0aGF0IHN0dWZmIGlzIGluIHRoZQoJICBwcm9jZXNzIG9mIGJlaW5nIGltcGxlbWVudGVkIGFuZCBtaWdodCBjYXVzZSBwcm9ibGVtcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBvbGUvb2xlMm5scy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXggT0xFX0dldEZvcm1hdFcgc28gdGhhdCBHZXREYXRlRm9ybWF0VyB3b3Jrcy4KCVJlYXJyYW5nZWQgZm9yIHNpbXBsaWNpdHkuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUZpeGVkIGJlaGF2aW91ciBvZiAieCAvcyAuLi4iLgoKCSogZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLAoJICBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIHR0eWRydiBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNpbXBsaWZ5IHRoZSBnbG9iYWwgaW50ZXJuYWwgZGF0YSBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJVW5pZnkgdGhlIGNvbnN0YW50IHVzZWQgZm9yIGVycm9yIGNvZGVzIHJlcG9ydGluZyBtYXBwaW5nIGZ1bmN0aW9ucwoJc3VjY2Vzcy9mYWlsdXJlcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgaW5jbHVkZS9kM2Q4Lmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRGVmaW5lIHRoZSBtYWluIGRpcmVjdHg4IGVudHJ5cG9pbnQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsCgkgIGRsbHMvdHdhaW4vZHNfaW1hZ2UuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTb21lIHNtYWxsIGNsZWFudXBzLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBjb3JyZWN0IEdlcm1hbiBzdHJpbmdzIHRvIHdoYXQgdGhleSdyZSByZWFsbHkgc3VwcG9zZWQgdG8gYmUKCS0gbGVzcyBjb25mdXNpb24gYWJvdXQgc3RvcmVkIHNldHRpbmdzCgoJKiBkbGxzL3dpbmVkb3MvaW50MTcuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVGlueSBpbnQxNyBwcmludGVyIGZpeC4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBDZXJ0T3BlblN0b3JlIHN0dWIuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUdldCByaWQgb2YgRklMRV9BVFRSSUJVVEVfU1lNTElOSyAoYmFzZWQgb24gYSBwYXRjaCBieSBCaWxsIE1lZGxhbmQpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGludmFsaWRhdGUgbGlzdCBvbiBXTV9TRVRSRURSQVcuCglVcGRhdGUgc2l6ZSBpbmZvIGV2ZW4gaWYgcmVkcmF3aW5nIGlzIGRpc2FibGVkLgoJVHJpdmlhbCBjbGVhbnVwcywgYW5kIHNvbWUgdHJhY2luZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIGNhbiBhdm9pZCBmbGlja2VyIG9uIGNvbHVtbiByZXNpemUgb25seSBpZiBpdCdzIGxlZnQgYWxpZ24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbHdheXMgZHJhdyB0aGUgbWFpbiBpdGVtIGluIGZ1bGwgcm93IHNlbGVjdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBpdGVyYXRvcnMgdG8gcmVuZGVyIG92ZXIgdGhlIGNvbHVtbnMsIGluIHJlcG9ydCBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgaXRlcmF0b3Itb3Zlci1yYW5nZVtzXSBjbGVhbnVwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRWxpbWluYXRlIG1vc3Qgb2YgdGhlIGZsaWNrZXIgd2hlbiByZXNpemluZyBjb2x1bW5zLgoJTW9yZSBkZWJ1ZyB0cmFjaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHN1Yml0ZW0gYmFja2dyb3VuZCBjb2xvciBpbiBmdWxsIHJvdyBzZWxlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBzaG91bGQgY2FsbGJhY2sgZm9yIGluZXhpc3RlbnQgc3ViaXRlbXMuCglEbyBub3Qgc3RvcmUgY2FsbGJhY2sgaXRlbXMgZm9yIHN1Yml0ZW1zLCBldmVuIGlmIHdlJ3JlIGFza2VkIHRvLgoJU21hbGwgY2xlYW51cC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBjcmFzaCB3aGVuIGNvbXB1dGluZyB0aGUgaXRlbSB3aWR0aCBvZiBhIHJlcG9ydCB3aXRoIG5vIGNvbHVtbnMuCglPdmVycmlkZSBjdXN0b20gZHJhdyBia2duZCBjb2xvciBmb3Igc2VsZWN0aW9uIGl0ZW1zLgoJRmlsbCBiYWNrZ3JvdW5kIGZvciBhbGwgaXRlbXMgdGhhdCBoYXZlIGEgYmtnbmQgY29sb3VyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJS2VlcCBhdXRvYXJyYW5naW5nIGl0ZW1zIHVudGlsIG9uZSBpcyBtb3ZlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFic3RyYWN0IGF1dG9hcnJhbmdpbmcgZGVjaXNpb24gdG8gYSBoZWxwZXIgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgZG8gc2NyZWVuIHdvcmsgaWYgcmVmcmVzaGluZyBpcyBkaXNhYmxlZC4KCVJlaW1wbGVtZW50IFNldFJlZHJhdyB0byBjb3BlIHdpdGggdGhlIGNoYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIHRoZSBVcGRhdGVTY3JvbGwgZnVuY3Rpb246IHNpbXBsZXIsIGZhc3Rlci4KCUFkZCBkZWJ1Z2dpbmcgaGVscGVyIGZvciBTQ1JPTExJTkZPLgoJRml4IHBvdGVudGlhbCBidWcgaW4gZGVidWdnaW5nIGhlbHBlcnMuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIG9sZWF1dDMyIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgc2hsd2FwaSBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIG1zdmNydCBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIHRvb2xzL3dpbmVjaGVjazogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBjaGVjayBmb3Igcm9vdCB1c2VyCgktIHNpbGVuY2UgZXJyb3JzCgoJKiBkbGxzL3RhcGkzMi9waG9uZS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIGNvbW1lbnRzLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGFkZCAiUHJvZHVjdElkIiBrZXkKCS0gYWRkIEhLRVlfTE9DQUxfTUFDSElORVxIQVJEV0FSRVxERVZJQ0VNQVBcU0VSSUFMQ09NTSBkZWZhdWx0IG1hcHBpbmcKCS0gcmVtZW1iZXIgb2xkIERpcmVjdFggdmVyc2lvbiBzdHJpbmdzCgoyMDAyLTEwLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJSW1wbGVtZW50ZWQgTmRyQ2xpZW50SW5pdGlhbGl6ZU5ldy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJV2hpdGVzcGFjZSBjbGVhbnVwLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeGVkIGEgdGlueSB0cmFjZSBidWcuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglDYWxsIENyZWF0ZVByb2Nlc3NBKCkgd2hlbiBleGVjdXRpbmcgbm9uLWRvcyBhcHBsaWNhdGlvbnMgZnJvbSBhIGRvcwoJYXBwbGljYXRpb24uCgoJKiBNYWtlZmlsZS5pbjogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBbHNvIHJlbW92ZSBjb25maWd1cmUubGluZW5vIHdoZW4gcGVyZm9ybWluZyBkaXN0Y2xlYW4uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Gci5yYywKCSAgZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0ZyLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0ZyLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Gci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Gci5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJyaW5nIHNvbWUgRnJlbmNoIHJlc291cmNlcyBpbiBzeW5jIHdpdGggRW5nbGlzaCBvbmVzLgoKCSogZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLAoJICBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL21zdmlkZW8vdmZ3MTYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBtc3ZpZGVvIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXZvaWQgZGl2aXNpb24gYnkgMCBieSBpbml0aWFsaXppbmcgdGhlIGl0ZW0gc2l6ZSBpbiBvbiBjcmVhdGlvbi4KCVJlbmFtZSB1cGRhdGVfaWNvbl9zaXplIHRvIHNldF9pY29uX3NpemUsIGZpeCBwYXJhbWV0ZXJzIG9yZGVyLgoJQXNzb3J0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBEUEEsIGlmIGluc2VydCBpbmRleCBpcyB0b28gbGFyZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbT4KCUZpeGVkIGR1cGxpY2F0ZWQgYXJyb3dzIGluIGhlYWRlciBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoaW5rbyB0aGF0IHNsaXBwZWQgaW4gd2l0aCB0aGUgcHJldiBwYXRjaCAocmVlbmFibGVzIHJlZnJlc2gpLgoJTWFyayBhIGZldyB0aGluZ3MgdGhhdCBuZWVkcyBsb29raW5nIGF0LgoJU21hbGwgY2xlYW51cC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBpbnZhbGlkYXRlIHRoZSB3aW5kb3cgYmVmb3JlIHRoZSBmaXJzdCBwYWludCBqb2IuCglBc3NvcnRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBJbnZhbGlkYXRlSXRlbSBpbnN0ZWFkIG9mIGV4cGxpY2l0IEludmFsaWRhdGVSZWN0LCBpdCBpcyBjbGVhbmVyLAoJYW5kIGZhc3RlciB3aGVuIHJlZHJhdyBpcyBkaXNhYmxlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRyYW5zZm9ybSB0aGUgaW52YWxpZGF0aW9uIG1hY3JvcyB0byBwcm9wZXIgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVsYXkgc29tZSBzaXplIGNvbXB1dGF0aW9ucyB1bnRpbCBhZnRlciBmaXJzdCBwYWludC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJUmVvcmdhbml6ZSB0aGUgaXRlbSBzaXplIGNhbGN1bGF0aW9uIChhIGJpdCBzaW1wbGVyLCBhbmQgZmFzdGVyKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJU2VhcmNoIHRocm91Z2ggYWxsIGl0ZW1zIHdoZW4gTElTVFZJRVdfRmluZEl0ZW1XIGlzIGNhbGxlZCB3aXRoCglMVkZJX1BBUkFNIGZsYWcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWxldGUgdGhlIGl0ZW1zIGlmIHdlIGFjdHVhbGx5IG93biB0aGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGNhbGxiYWNrIHRvIHRoZSBwYXJlbnQgZm9yIGxQYXJhbSB3aGVuIGluIExWU19PV05FUkRBVEEuCglEb2NzIHVwZGF0ZS4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21pc2NlbXUuaCwKCSAgbWVtb3J5L2luc3RyLmMsIG1zZG9zL2RwbWkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgaW50ZXJydXB0IGVtdWxhdGlvbiBjb2RlIGZyb20gSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIHRvIHdpbmVkb3MKCWRsbC4gTWFrZSBDVFhfU0VHX09GRl9UT19MSU4gd29yayB3aXRoIDMyLWJpdCBzZWdtZW50ZWQgcG9pbnRlcnMKCWNvbW1vbiBpbiBEUE1JMzIuIEZpeCB3aW5lZG9zIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgRE9TTUVNX0luaXQoVFJVRSkKCWlzIG9ubHkgY2FsbGVkIHdoZW4gRE9TIGV4ZWN1dGFibGUgaXMgc3RhcnRlZC4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBkcGxheXggZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywKCSAgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywKCSAgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBmaXggdGhlICJpbnQgZm9ybWF0LCBIQU5ETEUgYXJnIiB0eXBlIG9mIHdhcm5pbmdzIGZvciBjb21jdGwzMgoJLSBjb21waWxlIHRoZSBjb21jdGwzMiBkbGwgd2l0aCAtRFNUUklDVAoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIGNhc3RzIHRvIGNvbXBpbGUgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBjcmFzaCBpZiBjYWxsYmFjayB0ZXh0IGlzIG5vdCBmaWxsZWQgKGJlaGF2ZSBsaWtlIG5hdGl2ZSkuCglSZW5kZXIgcmVwb3J0IG1vZGUgZnJvbSB0b3AgdG8gYm90dG9tIChlYXNpZXIgb24gdGhlIGV5ZSkuCglEb2NzIHVwZGF0ZXMsIHR5cGUgZml4ZXMsIG1vcmUgdHJhY2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29sbGVjdCBhbGwgYnVncywgbWlzc2luZyBmZWF0dXJlcywgZXRjIGluIHRoZSBoZWFkZXIgZG9jLgoJTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgYXV0b2FycmFuZ2UgaWYgd2UgaW5zZXJ0L2RlbGV0ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdvcmsgU2V0SXRlbVBvc2l0aW9uLCBidW5jaCBvZiBidWdzIHNxdWFzaGVkIGluIHRoZSBwcm9jZXNzLgoJQ29tcGxldGUgaWNvbiBhbGlnbm1lbnQgcmV3cml0ZTogY2xlYW5lciwgaW5jcmVtZW50YWwsIGV0Yy4KCUNvbXBsZXRlbHkgYXZvaWQgYWxpZ25pbmcgYWxsIGljb25zIG9uIGV2ZXJ5IGluc2VydAoJICAtIGljb24gcGxhY2VtZW50IGlzIGluY3JlbWVudGFsbHkgY29tcHV0ZWQgbm93OiBpdCdzIGZhc3QuCglTbWFsbCBjbGVhbnVwcywgZG9jcyB1cGRhdGUsIGV0Yy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbmFtZSBMSVNUVklFV19JVEVNIHRvIElURU1fSU5GTyBmb3IgY29uc2lzdGVuY3kuCglSZW5hbWUgTElTVFZJRVdfU1VCSVRFTSB0byBTVUJJVEVNX0lORk8gZm9yIHNhbWUgcmVhc29uLgoJRml4IHR5cGUgaW4gY29tbWVudCBzcG90dGVkIGJ5IEJvYmJ5IEJpbmdoYW0uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUFkZGVkIHZhbGlkIGVudHJpZXMgdG8gc3BlY2lmeSBpZiBhbiBhcHAgc2hvdWxkIGJlIGxvYWRlZCBidWlsdGluIG9yCgluYXRpdmUuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46IE1vdmVkIG5ldHdvcmsuYyB0byAxNi1iaXQgc291cmNlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS9oZWFwLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLAoJICBtc2Rvcy9kb3Njb25mLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvbid0IHVzZSB3aW5lL3VuaWNvZGUuaCBpbiB0aGUgaGVhZGVyIGZpbGVzLCBpbmNsdWRlIGl0IGRpcmVjdGx5Cgl3aGVyZSBuZWVkZWQgaW5zdGVhZC4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEF2b2lkIHJlZGVmaW5pdGlvbiB3YXJuaW5nLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgbmVlZGVkIGNhc3RzIGZvciBhICJubyB3YXJuaW5ncyIgY29tcGlsZSBvZiBjb21jdGwzMi4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXggZm9yIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBET1MgbW9kZS4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZCBwcmFnbWEgdG8gZWxpbWluYXRlIE1TIEMgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgcHJvcGVyIHBhcnNpbmcgb2YgdGhlIE1ha2VmaWxlLmluJ3MgdG8gZmluZCB0aGUgdGVzdHMuCgktIEFkZGVkIHN1cHBvcnQgZm9yIG9wdGlvbmFsbHkgdXNpbmcgdGhlIE1pY3Jvc29mdCBoZWFkZXJzIGluc3RlYWQgb2YKCSAgdGhlIFdpbmUgaGVhZGVycy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vRW4ucmMsIHByb2dyYW1zL3Byb2dtYW4vRnIucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vbGljZW5zZS5jLAoJICBwcm9ncmFtcy9wcm9nbWFuL2xpY2Vuc2UuaCwgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5oLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vc3RyaW5nLmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUltcGxlbWVudGVkIE5MUyBpbiBwcm9nbWFuLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgd2luZG93cy90aW1lci5jOgoJU3RvcmUgdGhyZWFkIGlkIGluc3RlYWQgb2YgcXVldWUgaGFuZGxlIGluIHRpbWVyIHN0cnVjdHVyZS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3duZDE2LmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmM6CglJbXBsZW1lbnRlZCBHZXRXaW5kb3dUYXNrMTYgb24gdG9wIG9mIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZC4KCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgaG1lbVRhc2tRIGZpZWxkIGluIFdORCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLAoJICB0b29scy93aW5lZHVtcC9uZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNtYXRjaGVzIGJldHdlZW4gdGhlIFdpbmUgaGVhZGVycyBhbmQgdGhlIE1pY3Jvc29mdCBoZWFkZXJzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0RlLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRW4ucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUFkZGVkIGRpYWxvZyBmb3IgQVZJU2F2ZU9wdGlvbnMuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUltcGxlbWVudGVkIEFWSUJ1aWxkRmlsdGVyVyBhbmQgQVZJU2F2ZU9wdGlvbnMuCgoJKiBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgYnVnIHRoYXQgcHJldmVudGVkIElDQ29tcHJlc3NvckNob29zZSBmcm9tIHdvcmtpbmcuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglNZXNzYWdlQm94SW5kaXJlY3RXOiBjYWxsIEZpbmRSZXNvdXJjZUV4IHdpdGggYXJndW1lbnRzIGluIHRoZSByaWdodAoJb3JkZXIuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBtb2RpZmljYXRpb25zIGFuZCBpbXByb3ZlbWVudHMuCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCURvIG5vdCBicmVhayBxdW90ZWQgc3RyaW5ncyBpbiBDb250cm9sX0RvTGF1bmNoLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBDaHJpc3RpYW4gTmV1bWFpciA8Y2hyaXNAZ25vbWUtZGUub3JnPgoJQ29sbGVjdCBhbGwgYnVncywgbWlzc2luZyBmZWF0dXJlcywgZXRjIGluIHRoZSBoZWFkZXIgZG9jLgoKCSogaW5jbHVkZS9kaWdpdGFsdi5oLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCAxNiBiaXQgZGlnaXRhbCBzdHJ1Y3RzIHRvIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmguCgoyMDAyLTEwLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgd2luc3Bvb2wgZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIHRhcGkzMiBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIHBzYXBpIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywKCSAgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLAoJICBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3N0cmVhbS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIG1zYWNtIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL2F1dGguYywgZGxscy9tcHIvd25ldC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIG1wciBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsCgkgIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsCgkgIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgaW1hZ2VobHAgZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIGltbTMyIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9wdGhyZWFkLmM6CglBdm9pZCByZWZlcmVuY2UgdG8gZ2xpYmMgaW50ZXJuYWwgX19saWJjX2ZvcmsgZnVuY3Rpb24uCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW4ucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1J1LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tay5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfWmgucmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJUmVzdG9yZSBzZXR0aW5nIG9mIGNhcHRpb24gIkVycm9yIi4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUJlZ2lubmluZ3Mgb2YgU3RlbmNpbCBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJyaW5nIGhlYWRlcidzIGhlaWdodCBtb3JlIGlubGluZSB3aXRoIG5hdGl2ZSdzLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLAoJICBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBVc2UgT3ZlLXN0eWxlIG1hY3JvcyBmb3IgTmRyQ29uZm9ybWFudFN0cmluZ01hcnNoYWxsIGRlZmluaXRpb24uCgktIE1vdmUgTmRyQ29uZm9ybWFudFN0cmluZ01hcnNoYWxsIHRvIG5ldyBuZHJfbWFyc2hhbGwuYy4KCS0gU3R1YnMgZm9yIE5kckNvbmZvcm1hbnRTdHJpbmdCdWZmZXJTaXplLAoJICBOZHJDb25mb3JtYW50U3RyaW5nTWVtb3J5U2l6ZSwgYW5kIE5kckNvbmZvcm1hbnRTdHJpbmdVbm1hcnNoYWxsLgoKCSogZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBDbGllbnRDYWxsMiBzdGlsbCBkZXNlcnZlcyBhIEZJWE1FLgoJLSBDb21wbGV0ZSBiaW5kaW5ncyB3aXRoIE5VTEwgZW5kcG9pbnRzLgoJLSBJbXBsZW1lbnQgUnBjU2VydmVyVXNlUHJvdHNlcUEsIFJwY1NlcnZlclVzZVByb3RzZXFXLgoKMjAwMi0xMC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5udC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJRml4ZWQgdGhlIFdJTkVfTk9fU1RSSUNUICNpZmRlZnMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGlmIFNUUklDVCBpcwoJZGVmaW5lZCAoc3BvdHRlZCBieSBNaWNoYWVsIFN0ZWZhbml1YykuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggcmV0dXJuIHR5cGVzIG9mIE5kckNvbmZvcm1hbnRTdHJpbmdNYXJzaGFsbCwgTmRyR2V0QnVmZmVyLCBhbmQKCU5kclNlbmRSZWNlaXZlLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNkY2UuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJU3R1YnMgZm9yIFJwY1NlcnZlclVzZVByb3RzZXFBLCBScGNTZXJ2ZXJVc2VQcm90c2VxVy4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglOZXcgQVZJIHN0cmVhbWhhbmRsZXJzIGZvciBhdWRpbyBhbmQgdmlkZW8gc3RyZWFtcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9EZS5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VuLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIHVzYWdlIG9mIGhhbmRsZXIgaW5zdGVhZCBvZiB0eXBlIGluIEFWSU1ha2VDb21wcmVzc2VkU3RyZWFtLgoJLSBJbXBsZW1lbnRlZCBBVklCdWlsZEZpbHRlckEuCgktIFN0YXJ0ZWQgdG8gaW1wbGVtZW50IEFWSUJ1aWxkRmlsdGVyVy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgbWFueSBidWdzIHdoaWNoIHByZXZlbnRzIHdyaXRpbmcuCgktIEZpeGVkIHNlZ2ZhdWx0IHdoaWxlIHBhcnNpbmcgaW52YWxpZCBpbmRleC4KCS0gS2VlcCBwYXJzaW5nIG9mIGluZGV4IGV2ZW4gaWYgc3RyZWFtaGVhZGVyIHNheXMgaXQncyBlbXB0eQoJLSBGaXhlZCBidWcgaW4gQVZJRklMRV9TYXZlSW5kZXggd2hlbiBzdHJlYW0gaXMgZW1wdHkuCgktIEZpeGVkIGJ1ZyBpbiBBVklGSUxFX1dyaXRlQmxvY2ssIHdoZW4gY2h1bmsgaXMgbm90IG9mIGV2ZW4gc2l6ZS4KCgkqIGluY2x1ZGUvdmZ3Lmg6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJQWRkZWQgbWFjcm9zIGZvciBBVklGaWxlQ2xvc2UgYW5kIEFWSVN0cmVhbUNsb3NlLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEUEFzIGNhbid0IGhhdmUgbW9yZSB0aGFuIDB4ODAwMCBlbGVtZW50cyAoZml4ZWQgd2l0aCBsb3RzIG9mIGhlbHAKCWZyb20gQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20pLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglObyBuZWVkIHRvIGluY3JlbWVudCBpdGVtIHNpemUsIGl0J3MgYWxyZWFkeSBhZGp1c3RlZCBieSBEUEFfU2V0UHRyCgkoZm91bmQsIGFuZCBmaXhlZCBieSBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbT4pLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgcmVseSBvbiBIZWFwUmVBbGxvYyB0byBhbGxvY2F0ZSBhIE5VTEwgcG9pbnRlci4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSBEUEFfSW5zZXJ0UHRyIGluIHRlcm1zIG9uIERQQV9TZXRQdHIsIHNvIHRoYXQgIGl0J3Mgc2ltcGxlciwKCWNsZWFuZXIsIGFuZCBtb3JlIGNvcnJlY3QuCglJdCBub3cgZXhwYW5kcyB0aGUgYXJyYXkgdG8gYWNjb21vZGF0ZSBsYXJnZXIgdGhhbiBjdXJyZW50IHNpemUKCWluZGV4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3Qgc2VuZCB1bmluaXRpYWxpemVkIGxQYXJhbXMgb24gbm90aWZpY2F0aW9uIG1zZ3MgKGZvdW5kIGJ5IFJlaW4KCUtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+KS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHJld3JpdGUgb2YgdGhlIHJjVmlldyBpbXBsZW1lbnRhdGlvbi4KCUxvdHMgb2YgYnVncyBmaXhlZCBpbiByY1ZpZXcgY29tcHV0YXRpb24uCglBc3NvcnRlZCBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNwbGl0IHJhbmdlc19kZXN0cm95IGluIHJhbmdlc19jbGVhciwgYW5kIHJhbmdlc19kZXN0cm95LgoJUmV3cml0ZSBEZWxldGVBbGxJdGVtcywgZm9yIGNsZWFuZXIsIGZhc3RlciwgbW9yZSBjb3JyZWN0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGVkIGhlYWRlciBkb2N1bWVudGF0aW9uIHRvIHRoZSBsYXRlc3QsIGFuZCBncmVhdGVzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU9wdGltaXplIGludmFsaWRhdGlvbiBvbiBpbnNlcnQuCglTaGFyZSB0aGUgaW52YWxpZGF0aW9uIGNvZGUgYmV0d2VlbiB7RGVsZXRlLEluc2VydH1JdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSBEZWxldGVJdGVtVDogY2xlYW5lciwgYSBsb3QgZmFzdGVyLgoJTnVtYmVyIG9mIGJ1ZyB3ZXJlIGZpeGVkLgoJVGhlIG1pbmltdW0gcG9zc2libGUgaXMgcmVkcmF3bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBtb3N0IG9mIExWTV9BUlJBTkdFLgoJTWFrZSB1c2Ugb2YgaXQsIHdoZXJlIGl0IHdhcyBhcHByb3ByaWF0ZS4KCVVzZSBpbmZvUHRyLT5kd1N0eWxlIGRpcmVjdGx5LCBpbiBtb3N0IHBsYWNlcy4KCUFzc29ydGVkIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVyICh0eXBlIHdpc2UpIHJldHVybiB0eXBlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlb3JnYW5pemUgaGVhZGVyIG5vdGlmaWNhdGlvbnMuCglTdXBwb3J0IG5vdGlmaWNhdGlvbnMgdGhhdCBkb24ndCBoYXZlIGVtYmVkZGVkIHNpemUgaW5mby4KCUludmFsaWRhdGUgY29sdW1ucyBvbiBmb3JtYXQgY2hhbmdlIChpZiBuZWVkZWQpLgoJQXNzb3J0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDcmFzaCBvbiBpbnRlcm5hbCBOVUxMIHBvaW50ZXJzLCBkb24ndCB0ZXN0IGFsbCBvdmVyIHRoZSBwbGFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdoZW4gcmVtb3ZpbmcgZm9jdXMsIG5vIG5lZWQgdG8gZ28gdGhyb3VnaCBhbGwgZWxlbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggY29sb3JzIGZvciBzZWxlY3RlZCBpdGVtcyBpbiBmdWxsIHJvdyBzZWxlY3QgbW9kZS4KCUZpeCBidWcgY2F1c2VkIGJ5IHVzZSBvZiB1bmluaXRpYWxpemVkIHN0YXRlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGNvbXB1dGF0aW9uIG9mIHN1Yml0ZW0gYm94LCB3aGVuIGludmFsaWRhdGluZyBpdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFzc2VydCBvbiBpbmNvbnNpc3RlbnQgcmFuZ2UgbGlzdCBzdGF0ZXMuCglWYXJpb3VzIGNvZGUgY2xlYW51cHMsIGZldyBwb3RlbnRpYWwgYnVncyBmaXhlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBncm93IHRoZSBpdGVtIGxpc3QgdG8gYXJicml0YXJ5IGluZGV4OiBpZiByZXF1ZXN0ZWQgaW5kZXggaXMKCWxhcmdlciB0aGFuIGN1cnJlbnQgY291bnQsIGp1c3QgYXBwZW5kLgoJTWlzY2VsbGFuZW91cyBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNldENvbHVtbldpZHRoIHJld3JpdGU6IHNpbXBsZXIsIGNsZWFuZXIgY29kZS4gQnVncyBzcXVhc2hlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhbmRsZSBnZW5lcmljIGNvbHVtbiB3aWR0aCBjaGFuZ2VzLgoJRml4IGJ1ZyBpbiBTZXRDb2x1bW5UIHdoaWNoIHJlbmRlcmVkIGl0IHVudXNhYmxlLgoJQ29sdW1uIGNvZGUgY2xlYW51cC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFzc2VydCBvbiBpbnRlcm5hbCBpbnZhcmlhbnRzLCByYXRoZXIgdGhhbiBmYWlsIGdyYWNlZnVsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3JlIGRvY3MgY29tcGxpYW50IGFsaWdubWVudCBoYW5kbGluZyBmb3Igc3ViaXRlbXMuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUnVuIHJlZ2VkaXQgZXZlbiBpZiBub3QgaW5zdGFsbGVkLgoKCSogcHJvZ3JhbXMvd2luaGVscC9EYS5yYywgcHJvZ3JhbXMvd2luaGVscC9EZS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Fbi5yYywgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9GaS5yYywgcHJvZ3JhbXMvd2luaGVscC9Gci5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9IdS5yYywgcHJvZ3JhbXMvd2luaGVscC9JdC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Lby5yYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9QdC5yYywgcHJvZ3JhbXMvd2luaGVscC9TaS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Tay5yYywgcHJvZ3JhbXMvd2luaGVscC9Tdy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9WYS5yYywgcHJvZ3JhbXMvd2luaGVscC9XYS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgZXhwbGljaXQgdmFsdWVzIGZvciByZXNvdXJjZSBpZGVudGlmaWNhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggbm90aWZpY2F0aW9uIGZyb20gaGVhZGVyLCBvbiBpdGVtIGNoYW5nZWQuCglTbWFsbCBpbmRlbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJU2V0IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIFBEX1BBR0VOVU1TIGZsYWcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJSW1wbGVtZW50IHByaW50aW5nIGluIG5vdGVwYWQuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCB0aGUgYmFzaWMgc3VwcG9ydCBmb3Igdm9sdW1lIHRleHR1cmVzIC8gdm9sdW1lcyAoM2QgdGV4dHVyZXMpLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJS2VlcCBvbiBtb3ZpbmcgMTYgYml0IGNvZGUgb3V0IG9mIHdpbm1tLCBub3cgb25seSB1c2luZyBsaW5lYXIKCWFkZHJlc3NlcyBmb3IgYnVmZmVycy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBhIGZldyBtb3JlIG1hY3JvcyBmb3IgYnV0dG9uIG1hbmlwdWxhdGlvbgoJKGVuYWJsZS9kaXNhYmxlL2NoYW5naW5nIG1hY3JvKS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuaCwKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBhIGJpdCBsaW5rIGhhbmRsaW5nIChhIGZldyBtb3JlIGxpbmsgdHlwZXMgbG9hZGVkIGZyb20gZmlsZQoJYW5kIHN1cHBvcnQgZm9yIGxpbmsgdG8gYSBtYWNybykuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQWN0dWFsbHkgdXNlIGxhbmd1YWdlIGlkZW50aWZpZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUNvcnJlY3QgdGhlIGJlaGF2aW9yIGZvciBkaXNhYmxlZCB0b29sYmFyIGJ1dHRvbnMuCgoyMDAyLTEwLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGNyZWF0ZSBhIHJhbmdlIGxpc3QgZm9yIGFuIGVtcHR5IHJhbmdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3RvcmUgdGhlIGVudGlyZSBmb3JtYXQgYml0bWFwIGluIHRoZSBjb2x1bW4gaW5mby4KCVJld3JpdGUgR2V0Q29sdW1uVCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGF0LgoJUmVsYXRlZCBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbHVtbiB6ZXJvIGhhcyB0aGUgaW1hZ2UgZW5hYmxlZCBhbHdheXMsIGlycmVzcGVjdGl2ZSBvZiBmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmlmeSB7SW5zZXJ0LFNldH1Db2x1bW5UIGFzIG11Y2ggYXMgcG9zc2libGUuCglGaXggYSBidW5jaCBvZiBwcm9ibGVtcyBpbiBTZXRDb2x1bW5ULgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGZ1bmN0aW9uIGhlYWRlciBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmV0dGVyIHJlcG9ydCBtb2RlLgoJVXNlIHRoZSBuZXcgY29sdW1uIGluZm9ybWF0aW9uIHRvIHNpbXBsaWZ5LCBhbmQgc3BlZWQgdXAgdGhlIGNvZGUuCglFbmFibGUgc3VwcG9ydCBmb3IgaW1hZ2VzIGluIHN1Yml0ZW1zIChpbiBMVlNfUkVQT1JUIG1vZGUpLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvbXNnYm94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQ29udmVydCBNZXNzYWdlQm94IGZhbWlseSBmdW5jdGlvbnMgdG8gdW5pY29kZS4KCgkqIGluY2x1ZGUvcnBjcHJveHkuaDogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglQYXRjaCBjcnVmdCByZW1vdmFsLgoKCSogZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglTdXBlci1jcnVkZSBpbXBsZW1lbnRhdGlvbiBmb3IgTmRyQ2xpZW50Q2FsbDIuCglTcGVjcyBhbmQgaGVhZGVycyBmb3IgTmRyQ2xpZW50SW5pdGlhbGl6ZU5ldywKCU5kckNvbmZvcm1hbnRTdHJpbmdNYXJzaGFsbCwgTmRyR2V0QnVmZmVyLCBOZHJGcmVlQnVmZmVyLCBhbmQKCU5kclNlbmRSZWNlaXZlLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCB1cCBScGNNZ210V2FpdFNlcnZlckxpc3RlbiB0byBiZSBsZXNzIGluY29ycmVjdC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L25kcl9taXNjLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVNvbWUgTUlETCBjb25zdGFudHMgYW5kIHN0cnVjdHVyZXMgKHNob3VsZCBldmVudHVhbGx5IG1vdmUgdG8gcnBjbmRyLmgKCUkgdGhpbmspLgoJU3R1YnMgZm9yIE5kckNsaWVudEluaXRpYWxpemVOZXcsIE5kckNvbmZvcm1hbnRTdHJpbmdNYXJzaGFsbCwKCU5kckdldEJ1ZmZlciwgTmRyRnJlZUJ1ZmZlciwgYW5kIE5kclNlbmRSZWNlaXZlIChub3QgaW4gc3BlY2ZpbGUgeWV0KS4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3Rhc2suYzoKCUdldC9TZXRGYXN0UXVldWUxNiBzaG91bGQgdXNlIEhRVUVVRTE2IGhhbmRsZXMuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaDoKCVJlbW92ZWQgREVDTEFSRV9PTERfSEFORExFLiBGaXhlZCBhIGZldyByZW1haW5pbmcgd2FybmluZ3MuCgoJKiB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZGVtYW5nbGVfZGF0YXR5cGU6IGRlbGV0ZSBzdXBlcmZsb3VzIGZyZWUoKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIDNEIHN1cHBvcnQgYXQgdGhlIFVzZXIgZHJpdmVyIGxldmVsLgoKCSogZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmg6CglNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglGaXhlZCBJV2ViQnJvd3Nlcjo6TmF2aWdhdGUoKSBwYXJhbWV0ZXIgdHlwZS4KCUFkZGVkIElXZWJCcm93c2VyQXBwIGFuZCByZWxhdGVkIHR5cGVkZWZzLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvd21jL3dyaXRlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0ZWQgdGhlIGFsaWdubWVudCBvZiB1bmljb2RlIG1lc3NhZ2UgdGFibGUgc3RyaW5ncyBpbiB3bWMsIGFuZAoJc3dpdGNoZWQgdG8gdW5pY29kZSBmb3IgbWVzc2FnZSBzdHJpbmdzLCBzbyB0aGF0IEZvcm1hdE1lc3NhZ2UoKSBub3cKCXdvcmtzLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmMsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHM6CglDb252ZXJ0ZWQgdGhlIHNlcnZlciB0byAtRFNUUklDVC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJQWRkIGRvY3VtZW50YXRpb24gb24gaG93IHRvIG1vZGlmeSB3aGF0IC0tZGVidWdtc2cgK3JlbGF5IHJlcG9ydHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXaGVuIGRlbGV0aW5nIGFuIGl0ZW0sIHJlbW92ZSBzZWxlY3Rpb24sIGRvbid0IGFkZCBpdCEKCgkqIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2hvb2suYzoKCUNoYW5nZWQgdGhlIFVTRVJfSEVBUF8qIG1hY3JvcyB0byB1c2UgSEFORExFcyBpbnN0ZWFkIG9mIEhBTkRMRTE2cy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL3RleHQuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU2lsZW5jZSBzb21lIHdhcm5pbmdzIGR1ZSB0byBjYXN0cyBiZXR3ZWVuIHBvaW50ZXIgYW5kIGludGVnZXJzIG9mCglkaWZmZXJlbnQgc2l6ZS4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IHdhcm5pbmdzIHdoZW4gY29udmVydGluZyBiZXR3ZWVuIGFuIEFUT00gYW5kIGEgSFNaLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW9yZSB0cmFjZXMgdG8gaGVscCB1cyBtYWtlIHNlbnNlIG9mIHRoZSBvdXRwdXQuCglGYXN0ZXIsIGNsZWFuZXIgcmFuZ2VzX3thZGQsZGVsfS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCByYW5nZXMgaW5zZXJ0aW9uIGJ1ZyAoc3BlY2lmeSBEUEFTX1NPUlRFRCB3aGVuIHNlYXJjaGluZykuCglBZGQgYSBsb3Qgb2YgYXNzZXJ0LWVkIGNvbnNpc3RlbmN5IGNoZWNrcy4KCUFkZCBidW5jaCBvZiB0cmFjZSBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluc3BlY3Qgc3R5bGUgYml0cyBpbmRlcGVuZGVudGx5IG9uIHN0eWxlIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgU3R5bGVDaGFuZ2VkIHByb2NlZHVyZQoJICBvIHNvbWUgYnVncyBoYXZlIGJlZW4gZml4ZWQKCSAgbyBjbGVhbmVyLCBzaW1wbGVyIGNvZGUKCUZpeCBzb21lIGNvcm5lciBjYXNlLCBpY29uIHNpemUgY29tcHV0YXRpb24gYnVncy4KCUFzc29ydGVkIGRvY3MgdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUtlZXAgdHJhY2sgb2YgcGVyLWNvbHVtbiBpbmZvcm1hdGlvbiBpbnNpZGUgdGhlIGxpc3R2aWV3LgoJQ2FjaGUgaGVhZGVyIHJlY3RhbmdsZXMuCglVc2VkIHRoZSBjYWNoZWQgaW5mbyBpbnN0ZWFkIG9mIGNhbGxpbmcgdG8gdGhlIGhlYWRlciBlYWNoIHRpbWUuCglVcGRhdGUgdGhlIGxpc3R2aWV3IGFzIHdlIHRyYWNrIGNvbHVtbiB3aWR0aCBjaGFuZ2VzLgoJVW5pZnkgY29sdW1uIGhhbmRsaW5nIGJldHdlZW4ge0luc2VydCxEZWxldGV9Q29sdW1uLCBhbmQgd2lkdGgKCWNoYW5nZXMuCglTaW1wbGlmeSBSZWZyZXNoUmVwb3J0LCBieSB1c2luZyB0aGUgbmV3IGNvbHVtbiBpbmZvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IHF1ZXJ5IGl0ZW1zIHRoYXQgYXJlIGp1c3QgYmVpbmcgaW5zZXJ0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW9yZ2FuaXplIHRoaW5ncyBhIGJpdCBzbyB0aGF0IHdlIG5vIGxvbmdlciBuZWVkIHRoZSAndmFsaWQnIGZsYWcgb24KCWVhY2ggaXRlbS4KCVNtYWxsIGNvbW1lbnRzIHVwZGF0ZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgQlRyZWVzIGluIGZpbGUgaGVhZGVyIHJlYWRpbmcuCglGaXhlZCBib2d1cyBwYWxldHRlIGxlbmd0aCBjb21wdXRhdGlvbiB3aGlsZSByZWFkaW5nIGJpdG1hcC4KCUZpeGVkIHJlbmRlcmluZyB3aGlsZSBzdGFydGluZyBhIHBhZ2Ugd2l0aCBhIGJpdG1hcC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIGxvYWRpbmcgb2Ygd2F2ZSBmaWxlcy4KCS0gQ29ycmVjdGVkIEFWSUZJTEVJTkZPVyBzdHJ1Y3R1cmUgdXBkYXRlcy4KCS0gSW1wbGVtZW50ZWQgc2F2aW5nIG9mIHdhdmUgZmlsZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCB2ZXJ5IHNsb3cgbG9hZGluZyBvZiBpbmRleC4KCjIwMDItMTAtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsCgkgIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmMsIGRsbHMvbXNpc3lzL21zaXN5cy5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZWRsZy9vbGVkbGdfbWFpbi5jLAoJICBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcnBjcnQ0L2Nwc2YuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsCgkgIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsCgkgIGRsbHMvc25tcGFwaS9tYWluLmMsIGRsbHMvdHdhaW4vdHdhaW4zMl9tYWluLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLAoJICBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglGaXhlZCB3YXJuaW5ncyBjYXVzZWQgYnkgY29udmVyc2lvbiB0byAtRFNUUklDVC4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLAoJICBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tcHIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJQWRkZWQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgY2VydGFpbiBkbGxzIHdpdGggLURTVFJJQ1QuCglBZGRlZCAtRFdJTkVfTk9fU1RSSUNUIGZsYWcgdG8gZGxscyB0aGF0IGRvbid0IHN1cHBvcnQgU1RSSUNUIHlldC4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGluY2x1ZGUvd293bnQzMi5oOgoJQWRkZWQgRklYTUVzIGZvciBtZXRhZmlsZSBhbmQgZnVsbGh3bmQgaGFuZGxlIGNvbnZlcnNpb25zIHRoYXQgYXJlbid0CglzdXBwb3J0ZWQgcHJvcGVybHkgeWV0LgoKCSogZGxscy9nZGkvZ2RpMTYuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9saW5lZGRhLmM6CglNb3ZlZCBFbnVtT2JqZWN0czE2LCBMaW5lRERBMTYgYW5kIGFzc29jaWF0ZWQgZ2x1ZSBjb2RlIHRvIGdkaTE2LmMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9mb250LmM6CglTcGxpdCBvdXQgc29tZSAxNi1iaXQgR0RJIGNvZGUuCgoJKiBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS91c2VyLmgsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglTdG9yZSB0aGUgb3JpZ2luYWwgR0RJIHBhbGV0dGUgZnVuY3Rpb25zIGluIHBmblNlbGVjdFBhbGV0dGUgYW5kCglwZm5SZWFsaXplUGFsZXR0ZSBzbyB0aGF0IFVTRVIgZG9lc24ndCBoYXZlIHRvIGltcG9ydCB0aGVtLgoKCSogZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjZGNlLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gKHRyeSB0bykgaW1wbGVtZW50IFJwY01nbXRXYWl0U2VydmVyTGlzdGVuCgktIHJlbW92ZSBkdXBsaWNhdGUgUnBjU2VydmVyTGlzdGVuIGRlY2xhcmF0aW9uIGluIHJwY2RjZS5oCgktIHNvbWUgVFJBQ0VzCgoJKiBkbGxzL2dkaS9nZGkxNi5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglDb252ZXJ0ZWQgUGxheU1ldGFGaWxlUmVjb3JkIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyB0byAzMi1iaXQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBpZjE2MzIvcmVsYXkuYywKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglNZXJnZWQgd2luZV9jYWxsX3RvXzE2X2xvbmcgYW5kIHdpbmVfY2FsbF90b18xNl9zaG9ydCBpbnRvIGEgc2luZ2xlCglmdW5jdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCUFkZGVkIHdpbmVfbWVtY3B5X3VuYWxpZ25lZCBmdW5jdGlvbiB0byBhdm9pZCBnY2MgbWVtY3B5CglvcHRpbWl6YXRpb25zLgoKCSogaW5jbHVkZS92ZncuaDogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEFkZCBGSU5EXyogY29uc3RhbnRzLgoJLSBBZGQgQVZJU0FWRUNBTExCQUNLIGRlY2xhcmF0aW9uLgoJLSBBZGQgZGVjbGFyYXRpb24gZm9yIHNvbWUgQVZJIGZ1bmN0aW9ucy4KCS0gQWRkIHNvbWUgQVZJIG1hY3Jvcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0RlLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRW4ucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLAoJICBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuaCwgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywgd2luZWRlZmF1bHQucmVnOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEFkZCB3YXZlZmlsZSBoYW5kbGVyLgoJLSBBZGQgaW1wbGVtZW50YXRpb24gZm9yIElHZXRGcmFtZS4KCS0gSW1wbGVtZW50ZWQgbG9hZGluZyBhbmQgd3JpdGluZyBvZiBBVklzLgoJLSBBZGQgc29tZSBtb3JlIHN0dWJzIGZvciBzb21lIEFQSSBmdW5jdGlvbnMuCgktIEFkZCByZXNvdXJjZXMgdG8gYXZpZmlsMzIuZGxsLgoJLSBJbXBsZW1lbnRlZCBBVklTYXZlT3B0aW9uc0ZyZWUuCgktIERlY2xhcmVkIElJRF8qIGFzIGV4dGVybiBpbiBhdmlmaWwzMi5zcGVjIChhdm9pZHMgbGlua2VyIHByb2JsZW0pLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCBtZW1vcnkgbGVhayAocmVsZWFzZSBBVkkgc3RyZWFtKS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglCdWlsZENvbW1EQ0JBbmRUaW1lb3V0c0E6IE1hZGUgdGhlIGFyZ3VtZW50IHBhcnNpbmcgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBCZXR0ZXIgLmRzcCBmaWxlIGdlbmVyYXRpb24gZm9yIC5leGUgb3V0cHV0cwoJLSBBZGRlZCBnZW5lcmF0aW9uIG9mIHdpbmV0ZXN0LmRzdyBmb3IgYnVpbGRpbmcgd2luZSB0ZXN0cyB1bmRlcgoJICBXaW5kb3dzIChjdXJyZW50bHkgdmVyeSBrbHVkZ3ksIGJ1dCBpdCB3b3JrcyB0byBzb21lIGV4dGVudCkuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVtb3ZlZCB3YXJuaW5nICJTZXRXaW5kb3dUZXh0KDAsIC4uLikiIHdoZW4gb3BlbmluZyBuZXcgd2luZG93cy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+Cglwc3pUZXh0IGlzIHN0b3JlZCBhcyBVbmljb2RlLCBzbyBjYWxsIERyYXdUZXh0VygpIGluc3RlYWQgb2YKCURyYXdUZXh0QSgpLgoKMjAwMi0xMC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluc3RydW1lbnQgU2V0SXRlbVQgdG8gY2hhbmdlIG9ubHkgX29uZV8gaXRlbSBhdCBhIHRpbWUuIFRoYXQgaXMsIGlmCgl3ZSBoYXZlIHRvIGNoYW5nZSBmb2N1cywgd2UgY2FsbCBpdCByZWN1cnNpdmVseSB0byBmaXJzdCByZW1vdmUgdGhlCglmb2N1cyBmcm9tIHRoZSBpdGVtIHRoYXQgaGFzIGl0LiBUaGlzIGFsbG93cyBzaW1wbGVyLCBhbmQgbW9yZSBjb3JyZWN0CglpbnZhbGlkYXRpb24gaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmlmeSBzZXRfe293bmVyLG1haW59X2l0ZW0gZnVuY3Rpb25zLgoJRml4IHtvbGQsbmV3fXN0YXRlIGFuZCBsUGFyYW0gcmVwb3J0aW5nIGluIExWTl9JVEVNQ0hBTkd7SU5HLEVEfS4KCUZpeCBzYW5pdHkgY2hlY2sgY29uZGl0aW9ucyBmb3IgTFZTX09XTkVSREFUQS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vcmUsIGJldHRlciB0cmFjaW5nIHRvIGhlbHAgbmFpbCBkb3duIHNvbWUgY3Jhc2hlcy4KCUZpeCB0eXBvIGluIEdldEl0ZW1UIChmb3VuZCwgYW5kIGZpeGVkIGJ5IEh1dyBEYXZpZXMpLgoJRXhpdCByaWdodCBhd2F5IGZyb20gR2V0SXRlbVQgaWYgbm90aGluZyBpcyBhc2tlZCAobWFzayA9PSAwKS4KCUFzc29ydGVkIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWFsIHdpdGggc3BhcnNlbHkgcG9wdWxhdGVkIGxpc3R2aWV3cy4KCUNyYXNoIG9uIGludGVybmFsIGNvcnJ1cHRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYWJpbGl0eSB0byBjcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciBhIHJhbmdlIGxpc3QuCglGaXggbWVtb3J5IGxlYWsgd2hlbiBkZXN0cm95aW5nIHJhbmdlcy4KCUFkZCBmdW5jdGlvbiB0aGF0IHdpbGwgdG8gYSAnZGVlcCcgY2xvbmUgb2YgYSByYW5nZSBsaXN0LgoJQWRkIGZ1bmN0aW9uIHRoYXQgd2lsbCBzdWJ0cmFjdCBhIHJhbmdlIGxpc3QgZnJvbSBhbm90aGVyLgoJRG8gbm90IGNyYXNoIG9uIE5VTEwgcmFuZ2VzIChzaW1pbGFyIGluIHNwaXJpdCB0byBIRFBBcykuCglGYW5jeSBkZXNlbGVjdGlvbiByb3V0aW5lcyB1c2VzIHRoZSBhYm92ZSBpbmZyYXN0cnVjdHVyZSB0byBkZXNlbGVjdAoJdGhlIG1pbmltdW0gcG9zc2libGUuCglNb2RpZnkgU2V0R3JvdXBTZWxlY3Rpb24gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgYWxsIHRoaXMgbmV3CglpbmZyYXN0cnVjdHVyZSwgdG8gYXZvaWQgZmxpY2tlciBvbiBzZWxlY3Rpb24gZXh0ZW5zaW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIHJhbmdlcyB0byBleGNsdWRlIHRoZSB1cHBlciBib3VuZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhbmRsZSByYW5nZSB0cmFjaW5nIGluIGEgY29uc2lzdGVudCBmYXNoaW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGRhdGVkIGNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmV0dGVyIGVuY2Fwc3VsYXRpb24gb2YgdGhlIHJhbmdlcyBjb25jZXB0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCVVzZSB0aGUgV09XSGFuZGxlIGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gdGFzayBoYW5kbGUgYW5kIHRocmVhZAoJaWQuIFN0b3AgZXhwb3J0aW5nIFRBU0tfR2V0UHRyIGFuZCBUSFJFQURfSWRUb1RFQiBmcm9tIGtlcm5lbC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglCdWlsZCBhIGRlZmF1bHQgY29tbWFuZC1saW5lIGlmIHRoZSBvbmUgd2UgcmVjZWl2ZWQgaXMgYW4gZW1wdHkKCXN0cmluZy4KCgkqIHdpbmRvd3Mvd2luLmM6IEZpeGVkIHR5cG8gaW4gRW51bVRocmVhZFdpbmRvd3MuCgoJKiBkbGxzL3JwY3J0NC9jcHJveHkuYzogRml4ZWQgY29tcGlsYXRpb24gZm9yIG5vbi1pMzg2LgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3N0YXRpYy5jLAoJICBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS93aW4xNmRydi9wcnRkcnYuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbXN2aWRlby92ZncxNi5oLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLAoJICBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywKCSAgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd293bnQzMi5oLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIHdvd250MzIuaCB0byBtYWtlIGl0IHVzYWJsZSBmcm9tIGluc2lkZSBXaW5lLCBhbmQgdXNlIGl0IHRvCglhdm9pZCBzb21lIGR1cGxpY2F0aW9uIG9mIHRoZSBoYW5kbGUgY29udmVyc2lvbiBtYWNyb3MuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jYXJldC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9zY3JvbGwuYywKCSAgd2luZG93cy93aW4uYzoKCVJld3JvdGUgY2FyZXQgaW1wbGVtZW50YXRpb24gdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBzZXJ2ZXIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJQWRkZWQgcHJvZ3Jlc3MgbWVzc2FnZXMgd2hpbGUgYnVpbGRpbmcgZm9udCBtZXRyaWNzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBEb250IHNldCBsaWdodGluZyBkdXJpbmcgZHJhdyBwcmltaXRpdmUsIHJlbHkgb24gdGhlIHJlbmRlciBzdGF0ZS4KCS0gU21hbGwgZml4IGZvciBhbHBoYSB0ZXN0aW5nLgoJLSBBZGQgc3VwcG9ydCB0byBlbmFibGUvZGlzYWJsZSBjbGlwcGluZyBhcyBhIHdob2xlLgoJLSBBbGxvdyBEM0RSU19URVhUVVJFRkFDVE9SIHRvIGJlIGNoYW5nZWQgb25jZSB0ZXh0dXJlIHN0YWdlIGFyZyBzZXQKCSAgdXAuCgktIEQzRFRPUF9ESVNBQkxFIGluaXRpYWwgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudCBPcGVuR0wgb3ZlcnJpZGluZyBvZiBzdXJmYWNlJ3MgZmxpcCBtZXRob2QuCglSZW1vdmUgYnJva2VuIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglOb3RpZmljYXRpb24gY29kZSBjbGVhbnVwLCBtb3JlIHRyYWNlcywgZXRjLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkL3VwZGF0ZSB0aGUgbGlzdHZpZXcgc3RydWN0dXJlcyB0byB2ZXJzaW9uIDYuMC4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzogTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJSW5pdGlhbGl6ZSB3aW5lYXJ0cydzIHZvbHVtZSBsZXZlbCB0byBmdWxsLCBzbyBhcHBsaWNhdGlvbnMgdGhhdCBkb24ndAoJc2V0IHRoZSB2b2x1bWUgYXJlIGF1ZGlibGUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IEplcnJ5IEplbmtpbnMgPEplcnJ5X0pfSmVua2luc0Bob3RtYWlsLmNvbT4KCUFkZGVkIG1pc3NpbmcgUmVtb3ZlUHJvcCBjYWxscy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IGluaXRpYWwgZGlzcGxheSBvZiBmaWxlIGxpc3RpbmcuCgoyMDAyLTEwLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2UgbmVlZCB0byBwcm92aWRlIGZvY3VzIGluZm8gYWx3YXlzIGluIElDT04gbW9kZSAoc3BvdHRlZCBieSBIdXcKCURhdmllcykuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1cGxpY2F0ZSBzZWxlY3RlZCBpdGVtcyBsaXN0IGluIExJU1RWSUVXX1JlbW92ZUFsbFNlbGVjdGlvbnMgdG8KCXByZXZlbnQgaW5maW5pdGUgbG9vcHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1lbWJlciB0aGUgZ2xvYmFsIGNvbG9ycyBpbiBjdXN0b20gZHJhdyBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcHV0ZSBvbmx5IHRoZSBvbGQgc3RhdGUgdGhhdCB3ZSdyZSBnb25uYSBsb29rIGF0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5zdHJ1bWVudCBTZXRJdGVtVCB0byBhdm9pZCByZXBhaW50aW5nIGlmIG5vdGhpbmcgY2hhbmdlZC4KCVRlYWNoIFJlbW92ZUFsbFNlbGVjdGlvbnMgdG8gc2tpcCBhbiBpdGVtLCBzbyB3ZSBjYW4gZWxpbWluYXRlIHRoZQoJZmxpY2tlciB3aGVuIHdlIGNsaWNrIG9uIGEgc2VsZWN0ZWQgaXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBidWcgaW4gZWRpdCBsYWJlbCB3aGVuIHNlbmRpbmcgdGhlIHRleHQgdG8gdGhlIGFwcC4KCUNsZWFudXAgdGhlIGhhbmRsaW5nIG9mIG5FZGl0TGFiZWxJdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRWRpdCBsYWJlbCBjbGVhbnVwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGJ1ZyBpbiByYW5nZXNfc2hpZnQgd2hpY2ggd2FzIGNvcnJ1cHRpbmcgc2VsZWN0aW9ucy4KCUZpeCBjbGljayBub3RpZmljYXRpb24gKGZvdW5kIGFuZCBmaXhlZCBieSBBbGV4YW5kcmUgSnVsbGlhcmQpLgoJRml4IGJ1ZyBpbiBzZXR0aW5nIGl0ZW0ncyBzdGF0ZSAoc29tZSBzZWxlY3Rpb24gY2hhbmdlcyB3ZXJlIGxvc3QpLgoJU2ltcGxpZnkgc2VsZWN0aW9uIGNvZGUgc3Vic3RhbnRpYWxseS4KCUFkZCBhIGxvdCBvZiBkZWJ1ZyB0cmFjaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZCBhIHNlY3Rpb24gb24gdXNpbmcgT0RCQy4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUltcGxlbWVudGVkIF9zZWhfbG9uZ2ptcF91bndpbmQuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHRoZSBvZm4gZmxhZ3Mgc2V0dXAuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFzc29jaWF0ZSB0ZXh0dXJlIHRvIHRoZSBkZXZpY2Ugd2hlbiBHZXRIYW5kbGUgaXMgY2FsbGVkIGFuZCBwZXJmb3JtCgl0aGUgYXBwcm9wcmlhdGUgQWRkUmVmL1JlbGVhc2UuCglGaXggM18zXzIgcGl4ZWwgZm9ybWF0LgoJTW92ZSBzb21lIEVOVEVSX0dMKCkgY2FsbHMgdG8gdGhlIHJpZ2h0IHBsYWNlLgoJRml4IHNvbWUgRklYTUUvVFJBQ0UgY2FsbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGNvbW1lbnQgb24gd2hhdCBpcyBrbm93biBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29udHJvbHMKCXJlbGF0aXZlIHRvIGNvbWN0bDMyLmRsbCB2ZXJzaW9uIDYuMC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jLCBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglVc2UgdGhlIG1zdmMgd2F5IHRvIHJldHVybiBhIHN0cnVjdCwgZml4aW5nIHdpZXJkIHByb2JsZW1zLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudGVkIHByb2dyYW0gbGF1bmNoaW5nIGJ5IGRvdWJsZSBjbGljay4KCjIwMDItMTAtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggaXRlcmF0b3IgY3JlYXRpb24gZm9yIExWU19MSVNUIG1vZGUuCglEbyBub3QgdXBkYXRlIHRoZSBpbmZvUHRyLT5uSXRlbVdpZHRoIGluIHNldF9tYWluX2l0ZW0uCglCZXR0ZXIgaGFuZGxpbmcgb2YgdGV4dCBiayBjb2xvdXIgaW4gY3VzdG9tIGRyYXcuCglSZW5hbWUgR2V0SXRlbUxpc3RPcmlnaW4gdG8gR2V0SXRlbU9yaWdpbi4KCUEgYnVuY2ggb2YgY29kZSBjbGVhbnVwcywgc2ltcGxpZmljYXRpb25zLCBldGMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglObyBsb25nZXIgY29tcHV0ZSB0aGUgaWxsLWRlZmluZWQgYm91bmRzIGluIEdldEl0ZW1NZXRyaWNzLgoJRml4IGEgYnVuY2ggb2YgYnVnIGluIHN1Yml0ZW0gbWV0cmljcyBjb21wdXRhdGlvbi4KCVByb3Blcmx5IGltcGxlbWVudCBHZXRTdWJJdGVtUmVjdCBpbiB0ZXJtcyBvZiBHZXRJdGVtTWV0cmljcy4KCURvY3VtZW50YXRpb24gdXBkYXRlcywgYW5kIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUZWFjaCBHZXRJdGVtTWV0cmljcyB0byBkZWFsIHdpdGggc3ViaXRlbXMgaW4gcmVwb3J0IG1vZGUgYXMgd2VsbC4KCVVuaWZ5IERyYXd7LFN1Yn1JdGVtLCBzaW1wbGlmeSBSZWZyZXNoUmVwb3J0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGl0ZXJhdG9yIGNyZWF0aW9uIGZvciBMVlNfTElTVCBtb2RlLgoJVXNlIGFzc2VydCgpIGluc3RlYWQgb2YgaGFuZC1tYWRlIGhhY2suCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggaXRlcmF0b3JzIHRvIHByb3Blcmx5IGRlYWwgd2l0aCBMVlNfeyxTTUFMTH1JQ09OIG1vZGVzLgoJVW5pZnkgdGhlIFJlZnJlc2h7TGlzdCxJY29ufSBmdW5jdGlvbnMuCglTaW1wbGlmeSBIaXRUZXN0IHRvIG1ha2UgZnVsbCB1c2Ugb2YgdGhlIGl0ZXJhdG9ycy4KCUZpeCBzZWxlY3Rpb24gYm91bmRzIGluIEhpdFRlc3QuCglBdm9pZCBlbXB0eSBkZWZhdWx0IHRvIHNpbGVuY2Ugd2FybmluZyBpbiBnY2MgMy4yLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSXRlcmF0b3IgdXBkYXRlczoKCSAgIEFkZCB0aGUgbm90aW9uIG9mIGEgc3BlY2lhbCBpdGVtIHdoaWNoIHNpdHMgYXQgdGhlIHN0YXJ0IG9mIHRoZQoJICAgbGlzdC4KCSAgIEFkZCB0aGUgYWJpbGl0eSB0byBpdGVyYXRlIGluIGJvdGggZGlyZWN0aW9ucyB0aHJvdWdoIHRoZSBsaXN0LgoJICAgRG9jdW1lbnQgdGhlIGl0ZXJhdG9yIGludGVyZmFjZS4KCSAgIFJlbW92ZSBpdGVyYXRvcl92aXNpYmxlaXRlbXMuCgkgICBSZW5hbWUgaXRlcmF0b3JfY2xpcHBlZGl0ZW1zIHRvIGl0ZXJhdG9yX3Zpc2libGVpdGVtcyBmb3IKCSAgIGNvbnNpc3RlbmN5LgoJVXNlIHRoZSBuZXcgYmlkaXJlY3Rpb25hbGl0eSB0byBwYWludCB0aGUgaXRlbXMgaW4gZGVjcmVhc2luZyBvcmRlci4KCgkqIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgd2luZG93cy9wYWludGluZy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgZml4IHdoZW4gYWxsIGhhbmRsZXMgYXJlIGNvbnZlcnRlZCB0byBhIHZvaWQqLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRml4ZWQgcmVmZXJlbmNlIGNvdW50IGhhbmRsaW5nIHRvIHN1cHBvcnQgTG9hZExpYnJhcnkgZHVyaW5nIGEgcHJvY2VzcwoJYXR0YWNoLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIEZpeGVkIGJ1aWxkaW5nIHVudGVyIG5hdGl2ZSBXSU4zMi4KCS0gRml4ZWQgZGlzcGxheSBvZiBmaWxlbmFtZXMgaW4gdHJlZSBwYW5lLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuYywgZGxscy9tc3ZjcnQvc2NhbmYuaDoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglJbXBsZW1lbnQgWyBmb3JtYXQgc3BlY2lmaWVyLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglTaWxlbmNlIHdhcm5pbmcgaW4gaGV4X2Zyb20wKCkuCgoJKiBtc2Rvcy9kcG1pLmM6IERhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJR2V0IGRlc2NyaXB0b3Igc2hvdWxkIHJldHVybiBjb3JyZWN0IHNlZ21lbnQgbGltaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCUZpeCBvZmYtYnktb25lIGVycm9yIGluIGRldGVybWluaW5nIG51bWJlciBvZiBhcmd1bWVudHMuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY19wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgYnJva2VuIHdpbmFwaV9leHRyYWN0IG9wdGlvbnMgLS17cHNldWRvLSx9c3R1Yi1zdGF0aXN0aWNzLgoJLSBBZGRlZCBuZXcgd2luYXBpX2V4dHJhY3Qgb3B0aW9ucyAtLXtwc2V1ZG8tLH1pbXBsZW1lbnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgbWVyZ2UgaW1hZ2Ugd2l0aCBnYXJiYWdlIGJhY2tncm91bmQuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgQ2FybG9zCgk8Y2xvemFub0BhbmRhZ28uY29tPi4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglDaHJpc3RpYW4gTmV1bWFpciA8Y2hyaXNAZ25vbWUtZGUub3JnPgoJU3R1YiBmb3IgdGhlIENyeXB0UmVnaXN0ZXJPSURGdW5jdGlvbiBmdW5jdGlvbi4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb24ndCB1c2UgYSBzcGVjaWFsIGhlYWRlciBmaWxlIGZvciBtYWNyb3MgdXNlZCBpbiBnZW5lcmF0ZWQgdGVzdHMuCglIYXZlIGEgY29weSBpbiBlYWNoIGdlbmVyYXRlZCBmaWxlIGluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgZGl2aXNpb24gYnkgemVybywgd2hlbiByYW5nZSBpcyAwLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFjdHVhbGx5IGNvbXBpbGUgV2luZSBldmVuIGlmIG5vdCBpbnN0YWxsaW5nIGFzIHJvb3QuCgoyMDAyLTEwLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZWRlZmF1bHQucmVnOiBSb2RlcmljayBDb2xlbmJyYW5kZXIgPHRodW5kZXJiaXJkMmtAZ214Lm5ldD4KCVNldCBEaXJlY3RYIHZlcnNpb24gdG8gOC4xLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBmdW5jdGlvbiB0byBnZXQgc2l6ZSBvZiBpbi1tZW1vcnkgcmVzb3VyY2UgYW5kIHVzZWQgdGhpcyBmdW5jdGlvbgoJdG8gY29weSByZXNvdXJjZSB0byB3cml0YWJsZSBtZW1vcnkuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWxsb3cgd2luZWluc3RhbGwgdG8gYmUgcnVuIGZyb20gdG9vbHMvIG9yIGZyb20gdGhlIG1haW4gV2luZQoJZGlyZWN0b3J5LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBDbGlwUGxhbmVzIHdvcmsgYmV0dGVyLgoJLSBDdWxsaW5nIG5vdyBjb25maWd1cmVzIGl0c2VsZiBwcm9wZXJseS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tPgoJQXZvaWQgY3Jhc2hlcyB3aGVuIG9mblctPmxwc3RyRmlsZSBpcyBudWxsLgoKMjAwMi0xMC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9xdWV1ZS5jOgoJUmVtb3ZlIG5vIGxvbmdlciB1c2VkIFBFUlFVRVVFREFUQSBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvbWVzc2FnZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIG1vdXNlIGNhcHR1cmUgaGFuZGxpbmcgaW50byB0aGUgc2VydmVyLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCVJlaW1wbGVtZW50ZWQgR2V0TGFzdEFjdGl2ZVBvcHVwIHRvIGdldCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUKCXNlcnZlci4KCjIwMDItMTAtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5wb3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3MvZm9jdXMuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2ZvY3VzLmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmM6CglSZWltcGxlbWVudGVkIEdldC9TZXRBY3RpdmVXaW5kb3csIEdldC9TZXRGb2N1cyBhbmQKCUdldC9TZXRGb3JlZ3JvdW5kV2luZG93IGJ5IHN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIGluIHRoZQoJc2VydmVyLiBJbXBsZW1lbnRlZCBjb3JyZWN0IGludGVyLXByb2Nlc3Mgd2luZG93IGFjdGl2YXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW5hbWUgR2V0SXRlbUhlaWdodCB0byBDYWxjdWxhdGVNYXhIZWlnaHQsIGZvciBjb25zaXN0ZW5jeQoJRml4IHVzYWdlIG9mIG5JdGVtV2lkdGggdnMuIGljb25TcGFjaW5nLmN4CglNaXNjIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHRoZSBpdGVtIGJveCByYXRoZXIgdGhhbiB0aGUgYm91bmRzIHdoZW4gaW52YWxpZGF0aW5nLgoJSW1wbGVtZW50ICdiUGFydGlhbCcgaW4gRW5zdXJlVmlzaWJsZS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVNpZ25pZmljYW50bHkgaW1wcm92ZSB0aGUgbGlnaHRpbmcgY29kZS4KCgkqIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3MvcXVldWUuYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaDoKCUFkZGVkIHNlcnZlci1zaWRlIGluZnJhc3RydWN0dXJlIGZvciB0aGUgdGhyZWFkIGlucHV0IHN0cnVjdHVyZS4KCVJlaW1wbGVtZW50ZWQgQXR0YWNoVGhyZWFkSW5wdXQoKSBhbmQgYWRkZWQgR2V0R1VJVGhyZWFkSW5mbygpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pZnkgRHJhd0xhcmdlSXRlbSB3aXRoIERyYXdJdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIEdldEl0ZW1NZXRyaWNzIGluc3RlYWQgb2YgR2V0SXRlbU1lYXN1cmVzLgoJUmVtb3ZlIEdldEl0ZW1NZWFzdXJlcy4KCUFkZCBHZXRJdGVtQm94IHdoaWNoIG9ubHkgcmV0dXJucyB0aGUgYm91bmRhcnkgb2YgdGhlIGl0ZW0uCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvbmRyX29sZS5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgTmRyT2xlQWxsb2NhdGUsIE5kck9sZUZyZWUsIE5kckludGVyZmFjZVBvaW50ZXJCdWZmZXJTaXplLAoJTmRySW50ZXJmYWNlUG9pbnRlckZyZWUsIE5kckludGVyZmFjZVBvaW50ZXJNYXJzaGFsbCwKCU5kckludGVyZmFjZVBvaW50ZXJNZW1vcnlTaXplLCBOZHJJbnRlcmZhY2VQb2ludGVyVW5tYXJzaGFsbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJlIHJlYWwgdG91Z2ggb24gaW50ZXJuYWwgcHJvZ3JhbW1pbmcgZXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHN1cHBvcnQgZm9yIG93bmVyIGRyYXduIGxpc3R2aWV3cyBpbiBub24tUkVQT1JUIG1vZGUuICBXZSBuZWVkCgl0byBkbyB0aGlzIHNpbmNlIFdpbmRvd3Mgc3VwcG9ydHMgb3duZXIgZHJhdyAqb25seSogaW4gcmVwb3J0IG1vZGUsCglhbmQgaGVuY2UgYXBwcyBhcmUgbm90IHByZXBhcmVkIHRvIGhhbmRsZSBkcmF3aW5nIGluIG90aGVyIG1vZGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIEdldEl0ZW1NZXRyaWNzIGluc3RlYWQgb2YgR2V0SXRlbU1lYXN1cmVzIHdoZW4gZHJhd2luZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgdXNlIG9mIHRoZSBuZXcgR2V0SXRlbU1ldHJpY3MgaW4gSGl0VGVzdCwgdG8gYXZvaWQgY29kZQoJZHVwbGljYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTZXBhcmF0ZSBpdGVtIG1ldHJpY3MgY29tcHV0YXRpb24gZnJvbSBwb3NpdGlvbmluZwoJQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyBzdGF0ZSBpY29uIG1ldHJpY3MuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEltcHJvdmVkIGFsaWdubWVudCBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy4KCS0gUmVvcmdhbml6ZWQgYW5kIGltcHJvdmVkIGVudW0vdW5pb24vc3RydWN0IHBhcnNpbmcuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmgsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZWltcGxlbWVudCBzZXZlcmFsIFJwY1NlcnZlci4qIG1ldGhvZHMgaW4gcnBjX3NlcnZlci5jLgoJSW1wbGVtZW50IFJwY1NlcnZlcklucUJpbmRpbmdzLCBJX1JwY1NlcnZlclN0YXJ0TGlzdGVuaW5nLAoJSV9ScGNTZXJ2ZXJTdG9wTGlzdGVuaW5nLCBhbmQgSV9ScGNXaW5kb3dQcm9jLgoKCSogZGxscy9tc2ltZzMyL01ha2VmaWxlLmluOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUFkZGVkIG1pc3Npbmcga2VybmVsMzIgaW1wb3J0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTFZTX09XTkVSRFJBV0ZJWEVEIHNob3VsZCBvbmx5IHRha2UgZWZmZWN0IGluIFJFUE9SVCBtb2RlLgoKMjAwMi0xMC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9jcHNmLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBOZHJEbGxDYW5VbmxvYWROb3csIE5kckRsbEdldENsYXNzT2JqZWN0LCBOZHJEbGxSZWdpc3RlclByb3h5LAoJTmRyRGxsVW5yZWdpc3RlclByb3h5LCBDU3RkUFNGYWN0b3J5IG1ldGhvZHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwKCSAgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGluY2x1ZGUvdmZ3Lmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gTW92ZSB0aGUgQVBJIGludG8gYSBuZXcgYXBpLmMgZmlsZS4KCS0gQWRkZWQgSUNsYXNzRmFjdG9yeSBpbXBsZW1lbnRhdGlvbi4KCS0gQWRkZWQgSVBlcnNpc3RGaWxlIGltcGxlbWVudGF0aW9uIHRvIHRoZSBBVkktZmlsZSBoYW5kbGVyLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQmV0dGVyIExpdGh1YW5pYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBBdm9pZCBjYWxsaW5nIEZpbmRFeGVjdXRhYmxlMTYuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglLZWVwIG9uIG1vdmluZyAxNiBiaXQgY29kZSBvdXQgb2Ygd2lubW0uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW5pdGlhbGl6ZSB0aGUgRERDQVBTIHN0cnVjdHVyZSBvZiB0aGUgRERSQVcgb2JqZWN0IGF0IGNyZWF0aW9uLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1haW5fRGlyZWN0RHJhd1N1cmZhY2VfUXVlcnlJbnRlcmZhY2U6IGVuYWJsZSBjcmVhdGlvbiBvZiBhCglJRGlyZWN0M0RUZXh0dXJlMiBmcm9tIGEgc3VyZmFjZS4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNwcm94eS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBOZHJQcm94eUZyZWVCdWZmZXIsIE5kclByb3h5R2V0QnVmZmVyLCBOZHJQcm94eUluaXRpYWxpemUsCglOZHJQcm94eVNlbmRSZWNlaXZlLCBOZHJTdHViR2V0QnVmZmVyLCBOZHJTdHViSW5pdGlhbGl6ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBkcmF3aW5nIGJ1ZyBpbnRyb2R1Y2VkIHdpdGggdGhlIGN1c3RvbSBub3RpZmljYXRpb24KCXJlb3JnYW5pemF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2ltcGxpZnkgdGhlIHJlcG9ydCBtb2RlLCBhbmQgaXRlbSBkcmF3aW5nIGNvbnNpZGVyYWJseS4KCUZpeCBmdWxsIHJvdyBzZWxlY3QgaW4gcmVwb3J0IG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYW5kbGUgY3VzdG9tIGRyYXcgbm90aWZpY2F0aW9ucyBwcm9wZXJseS4KCVZhcmlvdXMgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc3VwZXJmbHVvdXMgYWJzdHJhY3Rpb25zIHdoaWNoIG1ha2UgdGhlIGNvZGUgaGFyZGVyIHRvCgl1bmRlcnN0YW5kLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgY3VzdG9tIGRyYXcgbm90aWZpY2F0aW9ucyBpbnRvIHRoZSBEcmF3LipJdGVtIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIGN1c3RvbSBkcmF3IGl0ZW0gbm90aWZpY2F0aW9ucyBkb3duIGludG8gRHJhd0xhcmdlSXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBzaWxseSByZWRyYXcgYnVnIGludHJvZHVjZWQgaW4gcHJldmlvdXMgcGF0Y2guCglUaWR5IHVwLCBhbmQgc2ltcGxpZnkgbGFyZ2UgaXRlbSBkcmF3aW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IFdNX1NFVFJFRFJBVyBwcm9wZXJseS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld29yayB0aGUgbW91c2UgY2xpY2sgbm90aWZpY2F0aW9ucwoJQXNzb3J0ZWQgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgKHNlbWkpc3RhbmRhcmQgSGl0VGVzdCwgcmF0aGVyIHRoZW4gb3VyIG93biBsaXR0bGUgaW52ZW50aW9uLgoJR2V0IHJpZCBvZiBHZXRJdGVtQXRQdC4KCUZpeCBIaXRUZXN0IGJ1dCBpbiBSRVBPUlQgbW9kZS4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW46IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgb3V0IDE2IGJpdCBjb2RlLgoKCSogZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgbGlzdCBvZiBpbnN0YW5jZSBkYXRhLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc29tZSBUUkFDRXMgdG8gdGhlIGRkcmF3IGNvZGUuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvY3N0dWIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudCB0aGUgQ1N0ZFN0dWJCdWZmZXIgbWV0aG9kcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbmRlZi5oLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBjaGFuZ2UgdGhlIGludGVybmFsIGZ1bmN0aW9ucyBpbiB3aW5kb3dzL2N1cnNvcmljb24uYyB0byB1c2UgMzJiaXQKCSAgaGFuZGxlcwoJLSBtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBFeHRyYWN0QXNzb2NpYXRlZEljb24xNiB0bwoJICBFeHRyYWN0QXNzb2NpYXRlZEljb25BCgktIGNvbnZlcnQgSElDT04gdG8gYSB2b2lkKgoJLSBmaXhlZCBzb21lIGhhbmRsZSBjb252ZXJzaW9ucyB0aGF0IGhhcHBlbmVkIHRvIGJlIGluIHRoZSB3YXkgd2hpbGUKCSAgZG9pbmcgdGhlIGFib3ZlCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuaCwKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUlVbmtub3duX1tRQVJdX1Byb3h5IGltcGxlbWVudGF0aW9ucywgVlRibCBjb25zdHJ1Y3Rpb24sIHRoZSBkcmVhZGVkCglPYmplY3RTdHVibGVzcywgYW5kIG90aGVyIHByb3h5LXJlbGF0ZWQgZ29vZGllcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBjb250cm9scy9jb21iby5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVByb3ZpZGUgYSBzdHViIGZvciBHZXRDb21ib0JveEluZm8uCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgc3R1YnMuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvbmRyX21pc2MuaCwKCSAgZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBpbmNsdWRlL3JwY25kci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTdHViYnkgTmRyQ2xpZW50Q2FsbDIgJiBzb21lIGhlYWRlciBjaGFuZ2VzLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgaW5jbHVkZS9zZXR1cGFwaS5oOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglQcm92aWRlIHN0dWIgZm9yIFNldHVwRGlHZXRDbGFzc0RldnNXLgoJRml4IHJldHVybiB2YWx1ZSBvZiBTZXR1cERpR2V0Q2xhc3NEZXZzQS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJU2Nyb2xsIHRoZSBsaXN0dmlldyB3aGVuIGRvaW5nIG11bHRpcGxlIHNlbGVjdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjX2RlZnMuaCwKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIElfUnBjRnJlZUJ1ZmZlciwgSV9ScGNHZXRCdWZmZXIsIElfUnBjUmVjZWl2ZSwgSV9ScGNTZW5kLAoJSV9ScGNTZW5kUmVjZWl2ZTsgYWRtaW5pc3RyaXZpYS4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJRml4ZWQgc2lnbiBleHRlbnNpb24gYnVnIGluIEVIX3Byb2xvZywgYW5kIG1hZGUgdHJ5bGV2ZWwgYW4gaW50IHRvCglhdm9pZCBzaW1pbGFyIHByb2JsZW1zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWFrZSBzdXJlIGFsbCBadyBmdW5jdGlvbnMgd2hvc2UgTnQgZXF1aXZhbGVudCBpcyBpbXBsZW1lbnRlZCBhcmUKCWltcGxlbWVudGVkIHRvby4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy93aW5tbS93aW5lbmFzL01ha2VmaWxlLmluLCBjb25maWd1cmU6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIE5BUyBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgYXJlIHNvbWV0aW1lcyBzdG9yZWQgaW4gdGhlIFgKCWRpcmVjdG9yaWVzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEFuZHJldyBNLiBKb2huc3RvbiA8am9obnN0b25hbUBsb2dpY2EuY29tPgoJTWFrZSBpbmZvIHN0cnVjdHVyZSBtZW1iZXJzIGxvd2VyIGNhc2UgYXMgZWxzZXdoZXJlLgoKCSogY29uZmlndXJlOiBVcGRhdGVkIHdpdGggYXV0b2NvbmYgMi41NC4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIHB1dHRpbmcgYWxsIDE2IGJpdCBjb2RlIGluIHNlcGFyYXRlIGZpbGVzLgoKCSogZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJUHJldmVudCBzb21lIHNlZ2ZhdWx0cyBpbiBtc3JsZTMyLgoJQWRkIHRoZSBuZWNlc3NhcnkgbGluZSB0byB0aGUgc2FtcGxlIHN5c3RlbS5pbmkgZm9yIHVzaW5nIHRoaXMgdmlkZW8KCWNvZGVjLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTmFycm93IGRvd24gdGhlIGl0ZW1zIHdlIGl0ZXJhdGUgb3ZlciBpbiBMSVNULCBhbmQgUkVQT1JUIG1vZGUuCglGaXggYSBDbGllbnQgLS0+IExpc3QgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbnMgaW4gRmluZEl0ZW0uCglGaXggYnVnIGluIEhpdEl0ZW0gKGluIExJU1QgYW5kIFJFUE9SVCBtb2RlKS4KCUF2b2lkIHRoZSBsYXN0IGJpdCBvZiBkcmF3aW5nIGluIFJFUE9SVCBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRHJhdyBfb25seV8gdGhlIGl0ZW1zIHRoYXQgYXJlIGludmFsaWRhdGVkLgoJRml4IHNlcmlvdXMgYnVnIHdoZW4gZGVsZXRpbmcgZnJvbSBhIHJhbmdlLgoJUGFzcyBpbiBhIHJhbmdlIHRvIHRoZSByYW5nZXNfe2FkZCxkZWx9IGZ1bmN0aW9ucy4KCVRpZHkgdXAgdGhlIFJlZnJlc2hJY29uIGZ1bmN0aW9uLgoJQXNzb3J0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZWltcGxlbWVudCBGaW5kSXRlbSAoY2xlYW5lciwgZmFzdGVyLCBtb3JlIGNvbXBsaWFudCB3aXRoIE1TRE4pLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSBIaXRUZXN0IHRvIG1ha2UgaXQgcHJldHR5LCBhbmQgdmVyeSBmYXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW50cm9kdWNlIHRoZSBub3Rpb24gb2YgaXRlbSBpdGVyYXRvcnMsIGFuZCB1c2UgdGhlbSB0byBjbGVhbiB1cCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2VwYXJhdGUgcmFuZ2UgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyBmcm9tIHNlbGVjdGlvbiByYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggbGFyZ2UgaXRlbSBsYWJlbCBjYWxjdWxhdGlvbiB3aGVuIG5vdCBmb2N1c2VkLgoJRmFuY3kgZm9jdXMgcmVjdGFuZ2xlIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGZvY3VzIGhhbmRsaW5nIHdoZW4gZGVsZXRpbmcgaXRlbXMsIG9yIGNoYW5naW5nIG1vZGVzLgoJQmV0dGVyIGxhYmVsIHJlY3QgY2FsY3VsYXRpb24gaW4gSUNPTiBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGxhcmdlIGl0ZW0gaGFuZGxpbmcgZm9jdXMgaW4gSUNPTiBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTm8gbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBoZWF2eSBkdXR5IHJlY3QgY29tcHV0YXRpb24gd2hlbiBpbiBPV05FUkRSQVcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGYWN0b3Igb3V0IG93bmVyIGRyYXcgY29kZSwgc28gdGhhdCBpdCB3b3JrcyBmb3IgYWxsIG1vZGVzLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRmFjdG9yIG91dCB0aGUgY29tcHV0YXRpb24gb2YgaXRlbSBwb3NpdGlvbiwgc28gaXQgY2FuIGJlIHVzZWQKCWluZGVwZW5kZW50bHkgb2YgdGhlIHJlY3RhbmdsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmlmeSBMSVNUVklFV19VcGRhdGVMYXJnZUl0ZW1MYWJlbFJlY3QsIGFuZCBHZXRJdGVtTWVhc3VyZXMuCglPcHRpbWl6ZSBHZXRJdGVtTWVhc3VyZXMgdG8gdGhlIG1heC4KCUNlbnRyYWxpemUgdGhlIERyYXdUZXh0J3MgRFRfKiBmbGFncy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdldCByaWQgb2YgJ2dvdG8ncyBpbiBHZXRJdGVtTWVhc3VyZXMuCglNb3ZlIExJU1RWSUVXX1VwZGF0ZUxhcmdlSXRlbUxhYmVsUmVjdCBjbG9zZSB0byB3aGVyZSBpdCdzIHVzZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYnJhaW5vIGluIGNhbGN1bGF0aW9uIG9mIExWU19MSVNUIG9yaWdpbi4KCUludmFsaWRhdGUgdGhlIGVudGlyZSB3aW5kb3cgd2hlbiB3ZSBhcmUgaW52YWxpZGF0aW5nIHRoZSBsaXN0LgoKMjAwMi0xMC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWRpLmM6IEFuZHJldyBNLiBKb2huc3RvbiA8am9obnN0b25hbUBsb2dpY2EuY29tPgoJUmVtb3ZlZCByZWZlcmVuY2UgdG8gU0NST0xMX1NldE5DU2JTdGF0ZS4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVRyeSBDcmVhdGVQcm9jZXNzIGV2ZW4gaWYgU0hHZXRGaWxlSW5mbyBmYWlscyBzbyB0aGF0IHdlIGNhbiBsYXVuY2gKCVVuaXggYmluYXJpZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIG11bHRpLXNvdW5kIGNhcmQgcmVsYXRlZCBidWdzLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS9xdWV1ZS5oOgoJQXZvaWQgaW5maW5pdGUgU2VuZE1lc3NhZ2UgcmVjdXJzaW9uLCBqdXN0IGxpa2UgV2luZG93cyBkb2VzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG9uJ3QgbGlzdCByZWdpc3RlciBmdW5jdGlvbnMgaW4gdGhlIC5kZWYgZmlsZS4KCgkqIGRsbHMvbnRkbGwvc3RyaW5nLmM6CglGaXhlZCBidWZmZXIgc2l6ZSBpbiBfdWx0b2EgKHNwb3R0ZWQgYnkgSm9lcmcgTWF5ZXIpLgoKCSogbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZmlsZXMvZGlyZWN0b3J5LmM6CglUcmFuc21pdCB0aGUgV2luZG93cyBQQVRIIHRvIGNoaWxkIHByb2Nlc3NlcyB1c2luZyB0aGUgV0lORVBBVEgKCXZhcmlhYmxlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZpeGVkIGZpbGUgZGVzY3JpcHRvciBjb3JydXB0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCUplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJU3BlbGxpbmcgY29ycmVjdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvZ2VuZXJpYy5wcGQ6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBBMyBwYXBlciBzaXplLgoKCSogZGxscy91c2VyL3duZDE2LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXggaGFuZGxlIGNvbnZlcnNpb25zLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB0ZXN0IHRvIG5vdCBmYWlsIGJlaGluZCBmaXJld2FsbHMgb3Igd2l0aG91dCBhbiBpbnRlcm5ldAoJY29ubmVjdGlvbi4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlb3JnYW5pemVkIHRoZSBjb2RlIGZvciBiZXR0ZXIgc3VwcG9ydCBvZiBkYXRhIHN0cnVjdHVyZXMgcGFyc2luZy4KCjIwMDItMTAtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMjEwMDcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMTAtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXhlZCBidWcgdGhhdCBjYXVzZWQgaXRlbSB0ZXh0cyB0byBiZSBlbXB0eS4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9EZS5yYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfRW4ucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX0ZyLnJjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9wcml2YXRlLmgsIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmMsCgkgIGNvbmZpZ3VyZToKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJSW1wbGVtZW50ZWQgdGhlIE1TIFJMRSB2aWRlbyBjb2RlYy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtZW1vcnkvaW5zdHIuYywgbXNkb3MvZG9zbWVtLmMsCgkgIG1zZG9zL2ludGVycnVwdHMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzdXBwb3J0IGZvciBpbnRlcnJ1cHRzIGluIDMyLWJpdCBjb2RlLgoJUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgY29kZSBmcm9tIDE2LWJpdCBpbnRlcnJ1cHQgZW11bGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IG5hc3R5IGJ1ZyBnZW5lcmF0ZWQgYnkgVUlOVCB2cy4gSU5UIChyZXN1bHRlZCBpbiBib2d1cwoJY29tcGFyaXNvbnMpLgoJRml4IExWSVJfU0VMRUNUQk9VTkRTIGNvbXB1dGF0aW9uLCBmb3IgUkVQT1JUIG1vZGUuCglGaXggZGVwZW5kZW5jeSBnZW5lcmF0aW9uIGluIEdldEl0ZW1NZWFzdXJlcy4KCUZpeCByZWN0YW5nbGUgY29tcHV0YXRpb24gZm9yIFJFUE9SVCBtb2RlIChjb3JuZXIgY2FzZSBwcm9ibGVtcykuCglCZXR0ZXIgZGVidWcgbWVzc2FnZXMuCglBc3NvcnRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFuZWQgdXAgdGhlIHJlY3RhbmdsZSBoYW5kbGluZywgYW5kIGZpeGVkIG51bWVyb3VzIGJ1Z3MgaW4KCXJlY3RhbmdsZSBjYWxjdWxhdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQWRkZWQgc2tlbGV0b24gZm9yIHJwY3J0NCB1bml0IHRlc3Qgd2l0aCBzb21lIFVVSUQgdGVzdHMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJSW1wbGVtZW50ZWQgVXVpZENvbXBhcmUuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIFJwY0JpbmRpbmdJbnFPYmplY3QsIFJwY0JpbmRpbmdTZXRPYmplY3QsCglScGNCaW5kaW5nVmVjdG9yRnJlZSwgUnBjQmluZGluZ1RvU3RyaW5nQmluZGluZ0EvVywKCVJwY0JpbmRpbmdGcm9tU3RyaW5nQmluZGluZ0EvVywgUnBjU3RyaW5nQmluZGluZ1BhcnNlQS9XLAoJSV9ScGNCaW5kaW5nU2V0QXN5bmMsIFJwY1N0cmluZ0JpbmRpbmdDb21wb3NlQS9XLCBScGNCaW5kaW5nRnJlZSwKCVJQQ1N0cmluZ0ZyZWVXLCBVVUlESGFzaCwgVXVpZFRvU3RyaW5nVywgYW5kIGFzc29jaWF0ZWQganVuay4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci90aW1lci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglQcm92aWRlIHN0dWJzIGZvciBDcmVhdGUvRGVsZXRlVGltZXJRdWV1ZVRpbWVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglGaXggaW5hY2N1cmF0ZSBsaXN0dmlldyBzY3JvbGxpbmcgd2l0aCBQZ1VwL0Rvd24gYW5kIEhvbWUvRW5kIGtleXMuCgoJKiBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsCgkgIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHVicyBmb3IgY2FwQ3JlYXRlQ2FwdHVyZVdpbmRvd0EvVyB0byBnZXQgZnJlZVZDUiBzdGFydGVkCgl3aXRob3V0IGNyYXNoLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHNpbGx5IGJ1ZyBpbiBTZXRJdGVtUG9zaXRpb24gKHdlIHNob3VsZCBzZXQgaXQsIG5vdCBjcmVhdGUgYSBuZXcKCW9uZSkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWludGFpbiB0aGUgaXRlbSBwb3NpdGlvbiBpbiB7LFNNQUxMfUlDT04gbW9kZSBzZXBhcmF0YWx5IGZyb20gdGhlCglpdGVtLCBzbyB0aGF0IHdlIGhhdmUgaXQgZXZlbiBpbiBMVlNfT1dORVJEQVRBLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCB0aGUgU2V0SXRlbVBvc2l0aW9uIGludGVyZmFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgQ09VTlRfT0YgbWFjcm8uCglJbmRlbnRhdGlvbiBmaXhlcywgYW5kIG1pbm9yIGNsZWFudXBzIHRvIG5vdGlmeV9kaXNwaW5mb1QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXhlcyBidWcgd2hpY2ggcmVuZGVyZWQgdmlydHVhbCBsaXN0Ym94ZXMgYWx3YXlzIGVtcHR5LgoJU21hcnRlciBmb2N1cyByZWN0YW5nbGUgZHJhd2luZy4KCUZpeCBmb2N1cyBoYW5kbGluZyB3aGVuIHdlIGFkZC9kZWxldGUgYSBjb2x1bW4uCglGaXggc2lsbHkgYnVnIGluIEdldFN1Ykl0ZW1SZWN0LgoJRWxpbWlhbnRlIGZsaWNrZXIgaW4gUmVwb3J0IG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwLCBhbmQgY2xhcmlmeSB0aGUgaGFuZGxpbmcgb2YgdGhlIHZhcmlvdXMgcmVjdGFuZ2xlcy4KCUZpeCBoYW5kbGluZyBvZiBsYXJnZSBpdGVtcyBpbiBJQ09OIG1vZGUuCglGaXggY2FsY3VsYXRpb24gb2YgTFZJUl9TRUxFQ1RCT1VORFMuCglWYXJpb3VzIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCBvZiB0aGUgd2F5IHdlIG1haW50YWluL2xvb2t1cCB0aGUgaXRlbSBjb3VudC4KCVJlbmFtZSBHZXRJdGVtV2lkdGggdG8gQ2FsY3VsYXRlTWF4V2lkdGguCglNaXNjIHRyaXZpYWwgY2hhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBmb2N1cyBoYW5kbGluZyBmb3Igb3duZXIgZHJhdyBsaXN0dmlld3MuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggcG90ZW50aWFsIGJ1ZyBpbiBSZW1vdmVBbGxJdGVtcy4KCUZpeCByZXBvcnQtbW9kZSBPTldFUkRSQVcgYnVnICh3aXRoIGhlbHAgZnJvbSBBbGV4YW5kcmUgSnVsbGlhcmQpLgoJRml4IG11bHRpcGxlIHNlbGVjdGlvbiBidWcgKGluIHJlcG9ydCBhbmQgbGlzdCBtb2RlKS4KCVJlbW92ZSBjb2RlIGR1cGxpY2F0aW9uIGZvciByZW1vdmluZyBzZWxlY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5ubHMuaCwgbWVtb3J5L2NvZGVwYWdlLmM6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCUltcGxlbWVudCBHZXRVc2VyRGVmYXVsdFVJTGFuZ3VhZ2UgYW5kIEdldFN5c3RlbURlZmF1bHRVSUxhbmd1YWdlLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVmFyaW91cyBmaXhlcywgdHlwb3MgY29ycmVjdGVkIGFuZCBjbGFyaWZ5aW5nIHRyYWNlIHBvaW50cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHNldmVyYWwgc291bmRjYXJkLgoJUmVtb3ZlIG5vbiBmdWxsIGR1cGxleCBtb2RlIGluIGNvZGUuCglPU1MgQ29tbWVyY2lhbCBkb2Vzbid0IHByb3Blcmx5IGhhbmRsZSBTTkRDVExfRFNQX1JFU0VULCBzbyBjbG9zZS9vcGVuCglkZXZpY2UgdG8gd29ya2Fyb3VuZCB0aGlzIGlzc3VlIChieSBPdmUgS2FhdmVuKS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiByZWN1cnNpb24gaW4gc3ViIGRldmljZSBvcGVuaW5nLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUxldCB3YXZlKE91dHxJbilPcGVuIGNhbGwgdGhlIHdhdmUgbWFwcGVyIHdoZW4gdGhlIGxvdyBsZXZlbCBkZXZpY2UKCWRvZXNuJ3QgaGFuZGxlIHRoZSB3YXZlIGRlc2NyaXB0b3IuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2VndiB3aGVuIGluY29ycmVjdCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHdoZXJlIGdpdmVuLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIElNQSBBQ00gZGVmaW5pdGlvbi4KCgkqIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNaW5vciBjb21tZW50cyBjbGVhbnVwcy4KCVJlbW92ZWQgdW5uZWVkZWQgRklYTUVzLgoKCSogZGxscy91c2VyL2RkZS9kZGVtbDE2LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBOVUxMIHBvaW50ZXIgaGFuZGxpbmcgZXJyb3JzLgoKMjAwMi0xMC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlaW1wbGVtZW50IEdldFN1Ykl0ZW1SZWN0LCBzdWJpdGVtIHNldHRpbmcgb3B0aW1pemF0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBidWcgaW4gT1dORVJEQVRBIHNlbGVjdGlvbiBoYW5kbGluZy4KCUZpeCBjcml0aWNhbCBwZXJmb3JtYW5jZSBidWcgaW4gR2V0U2VsZWN0ZWRDb3VudC4KCUZpeCBjcml0aWNhbCBwZXJmb3JtYW5jZSBidWcgaW4gU2V0R3JvdXBTZWxlY3Rpb24uCglGaXggcHJvYmxlbXMgZm9yIE9XTkVSRFJBVyByZXBvcnQuCglGaXggaGlkZGVuL2xhdGVudCBidWdzIGluIHN0YXRlIGhhbmRsaW5nLgoJQmV0dGVyIGRlYnVnIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IG9ud2VyLWRyYXcgUkVQT1JUIGZvciBicm9rZW4gYXBwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN0cmVhbWxpbmUgdGhlIEdldEl0ZW0gdXNhZ2UuCglGaXggZmF0YWwgYnVnIGZvciBJQ09OIG1vZGUgaW4gTFZTX09OV0VSREFUQS4KCURvY3VtZW50YXRpb24gdXBkYXRlcywgbWFya2luZyBwbGFjZXMgd2hpY2ggbmVlZCB3b3JrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGNvbmRpdGlvbiBzbyB3ZSBhY3R1YWxseSBzdG9yZSB0aGUgc3RhdGUgaW4gdmlydHVhbCBsaXN0dmlld3MuCglBc3NvcnRlZCBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBFZmZlY3RpdmUgb3B0aW1pemF0aW9uIGluIEdldE5leHRJdGVtIChzcGVlZHMgdXAgWG5ld3MpLgoJLSBNaXNjIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSB0aGUgYmVnaW4vZW5kIGxhYmVsIGVkaXQgcHJvY2VkdXJlcy4KCUJldHRlciBzdXBwb3J0IG9mIE9XTkVSRFJBVy4KCUNsZWFuZXIsIHNpbXBsZXIgY29kZS4KCjIwMDItMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXhlZCBsYXJnZSBpdGVtIGZvY3VzIGhhbmRsaW5nIGZvciB2aXJ0dWFsIGxpc3R2aWV3cy4gIFNpbmNlIGF0IG1vc3QKCV9vbmVfIGl0ZW0gY2FuIGhhdmUgdGhlIGZvY3VzIGF0IGFueSB0aW1lLCB3ZSBjYW4gbWFpbnRhaW4gb25lIHN1Y2gKCXJlY3RhbmdsZSBwZXIgbGlzdCwgcmF0aGVyIHRoYW4gcGVyIGl0ZW0uIFRoaXMgaXMgYm90aCBtb3JlIGVmZmljaWVudCwKCWFuZCB3b3JrcyBmb3IgTFZTX09XTkVSREFUQSBsaXN0dmlld3MgYXMgd2VsbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBibGluZGx5IHRydXN0IEdldEl0ZW0gdG8gc3VjY2VlZCAtLSBjaGVjayB0aGUgcmV0dXJuIHZhbHVlLCBhbmQKCWZhaWwgZ3JhY2VmdWxseS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBzZW5kIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbiBub3RpZmljYXRpb24gdG8gYXBwbGljYXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmMsIG1lbW9yeS9hdG9tLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJRml4ZWQgYXRvbSB0ZXN0IHRvIHdvcmsgb24gV2luZG93cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9jb2RlcGFnZS5jLCBtZW1vcnkvY29kZXBhZ2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglBZGRlZCBhIHByb3RvdHlwZSBjb2RlIHBhZ2UgdGVzdC4gRml4ZWQgaXNzdWUgcmVnYXJkaW5nIG5lZ2F0aXZlCglzb3VyY2UgbGVuZ3RoIGhhbmRsaW5nLgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUZpeGVkIHByaW50ZiBmb3JtYXRzIGZvciAtRFNUUklDVCBoYW5kbGVzLgoKCSogZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3RsaGVscDMyLmgsIGxvYWRlci9wZV9pbWFnZS5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYzoKCUZpeGVkIHNvbWUgaGFuZGxlIGNvbnZlcnNpb25zIGluIHByZXZpc2lvbiBvZiB2b2lkKiBoYW5kbGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggbmFzdHkgYnVnIGluIFJFUE9SVCBtb2RlLCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBsYWJlbCByZWN0LgoJLSBMb3RzIG9mIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUltcGxlbWVudGVkIFV1aWRGcm9tU3RyaW5nW0FXXSBiYXNlZCBvbiBDTFNJREZyb21TdHJpbmcKCWltcGxlbWVudGF0aW9uLgoKMjAwMi0xMC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUFib3J0IHdpdGggZXJyb3IgaWYgdGhlIGFwcCB1c2VzIG91ciBhcGkgdG8gc3ViY2xhc3MgYW5kIHRoZW4gdGhlaXJzCgl0aGVuIG91cnMgYWdhaW4uCgoJKiBvbGUvb2xlMm5scy5jOiBTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCUltcGxlbWVudGVkIEdldERhdGVGb3JtYXRXLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIFV1aWRDcmVhdGVOaWwsIFV1aWRFcXVhbCBhbmQgVXVpZElzTmlsLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmM6CglBZGRlZCBwcm9jZXNzX2lkX3QgYW5kIHRocmVhZF9pdF90IHR5cGVzIHRvIHRoZSBzZXJ2ZXIgaW50ZXJmYWNlCglpbnN0ZWFkIG9mIHVzaW5nIHZvaWQqLCBhbmQgcmVtb3ZlZCBhIG51bWJlciBvZiB0eXBlIGNhc3RzLgoKCSogZGxscy9nZGkvZ2RpMTYuYywgb2JqZWN0cy9icnVzaC5jOgoJTW92ZWQgQ3JlYXRlQnJ1c2hJbmRpcmVjdDE2IGFuZCBDcmVhdGVESUJQYXR0ZXJuQnJ1c2gxNiB0byBnZGkxNi5jLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2tlcm5lbC9yZWdpc3RyeTE2LmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIHdpbjMyL2RldmljZS5jOgoJUmVtb3ZlZCBMUHh4eCBoYW5kbGUgdHlwZXMgdGhhdCBkb24ndCBleGlzdCB1bmRlciBXaW5kb3dzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBSZW1vdmVkIGVycm9yIG1lc3NhZ2UgdGhhdCBjb25mdXNlcyB1c2Vycy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCUJ1aWxkIHRlc3RzIHdpdGggLURTVFJJQ1QuCgoyMDAyLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBSZW9yZ2FuaXplIERyYXdJdGVtLgoJLSBVbmlmeSB0ZXh0IGF0dHJpYnV0ZSBzZWxlY3Rpb24gYmV0d2VlbiBEcmF3e1N1Yix9SXRlbS4KCS0gVXN1YWwgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9saXN0LmgsCgkgIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGltZXIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIG9iamVjdCBuYW1lc3BhY2VzLCBhbmQgYSBidW5jaCBmdW5jdGlvbnMKCWZvciBtYW5hZ2luZyBsaW5rZWQgbGlzdHMuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6CglGaXhlZCBHREkgaGVhcCBzZWxlY3RvciBoYW5kbGluZyBicm9rZW4gYnkgcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJVXNlIHRoZSBuZXcgU3ViY2xhc3NpbmcgQVBJLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRmFuY3kvb3B0aW1pemVkIEVuc3VyZVZpc2libGUgbWV0aG9kIHRoYXQgZWxpbWluYXRlcyBmbGlja2VyLgoJTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJSW1wbGVtZW50ZWQge0d8U31ldFdpbmRvd1N1YkNsYXNzLCBEZWZTdWJjbGFzc1Byb2MsCglSZW1vdmVXaW5kb3dTdWJjbGFzcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IHRoZSBzdWJpdGVtIGRyYXdpbmcgY29kZS4KCS0gQSBsb3QgZmFzdGVyIGRyYXdpbmcgaW4gcmVwb3J0IG1vZGUuCgktIEEgZ3JlYXQgZGVhbCBvZiBjbGVhbnVwLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgbW9yZSBhdXRvZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIGltcHJvdmVtZW50cy4KCS0gQWRkZWQgdGVzdHMgZm9yIEdESSBhbmQgVVNFUi4KCgkqIGluY2x1ZGUvd2lubnQuaDogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUFkZGVkIGEgY291cGxlIG9mIGRlZmluZXMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBWYWxpZGF0ZXtSZWN0LFJnbn0gcHJvdG90eXBlcy4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9uZS5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgZHVtcGluZyBORSBiaW5hcmllcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IHRoZSBzdGF0ZSBpY29uIGhhbmRsaW5nLgoJLSBGaXggaGFuZGxpbmcgb2YgbmV3IGltYWdlIGxpc3RzLgoJLSBTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJZXhjZXB0X2hhbmRsZXIzOiBTZXQgY29ycmVjdCAlZWJwIHdoZW4gY2FsbGluZyBleGNlcHRpb24gZmlsdGVyLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBFbmFibGUgYW50aS1hbGlhc2luZyBmb3IgYWxsIGZvbnQgc2l6ZXMuCgoJKiBvYmplY3RzL2RjLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQ3JlYXRlREM6IGhhbmRsZSAobmlsLCA8c3RyaW5nPiwgLi4uKSBncmFjZWZ1bGx5IGlmIG5vIGRyaXZlciBmb3VuZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUmV3b3JrIHRoZSB7SW5zZXJ0LERlbGV0ZX1Db2x1bW4gZnVuY3Rpb25zLgoJLSBEcmF3aW5nIG9wdGltaXphdGlvbnMgd2hlbiBhZGRpbmcvcmVtb3ZpbmcgY29sdW1ucy4KCS0gTW9yZSBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL3N5c2NvbG9yLmM6CglNYWtlIHN1cmUgdGhpbmdzIHN0aWxsIHdvcmsgaWYgMTYtYml0IGRsbHMgY2Fubm90IGJlIGxvYWRlZC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBZGRlZCAtLWRpc2FibGUtd2luMTYgY29uZmlndXJlIG9wdGlvbi4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmM6CglGaXhlZCB3YXJuaW5ncy4KCgkqIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18yMDkzMi5jLCB1bmljb2RlL2NwbWFwLnBsLAoJICB1bmljb2RlL2NwdGFibGUuYzoKCUFkZGVkIEVVQy1KUCBlbmNvZGluZyBhcyBjb2RlcGFnZSAyMDkzMiAod2l0aCB0aGUgaGVscCBvZiBBcmljCglTdGV3YXJ0KS4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZSB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIG1vcmUgdXNlZnVsIG1hY3Jvcy4KCjIwMDItMTAtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dsdTMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbjoKCU1vdmVkIFggZmxhZ3MgYW5kIGxpYnJhcmllcyBvdXQgb2YgTWFrZS5ydWxlcyBpbnRvIHRoZSBtYWtlZmlsZXMgdGhhdAoJbmVlZCB0aGVtLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjOgoJVXNlIGNvcnJlY3QgMTYtYml0IHJlc291cmNlcyB0byBhdm9pZCB3YXJuaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgZG9jdW1lbnRhdGlvbiBvZiBob3cgdG8gaW52b2tlIHdpbmVkYmcuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG5ldyBhdXRvZ2VuZXJhdGVkIHRlc3QgZm9yIGRhdGEgc3RydWN0dXJlIHBhY2tpbmcuCgoJKiB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLnBtLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Rfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgYSBuZXcgdG9vbCB3aW5hcGlfdGVzdCBmb3IgZ2VuZXJhdGluZyB0ZXN0cy4KCS0gQWRkZWQgYSBkYXRhIHN0cnVjdHVyZSBwYWNraW5nIHRlc3QgdG8gd2luYXBpX3Rlc3QuCgktIFJlb3JnYW5pemVkIGFuZCBvcHRpbWl6ZWQgYSBmZXcgdGhpbmdzLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9vcHRpb25zLmMsCgkgIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBhIEdOVSBDIGltcGxlbWVudGF0aW9uIG9mIHNvbWUgb2YgdGhlIERFQ0xTUEVDXyBtYWNyb3MgYW5kIHVzZWQKCXRoZW0gd2hlcmV2ZXIgcG9zc2libGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCBMSVNUIG1vZGUsIGJyb2tlbiBieSBwcmV2aW91cyBjaGFuZ2VzLgoJLSBJbXBsZW1lbnQgR2V0SXRlbVJlY3QgaW4gdGVybXMgb2YgR2V0SXRlbU1lYXN1cmVtZW50cy4KCS0gSW1wcm92ZW1lbnRzIGluIGRlYnVnIHRyYWNlcy4KCS0gTWFueSBidWcgZml4ZXMsIGNvbXBlbGV0ZSBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0SXRlbU1lYXN1cmVtZW50cy4KCS0gTG90cyBvZiBjb2RlIGNsZWFudXBzLCBzaW1wbGlmaWNhdGlvbnMuCgktIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCjIwMDItMDktMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJUGF0aElzRXhlOiBjb3JyZWN0ZWQgYW5kIGFkZGVkIGV4ZWN1dGFibGUgdHlwZXMuCgoJKiB3aW5kb3dzL3NweS5jOiBHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBUaGUgVFRNXyBtZXNzYWdlIG5lZWRlZCB0byBiZSBpbiBjb3JyZWN0IG9yZGVyLgoJLSBBZGRlZCBUVE1fR0VUQlVCQkxFU0laRS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJUHJldmVudCBjcmFzaCB3aGVuIGxpc3R2aWV3IHRyYWNlIGxvZ2dpbmcgaXMgb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudCBTd2FwVGV4dHVyZUhhbmRsZXMgbWV0aG9kLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglEZWZpbmUgU05ETVNHLgoKMjAwMi0wOS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglBdHRlbXB0IGF0IGhhbmRsaW5nICdrJyBhbmQgJ0InIHN5bWJvbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEVsaW1pbmF0ZSBleHRyYSBiYWNrZ3JvdW5kIGZpbGxzLgoJLSBFbGltaW5hdGUgYm9ndXMgZXJyb3IgbWVzc2FnZXMuCgoJKiB3aW4zMi9leGNlcHQuYzogRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiB0aGUgZGVidWdnZXIgc3RhcnR1cC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJRG9uJ3QgYnVpbGQgZDNkOCBpZiB3ZSBkb24ndCBoYXZlIE9wZW5HTCBzdXBwb3J0LgoKCSogZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDogQWRkZWQgY2hlY2sgZm9yIE9wZW5HTC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJQWRkZWQge0d8U31ldFdpbmRvd0xvbmdQdHIuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2N1c3RjbnRsLmg6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBjdXN0b20gY29udHJvbCBoZWFkZXIuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglVc2UgY29ycmVjdCBjaGVjayB0byBzZWUgaWYgeHNlcnZlciBzdXBwb3J0cyB4dmlkbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gQ2FjaGUgR1dMX1NUWUxFLCB0byBhdm9pZCBmZXRjaGluZyBpbiB2aXJ0dWFsbHkgZXZlcnkgZnVuY3Rpb24uCgktIFNlcGFyYXRlIEdldE9yaWdpbiBmcm9tIEdldEFsbE1lYXN1cmVzIGFzIGl0IGlzIGl0ZW0gaW5kZXBlbmRlbnQsCgkgIGFuZCByZW5hbWUgZnVuY3Rpb24gdG8gcmVmbGVjdCB0aGUgY2hhbmdlLgoJLSBTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IGZvciBzb3VuZGNhcmRzIHRoYXQgY2FuJ3QgZG8gOC1iaXQgYXVkaW8sIG9ubHkgMTYtYml0IChhbHNvCgljaGVja2VkIGZvciBzb3VuZGNhcmRzIHRoYXQgY2FuJ3QgZG8gc3RlcmVvIHdoaWxlIEkgd2FzIGF0IGl0KS4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJZXhlY3V0ZTogQWN0aXZhdGUgdGhlIHZpZXdwb3J0IHBhc3NlZCBhcyBwYXJhbWV0ZXIgd2hlbiBleGVjdXRpbmcKCWJ1ZmZlci4KCgkqIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50IElEaXJlY3QzRFZpZXdwb3J0Ml9EZWxldGVMaWdodC4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZ1bmN0aW9ucyBzc2NhbmYgYW5kIHN3c2NhbmYgbm93IGV4cGVjdCBzdHJpbmdzIHRvIGJlIHRlcm1pbmF0ZWQgd2l0aAoJbnVsbCAoMCkgaW5zdGVhZCBvZiBFT0YgKC0xKS4KCgkqIHRvb2xzL3dpbmVtYWtlcjogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBsb29rLmNhPgoJTWlub3IgdHlwbyBmaXguCgoyMDAyLTA5LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGl0ZW0gZnJvbSB0aGUgbGlzdCwgaWYgd2UgZmFpbCB0byBpbml0aWFsaXplIGl0IGF0IGluc2VydAoJdGltZS4KCgkqIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvTWFrZWZpbGUuaW46CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSW5pdGlhbCBEM0Q4IGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS9kM2Q4dHlwZXMuaDogRml4ZWQgbmFtZWxlc3MgdW5pb24vc3RydWN0IGRlY2xhcmF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbDoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbG9vay5jYT4KCUV4cGFuZGVkIHRoZSAiTGludXggTGlicmFyaWVzIGFzIERsbHMiIHdpbmVsaWIgc2VjdGlvbiBhbmQgYnJvdWdodCBpdAoJdXAgdG8gZGF0ZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZWQgdGhlIHdyYXBwZXIgY29kZSB0byBtYXRjaCB0aGUgbmV3IG5hbWluZyBleGVjdXRhYmxlIGFuZAoJbGlicmFyeSBjb252ZW50aW9ucy4KCUV4ZWN1dGFibGVzIGRvbid0IG5lZWQgc3BlYyBmaWxlcy4KCVJlbW92ZWQgdW51c2VkIGNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQWRkZWQgc3R1YnMgZm9yIEh0dHBFbmRSZXF1ZXN0QS9XLCBJbnRlcm5ldFJlYWRGaWxlRXhBL1csCglTZXRVcmxDYWNoZUVudHJ5R3JvdXAsIENyZWF0ZVVybENhY2hlR3JvdXAsIERlbGV0ZVVybENhY2hlR3JvdXAuCgoJKiBkbGxzL3VzZXIvdXNlcjE2LmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCU1vdmVkIHNvbWUgMTYtYml0IGZ1bmN0aW9ucyBmcm9tIHdpbmRvd3MvY3Vyc29yaWNvbi5jIHRvCglkbGxzL3VzZXIvdXNlcjE2LmMuCgoJKiBmaWxlcy9kb3NfZnMuYzogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUNoZWNrIGZvciBhbiBlbXB0eSBzdHJpbmcgaW4gRE9TRlNfRmluZE5leHRFeCB0byBhdm9pZCBhbiB1bm5lY2Vzc2FyeQoJZmFpbHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IGNyYXNoZXMgaW4gZGVidWcgbW9kZS4KCS0gRml4IHNvbWUgZm9jdXMgcmVjdGFuZ2xlIHByb2JsZW1zLgoJLSBCZXR0ZXIgZGVidWdnaW5nIG91dHB1dC4KCS0gTW9yZSBjbGVhbnVwcy4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVtb3ZlIHdyb25nIGFuZCB1c2VsZXNzIHRyYW5zZm9ybWF0aW9uIG9mIHogcHJvamVjdGVkIGNvb3JkaW5hdGVzLgoJQWRkIG5vcm1hbHMgd29ybGQgdHJhbnNmb3JtYXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggZGV2aWNlcyBjcmVhdGlvbiBicm9rZW4gY29kZS4gTm93LCB0aGUgZGlzcGxheSBhbmQgdGhlIGRyYXdhYmxlCglhcmUgcmV0cmlldmUgdGhyb3VnaCBHREkgZXNjYXBlIHNlcXVlbmNlcyBhbmQgc3RvcmVkIGluIHRoZSBwcml2YXRlCglkYXRhLiBBZGQgZGVzYWxsb2NhdGlvbiBvZiB0aGUgZGV2aWNlIHByaXZhdGUgZGF0YS4KCgkqIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHpleHBhbmQxNi5jLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYzoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglTcGxpdCB0aGUgMTYtYml0IGZ1bmNpdG9ucyBpbnRvIGEgc2VwZXJhdGUgZmlsZS4KCjIwMDItMDktMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOgoJRml4ZWQgWDExIGVycm9yIGNvZGUgbWlzbWF0Y2ggYW5kIHJlbW92ZWQgZGVidWdnaW5nIG91dHB1dC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIGZpeGVkIHVwIHNvbWUgc2VtYW50aWMgbWlzdW5kZXJzdGFuZGluZ3MgdXNpbmcgdGhlIGhlbHBmdWwgYWR2aWNlIG9mCgkgIFJlaW4gS2xhemVzCgktIGFkZGVkIFNPX1NORFRJTUVPIHN1cHBvcnQKCS0gYWRkZWQgaWZkZWYncyBmb3IgY29uc2lzdGVuY3kgd2l0aCByZXN0IG9mIHNvY2tldC5jCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCcmluZyB0aGUgbmFtaW5nIG9mIGxpYnJhcmllcyBhbmQgZXhlY3V0YWJsZSB1cCB0byBjdXJyZW50IHN0YW5kYXJkcy4KCUluc3RhbGwgZGxscyBhbmQgZXhlY3V0YWJsZXMgaW4gZGxsZGlyLgoJSXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBpbXBvcnQgbnRkbGwuZGxsLgoKCSogZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBkZXNhbGxvY2F0aW9uIG9mIHRoZSB2aWV3cG9ydCBwcml2YXRlIGRhdGEuCgoJKiBkbGxzL2RkcmF3L2QzZGxpZ2h0LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIGFsbG9jYXRpb24vZGVzYWxsb2NhdGlvbiBvZiB0aGUgbGlnaHQgcHJpdmF0ZSBkYXRhLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZSBjcmVhdGlvbiBvZiBvdXIgT3BlbkdMIERpcmVjdDNEIGRldmljZSBmcm9tIGEgc3VyZmFjZSB1c2VkIGFzCglyZW5kZXJpbmcgdGFyZ2V0LgoJRW5hYmxlIGNyZWF0aW9uIG9mIGEgdGV4dHVyZSBmcm9tIGEgc3VyZmFjZS4KCjIwMDItMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLAoJICB0b29scy93aW5ld3JhcHBlciwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9YMTFfY2FsbHMsCgkgIGRsbHMveDExZHJ2L3RzX3hsaWIuYywgZGxscy94MTFkcnYvdHNfeGxpYi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCU1vdmVkIHRzX3hsaWIuYyBpbnRvIHgxMWRydiBhbmQgcmVtb3ZlZCBsaWJ3aW5lX3RzeDExLgoKCSogd2luZG93cy93aW4uYzoKCUFkZGVkIG1pc3NpbmcgV0lOX1JlbGVhc2VQdHIgKHNwb3R0ZWQgYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBjb250cm9scy9FRElULlRPRE8sIGNvbnRyb2xzL2VkaXQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFN0b3AgcGFzc2luZyBod25kIGFyb3VuZCB3aGVuIHdlJ3JlIHBhc3NpbmcgRURJVFNUQVRFLgoJLSBNZXJnZSB0aGUgbm9uLW9ic29sZXRlIGJpdHMgb2YgRURJVC5UT0RPIGludG8gZWRpdC5jLgoJLSBTb21lIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CgktIEluaXRpYWxpemUgbWVtb3J5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aGVuIC1kZWJ1Z21zZyArbGlzdHZpZXcgaXMgb24uCgktIEZpeCB2YXJpb3VzIGFycmF5IGJvdW5kcyByZWxhdGVkIGVycm9ycy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglSZXNpemUgZHluYW1pYyBwb2ludGVyIGFycmF5IG1vcmUgY2FyZWZ1bGx5IHdoZW4gYWRkaW5nIG5ldyBlbnRyaWVzLgoKCSogZGxscy9kZHJhdy9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFBPSU5ULCBXSVJFRlJBTUUgYW5kIFNPTElEIGZpbGwgbW9kZXMuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSURpcmVjdDNEVGV4dHVyZTJJbXBsX0xvYWQ6IHdoZW4gdGhlIHN1cmZhY2UgaXMgbm90IGFsbG9jYXRlZCBhbmQgbm8KCWxvY2F0aW9uIGFyZSBzcGVjaWZpZWQsIHNldCBpdCB0byB2aWRlbyBtZW1vcnkuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLAoJICBpbmNsdWRlL3dpbmVfZ2wuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJSW1wb3J0IHdpbmVfdHN4MTFfbG9jay91bmxvY2sgZGlyZWN0bHkgZnJvbSB4MTFkcnYgaW4gb3BlbmdsMzIgYW5kCglkZHJhdywgc28gdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gbGluayB3aXRoIGxpYndpbmVfdHN4MTEuCglSZW1vdmVkIGhlYWRlciB3aW5lX2dsLmguCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCUZpeGVkIGEgbnVtYmVyIG9mIGJ1Z3MgaW4gdGhlIGhhbmRsaW5nIG9mIHdpbmRvdyBwYXJlbnQgYW5kIG93bmVyIGFuZAoJYWRkZWQgYSByZWdyZXNzaW9uIHRlc3QgKGJhc2VkIG9uIHRoZSB3b3JrIG9mIEJpbGwgTWVkbGFuZCkuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQnkgZGVmYXVsdCwgd2Ugc2hvdWxkIHVzZSBvdXIgb3duIGRsbHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQWNjZXB0IHRpbWVfdCBhcmd1bWVudCBpbiBXU19zZXRzb2Nrb3B0L1dTX1NPX1JDVlRJTUVPOyB0cmFuc2xhdGUgdG8KCXN0cnVjdCB0aW1ldmFsIGZvciBlZGlmaWNhdGlvbiBvZiBzZXRzb2Nrb3B0LgoKMjAwMi0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsCgkgIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3h1dGlsLmg6CglSZW1vdmVkIHNvbWUgbW9yZSBUU1gxMSBmdW5jdGlvbnMgYW5kIGZpbGVzLgoKCSogbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvZW52aXJvbi5jLAoJICBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywKCSAgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvYnJvd3NyLmMsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgZGxscy91c2VyL21zZzE2LmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBEb24ndCBhZGQgc3RhbmRhcmQgaGVhZGVycyBmb3IgdGhlIGRsbCBzZXBhcmF0aW9uIGhhY2tzLgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBMb2NhbGl6ZSBvcmlnaW4sIGxvY2F0aW9uLCBhbmQgcmVjdGFuZ2xlIGNvbXB1dGF0aW9uLgoJLSBTdXBwb3J0IHN0YXRlIGljb25zIGluIExWU19JQ09OIHN0eWxlLgoJLSBEcmF3IG9ubHkgaXRlbXMgdGhhdCBhcmUgaW4gdGhlIGNsaXAgYm94LgoJLSBEcmF3IG5vbi1zZWxlY3RlZCBpdGVtcyBmaXJzdCB0aGVuIHRoZSBzZWxlY3RlZCBvbmVzIGJlY2F1c2UgbGFyZ2UKCSAgaWNvbnMgbWF5IG92ZXJsYXAgZWFjaCBvdGhlci4KCS0gQ29ycmVjdCBpbnZhbGlkYXRpb24gcmVjdGFuZ2xlcyBmb3IgaXRlbXMuCgktIENvcnJlY3QgZHJhd2luZyBvZiBsYXJnZSBpY29ucy4KCS0gRWxpbWluYXRlIGRpdmlkZSBieSB6ZXJvIGNhc2VzIGluIHNjcm9sbGluZy4KCS0gSW52YWxpZGF0ZSBzZWxlY3RlZCBpdGVtcyBwcmlvciB0byBzZXR0aW5nIHdpbmRvdyBsb3NpbmcgZm9jdXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBpbmNsdWRlL3dpbi5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGNsZWFudXBzLCB1cGRhdGVkIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRml4ZWQgI2VuZGlmLgoKCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS90c19zaGFwZS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EuaCwKCSAgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwKCSAgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwKCSAgaW5jbHVkZS90c194dmlkZW8uaDoKCVJlbW92ZWQgYSBidW5jaCBvZiBubyBsb25nZXIgdXNlZCBUU1ggd3JhcHBlcnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGluY2x1ZGUvd2luZGVmLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBIS0VZIHRvIGEgdm9pZCouCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIHN1cHBvcnQgZm9yICVzdHJ1Y3QxNiAodXNlZCBieSBDTFNJRCkuCgktIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIG1pc2MvcmVnaXN0cnkuYzoKCVJhdWwgRGlhcyA8cmF1bEBkaWFzLmNvbS5icj4KCUFkZGVkIG5ldyAiR2xvYmFsUmVnaXN0cnlEaXIiIG9wdGlvbi4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBQYXRyaWNrIEouIE1jTmVydGhuZXkgPHBhdEBtY25lcnRobmV5LmNvbT4KCVJlbW92ZWQgdGhlICN1bmRlZiBvZiBXU19ERUZJTkVfU0VMRUNUIHNvIHRoYXQgc2VsZWN0IGlzIGluIGZhY3QKCWRlZmluZWQuCglGaXhlZCBpZiBzdGF0ZW1lbnQgaW4gX19XU19GRF9TRVQyIHdoaWNoIHVzZWQgYSA9IHdoZXJlIGEgPT0gaXMKCW5lZWRlZCwgaW4gYWRkaXRpdGlvbiB0aGUgaWYgZGlkIG5vdCBoYXZlIGl0cyBvdXRlciBzZXQgb2YKCXBhcmVudGhlc2lzLgoJUmVtb3ZlZCBwYXJlbnRoZXNlcyBhcm91bmQgdHlwZSB0byBiZSBjYXN0IGluIF9fV1NfRkRfU0VUIG1hY3JvLgoJUmVtb3ZlZCBXUyBtYWNybyB1c2FnZSBmcm9tIHdpdGhpbiBvdGhlciBtYWNyb3MgYmVjYXVzZSB0aGUgV1MgbWFjcm8KCWlzIHVuZGVmaW5lZCB3aGVuIHRoZXNlIG1hY3JvcyBhcmUgZXhwYW5kZWQuCglBZGRlZCBXSU5BUEkgYXR0cmlidXRlZSB0byBzZWxlY3QgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NydGRiZy5oOiBQYXRyaWNrIEouIE1jTmVydGhuZXkgPHBhdEBtY25lcnRobmV5LmNvbT4KCUFkZGVkIGNhc3RzIHRvIGFsbCBtYWNyb3MgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTA5LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHNvbWUgbW9yZSBzdXBlcmZsdW91cyBaZXJvTWVtb3J5IGNhbGxzLCBzbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvZXZlbnQuYywgd2luZG93cy93aW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFJlbW92ZSBleHBvcnQgb2YgRFJBR19RdWVyeVVwZGF0ZSBmcm9tIFVTRVIuCgktIEdldCByaWQgb2YgYXNzb2NpYXRlZCAxNiBiaXQgY29kZSBmcm9tIHgxMWRydi4KCS0gU2ltcGxpZmljYXRpb25zLCBjbGVhbnVwcywgZXRjLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggb3V0cHV0dGluZyBvZiBhIHRleHQgcG9pbnRlciBpbiBkZWJ1ZyBtb2RlIChieSBSZWluIEtsYXplcykuCgktIFJlbW92ZSBhIGxhcmdlIGJ1bmNoIG9mIHN1cGVyZmx1b3VzIFplcm9NZW1vcnkgY2FsbHMuCgktIEZpeCBhIGNvdXBsZSBvZiBidWdzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsCgkgIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvcmljaGVkaXQvc3RkY2hhcm5hbWVzLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbnNvY2syLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNsZWFuZWQgdXAgdGhlIGNvZGUgc28gaXQgd291bGQgYmUgZWFzaWVyIHRvIHBhcnNlIHdpdGggdGhlIG5ldyBDCglwYXJzZXIuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY19wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSB0aGUgbmV3IEMgcGFyc2VyIGhhbmRsZSB0aGUgY3VycmVudCBXaW5lIHNvdXJjZS4KCS0gQWRkZWQgYSBjb21wYWJpbGxpdHkgbGF5ZXIgYmV0d2VlbiB0aGUgb2xkIGFuZCB0aGUgbmV3IEMgcGFyc2VyLgoJLSBBZGRlZCBwYXJzaW5nIG9mIGRhdGEgc3RydWN0dXJlcy4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9uZXRhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2xtLmgsIGluY2x1ZGUvbG1hY2Nlc3MuaCwKCSAgaW5jbHVkZS9sbWJyb3dzci5oLCBpbmNsdWRlL2xtY29ucy5oLCBpbmNsdWRlL2xtZXJyLmgsCgkgIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmMsCgkgIGRsbHMvbmV0YXBpMzIvYXBpYnVmLmMsIGRsbHMvbmV0YXBpMzIvYnJvd3NyLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMl9taXNjLmgsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgTmV0UXVlcnlEaXNwbGF5SW5mb3JtYXRpb24sIE5ldFVzZXJHZXRJbmZvLCBjcmVhdGVkCgljb25mb3JtYW5jZSB0ZXN0cywgb3RoZXIgbmV0YXBpMzIgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoJKiB0b29scy93aW5laW5zdGFsbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbnN0YWxsIG5vdGVwYWQuZXhlIGluIGM6XHdpbmRvd3MgdG9vLgoKMjAwMi0wOS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvbmV3Zm5zLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3ZpcnR1YWwuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglDb3JyZWN0IFNJWkVfVCBzaXplIGFjY29yZGluZyB0byBNUyBTREsuCglDaGFuZ2Ugc29tZSB0eXBlcyB0byBTSVpFX1QgYWNjb3JkaW5nIHRvIE1TIFNESyBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvZDNkOHR5cGVzLmg6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGRlZCBzb21lIGRlZmluaXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgd2luZWRiZyBkb2N1bWVudGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDaGFuZ2UgY29uZnVzaW5nIHRpdGxlLgoKMjAwMi0wOS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVvcmdhbmlzZS9taW5vciB0aWR5dXAgb2Ygb3JkaW5hbCBmdW5jdGlvbnMuCglJbXBsZW1lbnQgU3RyQ21wTG9naWNhbFcsU3RyRm9ybWF0Qnl0ZVNpemVBL1csU3RyRm9ybWF0Qnl0ZVNpemU2NEEsCglTSENyZWF0ZVN0cmVhbVdyYXBwZXIuCglGaXggc29tZSBvdXRwdXQgLnNwZWMgcGFyYW1ldGVycyBmcm9tIHN0ciB0byBwdHIuCglGaXggZGVmaW5pdGlvbiBvZiBTdHJGb3JtYXRCeXRlU2l6ZSBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNtYWxsIHVwZGF0ZXMgdG8gYmV0dGVyIG1hdGNoIHRoZSBmb3JtYXQgb2YgY3VycmVudCBNYWtlZmlsZXMuCglSZW1vdmUgdGhlIGRvY3VtZW50YXRpb24gb2Ygbm8gbG9uZ2VyIHN1cHBvcnRlZCBzcGVjIGZpbGUgb3B0aW9ucy4KCUFkZCBub3RlcyB0byBwb2ludCBvdXQgdGhlIHNlY3Rpb25zIHRoYXQgYXJlIHBhcnRpY3VsYXJseSBvdXQgb2YKCWRhdGUuCgoJKiBkb2N1bWVudGF0aW9uL3BzZHJ2LnJlZywgd2luZWRlZmF1bHQucmVnOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIGNvbnRlbnRzIG9mIGRvY3VtZW50YXRpb24vcHNkcnYucmVnIHRvIHdpbmVkZWZhdWx0LnJlZy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGF2ZSBVU0VSIGRlYWwgd2l0aCB0aGUgY2FyZXQgd2hlbiBzY3JvbGxpbmcgYSB3aW5kb3cuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBpbmZvcm1hdGlvbiBhYm91dCBQT1NJWCwgVW5peCwgWDExIHRyYWRlbWFya3MuCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZSBvdXRwdXQgZm9yIGN1cnJlbnQgYnVpbGQgcHJvY2Vzcy4KCgkqIHRvb2xzL3dpbmVkdW1wL1JFQURNRTogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKMjAwMi0wOS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9oZWFwLmM6CglBdm9pZCBjYWxsaW5nIHNvbWUga2VybmVsIGZ1bmN0aW9ucy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFVwZGF0ZWQgYSBsb3Qgb2Ygb2Jzb2xldGUgc3R1ZmYuCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbjogT25seSBpbnN0YWxsIHRoZSB1c2VmdWwgcHJvZ3JhbXMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSB0YWtlIGZvY3VzIHByb3RvY29sLgoKCSogZG9jdW1lbnRhdGlvbi9wcm9ncmFtcywgZG9jdW1lbnRhdGlvbi93aW5zb2NrOgoJUmVtb3ZlZCBvYnNvbGV0ZSBmaWxlcy4KCgkqIGxpYnJhcnkvLmN2c2lnbm9yZSwgdW5pY29kZS8uY3ZzaWdub3JlOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJVXBkYXRlIGZvciBtaW5ndy9jeWd3aW4uCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglNYWtlIGFsbCB0YXJnZXQgbmFtZXMgbG93ZXIgY2FzZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgZGVidWcgY2hhbm5lbCB1c2FnZSBpbiBERVZFTE9QRVItSElOVFMuCglSZW1vdmUgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBkaXJzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBCZXR0ZXIgaW1wbGVtZW50YXRpb24gZm9yIEdldFRvcGluZGV4L0dldE9yaWdpbi9TZXRJY29uU3BhY2luZy4KCS0gRHJhd2luZyBvcHRpbWl6YXRpb25zLCBiZXR0ZXIgc2Nyb2xsaW5nLgoJLSBBIGZldyBtb3JlIGJ1Z3Mgc3F1YXNoZWQgd2l0aG91dCBtZXJjeS4KCS0gTWFueSBjbGVhbnVwcywgc2ltcGxpZmljYXRpb25zLCBkb2MgdXBkYXRlcy4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTbWFsbCB1cGRhdGUgdG8ga2VlcCBpbiBzeW5jIHdpdGggUkVBRE1FLgoKMjAwMi0wOS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBtZW1vcnkvdmlydHVhbC5jLCBzZXJ2ZXIvbWFwcGluZy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIHRoZSBudGRsbCB2aXJ0dWFsIG1lbW9yeSBmdW5jdGlvbnMsIGFuZCBtYWRlIHRoZSBrZXJuZWwKCWZ1bmN0aW9ucyB1c2UgdGhlbS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IEFkZGVkIHRlc3Rpbmcuc2dtbC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVJlbW92ZSBjbGVhcmluZyBvZiB0aGUgd2luZG93IG1lbnUgaWQgZm9yIG5vdy4gVGhpcyB3aWxsIG5lZWQgbW9yZQoJd29yay4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUV4cGxhaW4gd2h5IGNvbmZvcm1hbmNlIHRlc3RzIGFyZSB1c2VmdWwgZm9yIHBvcnRzIHRvby4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogSm9zZWYgTWVpeG5lciA8Sm9zZWYuTWVpeG5lckB0LW9ubGluZS5kZT4KCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CgktIEluaXRpYWxpemluZyB0aGUgcmV0dXJuLXN0cmluZyBzaG91bGRuJ3QgY2hhbmdlIHRoZSBwb2ludGVyLgoJLSBBZGRlZCAiRklYTUUiIGZvciBjYXNlIG5vdCBoYW5kbGVkLgoJLSBEaXJlY3RvcnkgYW5kIHRoZSBmaWxlbmFtZXMgaGF2ZSB0byBiZSBzZXBhcmF0ZWQgYnkgIlwwIi4KCS0gQWRkZWQgY2hlY2sgdG8gaGFuZGxlIHBvc3NpYmxlIHNpZ25lZC91bnNpZ25lZCBvdmVyZmxvdy4KCgkqIGluY2x1ZGUvbXN2Y3J0L2Vycm5vLmgsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lcnJuby5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbWF0aC5jLAoJICBkbGxzL21zdmNydC9tc19lcnJuby5oLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW46CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJTVNWQ1JUIG5lZWRzIGEgcHVibGljIGVycm5vLmggZmlsZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeCAiaW5zdGFsbCIgYW5kICJ1bmluc3RhbGwiIHRhcmdldHM6IC5leGUgLT4gLmV4ZS5zbzsgdGFyZ2V0IGRpciBpcwoJJChkbGxkaXIpLCBsaWtlIGZvciB0aGUgImJ1aWx0aW4iIHdpbmUgYmluYXJpZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJTWFrZSBMc2FPcGVuUG9saWN5IHJldHVybiBzdWNjZXNzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jOiBKYW4gS3JhdG9jaHZpbCA8c2hvcnRAdWN3LmN6PgoJQnVnIGZpeC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsCgkgIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6CglHeW9yZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJLSBVbmljb2RlaWZ5IGNvbnRyb2wuCgktIHVzZSB2b2lkIGluc3RlYWQgb2YgVk9JRC4KCS0gUGFzcyBpbmZvUHRyIGFyb3VuZCBpbnN0ZWFkIG9mIEhXTkQuCgktIEltcGxlbWVudCBtb3N0IG9mIHRoZSBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBPcHRpbWl6ZSB0aGUgaGVjayBvdXQgb2YgUmVwb3J0IGRyYXdpbmcuCgktIEEgYml0IG9mIG9yZ2FuaXphdGlvbiwgZm9yIHNhbml0eSdzIHNha2UuCgktIE1hbnkgc2ltcGxpZmljYXRpb25zLCBjbGVhbnVwcywgZXRjLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yICdTaG93RGlyU3ltbGlua3MnIHdoZXJlIGl0IGJlbG9uZ3M6IHRvIHRoZQoJd2luZS5jb25mIG1hbiBwYWdlLgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywgZmlsZXMvc21iLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwKCSAgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gUENWT0lEIGFuZCBMUFVJTlQuCglSZW1vdmUgdHlwZXMgdGhhdCBkb24ndCBleGlzdCBvbiBXaW5kb3dzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIGltcG9ydCBkaXJlY3RvcnkgbGltaXRzIChzcG90dGVkIGJ5IEphbiBLcmF0b2NodmlsKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglMaXN0dmlld19Qcm9jZXNzTGV0dGVyS2V5czogZml4ZWQgbmV2ZXIgZW5kaW5nIGxvb3Agd2hlbiBlbmQgaW5kZXggaXMKCXplcm8uCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6CglKZXJyeSBKZW5raW5zIDxKZXJyeV9KX0plbmtpbnNAaG90bWFpbC5jb20+CglNb2RpZmllZCB2b2x1bWVfZWZmZWN0OCBmb3IgdGFraW5nIHVuc2lnbmVkIGRhdGEgYXMgc2lnbmVkIGRhdGEsIGFuZAoJd29kUGxheWVyX1dyaXRlTWF4RnJhZ3MgYmVjYXVzZSBvZiB3cm9uZyBkYXRhIGxlbmd0aCB3aGljaCBsZWFkIHRvCglzdHJhbmdlIG5vaXNlIGFuZCB2b2x1bWUgY29udHJvbCB3b3JraW5nIGluY29ycmVjdGx5LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUplcnJ5IEplbmtpbnMgPEplcnJ5X0pfSmVua2luc0Bob3RtYWlsLmNvbT4KCUFkZGVkIHdhdmVPdXRTZXRWb2x1bWUgd2hlbiBvcGVuaW5nIHNvdW5kIGRyaXZlci4gT3RoZXJ3aXNlLCB0aGVyZSBpcwoJbm8gc291bmQgaWYgd2UgdXNlIGFSdHMuCgoJKiBmaWxlcy9maWxlLmM6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIFJldHVybiBjb3JyZWN0IGVycm9yIGNvZGVzLgoJLSBGaXggYmVoYXZpb3VyIGlmIGZpbGVzIGFyZSBvbiBkaWZmZXJlbnQgV2luZSBkcml2ZXMKCSAgLSBkZWxldGUgc291cmNlIGlmIGNvcHkgc3VjY2Vzc2Z1bAoJICAtIHRyeSByZW5hbWUoKSAtIGZpbGVzIG1heSBiZSBvbiB0aGUgc2FtZSBVbml4IGZpbGUgc3lzdGVtLgoJLSBUcnkgY29weS9kZWxldGUgaWYgcmVuYW1lKCkgZmFpbHM6IGZpbGVzIG1heSBiZSBvbiB0aGUgc2FtZSBET1MKCSAgZHJpdmUsIGJ1dCBvbiBkaWZmZXJlbnQgVW5peCBmaWxlIHN5c3RlbXMuCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTdGFydCBvZiB0aGUgY29uZm9ybWFuY2UgdGVzdGluZyBkb2N1bWVudGF0aW9uLiBTdGlsbCB2ZXJ5CglpbmNvbXBsZXRlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGhlIHNlY3Rpb24gY29uY2VybmluZyB3aW5lbWFrZXIncyBvcHRpb25zLgoJQWRkIGEgY291cGxlIG9mIHdhcm5pbmdzIGFib3V0IG91dC1vZi1kYXRlIHNlY3Rpb25zLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUZXN0cyBhcmUgcmVndWxhciBXaW5lbGliIGFwcGxpY2F0aW9ucyBhbmQgdGh1cyBzaG91bGQgbm90IGJlIGNvbXBpbGVkCgl3aXRoIF9fV0lORV9fLgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUlESV9BUFBMSUNBVElPTlcgZG9lcyBub3QgZXhpc3Qgb24gV2luZG93cy4gVXNlIElESV9BUFBMSUNBVElPTgoJaW5zdGVhZCBhbmQgY2FzdCB0byBMUFdTVFIuCglGaXhlZCB0eXBlIGNhc3Qgd2FybmluZ3MuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywKCSAgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hhbmdlIHRoZSAjaW5jbHVkZSBvcmRlciBzbyB0aGF0IHRoZXNlIHRlc3RzIGNvbXBpbGUgb24gV2luZG93cy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9udHN0YXR1cy5oLAoJICBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgYWxsIFNUQVRVU18qIGFuZCBSUENfTlRfKiB0byBudHN0YXR1cy5oIGFzIHBlciBXaW5kb3dzIFNESy4KCUFkZCBzb21lIG1pc3NpbmcgY29uc3RhbnRzLgoJSW5jbHVkZSBudHN0YXR1cy5oIGluIHdpbm50LmguCgoJKiBmaWxlcy9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkICJjb25kaXRpb25hbCBleHByIGlzIGFsd2F5cyB0cnVlIGR1ZSB0byBiZWluZyB1bnNpZ25lZCA8IDAiCglwcm9ibGVtLgoKMjAwMi0wOS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUphbiBLcmF0b2NodmlsIDxzaG9ydEB1Y3cuY3o+CglOZXcgLVM6IFNlYXJjaCBvbmx5IHByb3RvdHlwZSBuYW1lcyBmb3VuZCBpbiAnc3ltZmlsZScuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBjdHlwZS5oLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGluY2x1ZGUvd2luZGVmLmgsCgkgIGxvYWRlci9yZXNvdXJjZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhSU1JDIHRvIGEgdm9pZCouCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglOZXRwR2V0Q29tcHV0ZXJOYW1lLCBTSENvcHlLZXlBIGFuZCBTSFJlZ0dldFBhdGhBIGRvbid0IGV4aXN0IG9uIGFsbAoJV2luZG93cyBwbGF0Zm9ybXMgLT4gdXNlIEdldE1vZHVsZUhhbmRsZSArIEdldFByb2NBZGRyZXNzLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbywgZmlsZXMvZmlsZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1hcmsgZmlsZXMgc3RhcnRpbmcgd2l0aCBhIGRvdCBhcyBGQV9ISURERU4uCglBZGQgY29uZmlndXJhdGlvbiBvcHRpb24gJ1Nob3dEb3RGaWxlcycgdG8gdHVybiB0aGlzIGZlYXR1cmUgb2ZmLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4IE1vdmVGaWxlRXgoKSBmbGFncyBpbiBNU1ZDUlQgcmVuYW1lKCkvX3dyZW5hbWUoKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUmVvcmdhbml6YXRpb24gYW5kIGNsZWFudXAgb2Ygc2VsZWN0aW9uIGNvZGUuCgktIENvbXBsZXRlIHJld3JpdGUgb2YgZm9jdXMgaGFuZGxpbmcgYW5kIGRyYXdpbmcgY29kZS4KCS0gTWFueSBidWdzIGZpeGVkIChpbmNsdWRpbmcgYSBzZXJpb3VzIG1lbW9yeSBjb3JydXB0aW9uKS4KCS0gTWFueSBwZXJmb3JtYW5jZSBmaXhlcy4KCS0gTG90cyBvZiBjbGVhbnVwcywgc2ltcGxpZmljYXRpb25zLCBldGMuCgktIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGluY2x1ZGUvd3R5cGVzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSBycGMuaCBhZnRlciBMUE9MRVNUUiBhbmQgb3RoZXIgbmVlZGVkIHR5cGVzIGFyZSBkZWZpbmVkLgoKCSogaW5jbHVkZS93aW5nZGkuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgdHlwbyB3aGljaCBwcmV2ZW50ZWQgY29ycmVjdCBjb21waWxhdGlvbiBvZiBjb2RlIHVzaW5nIHRoZQoJR2V0e0MsTSxZfVZhbHVlIG1hY3Jvcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNjaGVkdWxlci9oYW5kbGUuYzoKCUltcGxlbWVudGVkIE50RHVwbGljYXRlT2JqZWN0LgoKCSogaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL2NvbW1jdHJsLmgsCgkgIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvcHJzaHQuaCwKCSAgaW5jbHVkZS9yaWNoZWRpdC5oLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJUmVwbGFjZSBzdGF0aWMgaW5pdGlhbGl6ZXJzIHdpdGggYSBwcm9wZXIgI2RlZmluZSBpbiAuaCBmaWxlcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CgktIGZpeGVkIHR5cG8gZXJyb3IgaW4gQ01ZSyBkZWZpbml0aW9uIChDT0xPUkVGIC0+IENPTE9SUkVGKQoJLSBhZGRlZCB0YWdzIHRvIHN0cnVjdHVyZXMgKF9PRlNUUlVDVCwgX0ZJTEVUSU1FLCAuLi4pCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVdhaXQgZm9yIGFwcCB0byBjb21lIHVwIGJlZm9yZSBhdHRlbXB0aW5nIERERSBjb25uZWN0aW9uLgoJUGF0aElzVVJMIHNob3VsZCBmYWlsIG9uIHRleHQgd2l0aG91dCBhIHByb3BlciAic2NoZW1lIi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglpbmZvLT51LnNtYl9kaXIgaXMgYSBwb2ludGVyLCBlcnJvcnMgYXJlIHNpZ25hbGVkIGJ5IE5VTEwuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhYmlsaXR5IHRvIGFib3J0IG9uIGludGVyYWN0aXZlIHN5bWJvbCBsb29rdXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEdyYW5kIHJld3JpdGUgZm9yIHtHZXQsU2V0LEluc2VydH1JdGVtICYgQ28uCgktIE1hbnkgYnVncyBmaXhlZC4KCS0gQ2FsbGJhY2sgaXRlbXMgYXJlIGJldHRlciBzdXBwb3J0ZWQuCgktIEltcHJvdmVtZW50cyBpbiByZW5kZXJpbmcgc3BlZWQuCgktIENoYW5nZSBWT0lEIHRvIHZvaWQuCgktIE1hbnkgY29kZSBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwMi0wOS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBtaXNjL3JlZ2lzdHJ5LmMsIHdpbjMyL2RldmljZS5jOgoJSGFuZGxlIHNwZWNpYWwgcmVnaXN0cnkgcm9vdCBrZXlzIGRpcmVjdGx5IGluIGFkdmFwaTMyLCBhbmQgYXZvaWQKCXVzaW5nIHRoZW0gaW4ga2VybmVsIGFuZCBudGRsbC4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIG1lbW9yeS9yZWdpc3RyeS5jLCB3aW4zMi9kZXZpY2UuYzoKCUNvcGllZCB0aGUgcmVnaXN0cnkgZnVuY3Rpb25zIG5lZWRlZCBieSBWTU0gaW50byBkZXZpY2UuYyBhbmQgZ290IHJpZAoJb2YgbWVtb3J5L3JlZ2lzdHJ5LmMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZmlsZXMvZGlyZWN0b3J5LmMsIG1pc2MvY3B1LmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgd2luMzIvZXhjZXB0LmM6CglSZW1vdmVkIHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIGFkdmFwaTMyIHJlZ2lzdHJ5IGZ1bmN0aW9ucyBmcm9tCglrZXJuZWwgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBTdXBwb3J0ICItaW1zdmNydCIgYXMgYW4gYWJicmV2aWF0aW9uIG9mICItaW1zdmNydC5kbGwiLgoJLSBBdXRvbWF0aWNhbGx5IGFkZCBNU1ZDUlQgaW5jbHVkZSBwYXRoIGlmIE1TVkNSVCBETEwgd2FzIHJlcXVlc3RlZC4KCgkqIGZpbGVzL2ZpbGUuYzogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCVdhaXQgdGltZW91dCBtdXN0IGJlIDAgaWYgYldhaXQgPT0gRkFMU0UuCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL1JFQURNRSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLCBwcm9ncmFtcy93aW5lZGJnL2RiX2Rpc2FzbS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLCBwcm9ncmFtcy93aW5lZGJnL2V4cHIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9leHRfZGVidWdnZXIuYywgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW50dmFyLmgsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmVkYmcvbXNjLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvcmVnaXN0ZXJzLmMsIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYzoKCU1vdmVkIHRoZSBkZWJ1Z2dlciB0byBwcm9ncmFtcy93aW5lZGJnIHdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBtaXNjL3ZlcnNpb24uYywKCSAgbXNkb3MvcHBkZXYuYywgcmVsYXkzMi9yZWxheTM4Ni5jOgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIGFkdmFwaTMyIHJlZ2lzdHJ5IGZ1bmN0aW9ucyBmcm9tIHNvbWUgb2YgdGhlCglrZXJuZWwgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9yZWcuYzoKCVJ0bEZvcm1hdEN1cnJlbnRVc2VyS2V5UGF0aDogcmV0dXJuIHBhdGggY29udGFpbmluZyB0aGUgdXNlciBuYW1lCglpbnN0ZWFkIG9mIC5EZWZhdWx0LgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBmaXggcGVybCBzeW50YXggZXJyb3IgaW4gbXkgb3duIHBhdGNoCgktIGZpeCBwZXJsIHN5bnRheCBlcnJvciBpbiBnZW5lcmF0ZV93cmFwcGVyX2ZpbGUoKQoJLSBmaXggb3JkZXIgb2YgYXJndW1lbnRzIGdlbmVyYXRlX2Zyb21fdGVtcGxhdGUoKSBpbgoJICBnZW5lcmF0ZV93cmFwcGVyX2ZpbGUoKQoJLSBkb24ndCBpZ25vcmUgY29tbWFuZCBsaW5lIC1sLCAtSSwgYW5kIC1pIGFyZ3VtZW50cwoJLSBidWlsZCB3cmFwcGVyIHdpdGggYSBtaW5pbWFsIHNldCBvZiBETExzL2xpYnJhcmllcwoJLSBmaXggYXV0b2NvbmYgaW52b2NhdGlvbiB0byBzdXBwb3J0IGJvdGggMi41eCBhbmQgMi4xMwoJLSBmaXggdXNhZ2UgbWVzc2FnZSBmb3IgLS1ub2RsbHMKCS0gdGFyZ2V0X2luaXQoXCRnbG9iYWxfc2V0dGluZ3MpIG11c3Qgbm90IGJlIGRvbmUgYWZ0ZXIgcmVhZGluZyBjb21tYW5kCgkgIGxpbmUKCS0gZml4IGFwcE5hbWUgZGVjbGFyYXRpb24gaW4gd3JhcHBlciBjb2RlCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcHJvdmUgTFZNX0dFVElURU1SRUNUIHZhbHVlcyBmb3IgTFZTX0lDT04gc3R5bGUuIE5vdyBtb3N0bHkKCSAgY29ycmVjdCAob3IgYXQgbGVhc3QgbWF0Y2hlcyBuYXRpdmUpLgoJLSBIYW5kbGUgZm9jdXNlZCBhbmQgc2VsZWN0ZWQgbGFyZ2UgaWNvbiB0ZXh0IGJldHRlci4KCS0gSGFuZGxlIGludGVybmFsIGVyYXNlLgoJLSBBZGRpdGlvbmFsIGRlYnVnZ2luZyBjb2RlLgoKMjAwMi0wOS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZXBsYWNlZCAnaGVhcCcgLnNwZWMgc3RhdGVtZW50IGJ5IGEgY29tbWFuZCBsaW5lIG9wdGlvbi4KCVVwZGF0ZWQgd2luZWJ1aWxkIG1hbnBhZ2UuCgoJKiBpbmNsdWRlL3RocmVhZC5oOgoJVXNlIGxhcmdlciBzaWduYWwgc3RhY2sgdG8gYXZvaWQgb3ZlcmZsb3dzIGluIGZpbGVzeXN0ZW0gY29kZSB3aGVuCglsb2FkaW5nIHRoZSBkZWJ1Z2dlci4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBEZWxldGUgcmVnaXN0cnkga2V5IGF0IGV4aXQuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOiBGaXhlZCBBc3NvY0NyZWF0ZSBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3gxMWRydi5oOgoJRml4ZWQgd2FybmluZ3MgY2F1c2VkIGJ5IG5ldyB3aW50ZXJubC5oLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBJbXBsZW1lbnQgY3VzdG9tIGRyYXcgc3VwcG9ydC4KCS0gRml4IHRodW1iIGRyYXdpbmcuCgktIFNvbWUgY2xlYW51cHMsIHJlb3JnYW5pemF0aW9ucywgZXRjLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGEgYnVuY2ggb2YgYnVncyByZWxhdGVkIHRvIHNjcm9sbGluZy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q4Y2Fwcy5oLAoJICBpbmNsdWRlL2QzZDh0eXBlcy5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZGVkIERpcmVjdDNEIDggaGVhZGVycy4KCgkqIHdpbjMyL2V4Y2VwdC5jLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvdmVyc2lvbi5jLAoJICBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGluY2x1ZGUvd2ludGVybmwuaCwgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2hlYXAuYywKCSAgZGxscy9udGRsbC90ZXN0cy9lcnJvci5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvc2V0dXBhcGkvZGlyaWQuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgYWxsIHRoZSBjb250ZW50IG9mIHRoZSBEREsgZmlsZXMgbnRkZWYuaCBhbmQgbnRkZGsuaCB0bwoJd2ludGVybmwuaC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUZpeGVkIHJlcXVlc3RlZCBhY2Nlc3MgcmlnaHRzIGluIFJlZ0RlbGV0ZUtleVtBV10uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglGaXhlZCBwb3NzaWJsZSBpbmZpbml0ZSBsb29wIGluIGRlbGV0ZV9rZXkuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBDKysgY29tbWVudHMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXQ01EX3BhcnNlOiBhbGxvdyBzbGFzaGVzIGluIGNvbW1hbmQgZmlsZW5hbWVzLgoKCSogaW5jbHVkZS93aW5kZWYuaDogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ2xlYW51cCB3YXJuaW5nIHdoZW4gYnVpbGRpbmcgb24gTWluZ3cuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cF9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgYSBkZWZhdWx0IG9mZiBvcHRpb24uCgktIEFkZCBzdXBwb3J0IGZvciBDKysgdG8gQyBjb21tZW50IGNvbnZlcnNpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIENvbXBsZXRlIHJld3JpdGUgb2Ygc2Nyb2xsaW5nIGNvZGU6IHNtYWxsZXIsIGZhc3RlciwgY2xlYW5lci4KCSAgV2Ugbm93IHByb3Blcmx5IHNjcm9sbCB0aGUgd2luZG93LCByYXRoZXIgdGhhbiBpbnZhbGlkYXRpbmcgaXQgb24KCSAgZXZlcnkgc2Nyb2xsIGFjdGlvbi4KCS0gQSBidWcgb3IgdHdvIGdvdCBzcXVhc2hlZC4KCS0gTWFueSBjb2RlIGNsZWFudXBzLCBzaW1wbGlmaWNhdGlvbnMsIGV0Yy4KCS0gU29tZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc3VwcG9ydCBmb3IgJ2ZpbGUnLCAnbmFtZScsIGFuZCAnbW9kZScgaW4gLnNwZWMgZmlsZXMuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWtlIGhleCBkaWdpdHMgc3RhdGljIGNvbnN0ICYgc2hhcmUgdGhlbS4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50YXRpb24gYW5kIHRlc3QgZm9yIFNIQ29weUtleUEvVy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeCB0aGUgYmVoYXZpb3Igb2YgR2V0T3ZlcmxhcHBlZFJlc3VsdCgpIGFuZCBXU0FHZXRPdmVybGFwcGVkUmVzdWx0KCkKCXdpdGggbm9uLW1hbnVhbC1yZXNldCAoYXV0by1yZXNldCkgZXZlbnRzIGluIHRoZSBPVkVSTEFQUEVEIHN0cnVjdHVyZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUluc3RhbGwgdGNoYXIuaC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVNwZWMgZmlsZXMgZG9jdW1lbnRhdGlvbi4gQWRkZWQgaW5mb3JtYXRpb24gYWJvdXQgd2lkZSBzdHJpbmdzLiBCYXNlZAoJb24gY29tbWVudHMgYnkgUGF0cmlrIFN0cmlkdmFsbC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBNaWNoYWVsIEJlYWNoIDxtaWNoYWVsYkBpZWVlLm9yZz4KCUZpeGVkIGJ1ZmZlciBzaXplIGluIERJUl9UcnlNb2R1bGVQYXRoIGZvciBXaW4zMiBtb2R1bGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaCwgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaCwKCSAgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmM6CglSZW1vdmVkIHRoZSBfX3VpbnQqIHR5cGVzIGZyb20gYmFzZXRzZC5oIHNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW5kZXIKCVdpbmRvd3MuIEZpeGVkIGEgZmV3IG90aGVyIGlzc3VlcyB3aXRoIHR5cGUgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBuYW1lIGRpcmVjdGl2ZSBmcm9tIHRoZSAuc3BlYyBmaWxlIHRvIHRoZSBNYWtlZmlsZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbmFtaW5nIHRoZSBETEwgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU5ldyBDVVBTIGxpYnJhcmllcyByZXR1cm4gIm5vbmUiIGFzIGRlZmF1bHQgcHJpbnRlciBpbnN0ZWFkIG9mIE5VTEwuCgoJKiBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLCBkbGxzL3VzZXIvZGRlbWwuc3BlYywKCSAgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSBhbGwgc3BlYyBmaWxlcyBncmVwLWFibGUuCgoJKiBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L3dpbmUuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlZCBtb2RlIHNldHRpbmcgb3V0IG9mIC5zcGVjIGZpbGUgaW50byBNYWtlZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdyZWF0bHkgaW1wcm92ZWQgZHJhd2luZyBjb2RlOiBlbGltaW5hdGVzIGFsbCBmbGlja2VyLCBmYXN0ZXIsIGNsZWFuZXIKCXRpY3MgZHJhd2luZywgYmV0dGVyIHRvb2x0aXAgcG9zaXRpb25pbmcsIGNvZGUgY2xlYW51cHMgYW5kCglzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBSZXdyaXRlIHRoZSBkcmF3aW5nIGNvZGUuIEl0IG5vdyBpcyBtdWNoIHNtYWxsZXIsIGVhc2llciB0byBmb2xsb3csCgkgIGFuZCBmYXN0ZXIuIE1vcmVvdmVyLCBpdCBub3cgc3VwcG9ydHMgdGhlIGR3Um9wIG9wZXJhdGlvbiwgYW5kIGl0IGlzCgkgIGluIGdvb2Qgc2hhcGUgdG8gc3VwcG9ydCB0aGUgbWlzc2luZyBmZWF0dXJlcy4KCS0gRHJhdyB0aGUgZHJhZ2dlZCBpbWFnZSBzZW1pLXRyYW5zcGFyZW50bHkgKHdpbGwgd29yayB3aGVuIHdlIHN1cHBvcnQKCSAgYWxwaGEgYmxlbmRpbmcpLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIEltYWdlTGlzdCBzdGF0ZXMgKElMU18qKSBkZWZpbml0aW9ucy4KCjIwMDItMDktMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL2FwaWJ1Zi5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi90ZXN0cy9hcGlidWYuYywKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLCBkbGxzL25ldGFwaTMyL3drc3RhLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbG0uaCwgaW5jbHVkZS9sbWFjY2Vzcy5oLAoJICBpbmNsdWRlL2xtYXBpYnVmLmgsIGluY2x1ZGUvbG1jb25zLmgsIGluY2x1ZGUvbG1lcnIuaCwKCSAgaW5jbHVkZS9sbXdrc3RhLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgYnVmZmVyIG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhIGNvdXBsZSBvZiB3b3Jrc3RhdGlvbgoJaW5mb3JtYXRpb24gZnVuY3Rpb25zLCBjcmVhdGVkIGNvbmZvcm1hbmNlIHRlc3RzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgdGhlIGdsb2JhbCBzZXR0aW5ncyBpbiBNYWtlLnJ1bGVzLmluIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlbQoJaW4gZWFjaCBNYWtlZmlsZS5pbiBmaWxlLgoJSW50cm9kdWNlIGdlbmVyYXRlX2Zyb21fdGVtcGxhdGUgd2hpY2ggcmVwbGFjZXMgZ2VuZXJhdGVfY29uZmlndXJlCglhbmQgZ2VuZXJhdGVfZ2VuZXJpYwoJU2ltcGxpZnkgdGhlIHdyYXBwZXIgZ2VuZXJhdGlvbiBieSB1c2luZyBnZW5lcmF0ZV9mcm9tX3RlbXBsYXRlLgoJUmVuYW1lIGNvbmZpZ3VyZS5pbiB0byBjb25maWd1cmUuYWMuIE5vdyB3b3JrcyB3aXRoIGF1dG9jb25mIDIuNXguCgoJKiB0b29scy93aW5lZHVtcC9SRUFETUUsIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3BlLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIEltcGxlbWVudCBkdW1waW5nIG9mIENPRkYgZGVidWcgc3ltYm9sIHRhYmxlLgoJLSBGaXggd2luZWR1bXAgc3ludGF4IGRlc2NyaXB0aW9uLgoJLSBTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmM6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQSBmZXcgbW9yZSBjb25mb3JtYW5jZSB0ZXN0cyBmb3IgaGVhcCBtZW1vcnkgYWxsb2NhdGlvbi4KCgkqIGluY2x1ZGUvbnRzZWNhcGkuaDogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBwb2xpY3kgYWNjZXNzIGNvbnN0YW50cywgdHlwZSBkZWZpbml0aW9uLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBJbXBsZW1lbnQgYXV0b3BhZ2luZy4KCS0gUmVtb3ZlIGluY29ycmVjdCBGSVhNRXMuCgktIFNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29kZSBjbGVhbnVwcyBhbmQgc2ltcGxpZmljYXRpb25zLCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFdpbmUgZGV0ZWN0aW9uIHdoZW4gdXNpbmcgdGhlIFdpbmUgc291cmNlIHRyZWUuCgoyMDAyLTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGRldGVjdGlvbiBvZiAnbG4gLXMnLgoJRml4IGNvbXB1dGF0aW9uIG9mIFRPUE9CSkRJUi4KCUluc3RhbGwgZXhlcyBhbmQgZGxscyBpbiAkKGxpYmRpcikuCgktV2wsLXJwYXRoIGlzIG5vdCByZWxldmFudCBmb3IgZGxscy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2ludGVybmwuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGhlIG5ldyBoZWFkZXIgd2ludGVybmwuaC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IEAxNjMsMTY0LDE2OCwxNzUsMTgyLDE4NywyODYsU0hTa2lwSnVuY3Rpb24uCglTdHViIEAyMDEsMjAyLDIwMywgRG9jdW1lbnQgbWFueSBmdW5jdGlvbnMuCglAMTY1OiBGaXggbWFzayBhbmQgZmxhZ3MgcGFyYW1ldGVyIG9yZGVyLgoJQDE3MjogV29ya3Mgb24gSUludGVybmV0U2VjdXJpdHlNZ3JTaXRlIGFuZCBJU2hlbGxWaWV3IHRvby4KCUAxOTksQDI2ODogTm8gcmV0dXJuIHZhbHVlLCBjYWxsIEAxNjkuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYSBmZXcgbWFjcm9zIGZvciBNUyBDL0MrKyBzcGVjaWZpYyBmZWF0dXJlcy4KCgkqIHRvb2xzL3dpbmVtYWtlciwgdG9vbHMvd2luZW1ha2VyLm1hbjoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIEZpeCAtLW5vbWZjIG9wdGlvbiB3aGljaCBpcyBjdXJycmVudGx5IGJyb2tlbi4KCS0gQWRkIC0tbm9kbGxzIG9wdGlvbiBmb3Igc21hbGwgYXBwcy4KCjIwMDItMDktMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NyeXB0MzIvbWFpbi5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zc2lwLmgsCgkgIGluY2x1ZGUvc2lwYmFzZS5oLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZCBhbmQgdXNlIHRoZSBoZWFkZXIgZmlsZXMgbXNzaXAuaCBhbmQgc2lwYmFzZS5oLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3JlZ2lzdHJ5MTYuYywgbWlzYy9yZWdpc3RyeS5jOgoJTW92ZWQgMTYtYml0IHJlZ2lzdHJ5IGZ1bmN0aW9ucyB0byBrZXJuZWwgZGxsIGFuZCBpbXBsZW1lbnRlZCB0aGVtIGJ5CgljYWxsaW5nIHVwIHRvIGFkdmFwaTMyLgoKCSogZGxscy9nZGkvZ2RpMTYuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIHdpbmRvd3MvcXVldWUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYywKCSAgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbm50Lmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVJ0bE50U3RhdHVzVG9Eb3NFcnJvcjogQWRkZWQgbmV3IE5UIHN0YXR1cyB0byBlcnJvciBjb2RlcyBtYXBwaW5nLAoJYWRkZWQgbWlzc2VkIGRlZmluaXRpb25zIG9mIHRoZSB1c2VkIGNvbnN0YW50cywgY3JlYXRlZCB1bml0IHRlc3QgZm9yCglzdWJzZXQgb2YgdGhlIG1hcHBpbmdzLgoKCSogY29udHJvbHMvdWl0b29scy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBJbXBsZW1lbnQgREZDU19UUkFOU1BBUkVOVC4KCS0gRml4IGluZGVudGF0aW9uLgoJLSBBZGQgcmVtYXJrIGFib3V0IHVuaW1wbGVtZW50ZWQgREZDX1BPUFVQTUVOVS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUGFzcyBpbmZvUHRyIGFyb3VuZCwgaW5zdGVhZCBvZiBod25kLgoJLSBJbXBsZW1lbnQgaG90IGN1cnNvci4KCS0gVXBkYXRlIGxpc3Qgb2YgdW5pbXBsZW1lbnRlZCBtZXNzYWdlcy4KCS0gU2ltcGxpZnkgdGhlIGNvZGUgZm9yIGVkaXRpbmcgbGFiZWxzLgoJLSBTdGFydCB3b3JraW5nIHRvd2FyZHMgbW9yZSB0eXBlLXNhZmUgZnVuY3Rpb25zLgoJLSBTbWFsbCBjb2RlIGNsZWFudXBzLgoJLSBTb21lIGRvY3UgdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggYnVnIGluIG1vdXNlIHBvc2l0aW9uIHJlYWRpbmcuCgktIFJlbW92ZSB1c2VsZXNzIGNvZGUuCgktIFNtYWxsIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCB0aGUgdGljcyBkcmF3aW5nIGNvZGUuCgktIEZpeCB0aGUgc2VsZWN0aW9uIGFyZWEgY2FsY3VsYXRpb24gJiBkcmF3aW5nLgoJLSBJbXBsZW1lbnQgVEJTX0RPV05JU0xFRlQuCgktIE1ha2UgdXNlIG9mIGZMb2NhdGlvbiAoVEJUU197VE9QLExFRlQsQlVUVE9NLFJJR0hUfSkuCgktIExvdHMgb2YgY29kZSBjbGVhbnVwcyBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSBUVE1fR0VUQlVCQkxFU0laRSBtZXNzYWdlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBBZGQgbWlzc2luZyBkZWNsYXJhdGlvbiBmb3IgVEJTX0RPV05JU0xFRlQgYW5kIFRUTV9HRVRCVUJCTEVTSVpFLgoJLSBGaXggaW5kZW50YXRpb24gZm9yIGEgYnVuY2ggb2YgdGhpbmdzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgdGhlIGRlZmF1bHQgQ1VQUyBwcmludGVyIGhhcyBubyBwcGQgZmlsZSwganVzdCB1c2UgdGhlIGZpcnN0CglwcmludGVyIHRoYXQgaGFzIG9uZSBhcyBXaW5kb3dzIGRlZmF1bHQgcHJpbnRlci4KCVN1cHBvcnQgUFJJTlRFUl9FTlVNX0NPTk5FQ1RJT05TIGluIHRoZSBkZWZhdWx0IHdheS4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIHRoZSBzY2FuZiBmYW1pbHkgcmVjb2duaXplIGNoYXJhY3RlcnMgYWdhaW4uCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIEFkZCAiLWxkbCIgZm9yIHdyYXBwZXIgYXBwcy4KCS0gZml4IE1ha2VmaWxlIGZvciAtLXdyYXAuCgktIEZpeCB3cmFwcGVyIGNvZGUgd2hpY2ggd2FzIGJyb2tlbiBmb3IgY29uc29sZSBhcHBzLgoKMjAwMi0wOS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaW5pc2ggdGhlIGNvbnZlcnNpb24gb2YgSFdORCB0byBhIHZvaWQqLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLCB0b29scy93aW5laW5zdGFsbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU29tZSBzbWFsbCB0eXBvIC8gcGhyYXNpbmcgZml4ZXMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgZGxscy9tYWtlX2RsbHMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgY3Jvc3MtY29tcGlsaW5nIHRlc3RzIHVzaW5nIG1pbmd3IG9uCglMaW51eCBpZiBhdmFpbGFibGUuCgoJKiBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9wcnRkcnYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3R3YWluL2RzbV9jdHJsLmMsIGRsbHMvdHdhaW4vdHdhaW5faS5oLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVByZXBhcmUgZGxscy97Y29tY3RsMzIsZ2RpLG1zdmlkZW8sc2V0dXBhcGksc2hlbGwzMix0d2Fpbix3aW5tbX0gZm9yCgl0aGUgY29udmVyc2lvbiBvZiBIV05EIHRvIGEgdm9pZCouCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgaW5jbHVkZS9udHNlY2FwaS5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglMc2FOdFN0YXR1c1RvRG9zRXJyb3IgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJV1MyX3JlZ2lzdGVyX2FzeW5jX3NodXRkb3duKCk6IFRyeSBpbW1lZGlhdGUgY29tcGxldGlvbiwgaW4gY2FzZSBhbgoJYXBwIG5ldmVyIHdhaXRzIGZvciBhbnl0aGluZy4KCVdTX2FjY2VwdCgpOiBBdm9pZCBjcmFzaCBpZiBhZGRyIHBhcmFtZXRlciBpcyBOVUxMLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHJlZ2lzdHJ5IE1JTUUgdHlwZSBmdW5jdGlvbnMgQDMyNC0zMjkuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW46CglMaW5rIGFsbCByZW1haW5pbmcgZGxscyBleGNlcHQga2VybmVsMzIgYXMgc2VwYXJhdGVkIGRsbHMsIGJ5Cgl0ZW1wb3JhcmlseSBleHBvcnRpbmcgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHByb3Blcmx5CglzZXBhcmF0ZWQgeWV0LgoKCSogbWlzYy92ZXJzaW9uLmM6IEZpeGVkIGNoZWNraW5nIG9mIHNwZWNpYWwgZGxsIG5hbWVzLgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNZW50aW9uIDMyYml0IGNvb3JkaW5hdGVzIHN1cHBvcnQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgaW5jbHVkZSB3aW5lL3VuaWNvZGUuaC4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm90b3R5cGVzIHRvIGFsbCBmdW5jdGlvbnMuCglNYWtlIHdpbmVtYWtlciB3b3JrIGluICdzdHJpY3QnIG1vZGUuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBAMTM4LEAxNTcsQDE4MCxAMTk3LEAyMDQuCglAMTUxLTE1NzogUGFyYW1ldGVycyBhcmUgY29uc3QuCglAMzYgaW5zZXJ0cyBNRl9CSVRNQVAncy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXhlZCB0eXBvIGluIGNoZWNrX2J1ZmZlcl9zZSgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudGVkIFNIQ3JlYXRlU3RkRW51bUZtdEV0Yy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRWxpbWluYXRlIGZsaWNrZXIuCgktIE11Y2ggaW1wcm92ZWQgdGh1bWIgZHJhZ2dpbmcuCgktIEZpeCB0b29sdGlwIGJlaGF2aW91ci4KCS0gRml4IHRpY2sgaGFuZGxpbmcuCgktIFN0cmVhbWxpbmVkIGRyYXdpbmcgY29kZS4KCS0gRGVjZW50IHBhZ2luZyB3aWR0aC4KCS0gSGFuZGxlIE9PTSBncmFjZWZ1bGx5LgoJLSBBZGQgcHJvcGVyIG5vdGlmaWNhdGlvbnMuCgktIEZpeCByYW5nZSBzZXR0aW5nLgoJLSBTdGFydCBzdXBwb3J0IGZvciBjdXN0b20gZHJhdy4KCS0gRml4IGEgYnVuY2ggb2YgYnVncy4KCS0gQ29kZSBjbGVhbnVwcy4KCS0gVXBkYXRlIGRvY3VtZW50YXRpb24uCgktIFNwYWNpbmcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgZ2VuZXJpYyBub3RpZmljYXRpb24gc3VwcG9ydCBmb3IgdGhlIGNvbW1vbiBjb250cm9scy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIENvbXBsZXRlIHN1cHBvcnQgZm9yIHJnYntGZyxCa30gaW4gRHJhd0luZGlyZWN0LgoJLSBSZW5hbWUgVk9JRCB0byB2b2lkLgoJLSBEb2N1bWVudGF0aW9uIGNsZWFudXAuCgktIEZpeCBJTERfVFJBTlNQQVJFTlQgaGFuZGxpbmcuCgoyMDAyLTA5LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDIwOTA0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA5LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBNYWtldGVzdC5ydWxlcyBvbiBkaXN0Y2xlYW4uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6CglQZWVrTmFtZWRQaXBlOiBDaGVjayBpZiB0aGUgcGlwZSB3YXMgY2xvc2VkIHdoZW4gdGhlcmUgYXJlIDAgYXZhaWxhYmxlCglieXRlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBVd2UgQm9ubmVzKS4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgQXNzb2MqIGZ1bmNzIChidXQgbm90IHVuZGVybHlpbmcgSVF1ZXJ5QXNzb2NpYXRpb25zIG9iamVjdCkuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggSW1hZ2VMaXN0X0dldEljb24gdG8gdXNlIEltYWdlTGlzdF8qIGZ1bmN0aW9ucyBmb3IKCSAgY29tcGxldGVuZXNzLgoJLSBUaW55IGNvZGUgY2xlYW51cHMuCgktIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gVW5pY29kaWZpY2F0aW9uICh1c2UgVW5pY29kZSBmdW5jdGlvbnMgJiB0eXBlcyBjb25zaXN0ZW50bHkpLgoJLSBQYXNzIGluZm9QdHIgYXJvdW5kIGluc3RlYWQgb2YgaHduZC4KCS0gUHJvcGVyIHR5cGUtc2FmZSBzaWduYXR1cmVzIGZvciBmdW5jdGlvbnMgcHJvY2Vzc2luZyBtZXNzYWdlcy4KCS0gRml4IHRoZSB0eXBlcyBmb3Igc29tZSBvZiB0aGUgY29udHJvbCdzIHBhcmFtZXRlcnMuCgktIEltcGxlbWVudCBbR1NdRVRfVU5JQ09ERUZPUk1BVC4KCS0gRmV3IGluZGVudGF0aW9uIGFuZCBzcGFjaW5nIGZpeGVzLgoJLSBUaWR5IHVwIGRvY3UuCgoJKiB0b29scy93aW5laW5zdGFsbDogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIHN5bWxpbmtzIGZvciB3aW5oZWxwLgoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLAoJICB3aW5kb3dzL3dpbnByb2MuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9zdGF0aWMuYywKCSAgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLAoJICBkbGxzL3VzZXIvd25kMTYuYywgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBpbmNsdWRlL3dpbi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gUmVuYW1lIFdJTl9IYW5kbGUxNiB0byBIV0ROXzE2IGFuZCBtYWtlIGl0IGEgbWFjcm8uCgktIFByZXBhcmUgdXNlci5kbGwgZm9yIHRoZSBjaGFuZ2Ugb2YgSFdORCB0byBhIHZvaWQqLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDEwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmMsCgkgIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MmYuYzoKCUFkZGVkIERQTUkgc2VnbWVudHMgc3RydWN0dXJlIGFuZCByZWxhdGVkIGZ1bmN0aW9uIHRvIGF2b2lkIGRpcmVjdAoJcmVmZXJlbmNlcyB0byBkb3NtZW0gaW50ZXJuYWwgdmFyaWFibGVzLgoJRGV0ZXJtaW5lIEJJT1Mgc3lzdGVtIG9mZnNldHMgYXQgY29tcGlsZSB0aW1lLgoKCSogb2JqZWN0cy9mb250LmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIFJldHVybiBvbGQgY29kZSBmb3IgaGFuZGxpbmcgcGFyYW1ldGVycyB0byBHZXRDaGFyYWN0ZXJQbGFjZW1lbnQgKCsKCSAgZml4IGhlYXAgb3ZlcnJ1biBpbiBpdCkuIE5ldyBjb2RlIGRpZCBub3QgY29ycmVjdGx5IG1hdGNoIHRoZSBXaW5kb3dzCgkgIGJlaGF2aW91ci4KCS0gQW1lbmQgdGhlIEJpRGkgYWxnb3JpdGhtIHNvIHRoYXQgbWFueSBzdHJpbmdzIHdpbGwgbm93IHByb2R1Y2UgcXVpdGUKCSAgcmVhZGFibGUgb3V0cHV0LgoKCSogaW5jbHVkZS93aW5nZGkuaCwgdG9vbHMvd3JjL25ld3N0cnVjLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXhlZCB0eXBvIGluIEJJVE1BUFY0SEVBREVSIHN0dWN0dXJlLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVNIRmlsZU9wZXJhdGlvbkE6IGltcHJvdmVkLCBpbXBsZW1lbnRlZCBGT19NT1ZFIGFjdGlvbiwgYWRkZWQgbW9yZQoJY29uZm9ybWFuY2UgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgdXBkb3duIGNsZWFudXAuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBzb21lIG1pc3NpbmcgSW1hZ2VMaXN0IGRlZmluaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IHN1cHBvcnQgZm9yIHhCaXRtYXAgYW5kIHlCaXRtYXAgaW4gSW1hZ2VMaXN0X0RyYXdJbmRpcmVjdAoJLSBzbWFsbCBjb2RlLCBkb2NzLCBhbmQgbWVzc2FnZXMgY2xlYW51cHMKCgkqIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYzogRGF2aWQgRC4gSGFnb29kIDx3b3diYWdnZXJAc2t0Yy5uZXQ+CglGaXhlZCBMaW51eCAyLjIgZXZlbnQgQVBJIGNvZGUuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBjb25zb2xlIHNpemluZyBhdCBzdGFydHVwLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fdXNlci5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY29uZmlndXJhdGlvbiBvbiBwZXIgYXBwbGljYXRpb24gYmFzaXMuCglBZGRlZCBhYmlsaXR5IHRvIG92ZXJyaWRlIHBhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSBjb25zb2xlCgljcmVhdG9yLgoJUmV2aXNpdGVkIGEgYml0IHdpbmVjb25zb2xlIHN0YXJ0dXAuCglBZGRlZCBkaWFsb2cgcGFydCBmb3Igd2luZG93IGNsb3NpbmcgYXQgcHJvY2VzcyB0ZXJtaW5hdGlvbi4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvY29uc29sZV9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBwYXNzaW5nIHNvbWUgY29uc29sZSBwYXJhbWV0ZXJzIGF0IHdpbmVjb25zb2xlIGNyZWF0aW9uIGluc3RlYWQgb2YKCXN1Y2Nlc3NpdmUgc2VydmVyIHJlcXVlc3RzLgoJQmV0dGVyIHByb3RvdHlwZXMgZm9yIGNvbnNvbGUgZnVuY3Rpb25zIGluIGtlcm5lbC4KCVNvbWUgbWlub3IgY29uc29sZSBjcmVhdGlvbiBmaXhlcy4KCjIwMDItMDgtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9udGRsbC90aW1lLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgaW5jbHVkZS9tbWRkay5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9hdG9tLmMsIG1zZG9zL2Rvc2NvbmYuYywKCSAgbXNkb3MvdnhkLmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHdpbjMyL25ld2Zucy5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGNvbXBhdGliaWxpdHkgZml4ZXMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL1NrLnJjOiBSZXBhaXJlZCBTbG92YWsgcmVzb3VyY2VzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9TaS5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIFNsb3ZlbmlhbiByZXNvdXJjZXMuCgoJKiBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGxvYWRlci90YXNrLmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsCgkgIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDEyLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDFhLmMsCgkgIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJmLmMsCgkgIG1zZG9zL2ludDRiLmMsIG1zZG9zL2ludDVjLmMsIG1zZG9zL3Z4ZC5jLCB3aW4zMi9kZXZpY2UuYywKCSAgd2luZG93cy9pbnB1dC5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsCgkgIGRsbHMva2VybmVsL3dpbmRlYnVnLmMsIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsCgkgIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludDEwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvaW50MTcuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvaW50NjcuYywgZGxscy93aW5lZG9zL3htcy5jOgoJTW92ZWQgaW50ZXJuYWwgY29udGV4dCBtYWNyb3Mgb3V0IG9mIHdpbm50LmguCglBZGRlZCBTRVRfQVggZXRjLiBtYWNyb3MgdG8gYXZvaWQgbm9uLXBvcnRhYmxlIHBvaW50ZXIgbWFuaXB1bGF0aW9ucy4KCgkqIGRlYnVnZ2VyL3NvdXJjZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUxvYWQgc291cmNlIGZpbGVzIHRocnUgV2luMzIgQVBJLgoKCSogZGVidWdnZXIvZ2RicHJveHkuYywgZGVidWdnZXIvbWVtb3J5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBnZGJwcm94eSBzdXBwb3J0IGZvciBwcGMsIGFkZGVkIG1pc3NpbmcgR0VUX0lQIGZvciBtZW1vcnkuYy4KCjIwMDItMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbmV0YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwKCSAgZGxscy9hdmljYXAzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWNhdC8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmU6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglVcGRhdGUgc29tZSAuY3ZzaWdub3JlIGZpbGVzIGZvciBidWlsZGluZyBvbiBXaW5kb3dzLgoKCSogZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywKCSAgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDEwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgZGxscy93aW5lZG9zL3htcy5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglGaXhlZCBzb21lIGRsbCBzZXBhcmF0aW9uIGlzc3Vlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IENCRVNfRVhfTk9TSVpFTElNSVQgc3R5bGUuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gUHJvcGVyIGhhbmRsaW5nIG9mIEdESTMyIGFuZCBVU0VSMzIuCgktIEFkZGVkIFBBQ0tBR0VfKiBmb3IgdGhlIGNvbmZpZy5oIGdlbmVyYXRpb24uCgktIFByb3BlciBpbmNsdWRlIHBhdGggZm9yIHRoZSByZXNvdXJjZSBjb21waWxlci4KCS0gTWlub3IgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgaW5jbHVkZS93aW5udC5oLCBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgSWFyIChJbnN0cnVjdGlvbiBBZGRyZXNzIFJlZ2lzdGVyKSBpbnN0ZWFkIG9mIEZpbGxbMF0uCglzaWdpbmZvLnNpX2NvZGUgdXNlcyB0aGUgbG93ZXIgMTZiaXQgZm9yIHRoZSB0eXBlIG9mIHRoZSBleGNlcHRpb24uCgoJKiBwcm9ncmFtcy9jbG9jay9TaS5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglTbG92ZW5pYW4gcmVzb3VyY2VzIGZvciBjbG9jay4KCjIwMDItMDgtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2lucHV0LmM6IFBlciBOeXN0cm9tIDxjZW50YXVyQG5ldG1hZ2ljLm5ldD4KCVNldCB0aGUgZmxhZyBpbiBHZXRDdXJzb3JJbmZvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZWR1Y2UgdGhlIG51bWJlciBvZiBtZXNzYWdlcyBiZWluZyBwYXNzZWQgdG8gaXRzZWxmIGJ5IHVzaW5nIHRoZQoJICBpbnRlcm5hbCByb3V0aW5lcy4KCS0gRml4IHByb2JsZW0gaW4gX1NldEljb25TcGFjaW5nIGZvdW5kIGJ5IHJlY2VudCBjaGFuZ2UuCgktIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIGNvcnJlY3QgaWNvbiBzaXppbmcuCgktIEEgZmV3IGV4dHJhIHRyYWNlcy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUNyZWF0ZSB0aGUgc2NyYXRjaCByZWdpb24gYmVmb3JlIGNvcHlpbmcgaWYgbmVjZXNzYXJ5LgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS93aW5kZWYuaCwKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbXN2aWRlby92ZncxNi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSFBBTEVUVEUgdG8gYSB2b2lkKi4KCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9wYWxldHRlLmM6CglBZGRlZCBpbnRlcm5hbCAzMi1iaXQgdmVyc2lvbnMgb2YgR0RJU2VsZWN0UGFsZXR0ZSBhbmQKCUdESVJlYWxpemVQYWxldHRlLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjOgoJTWFyY28gUGlldHJvYm9ubyA8cGlldHJvYm9AcGlldHJvYm8uY29tPgoJVXNlIGFsc2EvYXNvdW5kbGliLmggaW5zdGVhZCBvZiBzeXMvYXNvdW5kbGliLmggaWYgcG9zc2libGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJU3VwcG9ydCBmb3IgSFdORF9NRVNTQUdFLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBXU0FTdGFydHVwKCkgZG9uJ3QgdG91Y2ggdGhlIGxwVmVuZG9ySW5mbyBmaWVsZCBvZiB0aGUgV1NBREFUQQoJc3RydWN0dXJlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglSZWx5IG9uIHRoZSB3aW5kb3cgbWFuYWdlciB0byBzaG93IGFuZCBoaWRlIHBvcHVwIHdpbmRvd3MgZm9yIHVzLgoKMjAwMi0wOC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNhY20vd2luZW1wMy9kZWNvZGVfaTM4Ni5jLCBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsCgkgIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLAoJICBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmMsIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLAoJICBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcGhlbHBlci5oLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jLAoJICB0b29scy93aW5lZHVtcC9vdXRwdXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCB0cmFpbGluZyB3aGl0ZSBzcGFjZS4KCgkqIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXBfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTmV3IHRvb2wgd2luYXBpX2NsZWFudXAgZm9yIGRvaW5nIHNpbXBsZSBhdXRvbWF0aWMgY2xlYW51cHMuCglDdXJyZW50bHkgaXQgcmVtb3ZlcyB0cmFpbGluZyB3aGl0ZSBzcGFjZSBmcm9tIHRoZSAuW2NoXSBmaWxlcy4KCgkqIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2lvcG9ydHMuYywgb2JqZWN0cy9mb250LmMsCgkgIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3RpbWVyLmMsCgkgIHdpbjMyL2V4Y2VwdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsCgkgIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9ycGNkY2VwLmgsCgkgIGxpYnJhcnkvY29uZmlnLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgbWVtb3J5L3JlZ2lzdHJ5LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TVkMgY29tcGF0aWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsCgkgIHdpbmRvd3MvaW5wdXQuYzoKCVBlciBOeXN0cm9tIDxjZW50YXVyQG5ldG1hZ2ljLm5ldD4KCUltcGxlbWVudGVkIEdldEN1cnNvckluZm8uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2FkdmFwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2NvbWN0bDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2tlcm5lbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL250ZGxsLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JwY3J0NC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGVsbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NobHdhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXJsbW9uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VzZXIzMi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB3aW5ldGVzdCdzIFBlcmwgbW9kdWxlcyB1c2luZyB3aW5hcGlfZXh0cmFjdC4KCgkqIGNvbnRyb2xzL21lbnUuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWFrZSBzdXJlIHdlIGNsZWFyIHRoZSBvd25pbmcgd2luZG93J3MgaE1lbnUgaW4gRGVzdHJveU1lbnUoKS4KCgkqIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaCwKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9iaXRtYXAuaCwKCSAgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvZ2xvYmFsLmgsIGluY2x1ZGUveDExZm9udC5oLAoJICBtZW1vcnkvYXRvbS5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywKCSAgb2JqZWN0cy9yZWdpb24uYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIGRsbCBzZXBhcmF0aW9uIGlzc3Vlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogUmVtb3ZlZCBzeXN0ZW0gc3BlY2lmaWMgR2V0VGVtcFBhdGhBIHRlc3QuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBUd2VhayBwb3NpdGlvbiBvZiBzeXN0ZW0gbWVudSBzbWFsbCBpY29uLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGltcGxlbWVudCBDQkVOX0RSQUdCRUdJTgoJLSByZW1vdmUgdXNlbGVzcyBGSVhNRXMKCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBicmVha2luZyBETEwgbG9hZC4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gdGVzdC4KCgkqIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglCaXRCbHQgYW5kIFN0cmV0Y2hCbHQgZ2VuZXJhdGUgTUVUQV9ESUJTVFJFVENIQkxUIHJlY29yZHMuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHNvbWUgb2YgdGhlIHN5c3RlbSBtZXRyaWNzIHRvIG1vcmUgY2xvc2VseSBtYXRjaCBXaW5kb3dzCgl2YWx1ZXMuCgoJKiBjb250cm9scy9jb21iby5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWYgd2UgaGF2ZSBubyBkcm9wZG93biBoZWlnaHQgZ2l2ZSBvdXJzZWx2ZXMgYSBtaW5pbXVtIGhlaWdodCBvZiA1CglpdGVtcyBvciBtYXggaXRlbXMgKHdoaWNoZXZlciBpcyBsZXNzKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglGaXhlZCBXTV9HRVRURVhUIGhhbmRsaW5nIHRvIGF2b2lkIHN0cm5jcHkgYW5kIHJldHVybiBjb3JyZWN0IGxlbmd0aHMuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3VzZXIvbXNnMTYuYywKCSAgZGxscy91c2VyL3Jlc291cmNlLmMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSEFDQ0VMIHRvIGEgdm9pZCouCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wbGVtZW50IHdyYXBwZXIgY2FsbHMgZm9yIHRoZSAxNiBiaXQgR2xvYmFsQXRvbSogZnVuY3Rpb25zLgoKMjAwMi0wOC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJQWxleGFuZGVyIEdvdHR3YWxkIDxBbGV4YW5kZXIuR290dHdhbGRAaW5mb3JtYXRpay50dS1jaGVtbml0ei5kZT4KCUF2b2lkIGNyYXNoIGlmIG5vIGRlZmF1bHQgY3VwcyBwcmludGVyIGlzIHNldC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQWRkZWQgYSBjb3VwbGUgb2YgbGlzdHZpZXcgZGVmaW5pdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglGaXhlZCBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIGltcHJvdmVkIHJlZGVmaW5pdGlvbiBlcnJvcgoJKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSm9uIEdyaWZmaXRocykuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93cHAvd3BwLmMsIHRvb2xzL3dwcC93cHAuaCwgdG9vbHMvd3JjL3dyYy5jOgoJVHJ5IHRvIGRlcml2ZSB0ZW1wIGZpbGUgbmFtZXMgZnJvbSBvdXRwdXQgZmlsZSBuYW1lcyBmb3IgYmV0dGVyCglwb3J0YWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSB0aGUgaWNvbiBzcGFjaW5nIHdoZW4gc2V0dGluZyB0aGUgaW1hZ2UgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgZXhwZWN0cyB0aGUgZWRpdCB3aW5kb3cgdG8gaGFuZyBhcm91bmQgYW5kIGJlIHZhbGlkLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSBtYXggd2FpdCB0aW1lIGZvciBzZWxlY3Rpb24gbm90aWZpZXMuCgktIEFkZCBuZXcgZnVuY3Rpb24gdG8gdGhlIHgxMWRydiB0byBnZXQgY2xpcGJvYXJkIGZvcm1hdCBuYW1lcyBvZgoJICBleHRlcm5hbGx5IHJlZ2lzdGVyZWQgZm9ybWF0cy4KCS0gV2hlbiBhIGNsaXBib2FyZCBmb3JtYXQgaXMgcmVnaXN0ZXJlZCB3ZSBzaG91bGQgcGFzcyB0aGUgZ2xvYmFsIGF0b20KCSAgdmFsdWUgYXMgdGhlIGZvcm1hdCBpZGVudGlmaWVyLgoJLSBDbGlwYm9hcmQgZm9ybWF0IG5hbWUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgY2FzZSBpbnNlbnNpdGl2ZS4KCS0gU2VyaWFsaXplIG1ldGFmaWxlIGJpdHMgd2hlbiByZXF1ZXN0ZWQgdmlhIGEgY2xpcGJvYXJkIHNlbGVjdGlvbi4KCS0gUmV0dXJuIGZvcm1hdCBpZHMgZm9yIG5hdGl2ZSBmb3JtYXRzIHdoZW4gbWFwcGluZyBmcm9tIHByb3BlcnRpZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL250ZGxsL3NlYy5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvY29uZmlnLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmM6CglBZGRlZCB3aW5lX2dldF91c2VyX25hbWUgZnVuY3Rpb24gYW5kIGdvdCByaWQgb2Ygc29tZSBvZiB0aGUgZ2V0cHd1aWQKCXBvcnRhYmlsaXR5IHN0dWZmLgoJTW9yZSBwb3J0YWJsZSBwcmludGYgZm9ybWF0cyBmb3IgNjQtYml0IHR5cGVzLgoKCSogZGxscy9udGRsbC90aW1lLmMsIHdpbjMyL25ld2Zucy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TVkMgbG9uZyBsb25nIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgQ0JFU19FWF9QQVRIV09SREJSRUFLUFJPQyBmb3IgdGhlIENvbWJvRXggY29udHJvbC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEhsZWIgVmFsb3NrYSA8ZWxfZ2xvYnVzQHR1dC5ieT4KCUFkZGVkIEJlbGFydXNpYW4ga2V5Ym9hcmQuCgoJKiBjb250cm9scy9lZGl0LmM6IFpvbHRhbiBOYWd5IDxuYWd5em9saUBuZXRlbGVrLmh1PgoJTW92ZSBjYXJldCB3aGVuIHNlbGVjdGluZyBhIHRleHQgYXJlYSB3aXRoIHRoZSBtb3VzZS4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZvcndhcmQgc2hsd2FwaS4zOTMgdG8gQ3JlYXRlRGlhbG9nSW5kaXJlY3RQYXJhbVcuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNhY2hlIGZpbGUgaGFuZGxlcyBmb3IgTkUgZXhlY3V0YWJsZSBtb2R1bGVzIHNvIHRoYXQgd2UgZG9uJ3QKCWxvY2sgdGhlIENEUk9NLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9kcml2ZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGJ1bmNoIG9mIG5ldyByZWdyZXNzaW9uIHRlc3RzLgoKCSogY29uZmlndXJlLmFjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLCBjb25maWd1cmU6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVNIRmlsZU9wZXJhdGlvbjogSW1wbGVtZW50ZWQgdGhlIEZPX1JFTkFNRSBhY3Rpb24sIGZpeGVkIEZPX0RFTEVURSwKCWltcGxlbWVudGVkIHVuaXQgdGVzdHMgZm9yIHRoZXNlIHR3byBhY3Rpb25zLgoKCSogd2luMzIvZGV2aWNlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IG1vc3Qgb2YgdGhlIGZpbGUgQVBJcyB0byBVbmljb2RlLgoKCSogZmlsZXMvZmlsZS5jOgoJRml4ZWQgcGVybWlzc2lvbiBjaGVjayB3aGVuIHJlbmFtaW5nIGEgZGlyZWN0b3J5IChiYXNlZCBvbiBhIHBhdGNoIGJ5CglBbmRyaXkgUGFsYW1hcmNodWspLgoKCSogd2luZG93cy93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgU2V0V2luZG93UG9zIGZsYWdzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oLCBpbmNsdWRlL2RyaXZlLmgsCgkgIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWlzYy9yZWdpc3RyeS5jLAoJICBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2lvcG9ydHMuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbW9zdCBvZiB0aGUgZmlsZSBBUElzIHRvIFVuaWNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QbC5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJSmFjZWsgQmF0b3IgPGpiYXRvckBtYW4ucG96bmFuLnBsPgoJQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9ucy4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2VydmVyL21hcHBpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglSZWxheCBhIGJpdCBQRSBjb25zaXN0ZW5jeSBjaGVja3MuCglSZXR1cm4gQklOQVJZX0RPUyB0eXBlIGlmIGV4dGVuZGVkIGhlYWRlciB3YXMgbm90IHJlY29nbml6ZWQuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBsb29rLmNhPgoJU2V0V2luZG93UG9zIHNlbmRzIFdNX1dJTkRPV1BPU0NIQU5HRUQgZXZlbiBpZiBpdCBoYXMgYmVlbiB0b2xkIG5vdCB0bwoJc2VuZCBXTV9XSU5ET1dQT1NDSEFOR0lORy4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXggZm9yIGxvdHMgb2Ygd2FybmluZ3Mgd2hlbiBidWlsZGluZyBvbiBNaW5ndzMyLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUNvcnJlY3QgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGZvciBTdHJSU3RySUEvVy4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUltcGxlbWVudGVkIHNpZ25hbCBoYW5kbGluZyBmb3IgUFBDLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL21zdmNtYWtlcjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gd29ya3NwYWNlIGFuZCBwcm9qZWN0IGZpbGUgbWFrZXIuCgoyMDAyLTA4LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MWEuYywgbXNkb3MvaW50MjEuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luMzIvdGltZS5jLAoJICBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsCgkgIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3NlYy5jLCBmaWxlcy9maWxlLmMsCgkgIGZpbGVzL3NtYi5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9tYWluLmMsCgkgIG1pc2MvdmVyc2lvbi5jLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TVkMgY29tcGF0aWJpbGl0eSBmaXhlcy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBhcnRpYWwgZml4IGZvciBicm93c2UgZGlhbG9nIGluIFByb2dyYW0gTWFuYWdlci4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVR3ZWFrcyB0byBpbXByb3ZlIHBsYXliYWNrIHBlcmZvcm1hbmNlIGFuZCByZWR1Y2Ugc291bmQgZ2xpdGNoZXM6CgktIHdvZEdldFBvc2l0aW9uIGRvZXMgbm90IHNlbmQgYW4gdXBkYXRlIG1lc3NhZ2UgdG8gdGhlIHBsYXllciB0aHJlYWQ7Cgl0aGlzIHJlZHVjZXMgdGhlIGFjY3VyYWN5IG9mIHRoZSByZWFkb3V0IGZyb20gYnl0ZS1hY2N1cmFjeSB0byBuZWFyCglmcmFnbWVudC1hY2N1cmFjeSwgYnV0IHdlIHNhdmUgMi00IGNvbnRleHQgc3dpdGNoZXMgYW5kIGtlcm5lbAoJc2NoZWR1bGluZyBwZW5hbHRpZXMuCgktIGlmIEZlZWREU1AgcnVucyBvdXQgb2YgZGF0YSwgZG8gbm90IGZsdXNoIG91dHB1dCBidWZmZXJzIGJlZm9yZQoJbm90aWZpY2F0aW9ucyBhcmUgc2VudCBhbmQgZ2l2ZW4gdGhlIGNoYW5jZSB0byBwcm92aWRlIG1vcmUgc291bmQgZGF0YS4KCURvIG5vdCBmbHVzaCBiZWZvcmUgd2UncmUgZG93biB0byB0aGUgbGFzdCBmcmFnbWVudC4KCS0gbWVzc2FnZXMgdG8gdGhlIHBsYXllciB0aHJlYWQgYXJlIHNpZ25hbGVkIHVzaW5nIFVuaXggcGlwZXMgaW5zdGVhZAoJb2YgV2luMzIgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMsIHRvIGF2b2lkIGhhdmluZyB0aGUgcGxheWVyIHRocmVhZAoJd2FpdCBmb3IgdGhlIHdpbmVzZXJ2ZXIgKGFuZCBjb250ZXh0IHN3aXRjaGVzIGZyb20vdG8gaXQpIGJlZm9yZSB0aGUKCWl0IGNhbiBmZWVkIG1vcmUgZGF0YSB0byB0aGUgc291bmQgY2FyZC4KCS0gcmluZyBidWZmZXIgc2l6ZSBpcyBpbmNyZWFzZWQgZnJvbSAzMCB0byAxOTIgdG8gc3VwcG9ydCBzb21lIGdhbWVzCgl0aGF0IGZpcmVzIDEyOCBtZXNzYWdlcyBhdCBvbmNlIHRvIGRldGVybWluZSBETUEgYnVmZmVyIHNpemUuCgoJKiBkZWJ1Z2dlci9pbmZvLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCAnd2F0Y2gnIGNvbW1hbmQgdG8gdGhlIHdpbmVkYmcgaGVscCBjb21tYW5kLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9taXNjLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJTWFrZSB3aW5lZHVtcCBjb21waWxhYmxlIGJ5IE1TVkMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3Npbmcgb2YgUFNNX1NFVENVUlNFTElEIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IENCRVNfRVhfQ0FTRVNFTlNJVElWRQoJLSBmaXggc2V2ZXJlIGJ1ZyBpbiBDQl9GSU5ERVhBQ1RTVFJJTkcKCS0gc21hbGwgY2xlYW51cHMKCgkqIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJTW92ZWQgbW9zdCBvZiB0aGUgMTYtYml0IGZ1bmN0aW9ucyBpbiBkbGxzL21zdmlkZW8gdG8gbXN2aWRlbzE2LmMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgaW5jbHVkZS93aW5udC5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglTZXRUb2tlbkluZm9ybWF0aW9uIHN0dWIgaW1wbGVtZW50YXRpb24sIGEgZmV3IG90aGVyIHNtYWxsIGNoYW5nZXMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdXJsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFVybEhhc2hXLgoKMjAwMi0wOC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURvbid0IG1hcC91bm1hcCBhIHRvcC1sZXZlbCB3aW5kb3cgd2hlbiBXU19WSVNJQkxFIGNoYW5nZXMsIG9ubHkgd2hlbgoJd2UgZXhwbGljaXRseSBkbyBhIFNldFdpbmRvd1BvcyhTV1BfU0hPV1dJTkRPVy9ISURFV0lORE9XKS4KCVVwZGF0ZSB0aGUgV00gaGludHMgd2hlbiBtYXBwaW5nIGEgd2luZG93IGluIGNhc2UgdGhlIHN0eWxlIGhhcwoJY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUuCgoJKiBvYmplY3RzL2ZvbnQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBOVUxMIGJ1ZmZlciBpbiBHZXRPYmplY3QuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgcmVncmVzc2lvbiB0ZXN0IGZvciBGb3JtYXRNZXNzYWdlLgoJRml4ZWQgY3IvbGYgaGFuZGxpbmcuCglQcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agd2hlbiBhbiBpbnZhbGlkIGZvcm1hdCAoJVMpIGlzIHBhc3NlZCBhcyBhCglmb3JtYXQgc3RyaW5nIHRvIHZzbnByaW50Zi4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIFcgdmVyc2lvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglEbyBub3QgZW1pdCAuc3RyaW5nIGludG8gdGhlIGluc3RydWN0aW9uIHN0cmVhbSwgYnV0IGludG8gdGhlIC5kYXRhCglzZWN0aW9uICh0byBhdm9pZCBhbGlnbm1lbnQgYXNzZXJ0aW9ucykuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IER1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJRml4IGV4dHJhY3Rpb24gb2YgaWNvbnMgZnJvbSBJQ08gZmlsZXMuCgoJKiBjb250cm9scy9lZGl0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBzZXQgRU5fQ0hBTkdFIGF0IGNyZWF0aW9uIHRpbWUuCgoJKiBtZW1vcnkvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaXQgdGVzdCBmb3IgZW52aXJvbm1lbnQgZnVuY3Rpb25zIGFuZCBmaXhlZCBzb21lIGJ1Z3MuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGxpYnJhcnkvcG9ydC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDbGVhbmVkIHVwIGludGVybG9ja2luZyBmdW5jcyBmb3IgUFBDLCBmaXhlZCByZXR1cm4gdmFsdWUgb2YKCWludGVybG9ja2VkX2FkZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJSW1wbGVtZW50ZWQgZGVsYXllZCBpbXBvcnQgYXNzZW1ibGVyIHRodW5rcyBmb3IgUFBDLgoKCSogaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlIHIyIGluc3RlYWQgb2YgcjEzIGZvciBUTFMsIHNpbmNlIHIxMyBpcyB1c2VkIGluIHRoZSBFTEYzMiBQUEMKCUFCSS4KCjIwMDItMDgtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9nZGJwcm94eS5jOiBSb2JlcnQgTHVubm9uIDxib2JAeWFycmFiZWUubmV0LmF1PgoJUmVtb3ZlZCB1c2Ugb2Ygc2FkZHIgYXMgYSB2YXJpYWJsZSBuYW1lIHdoaWNoIGNvbmZsaWN0cyB3aXRoIHVzYWdlIGluCgluZXRpbmV0L2luLmguCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBleGlzdGluZyBzdHJpbmcgZnVuY3Rpb25zLCBpbXBsZW1lbnQgYSBidW5jaCBvZiBuZXcgb25lcy4KCgkqIGRsbHMvc2hsd2FwaS90aHJlYWQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNyZWF0ZSBzZWN1cml0eSBhdHRyaWJ1dGVzIHdoZW4gcnVubmluZyBhcyBOVCBvciBsYXRlci4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGcmVlIGNvbWN0bDMyIG9uIHVubG9hZC4KCjIwMDItMDgtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5lZGVmYXVsdC5yZWc6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGtleXMgZm9yIG9sZTMyIGludGVyZmFjZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRGV0ZWN0IHRoZSBGcmVlVHlwZSB2ZXJzaW9uIGFuZCBhZGFwdCB0aGUgc2ZudCBvZmZzZXQgYWNjb3JkaW5nbHkuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmMsIGRsbHMvZ2RpL21mZHJ2L21hcHBpbmcuYywKCSAgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwgZ3JhcGhpY3MvbWFwcGluZy5jLCBpbmNsdWRlL2dkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTWFwcGluZyBtb2RlIGZ1bmN0aW9ucyBzaG91bGQgY2hhbmdlIGRjIHNldHRpbmdzIHdoZW4gZGMgaXMgYW4gZW5obWYuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgV2luZSBpbnRlcm5hbCBmbGFncy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNhbml0eSBjaGVja3Mgb24gRU1SQ1JFQVRFRElCUEFUVEVSTkJSVVNIUFQgdmFsdWVzLgoJRml4IGEgbWVtb3J5IGxlYWsuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmM6CglBZGRlZCBHZXRQcm9jZXNzSGVhcCBkZWZpbml0aW9uIGluIGNhc2UgaXQncyBub3QgaW5saW5lZC4KCgkqIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvbWFrZWRlcC5jLCB0b29scy93aWRsL2hlYWRlci5jLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvd2lkbC5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWR1bXAvZGVidWcuYywKCSAgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd3BwL3ByZXByb2MuYywgdG9vbHMvd3JjL3dyYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUluY2x1ZGUgcHJvdGVjdGlvbiBmb3IgPHVuaXN0ZC5oPiwgPHN5cy90eXBlcy5oPiBhbmQgPHN5cy9zdGF0Lmg+LgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYzogU2hhY2hhciBTaGVtZXNoIDxzdW5AY29uc3VtZXIub3JnLmlsPgoJQ2hhbmdlIHN1Ymxhbmd1YWdlIGZyb20gIk5FVVRSQUwiIHRvICJERUZBVUxUIiwgc28gTG9hZFJlc291cmNlIHdpbGwKCWJlIGFibGUgdG8gZmluZCBpdCBpZiBubyBvdGhlciBsYW5ndWFnZSBpcyBhIGJldHRlciBtYXRjaC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgbGVhdmUgdW5pbml0aWFsaXplZCBwb2ludGVyLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBbGxvdyBhbiBhcHAgdG8gb3BlbiB0aGUgZmlsZSBvZiBhIGRpc2sgYmFzZWQgZW1mIGZvciByZWFkaW5nIHdoaWxlCgl0aGUgaGVtZiBpcyBzdGlsbCBvcGVuLgoJSW1wbGVtZW50IFNldFdpbk1ldGFGaWxlQml0cyBpbiBhIG1vcmUgc2FuZSBmYXNoaW9uLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHNpbXBsZSBFeHRUZXh0T3V0IGZvciBlbmhtZmRydi4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgbGlicmFyeS9kZWJ1Zy5jLAoJICBsaWJyYXJ5L2xvYWRlci5jLCBsaWJyYXJ5L3BvcnQuYywgbWVtb3J5L2luc3RyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TVkMgY29tcGF0aWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3NjYW5mLmMsIGRsbHMvbXN2Y3J0L3NjYW5mLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglEYW5pZWwgR3VkYmphcnRzc29uIDxkZmdAZGVjb2RlLmlzPgoJQ29tYmluZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFsbCB0aGUgc2NhbmYncyBpbiBhIHNpbmdsZSBwbGFjZS4KCUFkZGVkIGltcGxlbWVudGF0aW9ucyBvZiBmd3NjYW5mLCBzd3NjYW5mLCB3c2NhbmYgYW5kIHNzY2FuZi4KCUNvcnJlY3RlZCB0aGUgZGVjbGFyYXRpb24gb2Ygc3dzY2FuZi4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsLCBoLCBMIGFuZCB3IHByZWZpeGVzLgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGMsIEMsIHMsIFMgYW5kIG4gdHlwZXMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUltcGxlbWVudGVkIHNlcnZlciBjb250ZXh0L3B0cmFjZSBoYW5kbGluZyBmb3IgTGludXgvUG93ZXJQQy4KCgkqIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2lvcG9ydHMuYywgbXNkb3MvdnhkLmMsCgkgIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvcHRocmVhZC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9kZXZpY2UuYywKCSAgd2luMzIvaW5pdC5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvdGltZS5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5oZWxwLmMsCgkgIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBmaWxlcy9jaGFuZ2UuYywKCSAgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZmlsZXMvc21iLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvdmlydHVhbC5jLAoJICBtaXNjL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2RwbWkuYywKCSAgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MWEuYywgbXNkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy94bXMuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS90aW1lLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3R3YWluL2RzX2N0cmwuYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy91c2VyL25ldHdvcmsuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsCgkgIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvY29uc29sZS5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsCgkgIGRsbHMvbXByL3duZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgaW5jbHVkZSBwcm90ZWN0aW9uIGZvciB1bmlzdGQuaCBhbmQgc3lzL3RpbWUuaC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBjYkJpdHMgaW4gdGhlIEVNUkNSRUFURURJQlBBVFRFUk5CUlVTSFBUIHN0cnVjdHVyZSB3aGVuIHdyaXRpbmcgYW4KCUVNRiByZWNvcmQuCgoJKiBkbGxzL2dkaS9tZmRydi90ZXh0LmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb3IgbWV0YWZpbGUgRXh0VGV4dE91dCB0aGF0IG9ubHkgaW5jbHVkZXMgdGhlIHJlY3RhbmdsZSBpZiBlaXRoZXIKCUVUT19DTElQUEVEIG9yIEVUT19PUEFRVUUgaXMgc2V0LgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgYSBmZXcgZGV2aWNlIGNhcHMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIHNpZ24gb2YgZm9udCBoZWlnaHQgaW4gbm9uIE1NX1RFWFQgbW9kZS4KCUZpeCBHR09fTkFUSVZFIGFnYWluLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy9nZGkvZ2RpMTYuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCURvIG5vdCBzZXQgd2luZG93IHBvc2l0aW9uIG9uIEFCTV9XSU5ET1dQT1NDSEFOR0VELgoKMjAwMi0wOC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci91c2VyLmg6CglTaWduYWwgYW5kIHJlbGVhc2UgdGhlIGlkbGUgZXZlbnQgd2hlbiB0aGUgcHJvY2VzcyBtYWluIHRocmVhZCBleGl0cy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglWZXJ5IHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgQnJvYWRjYXN0U3lzdGVtTWVzc2FnZUEuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR3JlZWsga2V5Ym9hcmQgbGF5b3V0LgoJVXBkYXRlZCBCcmF6aWxpYW4gQUJOVC0yIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVzIHRvIGFsbG93IElFIHRvIGRvIGxvY2FsIGZpbGUgbG9hZGluZyBhbmQgc29tZSBsaW1pdGVkIGJyb3dzaW5nLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdHJ5IHJlYWRpbmcgYSBQSURMIGluIElQZXJzaXN0U3RyZWFtLT5Mb2FkIGlmIGl0cyBzaXplIGlzIDAuCglDaGVjayB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgd2FzIGNvcnJlY3QuCglTbWFsbCByZW9yZ2FuaXphdGlvbiBvZiBlcnJvciBoYW5kbGluZy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CgktIERvIG5vdCBtb2RpZnkgcG9pbnRlcnMgaW4gdGhlIE9QRU5GSUxFTkFNRSBzdHJ1Y3R1cmUgcGFzc2VkIHRvCgkgIEdldEZpbGVEaWFsb2c5NUEvVy4KCS0gVXNlIFVuaWNvZGUgYXMgZGVmYXVsdCBmb3Igc3RyaW5ncyBmcm9tIHRoZSBPUEVORklMRU5BTUUgc3RydWN0dXJlcy4KCS0gRmlsbCBvdXQgdGhlIE9QRU5GSUxFTkFNRSBzdHJ1Y3R1cmUgYmVmb3JlIHNlbmRpbmcgdGhlIEZJTEVPSwoJICBub3RpZmljYXRpb24uCgktIFNlbmQgYSBDRE5fRk9MREVSQ0hBTkdFIG5vdGlmaWNhdGlvbiBvbiBPUEVORklMRU5BTUUgZGlhbG9nIGluaXQuCgktIEZpeCBtaXNjYWxjdWxhdGlvbiBvZiB0aGUgc2l6ZSBvZiBFeHBsb3JlciBzdHlsZSBmaWxlIGRpYWxvZyBib3hlcwoJICB3aXRoIHRlbXBsYXRlcy4KCS0gUmVtb3ZlIHJlZHVuZGFudCBNYXBITW9kdWxlTFMgYW5kIE1hcEhNb2R1bGVTTCBjYWxscyB0aGF0IGFsc28gY2F1c2UKCSAgaEluc3RhbmNlIHRvIGJlIHRyYXNoZWQgd2hlbiBpdCBob2xkcyBhIHRlbXBsYXRlIHBvaW50ZXIgaW5zdGVhZCBvZiBhCgkgIHJlYWwgaEluc3RhbmNlICh3aGVuIE9GTl9FTkFCTEVURU1QTEFURVBPSU5URVIgaXMgc3BlY2lmaWVkKS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUVyYXNlIGJhY2tncm91bmQgd2hlbiBpbnZhbGlkYXRpbmcgdGhlIHNlbGVjdGVkIHRleHQuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb3IgbWV0YWZpbGUgRXh0VGV4dE91dCB0aGF0IG9ubHkgaW5jbHVkZXMgdGhlIHJlY3RhbmdsZSBpZiBlaXRoZXIKCUVUT19DTElQUEVEIG9yIEVUT19PUEFRVUUgaXMgc2V0LgoJU2xpZ2h0bHkgbGVzcyBvZiBhIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEdldFdpbk1ldGFGaWxlQml0cy4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUZvcmNlIGxvYWRvcmRlciBvZiAxNi1iaXQgZGxscyB0byBidWlsdGluIGlmIHRoZWlyIDMyLWJpdCBjb3VudGVycGFydAoJaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQgYXMgYnVpbHRpbi4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYzoKCUFkZGVkIC1rIG9wdGlvbiB0byBraWxsIGFuIGV4aXN0aW5nIHdpbmVzZXJ2ZXIuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBCcm9hZGNhc3RTeXN0ZW1NZXNzYWdlQS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogbHN0cmNweW5bQVddIGNvdW50IHNob3VsZCBiZSBjb25zaWRlcmVkIHVuc2lnbmVkLgoKCSogbWlzYy9jcHUuYzogRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSB0aGUgZGVmYXVsdCBDUFUgdHlwZSBzbyB0aGF0IFF1aWNrVGltZSB3aWxsIGFsc28gcnVuIG9uCglwbGF0Zm9ybXMgd2hlcmUgdGhlIGNwdSBkZXRlY3Rpb24gY29kZSBkb2VzIG5vdCB3b3JrLgoKCSogb2JqZWN0cy9mb250LmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zbGF0ZSBPdXRsaW5lVGV4dE1ldHJpY3MgdG8gbG9naWNhbCBjby1vcmRzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURXT1JEIGF0IG9mZnNldCAweDQwIGluIHRoZSBoZWFkZXIgaXMgdGhlIG51bWJlciBvZiBiaWcgYmxvY2tzIGluIHRoZQoJc21hbGwgYmxvY2sgZGVwb3QgY2hhaW4uCglCZXR0ZXIgZmFpbHVyZSBoYW5kbGluZy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB1cCBleGNlcHRpb24gaGFuZGxlciBhcm91bmQgV0VQIGNhbGwuCgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jOgoJRG9uJ3QgdXBkYXRlIHRoZSBtb3VzZSBidXR0b24gc3RhdHVzIGluIHVwZGF0ZV9rZXlfc3RhdGUsIGxlYXZlIHRoYXQKCXRvIHRoZSBpbnB1dCBwcm9jZXNzaW5nLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBjb21jdGwzMi40MTcgYW5kIHNobHdhcGkuMjk5LiBUaGlzIGF2b2lkcyBjcmFzaCBpbiBJRSdzCglIaXN0b3J5LgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBsYXJnZSBlZGl0IGJ1ZmZlcnMgZm9yIHJpY2hlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9jb21wb2JqLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgR2V0Q2xhc3NGaWxlIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBTd2l0Y2hUb1RocmVhZC4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBtb3JlIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUltYWdlTGlzdF9TZXRJbWFnZUNvdW50IHNob3VsZCBzZXQgbkN1ckltYWdlICh0aGUgbnVtYmVyIG9mCglpbWFnZXMgaW4gdGhlIGxpc3QpIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQsIGFuZCBleHBlY3QgdGhhdAoJSW1hZ2VMaXN0X1JlcGxhY2VJbWFnZSBpcyBjYWxsZWQgdG8gc2V0IHRoZSBuZXcgaW1hZ2VzLgoKCSogd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbmRlZi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSEtMIHRvIGEgdm9pZCouCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9iaWRpMTYuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsCgkgIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLCBkbGxzL2dkaS93aW4xNmRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJTW92ZWQgYSBsYXJnZSBudW1iZXIgb2YgMTYtYml0IGZ1bmN0aW9ucyB0byBhIHNlcGFyYXRlIGdkaTE2LmMgZmlsZS4KCjIwMDItMDgtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmM6CglBdm9pZCB0cm91YmxlIGluIFdNX0dFVFRFWFQgaWYgc3BlY2lmaWVkIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiB0aGUKCWJ1ZmZlciAoZm91bmQgYnkgQ2FybCBTb3BjaGFrKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjb21tYW5kLWxpbmUgcGFyc2luZyBmb3IgV2luZWxpYiBhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCB0aGUgaW5pdGlhbCBwYXBlciBzaXplIGZyb20gdGhlIGxvY2FsZSBpbmZvLgoKCSogb2JqZWN0cy9nZGlvYmouYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRGVsZXRlT2JqZWN0KCkgY2FuIGZhaWwgaWYgdGhlIG9iamVjdCBpcyBhIERDLCBob3dldmVyIHdlJ3ZlIGFscmVhZHkKCWNhbGxlZCBHRElfUmVsZWFzZU9iaigpIHNvIGRvbid0IGNhbGwgaXQgYWdhaW4uCgoJKiBtZW1vcnkvY29kZXBhZ2UuYywgbWVtb3J5L3N0cmluZy5jLCBvbGUvb2xlMm5scy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5ubHMuaDoKCUZpeGVkIEdldExvY2FsZUluZm9XIHRvIGhhbmRsZSBVbmljb2RlIHByb3Blcmx5IGFuZCBjb21wbGV0ZWQKCWltcGxlbWVudGF0aW9uLgoJVXBkYXRlIHdpbi5pbmkgYW5kIHJlZ2lzdHJ5IG9uIHN0YXJ0dXAgd2hlbiBsYW5ndWFnZSBjaGFuZ2VkLgoJTW9yZSBsb2dpY2FsIHByaW9yaXR5IG9yZGVyIGZvciBsb2NhbGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoJSW1wbGVtZW50ZWQgU2V0TG9jYWxlSW5mb1cuCglNb3ZlZCBzb21lIGxvY2FsZSBmdW5jdGlvbnMgdG8ga2VybmVsMzIuZGxsLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogVHJhcCBleGNlcHRpb25zIGluIFJ0bEltYWdlTnRIZWFkZXIuCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jLCBpbmNsdWRlL250ZGRrLmgsIGNvbmZpZ3VyZToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgYW5kIHRlc3QgcnRsIGJpdG1hcCBmdW5jdGlvbnMuCglBZGQgYSBjb3VwbGUgb2Ygb3RoZXIgbWlzYyBydGwgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjLCBkbGxzL2tlcm5lbC9ubHMvKi5ubHM6CglVcGRhdGVkIGFsbCBsb2NhbGUgdGFibGVzIHRvIG1hdGNoIGV4YWN0bHkgd2hhdCBXaW5kb3dzIHJldHVybnMuCglSZW5hbWVkIGEgZmV3IGZpbGVzIHRvIGZvbGxvdyB0aGUgcHJvcGVyIG5hbWluZyBjb252ZW50aW9ucy4KCUFkZGVkIGEgbnVtYmVyIG9mIG5ldyBsb2NhbGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfWmgucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9aaC5yYywgaW5jbHVkZS93aW5udC5oLCB0b29scy93cHAvcHB5LnksCgkgIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksCgkgIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5jLAoJICB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglBZGRlZCBzdXBwb3J0IGZvciAjcHJhZ21hIGNvZGVfcGFnZS4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW4gbGFuZ3VhZ2UgaGFuZGxpbmcuCglBZGRlZCBlcnJvciBtZXNzYWdlIHdoZW4gQW5zaS0+VW5pY29kZSBjb252ZXJzaW9uIGluIHRoZSBjdXJyZW50Cgljb2RlcGFnZSBsb3NlcyBpbmZvcm1hdGlvbi4KCgkqIHByb2dyYW1zL3Byb2dtYW4vU2kucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2kucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBTbG92ZW5pYW4gcmVzb3VyY2VzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglUaGUgdGV4dCBzZWN0aW9uIGFsaWdubWVudCBzaG91bGQgYmUgZGVmYXVsdCwgbm90IDEuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJTGluayBhZ2FpbnN0IG1zdmNydCwgZml4ZWQgbG9naWMgdG8gaGFuZGxlIHF1b3RlZCBwYXRocyBpbiBjb21tYW5kCglsaW5lIHBhcmFtZXRlcnMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJTGlua2VkIHJlZ2VkaXQgYWdhaW5zdCBtc3ZjcnQgaW5zdGVhZCBvZiB0aGUgcGxhdGZvcm0gSS9PIGxpYnJhcnksIHNvCglpdCBjYW4gaGFuZGxlIGZ1bGwgV2luZG93cyBwYXRocy4KCjIwMDItMDgtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1ha2UgYmVoYXZpb3Igb2YgYnVpbHRpbiBleGVjdXRhYmxlcyBjbG9zZXIgdG8gdGhhdCBvZiBidWlsdGluIGRsbHMuCglGaXhlZCBjYXNlIHNlbnNpdGl2aXR5IG9mIGJ1aWx0aW4gZXhlY3V0YWJsZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBVcGRhdGVkIGRlcGVuZGVuY2llcy4KCgkqIGxpYnJhcnkvbGR0LmMsIG1lbW9yeS9zZWxlY3Rvci5jOgoJVXNlIHRoZSAibmV3IiBMRFQgc2V0IGNhbGwgb24gTGludXguCgoJKiBsaWJyYXJ5L2xvYWRlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglCdWlsdGluIG1vZHVsZXMgbXVzdCBiZSBhbGlnbmVkIG9uIDY0SyBib3VuZGFyeS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGRvZGd5IGFzbSBvcHRpbWl6YXRpb24gaWYgdGhlIHNlcnZlcidzIGJ5dGUgb3JkZXIgaXMgbm90CglMU0JGaXJzdC4KCgkqIGRsbHMvd2luZXBzL3R5cGUxLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgZm9udCBzaXplIGZvciBub24gTU1fVEVYVCBtb2Rlcy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IEZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglOVCBzZXRzIHRoZSBlcnJvciBjb2RlIHRvIEVSUk9SX1JFU09VUkNFX0RBVEFfTk9UX0ZPVU5EIGlmIHRoZSBmaWxlCglleGlzdHMgYnV0IGRvZXMgbm90IGNvbnRhaW4gdmVyc2lvbiBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGRpYWxvZyBJRHMgIkJyb3dzZSBmb3IgRm9sZGVyIiBjb21wYXRpYmxlIHdpdGggSUUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgREFEX0RyYWcgRW50ZXIsIEVudGVyRXgsIE1vdmUgQXV0b1Njcm9sbCBhbmQgTGVhdmUuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCB0aGUgc2l6ZSBvZiB0aGUgY29sb3VyIG1hcCBhbGxvY2F0ZWQgaW4gdGhlIGJpdG1hcCBoZWFkZXIgZm9yCgl0aGUgY2FzZSBiaUNsclVzZWQgPSAwLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRGVpbml0TWFwaVV0aWwgc3R1Yi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgdGhlIGRlYnVnZ2luZyBjaGFubmVscyBkb2N1LgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQaWVycmUgQmV5c3NhYyA8cGItd2luZUBmYXN0ZXJpeC5mcm11Zy5vcmc+CglJbXBsZW1lbnRlZCBDT05URVhUX0RFQlVHX1JFR0lTVEVSUyBvbiBGcmVlQlNELgoKMjAwMi0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYzoKCUZpeGVkIHJhY2UgY29uZGl0aW9uIHdoZW4gYSB0aHJlYWQgZ2V0cyBraWxsZWQgcmlnaHQgYWZ0ZXIgc3RhcnRpbmcuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwgb2xlL3V1aWQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVZlcnkgaGFja2VkIGltcGxlbWVudGF0aW9uIG9mIHVybCBtb25pa2Vycy4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpY3MuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJQWRkIFFNX1NNUkVTVUxUIGluIHdha2UgYml0cyB0b28gaW4gY2FzZSB0aGUgY2hhbmdlZCBiaXRzIGdldCBjbGVhcmVkCgl3aGlsZSBwcm9jZXNzaW5nIGEgc2VudCBtZXNzYWdlLgoKCSogaWYxNjMyL3Nub29wLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggc25vb3Bpbmcgb2YgMTYtYml0IGRsbHMgYmVpbmcgbG9hZGVkIGF0IHRoZSBzYW1lIGFkZHJlc3MuCgoJKiBncmFwaGljcy9wYXRoLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUF0IHRoZSBlbmQgb2YgUEFUSF9TdHJva2VQYXRoLCB1cGRhdGUgZGMtPkN1clBvc1h8WSBzbyB0aGF0IHRoZWlyCgl2YWx1ZXMgYXJlIGluIGxvZ2ljYWwgY28tb3Jkcy4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBoZXggdG8gYmluYXJ5IGNvbnZlcnNpb24uCgoJKiBkbGxzL250ZGxsL21pc2MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCXVzLT5MZW5ndGggaXMgaW4gYnl0ZXMuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUaHJvdyBleGNlcHRpb24gb25seSBmb3IgV2luZSBpbnRlcm5hbCBsb2Nrcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzogUmVkdWNlIGZsaWNrZXIgb24gdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1cGxpY2F0ZSB0aGUgZm9udCBoYW5kbGUgcGFzc2VkIHRocm91Z2ggV01fU0VURk9OVCwgYmVjYXVzZSBpdCBkb2VzCglub3QgYmVsb25nIHRvIHVzIGFuZCBpcyBub3Qgb3VycyB0byBmcmVlLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBXTV9HRVQvU0VUVEVYVCBzdXBwb3J0LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5oOiBUaGUgcHJvdmlkZXIgZnVuY3Rpb25zIGFyZSBXSU5BUEkuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IG1vZGlmeSByZXR1cm5lZCBrZXlzIG9uIHN1Y2Nlc3MuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsCgkgIGRlYnVnZ2VyL2RiZy55OgoJQWRkZWQgJ3dhbGsgZXhjZXB0aW9uJyBjb21tYW5kLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jLAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJQXZvaWQgZGVwZW5kZW5jaWVzIG9uIHkudGFiLmguCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9zdGFja2ZyYW1lLmg6CglTZXR1cCBleGNlcHRpb24gZnJhbWUgYXJvdW5kIDE2LWJpdCBjYWxscyB0byB1bndpbmQgc3RhY2sgcHJvcGVybHkuCgoJKiBvbGUvdXVpZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9waGVscGVyLmgsCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJU3R1YnMgZm9yIERyYWdEcm9wSGVscGVyLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCB0aGUgcHBkZXYuaCBwcmVzZW50IGJ1dCBub3QgZGlyZWN0IGlvIGFjY2VzcyBjYXNlLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQaWVycmUgQmV5c3NhYyA8cGJAZmFzdGVyaXguZnJtdWcub3JnPgoJRml4ZWQgcHRyYWNlIGFyZ3VtZW50IG9yZGVyIGZvciBGcmVlQlNELCBOZXRCU0QgYW5kIFNvbGFyaXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc3VwcG9ydCBmb3IgbW92aW5nIFZHQSBjb250cm9sbGVyIHdpbmRvdyBpbiBmcmFtZWJ1ZmZlciB1c2luZyBTVkdBCglpbnRlcnJ1cHRzLiBEZXRlY3QgY29ycmVjdGx5IGNvbG9yIHBsYW5lIG1vZGVzIGFuZCBsaW5lYXIgbW9kZXMsCglpbmNsdWRpbmcgTW9kZS1YLiBNb3ZlZCBWRVNBIGludGVycnVwdHMgaW50byBzZXBhcmF0ZSBmdW5jdGlvbiBhbmQKCWltcGxlbWVudGVkIGZldyBtb3JlIHN0dWJzLgoKMjAwMi0wOC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglUZXN0IHJlc3VsdHMgbmVlZCB0byBkZXBlbmQgb24gdGhlIG1vZHVsZSBiZWluZyB0ZXN0ZWQuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd3BwL01ha2VmaWxlLmluLAoJICB0b29scy93cmMvTWFrZWZpbGUuaW46CglBZGRlZCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHkudGFiLmggZm9yIGxleCBvdXRwdXQuCgoyMDAyLTA4LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmM6CglVbnByb3RlY3QgdGhlIHJlc291cmNlIGRhdGEgaW4gdGhlIHVuaGFuZGxlZCBleGNlcHRpb24gaGFuZGxlciB0byBmaXgKCWJyb2tlbiBhcHBzLgoKCSogbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLAoJICBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL3Z4ZC5jLAoJICByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL250ZGRrLmg6CglJbXBsZW1lbnRlZCB0aGUgUnRsSW1hZ2UqIGZ1bmN0aW9ucywgYW5kIHVzZSB0aGVtIHRvIHJlcGxhY2UgdGhlCglQRV9IRUFERVIgbWFjcm8uCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcmljaGVkaXQuaCwKCSAgaW5jbHVkZS9yaWNob2xlLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcHJvdmVkIHJpY2hlZGl0IGhlYWRlcnMuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSE1NSU8gdG8gYSB2b2lkKi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBEYXZlIEhhd2tlcyA8ZGF2ZWhAY2FkbGluay5jb20+CglGb250cyB3aXRoIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIHNldCBjb3VsZCBjYXVzZSBhIGZhdWx0LgoKCSogY29uZmlndXJlLmFjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNvcHkgdmFfbGlzdHMgYnkgdXNpbmcgdmFfY29weSwgbm90IGJ5IGp1c3QgYXNzaWduaW5nIHRoZW0uCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX2N0ZXN0cywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLAoJICBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluOgoJQ3JlYXRlIHNlcGFyYXRlIG1ha2VmaWxlcyBmb3IgdGVzdHMgZm9yIG1vcmUgZmxleGliaWxpdHkuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCUZpeGVkIHN0cmluZyBsZW5ndGhzIHRvIGRvIHRoZSByaWdodCB0aGluZyBmb3IgYWxsIHBsYXRmb3Jtcy4KCgkqIEFVVEhPUlMsIGRsbHMvc2hlbGwzMi9hdXRob3JzLmg6IFVwZGF0ZWQgYXV0aG9ycyBsaXN0LgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaCwKCSAgaW5jbHVkZS9ycGNkY2VwLmgsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvcnBjcHJveHkuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBtb3JlIFJQQyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGUgdXBkYXRlLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgaW5jbHVkZS9tbWRkay5oLAoJICBpbmNsdWRlL21tc3lzdGVtLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBDb252ZXJ0IEhEUlZSIHRvIGEgdm9pZCouCgktIEZpeCBkZWNsYXJhdGlvbiBvZiBEcml2ZXJDYWxsYmFjaygpLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIGFuIGV4YW1wbGUgb2YgdXNpbmcgd2luZW1ha2VyLgoKCSogdG9vbHMvd2luZW1ha2VyOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVVwZGF0ZWQgdG8gZ2VuZXJhdGUgYnVpbGQgc2NyaXB0cyB3b3JraW5nIHdpdGggY3VycmVudCBXaW5lLCB1c2Ugc29tZQoJV2luZSBjb252ZW50aW9ucy4KCUdlbmVyYXRlZCBjb25maWd1cmUgbm93IGZpbmRzIGxpYnJhcmllcyBpbiBiaW5hcnkgV2luZSBpbnN0YWxsYXRpb24uCgoJKiBvYmplY3RzL3RleHQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIG1pc3NpbmcgSGVhcEZyZWUuCgoyMDAyLTA4LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3JjL3V0aWxzLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvbXN2Y3J0L21hdGguYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgdG9vbHMvd2lkbC91dGlscy5oLCB0b29scy93aWRsL3dpZGx0eXBlcy5oLAoJdG9vbHMvd21jL3V0aWxzLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlcyBmb3IgU3BhcmMgYnVpbGQuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmU6CglEb24ndCBtYWtlIHRoZSBhY19hc20gZnVuY3Rpb24gd3JhcHBlciBzdGF0aWMgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nCglvcHRpbWl6ZWQgb3V0LgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IEdldCByaWQgb2YgcmVtb3ZlZCB3aW5hcGlfY2hlY2sgc3ViZGlycy4KCjIwMDItMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRG9uJ3QgY2hhbmdlIGJhc2UgaW4gbWFwX2ltYWdlIHNpbmNlIHdlIHVzZSBpdCBsYXRlciBvbi4KCUFkZGVkIHNvbWUgdHJhY2luZy4KCgkqIGxpYnJhcnkvcG9ydC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBpbmNsdWRlL3dpbm50Lmg6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQb3dlclBDIGxvY2tlZCBleGNoYW5nZSBmdW5jdGlvbnMgbWVyZ2VkIGZyb20gb2xkIHBwYyBwYXRjaC4KCU50Q3VycmVudFRlYiBoYW5kbGluZyBmb3IgUG93ZXJQQyAodXNpbmcgZ3ByIDEzKS4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglJbXBsZW1lbnQgU3RyUmV0VG9TdHIgaW4gc2hsd2FwaS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUluaXRpYWxpemUgdGhlIEREQ0FQUyBzdHJ1Y3R1cmUgb2YgdGhlIEREUkFXIG9iamVjdCBhdCBjcmVhdGlvbi4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhbmRsZSAnbm90IGFjcXVpcmVkJyBlcnJvciBtZXNzYWdlcyBvbiBrZXlib2FyZCBHZXREZXZpY2VEYXRhLgoKMjAwMi0wOC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAyMDgwNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wOC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFNldCB1c2VyIGFkZHJlc3Mgc3BhY2UgbGltaXQgdG8gMHhjMDAwMDAwMC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IG5lZ2F0aXZlIHZhbHVlcyBpbiBSRUNUcyBkdXJpbmcgQmx0cy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBmaWxlcy9maWxlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBGaXhlZCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEgd2l0aCBnaXZlbiBvdmVybGFwcGVkIHN0cnVjdHVyZSBvbiBhCgkgIGZpbGUgb3BlbmVkIGluIG5vbiBvdmVybGFwcGVkIG1vZGUuCgktIEZpeG1lIGZvciBmaWxlLWxvY2sgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxpYnJhcnkvTWFrZWZpbGUuaW46CglPbmx5IGxpbmsgd2l0aCBtc3ZjcnQgb24gbWluZ3czMi4gQ2xlYW5lZCB1cCBhIGZldyBBQ19TVUJTVC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL29sZTE2LmMsIGluY2x1ZGUvd3R5cGVzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBNb3ZlZCAxNiBiaXQgZnVuY3Rpb25zIHRvIGEgc2VwZXJhdGUgZmlsZS4KCS0gRmlyc3QgaW1wbGVtZW50YXRpb24gZm9yIGZyZWUgdGhyZWFkZWQgbWFyc2hhbGxlci4KCS0gRml4ZWQgaGFuZGxpbmcgb2YgUkVHX0VYUEFORF9TVFJJTkcgcmVnaXN0cnkgdmFsdWVzIGluIENvQ3JlYXRlT2JqZWN0LgoJLSBGaXhlZCBDb0xvYWQvRnJlZUxpYnJhcnkgZnVuY3Rpb25zLgoJLSBGaXhlZCB1c2UgaW50ZXJuYWwgZGxsLWxpc3QgKHVzZWQgb25seSBmb3IgZnVuY3Rpb25zIGxvYWRpbmcgYSBkbGwKCSAgaW50ZXJuYWxseSB3aXRob3V0IHJldHVybmluZyBITU9EVUxFKS4KCgkqIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSE1JWEVSLCBITUlYRVJPQkogdG8gYSB2b2lkKi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJT24gbW91c2UgZG93biBpbiB0aHVtYiwgaXNzdWUgU0JfVEhVTUJUUkFDSyB3aXRoIGN1cnJlbnQgcG9zaXRpb24uCglPbiBtb3VzZSB1cCBpbiB0aHVtYiwgaXNzdWUgU0JfVEhVTUJQT1NJVElPTiBmb2xsb3dlZCBieQoJU0JfRU5EU0NST0xMLgoKMjAwMi0wOC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBhY2xvY2FsLm00OgoJSW5zdGFsbCB0aGUgYWNsb2NhbCBtYWNyb3MgZm9yIHVzZSBieSBXaW5lbGliIGFwcHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCURvbid0IHBhc3MgdGhlIHBlcmwgQyBmbGFncyB0byB3aW5lYnVpbGQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOiBNaWtlIENhc3RsZSA8ZGFsZ29kYUBpeC5uZXRjb20uY29tPgoJQ29tcGlsZSBmaXggZm9yIG11bHRpLXRocmVhZGVkIHBlcmwuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmUgbGVzcyBzdHJpY3Qgb24gcGFyYW1ldGVyIGNoZWNraW5nIGluIHRoZSBTZXRTdXJmYWNlRGVzYyBmdW5jdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBDb252ZXJ0ZWQgSFdBVkUsIEhXQVZFSU4sIEhXQVZFT1VUIHRvIHZvaWQqLgoJLSBGaXhlZCBzb21lIEhNSURJe0lOLE9VVH0xNiB0byBIQU5ETEUgY29udmVyc2lvbnMuCgktIG1pZGlPdXRDYWNoZURydW1QYXRjaGVzMTYgY2FsbGVkIGl0c2VsZiByZWN1cnNpdmVseSBpbiBhbiBpbmZpbml0ZQoJICBsb29wLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywKCSAgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci90eXBlcy5jLAoJICBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkICRyZWdzIGFzIGEgdmFyaWFibGUgZm9yIGRpc3BsYXlpbmcgYWxsIHJlZ2lzdGVycy4KCgkqIG9iamVjdHMvZGMuYzoKCURvbid0IHNldCB0aGUgRENfRElSVFkgZmxhZyBpbiBTZXREQ1N0YXRlIHNpbmNlIHdlIGp1c3QgdXBkYXRlZCB0aGUgREMuCgoJKiB0b29scy93cmMvd3JjdHlwZXMuaDoKCVJlbW92ZWQgc3RydWN0IHVzZXIgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggc3lzdGVtIGhlYWRlcnMgKHNwb3R0ZWQgYnkKCU1hcnRpbiBDcmFjYXVlcikuCgoyMDAyLTA4LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHdpbmRvd3MvLmN2c2lnbm9yZSwgTWFrZS5ydWxlcy5pbiwKCSAgY29udHJvbHMvLmN2c2lnbm9yZSwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2dkaS8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvd2luMTZkcnYvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvZGRlLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgbG9hZGVyLy5jdnNpZ25vcmUsIGxvYWRlci9uZS8uY3ZzaWdub3JlLAoJICBtZW1vcnkvLmN2c2lnbm9yZSwgb2JqZWN0cy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUNyZWF0ZSBhdCBtb3N0IG9uZSBnbHVlIGZpbGUgZm9yIGEgc2luZ2xlIGRsbC4KCUF2b2lkIHRoZSBpbnRlcm1lZGlhdGUgLnRtcC5vIGZpbGUgd2hlbiBidWlsZGluZyBwcm9ncmFtcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUluIC1zcGVjIGFuZCAtZXhlIG1vZGUsIGFjY2VwdCBtdWx0aXBsZSBvYmplY3QgZmlsZXMgYW5kIGxpbmsgdGhlbQoJdG9nZXRoZXIgaW50ZXJuYWxseSB0byBmaW5kIHRoZSB1bmRlZmluZWQgc3ltYm9scy4KCUluIC1nbHVlIG1vZGUsIGFjY2VwdCBtdWx0aXBsZSBDIGZpbGVzIGFuZCBnZW5lcmF0ZSBhIHNpbmdsZSBnbHVlCglmaWxlIGZvciBhbGwgb2YgdGhlbS4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpb2lvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vd2luZWF1ZGlvaW8uZHJ2LnNwZWM6CglSb2JlcnQgTHVubm9uIDxib2JAeWFycmFiZWUubmV0LmF1PgoJUHJlbGltaW5hcnkgYXVkaW8gZHJpdmVyIGZvciBTb2xhcmlzIExpYmF1ZGlvaW8uCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJQ29udmVydCBITUlESSwgSE1JRElJTiwgSE1JRElPVVQsIEhNSURJU1RSTSB0byB2b2lkKi4KCjIwMDItMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJVXNlIHRoZSBub3JtYWwgcGVybCBpbnRlcnByZXRlciBmb3IgdGVzdCBzY3JpcHRzIHRoYXQgZG9uJ3QgbmVlZCB0bwoJY2FsbCBXaW5kb3dzIEFQSXMuCglEb24ndCBidWlsZCB3aW5ldGVzdC5leGUgYnkgZGVmYXVsdC4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLAoJICBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYzoKCU1vdmVkIHRoZSAjaWZkZWZzIGZvciB0aGUgZ2V0bmV0YnkqIGV0Yy4gZnVuY3Rpb25zIGRpcmVjdGx5IGludG8gdGhlCgl3aW5zb2NrIGltcGxlbWVudGF0aW9uIHRvIGF2b2lkIGhhdmluZyB0byByZWRlZmluZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzCglpbiBwb3J0LmguCgoJKiBwcm9ncmFtcy9ub3RlcGFkL1NpLnJjOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJRml4ZWQgc29tZSBpbnZhbGlkIGNoYXJhY3RlcnMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL3JlZ2VkaXQucGwsIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5ldGVzdC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvdGVzdHMvd2luZS5wbDoKCVNwbGl0IHJvdXRpbmVzIHRoYXQgZG9uJ3QgcmVseSBvbiBDIGZ1bmN0aW9ucyBpbnRvIHdpbmV0ZXN0LnBtIHNvIHRoYXQKCXRoZXkgY2FuIGJlIHVzZWQgZnJvbSBhIG5vcm1hbCBQZXJsIHNjcmlwdC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglBZGQgTVNWQ1JUIHByZWZpeCB0byBfc3RhdCBhbmQgX2ZzdGF0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJhZmFlbAoJS2l0b3ZlcikuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lcHMvYnVpbHRpbi5jLAoJICBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwKCSAgdHN4MTEvTWFrZWZpbGUuaW46CglSYWZhZWwgS2l0b3ZlciA8Y2FlbHVtQGRlYmlhbi5vcmc+CglQb3J0YWJpbGl0eSBmaXhlcyBmb3IgQ3lnd2luLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9zb2NrLmMsIHdpbjMyL25ld2Zucy5jLCBtZW1vcnkvcmVnaXN0cnkuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvdnhkLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgaW5jbHVkZS93aW5jcnlwdC5oLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5oLAoJICBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywKCSAgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglGaXhlZCBzb21lIGhhbmRsZSB0eXBlIG1pc21hdGNoZXMgYW5kIGFkZGVkIGEgZmV3IGNhc3RzIGluIHByZXZpc2lvbgoJb2Ygdm9pZCogaGFuZGxlcy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsCgkgIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2NvbnNvbGUuYywKCSAgd2luMzIvZWRpdGxpbmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgYWxsIGNsaWVudC1zaWRlIGNvbnNvbGUgY29kZSB0byBrZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgaW5pdGlhbCBBbGxvY0NvbnNvbGUgY2FsbCB0byBrZXJuZWwgaW5pdCAoYmFzZWQgb24gYSBwYXRjaCBieQoJRXJpYyBQb3VlY2gpLgoKCSogZmlsZXMvZmlsZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdGhlIGNhbGxzIHRvIChSZWFkfFdyaXRlKUNvbnNvbGUgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8KCWVhc2UgdXAgbnRkbGwva2VybmVsIHNlcGFyYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBzZXQgdXAgaG9va3MgZm9yIGRpc3BhdGNoaW5nIHNpZ25hbAoJaGFuZGxlcnMgb3V0c2lkZSBudGRsbC4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJV2UgaGF2ZSB0byB1c2UgdGhlIFJ0bCB2YXJpYW50IG9mIEVudGVyL0xlYXZlQ3JpdGljYWxTZWN0aW9uIGluc2lkZQoJbnRkbGwuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUmVtb3ZlIC5zbyBleHRlbnNpb24gZnJvbSBtYWluIG1vZHVsZSBmaWxlIG5hbWUgYWZ0ZXIgbG9hZGluZyBpdCBzbwoJdGhhdCBHZXRNb2R1bGVGaWxlTmFtZSByZXR1cm5zIHRoZSByaWdodCB0aGluZy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2F0b20ucGw6CglSZXdyb3RlIGF0b20gdGVzdCBpbiBDLgoKCSogZmlsZXMvZmlsZS5jOiBSYWZhZWwgS2l0b3ZlciA8Y2FlbHVtQGRlYmlhbi5vcmc+CglDaGFuZ2VkIGRvc19oYW5kbGVzIHRvIHN0b3JlIGR1cHMgb2Ygc3RkaW8vb3V0L2VyciBhcyBwZXIgT3ZlIEthYXZlbidzCglzdWdnZXN0aW9uLgoKCSogZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmM6IE5pY29sYXMgRXNjdWRlciA8bi5lc2N1ZGVyQGFsaW5lYW5ldC5jb20+CglTcGVlZCBhbmQgYnVmZmVyIGltcHJvdmVtZW50LCBjb2RlIGNsZWFuIHVwLCBhbmQgZml4IHNvbWUgYnVnCglvbiBjbG9zZSAvIHJlc2V0IHdhdmVvdXQuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywKCSAgbG9hZGVyL3Jlc291cmNlLmMsIG9iamVjdHMvbWV0YWZpbGUuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2Lmg6CglGaXhlZCBIQU5ETEU8LT5IRklMRSBjb252ZXJzaW9ucywgc2luY2UgdGhleSB3aWxsIGJlIGRpZmZlcmVudCB0eXBlcwoJd2hlbiBoYW5kbGVzIGFyZSB2b2lkKi4KCjIwMDItMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVuYXMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lbmFzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL25hcy5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvbmFzLmgsCgkgIGRsbHMvd2lubW0vd2luZW5hcy93aW5lbmFzLmRydi5zcGVjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYzoKCU1lcmdlZCB0aGUgTkFTIGRyaXZlciB3cml0dGVuIGJ5IE5pY29sYXMKCUVzY3VkZXIgPG4uZXNjdWRlckBhbGluZWFuZXQuY29tPi4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhYmlsaXR5IHRvIGRlZmVyIGJyZWFrcG9pbnQgc2V0dGluZyBmb3IgYnJlYWtwb2ludCBkZWZpbmVkIGJ5IGFuCglhYnNvbHV0ZSBhZGRyZXNzLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gb24gaW50ZXJuYWwgdmFycy4KCjIwMDItMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3ZpcnR1YWwuYzoKCVNldCB0aGUgY29ycmVjdCBwZXJtaXNzaW9ucyBvbiB0aGUgUEUgaW1hZ2Ugc2VjdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYywgc2VydmVyL2ZpbGUuYywgdG9vbHMvd3BwL3dwcC5jLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGVidWdnZXIvZ2RicHJveHkuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ2hlY2sgZm9yIG1rc3RlbXAsIGFkZGVkIGEgcG9ydCBpbXBsZW1lbnRhdGlvbiBpZiBpdCBpcyBub3QKCXByZXNlbnQuIFVzZSBta3N0ZW1wKCkgaW4gdmFyaW91cyBwbGFjZXMgbmVlZGluZyB0bXAgZmlsZXMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmgsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywgd2luMzIvY29uc29sZS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVNvbWUgZG9zIFZHQSBlcnJvciBoYW5kbGluZy4gIE1pc2MgVFJBQ0UgY2hhbmdlcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvdXJjZSBjb21tYW5kLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvaWZzLmgsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gSW1wbGVtZW50ZWQgSU1hbGxvY1NweSBob29rcyBpbiBJTWFsbG9jLgoJLSBNb3ZlZCBtZW1vcnkgcmVsYXRlZCBmdW5jdGlvbnMgaW50byBpZnMuYy4KCS0gSW1wbGVtZW50ZWQgc3R1YnMgZm9yIHRoZSBNYWxsb2NTcHkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgZm9ybWF0IHN0cmluZy4KCgkqIGRsbHMvd2luZWRvcy9pb3BvcnRzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVZHQSBlbXVsYXRpb24gbm93IHN1cHBvcnRzIG91dHcgYW5kIG91dGwuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBWR0EgY29udHJvbGxlciBmcmFtZWJ1ZmZlciBiZXR3ZWVuIFZHQSB3aW5kb3cgYW5kCglEaXJlY3REcmF3U3VyZmFjZS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRhYmlsaXR5IGZpeC4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXggYnVpbGRpbmcvbGlua2luZyByZXNvdXJjZXMgb24gTWluZ3cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSW1wb3J0IGNvbWN0bDMyIGZ1bmN0aW9ucyBmcm9tIHNoZWxsMzIgYnkgb3JkaW5hbC4KCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBvcmRpbmFscyBpbiBjb21jdGwzMi5zcGVjLgoKCSogdG9vbHMvd3BwL3dwcC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSW5jbHVkZSA8c3RkbGliLmg+IG5lZWRlZCBieSBleGl0KCkuCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgaW5jbHVkZS93aW5kZWYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0ZWQgSEVOSE1FVEFGSUxFIGFuZCBITUVUQUZJTEUgdG8gYSB2b2lkKi4KCjIwMDItMDctMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvdGFzay5jLAoJICBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglDb252ZXJ0IEhUQVNLIHRvIHZvaWQqIChiYXNlZCBvbiBhIHBhdGNoIGJ5IE1pY2hhZWwgU3RlZmFuaXVjKS4KCgkqIHRvb2xzL3dpbmVidWlsZC8uY3ZzaWdub3JlLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgYSB3aW5lYnVpbGQgbWFuIHBhZ2UuCgoJKiBsaWJyYXJ5L2xvYWRlci5jLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGltcG9ydGluZyBieSBvcmRpbmFsLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCVNldCBjb3JyZWN0IGRsbCBmaWxlIG5hbWUgd2hlbiBidWlsZGluZyBhIC5kZWYgZmlsZS4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzogRml4ZWQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCUltcGxlbWVudGF0aW9uIG9mIFJ0bEdldE50VmVyc2lvbk51bWJlcnMuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFJhZmFlbCBLaXRvdmVyIDxjYWVsdW1AZGViaWFuLm9yZz4KCU1pbm9yIGZpeCBmb3IgaWRlLXNjc2kgY2Ryb21zLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgZGVjb2RpbmcgbG9naWMgZm9yIFZHQSBpbmRleGVkIHJlZ2lzdGVycy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBpbmNsdWRlL3dpbmRlZi5oLCB3aW5kb3dzL2hvb2suYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIENvbnZlcnRlZCBISE9PSyB0byBhIHZvaWQqLgoJLSBDaGFuZ2VkIHRoZSBpbnRlcm5hbCBIT09LXyogZnVuY3Rpb25zIHRvIHBhc3Mgb25seSBISE9PSydzIGJldHdlZW4KCSAgdGhlbS4KCS0gRml4ZWQgd3JvbmcgSEhPT0sgPC0+IEhBTkRMRTE2IGNvbnZlcnNpb25zLgoKMjAwMi0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVJEV19GUkFNRSBzaG91bGQgYmUgUkRXX05PRlJBTUUgd2hlbiB2YWxpZGF0aW5nIChzcG90dGVkIGJ5IER1YW5lCglDbGFyaykuCgoyMDAyLTA3LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjaW5jbHVkZSA8dW5pc3RkLmg+IHdoaWNoIGlzIHJlcXVpcmVkIGZvciB1bmxpbmsoKS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCU1ha2UgY29tcGlsZSBvbiBOZXRCU0QuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGYWN0b3JlZCBvdXQgdGhlIE9MRSAxNiBiaXQgYWxsb2NhdG9yIGZyb20gU3RyaW5nRnJvbUNMU0lELgoJSW1wbGVtZW50ZWQgUHJvZ0lERnJvbUNMU0lEMTYuCgoJKiB0b29scy93aW5lbWFrZXI6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJd2luZWJ1aWxkIHNlYXJjaGVzIGxpYnJhcmllcyBzcGVjaWZpZWQgaW4gLWwgcGFyYW1ldGVyIG9ubHkgaW4gdGhlCglsaWJyYXJ5IGRpcmVjdG9yaWVzIHNwZWNpZmllZCBiZWZvcmUgaW4gdGhlIC1MIHBhcmFtZXRlciwgYnV0Cgl3aW5lbWFrZXIgYWRkZWQgLUwgcGFyYW1ldGVyIGFmdGVyIC1sLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglQdXQgY29ycmVjdCBvcmRpbmFsIGhpbnRzIGluIHRoZSBpbXBvcnQgdGFibGUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaWxsIGxwY2JBdmFpbCBmb3IgUGVla05hbWVkUGlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglCdWcgZml4ZXMuCgoyMDAyLTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvZHNvdW5kLnNwZWM6IFJlbW92ZWQgb3JkaW5hbCAwLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9wZV9pbWFnZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igb3JkaW5hbCBoaW50IGluIFBFX0ZpbmRFeHBvcnRlZEZ1bmN0aW9uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9zaGx3YXBpL3VybC5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1pc2Mgc3BlbGxpbmcgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWw6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJVXBkYXRlZCBNRkMgbGVnYWwgaXNzdWVzIHNlY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBuZXcgbGljZW5zZSwgc29tZQoJb3RoZXIgY2hhbmdlcy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdDTURfcnVuX3Byb2dyYW06IGRvbid0IHRyeSB0byBydW4gYW4gZW1wdHkgbGluZS4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgdmVyYm9zZSBvdXRwdXQgd2hlbiBmaWxlIG5vdCBmb3VuZC4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdDTURfYmF0Y2g6IGluY3JlYXNlIHBvc3NpYmxlIGxpbmUgbGVuZ3RoIGFuZCB3YXJuIGlmIHN0aWxsIHRvbyBzbWFsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUNvbWJpbmVkIGltcGxlbWVudGF0aW9ucyBvZiBTaGVsbEV4ZWN1dGUvRXguCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUGF0aEFwcGVuZEEvVzogRG9uJ3Qgc2tpcCAnXFwnIGlmIHBhdGggaXMgVU5DLgoJUGF0aEdldENoYXJUeXBlQS9XOiAnLycgaXMgaW52YWxpZCwgbWFrZSBub24tQVNDSUkgY29tcGF0aWJsZSB0b28uCglJbXBsZW1lbnQgUGF0aENvbXBhY3RQYXRoRXhBL1cuCglVcGRhdGUgZG9jcywgcmVtb3ZlIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncyB3aXRoIC1XLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLAoJICBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGaXJzdCBwYXNzIGltcGxlbWVudGF0aW9uIG9mIEN4eEZyYW1lSGFuZGxlciAodGhhbmtzIHRvIEp1ZXJnZW4KCVNjaG1pZWQgZm9yIGhlbHAgaW4gdGVzdGluZyBpdCkuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBNb3ZlICJxdWVzdGlvbnMgYW5kIGNvbW1lbnRzIiBhdCB0aGUgdG9wIG9mIHRoZSBkb2N1bWVudC4KCS0gUmVtb3ZlZCBlbGZkbGwgZG9jdW1lbnRhdGlvbi4KCS0gUHJvcGVybHkgZG9jdW1lbnRlZCBEZXNrdG9wIGFuZCBNYW5hZ2VkIGNvbmZpZy4KCS0gUmVhcnJhbmdlZCBjb25maWcgZW50cmllcyBhY2NvcmRpbmcgdG8gaW1wb3J0YW5jZS4KCS0gIndpbmUuY29uZiIgLT4gInRoZSB3aW5lIGNvbmZpZyBmaWxlIiBpbiBzb21lIGNhc2VzLgoJLSBVcGRhdGVkIHRvIG5ldyBGVFAgVVJMcy4KCS0gRml4IG5vbi1iYWNrc2xhc2gtZXNjYXBlZCBwYXRocyAob3VjaCAhKS4KCS0gUmVwbGFjZSB0ZXh0IHJlZmVyZW5jZXMgYnkgcmVhbCBsaW5rcy4KCS0gTWlzYy4gb3RoZXIgdXBkYXRlcy4KCgkqIG9iamVjdHMvZm9udC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUHJvcGVybHkgY2hlY2sgdGhhdCB0aGUgZm9udCByZXNvdXJjZSBpcyBub3QgYWxyZWFkeSB0aGVyZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobHdhcGkuaCwKCSAgaW5jbHVkZS93aW5lL29ial9xdWVyeWFzc29jaWF0aW9ucy5oLCBvbGUvdXVpZC5jOgoJRml4ZWQgZHVwbGljYXRpb24gb2YgZGVmaW5pdGlvbnMgYmV0d2VlbiBzaGx3YXBpLmggYW5kCglvYmpfcXVlcnlhc3NvY2lhdGlvbnMuaC4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gQ2xlYW5lZCB1cCB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2hlbGwgZm9sZGVycyBhbmQgcHV0IHRoZW0gaW50bwoJICBzZXBhcmF0ZSBmaWxlcy4KCS0gRml4ZWQgc29tZSBtZW1vcnkgbGVha3MuCgktIFNvbWUgbW9yZSBmaXhlcy4KCjIwMDItMDctMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgLmNvbSBiaW5hcmllcyAodGhhbmtzIHRvIENocmlzIE1vcmdhbikuCgoJKiBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUYWtlIGEgc25hcHNob3Qgb2YgdGhlIGVudmlyb25tZW50IHN0cmluZ3Mgd2hlbiBidWlsZGluZyB0aGUKCV9fcF9fZW52aXJvbiBhcnJheSBhbmQgdXBkYXRlIHRoZSBhcnJheSBvbiBjYWxscyB0byBfcHV0ZW52LgoKCSogZGxscy9tc3ZjcnQvc3RyaW5nLmM6IFJlbW92ZWQgbm9uLWV4cG9ydGVkIHN0cmluZyBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgbWVudGlvbiBvZiBhIGRvdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4gQWRkZWQKCXJlZmVyZW5jZSB0byB0aGUgd2luZW1ha2VyIG1hbiBwYWdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgTFZNX1NDUk9MTCBhbmQgYWRqdXN0IHNjcm9sbGluZyBmb3IgYWxsIGZvcm1hdHMuCgktIEltcGxlbWVudCBzdGFuZGFyZCBDb21jdGwzMiBjb2xvciBoYW5kbGluZy4KCS0gRWxpbWluYXRlIGJvZ3VzIEVSUiBtZXNzYWdlcyBmb3IgYXBwbGljYXRpb24gbWVzc2FnZXMuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2VkaXRsaW5lLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU11bHRpLWxpbmUgZWRpdCBpcyBub3cgZW5hYmxlZC4KCUZpeGVkIGEgYnVmZmVyIGFsbG9jYXRpb24gZXJyb3IuCglZYW5rIGJ1ZmZlciBpcyBubyBsb25nZXIgZGVzdHJveWVkIGFmdGVyIHRoZSBmaXJzdCBjb3B5LgoJSW1wbGVtZW50ZWQgdGhlIHRyYW5zcG9zZSB3b3JkIChhbHQtdCkgYW5kIHJlZHJhdyAoY3RybC1sKQoJZW1hY3MtY29tbWFuZHMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBvZmZzZXQgZm9yIHJlbG9jYXRpbmcgc3ltYm9scyBpbiBzeW1ib2xmaWxlIGNvbW1hbmQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywKCSAgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjOgoJRml4ZWQgYnJva2VuIGZvcndhcmRzIHJlcG9ydGVkIGJ5IFBhdHJpayBTdHJpZHZhbGwuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBGaXggc29tZSBzcGVsbGluZyBwcm9ibGVtcy4KCS0gTW92ZSBXQ1VTRVJfU2V0TWVudURldGFpbHMgdG8gb3RoZXIgbWVudSByZWxhdGVkIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUluY2x1ZGUgc3lzL3R5cGVzLmggYmVmb3JlIHN5cy9zb2NrZXQuaC4KCgkqIHdpbmVkZWZhdWx0LnJlZzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBPTEUvQ09NIGNsYXNzZXMgcmVnaXN0ZXJlZCBieSBPTEVBVVQzMi5ETEwuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBSZXBvcnQgYnJva2VuIGZvcndhcmRzLgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoKMjAwMi0wNy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglBZGRlZCBtaXNzaW5nIHdpbmUvcG9ydC5oLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbm50Lmg6CglHZW5lcmF0ZSB0aGUgX19BU01fTkFNRSBhbmQgX19BU01fRlVOQyBtYWNyb3MgZGlyZWN0bHkgZnJvbQoJY29uZmlndXJlLgoJU2ltcGxpZmllZCB0aGUgV0lORV9UUllfQVNNX0xJTksgdGVzdC4KCU1vdmVkIERFQ0xfR0xPQkFMX0NPTlNUUlVDVE9SIHRvIHdpbmUvcG9ydC5oLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dyYy93cmMuYywKCSAgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglSZXBsYWNlIGFsbCB1c2VzIG9mIFBSRUZJWCBhbmQgQGZ1bmN0aW9uIGJ5IHRoZSBfX0FTTV9OQU1FIGFuZAoJX19BU01fRlVOQyBtYWNyb3MuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUltYWdlTGlzdF9SZW1vdmUgcmV0dXJucyBUUlVFIHdoZW4gcmVtb3ZpbmcgYWxsIGltYWdlcyBvZiBhbiBlbXB0eQoJSW1hZ2VMaXN0LgoKCSogZGVidWdnZXIvc3RhYnMuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CgktIERvY3VtZW50IHdoZXJlIHRoZSBzdGFicyBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQsIHNvIHRoYXQgc29tZW9uZQoJICBjYW4gaGVscCB1cGdyYWRlIHRoaXMgY29kZS4KCS0gQSBjb3VwbGUgb2YgbWlub3IgZW5oYW5jZW1lbnRzIHRvd2FyZHMgaGFuZGxpbmcgQysrLgoJLSBEb24ndCBib3RoZXIgdHJ5aW5nIHRvIGxvYWQgbGlic3RkYysrLCByYXRoZXIgdGhhbiBnZW5lcmF0aW5nIGFuCgkgIGVub3Jtb3VzIG51bWJlciBvZiAiZXJyb3JzIi4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUhhbmRsZSBmb3J3YXJkZWQgZnVuY3Rpb25zIHByb3Blcmx5IChiYXNlZCBvbiBhIHBhdGNoIGJ5IEZyYW5jb2lzCglHb3VnZXQpLgoKCSogZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWljaGFlbCBLYXJjaGVyIDxtaWNoYWVsLmthcmNoZXJAZHBrLmJlcmxpbi5maWRvLmRlPgoJU2V0IHRoZSBjb3JyZWN0IGxlbmd0aCBvZiB0aGUgc3RydWN0IEREU1VSRkFDRURFU0MuCgoJKiBvYmplY3RzL2ZvbnQuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lY29kZUBzdW4uY29uc3VtZXIub3JnLmlsPgoJTm93IGNoZWNrcyB0aGF0IHRoZSBHQ1BfUkVPUkRFUiBmbGFnIGlzIHNldCBiZWZvcmUgdHJ5aW5nIHRvIGFjY2VzcwoJYW55IG9mIHRoZSBmaWVsZHMgdGhhdCBkZXBlbmQgb24gdGhpcyBmbGFnLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogRml4ZWQgLmNvbSBiaW5hcnkgc3VwcG9ydC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJUm9kZXJpY2sgQ29sZW5icmFuZGVyIDx0aHVuZGVyYmlyZDJrQGdteC5uZXQ+CglTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgSW50ZXJuZXRBdXRvZGlhbC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgZmxhZy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywKCSAgZGVidWdnZXIvc291cmNlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHZlcnkgbG9uZyBsaW5lIHJlYWRpbmcgKGFuZCBzb21lIGJ1ZmZlcmluZyBidWdzKS4KCVJlbW92ZWQgdGhlIHN0YXRpYyBsaW1pdCBpbiBhcnJheSBmb3Igc3ltYm9scyBwYXJzaW5nLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdGhyZWFkLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTW92ZSB0aHJlYWQgcmVsYXRlZCBmdW5jdGlvbnMgdG8gbmV3IGZpbGUuCglJbXBsZW1lbnQgU0hDcmVhdGVUaHJlYWQsQDIyNCxANDI0LCBzdHViIFNIUmVsZWFzZVRocmVhZFJlZi4KCUZpeDogU0hHZXRUaHJlYWRSZWYoKSBjYWxscyBBZGRSZWYoKSwgQDM1NiBwYXJhbSBjb3VudCB3cm9uZy4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbmV3IGRlZmluZXMgYW5kIGZ1bmN0aW9ucy4KCjIwMDItMDctMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvdGhyZWFkLmM6CglBZGRlZCBkZWZpbml0aW9uIG9mIG1zdmNydCBpbnRlcm5hbCBlcnJvciBjb2Rlcy4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9nZGJwcm94eS5jLCBkZWJ1Z2dlci9zdGFicy5jLAoJICBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgcmVtb3RlIHByb3h5IGZvciBnZGIuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRml4ZWQgbGlua2luZyBydWxlIGZvciB0ZXN0IHByb2dyYW1zIChzcG90dGVkIGJ5IEdyZWdnIE1hdHRpbnNvbikuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbnZlcnRlZCBpbm5lciBsb29wcyAoV2luMzIgZGVidWcgZXZlbnQgaGFuZGxpbmcgLyBXaW5lRGJnIGNvbW1hbmQKCWxpbmUgcGFyc2VyKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJQWRkZWQgY2hlY2tzIGZvciBfX3NwYXJjX18sIF9fc3VuX18gYW5kIEBmdW5jdGlvbi4KCgkqIGFjbG9jYWwubTQ6IEZpeGVkIHF1b3RpbmcgaW4gV0lORV9UUllfQVNNX0xJTksgbWFjcm8uCgoJKiBvYmplY3RzL2RjLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNyZWF0ZURDQSBzaG91bGQgcmV0dXJuIGZhaWx1cmUgaWYgYm90aCBkcml2ZXIgYW5kIGRldmljZSBhcmUgTlVMTC4KCgkqIHdpbmRvd3Mvc3B5LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gQWRkIG1lc3NhZ2UgbWFwcGluZyBmb3IgdG9vbHRpcHMuCgktIFVzZSBERUJVR19TUFkgZGVmaW5lIGluc3RlYWQgb2YgY29tbWVudGluZyBvdXQgVFJBQ0VzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hZHZhcGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hdmlmaWwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9jb21jYXQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZGlucHV0OC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9nZGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9pbW0zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9rZXJuZWwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9udGRsbC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGUzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVhdXQzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9ycGNydDQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2V0dXBhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hkb2N2dy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGVsbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NobHdhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc3RpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VzZXIzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lZG9zLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmluZXQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubW0ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd3MyXzMyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHdpbmV0ZXN0IFBlcmwgbW9kdWxlcyB1c2luZyB3aW5hcGlfZXh0cmFjdC4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgd2luYXBpX2V4dHJhY3QuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIE1hbnkgc3R1YnMKCS0gU29tZSBvcmRpbmFscywgU0hTdHJEdXBBIGFuZCBTSFN0ckR1cFcgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywKCSAgaW5jbHVkZS93aW5yZWcuaDoKCURvbWluaWsgU3RyYXNzZXIgPGRvbWluaWsuc3RyYXNzZXJAbWNocC5zaWVtZW5zLmRlPgoJSW1wbGVtZW50ZWQgUmVnUXVlcnlNdWx0aXBsZVZhbHVlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJV2FpdCBmb3IgdGhlIGFzeW5jaHJvbm91cyB1cGRhdGUgdGhyZWFkIHRvIGNvbXBsZXRlIGlmIHRoZSBhcHAKCXJlcXVlc3RzIGl0LiBGaXhlZCBibGl0IG9mZnNldGluZyBpc3N1ZXMgaW4gd2luZG93ZWQgbW9kZS4KCgkqIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvd2lkbC5jLAoJICB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jOgoJRXhwbGljaXRseSBzcGVjaWZ5IHRoZSBwYXRoIHRvIHdwcC5oIHNvIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZQoJaW5jbHVkZSBwYXRoLCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBtdWx0aXBsZSB5LnRhYi5oIGZpbGVzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglIb25vdXIgdGhlIFZOTFBfQ09QWUlGRVhJU1RTIGZsYWcgd2hlbiBkb2luZyBhIGNvcHkgb3BlcmF0aW9uLgoKCSogbXNkb3MvZG9zbWVtLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNoYW5nZSBCSU9TREFUQSdzIHJvd3Mgb24gc2NyZWVuIG1pbnVzIDEgZnJvbSAyMyB0byAyNC4KCgkqIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWxsb3cgcmVnc3ZyMzIgdG8gcHJvY2VzcyBtdWx0aXBsZSBmaWxlbmFtZXMgKGFzIGRvZXMgdGhlIFdpbmRvd3MKCXZlcnNpb24pLgoKCSogaW5jbHVkZS93aW5udC5oOiBHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlZCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MuCgoJKiBmaWxlcy9kb3NfZnMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJUmVwYWlyIFNldExhc3RFcnJvciBpbiBGaW5kTmV4dEZpbGVBLgoKCSogcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGFuIGV4dGVybiBkZWNsYXJhdGlvbiB0byBzdG9wIGVnY3MtMi45MS42NiBmcm9tIGNyYXNoaW5nLgoKMjAwMi0wNy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbXN2Y3J0L2VoLmgsIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9kaXIuYywKCSAgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmM6CglGaXhlZCBwZXItdGhyZWFkIGRhdGEgaGFuZGxpbmcuCglNYWRlIHRlcm1pbmF0ZSBhbmQgdW5leHBlY3RlZCBmdW5jdGlvbiBwb2ludGVyIHBlci10aHJlYWQuCglBZGRlZCBzZXRfc2VfdHJhbnNsYXRvci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmgsCgkgIGluY2x1ZGUvbnRkZGsuaCwgdG9vbHMvd2luZWR1bXAvY3ZpbmNsdWRlLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglBdm9pZCBzdHJ1Y3R1cmVzIG9yIGFycmF5cyBvZiBzaXplIDAuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IGdvIGF0IHJlYWRpbmcgZGlyZWN0b3JpZXMgb24gcHVibGljIFNNQiBzaGFyZXMuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCSAtIFgxMS9leHRlbnNpb25zL3NoYXBlLmggcmVxdWlyZXMgWDExL1h1dGlsLmguCgkgLSBYMTEvWEtCbGliLmggcmVxdWlyZXMgWDExL1hsaWIuaC4KCSAtIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaC4KCSAtIG5ldGluZXQvaXAuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggYW5kIHN5cy9pbl9zeXN0bS5oLgoJIC0gcmVzb2x2LmggcmVxdWlyZXMgc3lzL3NvY2tldC5oLgoKCSogdG9vbHMvd2luZW1ha2VyOiBHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CgktIFJlbW92ZWQgbmFtZSwgdHlwZSwgbW9kZSwgcnNyYywgYW5kIGltcG9ydCBzdGF0ZW1lbnRzIGZyb20gLnNwZWMKCSAgZmlsZS4KCS0gQWRkZWQgaW1wb3J0cyBhbmQgcmVzb3VyY2VzIHRvIE1ha2VmaWxlLmluLgoJLSBDaGVja2VkIGZvciBfX3NwYXJjX18gYW5kIF9fc3VuX18sIHNhbWUgYXMgV2luZSdzIGNvbmZpZ3VyZS4KCS0gQ2hlY2tlZCAkV0lORV9ST09UL2xpYnJhcnkgZm9yIGxpYnJhcnkgZmlsZXMuCgktIENoYW5nZWQgbWl4ZWRjcnQgZGlyZWN0b3J5IHRvIG1zdmNydC4KCgkqIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTZXQgYW1vdW50cyByZWFkL3dyaXR0ZW4gdG8gMCwgc2hhcmUgVW4vTG9jayBjb2RlLCB1bmlmeSBjdG9ycy4KCVNIT3BlblJlZ1N0cmVhbUEvVyByZXR1cm4gYSBkdW1teSBvYmplY3Qgb24gZmFpbHVyZSwgbm90IE5VTEwuCglJbXBsZW1lbnQgQDEyIHVzaW5nIGNvbW1vbiBjdG9yLgoKCSogY29udHJvbHMvY29tYm8uYzogQ2FybCBTb3BjaGFrIDxjYXJsLnNvcGNoYWtAY2VnaXMxMjMuY29tPgoJUmV0dXJuIGVtcHR5IHN0cmluZyBvbiBlcnJvciBpbiBXTV9HRVRURVhULgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IE1hcmN1cyBNZWlzc25lciA8bW1AbHN0LmRlPgoJUHJvdGVjdCBJbnRlcm5ldENsb3NlSGFuZGxlKCkgYWdhaW5zdCBpbnZhbGlkIGhhbmRsZXMuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvd2luMTYuYXBpLAoJICB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1lcmdlZCBhbGwgQVBJIGZpbGVzIGludG8gdHdvIGZpbGVzIChXaW4xNi9XaW4zMikuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgb2JqZWN0cy9mb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJQ29udmVydCBITU9OSVRPUiB0byBhIHZvaWQqLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBzdWJjbGFzcyBhIGJ1ZGR5IGVkaXQgKHNwb3R0ZWQgYnkgR3V5CglMLiBBbGJlcnRlbGxpKS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBDTFNJRF9TdGRGb250IGNsYXNzIHJlZ2lzdHJhdGlvbi4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlIG91dHB1dCBmb3IgcmVjZW50IGJ1aWxkIGNoYW5nZXMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgU0hCcm93c2VGb3JGb2xkZXJXLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUF2b2lkIHdpbnJlZy5oIGluY2x1c2lvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgQ29Jbml0aWFsaXplU2VjdXJpdHkuCgoyMDAyLTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3BwL3dwcC5jOiBGaXhlZCB0ZW1wIG5hbWUgaGFuZGxpbmcuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvd2luZS9ycGNmYy5oLCB0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2lkbC8uY3ZzaWdub3JlLCB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL2hlYWRlci5jLAoJICB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci5oLCB0b29scy93aWRsL3BhcnNlci5sLAoJICB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvcHJveHkuaCwKCSAgdG9vbHMvd2lkbC91dGlscy5jLCB0b29scy93aWRsL3V0aWxzLmgsIHRvb2xzL3dpZGwvd2lkbC5jLAoJICB0b29scy93aWRsL3dpZGwuaCwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwgY29uZmlndXJlOgoJTWVyZ2VkIHRoZSBJREwgY29tcGlsZXIgd3JpdHRlbiBieSBPdmUgS2FhdmVuLgoKCSogdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvcHB5LnksIHRvb2xzL3dyYy9wcmVwcm9jLmMsCgkgIHRvb2xzL3dyYy9wcmVwcm9jLmgsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwKCSAgdG9vbHMvd3JjL3dyYy5jLCBjb25maWd1cmUuYWMsIHRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy93cHAvLmN2c2lnbm9yZSwgdG9vbHMvd3BwL01ha2VmaWxlLmluLCB0b29scy93cHAvcHBsLmwsCgkgIHRvb2xzL3dwcC9wcHkueSwgdG9vbHMvd3BwL3ByZXByb2MuYywgdG9vbHMvd3BwL3dwcC5jLAoJICB0b29scy93cHAvd3BwLmgsIHRvb2xzL3dwcC93cHBfcHJpdmF0ZS5oLCB0b29scy93cmMvLmN2c2lnbm9yZSwKCSAgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwKCSAgY29uZmlndXJlOgoJU3BsaXQgdGhlIEMgcHJlcHJvY2Vzc29yIGZyb20gd3JjIGludG8gYSBzZXBhcmF0ZSBsaWJyYXJ5LgoJUHJlZml4ZWQgZXhwb3J0ZWQgZnVuY3Rpb25zIGJ5ICdwcCcgdG8gYXZvaWQgbmFtZXNwYWNlIGNvbmZsaWN0cy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5oLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ueWFjYy55LAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUJyaW5nIHdpbmhlbHAgYmFjayB0byBsaWZlLCB3aXRoIG1haW5seSBzdXBwb3J0IGZvciBXaW45NSBoZWxwIGZpbGVzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IEZpeGVkIHNldHRpbmcgb2YgbWluL21heGltaXplIG13bSBoaW50cy4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCUZpeGVkIHR3byBsZWFrcyBpbiBmaWxlLSBhbmQgaXRlbW1vbmlrZXIuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZGVkIHN1cHBvcnQgRERCTFRfRERGWCBmbGFnIGluIERpcmVjdERyYXdTdXJmYWNlX0JsdC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZW1vdmUgc3R1YiBmb3Igb3JkaW5hbCAzOTQgYW5kIHJlcGxhY2Ugd2l0aCBmb3J3YXJkIHRvCgkgIENyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1BIHdoZXJlIHRyYWNpbmcgc2hvd3MgaXQgZ29pbmcuCgktIEFkZCBzdHViIGZvciBvcmRpbmFsIDQzMC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEb24ndCBpc3N1ZSBlcnJvciBtZXNzYWdlIGlmIG1lc3NhZ2UgbnVtYmVyIGluIGFwcGxpY2F0aW9uIHJhbmdlLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgU0hDcmVhdGVTdHJlYW1PbkZpbGVBL1cvRXgsIG9yZGluYWxzIEAxNjYsMTg0LDIxMi0yMTQuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRmx1c2hGaWxlQnVmZmVycyBmb3Igc2VyaWFsIGRldmljZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IFBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglSZW1vdmVkIGRyaXZlIGFzc3VtcHRpb25zIGluIHRoZSBwYXRoIGhhbmRsaW5nIHJlZ3Jlc3Npb24gdGVzdHMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgYW5kIGEgd3JvbmcgbWVtb3J5IGZyZWUgY2FsbC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURvIG5vdCAjaW5jbHVkZSA8bWFsbG9jLmg+LCB3aGljaCBpcyBub24tc3RhbmRhcmQgYW5kIG5vdCBuZWVkZWQuCgoJKiBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVGVzdCBmb3IgWDExIGVycm9ycyBmb3IgREdBMiBhbmQgWFZpZE1vZGUgZXh0ZW5zaW9ucy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBERFJBV19TWVNURU1NRU1PUlkgaXMgaGFuZGxlZCBsaWtlIE9GRlNDUkVFTlBMQUlOIGZvciBub3cKCS0gYWRkZWQgbW9yZSBsb2dnaW5nCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZWQgYW5vdGhlciBub24tc3RhdGljIHN0cnVjdHVyZSBpbml0aWFsaXplci4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdGlvbiB0byBoZWFkZXIgb3JkZXIgbWFpbnRlbmFuY2Ugd2hlbiBhIGR1bW15IGZpcnN0IGl0ZW0gaXMKCWFkZGVkIGFuZCB0aGVuIGRlbGV0ZWQgKGFzIHN1Z2dlc3RlZCBieSBNU0ROIHRvIGhhbmRsZSB0aGUgZmFjdCB0aGF0Cgl0aGUgZmlyc3QgY29sdW1uIG9mIGEgbGlzdHZpZXcgaXMgbGVmdCBqdXN0aWZpZWQpLiAgQWxzbyByZW1vdmVkCglyZWR1bmRhbnQgY2FzdHMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IFJvYiBNY0NsaW50b24gPG15cHVibGljYWNjb3VudEBob3RtYWlsLmNvbT4KCVgxMURSVl9HZXRESUJpdHM6IERvbid0IGNsZWFyIHRoZSBiaUNvbXByZXNzaW9uPT1CSV9CSVRGSUVMRFMgZmxhZwoJYWZ0ZXIgY3JlYXRpbmcgdGhlIGJpdHMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVkIHZvaWQqIGFyaXRobWV0aWMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglJbml0aWFsaXplZCB0aGUgcGlkbE91dCB2YXJpYWJsZSBpbiBTSEVMTDMyX1BhcnNlTmV4dEVsZW1lbnQgdG8KCXByZXZlbnQgYSBjcmFzaCBpbiBzb21lIGNhc2VzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIHVuaW5pdGlhbGl6ZWQgSEtFWXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRGVsZXRlQ29sdW1uIHNob3VsZCByZXR1cm4gc3VjY2VzcyBldmVuIGZvciB1T3duZXJEYXRhLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuaCwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUEgZmV3IGNvc21ldGljIGNoYW5nZXMgcGx1cyBmaXhlcyBmb3IgcHJvYmxlbXMgc3BvdHRlZCBieSBEbWl0cnkKCVRpbW9zaGtvdi4KCgkqIHByb2dyYW1zL25vdGVwYWQvU2kucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBTbG92ZW5pYW4gcmVzb3VyY2VzLgoKMjAwMi0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDAyMDcxMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjOgoJQWRkZWQgRlBVIGVtdWxhdGlvbiBpbnRlcnJ1cHRzLgoKCSogbXNkb3MvZnB1LmMsIG1zZG9zL2ludDNkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCUFkbWlyYWwgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgRlBVIGVtdWxhdGlvbiBpbnRlcnJ1cHRzLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgd2luZG93cy9ob29rLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3R1YnMvZG9jcyBmb3IgTm90aWZ5V2luRXZlbnQsU2V0V2luRXZlbnRIb29rLElzV2luRXZlbnRIb29rSW5zdGFsbGVkLAoJVW5ob29rV2luRXZlbnQuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJUXVpZXQgdGhlIGZvbnQgbG9hZGluZyBlcnJvci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDQlVwZGF0ZUVkaXQ6IExCX0dFVFRFWFRMRU4gcmV0dXJucyBMQl9FUlIgb24gZXJyb3IsIG5vdCAwLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCUZpeGVkIGNvcnJ1cHRpb24gd2hlbiBjb3B5aW5nIHRvIHRoZSBzYW1lIHN1cmZhY2UgKHdpdGggdGhlIGhlbHAgb2YKCVRvbnkgTGFtYnJlZ3RzIGFuZCBMaW9uZWwgVWxtZXIpLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCTQ4IHdhcyBwbGFpbiB3cm9uZyBhcyB2YWx1ZSBmb3IgSEVMbWFyZ2luLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZXMgdG8gYWxsb3cgYmlnIGVuZGlhbiBtYWNoaW5lcyB0byBsb2FkIE1TRlQgdHlwZWxpYiBmaWxlcy4KCgkqIGZpbGVzL2RyaXZlLmM6CglGaXhlZCBoYW5kbGluZyBvZiBkcml2ZXMgd2l0aCAiLyIgcGF0aCAodGhhbmtzIHRvIE1hcmN1cyBNZWlzc25lcikuCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzoKCUNhcmwgU29wY2hhayA8Y2FybC5zb3BjaGFrQGNlZ2lzMTIzLmNvbT4KCVBhc3MgIk1hbnVhbCBGZWVkIiBhcyBzaG9ydCBpbnB1dCBzbG90IG5hbWUuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHN5bmNocm9uaXNhdGlvbiBmb3IgY3RybCBldmVudCBnZW5lcmF0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCVNoYWNoYXIgU2hlbWVzaCA8c3VuQGNvbnN1bWVyLm9yZy5pbD4KCS0gRml4ZWQgYWNjZXNzIHRvIHRoZSBscFRlbXBsYXRlTmFtZSBvZiBDaG9vc2VGb250IGluIGNhc2VzIHdoZXJlIHRoZQoJICBmbGFncyBkb24ndCBzcGVjaWZ5IHRvIHVzZSBpdC4KCS0gRG8gbm90IHRyeSB0byBjb252ZXJ0IHRoZSByZXNvdXJjZSBuYW1lIGZyb20gQU5TSSB0byBXaWRlIGlmIGl0IGlzIGEKCSAgcmVzdWx0IG9mIE1BS0VJTlRSRVNPVVJDRSAoYW5kIHRoZXJlZm9yZSBub3QgYSBzdHJpbmcpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJQ3JlYXRlZCByZWdpc3RyeSB1bml0IHRlc3QgYW5kIGFkZGVkIHRlc3RzIGZvciBSZWdFbnVtVmFsdWVbQVddLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBtZW1vcnkvcmVnaXN0cnkuYzoKCVJlZ0VudW1WYWx1ZVtBV10gbmVlZCB0byB1cGRhdGUgdGhlIGRhdGEgc2l6ZSBvbiBidWZmZXIgb3ZlcmZsb3cKCShzcG90dGVkIGJ5IE1hc3NpbW8gPG1heEB2ZW5ldG8uY29tPikuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmVkIHRoZSBmbGFncyBmaWVsZHMgb2YgSURpcmVjdERyYXdQYWxldHRlSW1wbCwgYXMgd2Ugc2hvdWxkIHVzZQoJdGhlIGR3RmxhZ3MgZmllbGQgb2YgRERSQVdJX0REUkFXUEFMRVRURV9HQkwgc3RydWN0dXJlIGluc3RlYWQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIFdNX1NZTkNQQUlOVCB3aXRoIERlZldpbmRvd1Byb2MuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBlcnJvciBoYW5kbGluZyBvbiBpbnB1dCBzdHJlYW0gcmVhZGluZy4KCgkqIGRlYnVnZ2VyL2V4dF9kZWJ1Z2dlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBleHRlcm5hbCBkZWJ1Z2dlciBzdGFydHVwLgoKCSogZGxscy93aW5tbS93aW5tbV9TaS5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgU2xvdmVuaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBidWZmZXIgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIEluaXRpYWxpemVHZW5lcmljU0YoKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcHJvdmUgdHJhY2VzLgoJLSBDaGFuZ2VkIGRlZmF1bHQgY29sdW1uIHdpZHRoIHRvIDEyOCB0byBtYXRjaCBuYXRpdmUgYW5kIG1ha2UgdGhhdAoJICB0aGUgbWltaW11bSBmb3IgTFZTX1NNQUxMSUNPTiBhbmQgTFZTX0xJU1Qgc3R5bGVzLgoJLSBDb3JyZWN0ZWQgbWF4IHZhbHVlIGZvciBMVlNfTElTVCBzdHlsZSBzY3JvbGwgaW5mby4KCS0gSXNzdWUgb3VyIG93biBTaG93U2Nyb2xsQmFyIGxpa2UgdGhlIG5hdGl2ZSB3aXRoIHByb3BlciB0ZXN0LgoJLSBDb3JyZWN0IGFsaWdubWVudCB3aGVuIHVzaW5nIExWU19JQ09OIHN0eWxlLgoJLSBDb3JyZWN0IEZJWE1FcyBmb3IgdW5pbXBsZW1lbnRlZCBzdHlsZXMuCgktIENvcnJlY3QgcmVjdCBzaXplIGNvbXB1dGF0aW9uIGZvciBMVlNfTElTVC4KCS0gUmVzZXQgc2Nyb2xsIGJhcnMgd2hlbiBjaGFuZ2luZyBzdHlsZXMuCgktIEltcGxlbWVudCBXTV9XSU5ET1dQT1NDSEFOR0VELgoKMjAwMi0wNy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL2NsaXN0LmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQvZG9jdW1lbnQgQDE3LDE4LDE5LDIwLDIxLDIyIChDb21wYWN0IGxpc3QgQVBJKS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgbmV3IHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9vcGVuX29zZmhhbmRsZTogc2V0IGF0IGxlYXN0IHRoZSBfSU9SRUFEIGZsYWcuCgoJKiB3aW5kb3dzL2RjZS5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCU1ha2UgTG9ja1dpbmRvd1VwZGF0ZSByZXR1cm4gbW9yZSBXaW5kb3dzLWxpa2UgdmFsdWVzLgoKMjAwMi0wNy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCVJlbW92ZSAuZGxsIGV4dGVuc2lvbiBmcm9tIG1vZHVsZSBuYW1lLCBhZGRlZCB3aWxkY2FyZCBzdXBwb3J0IGluCglyZWxheSBzcGVjaWZpY2F0aW9ucyAod2l0aCB0aGUgaGVscCBvZiBEbWl0cnkgVGltb3Noa292KS4KCgkqIG1lbW9yeS9zdHJpbmcuYzoKCVRvbW15IFNjaHVsdHogTGFzc2VuIDx0bGFzc2VuQHRsYXNzZW4uZGs+CglGaXhlZCBsc3RyY3B5bkEgZGVidWcgdHJhY2luZy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZmdldHMsIGZnZXR3czogZG9uJ3QgdHJlYXQgdGhlIHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBhcyB2YWxpZAoJc3RyaW5ncy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TVkNSVF9mcmVhZDogZXhwb3NlIGZlb2YgZmxhZy4KCgkqIHRvb2xzL3dpbmVjaGVjazoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglXaW5kb3dzIHJlZ2lzdHJ5IG5vdCBmb3VuZCBzaG91bGQgYmUgYSBub3RpY2UgdG8gdGhlIHVzZXIsIG5vdCBhCgljcml0aWNhbCBlcnJvci4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglSZW1vdmVkIHdvcmthcm91bmQgZm9yIDE2LWJpdCBsb2FkZXIgYnVnLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9SRUFETUUsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU3cucmMsIHByb2dyYW1zL25vdGVwYWQvVE9ETywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuaCwgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWRfcmVzLmgsIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVVzZSByaWNoIHRleHQgZWRpdCBjb250cm9sIGluc3RlYWQgb2YgaGFuZGxpbmcgdXNlciBpbnB1dCBhbmQKCXJlbmRlcmluZyBvbiBpdHMgb3duLCB1c2UgbmFtZWQgY29uc3RhbnRzIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVycywKCWNsZWFuZWQgY29kZSwgaW1wbGVtZW50ZWQgVW5kbyBmdW5jdGlvbmFsaXR5LgoKCSogZGxscy9rZXJuZWwvdGh1bmsuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gQWx3YXlzIGNvcHkgKGFsbW9zdCkgdGhlIHdob2xlIHN0YWNrIHNwYWNlIG92ZXIgdG8gdGhlIDE2Yml0IHN0YWNrCgkgIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgc29tZSBwb3RlbnRpYWxseSBib2d1cyBwYXJhbWV0ZXIgY291bnQuCgktIEFkZCBzb21lIGNvbW1lbnRzLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlZCBWX0RFQ0lNQUwgbWFjcm8gdG8gcmVmbGVjdCB3aGVyZSB0aGUgZGVjVmFsIG1lbWJlciBpcyBhY3R1YWxseQoJc3RvcmVkLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBfVUBZQVBBWElAWiBhbmQgX1ZAWUFQQVhJQFouCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNU1ZDUlRfZnNlZWs6IHNob3VsZCByZXR1cm4gMCBvbiBzdWNjZXNzLgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHJpY2hlZGl0IHN1cHBvcnQgZm9yIGEgcGxhaW4gdGV4dCBzdHJlYW0uCgoJKiBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gVmFyRm9ybWF0IG5vdyBzdXBwb3J0cyBWVF9SOCBhbmQgQllSRUYgdmFyaWFudCB0eXBlcy4KCS0gQWRkIFZhckN5TXVsSTQgc3VwcG9ydC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5vdGhlciBQbGF5U291bmQgYnVnICh3aGVuIFNORF9MT09QIGlzIHJlcXVlc3RlZCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IHdnbFVzZUZvbnRCaXRtYXBzQSB3aGVuIHVzaW5nIGNsaWVudC1zaWRlIHJlbmRlcmluZy4KCjIwMDItMDctMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCU5lZWQgdG8gaW1wb3J0IG50ZGxsLgoKCSogcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCU1vZGlmaWVkIFdDTURfZmlsZXNpemU2NCB0byBoYW5kbGUgdW5zaWduZWQgbnVtYmVycy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgbWVtb3J5L3JlZ2lzdHJ5LmM6CglNb3JlIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIG9mIGluZm9fc2l6ZSBmb3Igc3R1cGlkIGNvbXBpbGVycy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCVVzZSBXaW5lIGRlYnVnZ2luZyBBUEkuIEZpeGVkIE1lc3NhZ2VCb3ggbG9vcC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCUZsdXNoIHN0ZGlvIG9uIGV4aXQuCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYzogRml4ZWQgd2FybmluZ3MuCgoJKiBkbGxzL3gxMWRydi93aW5lY2xpcHNydi5jLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBtc2Rvcy9pbnQyZi5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJLSBGb3J0ZSBDIGRvZXMgbm90IHN1cHBvcnQgbmFtZWxlc3Mgc3RydWN0dXJlcyBvciB1bmlvbnMKCS0gSW1wbGVtZW50ZWQgX19idWlsdGluX3JldHVybl9hZGRyZXNzIGZvciBGb3J0ZSBDIG9uIHNwYXJjCgktIEltcGxlbWVudGVkIERFQ0xfR0xPQkFMX0NPTlNUUlVDVE9SIGZvciBub24tMzg2LCBub24tR05VIEMKCS0gSW1wbGVtZW50ZWQgV0lORV9EUFJJTlRGIHRvIGhhdmUgZnVuY3Rpb24gbmFtZSB3aXRoIEZvcnRlIEMKCgkqIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBhIGdlbmVyaWMgd2F5IG9mIGRvaW5nIEdldEhHbG9iYWxGcm9tSUxvY2tCeXRlcygpLgoKCSogcHJvZ3JhbXMvd2luZWxhdW5jaGVyLmluOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBtYWtlIHN1cmUgZXZlbiBHVUkgdXNlcnMgbm90aWNlIGEgIm1pc3NpbmcgeG1lc3NhZ2UiIHByb2JsZW0gYnkKCSAgY2hlY2tpbmcgZm9yIHRvbnMgb2YgWDExIGVkaXRvcnMKCS0gcmVwbGFjZSBkdXBsaWNhdGVkICgzeCkgY29kZSB3aXRoIGZ1bmN0aW9uIGxhdW5jaF93aW5lc2V0dXAoKQoJLSBpbXByb3ZlZCAid2luZXNldHVwIG5vdCBmb3VuZCIgZXJyb3IgbWVzc2FnZQoJLSBicmVhayBsb29waW5nICh2aWEgY29kZSAxMjcpIGluIGNhc2Ugbm8geG1lc3NhZ2UgaW5zdGFsbGVkCgktIHN0cmVzcyB0aGUgZmFjdCB0aGF0IHBlb3BsZSBzaG91bGQgcmVtZW1iZXIgdGhhdCB0aGV5IGNhbiByZWdhaW4gY2VydGFpbgoJICBzZXR0aW5ncyBieSBkZWxldGluZyBmbGFnIGZpbGVzCgktIHNwZWxsaW5nIGZpeGVzCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglJbXBsZW1lbnRlZCBGb3JtYXRNZXNzYWdlIGZvciBzcGFyYy4gIFNpbmNlIHRoZSB2YV9saXN0IGlzIHN0b3JlZCBpbgoJbWVtb3J5IGxpa2UgX19pMzg2X18sIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIHNob3VsZCB3b3JrLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgbG9hZGVyL2xvYWRvcmRlci5jLCBtaXNjL3ZlcnNpb24uYzoKCU5vIG5lZWQgdG8gY2FsbCBHZXRNb2R1bGVGaWxlTmFtZTE2IG5vdyB0aGF0IEdldE1vZHVsZUZpbGVOYW1lQQoJaGFuZGxlcyAxNi1iaXQgdGFza3MuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglGaXhlZCBHZXRNb2R1bGVGaWxlTmFtZVcgcmV0dXJuIHZhbHVlLgoJUXVpZXQgZGxsIGxvYWRpbmcgZXJyb3IgbWVzc2FnZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglSZXR1cm4gRVJST1JfQkFEX0VYRV9GT1JNQVQgd2hlbiBidWlsdGluIGRsbCBzdGlsbCBub3QgZm91bmQsIHNpbmNlIHdlCgltb3N0IGxpa2VseSBsb2FkZWQgYSAxNi1iaXQgYnVpbHRpbi4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMgY2FsbCBvdXQgb2YgdGhlIHdpbmRvdyBsb2NrLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCBkcml2ZSBsZXR0ZXIgYW5kIFVuaXggcGF0aCB0ZXN0cyBvZiBHZXRGdWxsUGF0aE5hbWVBLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIFZhckJzdHJDYXQgaGFuZGxlcyBudWxsIHBhcm1zIGFzIHBlciB3aW5kb3dzIGFuZCBhY3R1YWxseSBkb2VzCgl0aGUgY29uY2F0ZW5hdGlvbiBldmVuIGZvciBudWxsIGFyZ3MuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDaGVjayBmb3IgTlVMTCBrZXl2YWx1ZSBpbiBSZWdFbnVtS2V5RXhBL1cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglDb21ib0xCV25kUHJvYzogZmFsbCB0aHJvdWdoIHRvIExpc3RCb3hXbmRQcm9jIGlmIHRoZSBsaXN0Ym94IGlzIG5vdCBhCglDb21ib0xCb3guCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJUmVtb3ZlZCAic28iIGZyb20gdGhlIGRlZmF1bHQgbG9hZCBvcmRlci4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywKCSAgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL2RpYWxvZy5jOgoJVHJpZWQgdG8gbWFrZSBJc0RpYWxvZ01lc3NhZ2VXIG1vcmUgY29tcGF0aWJsZS4gQ2hhbmdlZAoJSXNEaWFsb2dNZXNzYWdlMTYvQSB0byBjYWxsIElzRGlhbG9nTWVzc2FnZVcuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCS0gUmVwbGFjZWQgLnByZXZpb3VzIHdpdGggYSAuc2VjdGlvbiBzdGF0ZW1lbnQgZm9yIHRoZSBhcHByb3ByaWF0ZQoJICBzZWN0aW9uLgoJLSAnLnNlY3Rpb24gLnRleHQnIGlzIGluY29ycmVjdC4gIEl0IHNob3VsZCBiZSAnLnNlY3Rpb24gIi50ZXh0IicuCgoJKiBkbGxzL21zdmNydC9oZWFwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNU1ZDUlRfb3BlcmF0b3JfbmV3OiBDYWxsIGhhbmRsZXIgb25seSB3aGVuICJuZXciIG9wZXJhdGlvbiBmYWlscy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglDaGFuZ2VkIEdldE1vZHVsZUZpbGVOYW1lQSB0byB1c2UgR2V0Q3VycmVudFRhc2sgaW5zdGVhZCBvZgoJTU9EVUxFMzJfTG9va3VwSE1PRFVMRSB3aGVuIGNhbGxlZCBieSBhIDE2LWJpdCB0YXNrLgoKMjAwMi0wNy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGZpbGVzL3NtYi5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIG1lbW9yeS92aXJ0dWFsLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgZGVidWdnZXIvbW9kdWxlLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUNhc3Qgdm9pZCogdG8gY2hhciogZm9yIHBvaW50ZXIgYXJpdGhtZXRpYy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCXN0cmNhc2VjbXAgcmV0dXJucyB6ZXJvIG9uIGEgbWF0Y2guCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywKCSAgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlbW92ZWQgbm9uLXN0YXRpYyBzdHJ1Y3R1cmUgaW5pdGlhbGl6ZXJzLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQmV0dGVyIHRvZ2dsZSBhbGwgcmVsZXZhbnQgYml0cyBpbiBWR0EgY3J0IHJlZ2lzdGVyLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUNoZWNrIFBPTExIVVAgc2VtYW50aWNzIGF0IHJlbW90ZSBzaHV0ZG93biB3aGVuIHdpbmVzZXJ2ZXIgaXMgc3RhcnRlZC4KCUZpeCBzb2NrZXQgc3RhdGUgaGFuZGxpbmcgYW5kIGV2ZW50IGhhbmRsaW5nIGZvciBub24tU1RSRUFNIHNvY2tldHMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGaXhlZCBYMTFEUlZfU2V0RElCaXRzVG9EZXZpY2UgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciB0b3AtZG93bgoJYW5kL29yIHBhcnRpYWwgYml0bWFwcy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglEb2N1bWVudCB0aGUgbmV3IHRyYWNlLXJlbGF0ZWQgd2luZWRiZyBjb21tYW5kcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3VzZXIvd25kMTYuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVZvaWQgZnVuY3Rpb25zIGNhbid0IHJldHVybiBhIHZhbHVlLCBldmVuIGlmIGl0IGlzIHRoZSByZXR1cm4gdmFsdWUKCWZyb20gYW5vdGhlciB2b2lkIGZ1bmN0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEZXRlY3QgRENzIHdpdGhvdXQgZm9udHMgYW5kIHJldHVybiBhbiBlcnJvciBpbiB3Z2xVc2VCaXRtYXBGb250cy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4Lmw6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZW1vdmVkIHVudXN1YWwgdHlwZSBjYXN0aW5nLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglBdm9pZCBtdWx0aS1saW5lIHN0cmluZyBjb25zdGFudHMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVtb3ZlZCBleHRyYSAsIGZyb20gbGFzdCBlbGVtZW50IGluIGVudW0gZGVjbGFyYXRpb25zLgoKCSogaW5jbHVkZS9kc291bmQuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlbW92ZWQgZXh0cmEgOyBmcm9tIGVuZCBvZiBJQ09NX01FVEhPRCBtYWNyb3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgbW9yZSBjb25maWd1cmF0aW9uIGlzc3Vlcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxNi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWFrZSBzdXJlIHdlIHdhaXQgc29tZSB0aW1lIGR1cmluZyBpbnQxNiBrZXlib2FyZCBxdWVyeSBjYWxsLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgYSBET1MgdGV4dCBtb2RlIG1lbW9yeSBidWZmZXIgY29weSBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHRlbGwKCXdoaWNoIGxpbmVzIG9mIHRleHQgY2hhbmdlZCBhbmQgdGh1cyB3aGljaCBvbmVzIHRvIHVwZGF0ZS4KCgkqIG1zZG9zL2ludDJmLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDYWxsIFNsZWVwIGZvciBpbnQgMHgyZiBmdW5jdGlvbiAweDE2ODAgKElETEUgQ0FMTCkuCgoyMDAyLTA3LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOgoJUmVtb3ZlZCByZWR1bmRhbnQgR2V0TWVzc2FnZSBjYWxsLgoKCSogZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmgsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZmlsZXMvc21iLmMsIGxvYWRlci9wZV9pbWFnZS5jLAoJICBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRml4ZWQgd2FybmluZ3MuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIGltcGxlbWVudGF0aW9ucyBmb3IgU0hMV0FQSV8yNjcsIFNITFdBUElfMjY4CgktIHNtYWxsIGZpeGVzCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIGNoYW5nZWQgU1RSUkVUIGRlZmluaXRpb24KCS0gc21hbGwgY2hhbmdlcyBmb3Igc2VwZXJhdGlvbiBvZiBzaGVsbDMyIGZyb20gb2xlMzIKCS0gZGVidWdoZWxwZXIgZm9yIHByaW50aW5nIGludGVyZmFjZSBuYW1lcyAoc2hlbGwgaW50ZXJuYWwpCgktIGNoYW5nZWQgc2hlbGwgbWVtb3J5IGFsbG9jYXRpb24gdG8gdXNlIElNYWxsb2Mgb2Ygb2xlMzIgd2hlbiB0aGlzCgkgIGxpYnJhcnkgaXMgYWxyZWFkeSBsb2FkZWQKCS0gZmFsbGJhY2sgSU1hbGxvYyBpbnRlcm5hbGx5IGluIHNoZWxsCgktIHVuaWZpZWQgY29uc3RydWN0b3Igc3ludGF4IGZvciBzZXZlcmFsIG9iamVjdHMgIGNyZWF0ZWQgYnkgRGxsR2V0Q2xhc3NPYmplY3QKCS0gcmV3cm90ZSBpbnN0YW5jZSBjcmVhdGlvbiBmb3IgY29tIG9iamVjdHMKCS0gbWFkZSB0aGUgZGVza3RvcCBmb2xkZXIgcGFyc2luZyBwYXRocyBsaWtlIDo6e0NMU0lEfQoJLSBJbXBsZW1lbnRlZCBJUGVyc2lzdEZvbGRlcjMgcGFydGlhbGx5CgoyMDAyLTA3LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBzZXJ2ZXIvY29uc29sZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBVc2UgUGVla01lc3NhZ2UgbG9vcCBhcm91bmQgR2V0TWVzc2FnZS4KCS0gQWRkZWQgR2VybWFuIHJlc291cmNlIGZpbGUuCgktIFJlYWxpZ24gc29tZSBkaWFsb2cgcGFydHMuCgktICJQcm9wZXJ0eSIgLT4gIlByb3BlcnRpZXMiCgktIEFkZCBzb21lIHRyYWNlcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CgktIHN0dWJzIGZvciBTSExXQVBJLjI5NSAoY3JlYXRlIGEgVVJMIHNob3J0Y3V0ID8pIGFuZCBTSExXQVBJLjM5NAoJLSBtaW5vciBjbGVhbnVwcwoKCSogd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgdGhlIEZpcnN0SW5zdGFsbERhdGVUaW1lIGtleS4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJTWFrZSBzdXJlIGFsbG9jYXRlZCBibG9ja3MgYXJlIGFsaWduZWQgb24gYW4gOC1ieXRlIGJvdW5kYXJ5LgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOgoJSG9wZWZ1bGx5IG1vcmUgcG9ydGFibGUgZXJybm8gY2hlY2suCgoJKiBSRUFETUUsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLAoJICBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbjoKCUZpeGVkIG1ha2UgaW5zdGFsbCBmcm9tIHJlYWQtb25seSBidWlsZCBkaXJlY3RvcnkgKHNwb3R0ZWQgYnkgTWFyY3VzCglNZWlzc25lcikuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVJlbGVhc2UgdGhlIFdpbjE2IGxvY2sgYmVmb3JlIHdhaXRpbmcgaW4gTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnJhcnkvY29uZmlnLmM6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIGdldHB3dWlkLgoKCSogZGxscy9udGRsbC90aW1lLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglBdm9pZCBhbGlnbm1lbnQgcHJvYmxlbSBpbiBOdFF1ZXJ5U3lzdGVtVGltZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaCwKCSAgaW5jbHVkZS9taXNjZW11Lmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglJbXBsZW1lbnRlZCBzZXQgY3Vyc29yIHNoYXBlIGZ1bmN0aW9uYWxpdHkuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIHRoZSBjb3JyZWN0IGxlbmd0aCB3aGVuIGdldHRpbmcgYSBjb21wbGV0ZSBzZWN0aW9uIGluCglQUk9GSUxFX0dldFN0cmluZy4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVN1cHBvcnQgZm9yIGxhcmdlIGFuZCBuZWdhdGl2ZSBvZmZzZXRzLgoKMjAwMi0wNi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmM6CglCSVRNQVBfU2VsZWN0T2JqZWN0IG11c3QgcmV0dXJuIHRoZSBvbGQgaGFuZGxlLCBub3QgdGhlIGN1cnJlbnQgb25lLgoKCSogd2luZG93cy9kZWZkbGcuYzoKCUNoZWNrIGZvciB2YWxpZCBkaWFsb2cgaW5mbyBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jOgoJTml4IE4uIE5peCA8bml4QGdvLW5peC5jYT4KCVJlbW92ZWQgbWVzc2FnZSBib3ggdGhhdCB3b3VsZCBwb3AgdXAgaWYgYSBSdW5NUlUgbGlzdCB3YXMgbm90IGZvdW5kLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIFNsb3ZlbmlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglQaGlsaXBwIFdvbGxlcm1hbm4gPHBoaWxfd29AZ214Lm5ldD4KCUltcGxlbWVudGVkIFNQSV9HRVRERVNLV0FMTFBBUEVSIGFjdGlvbiwgZml4ZWQgU1BJX1NFVERFU0tXQUxMUEFQRVIuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCURpc2FibGUgT1dOX1dJTkRPVyBhcyBpdCBubyBsb25nZXIgd29ya3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglBZGRlZCBzb21lIEFMU0EgY29uZmlndXJlIGNoZWNrcy4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYWxzYS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmgsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL3dpbmVhbHNhLmRydi5zcGVjLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNyZWF0ZWQgYW4gQUxTQSBkcml2ZXIgKHdpdGggdGhlIGhlbHAgb2YgRGF2aWQgSGFtbWVydG9uIGFuZCBNYXJjbwoJUGlldHJvYm9ubykuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUZpeGVkIHR5cG8gaW4gWDExRFJWX1NldFBpeGVsLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5oLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmgsCgkgIGRsbHMvdHdhaW4vdHdhaW4uaCwgZGxscy93c29jazMyL3dzY29udHJvbC5oLAoJICBpbmNsdWRlL3duYXNwaTMyLmgsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvc3BsaXRwYXRoLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZW1vdmVkIEMrKyBzdHlsZSBjb21tZW50cy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgZGVwZW5kcyBvbiBleHRlcm5hbCBlbnYgc3RyaW5ncyB2YWx1ZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJRG8gbm90IGNoYW5nZSBkaXJlY3RvcnkgaWYgcGF0aCBpcyBpbnZhbGlkLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOgoJS251dCBTdC4gT3NtdW5kc2VuIDxiaXJkQGFuZHVpbi5uZXQ+CglEbyBub3QgYWNjZXNzIG1lbW9yeSB0aGF0IGhhcyBqdXN0IGJlZW4gZnJlZWQuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHN1cHBvcnQgZm9yIFVwRG93biBjb250cm9sIG1lc3NhZ2VzLgoJLSBBZGQgZGV0ZWN0aW9uIGZvciBXaW5lJ3MgUHJvcGVydHlTaGVldCBEaWFsb2cgdG8gdHJhbnNsYXRlCgkgIG1lc3NhZ2VzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvb3JpZy5yZWcsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvcmVnZWRpdC5wbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRml4ZWQgYSBmZXcgYnVncywgYWRkZWQgcHJvY2Vzc2luZyBvZiBSRUdfTVVMVElfU1ogZm9ybWF0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBEREJMVF9LRVlTUkNPVkVSUklERS9EREJMVF9LRVlERVNUT1ZFUlJJREUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBUQ01fU0VUQ1VSU0VMIHdoZW4gc2V0dGluZyBwYWdlIGN1cnJlbnQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRW5zdXJlZCBmdWxsIGR1cGxleCBtb2RlIGlzIG9ubHkgdXNlZCB3aXRoIHNhbWUgcGFyYW1ldGVycyBpbiBpbi9vdXQKCXN0cmVhbXMuCglTb21lIG1vcmUgd29yayB0b3dhcmRzIG11bHRpcGxlIGF1ZGlvIGNhcmRzIHN1cHBvcnQuCgoyMDAyLTA2LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3RleHQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jLAoJICBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJUmVwbGFjZWQgTFBUT0RQL0RQVE9MUCBtYWNyb3MgYnkgY2FsbHMgdG8gTFB0b0RQL0RQdG9MUCAod2l0aCB0aGUgaGVscAoJb2YgSHV3IERhdmllcykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2QzZDguc3BlYywKCSAgZGxscy9kM2Q4L2QzZDhfbWFpbi5jOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglDcmVhdGVkIGQzZDggc3R1YiBkbGwuCgoJKiBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGaXhlZCBlbmRpYW5uZXNzICNpZmRlZnMgKHNwb3R0ZWQgYnkgSmFzb24gRWRtZWFkZXMpLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmbGFncyBoYW5kbGluZyBpbiBzbmRQbGF5U291bmQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRml4ZWQgY3Jhc2ggaW4gb3BlbiBmaWxlIGRpYWxvZyBvbiBub24td2luZG93cyA5OCBlbXVsYXRpb24gd2hlbgoJbHBzekluaXRpYWxEaXIgaXMgbnVsbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSB3ZSBmcmVlIHRoZSBjYWNoZWQgSEZPTlQgYWZ0ZXIgbG9hZGluZyBpbiBhIGZyZXNoIGZvbnQuIEVuYWJsZXMKCWZvbnRzIGluIFZCIHByb2dyYW1zIHRvIGFwcGVhciBjb3JyZWN0bHkuCgoJKiBtZW1vcnkvY29kZXBhZ2UuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBuYXN0eSBidWcgZm9yIDIrIGJ5dGUgbXVsdGlieXRlIHN0cmluZ3MgYW5kIEdldFN0cmluZ1R5cGUuCglGbGVzaGVkIG91dCBHZXRTdHJpbmdUeXBlIENUWVBFMyBmcm9tIHRoZSB1bmljb2RlIHRhYmxlcy4KCUNQX1NZTUJPTCBpcyBub3QgYSB2YWxpZCBjb2RlcGFnZSB3aGlsZSBDUF9VVEY3fDggYXJlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHBhdGggd2lsZGNhcmRzIG9mIHRoZSBmb3JtICIqZGxsbmFtZSIgaW4gbG9hZCBvcmRlcgoJc3BlY2lmaWNhdGlvbnMuCglPbmx5IHVzZSB3aWxkY2FyZCBlbnRyeSBmb3IgZGxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gZXhwbGljaXQgcGF0aC4KCVJlbW92ZWQgdGhlIG9sZCBEbGxPdmVycmlkZXMgc3ludGF4IHN1cHBvcnQuCglNaXNjIGNsZWFudXBzIGFuZCBvcHRpbWl6YXRpb25zLgoKMjAwMi0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9icnVzaC5jLAoJICBkbGxzL3dpbmVwcy9idWlsdGluLmMsIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsCgkgIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLAoJICBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy90eXBlMS5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFR5cGUgMSBhbmQgVHlwZSA0MiBmb250IGRvd25sb2FkaW5nLgoJTWlzYyBidWcgZml4ZXMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgZG1TY2FsZS4KCgkqIGRsbHMvd2luZXBzL2NsaXBwaW5nLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+Cglwc2RydiBkb2Vzbid0IGNhcmUgYWJvdXQgaEdDQ2xpcFJnbiwganVzdCB1c2UgR2V0Q2xpcFJnbiBpbnN0ZWFkLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJR2V0IHJpZCBvZiBhIGZldyB0aG91c2FuZCB1c2VsZXNzIFRSQUNFIGxpbmVzLgoKCSogZGxscy93aW5lcHMvdHlwZTFhZm0uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFmbSB3ZWlnaHQgIk5PUk1BTCIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0ZW1wIGZpeCBmb3Igd29ybGQgdHJhbnNmb3JtIGJ1ZyBpbiBTZXRXaW5kb3dPcmdFeCBoYW5kbGVyLgoJQWRkZWQgaGFuZGxlcnMgZm9yIEVNUl9TRVRURVhUSlVTVElGSUNBVElPTiBhbmQgRU1SX1NFVExBWU9VVC4KCgkqIGRsbHMvZ2RpL21mZHJ2L3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IG1hcCBzeW1ib2wgY2hhcnNldCB0aHJvdWdoIFdDVG9NQi4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNYWRlIGluaXRpYWxpemF0aW9uIG1vcmUgdmVyYm9zZSBpbiBjYXNlIG9mIGVycm9ycy4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicmFyeS9jb25maWcuYywgY29uZmlndXJlOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkZWQgY2hlY2sgZm9yIHB3ZC5oLgoKCSogZGxscy93aW5lZG9zL2lvcG9ydHMuYywgZGxscy93aW5lZG9zL3ZnYS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVkaXJlY3QgYWxsIHJlYWRzIGFuZCB3cml0ZXMgdG8gVkdBIGNvbnRyb2xsZXIgdG8gVkdBIGVtdWxhdGlvbi4KCUNhdGNoIGFuZCByZXBvcnQgMTYvMzItYml0IHJlYWRzL3dyaXRlcyB0byBWR0EgY29udHJvbGxlci4KCVVzZSBjb3JyZWN0IGZsYWdzIHdoZW4gY3JlYXRpbmcgZnVsbCBzY3JlZW4gRGlyZWN0RHJhdyB3aW5kb3cgZm9yCglWR0EuCgoJKiBkbGxzL3dpbmVkb3MvaW50NjcuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzYXZlL3Jlc3RvcmUgbWFwcGluZyBjb250ZXh0IHJvdXRpbmVzLgoJQWRkIG1hcCBtdWx0aXBsZSBwYWdlcyByb3V0aW5lLgoJQWRkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgaGFyZHdhcmUgaW5mb3JtYXRpb24gcXVlcnkgcm91dGluZS4KCVJlcGxhY2UgaW5jb3JyZWN0IHVzZSBvZiBNYXBTTCB3aXRoIFBUUl9SRUFMX1RPX0xJTi4KCjIwMDItMDYtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglVbmxvY2sgdGhlIG1hc3RlciBzb2NrZXQgaWYgdGhlIGJvb3QgdGhyZWFkIHRlcm1pbmF0ZXMgZWFybHkuCglBdm9pZCBjcmFzaCBpZiB0aHJlYWQgZGllZCBkdXJpbmcgdGltZW91dCB3YWtldXAuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL2ZvbnQuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgQWRkRm9udFJlc291cmNlKiwgYWRkIHN0dWJzIGZvciBSZW1vdmVGb250UmVzb3VyY2UqLgoJLSBBZGQgc3VwcG9ydCBmb3IgR0dPX0JFWklFUiBhbmQgYSBmZXcgYnVnIGZpeGVzIGZvciBHR09fTkFUSVZFLgoJLSBNdWNoIGJldHRlciBzdXBwb3J0IGZvciBub24gYW5zaSBjaGFyc2V0cyBpbiBmb250IG1hdGNoaW5nLgoJLSBQcm9wZXIgaW1wbGVtZW50YXRpb24gb2YgR2V0VGV4dEZhY2UgZm9yIGdkaSBmb250LgoJLSBMb2FkIGZvbnRzIHRoYXQgYXJlIGxpc3RlZCBpbiB0aGUgcmVnaXN0cnkgYnV0IGFyZW4ndCBpbgoJICAlV0lORE9XU0RJUiVcZm9udHMuCgktIFJldmVydCBUcmFuc2xhdGVDaGFyc2V0SW5mbyB0byB1c2UgY29kZXBhZ2UgMTI1MiB3aXRoIEFOU0lfQ0hBUlNFVC4KCS0gQWRkIHN1cHBvcnQgZm9yIFZJRVROQU1FU0VfQ0hBUlNFVCBhbmQgU1lNQk9MX0NIQVJTRVQuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEJ1bGdhcmlhbiBrZXlib2FyZHMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdG9yZSB0aGUgY2FjaGUgZW50cnkgaW5kaWNlcyBhbmQgbm90IHRoZSBwdHJzLgoJUHJvdGVjdCBjYWNoZSB3aXRoIGEgY3JpdGljYWwgc2VjdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGluY2x1ZGUvd2luZS90ZXN0LmgsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJQWRkZWQgcHJpbnRmIGZvcm1hdCBjaGVja2luZyB0byB0aGUgb2soKSBhbmQgdHJhY2UoKSBtYWNyb3MsIGFuZCBmaXhlZAoJdGhlIHJlc3VsdGluZyB3YXJuaW5ncy4KCjIwMDItMDYtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsCgkgIGRsbHMvd2luaW5ldC92ZXJzaW9uLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29ya2luZyBvZiBodHRwIGFuZCBhc3luY3Jvbm91cyBjYWxscyB0byBnZXQgSUU2IHRvIGluc3RhbGwuCglBZGRlZCBhIHZlcnNpb24gcmVzb3VyY2UuCglBZGRlZCB1bml0IHRlc3QgZm9yIGh0dHAuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBjb250cm9scy9idXR0b24uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHNvbWUgdmFyaW91cyBjb21wYXJpc29ucyB3cnQgc2lnbmVkbmVzcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJRml4ZWQgQ0xTSURGcm9tU3RyaW5nIGVuZGlhbm5lc3MgYXNzdW1wdGlvbnMgKHJlcG9ydGVkIGJ5IEdyZWdnIE1hdHRpbnNvbikuCgoJKiBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL2R1bW15LmMsCgkgIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuYywgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjOgoJZ2V0bWFpbmFyZ3M6IG5ld19tb2RlIGFyZ3VtZW50IGlzIG5vdCBhIHBvaW50ZXIgaW4gbXN2Y3J0MjAgKHNwb3R0ZWQKCWJ5IEJpbGwgTWVkbGFuZCkuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIFNsb3ZlbmlhbiBrZXlib2FyZC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50ZWQgU2l6ZU9mVmFyaWFudERhdGEgY2FzZXMgZm9yIFZUX0RJU1BBVENILCBWVF9VTktOT1dOLCBWVF9DWS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvb3JpZy5yZWc6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVRlc3QgdGhlIGFiaWxpdHkgdG8gaGFuZGxlIGhleCB2YWx1ZXMgaW4gZXhjZXNzIG9mIDEwMjQgYnl0ZXMgYW5kCglpbnB1dCBsaW5lcyBpbiBleGNlc3Mgb2YgNDA5NiBieXRlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CgktIFJld29yayB0aGUgbGluZSByZWFkaW5nLiAgVGhpcyB2ZXJzaW9uIHVzZXMgYSBzaW5nbGUgZXhwYW5kaW5nCgkgIGJ1ZmZlciByYXRoZXIgdGhhbiBhIG1haW4gYnVmZmVyIGFuZCBhICJuZXh0IGxpbmUiIGJ1ZmZlci4gIFRoaXMKCSAgdmVyc2lvbiBkb2VzIG5vdCBvdmVyZmxvdyB0aGUgYWxsb2NhdGVkIG1lbW9yeSAoaG9wZWZ1bGx5KS4gIFRoZQoJICBwcmV2aW91cyB2ZXJzaW9uIGRpZCB3aGVuIGNvbmNhdGVuYXRpbmcgdGhlIGNvbnRpbnVhdGlvbiBsaW5lcy4KCS0gQWRkIHByb3RlY3Rpb24gdG8gdGhlIEhleENTVlRvSGV4IHRvIHByZXZlbnQgb3ZlcmZsb3cuCgktIEFsbG93IGZvciBjb252ZXJzaW9uIG9mIGxhcmdlciBoZXggdmFsdWVzLiAgVGVzdGVkIG9uIGEgcmVhbCAyLjZLQgoJICB2YWx1ZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvcmVnZWRpdC5wbDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCB0aGUgY29tcGFyaXNvbiBvZiB0d28gZmlsZXMuICBKdXN0IGJlY2F1c2UgdGhleSBhcmUgdGhlIHNhbWUKCXNpemUgZG9lc24ndCBtZWFuIHRoZXkgaGF2ZSB0aGUgc2FtZSBjb250ZW50LgoKCSogZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUltcGxlbWVudGVkIERiZ0JyZWFrUG9pbnQgYW5kIERiZ1VzZXJCcmVha1BvaW50IGZvciBTcGFyYy4gIERlYnVnZ2VyCgltdXN0IGFscmVhZHkgYmUgYXR0YWNoZWQgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24gdG8gd29yay4KCgkqIGluY2x1ZGUvcnBjcHJveHkuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCU1vdmVkIGFsbCAjaW5jbHVkZXMgdG8gdGhlIHRvcCBzbyB0aGF0IF9fc3RkY2FsbCBpcyBkZWZpbmVkIGZvciB0aGUKCWRlY2xhcmF0aW9uIG9mIElJRExvb2t1cFJ0bi4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglNb3ZlZCBhIGZldyB3aW4zMiBmdW5jdGlvbnMgdG8gYSBiZXR0ZXIgbG9jYXRpb24gZm9yIGJ1aWxkaW5nIGEgV2luMzIKCW9ubHkgZGxsLgoKCSogZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3MuZHJ2LnNwZWMsIGRsbHMvd2lubmxzL3dpbm5scy5zcGVjLAoJICBkbGxzL3dpbm5scy93aW5ubHMzMi5zcGVjLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLAoJICBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93b3czMi93b3czMi5zcGVjLAoJICBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS93aW5lLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgZGxscy91c2VyL2RkZW1sLnNwZWMsCgkgIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjLAoJICBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy92ZXJzaW9uL3Zlci5zcGVjLAoJICBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLAoJICBkbGxzL3dpbjMycy93MzJzeXMuc3BlYywgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkuc3BlYywgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3dpbmVwcy93aW5lcHMxNi5zcGVjLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsCgkgIGRsbHMvd2lubW0vc291bmQuc3BlYywgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9wc2FwaS9wc2FwaS5zcGVjLAoJICBkbGxzL3FjYXAvcWNhcC5zcGVjLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywKCSAgZGxscy9yYXNhcGkzMi9yYXNhcGkxNi5zcGVjLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NubXBhcGkvc25tcGFwaS5zcGVjLCBkbGxzL3N0aS9zdGkuc3BlYywKCSAgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R3YWluL3R3YWluXzMyLnNwZWMsIGRsbHMvdXJsL3VybC5zcGVjLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywKCSAgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBkbGxzL29sZTMyL29sZTIuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUyY29udi5zcGVjLCBkbGxzL29sZTMyL29sZTJubHMuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUycHJveC5zcGVjLCBkbGxzL29sZTMyL29sZTJ0aGsuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2Uuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkuc3BlYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vbGVzdnIvb2xlc3ZyLnNwZWMsCgkgIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywKCSAgZGxscy9pbW0zMi9pbW0uc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9jb21tLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsIGRsbHMva2VybmVsL3N0cmVzcy5zcGVjLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYywKCSAgZGxscy9rZXJuZWwvd2luODdlbS5zcGVjLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5zcGVjLAoJICBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgZGxscy9semV4cGFuZC9sejMyLnNwZWMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmQuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsCgkgIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL21zYWNtLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLAoJICBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvd2luZW1wMy5hY20uc3BlYywgZGxscy9tc2Rtby9tc2Rtby5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuc3BlYywKCSAgZGxscy9jb21jYXQvY29tY2F0LnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywKCSAgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21tZGxnLnNwZWMsCgkgIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsCgkgIGRsbHMvZGlucHV0OC9kaW5wdXQ4LnNwZWMsIGRsbHMvZHBsYXkvZHBsYXkuc3BlYywKCSAgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2dkaS9kaXNwZGliLnNwZWMsIGRsbHMvZ2RpL2dkaS5leGUuc3BlYywKCSAgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvd2luZy5zcGVjLCBkbGxzL2dsdTMyL2dsdTMyLnNwZWMsCgkgIGRsbHMvaWNtcC9pY21wLnNwZWMsIE1ha2UucnVsZXMuaW46CglNYWRlIHNvbWUgbW9yZSBzcGVjIGZpbGUgZW50cmllcyBvcHRpb25hbCBvciB1bm5lY2Vzc2FyeS4KCUZpeGVkIGEgZmV3IERMTE5hbWUvRExMRmlsZU5hbWUgbWlzbWF0Y2hlcy4KCgkqIHNlcnZlci9zb2NrLmM6CglBdHRlbXB0IGF0IGZpeGluZyBQT0xMSFVQIGhhbmRsaW5nIGZvciBMaW51eCAyLjIueC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJTW92ZWQgc3VjY2VlZGluZyB0ZXN0IG91dCBvZiB0b2RvIGJsb2NrLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglGaXhlZCByZWdyZXNzaW9uIGNhdXNlZCBieSBwcmV2aW91cyBjaGFuZ2UuCgoyMDAyLTA2LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBvcmRpbmFscyB0byBtYXRjaCB0aGUgV2luZG93cyB2YWx1ZXMuCglBZGRlZCBhIGNvdXBsZSBvZiBzdHVicy4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9jb25maWcuYywKCSAgbWlzYy9yZWdpc3RyeS5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglDcmVhdGUgdGhlIHNlcnZlciBkaXJlY3RvcnkgYW5kIHNvY2tldCBmaWxlIGluIC90bXAuCglVc2UgZmNudGwgZmlsZSBsb2NraW5nIHRvIGVuc3VyZSBleGNsdXNpb24gb24gdGhlIHNlcnZlciBzb2NrZXQgYW5kIHRvCgliZXR0ZXIgcmVjb3ZlciBmcm9tIGNyYXNoZXMuCglGbHVzaCB0aGUgcmVnaXN0cnkgYmVmb3JlIGNsb3NpbmcgdGhlIHNvY2tldCB0byBhdm9pZCB0aW1lb3V0cyBvbiB0aGUKCWNsaWVudCBzaWRlLgoJTW92ZWQgZ2V0X2NvbmZpZ19kaXIgZnVuY3Rpb25hbGl0eSB0byBsaWJ3aW5lLgoKCSogc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3NlbGVjdC5jOgoJU3RvcmUgZGlydHkgZmxhZyBpbiBlYWNoIHJlZ2lzdHJ5IGtleSBhbmQgdXNlIGl0IHRvIHNhdmUgb25seSBtb2RpZmllZAoJYnJhbmNoZXMuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYzoKCU1ha2Ugc3VyZSB0aGF0IERSSVZFX0ZpbmREcml2ZVJvb3QgYWx3YXlzIHJldHVybnMgYW4gYWJzb2x1dGUgcGF0aC4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQWRkZWQgZGVwZW5kZW5jeSBvbiBwcm9ncmFtIHN5bWxpbmsgZm9yIHVuaXQgdGVzdHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9vcmlnLnJlZywKCSAgcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9yZWdlZGl0LnBsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCByZWdlZGl0IHVuaXQgdGVzdCwgYSBjb3VwbGUgbWlub3IgY2hhbmdlcyB0byByZWdlZGl0LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywKCSAgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmgsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGluY2x1ZGUvd3R5cGVzLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBWYXJBbmQsIFZhckNtcCAoU3RyaW5ncyBvbmx5KSwgVmFyTm90IGltcGxlbWVudGVkLgoJLSBWYXJQYXJzZU51bUZyb21TdHIvVmFyTnVtRnJvbVBhcnNlTnVtIGhhbmRsZSBuZWdhdGl2ZSBjdXJyZW5jeQoJICBudW1iZXJzLgoJLSBNb3JlIFZhckNtcCBzdXBwb3J0IChEZWNpbWFscyBhbmQgRGF0ZXMpLgoJLSBEYXRlIHN1cHBvcnQgZm9yIFZCIHRpbWUgb25seSAoMC4wLT4xLjApLCBjb3JyZWN0ZWQgc29tZSBkYXRlCgkgIHJvdW5kaW5nIGFuZCBjYWxjdWxhdGlvbiBlcnJvcnMgYXJvdW5kIHZhcmlhbnQgZGF0ZXMgYW5kIHRoZSBzeXN0ZW0KCSAgdGltZS4KCS0gVmFyaWFudCBkYXRlIHN1cHBvcnQgbm93IHJvdW5kIHRyaXBzISAoRGF0ZS0+VmFyaWFudC0+RGF0ZSkgZHVlIHRvCgkgIG1pc3VzZSBvZiB0bV9tb24gKDAuLjExIG5vdCAxLi4xMikuCgktIEJldHRlciBwcmUtMTg5OSBzdXBwb3J0IGZvciBkYXRlcyBpbiB0aGUgU1lTVEVNVElNRSBmb3JtYXQuCgktIFZhckJzdHJGcm9tQ3ksIFZhckN5RnJvbVN0ciBpbXBsZW1lbnRlZC4KCS0gVmFyRm9ybWF0IHBhcnRpYWwgaW1wbGVtZW50YXRpb24gKGN1cnJlbmN5IGFuZCBkYXRlIHN1cHBvcnQpLgoJLSBWYXJGb3JtYXRGcm9tVG9rZW5zLCBWYXJUb2tlbml6ZUZvcm1hdFN0cmluZyBwYXJ0aWFsIGltcGxlbWVudGF0aW9uCgkgIGFzIHBlciB3MmsgKGRhdGVzIG9ubHkgc28gZmFyKS4KCS0gQmV0dGVyIGRlYnVnZ2luZyB3aGVuIGR1bXBpbmcgdmFyaWFudHMsIGFuZCBzb21lIGFkZGl0aW9uYWwgdHJhY2UKCSBwb2ludHMgdG8gaGVscCBkZWJ1Z2dpbmcuCgktIEZpeCB0byBWYXJCc3RyQ21wIHRvIGhhbmRsZSBudWxsIGFuZCBlbXB0eSBzdHJpbmcgdGhlIHNhbWUgKGFzIHBlcgoJICB3MmssIGRpZmZlcmVudCB0byBtc2RuKS4KCS0gRml4IHJldHVybiBmcm9tIFZhckRhdGVGcm9tVWRhdGUuCgktIENvcnJlY3QgZGVmaW5pdGlvbiBvZiBDWSBzdHJ1Y3R1cmUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUF2b2lkIGxvYWRpbmcgcHJvZ3JhbXMgaW50byB0aGUgRE9TIG1lbW9yeSBhcmVhLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL3JlZ2FwaS5wbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUmVtb3ZlZCB0cmFjZXMgb2YgdGhlIHJlZ2VkaXQgdW5pdCB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgcm91dGluZXMgdG8gZHVtcCBvdXQgdGFiIGl0ZW1zIGludGVybmFsbHkgYW5kIGV4dGVybmFsbHkKCS0gQWRqdXN0IFRBQl9TZXRJdGVtQm91bmRzIHRvIHNwbGl0IHZlcnRpY2FsIHRhYnMgbW9yZSBsaWtlIHRoZSBuYXRpdmUuCgktIERvY3VtZW50IG1ham9yIGRpZmZlcmVuY2UgaW4gbGF5aW5nIG91dCB0aGUgdmVydGljYWwgdGFicy4KCS0gRml4IGRyYXdpbmcgb2YgaWNvbnMuIFdyb25nIGl0ZW0gcGFkZGluZyB1c2VkIGluIHZlcnRpY2FsIGNhc2UuCgktIEZpeGVkIHNpemUgb2YgaG9yaXpvbnRhbCBwYWRkaW5nLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSVR5cGVsaWI6Okludm9rZTogSGFuZGxlIGRpZmZlcmVudCBsZW5ndGggYXJndW1lbnRzIGJldHRlciwgd2UgYWxzbwoJcmV0dXJuIDEgVkFSSUFOVCBvbmx5LgoKCSogdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGFiaWxpdHkgZml4LgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJR2l2ZSB0aGUgaW1wb3J0IGxpYnMgYSBwcm9wZXIgbmFtZS4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaDoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJJ2NsYXNzJyBpcyBhIHJlc2VydmVkIHdvcmQgKEMrKykuCgoyMDAyLTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuLAoJICBsaWJyYXJ5L01ha2VmaWxlLmluLCBvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvd2luZWxhdW5jaGVyLmluLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVsYXVuY2hlci5pbiwgdG9vbHMvd2luZW1ha2VyLm1hbiwKCSAgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRzeDExL01ha2VmaWxlLmluLAoJICB1bmljb2RlL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjoKCUZpeGVkIG1ha2UgaW5zdGFsbCB0YXJnZXQgdG8gd29yayBldmVuIHdoZW4gbm90aGluZyBoYXMgYmVlbiBjb21waWxlZAoJeWV0LgoJQWRkZWQgaW5zdGFsbC1saWIgYW5kIGluc3RhbGwtZGV2IHRhcmdldHMgdG8gYWxsb3cgcGFydGlhbAoJaW5zdGFsbGF0aW9uczsgbW92ZWQgd2luZW1ha2VyLm1hbiBhbmQgd2luZWxhdW5jaGVyLmluIHRvIGJldHRlciBmaXQKCWluIHRoZSBuZXcgaW5zdGFsbCBjYXRlZ29yaWVzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaWYxNjMyL2J1aWx0aW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJVW5yZWdpc3RlciAxNi1iaXQgZGxscyBvbiBtb2R1bGUgdW5sb2FkLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHJlY3Vyc2l2ZSBSZWdEZWxldGVLZXkgaW4gV2luOTUgZW11bGF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZXRDdXJyZW50SHdQcm9maWxlQS4KCgkqIG9iamVjdHMvdGV4dC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUV4dFRleHRPdXRXOiBpZiBHZXRGb250TGFuZ3VhZ2VJbmZvIHNheXMgdGhhdCB0aGUgZm9udCBtYXkgcmVxdWlyZQoJcmVvcmRlcmluZywgY2FsbCBHZXRDaGFyYWN0ZXJQbGFjZW1lbnRXIGFuZCBwcmludCB0aGUgcmVzdWx0LgoKCSogb2JqZWN0cy9mb250LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBJbXBsZW1lbnRlZCBhIHNrZWxldG9uIGZvciBHZXRGb250TGFuZ3VhZ2VJbmZvLiBVc2luZyBjb25zdCBtYXNrcyB0bwoJICBtYXRjaCBhZ2FpbnN0IHRoZSByZXN1bHQgb2YgR2V0VGV4dENoYXJzZXRJbmZvLiBOb3QgYWxsIGF0dHJpYnV0ZXMgYXJlCgkgIGltcGxlbWVudGVkIHlldC4KCS0gRW5oYW5jZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdldENoYXJhY3RlclBsYWNlbWVudFcgdG8gc3VwcG9ydAoJICBiYXNpYyByZW9yZGVyaW5nLiBOb3QgaW1wbGVtZW50aW5nIHRoZSBmdWxsIEJpRGkgYWxnb3JpdGhtIHlldC4KCgkqIGRsbHMva2VybmVsL25scy9oZWIubmxzOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUNoYW5nZWQgdGhlIGNvdW50cnkncyBuYW1lIHRvICJJTCIgdG8gY29uZm9ybSB0byBjb21tb25seSBoZWxkCglwcmFjdGljZXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRHVtcCBvdXQgdGhlIFRDSVRFTSBzdHJ1Y3R1cmUgZm9yIGFwcHJvcHJpYXRlIG1lc3NhZ2VzLgoJLSBEdW1wIG91dCB0aGUgcmVjdGFuZ2xlIGZvciB0aGUgVENNX0FESlVTVFJFQ1QgbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJU3VwcG9ydCBpbWFnZXMgb24gdGhlIHRhYnMgb2YgcGFnZXMgdGhhdCBhcmUgYWRkZWQgKG5vdCBqdXN0IHRoZQoJZmlyc3QpLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJUmVtb3ZlZCBpbnN0YWxsX2xpYmRpciB0YXJnZXRzIGFuZCBjZW50cmFsaXplZCB0aGUgc3ltbGlua3MgY3JlYXRpb24KCWluIHRoZSBtYWluIGRsbCBtYWtlZmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywKCSAgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgZGxscy9kaW5wdXQ4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZGlucHV0OC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQ4L2RpbnB1dDguc3BlYywKCSAgZGxscy9kaW5wdXQ4L2RpbnB1dDhfbWFpbi5jLCBpbmNsdWRlL2QzZHR5cGVzLmgsCgkgIGluY2x1ZGUvZGlucHV0Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCS0gc3VwcG9ydCBEaXJlY3RJbnB1dCA4IGludGVyZmFjZXMuCgktIGltcGxlbWVudGVkIG1vdXNlIHdoZWVsIHN1cHBvcnQuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBhcmdzaXplIGZvciBWVF9EQVRFLgoKCSogZGxscy9udGRsbC9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbGx5IGltcGxlbWVudCBOdE9wZW5GaWxlIGFuZCBOdFJlYWRGaWxlLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglVcGRhdGUgdGhlIGN1cnNvciBmb3IgZWFjaCB3aW5kb3cgb24gcmVjZWl2aW5nIGFuIFgxMSBldmVudCwgZG9uJ3QKCXdhaXQgZm9yIHRoZSBTZXRDdXJzb3IgY2FsbC4KCUFkZGVkIEVudGVyTm90aWZ5IGhhbmRsZXIgdG8gc2V0IHRoZSBjdXJzb3Igb24gd2luZG93IG1hcC91bm1hcC4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9jdXJzb3JpY29uLmM6CglTdG9yZSB0aGUgY3VycmVudCBjdXJzb3IgaW4gdGhlIHRocmVhZCBxdWV1ZSBpbnN0ZWFkIG9mIGdsb2JhbGx5LgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljIGZpeC4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9lbmhtZmRydi9iaXRibHQuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUGF0Qmx0IHN1cHBvcnQgaW4gZW5oYW5jZWQgbWV0YWZpbGVzLgoKMjAwMi0wNi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIG5hbWVzIG9mIHNvbWUgc3RvY2sgZm9udHMuCgoJKiBkbGxzL3N0aS9zdGkuc3BlYywgZGxscy9zdGkvc3RpX21haW4uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdHViIGZvciBTdGlDcmVhdGVJbnN0YW5jZS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvdXNlci9sc3RyLmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBncmFwaGljcy9wYXRoLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgbWVtb3J5IGxlYWtzLgoKCSogZGxscy9kZHJhdy92ZXJzaW9uLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHZlcnNpb24gaW5mby4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiBzdHJpbmdzIHRoYXQgZG8gbm90IGZpbmlzaCB3aXRoICJ8fCIuCglGaXggdGhlIGluZGVudGF0aW9uIG9mIHRoZSB3aGlsZSBsb29wIGluIFRPT0xCQVJfQWRkU3RyaW5nVy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgYSBmZXcgc3R1YnMuCgoJKiBkbGxzL2tlcm5lbC9ubHMvYmdyLm5sczoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBCdWxnYXJpYW4gTkxTIGRlZmluaXRpb25zICh3aXRoIHRoZSBoZWxwIG9mIEFudG9uIFppbm92aWV2KS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc2V0IHNpZ25hbHMgdG8gU0lHX0RGTCBiZWZvcmUgc3RhcnRpbmcgYSBjaGlsZCBwcm9jZXNzLgoKCSogd2luZG93cy9wYWludGluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGNyYXNoZXMgaWYgd2luZG93IGJlbG9uZ3MgdG8gYW5vdGhlciBwcm9jZXNzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCU1ha2UgYnVpbHRpbnMgcHJldGVuZCB0byBiZSBsb2FkZWQgZnJvbSB0aGUgc3lzdGVtIGRpcmVjdG9yeS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRG9uJ3QgZ28gdGhyb3VnaCB0aGUgZXhwb3J0IHRhYmxlIGlmIHdlIGFyZSBub3QgdHJhY2luZyBhbnl0aGluZy4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmM6CglGb3IgbGluZXMgdGhhdCBjb250YWluIGEgc2luZ2xlIGZpZWxkLCB0aGUgZmllbGQgaXMgYWxzbyB0aGUgbGluZSBrZXkKCSh0aGFua3MgdG8gQXJpYyBTdGV3YXJ0KS4KCgkqIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gcHJvY2Vzc2luZyB0aGUgcmVnIHNlY3Rpb24gd2UgbmVlZCB0byBkZWxldGUgYmVmb3JlIGFkZGluZy4KCUZpcnN0IHBhc3MgaW1wbGVtZW50YXRpb24gb2YgVXBkYXRlSW5pLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIGFuIGVtcHR5IGltcGxlbWVudGF0aW9uIGZvciBVdWlkRnJvbVN0cmluZ0EvVy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJUmVzdG9yZWQgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbCB0aGF0IGdvdCBsb3N0IHNvbWV3aGVyZS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCURvbid0IHRyeSB0byBvcGVuIENEUk9NIGRldmljZSBpZiBub25lIHdhcyBzcGVjaWZpZWQuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgQ0FMX0lUV09ESUdJVFlFQVJNQVguCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCXN0cnVjdCBfc3RhdCBsYXlvdXQgaXMgZGlmZmVyZW50IGJldHdlZW4gY3J0ZGxsIGFuZCBtc3ZjcnQuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCVN0b3JlIHByaW50IGRsZyBzdHJ1Y3R1cmUgaW4gYSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIERXTF9VU0VSLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBmb3IgY2FwR2V0RHJpdmVyRGVzY3JpcHRpb24uCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvdHlwZXMuYzoKCUFkZGVkIC9nIGRlYnVnIGZvcm1hdCB0byBkdW1wIEdVSURzLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCURvbid0IGFzayBmb3Igc291cmNlIGZpbGUgaW4gYXV0byBtb2RlLgoKCSogb2xlL29sZTJubHMuYzoKCVBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglGaXggdXNlIG9mIExPQ0FMRV9OT1VTRVJPVkVSUklERSBmbGFnIGluIEdldE51bWJlckZvcm1hdEEgYW5kCglHZXRDdXJyZW5jeUZvcm1hdEEuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCU1ha2Ugc3VyZSBlZGl0IGFuZCBsaXN0Ym94IGNvbnRyb2xzIGFyZSBvZiBzYW1lIEFTQ0lJL1VuaWNvZGUgc3R5bGUgYXMKCXRoZSBjb21ibyBib3guIEZpeGVkIGEgZmV3IE1CQ1MgaXNzdWVzIHdpdGggV01fR0VUVEVYVExFTkdUSCBoYW5kbGluZy4KCgkqIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywgaW5jbHVkZS9kc291bmQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU3VwcG9ydCBEaXJlY3RTb3VuZCA4IGludGVyZmFjZXMuIFNwbGl0IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMgaW50bwoJc2VwYXJhdGUgZmlsZXMuIFNwbGl0IHByaW1hcnkgYnVmZmVyIGFuZCBzZWNvbmRhcnkgYnVmZmVyIGludGVyZmFjZXMKCWludG8gc2VwYXJhdGUgaW1wbGVtZW50YXRpb25zLiBNYWRlIHRoZSBwcmltYXJ5IGJ1ZmZlciBzdGF0ZSBwYXJ0IG9mCgl0aGUgZHNvdW5kIG9iamVjdCwgc28gcHJpbWFyeSBidWZmZXIgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZCBhbmQKCXJlZmNvdW50ZWQgaW5kZXBlbmRlbnRseS4gTWFkZSB0aGUgaW50ZXJmYWNlcyBmb2xsb3cgQ09NIGFnZ3JlZ2F0aW9uCglydWxlcyBtb3JlIGNsb3NlbHkuIENvbnZlcnRlZCB0aGUgZHNvdW5kIGNyaXRpY2FsIHNlY3Rpb24gdG8gYSBSL1cKCWxvY2sgdG8gaW1wcm92ZSBwb3RlbnRpYWwgcmVtaXhpbmcgY29uY3VycmVuY3kuIEZpeGVkIHZhcmlvdXMgYnVncyBhbmQKCXJlZmNvdW50aW5nIGlzc3Vlcy4KCgkqIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC9jb21jYXQuaCwKCSAgZGxscy9jb21jYXQvY29tY2F0LnNwZWMsIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmMsCgkgIGRsbHMvY29tY2F0L3JlZ3N2ci5jLCBkbGxzL2NvbWNhdC9yZWdzdnIuaDoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUNvbXBsZXRlZCBpbXBsZW1lbnRhdGlvbiBvZiBjb21jYXQuZGxsLCBpbmNsLiBEbGxbVW5dUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbjogRG9uJ3QgdXNlIG1zdmNydC4KCgkqIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZXBsYWNlZCBzdHJpY21wL3N0cm5pY21wIHdpdGggc3RyY2FzZWNtcC9zdHJuY2FzZWNtcC4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIHN0YXJ0ZWQgcHJvY2VzcyBpbiB0aGUgZGVza3RvcCB0aXRsZS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglXb24gS3l1IFBhcmsgPHdrcGFya0BjaGVtLnNra3UuYWMua3I+CglGaXhlZCBkZWZhdWx0R3VpRm9udCBmb3IgS29yZWFuLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgcGFnZSByZWN0YW5nbGUgY2FsY3VsYXRpb24uCgktIEltcHJvdmUgdHJhY2VzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJLSBjaGVjayBmb3Igc29ja2FkZHIgYmVpbmcgTlVMTC4KCS0gaGFja2lzaCBpbXBsZW1lbnRhdGlvbiBvZiBXU0FEdXBsaWNhdGVTb2NrZXQuCgoyMDAyLTA2LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCURhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJTWFwVmlydHVhbEtleSBhY3R1YWxseSByZXR1cm5zIHVwcGVyY2FzZSBrZXlzIGluIFdpbmRvd3MuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCURhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CgktIEZpeCBUcmFuc2xhdGVNZXNzYWdlIHJldHVybiBjb2RlLgoJLSBNYWtlIEdldEtleVN0YXRlIHdvcmsgcHJvcGVybHkgZm9yIGFwcHMgdGhhdCB0ZXN0IDB4ODAgaW5zdGVhZCBvZgoJICAweDgwMDAuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgbW9yZSBtYWdpYyB0byBmaW5kIHRoZSBzdGFydCBvZiB0aGUgbmFtZXRhYmxlLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9yZWdpb24uYzoKCU1vdmVkIERDIG9yaWdpbiBpbnRvIGRldmljZS1zcGVjaWZpYyBzdHJ1Y3R1cmUuCglGaXhlZCBoYW5kbGluZyBvZiBEQyBvcmlnaW4gaW4gWDExIGRyaXZlci4KCgkqIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYzoKCURhdmlkIEQuIEhhZ29vZCA8d293YmFnZ2VyQHNrdGMubmV0PgoJQURQQ00gbnliYmxlIHByb2Nlc3Npbmcgb3JkZXIgd2FzIGluY29ycmVjdC4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglGYXN0ZXIgcGVyZm9ybWFuY2UgaW4gVEVYVF9FbGxpcHNpZnkgZm9yIGxvbmcgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCVN1cHBvcnQgZm9yIExWTV9TVUJJVEVNSElUVEVTVDsgY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgc3ViaXRlbSBpbmRleAoJaW4gTElTVFZJRVdfR2V0U3ViSXRlbVJlY3QuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VvLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Lby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYzoKCU5peCBOLiBOaXggPG5peEBnby1uaXguY2E+CglBZGRlZCBSdW5GaWxlRGxnIHdpdGggTVJVIGxpc3QuCglBZGRlZCB0ZW1wbGF0ZSB0byBhbGwgLnJjIGZpbGVzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJU29tZSBncmFtbWFyIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfS28ucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0tvLnJjLAoJICBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfS28ucmM6CglXb24ta3l1IFBhcmsgPHdrcGFya0BrbGRwLm9yZz4KCUFkZGVkIEtvcmVhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCS0gU2F2ZSBhbmQgcmVzdG9yZSBjdXJyZW50IGRpcmVjdG9yeSBpbiBHZXRGaWxlRGlhbG9nOTVXIGlmCgkgIE9GTl9OT0NIQU5HRURJUiBmbGFnIHNldC4KCS0gR2V0RmlsZURpYWxvZzk1Vzogb25seSBjb252ZXJ0IG9mbi0+bHBUZW1wbGF0ZU5hbWUgaWYgaXQncyBhIHN0cmluZwoJICByZXNvdXJjZSBpZCAoZml4ZXMgT3Blbk9mZmljZSAxLjAgZmlsZSBvcGVuIGRpYWxvZyBjcmFzaCkuCgktIElnbm9yZSBPRk5fRklMRU1VU1RFWElTVCBmbGFnIGZvciBzYXZlIGZpbGUgZGlhbG9nIChmaXhlcyBzYXZlCgkgIGRpYWxvZyBpbiBFbHN0YXJGb3JtdWxhcikuCgktIFJld3JvdGUgY2FzdHMgdGhhdCBzb21lIGNvbXBpbGVycyBkb24ndCBhY2NlcHQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIERsbE92ZXJyaWRlcyBzbyB3ZSB1c2UgYnVpbHRpbiBycGNydDQsIG9sZTMyLCBvbGVhdXQzMi4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIHRoZSB0d28gc2VyaWFsaXplciBhbmQgdW5zZXJpYWxpemVyIGZ1bmN0aW9ucyBpbnRvIG9uZSwgY2xlYW5lZAoJdGhlbSB1cC4KCVZUX1BUUjogSGFuZGxlIE5VTEwgcG9pbnRlcnMgYnkgc2VuZGluZyBhIGNvb2tpZS4KCUFkZGVkIHN1cHBvcnQgZm9yOiBWVF9DQVJSQVksIFZUX0RJU1BBVENILCBUS0lORF9SRUNPUkQsIFZUX1ZPSUQsCglWVF9VSTEsIFZUX1VJMiwgVlRfRVJST1IsIFZUX1VJNCwgVlRfVUlOVC4KCUFkZGVkIGEgY3VzdG9tIHNlcmlhbGl6ZXIgZm9yIERJU1BQQVJBTVMgc3RydWN0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgZGVidWdvdXRwdXQgZnVuY3Rpb25zIGZvciBUWVBFQVRUUiwgSURMREVTQywgVkFSREVTQy4KCVN1cHBvcnQgbW9yZSBwYXJhbWV0ZXJzIGluIF9pbnZva2UgKG5lZWRlZCBmb3IgSURpc3BhdGNoOjpJbnZva2UgaW4KCXRoZSBtYXJzaGFsbGVyKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglIYW5kbGUgYXNjaWkgJiB1bmljb2RlIGRyYWcgYW5kIGRyb3Agc3RydWN0dXJlcyBpbiBEcmFnUXVlcnlGaWxlQSAmCglEcmFnUXVlcnlGaWxlVy4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglKZXNzZSBBbGxlbiA8dWhfamFAZ214Lm5ldD4KCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiB3Z2xTd2FwTGF5ZXJCdWZmZXJzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUGFydGlhbGx5IGltcGxlbWVudCBMZHJHZXREbGxIYW5kbGUuCgktIEltcGxlbWVudCBMZHJHZXRQcm9jZWR1cmVBZGRyZXNzLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZnI6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGVkIHNvIGl0J3MgaW4gbGluZSB3aXRoIFJFQURNRS4KCjIwMDItMDYtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDIwNjA1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA2LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZnI6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGVkIFJFQURNRS5mciBzbyBpdCdzIGluIGxpbmUgd2l0aCBSRUFETUUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNYXJjZWxvIFdlbHRlciA8cG91YmFja0BzeXNtby5jb20uYnI+CglBZGRlZCBQQ0ZfVE9UQUxUSU1FT1VUUyB0byBjb21tIHByb3BlcnRpZXMuCgoJKiBSRUFETUU6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVVwZGF0ZSBGcmVlQlNELXJlbGF0ZWQgbm90ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCUNoZWNrIGFjY2VzcyByaWdodHMgYmVmb3JlIHJlbmFtaW5nIG9yIGRlbGV0aW5nIGZpbGVzIChiYXNlZCBvbgoJcGF0Y2hlcyBieSBVd2UgQm9ubmVzIGFuZCBEbWl0cnkgVGltb3Noa292KS4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyOgoJSmVhbi1CcnVubyBMdWdpbmL8aGwgPGplYW5fYnJ1bm9fbHVnaW5idWhsQHlhaG9vLmZyPgoJRnJlbmNoIHRyYW5zbGF0aW9uIG9mIHRoZSBSRUFETUUgZmlsZS4KCjIwMDItMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3dzcHJpbnRmLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3dzcHJpbnRmLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRHVwbGljYXRlZCB3c3ByaW50ZiBpbXBsZW1lbnRhdGlvbiBpbiBzaGx3YXBpLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgUkVBRE1FOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudHMuCgoJKiBjb250cm9scy9tZW51LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglPbmx5IGFsbG93IHRhYnMgaW4gcG9wdXAgbWVudXMsIGFuZCBtYWtlIHN1cmUgdG8gbmV2ZXIgZGlzcGxheSB0aGVtLgoKCSogZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIHdpbmVkZWZhdWx0LnJlZzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBtYXJzaGFsbGluZyBvZiBJVW5rbm93bi4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zZzcxMS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVtcDMuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUFkZGVkIC0tZGVidWdtc2cgb3B0aW9uIHRvIHRoZSBkZWJ1Z2dlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvbGljZW5zZS5jLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvc3BsaXRwYXRoLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNZXJnZWQgTWFydGluIEZ1Y2hzJyBmaWxlIG1hbmFnZXIgKHdpdGggdGhlIGhlbHAgb2YgU3RldmVuIEVkd2FyZHMpLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJQ2hlY2sgaWYgcmVsYXkgZGVidWdnaW5nIGlzIHN0aWxsIG9uIGJlZm9yZSBwcmludGluZyBzb21ldGhpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJbml0aWFsRGlyIGhhbmRsaW5nIGFuZCBJbml0aWFsRmlsZSBoYW5kbGluZyBub3cgYWdyZWVzIHdpdGggTVNETgoJZGVzY3JpcHRpb24sIGFuZCB0ZXN0aW5nIG9uIHdpbjIwMDAgYXBwZWFycyB0byBhZ3JlZS4KCWlsZW5hbWUgZmllbGQgbm90IGNsZWFyZWQgd2hlbiBkaXJlY3Rvcnkgc2VsZWN0ZWQvY2xpY2tlZCBvbi4KCU9GTl9OT1ZBTElEQVRFIGZpZWxkIG5vIGxvbmdlciBjYXVzZXMgdHJhcHMsIGFuZCBhcHBlYXJzIHRvIGJlaGF2ZSBhcwoJcGVyIHcyay4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCURvbid0IGZyZWUgdGhlIHN0YWNrIHNlbGVjdG9yLCBpdCdzIGZyZWVkIGluIEV4aXRUaHJlYWQgYW55d2F5ICh0aGFua3MKCXRvIENocmlzdGlhbiBDb3N0YSkuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL3dpbmVtcDMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS93aW5lbXAzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL3dpbmVtcDMvY29tbW9uLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9kY3Q2NF9pMzg2LmMsIGRsbHMvbXNhY20vd2luZW1wMy9kZWNvZGVfaTM4Ni5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvaHVmZm1hbi5oLCBkbGxzL21zYWNtL3dpbmVtcDMvaW50ZXJmYWNlLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9sMnRhYmxlcy5oLCBkbGxzL21zYWNtL3dpbmVtcDMvbGF5ZXIxLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9sYXllcjIuYywgZGxscy9tc2FjbS93aW5lbXAzL2xheWVyMy5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsIGRsbHMvbXNhY20vd2luZW1wMy9tcGcxMjMuaCwKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZ2xpYi5oLCBkbGxzL21zYWNtL3dpbmVtcDMvdGFiaW5pdC5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvd2luZW1wMy5hY20uc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGEgTVAzIGRlY29kZXIgKGJhc2VkIG9uIG1wZ2xpYikuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpZjE2MzIvcmVsYXkuYywKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9kZWJ1Zy5jLCBtaXNjL29wdGlvbnMuYywKCSAgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHdpbmRvd3Mvc3B5LmM6CglNb3ZlZCBzcGVjaWZpY2F0aW9uIG9mIHJlbGF5IGFuZCBzbm9vcCBpbmNsdWRlL2V4Y2x1ZGUgZnVuY3Rpb25zIHRvCgl0aGUgY29uZmlnIGZpbGUuCglDaGFuZ2VkIHNweSBjb25maWcgYSBiaXQgdG8gZm9sbG93IHRoZSBzYW1lIHNjaGVtZS4KCU1vdmVkIGRlYnVnIG9wdGlvbiBwYXJzaW5nIHJvdXRpbmUgaW50byBsaWJ3aW5lLgoKCSogaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsCgkgIG9iamVjdHMvbWV0YWZpbGUuYywgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUJldHRlciBlbmNhcHN1bGF0aW9uIG9mIHRoZSBmb250IGFuZCBtZXRhZmlsZSBvYmplY3RzLgoKCSogTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcm4gdGhlIHVzZXIgaWYgJ3dpbmUnIHdpbGwgbm90IGZpbmQgaXRzIGxpYnJhcmllcyBhZnRlciBpbnN0YWxsYXRpb24KCW9uICdtYWtlIGluc3RhbGwnLgoKCSogZGxscy9vbGUzMi9ycGMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRml4ZWQgaW5jb3JyZWN0IHBvaW50ZXItY2FzdCBhcml0aG1ldGljLgoJRXh0ZW5kZWQgb2xlIHRyYWNlIGluZm9ybWF0aW9uLgoJRG9uJ3QgbG9zZSB0aGUgZXhpc3RpbmcgcGlwZXMgb24gYWxsb2MgZmFpbHVyZS4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLCBkbGxzL3NoZWxsMzIvdmVyc2lvbjE2LnJjOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJQWRkZWQgdmVyc2lvbiBpbmZvIHRvIDE2LWJpdCBzaGVsbC5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglXYXJuaW5nIGZpeC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5vdGhlciByZWdyZXNzaW9uIGluIFBsYXlTb3VuZC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJV2FycmVuIFR1cmthbCA8d3R1cmthbEBjYnUuZWR1PgoJTW9yZSBzdHJlYW0gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy93aW5tbS9tY2kuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4ZXMuCgoyMDAyLTA2LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BhbGV0dGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsCgkgIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9wYWxldHRlLmMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJQmV0dGVyIHNlcGFyYXRpb24gb2YgdGhlIHBhbGV0dGUgZnVuY3Rpb25zLgoJUmVtb3ZlZCB0aGUgcGFsZXR0ZSBkcml2ZXIuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIERlYnVnQnJlYWtQcm9jZXNzIChub3cgZ2VuZXJhdGVzIEVYQ0VQVElPTl9CUkVBS1BPSU5UIGluc3RlYWQgb2YKCUVYQ0VQVElPTl9TSU5HTEVfU1RFUCkuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhYmlsaXR5IHRvIHR1cm4gb24vb2ZmIGRlYnVnIGNoYW5uZWxzLgoJUmVpbXBsZW1lbnRlZCB0aGUgaW5mbyBtYXBzIGNvbW1hbmQuCgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3dpbi5jOgoJUmVtb3ZlZCBDVVJTT1JJQ09OX0ljb25Ub0N1cnNvciBub3cgdGhhdCB3ZSBzdXBwb3J0IGNvbG9yIGN1cnNvcnMuCgoJKiBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvY29tY2F0LmgsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglDb21wbGV0ZSBJQ2F0SW5mb3JtYXRpb24gaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL250ZGRrLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBOdENyZWF0ZUZpbGUoKSwgTnRPcGVuRmlsZSgpIGFuZCBOdFJlYWRGaWxlKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJRml4ZWQgd3JvbmcgY2FzdDsgTVNETiBzYXlzIGxwRHJvcEZpbGVTdHJ1Y3QtPnBGaWxlcyBpcyBvZmZzZXQgaW4KCWJ5dGVzIChyZWdhcmRsZXNzIG9mIGFzY2lpL3VuaWNvZGUpLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUNvcnJlY3RlZCBpbnN0YWxsYXRpb24gb2YgdGhlIHdpbmUgYXBwbGljYXRpb25zLCBmaXhlZCBjYWxsIHRvCglyZWdlZGl0LgoKCSogdG9vbHMvYmluMnJlcy5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJUG9ydGFiaWxpdHkgZml4LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCB3aW4zMi9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGF0aW9uIGZvciBjb25zb2xlIGNvbnRyb2wgZXZlbnRzIChpbmNsdWRlcyBwcm9jZXNzIGdyb3VwcwoJc3VwcG9ydCkuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgc2VsZWN0aW9uIGJ1Z3MuCgoJKiBkZWJ1Z2dlci9icmVhay5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZWFsbHkgZW50ZXIgdGhlIGRlYnVnZ2VyIHdoZW4gRGVidWdCcmVhayhQcm9jZXNzKSBpcyBpbnZva2VkIG9uCglkZWJ1Z2dlZS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY3RybC1jIHN1cHBvcnQuCgoJKiB3aW4zMi9lZGl0bGluZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgdG9vIGxvbmcgbGluZXMgZGV0ZWN0aW9uLCBhZGRlZCBkZWwga2V5IHN1cHBvcnQgaW4gZW1hY3MgbW9kZS4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvZGlucHV0Lmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CgktIE1hZGUgc3VyZSBjb25zdCBMUCB3ZXJlIGFjdHVhbGx5IGNvbnN0IGluIGRpbnB1dC5oLgoJLSBVbmlmb3JtaXplZCB0aGUge0EsV30gZGVjbGFyYXRpb25zIG9mIHNvbWUgc3RydWN0dXJlcy4KCgkqIHRvb2xzL2ZpbmRmdW5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU2hvdyBpbiB3aGljaCBmaWxlIHRoZSBmdW5jdGlvbiBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCwgYXMgd2VsbCBhcwoJdGhlIGhlYWRlciBpbiB3aGljaCBpdCBpcyBkZWZpbmVkLgoKMjAwMi0wNi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKjoKCVJlbW92ZWQgc29tZSBtb3JlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgoJKiBsaWJyYXJ5L1JFQURNRS5yZXNvdXJjZXM6CglSZW1vdmVkIG9ic29sZXRlIFJFQURNRS4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglBZGRlZCBmYWxsYmFjayByZWFkKCkgZm9yIG1pc3NpbmcvZmFpbGluZyBtbWFwKCkuCgoyMDAyLTA1LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLgoKCSogZGxscy94MTFkcnYvbW91c2UuYzoKCUF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gKHRoYW5rcyB0byBEYXZpZCBSb25pcykuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywKCSAgd2luZG93cy9wYWludGluZy5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywKCSAgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9icnVzaC5oLAoJICBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wYWxldHRlLmgsIGluY2x1ZGUvcGVuLmgsCgkgIGluY2x1ZGUvcmVnaW9uLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3gxMWRydi5oLAoJICBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywKCSAgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9tZXRhZmlsZS5jLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJQWRkZWQgZnVuY3Rpb24gdGFibGUgdG8gR0RJIG9iamVjdHMgZm9yIGJldHRlciBlbmNhcHN1bGF0aW9uLgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgYml0bWFwIHN0cnVjdHVyZS4KCUZpeGVkIGhhbmRsaW5nIG9mIHN0b2NrIGJpdG1hcCBpZiBzZWxlY3RlZCBpbiBtdWx0aXBsZSBEQ3MuCglTb21lIG1pbm9yIGZpeGVzIHRvIHRoZSBEQyBmdW5jdGlvbiB0YWJsZS4KCgkqIHNlcnZlci91c2VyLmM6CglGaXhlZCBuZXh0X3VzZXJfaGFuZGxlIHRvIGFsc28gd29yayBvbiBkZWxldGVkIGhhbmRsZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglVc2UgbmF0aXZlIGxpYmMgZnVuY3Rpb25zIGluc3RlYWQgb2YgbXN2Y3J0IG9uZXMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLWRldmVsQHN1bi5jb25zdW1lci5vcmcuaWw+CglBZGRlZCBJc3JhZWxpIEhlYnJldyBrZXlib2FyZCwgYW5kIGZpeGVkIGEgcHJvYmxlbSBpbiB0aGUgbWF0Y2hpbmcgb2YKCWNoYXJhY3RlcnMgYWdhaW5zdCBkZWFkIGtleXMuCgoyMDAyLTA1LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFkZGVkIHdpbmVfc2VydmVyX2ZkX3RvX2hhbmRsZSB0byByZXBsYWNlIEZJTEVfRHVwVW5peEhhbmRsZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCU1hdGNoIGJlaGF2aW91ciBvZiBJbWFnZUxpc3RfTG9hZEltYWdlQSB3cnQgY3ggcGFyYW1ldGVyICh3aGVuIHNldCB0bwoJemVybykuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgd2FybmluZ3MuCgoJKiB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVzIGZvciBidWlsZGluZyBvbiBtaW5ndy4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsCgkgIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLAoJICBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc21iLmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jOgoJUmVuYW1lZCBoYW5kbGVfdCB0byBvYmpfaGFuZGxlX3QgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBycGNkY2UuaC4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJUmVtb3ZlZCAtbWFuYWdlZCBvcHRpb24uCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CgktIEZpeGVkIEdldFN5c3RlbVRpbWVBZGp1c3RtZW50IHByb3RvdHlwZSBhbmQgYWRkZWQgaXQgdG8gd2luYmFzZS5oLgoJLSBGaXhlZCBEb3NEYXRlVGltZVRvRmlsZVRpbWUsIEZpbGVUaW1lVG9Eb3NEYXRlVGltZSwKCSAgTG9jYWxGaWxlVGltZVRvRmlsZVRpbWUsIEZpbGVUaW1lVG9Mb2NhbEZpbGVUaW1lIGFuZAoJICBTeXN0ZW1UaW1lVG9GaWxlVGltZS4KCjIwMDItMDUtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvY29tY2F0LmgsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvbnRkZGsuaDoKCVJlcGxhY2VkIHN3cHJpbnRmIGJ5IHdzcHJpbnRmVy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3JwYy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglFbnN1cmUgdGhhdCBhbiBvdXQtb2YtcHJvY2VzcyBDT00gb2JqZWN0IGlzIHN0YXJ0ZWQgb25seSBvbmNlLgoJQWxsb3cgb3V0LW9mLXByb2Nlc3MgQ09NIG9iamVjdHMgaWYgcmVxdWVzdCBpcyBmb3IKCWluLW9yLW91dC1vZi1wcm9jZXNzLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCB0b29scy93aW5lZHVtcC9SRUFETUU6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCBzb21lIG1vcmUgbWlzc2luZyBcbiBpbiB0cmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CgktIENoZWNrIGZvciB2YWxpZCBwYXJ0IG5yIGluIFNUQVRVU0JBUl9HZXRUZXh0TGVuZ3RoLgoJLSBUUkFDRSBmaXggaW4gU1RBVFVTQkFSX1NldFRleHRUOyBTQlRfT1dORVJEUkFXIHBvaW50ZXIgaXNuJ3QgYWx3YXlzCgkgIGEgc3RyaW5nIHBvaW50ZXIuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcHBlZCBzdXBlcmZsb3VzIFJlbW90ZV9Db0dldENsYXNzT2JqZWN0KCkgKGVudGlyZWx5IGNvbnRhaW5lZCBpbgoJY3JlYXRlX21hcnNoYWxsZWRfcHJveHkoKSkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgb3RoZXIgc3luY2hyb25pc2F0aW9uIGlzc3Vlcy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC90aW1lLmM6CglGaXhlZCBzb21lIGFsaWdubWVudCBpc3N1ZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgR3JlZ2cgTWF0dGluc29uKS4KCgkqIG9sZS9vbGUybmxzLmM6CglGaXhlZCBidWZmZXIgaGFuZGxpbmcgb2Ygc29tZSBsb2NhbGUgZnVuY3Rpb25zIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglNZWhtZXQgWWFzYXIpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJSmFrb2IgRXJpa3Nzb24gPGpha29iQHZtbGludXgub3JnPgoJUmVtb3ZlZCByZWR1bmRhbnQgY2hlY2tzIGFuZCB2YXJpYWJsZXMsIGZpeGVkIHNvbWUgdGVzdHMsIHNvbWUKCWNvc21ldGljIGNoYW5nZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCUZpeGVkIHNvbWUgdGVzdHMgdGhhdCB3ZXJlIGZhaWxpbmcgdW5kZXIgV2luZS4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJTW92ZWQgV09SRFNfQklHRU5ESUFOIG1hY3JvcyB0byBiYXNldHNkLmguCglGaXhlZCBGSUxFVElNRSBkZWZpbml0aW9uIGZvciBiaWctZW5kaWFuLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlcGxhY2VkIDAgYnkgLTEgdG8gaW5kaWNhdGUgZnJlZSBlbnRyeSBpbgoJWDExRFJWX1BBTEVUVEVfWFBpeGVsVG9QYWxldHRlLgoKCSogaW5jbHVkZS93aW5udC5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZWQgdGhlIExBUkdFX0lOVEVHRVIgYW5kIFVMQVJHRV9JTlRFR0VSIHVuaW9ucyBmb3IgYmlnIGVuZGlhbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXhlZCBkcmF3aW5nIG9mIGJvcmRlcnMgdG8gdGhhdCBvZiBuYXRpdmUgKHVzZXMgRHJhd0VkZ2UpLgoJLSBGaXhlZCBkcmF3aW5nIG9mIHNlcGFyYXRvcnMgdG8gbWF0Y2ggdGhlIG5hdGl2ZS4KCS0gRml4ZWQgaGVpZ2h0IG9mIHRhYnMgYW5kIGJ1dHRvbnMgdG8gbWF0Y2ggbmF0aXZlLgoJLSBBZGQvaW1wcm92ZWQgdHJhY2VzLgoJLSBIYW5kbGUgV01fU1lTQ09MT1JDSEFOR0UgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgZm9yIE5VTEwgcHRyIGluIG1pZGlTdHJlYW1PdXQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJQWRkZWQgdGVzdCBmb3IgbG9jYWxlIGZ1bmN0aW9ucy4KCjIwMDItMDUtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5ld3JhcHBlcjoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gYWRkIGxvY2FsIGNvbmZpZ3VyYXRpb24gdG8gd2luZXdyYXBwZXIuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jOgoJQSBmZXcgZml4ZXMgaW4gRXh0U2VsZWN0Q2xpcFJnbiBtZXRhZmlsZSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBmaW5kX2NoaWxkX2Zyb21fcG9pbnQoKS4KCgkqIGluY2x1ZGUvc2V0dXBhcGkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdHViIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglPbmx5IGVudW1lcmF0ZSBEaXJlY3RTb3VuZCBkZXZpY2VzIGlmIHRoZSBmaXJzdCBzb3VuZCBkZXZpY2UgaW4gdGhlCglzeXN0ZW0gc3VwcG9ydHMgdGhlIFdpbmUgaW1wbGVtZW50YXRpb24gb2YgRGlyZWN0U291bmQuIEFsc28gYWRkZWQKCXNvbWUgZW50cmllcyB0byB0aGUgc2FtcGxlIGNvbmZpZyBmaWxlIGFuZCBjaGFuZ2VkIHRoZSB2YWx1ZXMgb2YgdGhlCgkiRW11bERyaXZlciIga2V5IHRvICJZIi8iTiIuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJVGhlIFNWR0EgYmxvY2sgY29kZSB3YXMgbm90IGFjY2Vzc2libGUgKEFIIGFuZCBBTCBpbnZlcnRlZCkuIEZpeGVkLgoJUmVtb3ZlZCBkdXBsaWNhdGUgVkVTQSBHZXQgU3VwZXJWR0EgSU5GT1JNQVRJT04gZnVuY3Rpb24uCglGaXggYW5kIGZpbmlzaCBpdHMgaW1wbGVtZW50YXRpb24uCglBZGQgMiBmdW5jdGlvbnMgdG8gbWFuYWdlZCBzdHJ1Y3R1cmVzIGluIHRoZSBCaW9zU3lzIHNlZ21lbnQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglNYWNpZWsgS2FsaXN6ZXdza2kgPGtlbm9uQGdvMi5wbD4KCUZpeGVkIG1lbW9yeSBhbGxvY2F0aW9uIGJ1ZyBpbiBQUk9QU0hFRVRfQ29sbGVjdFBhZ2VJbmZvLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CgltaXhlckdldENvbnRyb2xEZXRhaWxzVzogdHJhbnNsYXRlIHN0cmluZ3MgZm9yCglNSVhFUl9HRVRDT05UUk9MREVUQUlMU0ZfTElTVFRFWFQgb3B0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglXYXJyZW4gVHVya2FsIDx3dHVya2FsQGNidS5lZHU+CglBZGRlZCBzdHJ1Y3R1cmVzIGFuZCBzb21lIGNvbnN0YW50cyBmb3Igc3RyZWFtIGhhbmRsaW5nLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdHViIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL2ZpbGUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTaWxlbmNlIGZpeG1lIGluIHVubmVjZXNzYXJ5IHNpdHVhdGlvbiwgYWRkIG1pc3NpbmcgXG4gdG8gYW5vdGhlciBmaXhtZS4KCjIwMDItMDUtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3JlZ2lvbi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvcmVnaW9uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmM6CglSZW1vdmVkIGRlcGVuZGVuY2llcyBvbiB0aGUgaW50ZXJuYWxzIG9mIHRoZSByZWdpb24gb2JqZWN0LgoJRG8gbm90IHN0b3JlIHRoZSByZWdpb24gdHlwZSBpbiB0aGUgb2JqZWN0LCBpdCdzIHRyaXZpYWwgdG8gZGV0ZXJtaW5lCglmcm9tIHRoZSByZWN0YW5nbGUgY291bnQuCglSZXdyb3RlIGEgZmV3IHJvdXRpbmVzIHRvIG5vdCBkZXBlbmQgb24gaW50ZXJuYWwgY2xpcHBpbmcgb3IgcmVnaW9uCglmdW5jdGlvbnMuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gQWRkIHNvbWUgdW5kb2N1bWVudGVkIGlvY3RsIG1hcHBpbmdzLgoJLSBDb3JyZWN0IE9wZW5WeERIYW5kbGUgcHJvdG90eXBlLCBkb2N1bWVudCBpdCwgaGF2ZSBhIHRyeSBhdAoJICByZXR1cm5pbmcgYSBSaW5nIDMgaGFuZGxlIGFuZCBtYWtlIEZJWE1FIG1vcmUgdmVyYm9zZS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY29udC9wYXNzIG1pc21hdGNoLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywKCSAgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvdHlwZXMuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglIYWNrZWQgdW5pY29kZSBwcmludGluZyBmZWF0dXJlICh4IC91KS4KCU1hZGUgdGhlIHR5cGUgY2FzdHMgYSBiaXQgbW9yZSByb2J1c3QuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oOgoJRml4ZWQgcHJvY2VzcyBzdGFydHVwIHN5bmNocm9uaXphdGlvbiBicm9rZW4gYnkgcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGaXhlZCB0eXBvIGluIGlzd2FscGhhIGZvcndhcmQuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglPbmx5IGFkZCBleHRyYSBzeW1ib2xzIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IGV4cG9ydGVkIGJ5IHRoaXMgZGxsLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB3aW5lIGV4ZWMgZmlsZSBsb2NhdGlvbiBhZnRlciBzdGFydHVwIG1vZGlmaWNhdGlvbnMuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gVXNlIFdpbjk4IFNFIHZhbHVlcyBmb3IgV0lOOTggc2V0dGluZy4KCS0gV2luIE1FIGlzIERPUyA4LjAwLgoJLSBSZW5hbWUgdmFyaWFibGUgZGVmYXVsdFdpblZlcnNpb24gdG8gZm9yY2VkV2luVmVyc2lvbi4KCS0gVkVSU0lPTl9HZXRTeXN0ZW1ETExWZXJzaW9uKCk6IGFkZCBXMksvWFAgc3VwcG9ydCwgYWRkICJ1bmtub3duIgoJICB3YXJuaW5nLgoKMjAwMi0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJTm8gbG9uZ2VyIG5lZWQgYSBzcGVjaWFsIExEQ09NQklORSBmb3IgY3lnd2luL21pbmd3LgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBtZW1vcnkvZW52aXJvbi5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3B0cmFjZS5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUEgZmV3IG9wdGltaXphdGlvbnMgaW4gdGhlIHByb2Nlc3Mgc3RhcnR1cCByZXF1ZXN0cyBub3cgdGhhdCBXaW5lbGliCglhcHBzIGFyZSBzdGFydGVkIGRpZmZlcmVudGx5IGZyb20gVW5peCBvbmVzLgoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG1zZG9zL3BwZGV2LmMsIG9iamVjdHMvcmVnaW9uLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZCBtaXNzaW5nIFxuIHRvIG91dHB1dCBtZXNzYWdlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IHF1ZXJ5aW5nIG9mIG51bWJlciBvZiB2aXN1YWxzIHdpdGhvdXQgcmVwb3J0aW5nIGFuIGVycm9yIG9yCgljcmFzaGluZy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL3ZlcnNpb24uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgVmVyaWZ5VmVyc2lvbkluZm97QSxXfS4KCjIwMDItMDUtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2ludDExLmMsCgkgIG1zZG9zL2ludDFhLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2lvcG9ydHMuYywgb2JqZWN0cy9mb250LmMsCgkgIG9sZS9vbGUybmxzLmMsIHByb2dyYW1zL3Byb2dtYW4vc3RyaW5nLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHdpbjMyL2NvbnNvbGUuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglSZW1vdmVkIG1vc3QgaW5jbHVzaW9ucyBvZiBvcHRpb25zLmguCglSZW1vdmVkIGEgZmV3IG5vIGxvbmdlciB1c2VkIFBST0ZJTEVfKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy9vcHRpb25zLmMsIG1pc2MvdmVyc2lvbi5jLAoJICB3aW4zMi9kZXZpY2UuYzoKCVJlcGxhY2VkIC1kb3N2ZXIgYW5kIC13aW52ZXIgb3B0aW9ucyBieSBjb25maWcgZmlsZSBwYXJhbWV0ZXJzLgoKCSogZGxscy9tYWtlX2RsbHMsIGRsbHMvTWFrZWZpbGUuaW46CglSZXN0b3JlZCB0aGUgbGlicmFyeSBmaWxlIGludGVybWVkaWF0ZSBzdGVwIGZvciBzeW1saW5rIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJUmVzdG9yZWQgbWFuYWdlZCBtb2RlIGNvbmZpZyBmaWxlIG9wdGlvbi4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJU3VwcG9ydCBmb3IgS0RFMy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUFkZGVkIGNyZWF0aW9uIG9mIGM6L3dpbmRvd3MvZm9udHMgYW5kCgljOi93aW5kb3dzL1N0YXJ0IE1lbnUvUHJvZ3JhbXMvU3RhcnR1cC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW1wcm92ZSB0aGUgZmFpbHVyZSBtZXNzYWdlcy4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsCgkgIGxvYWRlci90YXNrLmMsIG1lbW9yeS9lbnZpcm9uLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgd2luZG93cy9jbGFzcy5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLAoJICBkbGxzL250ZGxsL2hlYXAuYywgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgaW5jbHVkZS91c2VyLmg6CglSZXBsYWNlZCB0aGUgR0VUL1BVVF9VQSBtYWNyb3MgYnkgbWVtY3B5LiBGaXhlZCBhIGZldyBiaWctZW5kaWFuCglpc3N1ZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCVJ1biBtYWtlIGNsZWFuIGluIGFsbCBkaXJlY3RvcmllcywgZXZlbiB0aGUgb25lcyB3ZSBkb24ndCBjb21waWxlIGluLgoJU2ltcGxpZmllZCBzdWItZGlyZWN0b3JpZXMgcnVsZXMgYSBiaXQuCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbXBvcnRzLgoKCSogTWFrZWZpbGUuaW46IEZpeGVkIGV0YWdzIHJ1bGUuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL29wdGlvbnMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIC0tbWFuYWdlZCBvcHRpb24sIGFuZCBtYWtlIHdpbmUgdXNlIHRoZSBtYW5hZ2VkIG1vZGUgYnkKCWRlZmF1bHQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglSZW1vdmVkIG9ic29sZXRlIGVtYWlsIGFkZHJlc3MuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywKCSAgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy93c3ByaW50Zi5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHRoZSB0ZXN0cyBjb21waWxlIHdpdGggVmlzdWFsIEMrKy4KCgkqIGluY2x1ZGUvbWFwaWNvZGUuaCwgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSB3aW5lcnJvci5oIGlmIGluIFdpbmVsaWIgbW9kZS4KCjIwMDItMDUtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpY2FwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNnNzExLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zcmxlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaToKCUF2b2lkIDAtYnl0ZSBmaWxlcy4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICB0b29scy93aW5ld3JhcHBlciwgd2luMzIvY29uc29sZS5jLCAuY3ZzaWdub3JlLCBNYWtlLnJ1bGVzLmluLAoJICBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwKCSAgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjZW11Ly5jdnNpZ25vcmUsCgkgIG1pc2NlbXUvTWFrZWZpbGUuaW4sIHByb2dyYW1zLy5jdnNpZ25vcmUsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvd2luZWFwcGxvYWRlci5pbiwKCSAgd2luZWRlZmF1bHQucmVnOgoJTmV3IGxvYWRpbmcgc2NoZW1lIGZvciBXaW5lbGliIGFwcHMsIG1ha2VzIHRoZW0gYmVoYXZlIGxpa2UgYnVpbHRpbgoJZGxscyBhbmQgdGFrZXMgbG9hZCBvcmRlciBpbnRvIGFjY291bnQuIEluc3RhbGwgdGhlbSBpbiBkbGxkaXIuCglJbXByb3ZlZCBNT0RVTEVfR2V0QmluYXJ5VHlwZSB0byByZWNvZ25pemUgRUxGIGJpbmFyaWVzLgoJQWRkZWQgYSB3cmFwcGVyIHNjcmlwdCB0byBzZXR1cCB0aGUgZW52aXJvbm1lbnQgd2hlbiBydW5uaW5nIGRpcmVjdGx5Cglmcm9tIGluc2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBNYWtlLnJ1bGVzLmluLCBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUFkZGVkIGNoZWNrIGZvciBsbi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhZHAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL21zYWRwMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaSwKCSAgY29uZmlndXJlLmFjLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNyZWF0ZWQgYW4gQUNNIE1TIEFEUENNIGNvZGVjLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsCgkgIGRsbHMveDExZHJ2L3dpbmVjbGlwc3J2LmMsIG1zZG9zL3BwZGV2LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvYXZpZmlsZS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmljYXAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmlmaWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jYXQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1hYWRwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1tMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNnNzExLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zcmxlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZG9jdncuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lcHMuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBoYW5nIGluIFBsYXlTb3VuZCBpbiBlcnJvciBjYXNlczsgYWRkZWQgcmVnaXN0cnkgbG9va3VwIGZvciBzb3VuZHMuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zd3NvY2suaCwKCSAgaW5jbHVkZS93aW5zb2NrLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtc3dzb2NrLmgsIG1vdmUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgdG8gdGhpcyBoZWFkZXIuCgoyMDAyLTA1LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jb250cm9sLy5jdnNpZ25vcmUsIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2V4cGFuZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9leHBhbmQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdzdnIzMi8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXBhdGgvLmN2c2lnbm9yZSwKCSAgTWFrZS5ydWxlcy5pbiwgZGVidWdnZXIvLmN2c2lnbm9yZSwgZGVidWdnZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbjoKCVJlbmFtZWQgV2luZWxpYiBhcHBzIHRvIC5leGUuc28gdG8gZm9sbG93IHRoZSBkbGwgbmFtaW5nIGNvbnZlbnRpb24uCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvc2hsd2FwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUZXN0IGZvciBJU3RyZWFtX0lNRVRIT0RTIGJlZm9yZSBkZWZpbmluZyBBUElzIHRoYXQgbmVlZCB0aGUgSVN0cmVhbQoJaW50ZXJmYWNlIChsaWtlIG9uIFdpbmRvd3MpLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUNoZWNrIGZvciBzeXMvaW9jdGwuaC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNnNzExLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vbXNnNzExL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuZHJ2LnNwZWM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGEgRzcxMSBBQ00gY29kZWMgKHN1cHBvcnRzIGJvdGggQS1MYXcgYW5kIE1VLUxhdykuCgoJKiBkbGxzL21ha2VfZGxsczoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHJ1bnMgaW4gUGVybCBzdHJpY3QgbW9kZS4KCUFkZGVkIGFiaWxpdHkgdG8gc2tpcCBETEwgZnJvbSB0aGUgdHJlZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdHViIGZvciBFeHRyYWN0QXNzb2NpYXRlZEljb25FeEEuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgQU5TSSBjaGFyc2V0IGluIGZvbnQgZW51bWVyYXRpb24uCglBZGRlZCBhYmlsaXR5IG5vdCB0byBjbG9zZSB0aGUgd2luZWNvbnNvbGUgb24gY29uc29sZSBvYmplY3QKCWRlc3RydWN0aW9uLgoKCSogZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAxNi8zMiBEREUgbWVzc2FnZSBjb252ZXJzaW9uLgoJRmluaXNoZWQgdGhlIDE2IGJpdCBpbXBsZW1lbnRhdGlvbiBvZiBEREVNTC4KCjIwMDItMDUtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9leHBhbmQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvZXhwYW5kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9leHBhbmQvZXhwYW5kLmM6CglNb3ZlZCBleHBhbmQuYyBmcm9tIGxpYnRlc3QgdG8gcHJvZ3JhbXMvZXhwYW5kLgoJUmVtb3ZlZCB0aGUgcmVzdCBvZiB0aGUgbGlidGVzdCBkaXJlY3RvcnkuCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgYWNsb2NhbC5tNCwgY29uZmlndXJlOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciB0aGUgc29uYW1lIG9mIGxpYnJhcmllcyB0aGF0IHdlIGxvYWQKCWR5bmFtaWNhbGx5LiAgQWRkZWQgYSBmZXcgb3RoZXIgY29uZmlndXJlIG1hY3JvcywgYW5kIG1vdmVkIGFsbCBtYWNyb3MKCWludG8gYWNsb2NhbC5tNC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFyIGFuIG9sZCBidXR0b24gdGV4dCBpbiBXTV9TRVRURVhUIGFzIFdpbmRvd3MgZG9lcy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsCgkgIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9tZW51LmMsCgkgIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy91aXRvb2xzLmM6CglHb3QgcmlkIG9mIEdldFN5c0NvbG9yUGVuLgoKCSogZGxscy91c2VyL21zZzE2LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9tc3ZjcnQvd2NzLmM6IEpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUZpeCBtc3ZjcnQuX3ZzbndwcmludGYgZm9ybWF0IHJlYWRpbmcgYnVnIGxpa2UgTlRETExfdnNud3ByaW50Zi4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglBZGRlZCBTZXJpYWxDb21tIGtleS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW5lcHMvcHBkLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTcGVsbGluZyBzdHVmZi4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRHVtcCB0aHJlYWQgaWQgaW5zdGVhZCBvZiAlZnMuCgoyMDAyLTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG8gbm90IG91dHB1dCBzdHVicyBpbiB0aGUgLmRlZiBmaWxlLgoKCSogdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgaW5jbHVkZS93aW5lL2RlYnVnLmgsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sCgkgIGxpYnJhcnkvZGVidWcuYzoKCUV4cG9ydCB0aGUgZGVidWcgQVBJIGFzIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHBvaW50ZXJzLgoJQSBmZXcgb3RoZXIgaW1wb3J0IGZpeGVzIGZvciBNaW5ndy4KCgkqIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgaW5jbHVkZS93aW5lcnJvci5oLCBkbGxzL2NvbWNhdC9jb21jYXQuaCwKCSAgZGxscy9jb21jYXQvZmFjdG9yeS5jLCBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLAoJICBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglNb3JlIGNvbWNhdC5kbGwgaW1wbGVtZW50YXRpb24sIHN3cHJpbnRmIGZpeCwgd2luZXJyb3IuaCBhZGRpdGlvbnMuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJQXJqZW4gTmllbmh1aXMgPGFyamVuQEJsZUhRLm9yZz4KCUZpeGVkIGtleWJvYXJkIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGZpbGVzL2Rvc19mcy5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJQWRkIGNoZWNrIGZvciA8c3lzL2lvY3RsLmg+LgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBJbXByb3ZlIGVycm9yIG1lc3NhZ2VzLgoJLSBBZGQgZXJyb3IgY29kZSBtYXBwaW5nIEVQRVJNIC0+IFNUQVRVU19BQ0NFU1NfREVOSUVELgoKCSogZGxscy9rZXJuZWwvbmxzL2Fyay5ubHMsIGRsbHMva2VybmVsL25scy9oZWIubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvaHJ2Lm5scywgZGxscy9rZXJuZWwvbmxzL2tvci5ubHMsCgkgIGRsbHMva2VybmVsL25scy90aGEubmxzLCBkbGxzL2tlcm5lbC9ubHMvdWtyLm5sczoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFIHZhbHVlcyBmb3Igc29tZSBsYW5ndWFnZXMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl94eC5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgdmVyc2lvbiBpbmZvIHJlc291cmNlLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHRoZSAnZXJyb3InIHN0cmluZyBvZiBhIGNvdXBsZSBvZiBjaGVja3MgY29uc2lzdGVudCB3aXRoIHRoZQoJb3RoZXJzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0aGUgV2luRXhlYyBwcm90b3R5cGUuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbXBsZW1lbnRlZCBfZ2V0d3MuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIFdJTl9SZWxlYXNlV25kUHRyIGluIFdJTl9DcmVhdGVEZXNrdG9wV2luZG93LgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgVmVyU2V0Q29uZGl0aW9uTWFzay4KCjIwMDItMDUtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUdlbmVyYXRlIGEga2VybmVsMzIgZGVwZW5kZW5jeSBmb3IgZGxscyB0aGF0IGhhdmUgbm8gaW1wb3J0cyB0byBoYW5kbGUKCXRoZSB3aW5lYnVpbGQtZ2VuZXJhdGVkIGltcGxpY2l0IGltcG9ydC4KCgkqIGxpYnJhcnkvZGVidWcuYzoKCUFkZGVkIGNoZWNrIGZvciBudW1lcmljIGlkcyBhbmQgbnVsbCBwb2ludGVycyAodGhhbmtzIHRvIERpbWl0cmllKS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NubXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RpL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgbW9zdCBpbXBvcnRzIG9mIG50ZGxsIHNpbmNlIHdlIG5vIGxvbmdlciBpbXBvcnQgV2luZSBpbnRlcm5hbAoJZnVuY3Rpb25zIGZyb20gdGhlcmUuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCB3aW4zMi9kZXZpY2UuYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL21wci93bmV0LmMsCgkgIGRsbHMvdXNlci9uZXR3b3JrLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBsaWJyYXJ5L3BvcnQuYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2hlYXAuYzoKCUEgZmV3IGZpeGVzIGZvciBtaW5ndyBjcm9zcy1jb21waWxhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgaWYxNjMyL3JlbGF5LmMsCgkgIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLCBsaWJyYXJ5L2RlYnVnLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLAoJICBtZW1vcnkvYXRvbS5jLCBvYmplY3RzL2ZvbnQuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW5kb3dzL2NsYXNzLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvd2luLmM6CglFeHBvcnQgdGhlIGRlYnVnZ2luZyBBUEkgZnJvbSBsaWJ3aW5lIGluc3RlYWQgb2YgbnRkbGwuCglSZW1vdmVkIGRlYnVncmVzX1thd10uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUmVtb3ZlIGxlYWRpbmcgd2hpdGVzcGFjZSBmcm9tIHByaW50Y2FwIGVudHJpZXMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglEbyBub3QgY3JlYXRlIGEgd2luZG93IGVhY2ggdGltZSBWR0FfRG9TZXRNb2RlIGlzIGNhbGxlZC4gVGhlIHdpbmRvdwoJaXMgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhbmQgdGhlbiBqdXN0IHJlc2l6ZWQuCgoyMDAyLTA1LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGFwdGVkIHRvIHVzZSB0aGUgYXJnYy9hcmd2IHZhcmlhYmxlcyBmcm9tIGxpYndpbmUuCglBdXRvbWF0aWNhbGx5IGltcG9ydCBsaWJyYXJpZXMgdGhhdCBjb250YWluIHRoZSBzeW1ib2xzIHRoYXQgdGhlCgkuc3BlYy5jIGZpbGUgaXMgdXNpbmcuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sb2FkZXIuYywgbWVtb3J5L2Vudmlyb24uYzoKCUV4cG9ydCBnbG9iYWwgYXJnYy9hcmd2IHZhcmlhYmxlcyBmcm9tIGxpYndpbmUgYW5kIHJlbW92ZSB0aGUKCV9fd2luZV9nZXRfbWFpbl9hcmdzIGZ1bmN0aW9ucyBmcm9tIG50ZGxsLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRml4ZWQgc3RydWN0IG1zZ2hkciBhY2Nlc3MgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgbXNnX2FjY3JpZ2h0cwoJKHJlcG9ydGVkIGJ5IFdhcnJlbiBCYWlyZCkuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglQaGlsaXAgQnJvd24gPHBoaWxAYm9sdGhvbGUuY29tPgoJTmVlZCB0byB1bmRlZiBOT0VSUk9SIGZvciBTb2xhcmlzLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21hdGguYywgcmVsYXkzMi9zbm9vcC5jOgoJV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJU29tZSBmaXhlcyBmb3IgY29tcGlsaW5nIG9uIFNwYXJjLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglCZXR0ZXIgdXNhZ2UgbWVzc2FnZS4gRmx1c2ggc3RkZXJyIGJlZm9yZSBleGl0aW5nLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L2xkdC5jLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywKCSAgaWYxNjMyL3Nub29wLmM6CglNb3ZlZCB0aGUgc2VsZWN0b3IgYWNjZXNzIGZ1bmN0aW9ucyBvdXQgb2Ygd2lubnQuaCBpbnRvIGxpYndpbmUuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGhhbmdzIHdoZW4gcGxheWluZyBhbiBBU0NJSSByZXNvdXJjZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIHByb3Blcmx5IHRoZSByZXF1ZXN0ZWQgdmlkZW8gbW9kZSBpbiBJbnQxMGggU0VUIFZJREVPIE1PREUKCWZ1bmN0aW9uIGJ5IG1hbmFnaW5nIHRoZSBiaXQgNyBvZiBBTC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglQbGFjZSAiQ29tbW9uIEZpbGVzIiB1bmRlciAiUHJvZ3JhbSBGaWxlcyIgaW5zdGVhZCBvZiByb290IGRpcmVjdG9yeS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUZWxsIHRoZSB1c2VyIGlmIHdpbmVkZWZhdWx0LnJlZyBpcyBub3QgbG9hZGVkLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBpbmNsdWRlL250ZGRrLmgsCgkgIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIHVuaWNvZGUvc3RyaW5nLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsCgkgIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCUltcGxlbWVudGVkIHN0cnRvbFcvc3RydG91bFcgaW4gbGlid2luZV91bmljb2RlIGFuZCB1c2VkIGl0IHRvIHJlcGxhY2UKCXdjc3RvbCBhbmQgZnJpZW5kcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCUZpeGVkIG1pc3NpbmcgY2FsbCB0byBtYWtlX2NfaWRlbnRpZmllci4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2RtYS5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy9zb3VuZGJsYXN0ZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIERNQSBhbmQgU291bmRCbGFzdGVyIGVtdWxhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOgoJV2lsbGlhbSBTdGluc29uIDx3c3RpbnNvbkBpbmZvbmllLmZyPgoJRXhwbGFpbiBwYXRjaCAtcDAgb3B0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglGaXhlZCBzbnByaW50ZiB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBjaGVjayBmb3Igc3lzL21tYW4uaC4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRml4ZWQgaW5jb3JyZWN0IGZvcm1hdCB3aGVyZSBzaW5nbGUgYmFja3NsYXNoZXMgd2VyZSB1c2VkIGluc3RlYWQgb2YKCWRvdWJsZSBvbmVzIGluIGF0dHJpYnV0ZSB2YWx1ZXMuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCWxwbW1pb2luZm8gY2FuIHNvbWV0aW1lcywgcHJvdmVuIGluIHRoZSByZWFkIGNhc2UsIGJlIE5VTEwuCgoyMDAyLTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglGaXhlcyBmb3Iga2RlMyBhbmQgRGVza3RvcCBkaXJlY3RvcnkuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglGaXggZm9yICRsaWJkaXIgY2hlY2suCgoJKiBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLAoJICBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGxpYnJhcnkvbG9hZGVyLmMsIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmU6CglQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvY29tY2F0LmgsCgkgIGRsbHMvY29tY2F0L2NvbWNhdC5zcGVjLCBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLAoJICBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsCgkgIGRsbHMvY29tY2F0L21hbmFnZXIuYywgZGxscy9jb21jYXQvcmVnaXN0ZXIuYywgd2luZWRlZmF1bHQucmVnOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQWRkZWQgY29tY2F0LmRsbCB3aXRoIGZhY3RvcnkgYW5kIG1hbmFnZXIgYnV0IEVfTk9USU1QTCB3b3JrIG1ldGhvZHMuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl91c2VyLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgVHJhY2UgbWFjcm8gYW5kIHJlcGxhY2VkIGl0IGJ5IFdpbmUgZGVidWcgY2hhbm5lbCBmYWNpbGl0eS4KCU1hZGUgdGhlIGZvbnQgbG9va3VwIGF0IHN0YXJ0dXAgbW9yZSByb2J1c3QgYW5kIG5vdyBzYXZlIHJlZ2lzdHJ5IGF0CglzdGFydHVwIHRpbWUgaWYgYSBuZXcgZm9udCBpcyBjaG9zZW4gKGFzIHNwb3R0ZWQgYnkgU3lsdmFpbiBQZXRyZW9sbGUpLgoJRml4ZWQgYW4gdXBkYXRlIGJ1ZyBzcG90dGVkIGJ5IEphc29uIEVkbWVhZGVzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBpbmNsdWRlL3dpbm5scy5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEdldENhbGVuZGFySW5mb3tBLFd9LCBub3QgcGVyZmVjdC4KCgkqIHByb2dyYW1zL3dpbnZlci8uY3ZzaWdub3JlLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvY29udHJvbC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnYXBpLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVndGVzdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXBhdGgvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21jaXNlcS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9taWRpbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFydHMvd2luZWFydHMuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5kcnYuc3BlYywKCSAgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwgZGxscy93aW5ubHMvd2lubmxzMzIuc3BlYywKCSAgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywKCSAgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBkbGxzL3dpbnRydXN0Ly5jdnNpZ25vcmUsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywKCSAgZGxscy93b3czMi8uY3ZzaWdub3JlLCBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLAoJICBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgbWlzY2VtdS93aW5lLnNwZWMsCgkgIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLAoJICBkbGxzL3VybC8uY3ZzaWdub3JlLCBkbGxzL3VybC91cmwuc3BlYywgZGxscy91cmxtb24vLmN2c2lnbm9yZSwKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLAoJICBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpYXZpLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2ljZGEvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvcWNhcC8uY3ZzaWdub3JlLCBkbGxzL3FjYXAvcWNhcC5zcGVjLAoJICBkbGxzL3F1YXJ0ei8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywKCSAgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsCgkgIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLAoJICBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsCgkgIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywKCSAgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hmb2xkZXIvLmN2c2lnbm9yZSwgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLAoJICBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zbm1wYXBpLy5jdnNpZ25vcmUsIGRsbHMvc25tcGFwaS9zbm1wYXBpLnNwZWMsCgkgIGRsbHMvc3RpLy5jdnNpZ25vcmUsIGRsbHMvc3RpL3N0aS5zcGVjLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvbmV0YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsCgkgIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywKCSAgZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsCgkgIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLAoJICBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLAoJICBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9wc2FwaS8uY3ZzaWdub3JlLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC9sejMyLnNwZWMsCgkgIGRsbHMvbWFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLAoJICBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLAoJICBkbGxzL21zYWNtL21zZzcxMS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuZHJ2LnNwZWMsCgkgIGRsbHMvbXNkbW8vLmN2c2lnbm9yZSwgZGxscy9tc2Rtby9tc2Rtby5zcGVjLAoJICBkbGxzL21zaW1nMzIvLmN2c2lnbm9yZSwgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywKCSAgZGxscy9tc2lzeXMvLmN2c2lnbm9yZSwgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjLAoJICBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYywKCSAgZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsCgkgIGRsbHMvbXN2Y3J0Ly5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydDIwLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYywKCSAgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsCgkgIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywKCSAgZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsCgkgIGRsbHMvY3J5cHQzMi8uY3ZzaWdub3JlLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2RjaW1hbjMyLy5jdnNpZ25vcmUsIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywKCSAgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLCBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLAoJICBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywKCSAgZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5L2RwbGF5LnNwZWMsCgkgIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2Rzb3VuZC8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nbHUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2dsdTMyL2dsdTMyLnNwZWMsIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2ljbXAvaWNtcC5zcGVjLAoJICBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywKCSAgZGxscy9pbW0zMi8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIE1ha2UucnVsZXMuaW4sCgkgIGRlYnVnZ2VyLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYXZpY2FwMzIvLmN2c2lnbm9yZSwgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywKCSAgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglBZGRlZCB3aW5lYnVpbGQgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBhIC5kYmcuYyBmaWxlIGNvbnRhaW5pbmcgdGhlCglkZWJ1ZyBjaGFubmVscyBkZWZpbml0aW9ucy4KCU1hZGUgd2luMzIgdGhlIGRlZmF1bHQgdHlwZSBmb3Igc3BlYyBmaWxlcy4KCUlnbm9yZSBDIGNvbXBpbGVyIGluIHdpbmVidWlsZCBzbyB3ZSBjYW4gc2ltcGx5IHBhc3MgaXQgJChERUZTKS4KCVJlbW92ZWQgdHlwZSB3aW4zMiBhbmQgZGVidWdfY2hhbm5lbHMgZnJvbSBzcGVjIGZpbGVzLgoJRml4ZWQgd2luZWJ1aWxkIHRvIGFsd2F5cyBnZW5lcmF0ZSBjb3JyZWN0IEMgaWRlbnRpZmllcnMgKHJlcG9ydGVkIGJ5CglWaW5jZW50IELpcm9uKS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJVXBkYXRlZCBtYWtlX2RsbHMgc2NyaXB0IGZvciBuZXcgaW1wb3J0IHNjaGVtZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCS0gQ2VudGVyIHByb3BlcnR5IHNoZWV0IHBhZ2UgZHVyaW5nIGNyZWF0aW9uIChwYWRkaW5nKQoJICAoc29tZSBhcHBsaWNhdGlvbnMgcmVseSBvbiB0aGlzIGJlaGF2aW91ciB3aGVuIHJlc2l6aW5nIHRoZSBwYWdlKQoJLSBNYXNrIGF3YXkgV1NfVEhJQ0tGUkFNRSBwYWdlIHN0eWxlCgktIFBhZ2UgbmF2aWdhdGlvbiBieSByZXNvdXJjZSBpZCAoYnkgdW5rbm93biBhdXRob3IpCgoJKiBtaXNjLy5jdnNpZ25vcmUsIG1pc2MvTWFrZWZpbGUuaW4sIG1zZG9zLy5jdnNpZ25vcmUsCgkgIG1zZG9zL01ha2VmaWxlLmluLCBvYmplY3RzL01ha2VmaWxlLmluLCBvbGUvTWFrZWZpbGUuaW4sCgkgIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyLy5jdnNpZ25vcmUsCgkgIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZWRlcC5jLCB3aW4zMi8uY3ZzaWdub3JlLAoJICB3aW4zMi9NYWtlZmlsZS5pbiwgd2luZG93cy8uY3ZzaWdub3JlLCB3aW5kb3dzL01ha2VmaWxlLmluLAoJICBjb25maWd1cmUuYWMsIGNvbnRyb2xzLy5jdnNpZ25vcmUsIGNvbnRyb2xzL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBmaWxlcy8uY3ZzaWdub3JlLAoJICBmaWxlcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvLmN2c2lnbm9yZSwgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sCgkgIGdyYXBoaWNzL3gxMWRydi8uY3ZzaWdub3JlLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGxvYWRlci8uY3ZzaWdub3JlLAoJICBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS8uY3ZzaWdub3JlLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sCgkgIG1lbW9yeS8uY3ZzaWdub3JlLCBtZW1vcnkvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCVNwZWNpZnkgdGhlIGNvbXBsZXRlIHNvdXJjZSBmaWxlIGxpc3QgZm9yIGEgZGxsIGluc2lkZSB0aGUgbWFpbgoJbWFrZWZpbGUgYW5kIGdldCByaWQgb2YgdGhlIHN1YmRpcmVjdG9yaWVzIG1ha2VmaWxlcy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvWHgucmM6IE5vIGxvbmdlciB1c2VkLgoKCSogZGxscy9rZXJuZWwvbmxzL2pwbi5ubHM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZWQgTkxTIGZpbGUgZm9yIGNvZGVwYWdlIDkzMiAoU0pJUykuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGludmFsaWRhdGUgdGhlIHJlY3Qgd2hpbGUgZHJhd2luZy4KCUltcGxlbWVudGVkIEdldFN1Ykl0ZW1SZWN0IGFuZCBhIHF1aWNrIGNoYW5nZSB0byBub3RpZmljYXRpb25zIHNlbnQKCWZvciBPd25lckRhdGEgaXRlbXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglSb2JlcnQgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJQWRkZWQgdGhlIHJlc3Qgb2YgdGhlIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbiBjb2RlIHRvIGludCAxMC4gIEl0IG9ubHkKCWhhbmRsZXMgdGhlIHNldHRpbmcgb2YgdGhlIDE2LWNvbG9yIHBhbGV0dGUgcmVnaXN0ZXJzIGFuZCBvdmVyc2Nhbi4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENoYW5nZSB0cmFjZXMgdG8gdHJhY2UgZnVsbCB3aW5kb3cgaGFuZGxlIGFuZCBpbXByb3ZlIHNvbWUgdHJhY2VzLgoJLSBTZW5kIFdNX05PVElGWSB0byBwYXJlbnQgbm90IHRvIHNlbGYuCgktIEltcGxlbWVudCBQR1NfQVVUT1NDUk9MTCB2aWEgTU9VU0VNT1ZFIGFuZCBUaW1lciByb3V0aW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVN1cHBvcnQgUEdOX1NDUk9MTCBub3RpZnkgYW5kIHJldHVybiBlaXRoZXIgdGhlIGJ1dHRvbiBoZWlndGggb3Igd2lkdGguCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBtZW1vcnkgZHVtcCB3aGVyZSBsZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2YgNC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgaXNzdWVzIHdpdGggVW5pY29kZSBjb252ZXJzaW9uLiBDZXJ0YWluIHN0cmluZ3Mgd2VyZSBub3QKCWNvbnZlcnRlZCwgYnV0IHRoZW4gcHJvY2Vzc2VkIGFzIGNvbnZlcnRlZC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvRGEucmMsIHByb2dyYW1zL3dpbmhlbHAvRGUucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRW4ucmMsIHByb2dyYW1zL3dpbmhlbHAvRXMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRmkucmMsIHByb2dyYW1zL3dpbmhlbHAvRnIucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvSHUucmMsIHByb2dyYW1zL3dpbmhlbHAvSXQucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvS28ucmMsIHByb2dyYW1zL3dpbmhlbHAvUHQucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvU2sucmMsIHByb2dyYW1zL3dpbmhlbHAvU3cucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvVmEucmMsIHByb2dyYW1zL3dpbmhlbHAvV2EucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL3N0cmluZy5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmgsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscF9yZXMuaDoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJLSBDb252ZXJ0ZWQgV2luaGVscCBmb3IgdXNlIG9mIE5MUwoJLSBNaW5vciBidWdmaXgKCS0gRGlzYWJsZSBzdXBwb3J0IG9mIFZhLnJjIGZvciBub3cgKHJ1bWFudHNjaCBzd2lzcykKCjIwMDItMDUtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LCB1bmljb2RlL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLAoJICBsaWJyYXJ5L01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUFkZGVkIHNvbWUgc3VwcG9ydCBmb3IgY3Jvc3MtY29tcGlsYXRpb24gdXNpbmcgbWluZ3czMi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIGJlaGF2aW9yIG9mIFBsYXlTb3VuZCAoZXJyb3IgaGFuZGxpbmcsIHN5bmNocm9uaXphdGlvbikuCglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgdGVzdHMgYWJvdXQgd2luZG93cyBoYW5kbGVzLgoKMjAwMi0wNS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5zcGVjLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvd2luZW1pbmUuc3BlYywKCSAgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLnNwZWMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5zcGVjLAoJICBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywKCSAgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywKCSAgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuc3BlYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLnNwZWMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLnNwZWMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsCgkgIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5zcGVjLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuc3BlYywKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLnNwZWMsCgkgIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5zcGVjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYywgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3Rlc3RzL3dzMl8zMl90ZXN0LnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hsd2FwaV90ZXN0LnNwZWMsCgkgIGRsbHMvc25tcGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zdGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy90d2Fpbi9NYWtlZmlsZS5pbiwgZGxscy91cmwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy91c2VyMzJfdGVzdC5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlYXV0MzJfdGVzdC5zcGVjLAoJICBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLAoJICBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsCgkgIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywKCSAgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLAoJICBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGVzdHMva2VybmVsMzJfdGVzdC5zcGVjLAoJICBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL21zZzcxMS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbjoKCUFkZGVkIC1yZXMgb3B0aW9uIHRvIHNwZWNpZnkgcmVzb3VyY2VzIG9uIHdpbmVidWlsZCBjb21tYW5kLWxpbmUuCglBZGRlZCAtZXhlIG1vZGUgdG8gZ2VuZXJhdGUgYSAuc3BlYy5jIGZvciBhbiBleGUgd2l0aG91dCBoYXZpbmcgdG8KCXByb3ZpZGUgYSAuc3BlYy4KCVJlbW92ZWQgc29tZSBubyBsb25nZXIgbmVlZGVkIHNwZWMgZmlsZXMuCglSZW1vdmVkIC5kbGwgZXh0ZW5zaW9uIGluIG1ha2VmaWxlcyBpbXBvcnQgc3BlY2lmaWNhdGlvbnMuCgoJKiBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTGV0IE1DSSBkcml2ZXJzIHN1cHBvcnQgdGhlIHNlc3Npb24gaW5zdGFuY2UgbG9hZGluZyBtZWNoYW5pc20gKE5VTEwKCWxQYXJhbTIgaW4gTUNJX09QRU4pLgoKCSogaW5jbHVkZS93aW5lL29ial9jb21jYXQuaDoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUZpeGVkIHR5cG9zOyBhZGRlZCBzdGFuZGFyZCBDQVRJRF8ncy4KCgkqIG1lbW9yeS9pbnN0ci5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIHVzaW5nIE1hcFNMLCAzMi1iaXQgYWRkcmVzc2VzIGFyZSBubyBsb25nZXIgdHJ1bmNhdGVkIGludG8gMTYtYml0CglhZGRyZXNzZXMuCgoJKiBtc2Rvcy9kcG1pLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJhd01vZGVTd2l0Y2ggY2FuIG5vdyBiZSB1c2VkIHRvIHJldHVybiBEUE1JIGFwcGxpY2F0aW9uIGJhY2sgdG8KCXByb3RlY3RlZCBtb2RlLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQXZvaWQgZGVhZGxvY2sgaW4gVkdBX0RvU2V0TW9kZS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1ha2UgUFJPRklMRV9HZXRTdHJpbmcgYWNjb3VudCBmb3IgZGVmYXVsdCB2YWx1ZSBpbiBhbGwgY2FzZXMuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93ZWQgb3B0aW9ucyB0byBiZSBwdXQgYmV0d2VlbiBtb2RlIGtleXdvcmQgYW5kIG1haW4gYXJndW1lbnQuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBzZXNzaW9uIGluc3RhbmNlIGxvYWRpbmcgdG8gd2lubW0uCgoJKiBkbGxzL21zYWNtL2ltYWFkcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDcmVhdGVkIGFuIEFDTSBJTUEgQURQQ00gY29kZWMuCgoJKiBkbGxzL21zYWNtL2Zvcm1hdC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgaW4gYWNtRm9ybWF0VGFnRW51bVcuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDcmVhdGVkIHNlc3Npb24gaW5zdGFuY2UgZm9yIGluc3RhbGxhYmxlIGRyaXZlcnMuCglOb3cgcHJvcGVybHkgZnJlZWluZyBsaWJyYXJ5IHVwb24gZHJpdmVyIGV4aXQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgd2luMzIvbmV3Zm5zLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEZsdXNoSW5zdHJ1Y3Rpb25DYWNoZSBwcm90b3R5cGUuCgoJKiBzZXJ2ZXIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtaXNzaW5nIHdpbmVjb25zb2xlIG5vdGlmaWNhdGlvbiBvZiB0aXRsZSBtb2RpZmljYXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSm9yaXMgQmV1Z25pZXMgPGpvcmlzLmJldWduaWVzQHBhbmRvcmEuYmU+CglNYWtlIGRlZmluZXMgY29uZmlndXJhYmxlIGF0IHJ1bi10aW1lLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglMb2NrL3VubG9jayAoYW5kIGhlbmNlIG1heWJlIGNvZXJjZSkgRElCU2VjdGlvbnMgaW50byBHZGlNb2QgZHVyaW5nCgl0aGUgU2V0RElCaXRzIGFuZCBHZXRESUJpdHMgZnVuY3Rpb25zLCBiZWZvcmUgYWN0dWFsbHkgYWNjZXNzaW5nIHRoZSBYCglQaXhtYXAuCgoyMDAyLTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAyMDUwOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglCdWlsZCBhbiBleHBsaWNpdCBhcmd1bWVudCBzdHJ1Y3R1cmUgZm9yIG1tYXAgaW5zdGVhZCBvZiByZWx5aW5nIG9uCgl0aGUgc3RhY2sgbGF5b3V0LgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICB0b29scy93cmMvcHB5LnksIGNvbmZpZ3VyZToKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCURldGVjdCBzbnByaW50ZiAmJiBfc25wcmludGYsIHVzZSBfc25wcmludGYgb24gc3R1cGlkIHBsYXRmb3JtcwoJKHdpbmRvd3MpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJUmVtb3ZlZCBleHRyYSByZXR1cm4gc3RhdGVtZW50LgoKCSogaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwKCSAgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsCgkgIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194dXRpbC5jOgoJQWRkZWQgc29tZSAjaWZkZWZzIEhBVkVfWDExX1hMSUJfSCB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIEFOTk9VTkNFLCBSRUFETUUsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUZpeGVkIHNvbWUgd2luZWhxLmNvbSBVUkxzLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJQ29ycmVjdGVkIFJ0bENvbnZlcnRTaWRUb1VuaWNvZGVTdHJpbmcsIHN0dWIgZm9yIFZlclNldENvbmRpdGlvbk1hc2suCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglKYWtvYiBFcmlrc3NvbiA8amFrb2JAdm1saW51eC5vcmc+CglBZGRlZCBzb21lIG1vcmUgdGVzdHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbWNhdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2VudW1ndWlkLmgsIG9sZS91dWlkLmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgdGhlIENvbXBvbmVudCBDYXRlZ29yaWVzIE1hbmFnZXIuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL3Rlc3RzL3NobHdhcGlfdGVzdC5zcGVjLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbjoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglBZGRlZCBzb21lIHRlc3RzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVJlaW1wbGVtZW50ZWQgU0hSZWdHZXRQYXRoQS9XLCBTSEdldFZhbHVlQS9XLCBTSFJlZ0dldFBhdGhBL1cuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLAoJICBkbGxzL3NoZWxsMzIvZGVidWdobHAuaCwgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglNb3ZpbmcgdGhlIHBpZGwgZGVidWcgZnVuY3Rpb25zIHRvIGEgc2VwYXJhdGUgZmlsZSBhbmQgbWFkZSB0aGVtIHNlbGYKCWNvbnRhaW5lZC4gVGhpcyBwcmV2ZW50cyB1c2VsZXNzIHRyYWNlIG1lc3NhZ2VzIGdlbmVyYXRlZCBmcm9tIHRoZQoJZGVidWcgZnVuY3Rpb25zIHRoZW1zZWx2ZXMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW5pb2N0bC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVR5cGVzIGFuZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCU1ha2UgdXNlIG9mIGFjY2VzcyBtYXNrIE1BWElNVU1fQUxMT1dFRCBwb3NzaWJsZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglVc2Ugb25seSB3aW5hcGkgZnVuY3Rpb25zIGluIF9jb252ZXJ0X3dpbm50X3JlZ2lzdHJ5X3RvX3dpbmVfZm9ybWF0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgbWlzYy92ZXJzaW9uLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJU3R1YiBmb3IgVmVyaWZ5VmVyc2lvbkluZm9XLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJVXNlIGxvbmcgbmFtZXMsIG5vdCA4LjMgbmFtZXMgaW4gZW52aXJvbm1lbnQuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwKCSAgb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9pbnN0YWxsLXNoLAoJICB0b29scy9ta2luc3RhbGxkaXJzLCB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0c3gxMS9NYWtlZmlsZS5pbiwKCSAgdW5pY29kZS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUFkZGVkIG1raW5zdGFsbGRpcnMgdG8gY3JlYXRlIGRpcmVjdG9yaWVzIG1vcmUgcG9ydGFibHkuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsCgkgIGRsbHMvZ2RpL2RyaXZlci5jOgoJQWRkZWQgRXh0U2VsZWN0Q2xpcFJnbiB0byB0aGUgREMgaW50ZXJmYWNlIGFuZCBpbXBsZW1lbnRlZCBpdCBmb3IKCXN0YW5kYXJkIGFuZCBlbmhhbmNlZCBtZXRhZmlsZXMuCgoJKiB0b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL2NvbmZpZy5zdWI6CglVcGRhdGVkIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJVGhlcmUncyBubyBuZWVkIHRvIGNoZWNrIGZvciBkbG9wZW4gb24gY3lnd2luLgoKCSogY29udHJvbHMvbWVudS5jOgoJUml6c2FueWkgWnNvbHQgPHJpenNhbnlpQG15cmVhbGJveC5jb20+CglEaXNhYmxlZCBjYXRjaGluZyBvZiBtb3VzZSBtb3ZlIGV2ZW50cyB3aGVuIG5vdCBvdmVyIG1lbnUuCglDaGFuZ2VkIE1FTlVfU2VsZWN0SXRlbSBhbGxvdyBFbmRNZW51IHRvIGRlc2VsZWN0IHRoZSBzZWxlY3RlZCBtZW51LgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsCgkgIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjLAoJICBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuc3BlYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LnNwZWMsCgkgIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5zcGVjLAoJICBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3Quc3BlYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWMsIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvdmlldy5zcGVjLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLnNwZWMsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguc3BlYywgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbnZlci93aW52ZXIuc3BlYywgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubmxzL3dpbm5sczMyLnNwZWMsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3dzMl8zMl90ZXN0LnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLAoJICBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2V4cGFuZC5zcGVjLCBsaWJ0ZXN0L2hlbGxvLnNwZWMsCgkgIGxpYnRlc3QvaGVsbG8yLnNwZWMsIGxpYnRlc3QvaGVsbG8zLnNwZWMsIGxpYnRlc3QvaGVsbG80LnNwZWMsCgkgIGxpYnRlc3QvaGVsbG81LnNwZWMsIGxpYnRlc3QvbmV3LnNwZWMsIGxpYnRlc3Qvcm9sZXguc3BlYywKCSAgbGlidGVzdC92b2xpbmZvLnNwZWMsIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvd2luZS5zcGVjLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5zcGVjLAoJICBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uc3BlYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuc3BlYywgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc25tcGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zbm1wYXBpL3NubXBhcGkuc3BlYywgZGxscy9zdGkvTWFrZWZpbGUuaW4sIGRsbHMvc3RpL3N0aS5zcGVjLAoJICBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90d2Fpbi9NYWtlZmlsZS5pbiwgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLAoJICBkbGxzL3VybC9NYWtlZmlsZS5pbiwgZGxscy91cmwvdXJsLnNwZWMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvdXNlcjMyX3Rlc3Quc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywKCSAgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWF1dDMyX3Rlc3Quc3BlYywgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xY2FwL3FjYXAuc3BlYywKCSAgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsCgkgIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywKCSAgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9rZXJuZWwzMl90ZXN0LnNwZWMsIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIuc3BlYywKCSAgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9pbWFhZHAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNnNzExL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuZHJ2LnNwZWMsCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywKCSAgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLCBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLAoJICBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjLAoJICBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsCgkgIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywKCSAgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsCgkgIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLAoJICBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsCgkgIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsCgkgIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywKCSAgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsCgkgIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLAoJICBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsCgkgIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvZHBsYXkuc3BlYywKCSAgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sCgkgIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTW92ZWQgaW1wb3J0cyBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIC5zcGVjIGludG8gdGhlIE1ha2VmaWxlIHNvIHRoYXQKCWl0IGNhbiBiZSB1c2VkIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IGJ1aWxkIGEgLnNwZWMuYyBmaWxlLgoKMjAwMi0wNS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpeCB0aGUgV2luMzEgc3R5bGUgZmlsZSBkaWFsb2cgYm94LgoJLSBJZiB0aGVyZSBpcyBubyBmaWx0ZXIgZG9uJ3QgcHV0IGEgYmxhbmsgb25lIGluOyBpdCBkb2Vzbid0CgkgIHdvcmsgKGxlYXZlIGl0IE5VTEwpLgoJLSBDb3JyZWN0bHkgZmlndXJlIG91dCB3aGljaCBpcyB0aGUgY3VycmVudCBkcml2ZSBpbiB0aGUgY29tYm8gYm94LgoJLSBBZGQgRklYTUUgZm9yIHRoZSB2YXJpYWJsZSAiaW5pdGlhbCBkaXIiIGhhbmRsaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICB0b29scy9idWdfcmVwb3J0LnBsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglEaXJlY3QgYnVnIHJlcG9ydHMgdG8gV2luZSBidWd6aWxsYS4gU29tZSBvdGhlciBtaW5vciBkb2N1bWVudGF0aW9uCgljaGFuZ2VzLgoKCSogbGlicmFyeS9lcnJuby5jOgoJRG9uJ3QgbmVlZCB0byByZWZlcmVuY2UgZXh0ZXJuYWwgZXJybm8gc2luY2Ugbm9uLXJlZW50cmFudCBYbGliIGlzIG5vCglsb25nZXIgc3VwcG9ydGVkLgoKCSogTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluOgoJUnVuIG1ha2UgdGVzdCBmb3IgYWxsIHByb2dyYW1zIGJ5IGRlZmF1bHQuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYzoKCU1pY2hhZWwgV2V0aGVyZWxsIDxtaWtlLndldGhlcmVsbEBudGx3b3JsZC5jb20+CglGaXggaGFuZGxpbmcgb2YgdW5peCBhYnNvbHV0ZSBwYXRocyBpbiBET1NGU19HZXRGdWxsTmFtZSBhbmQKCUdldFNob3J0UGF0aE5hbWVBLgoJSGFuZGxlICcuLicgaW4gcGF0aHMgaW4gRFJJVkVfRmluZERyaXZlUm9vdC4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJUmVwbGFjZSBTRUxFQ1RPUl9BbGxvY0Jsb2NrIGFuZCBTRUxFQ1RPUl9GcmVlQmxvY2sgd2l0aCBzdGFuZGFyZCBXaW4xNgoJc2VsZWN0b3IgY2FsbHMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdSZXN0b3Jlci5wbCwKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ1NldC5zaDoKCVJhdWwgRGlhcyA8Y2hhb3NAc3dpLmNvbS5icj4KCS0gTWFrZSBwb3NzaWJsZSB0byBkaWZmIHJlZ2lzdHJ5IGluZm9ybWF0aW9uIHRoYXQgY29udGFpbnMKCSAgdGltZXN0YW1wcy4KCS0gQ3JlYXRlIHNhZmUgdGVtcCBmaWxlcyBpbiAvdG1wLgoKMjAwMi0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJRml4ZWQgZGxsIGNoZWNrIGZvciBjeWd3aW4uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgTlVMTCBwb2ludGVyIGNoZWNrIGluIENhbGxXaW5kb3dQcm9jMTYuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJRml4ZWQgdmlzIHJlZ2lvbiBoYW5kbGluZyBicm9rZW4gYnkgbGFzdCBjaGFuZ2UuCgoJKiBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDJmLmMsIGluY2x1ZGUvY2FsbGJhY2suaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIHN1cHBvcnQgZm9yIERQTUkgUmF3TW9kZVN3aXRjaC4KCgkqIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi93bmQuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jOgoJTW92ZWQgcGFydHMgb2YgdGhlIERDIGluaXRpYWxpc2F0aW9uIGFuZCBiaXRtYXAgc2VsZWN0aW9uIG91dCBvZiB0aGUKCWRyaXZlcnMgaW50byB0aGUgY29tbW9uIGNvZGUuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJUmVwbGFjZSBET1NGU19HZXRGdWxsTmFtZSB3aXRoIHdpbmVfZ2V0X3VuaXhfZmlsZV9uYW1lLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsLmNhcmRlbmFzQGxpbmRvd3MuY29tPgoJQ2FwIHdpbmRvdyBzaXplcyBhdCA2NTUzNS4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJQWRkZWQgY2hlY2sgZm9yIHN5cy9zeXNjdGwuaC4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCU9saXZpZXIgSG91Y2hhcmQgPGRvZ2lub3VAY2lPLnJnPgoJU3VwcG9ydCBmb3IgZ2V0dGluZyBtZW1vcnkgc2l6ZSBvbiBGcmVlQlNELgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJT2xpdmllciBIb3VjaGFyZCA8ZG9naW5vdUBjaU8ucmc+CglIYWNrIHRvIG1ha2UgU2V0RXZlbnROb3RpZmljYXRpb24gd29yay4KCjIwMDItMDUtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglGaXhlZCBoYW5kbGluZyBvZiBHZXRMb25nUGF0aE5hbWVBLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJSmFrb2IgRXJpa3Nzb24gPGpha29iQHZtbGludXgub3JnPgoJVGVzdHMgZm9yIF9sY3JlYXQsX2xsc2VlayBhbmQgX2xsb3BlbiBhZGRlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBoYWNrIHRvIG1ha2UgSW5zdGFsbFNoaWVsZCB2NiB3b3JrIGJldHRlci4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQlNUUnMgY2FuIGJlIE5VTEwsIGhhbmRsZSB0aGVtIHNlcGVyYXRlbHkuCgoJKiB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oOgoJRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRXaW5kb3dJbmZvLgoKCSogREVWRUxPUEVSUy1ISU5UUzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJVXBkYXRlIG9mIERFVkVMT1BFUlMtSElOVFMgdG8gcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZSBvZiBXaW5lLgoKMjAwMi0wNS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRE9TVk0gbm93IGV4cG9ydHMgRFBNSSBSYXcgTW9kZSBTd2l0Y2ggcm91dGluZS4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgY29uZmlndXJlOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJQ2hlY2sgZm9yIGFuZCB1c2UgY2hzaXplIGluc3RlYWQgb2YgZnRydW5jYXRlIGlmIHByZXNlbnQuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgY29ycmVjdCBmdWxsIHBhdGggcmV0dXJuZWQgd2hlbiBHZXRGdWxsUGF0aE5hbWUgc3VwcGxpZWQgYSBwYXRoCglyZWxhdGl2ZSBmcm9tIHRoZSByb290IG9mIHRoZSBkcml2ZSAnZWcgJ1x3aW5kb3dzXHN5c3RlbScuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVwYXRoLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jLCBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5zcGVjOgoJTWlrZSBXZXRoZXJlbGwgPG1pa2Uud2V0aGVyZWxsQG50bHdvcmxkLmNvbT4KCVV0aWxpdHkgdG8gY29udmVydCBiZXR3ZWVuIFVuaXggYW5kIFdpbmRvd3MgcGF0aHMgYXQgdGhlIGNvbW1hbmQKCWxpbmUuCgoJKiBmaWxlcy9zbWIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgTmV0QklPUyByZXNvbHV0aW9uIGZvciBVTkMgcGF0aG5hbWVzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVGVybWluYXRpbmcgRE9TIHByb2dyYW0gaW4gcmVhbCBtb2RlIG5vdyBjYWxscyBFeGl0VGhyZWFkIHdoaWNoIGlzCglleGFjdGx5IHdoYXQgdGVybWluYXRpbmcgaW4gcHJvdGVjdGVkIG1vZGUgZG9lcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVhbCBtb2RlIGludGVycnVwdCBoYW5kbGVyIG5vdyBoYW5kbGVzIGludGVycnVwdCAyMSBmdW5jdGlvbiAwQy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0phLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMva2VybmVsL25scy9qcG4ubmxzLCBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLAoJICBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuZHJ2LnNwZWMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvZGlzcHN0ZC5jLCBkbGxzL29sZWF1dDMyL2Rpc3B0eXBlLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9wcm9wZXJ0eWZyYW1lLmMsCgkgIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvYXBpLmMsCgkgIGRsbHMvc2hkb2N2dy9icm93c2VyLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2NvbWltcGwuYywgZGxscy9zaGRvY3Z3L2NvbWltcGwuaCwKCSAgZGxscy9zaGRvY3Z3L2Nvbm5lY3QuYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLAoJICBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL2NvbWltcGwuYywgZGxscy91cmxtb24vY29taW1wbC5oLCBkbGxzL3VybG1vbi9tb25pa2VyLmMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvd2lubW0vd2lubW1fSmEucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaSwKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9kdmRtZWRpYS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2tzcHJvcGVydHkuaCwgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLAoJICBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYzoKCVJlbW92ZWQgbW9yZSBjb2RlIGF0IEhpZGVub3JpJ3MgcmVxdWVzdC4KCjIwMDItMDUtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgQlVHUywgUkVBRE1FOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglVcGRhdGVkIGRvY3VtZW50YXRpb24sIG1vc3RseSBpbXByb3ZpbmcgYnVncyBoYW5kbGluZy4gRGlyZWN0IHVzZXJzIHRvCglCdWd6aWxsYS4KCgkqIGluY2x1ZGUvYXN5bmMuaCwgaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNUyBDIHJlbGF0ZWQgY2hhbmdlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJSW4gaW5pdGlhbCBkaWJzZWN0aW9uIGNyZWF0aW9uLCB0aGUgZGlic2VjdGlvbiBzaG91bGQgYWx3YXlzIGJlIGluCglhcHBtb2QgYmVjYXVzZSB0aGUgYXBwIG1lbW9yeSBpcyBpbml0aWFsaXplZCB0byB6ZXJvIGlmIG5vCglvZmZzZXQvc2VjdGlvbiBpcyBzcGVjaWZpZWQsIHdoaWxlIHRoZSBESUJpdG1hcCBpcyBub3QuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJTWFkZSB3aW5laW5zdGFsbCB0byBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gV2luZSBhcHBsaWNhdGlvbnMgaW4gZmFrZQoJV2luZG93cyBmb2xkZXJzLiBSZXBsYWNlZCB1c2FnZSBvZiBvYnNvbGV0ZSByZWdhcGkgd2l0aCByZWdlZGl0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVuIHJlZ2VkaXQgaW50ZXJwcmV0ZWQgZmlsZSBuYW1lcywgc3RhcnRpbmcgZnJvbSAnLycKCWFzIHN3aXRjaGVzLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3VwcG9ydCBmb3IgdGhlICd0aXRsZScgY29tbWFuZC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaW5kQ2xvc2U6IHByb3RlY3QgdGhlIEdsb2JhbExvY2sgZm9yIHBhZ2VmYXVsdHMgdG9vLgoKCSogdG9vbHMvd3JjL25ld3N0cnVjLmM6CglXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglTb2x2ZSBhbGlnbm1lbnQgcHJvYmxlbXMgYnkgY29udmVydGluZyBiaXRtYXAgaGVhZGVycyAqYWZ0ZXIqIHRoZXkKCWhhdmUgYmVlbiBjb3BpZWQgaW50byBhbiBhbGlnbmVkIGxvY2F0aW9uLCBhbmQgdGhlbiBjb3B5aW5nIHRoZQoJY29udmVydGVkIGhlYWRlciBiYWNrIG92ZXIgdGhlIG9yaWdpbmFsIGhlYWRlci4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURldGVjdCBhbmQgd2FybiBhYm91dCBidWdneSB2ZXJzaW9ucyBvZiBsaWJYcmVuZGVyLgoKMjAwMi0wNS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29sb3IuaCwgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJQ2xlYW5lZCB1cCBzb21lIGludGVyLWRsbCBkZXBlbmRlbmNpZXMgaW4gcGFsZXR0ZSBtYW5hZ2VtZW50LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQ2hhbmdlZCBidWcgcmVwb3J0IGFkZHJlc3MuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNb3ZlZCBkcmF3aW5nIG9mIG93bmVyLWRyYXduIHBhcnRzIHRvIGFmdGVyIHRoZSBiYWNrZ3JvdW5kIGFuZCBlZGdlLgoJQWxzbyBhZGRlZCBzb21lIGluZGVudGF0aW9uIHRvIHRoZSBjb2RlLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJVE9PTFRJUFNfR2V0VGlwVGV4dDogQWNjZXB0IG51bGwgbW9kdWxlIGluc3RhbmNlLCBMb2Fkc3RyaW5nIGNhbgoJaGFuZGxlIGl0LgoKCSogTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluOgoJSW5zdGFsbCBtb3JlIG9mIHRoZSBXaW5lbGliIHByb2dyYW1zIGJ5IGRlZmF1bHQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUFuZHJpeSBQYWxhbWFyY2h1aykuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglEbyBub3QgaW5zdGFsbCBobHAyc2dtbC4KCgkqIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy93aW5lcHMvYml0Ymx0LmMsIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3Blbi5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYzoKCVJlbW92ZWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIERDIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvZHNob3cuaDogQ29tbWVudGVkIG91dCByZW1vdmVkIGhlYWRlcnMuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2NvbWVudHJ5LmMsCgkgIGRsbHMvYXZpZmlsMzIvaWFmaWxlLmMsIGRsbHMvYXZpZmlsMzIvaWFzdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9pZ2ZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvbWFpbi5jLAoJICBkbGxzL2F2aWZpbDMyL3N0cmluZy5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsCgkgIGRsbHMvaW1tMzIvaW1tZGRrLmgsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9SRUFETUUsCgkgIGRsbHMvcXVhcnR6L2FjbXdyYXAuYywgZGxscy9xdWFydHovYW11bmRvYy5jLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLAoJICBkbGxzL3F1YXJ0ei9hc3luY3NyYy5oLCBkbGxzL3F1YXJ0ei9hdWRpb3V0bC5jLAoJICBkbGxzL3F1YXJ0ei9hdWRpb3V0bC5oLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYXVkcmVuLmgsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlwYXJzZS5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLCBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsCgkgIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmMsIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmMsIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmgsIGRsbHMvcXVhcnR6L2NzY29udi5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2RldmVudW0uaCwgZGxscy9xdWFydHovZW51bXVuay5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtdW5rLmgsIGRsbHMvcXVhcnR6L2ZnZXZlbnQuYywgZGxscy9xdWFydHovZmdwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwgZGxscy9xdWFydHovZmlsZXNpbmsuYywKCSAgZGxscy9xdWFydHovZmlsZXNpbmsuaCwgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmgsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWpnZGVjLmMsIGRsbHMvcXVhcnR6L2lqZ2RlYy5oLAoJICBkbGxzL3F1YXJ0ei9pbWNudGwuYywgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovaW1wb3MuYywKCSAgZGxscy9xdWFydHovaW1zZWVrLmMsIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXVuay5oLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsCgkgIGRsbHMvcXVhcnR6L21pZHBhcnNlLmMsIGRsbHMvcXVhcnR6L21qcGdkZWMuYywgZGxscy9xdWFydHovbXBhZGVjLmMsCgkgIGRsbHMvcXVhcnR6L21wZ3BhcnNlLmMsIGRsbHMvcXVhcnR6L21wdmRlYy5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLAoJICBkbGxzL3F1YXJ0ei9tdHlwZS5oLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmgsCgkgIGRsbHMvcXVhcnR6L3F0ZGVjLmMsIGRsbHMvcXVhcnR6L3F0cGFyc2UuYywgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei9yZWdzdnIuaCwgZGxscy9xdWFydHovc2FtcGxlLmMsIGRsbHMvcXVhcnR6L3NhbXBsZS5oLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5oLAoJICBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5oLAoJICBkbGxzL3F1YXJ0ei92aWRlb2JsdC5jLCBkbGxzL3F1YXJ0ei92aWRlb2JsdC5oLCBkbGxzL3F1YXJ0ei92aWRyZW4uYywKCSAgZGxscy9xdWFydHovdmlkcmVuLmgsIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmMsCgkgIGRsbHMvcXVhcnR6L3hmb3JtLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYW1hdWRpby5oLAoJICBpbmNsdWRlL2FtdmlkZW8uaCwgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvZXJyb3JzLmgsCgkgIGluY2x1ZGUvZXZjb2RlLmgsIGluY2x1ZGUvc3RybWlmLmgsIG9sZS91dWlkLmMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIHdpbmVkZWZhdWx0LnJlZzoKCVJlbW92ZWQgYSBidW5jaCBvZiBtdWx0aW1lZGlhIGNvZGUgYXQgSGlkZW5vcmkncyByZXF1ZXN0LgoKCSogaW5jbHVkZS91dWlkcy5oLCBpbmNsdWRlL3Zmd21zZ3MuaCwgaW5jbHVkZS93aW5yZXNyYy5oOgoJUmV3cm90ZSBzb21lIGhlYWRlcnMgZnJvbSBzY3JhdGNoIHRvIGF2b2lkIEVVTEEvcGF0ZW50IGNvbmNlcm5zLgoKMjAwMi0wNS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWM6CglSaXpzYW55aSBac29sdCA8cml6c2FueWlAbXlyZWFsYm94LmNvbT4KCUltcGxlbWVudGVkIElPQ1RMX1NDU0lfR0VUX0FERFJFU1MgZm9yIG5vbiB0cnVlIHNjc2kgY2Ryb20gZHJpdmVzCgkob25seSBvbiBsaW51eCkuCglJbml0aWFsaXplIHJlZ2lzdHJ5IHVuZGVyIEhLRVlfTE9DQUxfTUFDSElORS9IQVJEV0FSRS9ERVZJQ0VNQVAvU2NzaS4KCUFkZGVkIElPQ1RMX0NEUk9NX01FRElBX1JFTU9WQUwgc3VwcG9ydC4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAc2t5bmV0LmJlPgoJRml4ZWQgTnRRdWVyeUluZm9ybWF0aW9uUHJvY2VzcyB0byByZXR1cm4gY29ycmVjdCBpbmZvcm1hdGlvbiBhbmQKCWVycm9yIGNvZGUgZm9yIFByb2Nlc3NEZWJ1Z1BvcnQgd2hlbiBubyBkZWJ1Z2dlciBpcyBhdHRhY2hlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvbnRkZHNjc2kuaDoKCUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAc2t5bmV0LmJlPgoJSW1wbGVtZW50YXRpb24gb2YgSU9DVExfU0NTSV9QQVNTX1RIUk9VR0ggYW5kCglJT0NUTF9TQ1NJX1BBU1NfVEhST1VHSF9ESVJFQ1QuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywKCSAgZGVidWdnZXIvc3RhYnMuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQXR0ZW1wdCBhdCBmaXhpbmcgTUFYX1BBVEggaXNzdWVzIGZvciBtaW5ndy4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsLmNhcmRlbmFzQGxpbmRvd3MuY29tPgoJRml4ZWQgcXVvdGluZyBvZiBLREUgZGVza3RvcCBlbnRyeS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHNvdW5kLmg6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglEaXJlY3RTb3VuZEVudW1lcmF0ZUEoKSBub3cgcGFzc2VzIGEgR1VJRCB0byB0aGUgY2FsbGJhY2sgaWYgdGhlIGZpcnN0CgljYWxsIHJldHVybmVkIFRSVUUuCgoJKiB3aW4zMi9lZGl0bGluZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3QgYmVoYXZpb3VyIG9mIERFTCBrZXkgYmFjayB0byBkZWxldGluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIERPUyBwcm9ncmFtIGV4ZWN1dGVzIGFub3RoZXIgRE9TIHByb2dyYW0sIGNvbW1hbmQgbGluZSBpcyBub3cKCXBhc3NlZCBjb3JyZWN0bHkuIElmIERPUyBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcsIGNvbW1hbmQgbGluZSBpcyBub3cKCXRydW5jYXRlZCBpbnN0ZWFkIG9mIGxldHRpbmcgaXQgdHJhc2ggbWVtb3J5LgoKMjAwMi0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2VkaXRsaW5lLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBBZGRlZCBmOCAoaGlzdG9yeSByZXRyaWV2YWwgZnJvbSBwYXJ0aWFsIGNvbW1hbmQpIHN1cHBvcnQKCS0gRGVsZXRlIGtleSBkZWxldGVzIGN1cnJlbnQgY2hhcmFjdGVyCgktIEN0cmwgKyBlbmQgZGVsZXRlcyB0byBlbmQgb2YgbGluZQoJLSBDdHJsICsgcmlnaHQgc3RvcHBlZCBiZWZvcmUgdGhlIHdvcmQgaXRzZWxmCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy94MTFkcnYvLmN2c2lnbm9yZSwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLAoJICBkbGxzL3gxMWRydi93aW5lY2xpcHNydi5jLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglNb3ZlZCByZW1haW5pbmcgZmlsZXMgaW4gd2luZG93cy94MTFkcnYgdG8gZGxscy94MTFkcnYuCgoyMDAyLTA0LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdzdnIzMi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYywgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuc3BlYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcmVnc3ZyMzIgdG9vbC4gQmFzZWQgb24gUmVhY3RPUyBpbXBsZW1lbnRhdGlvbi4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIFN1cHBvcnQgZm9yIGRpciAvdyBhbmQgL2IgZmxhZ3MKCS0gRml4ZWQgYSBjb3VwbGUgb2YgdW5jbG9zZWQgRmluZEZpcnN0L0ZpbmROZXh0IHBhaXJzCgoJKiBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvaW1tZGRrLmgsIGRsbHMvaW1tMzIvbWFpbi5jLAoJICBkbGxzL2ltbTMyL21lbW9yeS5jLCBkbGxzL2ltbTMyL3N0cmluZy5jLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2ltbTMyL2ltYy5jLCBkbGxzL2ltbTMyL2ltZWtsLmMsIGRsbHMvaW1tMzIvaW1ld25kLmMsCgkgIGRsbHMvaW1tMzIvaW1tLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJUmVtb3ZlZCBzb21lIGNvZGUgYmVjYXVzZSBvZiBNUyBFVUxBIGNvbmNlcm5zLgoJUmV3cm90ZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFyY28gQml6emFycmkgPG0uYml6emFycmlAaWN1YmUuaXQ+CglJbXBsZW1lbnRlZCB0aGUgVEJfUkVQTEFDRUJJVE1BUCBtZXNzYWdlLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCURvbid0IHByZXBlbmQgJy0tJyB0byB0aGUgY29tbWFuZCBsaW5lIHdoZW4gc3RhcnRpbmcgYSBXaW5kb3dzIGJpbmFyeS4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJV3JpdGUgbWVudSBpbmZvcm1hdGlvbiB0byAvdXNyL2xpYi9tZW51L3dpbmUuCglUcnkgdG8gYXV0b2RldGVjdCBLREUgdmVyc2lvbiB1c2luZyBrZGUtY29uZmlnLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy93aW5pbmV0L2h0dHAuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jdGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnlwdDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dkaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaXN5cy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBGaXhlZCBwYXJzZXIgdG8gaGFuZGxlIEMvQysrIGNvbW1lbnRzIGluIHN0cmluZ3MuCgktIFJlcG9ydCBpZiBDKysgY29tbWVudHMgYXJlIHVzZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zbm1wYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc25tcGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zbm1wYXBpL21haW4uYywKCSAgZGxscy9zbm1wYXBpL3NubXBhcGkuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBTTk1QQVBJLkRMTC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWljcm9zb2Z0IEMgcmVsYXRlZCBjaGFuZ2VzLgoKCSogZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJlaW1wbGVtZW50ZWQgdGhlIGFzeW5jaHJvbm91cyBzb3VyY2UgZmlsdGVyLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCUpha29iIEVyaWtzc29uIDxqYWtvYkB2bWxpbnV4Lm9yZz4KCUFkZGVkIHVuaXQgdGVzdHMgZm9yIGZpbGUgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVtdWxhdGUgdGhlIGRvcyBjbWQgJ2NscycuCgoJKiBkbGxzL3dpbmVkb3MveG1zLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gZnJlZWluZyBYTVMgbWVtb3J5IGJsb2NrLCByZXR1cm4gYW4gZXJyb3IgaWYgYmxvY2sgaGFzIG5vdCBiZWVuCglwcmV2aW91c2x5IGFsbG9jYXRlZC4KCgkqIGRsbHMvdHdhaW4vZHNtX2N0cmwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSB0d2FpbiBjb21waWxlIGFnYWluLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgU3RhdHVzQmFyIFNldFRleHQgYWdhaW4sIGFkZGVkIHNvbWUgY29tbWVudHMuCgoyMDAyLTA0LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd3JjL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIHNlcnZlci9NYWtlZmlsZS5pbjoKCUxpbmsgdGhlIHRvb2xzIGFuZCB0aGUgc2VydmVyIGFnYWluc3QgbGlid2luZSBzbyB3ZSBjYW4gdXNlIHRoZQoJcG9ydGFiaWxpdHkgZnVuY3Rpb25zIGluIHRoZXJlLgoKCSogZGVidWdnZXIvZGJnLnksIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvcXVhcnR6L2lqZ2RlYy5jLAoJICBkbGxzL3R3YWluL2RzX2N0cmwuYywgZGxscy90d2Fpbi90d2Fpbi5oOgoJRml4ZWQgd2FybmluZ3MuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oOiBGcmVlQlNEIGNvbXBpbGUgZml4LgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgZGxscy93aW5zb2NrL3Rlc3RzL3dzMl8zMl90ZXN0LnNwZWM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJQWRkZWQgdW5pdCB0ZXN0IGZvciB3aW5zb2NrLgoKCSogc2VydmVyL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXhlcyB0byBGRF9DTE9TRSBoYW5kbGluZy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglTT19PUEVOVFlQRSBoYXMgdG8gYmUgYSBwZXItdGhyZWFkIHNldHRpbmcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2FkdmFwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2F2aWNhcDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2dkaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2ltbTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2tlcm5lbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zaW1nMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXNpc3lzX29jeC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGUzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVhdXQzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9ycGNydDQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2V0dXBhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2V0dXBhcGlfaC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGRvY3Z3LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZWxsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hsd2FwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS91cmxtb24ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZWFydHNfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmdkaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5pbmV0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm50LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnNwb29sX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW51c2VyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dzMl8zMi5wbToKCVVwZGF0ZWQgbW9kdWxlIGRlZmluaXRpb25zIGZvciBQZXJsIHVuaXQgdGVzdHMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX3N5bWJvbHM6CglBZGRlZCBwb3NzaWJpbGl0eSBvZiBzcGVjaWZ5aW5nIGEgbmFtZSBmb3IgdGhlIC5wbSBmaWxlIHRoYXQgY2FuIGJlCglkaWZmZXJlbnQgZnJvbSB0aGUgaGVhZGVyIG5hbWUuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BzdGQuYywgZGxscy9vbGVhdXQzMi9kaXNwdHlwZS5jLAoJICBkbGxzL3NoZG9jdncvYXBpLmMsIGRsbHMvc2hkb2N2dy9jb21pbXBsLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvdXJsbW9uL2NvbWltcGwuYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglBZGRlZCBzb21lIHNoZG9jdncgb3JkaW5hbHMgYW5kIHN0dWJzLgoJRml4ZWQgYSBmZXcgd2luYXBpX2NoZWNrIGlzc3Vlcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUFsd2F5cyBydW4gbGRjb25maWcgZXZlbiBpZiB3ZSBkb24ndCBjaGFuZ2UgbGQuc28uY29uZi4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglSb2JlcnQgTydDYWxsYWhhbiA8cm9iZXJ0QG9jYWxsYWhhbi5vcmc+CglGaXhlZCBidWcgaW4gVEVYVF9Xb3JkQnJlYWsgdGhhdCB3YXMgdmFyaW91c2x5IHRocm93aW5nIExvdHVzIE5vdGVzCglpbnRvIGFuIGluZmluaXRlIGxvb3Agb3IgY2F1c2luZyBpdCB0byBjcmFzaC4KCjIwMDItMDQtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywKCSAgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9vYmplY3QuYywKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLAoJICBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuYywgc2VydmVyL3dpbmRvdy5jLAoJICB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dpbmVkdW1wL21pc2MuYywgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywKCSAgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jLCB0b29scy93aW5lZHVtcC9zeW1ib2wuYywgdG9vbHMvd21jL3V0aWxzLmMsCgkgIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB3aW4zMi9jb25zb2xlLmMsCgkgIHdpbjMyL2VkaXRsaW5lLmMsIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXJsbW9uL2NvbWltcGwuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicmFyeS9wb3J0LmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLAoJICBvbGUvb2xlMm5scy5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3B0aHJlYWQuYywgc2VydmVyL2F0b20uYywgc2VydmVyL2NvbnNvbGUuYywgY29uZmlndXJlLmFjLAoJICBkZWJ1Z2dlci9leHRfZGVidWdnZXIuYywgZGVidWdnZXIvbWVtb3J5LmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NoZG9jdncvY29taW1wbC5jLCBjb25maWd1cmU6CglCZXR0ZXIgc3VwcG9ydCBmb3IgY29uZmlndXJlIGRldGVjdGlvbiBvZiBtaXNzaW5nIHR5cGVzLCBhZGRlZCBjaGVjawoJZm9yIHNzaXplX3QuCglSZW1vdmVkIGEgY291cGxlIG9mIG5vIGxvbmdlciB1c2VkIHBvcnRhYmlsaXR5IGZ1bmN0aW9ucy4KCVZhcmlvdXMgcG9ydGFiaWxpdHkgZml4ZXMgaW4gcG9ydC5oLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVcGRhdGUgdGhlIHF1ZXVlIGtleSBzdGF0ZSBldmVuIGlmIG5vIHdpbmRvdyBoYXMgdGhlIGZvY3VzIChzcG90dGVkIGJ5CglSaXpzYW55aSBac29sdCkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeGVkIHNvbWUgYnVncyBpbiBteSByZWNlbnRseSBzdWJtaXR0ZWQgcGF0Y2ggc2VyaWVzLgoKMjAwMi0wNC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCVBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglGaXhlZCBtaW5vciB0eXBvLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJRml4IGZvciBtaW5ndzMyLgoKCSogZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVVwZGF0ZWQgbGlzdHMgb2YgZGVidWdnaW5nIGNoYW5uZWxzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIFRyYW5zbWl0Q29tbUNoYXIuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXhlZCBSZWFkRmlsZSgpIHNlbWFudGljcyB3aGVuIHJlYWRpbmcgYXN5bmNocm9ub3VzbHkgb24gc29ja2V0cy4KCVByb3ZpZGUgbW9yZSBhY2N1cmF0ZSBzdGF0dXMgY29kZXMgdGhhbiBTVEFUVVNfVU5TVUNDRVNTRlVMLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L3BvcnQuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCU1vdmVkIF9fQVNNX0dMT0JBTF9GVU5DIG1hY3JvcyBhbmQgaW50ZXJsb2NrZWQgZnVuY3Rpb25zIHRvIHBvcnQuW2NoXQoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJSW1wbGVtZW50ZWQgb3ZlcmxhcHBlZCBXU0FSZWN2RnJvbSgpLCBXU0FTZW5kVG8oKSwgYW5kCglXU0FHZXRPdmVybGFwcGVkUmVzdWx0KCkuCglGaXhlZCBzaHV0ZG93bigpIHRvIHdvcmsgY29ycmVjdGx5IGZvciBvdmVybGFwcGVkIHNvY2tldHMgKGRvIG5vdAoJYWN0dWFsbHkgZG8gYSBzaHV0ZG93bigpIHN5c3RlbSBjYWxsIGFzIGxvbmcgYXMgdGhlcmUgYXJlIHBlbmRpbmcKCW92ZXJsYXBwZWQgcmVxdWVzdHMpLgoJQWxzbyBhZGRlZCBjb3JyZWN0IGVycm9yIHJlcG9ydGluZyB3aGVuIHRyeWluZyB0byByZWFkIG9yIHdyaXRlIG9uIGEKCXNodXQgZG93biBjb25uZWN0aW9uLCBhbHNvIGZvciBSZWFkRmlsZSgpL1dyaXRlRmlsZSgpIGNhbGxzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUltcGxlbWVudGVkIHNlcnZlciBmcmFtZXdvcmsgZm9yIGFzeW5jaHJvbm91cyBJTyBvbiBzb2NrZXRzLgoKMjAwMi0wNC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJTmV2ZXIgYWN0aXZhdGUgdGhlIHdpbmRvdyBvbiBTV19TSE9XTk9BQ1RJVkFURS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTm8gbG9uZ2VyIHRyeSB0byBzdXBwb3J0IG5vbi1yZWVudHJhbnQgWGxpYi4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2hlY2sgaHduZEluc2VydEFmdGVyIGlmIFNXUF9OT1pPUkRFUiBpcyBzZXQuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBZGRlZCBzdXBwb3J0IGZvciBpbnN0YWxsaW5nIGFuIGVycm9yIGNhbGxiYWNrIHdoZW4gZXhwZWN0aW5nIGFuIFgxMQoJZXJyb3IuCgoJKiBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvc2VyaWFsLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJQWRkIG1vcmUgZmxleGliaWxpdHkgdG8gdGhlIHF1ZXVlX2FzeW5jIHNlcnZlciBjYWxsIGJ5IG1vdmluZyBtb3N0CglmdW5jdGlvbmFsaXR5IGludG8gdGhlIG9iamVjdCdzIHF1ZXVlX2FzeW5jIG1ldGhvZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wcm92ZSBJX0lNQUdFQ0FMTEJBQ0sgaGFuZGxpbmcgYW5kIHN1cHBvcnQgSV9JTUFHRU5PTkUuCgktIEltcGxlbWVudCBUQk5fSE9USVRFTUNIQU5HRSBpbiB0aGUgbW91c2UgbW92ZSByb3V0aW5lLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWFyY2VsbyBXZWx0ZXIgPG1hcmNlbG9Ac3lzbW8uY29tLmJyPgoJRml4IHRvIG9sZCBEQ0IgZm9ybWF0IHBhcnNpbmcuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL3dzcHJpbnRmLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRmlyc3QgcmVncmVzc2lvbiB0ZXN0IGZvciB3c3ByaW50Zi4KCjIwMDItMDQtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuYWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS90c194cmVuZGVyLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL01ha2VmaWxlLmluLAoJICB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hyZW5kZXIuYywgY29uZmlndXJlOgoJTG9hZCBsaWJYcmVuZGVyIGF0IHJ1bi10aW1lIHdpdGggZGxvcGVuIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEh1dwoJRGF2aWVzKS4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeGVkIGhhbmRsaW5nIG9mIGRlZmVycmVkIGNvbm5lY3Rpb25zIGluIFdTQUFjY2VwdCgpLgoKCSogdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2Nhc2VtYXAuYywgdW5pY29kZS9jb21wb3NlLmMsCgkgIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jLCB1bmljb2RlL3djdHlwZS5jLAoJICB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDM3LmMsIHVuaWNvZGUvY18wNDIuYywKCSAgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywKCSAgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLAoJICB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywKCSAgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywKCSAgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywKCSAgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmMsCgkgIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsCgkgIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsCgkgIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsCgkgIHVuaWNvZGUvY18yODYwMC5jLCB1bmljb2RlL2NfMjg2MDMuYywgdW5pY29kZS9jXzI4NjA0LmMsCgkgIHVuaWNvZGUvY18yODYwNS5jLCB1bmljb2RlL2NfMjg2MDYuYywgdW5pY29kZS9jXzQyNC5jLAoJICB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsCgkgIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYywKCSAgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLAoJICB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsCgkgIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywKCSAgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYzoKCVVwZGF0ZWQgZm9yIFVuaWNvZGUgMy4yLgoJQWRkZWQgSVNPODg1OS0xNiBjb2RlcGFnZS4KCgkqIHRvb2xzL3dpbmVjb25mOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUZpbmQgbnRmcyBkcml2ZXMgYW5kIHN1cGVybW91bnQgY2Qtcm9tcy4KCUZpeCBmaW5kaW5nIG5vbi1zdXBlcm1vdW50IGNkLXJvbXMgbW91bnRlZCBhdCAvY2Ryb20uCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglTZWFyY2ggZm9yIHJlYWwtd2luZG93cyByZWdpc3RyeSBub3cgYWN0dWFsbHkgYWNjZXNzZXMgYSBmaWxlLgoJRmluZCBjbGVhbi1pbnN0YWxsIHdpbjJrIHJlZ2lzdHJ5LgoJRmluZCBjb3JyZWN0IHBhcnRpdGlvbiBvZiByZWFsIERyaXZlIEMgKG1vc3Qgb2YgdGhlIHRpbWUpLgoKCSogZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUF2b2lkIHNlZ2ZhdWx0IHdpdGggb3ZlcmxhcHBlZCBXcml0ZUZpbGUoKSBjYWxscy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBXTV9OT1RJRllGT1JNQVQgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IFdNX05PVElGWUZPUk1BVAoJLSBmaXggZ3JpcCBwYWludGluZwoJLSBtYWtlIHVzZSBvZiBEcmF3U3RhdHVzVGV4dCB0byBwYWludCBjb250cm9sCgoyMDAyLTA0LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGluY2x1ZGUvcmljaGVkaXQuaDoKCUNodWNrIENyYXluZSA8Y2NyYXluZUBjcmF5bmUub3JnPgoJLSBSZWNvZ25pemUgIlxuIiBhcyBhbiBhbHRlcm5hdGl2ZSBzb2Z0IGxpbmUgYnJlYWsgaW4gZnVuY3Rpb24KCSAgRURJVF9CdWlsZExpbmVEZWZzX01MIG9mIGVkaXQuYy4KCS0gTWFqb3IgcmVzdHJ1Y3R1cmluZyBvZiByaWNoZWRpdC5jIHRvIHByb3ZpZGUgYnVnIGZpeGVzLCBlbmhhbmNlZAoJICBmdW5jdGlvbiwgYW5kIGltcHJvdmVkIGRlYnVnIHN1cHBvcnQuCgoJKiB3aW5kb3dzL2RjZS5jOgoJQ2xlYXIgdGhlIERDIGRpcnR5IGZsYWcgYmVmb3JlIGNhbGxpbmcgU2V0RENTdGF0ZSB0byBhdm9pZCBzcHVyaW91cwoJdmlzIHJlZ2lvbiB1cGRhdGVzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEZpeGVkIHR5cG8gaW4gc3UgY29tbWFuZC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUEgYml0IG1vcmUgcm9idXN0IGFnYWluc3Qgd2F2ZT8/P09wZW4gZmFpbHVyZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL29zcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtdWx0aS10aHJlYWQgYWNjZXNzIHRvIGxvY2FsIHZhcmlhYmxlcyAobWFpbmx5IGZkIGZvcgoJL2Rldi9kc3ApLgoJR29kIHJpZCBvZiBvYnNvbGV0ZSBtYWNyby4KCUZpeGVkIHNvbWUgc2xpZ2h0IGluaXQgaXNzdWVzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIG1pc21hdGNoIGluIHdhdmVpbiAxNi8zMiBtYXBwaW5nLgoJUmVsYXhlZCBzb21lIHRlc3RzIGFib3V0IGJ1ZmZlciBsZW5ndGhzLgoKCSogZmlsZXMvZHJpdmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWx3YXlzIGNsb3NlIGZkIHdoZW4gcmVhZGluZyBzdXBlciBibG9jay4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeGVkIGN1dCZwYXN0ZSBidWcuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglSZW1vdmVkIGNvbnN0YW50cyB0aGF0IGFyZW4ndCBkZWZpbmVkIGluIFdpbmRvd3MuCgoyMDAyLTA0LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9kYy5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgdmlzaWJsZSByZWdpb24gaW4gU2F2ZS9SZXN0b3JlREMuCgoJKiBtc2Rvcy9pbnQxMy5jLCB3aW4zMi9kZXZpY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglNb3ZlZCBpbnQxMyBzdXBwb3J0IHRvIHRoZSBWV0lOMzJfRElPQ19ET1NfSU5UMTMgaW9jdGwuCglBZGRlZCBzdXBwb3J0IGZvciB0aGUgZmxvcHB5IHBhcmFtZXRlciB0YWJsZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZnJhbWV3b3JrIGZvciB0ZXN0aW5nIENyZWF0ZVByb2Nlc3MgYW5kIGEgZmV3IHRlc3RzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQ29ycmVjdGx5IGRldGVjdCB0aGUgcHJlc2VuY2Ugb2YgYSB3aW5lIGJpbmFyeS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogPHdpbmVAZ2MyLmtsb2VwZmVyLm9yZz4KCUZhc3RlciBzZXJpYWwgc3BlZWQgY2FzZXMgZm9yIG5vbiBMaW51eCBzeXN0ZW1zLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy91c2VyMzJfdGVzdC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgc2ltcGxlIHRlc3Qgc2V0IGZvciB3aW5kb3cgY2xhc3Nlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJVGhlIGV4dGVuc2lvbiBzaG91bGQgbm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgZGlzcGxheSBvZiBmb2xkZXIgbmFtZXMuCgoyMDAyLTA0LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL21hcHBpbmcuYzoKCUNsZWFyIG1hcHBpbmctPnNoYXJlZF9maWxlIG9uIGVycm9yLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJR2V0IHRoZSBsZGNvbmZpZyBjaGVjayB0byB3b3JrIGZvciBiYXNoIHNoZWxscy4KCgkqIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBPbGVJY29uVG9DdXJzb3IuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBGaXhlZCBtb3ZlIGFuZCBjb3B5IHdoZW4gbm8gZGVzdGluYXRpb24gc3VwcGxpZWQgKGFzc3VtZXMgJy4nIG5vdyBhcwoJICBwZXIgd2luZG93cykKCS0gRml4ZWQgbW92ZSBzbyB1c2VzIGZ1bGwgcGF0aCBuYW1lIGZvciBkZXN0aW5hdGlvbiBmaWxlLCBhbmQgaWYKCSAgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIHVzZXMgb3JpZ2luYWwgZmlsZW5hbWUuCgoJKiBkbGxzL3VzZXIvd3NwcmludGYuYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglDb3JyZWN0IGhhbmRsaW5nIG9mIHplcm8tcGFkZGVkIG5lZ2F0aXZlIG51bWJlcnM7IHRyYW5zZmVyIHRoZSBzaWduCglCRUZPUkUgYWRkaW5nIHRoZSB6ZXJvZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglIYW5kbGUgd2hlbiBsZGNvbmZpZyBpcyBub3Qgb24gdGhlIHBhdGgsIGFuZCBkbyBub3QgcnVuIGl0IHVudGlsIGFmdGVyCgl0aGUgbGliZGlyIGhhcyBiZWVuIHBvcHVsYXRlZC4KCgkqIHRvb2xzL3dpbmVjaGVjazoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglQcmV2ZW50IGVycm9yIG1lc3NhZ2UgaWYgTERfTElCUkFSWV9QQVRIIGlzIG5vdCBiZWluZyB1c2VkLgoJQ29tbWVudCBvdXQgdGhlIERFQlVHIG1lc3NhZ2UuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJR2V0IHRoZSBmb2xkZXIgYnJvd3NlciB0byB3b3JrIGFzIHdlbGwgd2l0aCBXIG5vdGlmaWNhdGlvbiBhcyBBIChpdAoJc2VlbXMgdG8gd29yayByZWFzb25hYmx5KS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJR0VUIEZVTkNUSU9OQUxJVFkvU1RBVEUgSU5GT1JNQVRJT046IFRoZSBpbnB1dCBwYXJhbWV0ZXIgRVM6REkgaXMgYQoJYnVmZmVyIHdoZXJlIGJpb3MgaW5mb3JtYXRpb24gKGFsbCB0aGUgVklERU9TVEFURSBzdHJ1Y3QpIG11c3QgYmUKCWNvcGllZCB0by4KCgkqIGluY2x1ZGUvd2luZS90ZXN0LmgsIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgQyB0ZXN0cyBhcmUgYWJsZSB0byBhY2Nlc3MgYXJnYy9hcmd2IGFzIHBhc3NlZCB0byB0aGUgcHJvZ3JhbS4KCjIwMDItMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglWR0FfaW9wb3J0X2luOiBGYWtlIHRoZSBvY2N1cnJlbmNlIG9mIHRoZSB2ZXJ0aWNhbCByZWZyZXNoIHdoZW4gbm8KCWdyYXBoaWMgbW9kZSBoYXMgYmVlbiBzZXQuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXZpcGFyc2UuYywKCSAgZGxscy9xdWFydHovaWpnZGVjLmMsIGRsbHMvcXVhcnR6L2lqZ2RlYy5oLCBkbGxzL3F1YXJ0ei9tanBnZGVjLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgTUpQRyBoYW5kbGVyLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglMZW8gdmFuIGRlbiBCZXJnIDxsZW9AY29ubmVjdHV4LmNvbT4KCUFkZGVkIHN0dWJzIGZvciBBYm9ydFN5c3RlbVNodXRkb3duW0FXXSBhbmQgUHJpdmlsZWdlQ2hlY2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJTm93LCB3ZSBhcmUgcmVhbGx5IGVyYXNpbmcgV1NfQ0FQVElPTiBzdHlsZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZS5wbSwgcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJQWRkZWQgb3B0aW9uIGZvciBhbm5vdW5jZW1lbnQgb2Ygc3VjY2Vzc2Z1bCB0ZXN0IHJlc3VsdHMuCgoyMDAyLTA0LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIE1ha2VmaWxlLmluOgoJRXhwb3J0IGEgZmV3IG1vcmUgMTYtYml0IEdESSBmdW5jdGlvbnMuIEZpbmlzaGVkIHdpbmVwcyBzZXBhcmF0aW9uLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnQgU0VUIElORElWSURVQUwgREFDIFJFR0lTVEVSIGFuZCBTRVQgQkxPQ0sgT0YgREFDIFJFR0lTVEVSUy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUHV0IHRoZSBNQ05fIGFuZCBEVE5fIGluIGNvcnJlY3Qgb3JkZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCUFkZCBtb3JlIGNoZWNrIGluc2lkZSBTQl9TRVRURVhUIGFuZCBTQl9HRVRURVhULgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGZvciBEcmF3U3RhdHVzVGV4dHtBLFd9LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCV9nZXRfc29ja19mZF90eXBlOiBOZXcgZnVuY3Rpb24sIHJldHJpZXZlIGZkIHR5cGUgYW5kIGZsYWdzIGxpa2UKCUZJTEVfR2V0VW5peEhhbmRsZVR5cGUoKS4KCVdTQVNlbmRUby9XU0FSZWN2RnJvbTogVXNlICBfZ2V0X3NvY2tfZmRfdHlwZSgpLgoKCSogZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUdldE92ZXJsYXBwZWRSZXN1bHQ6IFJldHVybiBFUlJPUl9JT19JTkNPTVBMRVRFIGlmIElPIHN0aWxsIHBlbmRpbmcuCglSZWFkRmlsZSAvIFdyaXRlRmlsZTogVXNlIEdldE92ZXJsYXBwZWRSZXN1bHQoKSB0byBjaGVjayBmb3IgaW1tZWRpYXRlCgljb21wbGV0aW9uLgoKMjAwMi0wNC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglGaXhlZCBzdHVwaWQgdHlwbyBpbiBwcmV2aW91cyBwYXRjaC4KCjIwMDItMDQtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2ZvbnQuYywgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi93aW4xNmRydi5oLCBkbGxzL3dpbmVwcy9mb250LmM6CglQYXNzIGEgUEhZU0RFViB0byBFbnVtRGV2aWNlRm9udCBhbmQgcmVsZWFzZSB0aGUgR0RJIGxvY2sgaW4KCUZPTlRfRW51bUluc3RhbmNlIGluc3RlYWQuCgoJKiBtaXNjL29wdGlvbnMuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUZpeGVkIGluaGVyaXRpbmcgY29tbWFuZC1saW5lIG9wdGlvbnMgZnJvbSBwYXJlbnQgcHJvY2Vzcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2FzeW5jLmg6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJLSBOZWVkIGEgImNsZWFudXAiIG1ldGhvZC4KCS0gY2FsbGluZyB0aGUgImNhbGxfY29tcGxldGlvbiIgbWV0aG9kIHVuY29uZGl0aW9uYWxseSBpbiBmaW5pc2hfYXN5bmMKCSAgKGludHJvZHVjZWQgYnkgbWUpIHdhcyB3cm9uZywgYmVjYXVzZSB0aGUgdGhyZWFkIG1heSBuZXZlciBiZSBpbiBhbgoJICBhbGVydGFibGUgd2FpdCBzdGF0ZSAtPiBjYWxsIGl0IG9ubHkgaWYgdXNlciBjb21wbGV0aW9uIGZ1bmN0aW9uIGlzIHByZXNlbnQuCgktIFdlIG5lZWQgdHdvIGNvbnN0YW50ICJvcHMiIG9iamVjdHMsIG9uZSB3aXRoIGFuZCBvbmUgd2l0aG91dCBjYWxsX2NvbXBsZXRpb24KCSAgbWV0aG9kICh0aGUgZXZlbnQgZmllbGQgbWF5IE5PVCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBjb21wbGV0aW9uCgkgIG11c3QgYmUgY2FsbGVkIG9yIG5vdCkuCgoJKiBzZXJ2ZXIvYXN5bmMuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglTVEFUVVNfQ0FOQ0VMTEVEIGlzIGNvcnJlY3QgZm9yIGNhbmNlbGxlZCByZXF1ZXN0cyAoY29ycmVzcG9uZHMgdG8KCUVSUk9SX09QRVJBVElPTl9BQk9SVEVEKS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CgktIENsZWFyIFdTX0NBUFRJT04gc3R5bGUuCgktIFNlbmQgbm93IENETl9GSUxFT0sgYmVmb3JlIEZJTEVPS1NUUklORy4KCS0gRml4IGJ1ZyByZWxhdGVkIHRvIERXTF9NU0dSRVNVTCAod2Ugd2VyZSByZWFkaW5nIGZyb20gd3JvbmcgaHduZCkuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9hY213cmFwLmMsCgkgIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9mbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21pZHBhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L21qcGdkZWMuYywgZGxscy9xdWFydHovbXBhZGVjLmMsIGRsbHMvcXVhcnR6L21wZ3BhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L21wdmRlYy5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmgsCgkgIGRsbHMvcXVhcnR6L3F0ZGVjLmMsIGRsbHMvcXVhcnR6L3F0cGFyc2UuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmgsCgkgIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJ1Z3MuCglBZGRlZCBzdHVicy4KCVJlbW92ZSBoYXJtbGVzcyBGSVhNRXMuCgoJKiB0b29scy93aW5lbWFrZXI6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4IHdpbmVtYWtlci1nZW5lcmF0ZWQgcmVmZXJlbmNlcyB0byBkbGxzIHRoYXQgaGF2ZSBjaGFuZ2VkIHRoZWlyIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IE5NX0NVU1RPTURSQVcgbm90aWZpY2F0aW9uLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFdoZW4gZHVtcGluZyBOTUNVU1RPTURSQVcsIHVzZSBjb3JyZWN0IHNpemUgZm9yIGEgVG9vbGJhci4KCS0gQWRkIG5vdGlmeSBuYW1lcyBmb3IgY29udHJvbHM6IHRvb2x0aXBzLCB1cGRvd24sIGNhbGVuZGFyLCBkYXRldGltZSwKCSAgaXAsIGFuZCBzdGF0dXMuCgoyMDAyLTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOgoJUmVsZWFzZSAyMDAyMDQxMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wNC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIC5jdnNpZ25vcmUsIE1ha2VmaWxlLmluOgoJQ2xlYW4gYXV0b200dGUuY2FjaGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1Jlc3RvcmVyLnBsLAoJICBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvUkVBRE1FLCBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvYWZ0ZXIucmVnLAoJICBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvYmVmb3JlLnJlZywgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL29yaWcucmVnLAoJICBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuc3BlYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglDcmVhdGVkIHJlZ2VkaXQgcmVwbGFjZW1lbnQuIEZpeGVkIHNvbWUgYnVncy4KCgkqIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL0NoYW5nZUxvZywgcHJvZ3JhbXMvcHJvZ21hbi9DaGFuZ2VMb2csCgkgIHByb2dyYW1zL3JlZ3Rlc3QvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywKCSAgcHJvZ3JhbXMvd2luaGVscC9DaGFuZ2VMb2csIHByb2dyYW1zL3dpbnZlci9DaGFuZ2VMb2c6CglSZW1vdmVkIGNoYW5nZWxvZyBlbnRyaWVzIHRoYXQgYXJlIGluIHRoZSBtYWluIGNoYW5nZWxvZywgYW5kIGFkZGVkCglub3RpY2UgdG8gbm90IGVkaXQgdGhlIHNlY29uZGFyeSBjaGFuZ2Vsb2dzIGFueW1vcmUuCgoJKiBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglDaHJpc3RvcGggRnJpY2sgPGZyaWNrQFNDLU5ldHdvcmtzLmRlPgoJUmV1c2UgdmlzdWFscyB0byBhdm9pZCBNQVhfUElYRUxGT1JNQVRTIGxpbWl0LgoJQWN0aXZhdGVkIHRoZSBjb2RlIHRvIHN1cHBvcnQgdGhlIHN0ZW5jaWwgYnVmZmVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGhhcmQtY29kZWQgZm9udCBuYW1lIGJpbmRpbmdzIG9ubHkgd2l0aCB0aGUgQU5TSV9DSEFSU0VUIChub24tVVMKCWNoYXJzZXRzIHdpdGggbm8gZm9udCBuYW1lIHNob3VsZG4ndCBiZSBib3VuZCB0byBVUyBjaGFyc2V0KS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglSZXR1cm4gZXJyb3IgY29kZXMgaW4gc29tZSAxNmJpdCBvbGUgc3R1YnMsIHJldHVybmluZyBzdWNjZXNzIGNhdXNlcwoJY3Jhc2hlcy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2Mvb3B0aW9ucy5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL3dpbnZlci93aW52ZXIuYywgd2luZG93cy9ub25jbGllbnQuYywgTWFrZWZpbGUuaW4sCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJVXBkYXRlZCBjb25maWd1cmUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IGF1dG9jb25mIDIuNTMgZmVhdHVyZXMuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9pbnQxMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDI5LmMsIGluY2x1ZGUvY29uc29sZS5oOgoJUmVtb3ZlZCBvYnNvbGV0ZSBjb25zb2xlIGRyaXZlci4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQWRkZWQgdGVzdCBmb3IgR2V0RnVsbFBhdGhOYW1lc0EsIEdldExvbmdQYXRoTmFtZXNBLAoJR2V0U2hvcnRQYXRoTmFtZXNBLCBHZXRDdXJyZW50RGlyZWN0b3J5QSwgU2V0Q3VycmVudERpcmVjdG9yeUEuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTSUNfR2V0SWNvbkluZGV4OiBzdGFydCBEUEFfU2VhcmNoIGZyb20gaW5kZXggMC4KCgkqIHVuaWNvZGUvd2N0b21iLmM6CgkndXNlZCcgc2hvdWxkIGJlIHNldCBldmVuIGlmIHdlIGFyZSBvbmx5IGNvbXB1dGluZyB0aGUgbmVjZXNzYXJ5CglidWZmZXIgc2l6ZS4KCgkqIGRsbHMvY3J5cHQzMi9tYWluLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglDb21waWxlIGZpeGVzIGZvciBnY2MgMi43LjIuMy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IExQU1RSX1RFWFRDQUxMQkFDSwoJLSBmaXggbWFueSBtZW1vcnktbWFuYWdlbWVudCBidWdzCgktIG1hbnkgVW5pY29kZSBmaXhlcwoJLSBmaXggaW5kZW50YXRpb24gaW4gYSBmZXcgcGxhY2VzCgktIGJpdHMgb2YgY29kZSBjbGVhbnVwCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmVkIG9ic29sZXRlIHRleHQgbW9kZSBjb2xvciBhbmQgYXR0cmlidXRlIGNvZGUuCglNYWRlIHJvdXRpbmVzIGZvciB0ZXh0IG1vZGUgc2NvbGxpbmcsIGNsZWFyaW5nIGFuZCBnZXR0aW5nIGNoYXJhY3RlcgoJYXQgY3Vyc29yIHVzZSBXaW5kb3dzIGNvbnNvbGUgYW5kIFZHQSBidWZmZXIuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglJbXBsZW1lbnRlZCBQcmludERsZ1cgYW5kIFBhZ2VTZXR1cERsZ1cuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglnZXRfd2luZG93X2NoaWxkcmVuOiBvbmx5IGRlY3JlbWVudCBhdmFpbGFibGUgc2l6ZSBpZiBlbGVtZW50IHdhcwoJd3JpdHRlbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxJU1RWSUVXX0dldENvbHVtblQ6IGNhcmUgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZy4KCUxJU1RWSUVXX0NyZWF0ZTogc2VuZCBIRE1fU0VUVU5JQ09ERUZPUk1BVCBtZXNzYWdlLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTUNJV25kQ3JlYXRlQTogY2hlY2sgZm9yIE5VTEwgZmlsZW5hbWUuCgoJKiBjb250cm9scy9lZGl0LmM6CglSaXpzYW55aSBac29sdCA8cml6c2FueWlAbXlyZWFsYm94LmNvbT4KCVNlbmRpbmcgRU5fVVBEQVRFIG5vdGlmaWNhdGlvbiBpbiB0aGUgRURJVF9XTV9TZXRUZXh0IC0gdGhlIGNvbW1lbnQKCWFscmVhZHkgc2F5cywgdGhhdCB0aGUgbWVzc2FnZSBpcyBzZW50LCBidXQgaXQgaXMgbm90Li4uCgoyMDAyLTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgbmV3IGNvbnNvbGUgb25seSBpZiB0aGUgcHJvY2VzcyBpcyBhIGNvbnNvbGUgYXBwbGljYXRpb24uCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHByb2JsZW0gd2l0aCBtb3VzZSBjdXJzb3JzIGluIFdvcmQuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgZXJhc2UgYmFja2dyb3VuZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGRvbid0IGhhbmRsZSBTVFJFVENIX0hBTEZUT05FIG1vZGUgeWV0OyBtYWtlIHRoaXMgZG8gdGhlIHNhbWUgYXMKCVNUUkVUQ0hfREVMRVRFU0NBTlMgZm9yIG5vdy4KCjIwMDItMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOgoJTmVlZCB0byBjaGVjayBmb3IgZm9jdXMgYW5kIGNhcHR1cmUgYWxzbyBvbiB0aGUgY2hpbGRyZW4gb2YgdGhlIHdpbmRvdwoJYmVpbmcgZGlzYWJsZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2lzeXMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2lzeXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNpc3lzL21zaXN5cy5jLAoJICBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQ3JlYXRlZCBhIHN0dWJiZWQgdmVyc2lvbiBvZiBNU0lTWVMuT0NYLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglTb21lIGFkZGl0aW9uYWwgdHJhY2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglJZiB3ZSBjYW4ndCBleHRyYWN0IHRoZSBpY29uLCBkZWZlciBsaW5rIGNyZWF0aW9uIHRvIHJ1bm9uY2UuCgoJKiBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglGaXhlZCBjb21waWxlIHdoZW4gSEFWRV9PUEVOR0wgaXMgbm90IGRlZmluZWQuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ1NfUEFSRU5UREMgc3R5bGUuCgoJKiBpbmNsdWRlL3VybG1vbi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgZXJyb3IgY29kZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vY29taW1wbC5jLAoJICBkbGxzL3VybG1vbi9jb21pbXBsLmgsIGRsbHMvdXJsbW9uL21vbmlrZXIuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGdldCByaWQgb2YgcGFyZW50IGhhbmRsZSBmcm9tIGluZm8gc3RydWN0CgktIHN0b3JlIGh3bmQgaW4gaW5mbyBzdHJ1Y3QsIGRvIG5vdCBwYXNzIGl0IGFyb3VuZAoJLSB1c2UgdW5pY29kZSBmdW5jdGlvbnMgd2hlcmV2ZXIgcG9zc2libGUKCS0gY29uc2lzdGVudCBpbmRlbnRhdGlvbgoJLSBidWdzIGluIFVuaWNvZGUgaGFuZGxpbmcgZml4ZWQKCS0gZml4IGhhbmRsaW5nIG9mIGVycm9yIGNvbmRpdGlvbnMKCS0gZml4IGluaXRpYWxpemF0aW9uIGJ1Z3MsIGV0Yy4KCS0gY29tcGxldGUgdG9vbHRpcCBzdXBwb3J0CgktIHR5cGVzYWZldHkKCS0gdXBkYXRlIHRoZSBGSVhNRSBsaXN0IHRvIHRoZSBsYXRlc3Qgc3BlY3MKCgkqIGluY2x1ZGUveDExZHJ2LmgsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCU1pY2hhZWwgS2FyY2hlciA8bWljaGFlbC5rYXJjaGVyQGRway5iZXJsaW4uZmlkby5kZT4KCUZpeGVkIE9wZW5HTCByb3V0aW5lcyBicm9rZW4gYnkgdGhlIERDIC0+IFBIWVNERVYgY2hhbmdlLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jeWd3aW5fbWFrZWZpbGVzOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUFkZGVkIGNvbW1lbnRzIGV4cGxhaW5nIGhvdyB0byB1c2UgY3lnd2luL21pbmd3L3dpbmUgaGVhZGVycy4KCUFkZGVkICdjbGVhbicgYW5kICdkaXN0Y2xlYW4nCglBZGRlZCBuZXcgb3B0aW9ucyAtcyBhbmQgLWkuCglBcmNoaXZlcyB3aWxsIG5vdyBpbmNsdWRlIHRoZSBlbnRpcmUgJy4vaW5jbHVkZScgZGlyZWN0b3J5IGluc3RlYWQgb2YKCWp1c3QgJy4vaW5jbHVkZS93aW5lJy4KCVJlbmFtZWQgbWFrZWZpbGUgZnJvbSBNYWtlZmlsZS5jeWcgdG8gTWFrZWZpbGUud2luLgoJVGhlIG1ha2VmaWxlIGlzIG5vdyBtaW5ndyBjb21wYXRpYmxlIGFzIHdlbGwgKGFsdGhvdWdoIGl0J3MgYmUgYmV0dGVyCglpZiB3ZSBjb3VsZCBkZXRlY3QgdGhlIGNvcnJlY3QgbG9jYXRpb24gb2YgdGhlIHdpbmRvd3MuaCBoZWFkZXJzKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gZml4IGluZGVudGF0aW9uCgktIGhhbmRsZSBhbGwgb3V0LW9mLW1lbW9yeSBjYXNlcwoJLSBiZXR0ZXIgZHJhd2luZyBjb2RlCgktIGZpeCBDQkVTX0VYX05PRURJVElNQUdFIGhhbmRsaW5nCgktIGltcGxlbWVudCBDQkVTX0VYX05PRURJVElNQUdFSU5ERU5UCgktIGltcGxlbWVudCBJX3tJTkRFTlQsSU1BR0V9Q0FMTEJBQ0sKCS0gZml4IG5vdGlmaWNhdGlvbiBjb2RlIGZvciBBTlNJL1VuaWNvZGUKCS0gbWFrZSB1c2Ugb2YgaU92ZXJsYXkgaW1hZ2UKCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglQYXVsIFJ1cGUgPHBydXBlQG5jLnJyLmNvbT4KCUFkZGVkIGtleW1hcCB0YWJsZXMgZm9yIFVTIGR2b3JhayBsYXlvdXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFsc28gI2luY2x1ZGUgPHN5cy91aW8uaD4uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvd2luLmluaToKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIHNhbXBsZSB3aW4uaW5pLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbXBhZGVjLmMsCgkgIGRsbHMvcXVhcnR6L21wdmRlYy5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX0phLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCByZXNvdXJjZXMgZm9yIEphcGFuZXNlLgoKCSogZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGNyYXNoaW5nIGluIHN0b3BwaW5nIHBhcnNlci4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGRlZmF1bHQgR1VJIGZvbnQgaW5zdGVhZCBvZiBoYXJkLWNvZGVkICdNUyBTYW5zIFNlcmlmJy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ29udmVydGVkICJyZWFkIHN0YW5kYXJkIGlucHV0IHdpdGggZWNobyIgaW50ZXJydXB0IHNlcnZpY2UgdG8gdXNlCgljb21tb24gRE9TVk0gY29uc29sZSBpbnB1dCByb3V0aW5lIGFuZCBtYWRlIHRoZSBzZXJ2aWNlIHJlYWxseSBlY2hvLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV3JpdGVzIHRvIHN0ZG91dCBhbmQgVkdBX1dyaXRlQ2hhcnMgcm91dGluZSBub3cgdXBkYXRlIGJvdGggVkdBCglidWZmZXJzIGFuZCBXaW5kb3dzIGNvbnNvbGUuCglBZGRlZCByb3V0aW5lIGZvciBjaGFuZ2luZyBjdXJyZW50IGNvbnNvbGUgYXR0cmlidXRlcy4KCU1vdmVkIHRleHQgbW9kZSBoYW5kbGluZyBmcm9tIFZHQV9Qb2xsIGludG8gbmV3IHJvdXRpbmUgYW5kIGNoYW5nZWQKCWxvY2tpbmcgcHJpbWl0aXZlIGludG8gY3JpdGljYWwgc2VjdGlvbi4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgYW4gb3ZlcmZsb3cgaW4gY2FsY3VsYXRpbmcgdGltZXMuCgoyMDAyLTA0LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZWRlZmF1bHQucmVnOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHJlZ2lzdHJ5IGVudHJpZXMgcmVxdWlyZWQgZm9yIElFIGluc3RhbGxlci4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaGFuZyBhcm91bmQgZm9yIGEgbWludXRlIGlmIHdlIGNhbid0IGV4ZWMgdGhlIGNsaXBib2FyZCBzZXJ2ZXIuCgoJKiB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBzb21lIFNlbmRNZXNzYWdlIHdpdGggU2VuZE5vdGlmeU1lc3NhZ2UgaW4gY2FzZSB0aGUgdGFyZ2V0Cgl3aW5kb3cgYmVsb25ncyB0byBhbm90aGVyIHRocmVhZC4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGV4aXQgc3RhdHVzIGluIHNvbWUgY2FzZXMuCgoJKiBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwb3V0IGEgRklYTUUgaWYgd2UgdHJ5IHRvIGNhbGwgRXh0VGV4dE91dCBvbiBhbiBvcGVuIHBhdGguCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBSZXNldERDIGFuZCBQSFlTSUNBTE9GRlNFVFtYfFldIGRldmNhcHMuCglGaXhlcyB0byBNZXJnZURldm1vZGVzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBkZWZhdWx0IHBhcGVyIHNpemUgdG8gbGV0dGVyLgoKCSogc2VydmVyL3Byb2Nlc3MuYzoKCUF2b2lkIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIGF0dGFjaCB0byBhIHRlcm1pbmF0aW5nIHByb2Nlc3MuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgUmVzZXREQy4KCjIwMDItMDQtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgRXh0RGV2aWNlTW9kZSBkaWFsb2cgdXNlIHVuaWNvZGUgcHJvcGVydHkgc2hlZXQgZnVuY3Rpb25zLgoKCSogd2luZWRlZmF1bHQucmVnOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUhLRVlfTE9DQUxfVVNFUiBzaG91bGQgYmUgSEtFWV9DVVJSRU5UX1VTRVIuCgoJKiBzZXJ2ZXIvYXN5bmMuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwvY29tbS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvYXN5bmMuaCwKCSAgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywKCSAgc2VydmVyL2FzeW5jLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJLSBzZXBhcmF0ZSBjbGVhbmx5IGJldHdlZW4gYXN5bmMgc2NoZWR1bGluZyBhbmQgZmlsZSBJTyByZWxhdGVkIGlzc3Vlcy4KCS0gbWFrZSB0aGUgQVBJIGNvbXBhdGlibGUgd2l0aCBvdGhlciB0eXBlcyBvZiBhc3luYyByZXF1ZXN0cyAoZS5nLiBmb3IKCSAgc29ja2V0cykuCgktIHJlbW92ZSBleHBvcnRzIG9mIGFzeW5jIElPIHJlbGF0ZWQgZnVuY3Rpb25zIGZvciBETEwgc2VwYXJhdGlvbi4KCgkqIG9iamVjdHMvZm9udC5jOgoJRml4ZWQgR2V0VGV4dEV4dGVudFBvaW50SSBkcml2ZXIgdXNhZ2UuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglNYWtlIHRoZSByZWN2KCkgYW5kIHNlbmQoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIHVzZSBXU0FSZWN2RnJvbSgpIGFuZAoJV1NBU2VuZFRvKCkuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglGaXhlZCBtaW5ndzMyIHdhcm5pbmcgYWJvdXQgc3RkY2FsbCBhbmQgZmFzdGNhbGwgYmVpbmcgcmVkZWZpbmVkLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQ2hlY2sgZm9yIE5VTEwgcG9pbnRlciBpbiBEcmF3VGV4dEV4QS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gZml4IGVkaXQgYm94IHBsYWNlbWVudAoJLSByZW9yZ2FuaXplIGRyYXdpbmcgZm9yIHByb3BlciBoYW5kbGluZyBvZiBlZGl0IGJveAoJLSB0eXBlc2FmZXR5IHdoZW4gcHJvY2Vzc2luZyBtZXNzYWdlcwoJLSBzdWJjbGFzcyBlZGl0IHRvIGhhbmRsZSB1cC9kb3duIGFycm93cwoJLSBtb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBmYWlsdXJlIGNhc2VzCgktIG51bWVyb3VzIGJ1Z3MgZml4ZWQKCS0gY29tcGxldGUgdW5pY29kaWZpY2F0aW9uCgktIG1vcmUgc3BlY2lmaWMgZGVidWcgbWVzc2FnZXMKCS0gcmVtb3ZlIGN2cyBsb2cgaW5mbyBmcm9tIGZpbGUKCS0gY29uc2lzdGVudCBpbmRlbnRhdGlvbgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIGRlZmluZXMgZm9yIHRoZSBOTVRCSE9USVRFTSBmbGFnIHdvcmQuCgktIEFkZCBkZWZpbmVzIGZvciB0aGUgTk1fQ1VTVE9NRFJBVyByZXR1cm4gZmxhZ3MgZm9yIHRvb2xiYXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFVzZSB0aGUgbmV3IGNvbWN0bDMyIGNvbG9yIGFycmF5IGZvciB0aGUgY29sb3JzLiBQcm92aWRlcyBiZXR0ZXIKCSAgc3VwcG9ydCBmb3IgdGhlIFRCX1NFVENPTE9SU0NIRU1FLgoJLSBEbyBzb21lIG9wdGltaXphdGlvbnMuCgktIENvcnJlY3QgY29tcHV0YXRpb24gb2YgbkhlaWdodCBhbmQgUEdOX0NBTENTSVpFLgoJLSBJbXBsZW1lbnQgdGhlIHVuZG9jdW1lbnRlZCAwNDVFIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEtlZXAgdHJhY2sgb2YgYWxsIHN5c3RlbSBjb2xvcnMgdXNlZCBieSBjb21jdGwzMi5kbGwuCgktIFByb3ZpZGUgcm91dGluZSB0byBzdXBwb3J0IHRoZSBXTV9TWVNDT0xPUkNIQU5HRSBtZXNzYWdlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkanVzdCB0aGUgY2hpbGQgb2Zmc2V0IHggdmFsdWUgYmFzZWQgb24gYmFuZCBzdHlsZSBSQkJTX0NISUxERURHRS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFRyeSB0byBtYXRjaCB0aGUgbmF0aXZlIGNvbnRyb2wgZm9yIHRoZSBTZXRCa0NvbG9yIG1lc3NhZ2UuCgktIENvcnJlY3QgcHJvY2Vzc2luZyBpbiBOQ0NhbGNTaXplIG1lc3NhZ2UgcHJvY2Vzc2luZy4KCjIwMDItMDQtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJRml4ZWQgY29tcGlsZSB3aXRob3V0IGZyZWV0eXBlLgoKMjAwMi0wNC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUNoYXJsZXMgTG9lcCA8Y2hhcmxlc0Bjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IGZvciBoaWRpbmcgZmlsZSBleHRlbnNpb25zIGluIElTaGVsbEZvbGRlcl9HZXREaXNwbGF5TmFtZU9mLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciBmYWlsdXJlIG9mIElTaGVsbEZvbGRlcl9HZXREaXNwbGF5TmFtZU9mLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvc2VsZWN0LmM6CglBZGRlZCB0aW1lciBvbiBzZXJ2ZXIgZXhpdCB0byB3YWl0IGEgYml0IGZvciBuZXcgY2xpZW50cy4KCURvbid0IHJlbW92ZSB0aGUgc29ja2V0IHVudGlsIHRoZSByZWdpc3RyeSBpcyBjbG9zZWQgdG8gYXZvaWQgYSByYWNlLgoKCSogZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGb3J3YXJkIEMrKyBmdW5jdGlvbnMgdG8gdGhlIG1zdmNydCBsaWJyYXJ5LgoKCSogZGxscy9nZGkvbWZkcnYvdGV4dC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSByZWN0IG9ubHkgaWYgdGhlcmUgYXJlIGZsYWdzLgoKCSogZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgd3JpdGluZyBNRVRBX0VTQ0FQRSByZWNvcmRzLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGVudW1lcmF0ZSB0aGUgTUVUQV9FT0YgcmVjb3JkLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgb2xkIEZGXyBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBvZmYgYnkgb25lIGVycm9yIGluIEhFQURFUl9JbnNlcnRJdGVtVy4KCgkqIGxpYnJhcnkvbG9hZGVyLmM6CglNYWtlIGRsb3Blbl9kbGwgcmV0dXJuIGFuIGVycm9yIGltbWVkaWF0ZWx5IGlmIHRoZSBsaWJyYXJ5IGV4aXN0cyBidXQKCWRsb3BlbigpIGZhaWxzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJZiBsZkZhY2VOYW1lID09ICIiLCB0aGVuIHdlIHBhdGNoIHVwIHRoZSBuYW1lcyBhY2NvcmRpbmcgdG8KCWxmUGl0Y2hBbmRGYW1pbHkuICBUaGlzIGlzIG5vdCB2ZXJ5IHByZXR0eSBJJ20gYWZyYWlkLi4uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBHZXRUZXh0RXh0ZW50UG9pbnRJIGFuZCBhZGQgc3VwcG9ydCBmb3IgRVRPX0dMWVBIX0lOREVYLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBjYWxjdWxhdGUgY2FjaGVkIG1ldHJpY3Mgb3IgZW51bWVyYXRlIFgxMSBmb250cyBpZiB3ZSdyZSB1c2luZwoJY2xpZW50IHNpZGUgZm9udHMuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGZvbnQgZW51bWVyYXRpb24uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGluY2x1ZGUvZm9udC5oLAoJICBvYmplY3RzL2dkaW9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmV3IGZvbnQgcHJvYmxlbXMgd2l0aCByb3RhdGVkIHRleHQgYW5kIG5vbiBNTV9URVhUIG1hcHBpbmcKCW1vZGVzLiBEbyBzbGlnaHRseSBiZXR0ZXIgd2l0aCB0aGUgRkZfIGZsYWdzIGluIFdpbmVFbmdHZXRUZXh0TWV0cmljcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIHdpbmVkZWZhdWx0LnJlZzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBmb250IHN1YnN0aXR1dGlvbiBsb29rdXAgaW4gdGhlIHJlZ2lzdHJ5LiAgV2UgbG9vayB1bmRlciB0aGUga2V5CglIS0xNXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIE5UXEN1cnJlbnRWZXJzaW9uXEZvbnRTdWJzdGl0dXRlcyBmb3IKCSJmcm9tTmFtZVssY3BdIj0idG9OYW1lWyxjcF0iIHdoZXJlIGNwIGNhbiBiZSBhbiBvcHRpb25hbCBjb2RlcGFnZS4KCVN1YnN0aXR1dGlvbiBvY2N1cnMgYmVmb3JlIHNjYW5uaW5nIHRoZSBhdmFpbGFibGUgZm9udCBsaXN0LCBhcyBpcyB0aGUKCWNhc2Ugd2l0aCBXaW5kb3dzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS9mb250LmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBHZXRHbHlwaEluZGljZXMuIFR3ZWFrIEdldENoYXJhY3RlclBsYWNlbWVudCB0byB1c2UgaXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUJldHRlciBjaGVjayBmb3IgLWxyZXNvbHYuIFJlbW92ZWQgRlJFRVRZUEVMSUJTLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb2FkIGxpYmZyZWV0eXBlLnNvIG9uIHRoZSBmbHkgd2l0aCBkbG9wZW4gYW5kIGZyaWVuZHMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVGhlIGhvcml6b250YWwgZGlhbG9nIGJhc2UgdW5pdCBpcyBjYWxjdWxhdGVkIGFzIHRoZSBzdHJhaWdodCBhdmVyYWdlCglvZiBhLXosQS1aICh0bUF2ZUNoYXJXaWR0aCBpcyBzdXBwb3NlZCB0byBiZSBhIHdlaWdodGVkIGF2ZXJhZ2UKCWFjY29yZGluZyB0byBjaGFyYWN0ZXIgdXNhZ2UsIHNvIHdlIHNob3VsZG4ndCB1c2UgdGhpcykuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGQgc3R1YiBmb3IgV1NBRW51bVByb3RvY29scyhBL1cpIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBsaWJmcmVldHlwZS5zbyBvbiB0aGUgZmx5IHdpdGggZGxvcGVuIGFuZCBmcmllbmRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlIFNoZWxsRXhlY3V0ZUV4IHRvIGFjdHVhbGx5IG9wZW4gdGhpbmdzIHdpdGggdGhlaXIgaGVscGVyCglhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBJbXBlcnNvbmF0ZUxvZ2dlZE9uVXNlciBzdHViLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaCwgZGxscy9zaGx3YXBpL3BhdGguYzoKCUF2b2lkIGxvY2FsIFdJTkFQSSBmdW5jdGlvbiBwb2ludGVycyB0byB3b3JrIGFyb3VuZCBnY2MgYnVnLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBkbGxzL3NldHVwYXBpL2RpcmlkLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLAoJICBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywgZGxscy93aW5lcHMvcGVuLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1hYWRwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVwcy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyOS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVkaXJlY3QgRE9TIHdyaXRlcyB0byBzdGRvdXQvY29uc29sZSB0byBET1NWTV9QdXRDaGFyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQ2xlYW5lZCB1cCBhIGJpdCwgcmVtb3ZlZCB0b2RvcyBmb3IgT3BlblRocmVhZCwgYXZvaWQgVGVybWluYXRlVGhyZWFkCglyYWNlLgoKMjAwMi0wNC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNwZWxsaW5nL2Vycm9yIG1lc3NhZ2VzIGZpeGVzLgoKCSogZGVidWdnZXIvc3RhYnMuYzogTW9yZSBwb3J0YWJsZSBzaWduYXR1cmUgY2hlY2suCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvY3B1LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGQgcmV0dXJuIHRyYWNlcyB0byBHbG9iYWxNZW1vcnlTdGF0dXMsIEdldFN5c3RlbUluZm8gYW5kIGZpeG1lIGluCglHZXRTeXN0ZW1JbmZvLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQWRkZWQgdGVzdCBmb3IgdGhyZWFkIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21ha2VfY3lnd2luX21ha2VmaWxlczoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCBwZXJsIHNjcmlwdCB3aGljaCB3aWxsIGJ1aWxkIGEgTWFrZWZpbGUgZm9yIHJ1bm5pbmcgQyB0ZXN0cyBvbgoJV2luZG93cyB0aHJvdWdoIEN5Z3dpbi9nY2MuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNvbXBpbGVzIG5vdyBldmVuIG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IERPUyBWTS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVXNlIEVOT01FRElVTSBlcnJubyBjb2RlIG9ubHkgd2hlbiBkZWZpbmVkLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGNvcnJlY3Qgbm90aWZpY2F0aW9ucwoJLSBiZWhhdmlvdXIgY2xvc2VyIHRvIG5hdGl2ZQoJLSBiZXR0ZXIgZHJhd2luZwoJLSBtdWx0aXBsZSBidWdzIGZpeGVkCgktIGZhc3RlciAmIGNsZWFuZXIgY29kZQoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0d28gY29tcGlsYXRpb24gd2FybmluZ3MuCgoJKiBpbmNsdWRlL250ZGRrLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVjbGFyZSBzd3ByaW50Zi4KCgkqIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglGaXhlZCBjcmFzaCBpbiBCaXRCbHQgd2hlbiBzb3VyY2UgREMgaXMgTlVMTC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW46CglWYXJpb3VzIG1ha2VmaWxlIGZpeGVzIGZvciB0aGUgdGVzdCBlbnZpcm9ubWVudC4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvZGlyaWQuYywKCSAgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywKCSAgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLAoJICBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsCgkgIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBpbmNsdWRlL3NldHVwYXBpLmgsCgkgIGluY2x1ZGUvd2lubnQuaDoKCUltcGxlbWVudGVkIGEgbGFyZ2UgbnVtYmVyIG9mIHRoZSAzMi1iaXQgc2V0dXBhcGkgZnVuY3Rpb25zLgoJRml4ZWQgYSBudW1iZXIgb2Ygc2V0dXB4IGZ1bmN0aW9ucyBieSBtYWtpbmcgdGhlbSBjYWxsIHRoZSBzZXR1cGFwaQoJZXF1aXZhbGVudHMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc3VzcGVuZCBhIHRlcm1pbmF0ZWQgdGhyZWFkLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHNpZ24gZXh0ZW5zaW9uIGluIG1lc3NhZ2UgbWFwcGluZyByb3V0aW5lcy4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJQXZvaWQgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gYXR0YWNoIHRvIGEgdGVybWluYXRpbmcgcHJvY2Vzcy4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBoYW5kbGluZyBvZiBhIGRsbCBiZWluZyBsb2FkZWQgYXQgdGhlIHNhbWUgYWRkcmVzcyBhcyBhIHByZXZpb3VzCglvbmUuCgoJKiBvYmplY3RzL2RjLmM6IEF2b2lkIHJlY3Vyc2l2ZSBEZWxldGVEQyBjYWxscy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJTWFrZSBHZXRGdWxsUGF0aE5hbWUgZmFpbCBpZiBpbnB1dCBwYXRoIG5hbWUgaXMgZW1wdHkuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBjYWxsIExvYWRMaWJyYXJ5LgoJV29ya2Fyb3VuZCBhIGJyb2tlbiBiZWhhdmlvdXIgb2YgdGhlIDE2LWJpdCBsb2FkZXIuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOgoJRml4ZWQgbGVuZ3RoIGhhbmRsaW5nIGluIFJ0bFVuaWNvZGVTdHJpbmdUb0Fuc2kvT2VtU3RyaW5nLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBfbWJzbmJpY21wLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGUgc2VjdXJpdHkgZGVzY3JpcHRvciBpcyBpbml0aWFsaXplZCBpbiBSZWdHZXRLZXlTZWN1cml0eS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglDaGVjayBFTEYgc2lnbmF0dXJlIGJlZm9yZSBwcm9jZXNzaW5nIGZpbGUuCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBOVUxMIG1lbnUgaXRlbXMgdG8gc2VwYXJhdG9ycy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglJbXBsZW1lbnQgT3BlblRocmVhZCgpIHdpbmFwaSBjYWxsLgoJSW1wbGVtZW50IGEgZmV3IHB0aHJlYWRzIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdXNlIG9mIE1TQUNNIGRyaXZlciBkZWZpbml0aW9ucy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIHdpbmUvdGVzdC5oIGJlZm9yZSB3aW5kb3dzIGhlYWRlcnMuCglBZGQgZGVmaW5pdGlvbnMgZm9yIElESV9BUFBMSUNBVElPTkEgYW5kIElEQ19BUlJPV0EgZm9yIFdpbmRvd3MuCglGaXggYSBjaGVjayBpbiB0aGUgU1BJX3tHRVQsU0VUfUJPUkRFUiB0ZXN0LgoJRml4IGJhZCBjb3B5L3Bhc3RlIGluIHRoZSBTUElfe0dFVCxTRVR9Qk9SREVSIHRlc3QuCglVc2UgZXEgbWFjcm8gdG8gcHJpbnQgdmFsdWVzIHdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSB0ZXN0aW5nIGZyYW1ld29yayB0aHJlYWQgc2FmZS4KCjIwMDItMDQtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgbGlicmFyeS9wb3J0LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGZvciBMaW51eCwgRnJlZUJTRCBhbmQgU29sYXJpcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUdvdCByaWQgb2YgI2lmZGVmIFVTRV9TVEFCUy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9uIFNvbGFyaXMgaW5ldF9hdG9uIGlzIGV4cG9ydGVkIGJ5IGxpYnJlc29sdi5zby4KCgkqIGRsbHMvbXN2Y3J0L21hdGguYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIEZQX1BOT1JNIGNhc2UuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgYSBjb3VwbGUgb2Ygbm93IG9ic29sZXRlIEZJWE1Fcy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVncyBpbiBmaXJzdCBjaGFuY2UgZXhjZXB0aW9uIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vcmUgcm9idXN0IGFuZCBsZXNzIHRpbWUgY29uc3VtaW5nIHBsYXliYWNrLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2l6ZSBvZiBidWZmZXJzIGluIGNvbnZlcnNpb24uCgoJKiB3aW4zMi9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHdyaXRpbmcgbXVsdGlsaW5lIGJsb2NrIHdoaWxlIHdyYXBwaW5nIGVuYWJsZWQuCglGaXhlZCBzdGFydHVwIGluZm9ybWF0aW9uIHJlYWRpbmcgKGNvbnNvbGUgc2l6ZSkuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbW9kdWxlIG1hcHBpbmcgZm9yIGRlYnVnIGluZm8gd2hlbiBQRSBzZWN0aW9uIGlzIGNvbXByZXNzZWQuCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsCgkgIGluY2x1ZGUvd2luc29jay5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb3IgdGhlIHVuaXN0ZC5oIHZzLiB3aW5zb2NrLmggcHJvYmxlbSBpbiBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCVJlZmluZSB0aGUgV1NfREVGSU5FX0hUT05MIGRlZmluaXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLnBsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGJvdGhlciB3aXRoIGRlY2xhcmUsIGp1c3QgJ3VzZSBrZXJuZWwzMicuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIGhlYWRlcnMgbXVzdCBiZSBpbmNsdWRlZCBhZnRlciB3aW5lL3Rlc3QuaC4KCgkqIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYWNtd3JhcC5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLAoJICBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbXBncGFyc2UuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJ1Z3MuCglJbXBsZW1lbnRlZCBzb21lIG1ldGhvZHMgb2YgQ0xTSURfQUNNV3JhcHBlci4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZGlzcHN0ZC5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3B0eXBlLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBDcmVhdGVTdGREaXNwYXRjaCBhbmQgQ3JlYXRlRGlzcFR5cGVJbmZvLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGltcGxlbWVudCBVRFNfSE9UVFJBQ0sKCS0gaW1wbGVtZW50IE5NX1JFTEVBU0VEQ0FQVFVSRQoJLSBpbXBsZW1lbnQgVURNX1tHU11FVFVOSUNPREVGT1JNQVQKCS0gZ2V0IHJpZCBvZiBXTV9OQ0NSRUFURSBwcm9jZXNzaW5nCgktIHVzZSBJbnZhbGlkYXRlUmVjdCBpbnN0ZWFkIG9mIGEgc3luY2ggcmVmcmVzaAoJLSBpbXBsZW1lbnQgYXV0byBhdXRvIGFycm93IHByZXNzIG9uIGtleSBwcmVzc2VzCgktIG1vcmUgY29kZSBjbGVhbnVwcwoJLSBiZXR0ZXIgZHJhd2luZywgY2xvc2VyIHRvIG5hdGl2ZQoKCSogaW5jbHVkZS93aW51c2VyLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgdGhlIERGQ1Nfe0hPVCxUUkFOU1BBUkVOVH0gZGVmaW5pdGlvbnMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglQcmV2ZW50IHRoZSB1c2VyIGZyb20gcnVubmluZyB3aW5laW5zdGFsbCBhcyByb290LCBhZGQgc2NyaXB0IGNvbW1hbmRzCglzbyB3ZSAnc3Ugcm9vdCcgZm9yIGluc3RhbGxpbmcgYW5kIG90aGVyIGNvbW1hbmRzIHRoYXQgcmVxdWlyZSByb290CglhY2Nlc3MuICBGaXggbW9kaWZpY2F0aW9uIHRpbWUgY29tcGFyaXNvbiBvZiB3cm9uZyBmaWxlLiAgQWRkZWQKCW1pc3Npbmcgc2VkIGxpbmUuIEFsd2F5cyAnbWFrZScgYmVmb3JlIHdlIHJ1biBtYWtlIGluc3RhbGwgc28gbm8gYnVpbGQKCWZpbGVzIGJlY29tZSBvd25lZCBieSByb290LgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSb3V0aW5lIERPU1ZNX1dhaXQgbm93IHdha2VzIHVwIGlmIG5ldyBldmVudHMgYXJlIHF1ZXVlZCBhbmQgaXQKCXJldHVybnMgaWYgaXQgcHJvY2Vzc2VkIGFueSBxdWV1ZWQgZXZlbnRzLgoKMjAwMi0wMy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTW9yZSByb2J1c3QgbGlic2FuZSBjaGVjay4KCgkqIHdpbjMyL2NvbnNvbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUhhY2sgdG8gbWFrZSB3aW5lY29uc29sZSB3b3JrIGFnYWluLgoKMjAwMi0wMy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5oOgoJRml4ZWQgY29tcGlsZSB3aXRob3V0IGN1cnNlcy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVRyYW5zZmVyIHRoZSBmdWxsIHByb2Nlc3Mgc3RhcnR1cCBpbmZvIGFzIHdlbGwgYXMgdGhlIGNvbW1hbmQtbGluZQoJdGhyb3VnaCB0aGUgc2VydmVyLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBMb2FkIGNsYXNzZXMuZGF0IHRvby4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglNYWtlIHN1cmUgdGhlIGltcG9ydCBkaXJlY3RvcnkgaXMgbm90IGluIHNoYXJlZCBtZW1vcnkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLAoJICB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTZXRGaWxlQXR0cmlidXRlcyB0byBob25vciB0aGUgdW1hc2sgKHJhdGhlciB0aGFuIG1ha2luZyBmaWxlcwoJd29ybGQtd3JpdGFibGUpLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZpeGVkIHdpbmVsYXVuY2hlciBmb3IgbmV3IGRsbCBmaWxlcyBsYXlvdXQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCVVzZSBFeGl0UHJvY2VzcyB0byB0ZXJtaW5hdGUgdGhlIGFwcGxpY2F0aW9uLgoKCSogbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWljaGFsIFBhc3Rlcm5hayA8bXBhc3Rlcm5ha0BsdWJsaW4udDEucGw+CglGaXhlZCBwYWNrL3VucGFjayByb3V0aW5lcyBmb3IgV01fRERFX0VYRUNVVEUuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzoKCUZpeGVkIHBhY2svdW5wYWNrIHJvdXRpbmVzIGZvciBXTV9EREVfRVhFQ1VURS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglVcGRhdGVkIGZvciBuZXcgZGxsIG5hbWVzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgbWFwcGluZyBmb3IgZXJybm8gRU5PTUVESVVNIHRvIFNUQVRVU19OT19NRURJQV9JTl9ERVZJQ0UuCgoyMDAyLTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglSZW1vdmVkIGNhbGwgdG8gRElCX0dldERJQldpZHRoQnl0ZXMuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsCgkgIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2JpdG1hcC5oLAoJICBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2JpdG1hcC5jLAoJICBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy90ZXh0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9tZmRydi9kYy5jLAoJICBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L21hcHBpbmcuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9tZmRydi90ZXh0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2JydXNoLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3Blbi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi90ZXh0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLAoJICBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3dpbmVwcy9iaXRibHQuYywKCSAgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsCgkgIGRsbHMvd2luZXBzL2NvbG9yLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsCgkgIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLAoJICBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VzY2FwZS5jLAoJICBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L21hcHBpbmcuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9wcmludGRydi5jOgoJQ2hhbmdlZCB0aGUgR0RJIGRyaXZlciBpbnRlcmZhY2UgdG8gcGFzcyBhbiBvcGFxdWUgUEhZU0RFViBwb2ludGVyCglpbnN0ZWFkIG9mIGEgREMgc3RydWN0dXJlLgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgREMgc3RydWN0dXJlIGZyb20gdGhlIGRyaXZlcnMuCglHb3QgcmlkIHRoZSBiaXRtYXAgZHJpdmVyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJRG9uJ3Qgc3RyaXAgb3V0IC5leGUgZXh0ZW5zaW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIGRlY2xhcmF0aW9uIG9mIHRoZSBEaXNjb25uZWN0TmFtZWRQaXBlIGNhbGwuCgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jOgoJTWFyY28gUGlldHJvYm9ubyA8cGlldHJvYm9AcGlldHJvYm8uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgMTZiaXQgbW91c2UgY3Vyc29yIGJpdG1hcHMgaW4gUkdCIDU2NSBmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gdXBkb3duIHVuaWNvZGlmaWNhdGlvbgoJLSBiZXR0ZXIvY2xlYW5lciBidWRkeSBoYW5kbGluZwoJLSBmZXcgYnVncyBmaXhlZAoJLSBtb3JlIHRlc3RpbmcKCS0gY29uc2lzdGVudCBpbmRlbnRhdGlvbgoKCSogY29udHJvbHMvbWVudS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWVudUl0ZW1Gcm9tUG9pbnQ6IHJvdWdoIGltcGxlbWVudGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdDoKCU5lZWQgdG8gc2V0IFdJTkVETExQQVRIIHRvby4KCjIwMDItMDMtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlOiBBZGRlZCBhbGxvYy5vay4KCgkqIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svRGEucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0RlLnJjLCBwcm9ncmFtcy9jbG9jay9Fbi5yYywgcHJvZ3JhbXMvY2xvY2svRXMucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0ZpLnJjLCBwcm9ncmFtcy9jbG9jay9Gci5yYywgcHJvZ3JhbXMvY2xvY2svUHQucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1NrLnJjLCBwcm9ncmFtcy9jbG9jay9Tdy5yYywgcHJvZ3JhbXMvY2xvY2svVE9ETywKCSAgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnJjLAoJICBwcm9ncmFtcy9jbG9jay9jbG9ja19yZXMuaCwgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywKCSAgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLAoJICBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUNvbnZlcnRlZCB0byB1c2Ugb2YgTkxTLgoKCSogaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9tZmRydi9kYy5jLAoJICBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L21hcHBpbmcuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9tZmRydi90ZXh0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2JydXNoLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywgZGxscy9nZGkvd2luMTZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBkbGxzL2dkaS93aW4xNmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3Blbi5jLCBkbGxzL2dkaS93aW4xNmRydi9wcnRkcnYuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvdGV4dC5jLCBkbGxzL2dkaS93aW4xNmRydi93aW4xNmRydi5oOgoJTW92ZWQgbWV0YWZpbGVzIGFuZCB3aW4xNiBkcml2ZXJzIHRvIGRsbHMvZ2RpLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmM6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQWRkZWQgbWVtb3J5IGFsbG9jYXRpb24gdGVzdC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJZndyaXRlOiBmaXhlZCBoYW5kbGluZyBvZiBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEuCgoyMDAyLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjLCBkbGxzL2dkaS9nZGkuc3BlYywKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLAoJICBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy91c2VyL3VzZXIuc3BlYzoKCVJlbmFtZWQgc29tZSAxNi1iaXQgc3BlYyBmaWxlcyB0byBtYXRjaCB0aGUgZGxsIG5hbWUuCgoJKiBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywKCSAgaW5jbHVkZS9tc2FjbS5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJLSBDb252ZXJ0ZWQgSEFDTU9CSiB0byB2b2lkKgoJLSBhY21NZXRyaWNzMTYgY2FsbHMgYWNtTWV0cmljcyBvbmx5IGlmIGhhbyBpcyBOVUxMCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJRml4IGRlZmF1bHQgZXh0ZW5zaW9uIGJlaGF2aW9yIHdpdGggR2V0T3BlbkZpbGVOYW1lLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUlnbm9yZSBpbXBvcnRzIGFuZCByZXNvdXJjZXMgd2hlbiBidWlsZGluZyBhIC5kZWYgZmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlYXV0MzJfdGVzdC5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvdmFydGVzdC1XaW4zMi5sb2csIGxpYnRlc3QvdmFydGVzdC5jLAoJICBsaWJ0ZXN0L3ZhcnRlc3QucmVhZG1lLCBsaWJ0ZXN0L3ZhcnRlc3Quc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUG9ydGVkIHZhcmlhbnQgdGVzdHMgdG8gdGhlIG5ldyB0ZXN0aW5nIGZyYW1ld29yay4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9sY29udi5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBzdHViIGZvciBfX2xjb252X2luaXQoKS4KCjIwMDItMDMtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9kYXRhLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglfX1t4fF1nZXRtYWluYXJnczogQWNjZXB0IE5VTEwgbmV3X21vZGUgYXJndW1lbnQuCgoJKiBpbmNsdWRlL21zYWNtLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb252ZXJ0ZWQgSEFDTVNUUkVBTSwgSEFDTURSSVZFUklEIGFuZCBIQUNNRFJJVkVSIHRvIHZvaWQqLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlcyBzb21lIGhhbmRsZSBkZWZpbml0aW9ucyB0byB0aGUgcHJvcGVyIHR5cGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuYywgZGxscy93aW5tbS93aW5lYXJ0cy9hcnRzLmgsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+Cgl3b2RPcGVuKCkgc2hvdWxkIHJldHVybiBNTVNZU0VSUl9BTExPQ0FURUQgaWYgdGhlIGRldmljZSBpcyBhbHJlYWR5CglhbGxvY2F0ZWQuICBBbGxvdyBmb3IgbXVsdGlwbGUgYXVkaW8gZGV2aWNlcy4gRml4IHdvZFBsYXllcl9yZXNldCBhcwoJd2l0aCBhUnRzIHdlIGNhbm5vdCBjYW5jZWwgYXVkaW8gZGF0YSBhbHJlYWR5IHdyaXR0ZW4gdG8gdGhlIHNlcnZlci4KCVJlbmFtZSBzb21lIGZ1bmN0aW9ucy4gQ2xlYW51cCB1bnVzZWQgY29kZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJRHNvdW5kIHdpbGwgbm93IHRyeSBhcyBtYW55IGRldmljZXMgYXMgYXJlIGF2YWlsYWJsZSB3aGVuIHRyeWluZyB0bwoJb3BlbiBhIHdhdmVPdXQgZGV2aWNlIGluIERpcmVjdFNvdW5kQ3JlYXRlKCkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgaGVhZGVyLgoKMjAwMi0wMy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBZGRlZCBzdXBwb3J0IGZvciBkcml2ZXItc3BlY2lmaWMgZXNjYXBlcyBpbiB0aGUgeDExZHJ2IHRvIHJldHJpZXZlCglYMTEgaW5mb3JtYXRpb24uIEZpbmlzaGVkIGRsbCBzZXBhcmF0aW9uIG9mIG9wZW5nbDMyLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpY2FwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNnNzExLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaW1nMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hkb2N2dy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R3YWluXzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lYXJ0cy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGUgdXBkYXRlLgoJLSBNaXNzaW5nIEFQSSBmaWxlIGVudHJpZXMgbm93IG9ubHkgcmVwb3J0ZWQgb25jZS4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglSZW1vdmVkIHNlcnZpY2UgdGhyZWFkIHN1cHBvcnQuCgoJKiBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnNvY2suaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmM6CglTZW5kIG1lc3NhZ2UgZm9yIFdTQUFzeW5jU2VsZWN0IHNvY2tldHMgZGlyZWN0bHkgZnJvbSB0aGUgc2VydmVyLAoJaW5zdGVhZCBvZiB1c2luZyB0aGUgc2VydmljZSB0aHJlYWQuIEZpbmlzaGVkIHNlcGFyYXRpb24gb2Ygd3MyXzMyLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmksIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2ltYWFkcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBhbiBJTUEgZHJpdmVyLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl91c2VyLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVdpbmVjb25zb2xlIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBub24gcmFzdGVyIGZvbnRzICh2ZWN0b3IsIHRydWUKCXR5cGUpLgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIHRpbWVyIGNhbGxiYWNrIHJvdXRpbmVzIHdoZW4gdGhlIHRocmVhZCBvd25pbmcgdGhlCgljYWxsYmFjayB0ZXJtaW5hdGVzLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmgsIG1pc2Mvc3lzdGVtLmM6CglDcmVhdGUgdGhyZWFkcyB0byBtYW5hZ2UgdGltZXJzIGluc3RlYWQgb2YgdXNpbmcgdGhlIHNlcnZpY2UgdGhyZWFkLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZmlsZXMvZmlsZS5jOgoJRXhwb3J0IHRoZSBGSUxFX0dldFVuaXhIYW5kbGUgZnVuY3Rpb25hbGl0eSBmcm9tIG50ZGxsLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgZXZlbnQgcmVkdWN0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGlzc3VlcyBpbiByZXNvdXJjZXMgZGVmaW5pdGlvbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgZml4ZWQgZm9udHMgZmFtaWx5IG5hbWUuCgoJKiB0b29scy9leGFtaW5lLXJlbGF5OgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBWeEQgY2FsbCB0cmFjaW5nLgoKCSogZGVidWdnZXIvZGJnLnk6CglUaWpzIHZhbiBCYWtlbCA8dGlqc0Bjb25uZWN0dXguY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgQysrIGlkZW50aWZpZXIgc3ludGF4LgoKMjAwMi0wMy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYXVkZXZjb2QuaCwgaW5jbHVkZS9kbW8uaCwgaW5jbHVkZS9kbW9yZWcuaCwKCSAgaW5jbHVkZS9kbW9ydC5oLCBpbmNsdWRlL2RzaG93LmgsIGluY2x1ZGUvbWVkaWFlcnIuaCwKCSAgaW5jbHVkZS9tZWRpYW9iai5oOgoJUmV3cm90ZSBzb21lIGhlYWRlcnMgZnJvbSBzY3JhdGNoIGJhc2VkIG9uIHB1YmxpY2x5IGF2YWlsYWJsZQoJaW5mb3JtYXRpb24gdG8gYXZvaWQgRVVMQSBjb25jZXJucy4KCgkqIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNkbW8vZG1vcnQuYywgZGxscy9tc2Rtby9tc2Rtby5zcGVjLAoJICBkbGxzL3F1YXJ0ei9SRUFETUUsIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmMsIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2ZnZXZlbnQuYywgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmgsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5oLAoJICBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9ldmNvZGUuaCwgaW5jbHVkZS9zdHJtaWYuaCwKCSAgaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJlbW92ZWQgc29tZSBjb2RlIGJlY2F1c2Ugb2YgY29uY2VybnMgb3ZlciB0aGUgTWljcm9zb2Z0IERpcmVjdFggU0RLCglsaWNlbnNlIGFncmVlbWVudC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9tc2c3MTEvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLAoJICBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuZHJ2LnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgRzcxMSBjb2RlYyBkcml2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBDQ01fe0dFVHxTRVR9Q09MT1JTQ0hFTUUuCgktIEltcGxlbWVudCBXTV9OT1RJRllGT1JNQVQgYW5kIGNvcnJlY3QgcGFzc2luZyBXTV9OT1RJRlkgd2l0aCBjb3JyZWN0CgkgIG1lc3NhZ2UgY2FsbC4KCS0gSWdub3JlIFBHTV9GT1JXQVJETU9VU0UgbGlrZSBuYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmVhbmFseXplIGJ1dHRvbiBzdGF0dXMgZHVyaW5nIE5DQ2FsY1NpemUgcHJvY2Vzc2luZyBiZWNhdXNlIHNpemUgb2YKCXdpbmRvdyBtYXkgaGF2ZSBjaGFuZ2VkLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVdlIGNhbm5vdCBpZ25vcmUgTm90aWZ5Tm9ubGluZWFyIGZvY3VzIGV2ZW50cy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVByb3Blcmx5IGhhbmRsZSBsb2Fkb3JkZXIgc3BlY2lmaWNhdGlvbnMgY29udGFpbmluZyBhIC5kbGwgZXh0ZW5zaW9uLgoKCSogTWFrZS5ydWxlcy5pbjogRml4ZWQgcnVsZSBmb3IgdGVzdCBwcm9ncmFtLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9rZXJuZWwzMl90ZXN0LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGVzdHMgZm9yIEdldFN5c3RlbURpcmVjdG9yeUEvVyBhbmQgR2V0V2luZG93c0RpcmVjdG9yeUEvVy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jLCBpbmNsdWRlL3dpbmUvdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0cmFjZSBmdW5jdGlvbiAoc2FtZSBhcyBpbiB0aGUgcGVybCBmcmFtZXdvcmspLgoJQWRkIHN1cHBvcnQgZm9yIHRvZG8gdGVzdHMuCglNYWtlIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBwcmludGYtc3R5bGUgbWVzc2FnZSBpbiBvay4KCUluY2x1ZGUgd2luZGVmLmggaW4gdGVzdC5oIGZvciBjb21waWxpbmcgdGVzdHMgb24gV2luZG93cy4KCgkqIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIEVudW1Qcm9jZXNzZXMgYW5kIEVudW1Qcm9jZXNzTW9kdWxlcy4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zbmFwc2hvdC5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUNvcnJlY3RseSBmaWxsIHBhcmVudCBwaWQsIG1vZHVsZSBzaXplIGFuZCBtb2R1bGUgbmFtZSBpbiBwcm9jZXNzIGFuZAoJbW9kdWxlIHNuYXBzaG90cy4gQmFzZWQgb24gcGF0Y2hlcyBieSBFcmljIFBvdWVjaCBhbmQgQW5kcmVhcyBNb2hyLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUZpeCByYW5nZSBpbiBhUnRzIDhiaXQgdm9sdW1lIGNvZGUuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglJbml0aWFsaXNlIGEgc3RhY2sgdmFyaWFibGUuCgoyMDAyLTAzLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW46IEZpeGVkIGxpbmtpbmcgb2Ygd2luZSB0YXJnZXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy90d2Fpbi8uY3ZzaWdub3JlLAoJICBkbGxzL3R3YWluL01ha2VmaWxlLmluLCBkbGxzL3R3YWluL1JFQURNRSwgZGxscy90d2Fpbi9UV0FJTiwKCSAgZGxscy90d2Fpbi9jYXBhYmlsaXR5LmMsIGRsbHMvdHdhaW4vZHNfYXVkaW8uYywKCSAgZGxscy90d2Fpbi9kc19jdHJsLmMsIGRsbHMvdHdhaW4vZHNfaW1hZ2UuYywgZGxscy90d2Fpbi9kc21fY3RybC5jLAoJICBkbGxzL3R3YWluL3R3YWluLmgsIGRsbHMvdHdhaW4vdHdhaW4zMl9tYWluLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW5fMzIuc3BlYywgZGxscy90d2Fpbi90d2Fpbl9pLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglTaGkgUXVhbiBIZSA8c2hpcXVhbkBjeWJlcmR1ZGUuY29tPiAoZm9yIENvcmVsKQoJU3RhcnRlZCBUV0FJTiBpbXBsZW1lbnRhdGlvbi4KCglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lcmdlZCBpbnRvIFdpbmVIUSwgbWFkZSBzdXJlIGl0IHdvcmtzIHdpdGhvdXQgU0FORS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCU1ha2Ugd2FybmluZ3MgcXVpZXQgYnkgZGVmYXVsdCBhbmQgYWRkZWQgLXcgb3B0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaW5jbHVkZS9jb25maWcuaC5pbiwgREVWRUxPUEVSUy1ISU5UUywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2lubW0vd2luZWFydHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYXJ0cy9hcnRzLmMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXJ0cy5oLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvd2luZWFydHMuZHJ2LnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQWRkZWQgYVJ0cyBkcml2ZXIuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWwuY2FyZGVuYXNAbGluZG93cy5jb20+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbC5jYXJkZW5hc0BsaW5kb3dzLmNvbT4KCUNoYW5nZWQgcmVnaXN0cnkgaGFuZGxpbmcgaW4gUmVnT3BlbktleUV4QSB0byBiZWhhdmUgbGlrZSB3aW5kb3dzOTUKCXdoZW4gd2ludmVyPT13aW45NS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgY2hlY2sgdG8gZndyaXRlIGZvciBzaXplID09IDAuCglGaXhlZCBvcmRlciBhbmQgZm9ybWF0IG9mICJzaXplIiBhbmQgIm5tZW1iIiBwYXJhbWV0ZXJzIGluIGNhbGxzIHRvCglmd3JpdGUuCgoyMDAyLTAzLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJRml4ZWQgcnVsZXMgZm9yIG1haW4gbW9kdWxlIHNwZWMgZmlsZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hY213cmFwLmMsCgkgIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbXBncGFyc2UuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgTVBFRyBwYXJzZXIuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2R2ZG1lZGlhLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBtaXNzaW5nIGhlYWRlci4KCgkqIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1JFQURNRSwgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkX3Jlcy5oLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCU1hZGUgbm90ZXBhZCB1c2VzIE5MUyBwcm9wZXJseS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy9sb2NraW5nLmg6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvbm5lY3QgdGhlIG1zdmNydCBmaWxlIGJ5dGUgbG9ja2luZyB1cCB0byBudGRsbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglObyBuZWVkIGZvciB0aGUgZml4bWUgb24gYSBzaW1wbGUgVEJTVFlMRV9TRVAuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIEdVSURzLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluLAoJICBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCBsaWJyYXJ5L01ha2VmaWxlLmluLAoJICBsaWJyYXJ5L2xvYWRlci5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGkvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy91cmwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLAoJICBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dsdTMyL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLAoJICBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglDaGFuZ2VkIGJ1aWx0aW4gZGxscyBmaWxlIG5hbWVzIHRvIG1ha2UgaXQgY2xlYXIgdGhleSBhcmUgbm90IG5vcm1hbAoJVW5peCBsaWJyYXJpZXMsIGFuZCBpbnN0YWxsIHRoZW0gaW4gJGxpYmRpci93aW5lIGluc3RlYWQgb2YgJGxpYmRpciB0bwoJYXZvaWQgbmFtZSBjb25mbGljdHMgaW4gL3Vzci9saWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlIHNoZWxsIHh4eEFXIHdyYXBwZXIgcHJvdG90eXBlcyBmb3IgZml4ZWQgU0hMV0FQSSBmdW5jdGlvbnMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudCwgaW1wbGVtZW50L2ZpeCBhbmQgdGVzdCAxMTArIFBhdGggZnVuY3Rpb25zLgoJU2hhcmUgdGhlIEdFVF9GVU5DIG1hY3JvLCBvdGhlciBwbGFjZXMgdGhhbiBvcmRpbmFsLmMgbmVlZCBpdC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJT24gV01fR0VUVEVYVCwgdGVybWluYXRlIHRoZSBscGFyYW0gYnVmZmVyIGV2ZW4gaWYgc3RyaW5nIGlzIGVtcHR5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgVFZTX05PU0NST0xMIGFuZCBUVlNfTk9IU0NST0xMCgktIEltcGxlbWVudCBBIGFuZCBXIHZlcnNpb25zIG9mIFdNX05PVElGWSBiYXNlZCBvbiByZXNwb25zZSB0bwoJICBXTV9OT1RJRllGT1JNQVQuIE5vdGUgdGhhdCB0aGUgRURJVExBQkVMIG5vdGlmaWVzIGFyZSBub3QgZG9uZS4KCS0gSW1wbGVtZW50IFdNX05PVElGWUZPUk1BVC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglNYXR0aGlhcyBGZWNobmVyIDxpZGVmaXhAZmVjaG5lci5uZXQ+CglBZGRlZCBHZXJtYW4gMTA1IGtleXMga2V5Ym9hcmQuCgoJKiBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9hcGkuYywKCSAgZGxscy9zaGRvY3Z3L2Jyb3dzZXIuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvY29taW1wbC5jLCBkbGxzL3NoZG9jdncvY29taW1wbC5oLAoJICBkbGxzL3NoZG9jdncvY29ubmVjdC5jLCBkbGxzL3NoZG9jdncvZXZlbnRzLmMsCgkgIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBvbGUvdXVpZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHRoZSBiYXNpYyBDT00gZnJhbWV3b3JrLgoJRml4ZWQgYWxsIElVbmtub3duIG9mIHNoZG9jdncuZGxsLgoKCSogUkVBRE1FOgoJTWFydGluIEdhcnRvbiA8bWFydGluQHdyYXNzZS5kZW1vbi5jby51az4KCUZpeGVkIGxpY2Vuc2UgdGV4dC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJQ2hhcmxlcyBWYXVnaG4gPGNoYXJsZXN2QG1mb3Mub3JnPgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgZ2xNVGV4Q29vcmQyZlNHSVMKCS0gdXBkYXRlZCB0byBsYXRlc3QgT3BlbkdMIGV4dGVuc2lvbnMKCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CglBZGRlZCBJbnRlcm5ldE9wZW5VUkxBIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUhvb2sgYmFjayBpbnRvIHRoZSBjb3JyZWN0IE1TVkNSVF9fdG9sb3dlci91cHBlci4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUFkbWlyYWwgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJQmVnaW5uaW5ncyBvZiB0aGUgY29kZSB0aGF0IHNob3VsZCBhbGxvdyBET1MgcHJvZ3JhbXMgdG8gc2V0IHRoZWlyCgljb2xvciBwYWxldHRlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCBMVlNfTk9TT1JUSEVBREVSIHN1cHBvcnQuCglTb3J0IGNvbHVtbiBvbiBIRE5fSVRFTUNMSUNLQSB0b28uCglEbyBub3QgZWRpdCBsYWJlbHMgaWYgaWNvbiB3YXMgY2xpY2tlZC4KCUZpeCB0aGUgaW5jb3JyZWN0IGljb24gd2lkdGggaW4gbXkgZWFybGllciBwYXRjaC4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgZGVmYXVsdCBzdG9jayBvYmplY3RzIGZvciBrbm93biBub24tVVMgY2hhcnNldHMuCgoJKiBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zZG1vL2Rtb3J0LmMsCgkgIGRsbHMvbXNkbW8vbXNkbW8uc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBzb21lIEFQSXMuCglBZGRlZCBzb21lIHN0dWJzLgoKCSogd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIEZpbHRlckRhdGEgb2YgRGlyZWN0U2hvdyBmaWx0ZXJzIChGaWx0ZXJEYXRhIHNob3VsZCBiZQoJcmVnaXN0ZXJlZCBmb3IgcmVuZGVyaW5nIG1lZGlhIGZpbGVzKS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZWltcGxlbWVudCBmdW5jdGlvbnMgMzUwLCAzNTEsIDM1MiB0byB1c2UgYXBwcm9wcmlhdGUgVyBmdW5jdGlvbnMKCSAgKHRoYW5rcyBK/HJnZW4hKQoJLSBBZGQgYWRkaXRpb25hbCBjb21tZW50cyB0byBmdW5jdGlvbnMgMjY2LCAyNjcsIDI3NiBhbmQgYWRqdXN0IHRoZQoJICBzdHViYmVkIHJldHVybiB2YWx1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IFJCTl9DSElMRFNJWkUgcmVjdCB2YWx1ZSBmb3IgQ0NTX1ZFUlQgcmViYXIuCgktIERvIFVwZGF0ZVdpbmRvdyBvbmx5IGlmIGRvaW5nIHJlZHJhd3Mgd2hlbiBkb2luZyBsYXlvdXQuCgoyMDAyLTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9xdWFydHovYW11bmRvYy5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYXVkcmVuLmgsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlwYXJzZS5jLCBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsCgkgIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmMsIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2NzY29udi5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZncmFwaC5oLCBkbGxzL3F1YXJ0ei9maWxlc2luay5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc2luay5oLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywKCSAgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovcGFyc2VyLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5oLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovd2F2cGFyc2UuYywgZGxscy9xdWFydHoveGZvcm0uYywKCSAgZGxscy9xdWFydHoveGZvcm0uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJ1Z3MuCglGaXhlZCBhdWRpbyByZW5kZXJlci4KCUltcGxlbWVudGVkIHNlZWtpbmcuCglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJTGVvIHZhbiBkZW4gQmVyZyA8bGVvQGNvbm5lY3R1eC5jb20+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgbWlzc2luZyBDTFNJRC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglTZXJnZWkgVHVyY2hhbm92IDxwbHVtYmVyQHByaW50LnZsYWQucnU+CglPcmRpbmFsIDM0MiBpcyByZWFsbHkgbmFtZWQgU0hJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVRPT0xCQVJfTEJ1dHRvblVwIHNob3VsZCB3b3JrIGV2ZW4gaWYgUmVsZWFzZUNhcHR1cmUgd2FzIGFscmVhZHkKCWNhbGxlZC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOgoJSmVyZW15IE5ld21hbiA8am5ld21hbkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBXQVJSQU5UWSBpbmNsdXNpb24uCgoJKiBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBlbnVtcy4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMuCgoJKiBmaWxlcy9zbWIuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGVzIGZvciBGcmVlQlNEIGFuZCBTb2xhcmlzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMzLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDb25zb2xlIG1vZGUgRE9TIHByb2dyYW1zIG5vdyByZWNlaXZlIG1vdXNlIGV2ZW50cy4KCVJlcGxhY2VkIEdldE1lc3NhZ2Ugd2l0aCBQZWVrTWVzc2FnZSwgc2luY2UgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cwoJaXMgYWxsb3dlZCB0byByZXR1cm4gc3BvbnRhbmVvdXNseS4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gZml4IGNvbXBsZXRlIGxpc3Rib3ggbWVzc3VwIGJ5IG9ubHkgdXBkYXRpbmcgaW4gY2FzZSBpdCBuZWVkcwoJICB1cGRhdGluZwoJLSBmaXggbGlzdGJveCBzZWxlY3Rpb24gYnJlYWthZ2UgY2F1c2luZyBtdWx0aXBsZSBwcm9ncmFtcyB0byBnZXQKCSAgdW5pbnN0YWxsZWQKCS0gaW1wbGVtZW50ZWQgc29ydGluZyBvZiBlbnRyaWVzCgktIG11Y2ggYmV0dGVyIGRlYnVnIHN0cmluZ3MKCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzaG93IHRoZSB3aW5kb3cuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNtYWxsIGZpeGVzLgoKMjAwMi0wMy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy9maWxlLmMsIGZpbGVzL3NtYi5jLCBmaWxlcy9zbWIuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zbWIuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQmVnaW4gdG8gbWFrZSB3aW5lIGFuIFNNQiBjbGllbnQuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rtby5oLCBpbmNsdWRlL2Rtb3JlZy5oLAoJICBpbmNsdWRlL2Rtb3J0LmgsIGluY2x1ZGUvbWVkaWFlcnIuaCwgaW5jbHVkZS9tZWRpYW9iai5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBoZWFkZXJzLgoKCSogc2VydmVyL3NlcmlhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUZpbmlzaCBhbnkgcGVuZGluZyBXYWl0Q29tbUV2ZW50cyBpZiB0aGUgZXZlbnQgbWFzayBpcyBzZXQgdG8gMC4KCgkqIGRsbHMvbXNybGUzMi9tc3JsZTMyLmM6CglNaWNoYWVsIEthcmNoZXIgPG1pY2hhZWwua2FyY2hlckBkcGsuYmVybGluLmZpZG8uZGU+CglwRHN0IHdhcyBhZHZhbmNlZCB0b28gbXVjaCB3aGVuIGRlY29kaW5nIERFTFRBIGJsb2Nrcy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIG9wdGlvbiBTV19GT1JDRU1JTklNSVpFIHRvIFNob3dXaW5kb3cuCgoyMDAyLTAzLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgd2luZWJ1aWxkIChhbG1vc3QpIGNvbXBpbGUgYW5kIHdvcmsgb24gV2luZG93cy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQmV0dGVyIGhhbmRsaW5nIHdoZW4gc2V0dGltZW9mZGF5IGlzIG5vdCBhdmFpbGFibGUuCgktIEFkZGluZyBuYW1lIHRyYW5zbGF0aW9ucyBmb3IgcHtjbG9zZSxvcGVufSBhbmQgc3RyeyxufWNhc2VjbXAgaWYKCSAgdGhleSBleGlzdHMgdW5kZXIgb3RoZXIgbmFtZXMuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBvcHRpb25hbCBoZWFkZXJzIGFuZCBmdW5jdGlvbnMgZm9yIGNvbXBpbGluZyBvbiBXaW5kb3dzCgl3aXRoIE1TVkMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJRml4ZWQgaW50ZXItcHJvY2VzcyBwYWNraW5nIG9mIENCL0xCX0ZJTkRTVFJJTkcsIENCL0xCX0ZJTkRTVFJJTkdFWEFDVAoJYW5kIENCL0xCX1NFTEVDVFNUUklORy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJRml4ZWQgVW5pY29kZSBjb252ZXJzaW9uIGZvciBDQi9MQl9GSU5EU1RSSU5HLCBDQi9MQl9GSU5EU1RSSU5HRVhBQ1QKCWFuZCBDQi9MQl9TRUxFQ1RTVFJJTkcuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCUltcGxlbWVudGVkIHN0ZGlvIGJ1ZmZlcmluZyBhbmQgdW5nZXRjLiBNaXNjIHN0ZGlvIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCBzdXBwb3J0IGZvciByZXBvcnQgbW9kZSB0ZXh0IGp1c3RpZmljYXRpb24uCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS9maWxlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU2V0IGFuIG92ZXJsYXBwZWQgaEV2ZW50IGJlZm9yZSBjYWxsaW5nIGFueSBBUENzLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2NhcGdyYXBoLmgsIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmgsIGRsbHMvcXVhcnR6L21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgQ0xTSURzLgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0phLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9KYS5yYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhbmQgZml4ZWQgc29tZSBKYXBhbmVzZSByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIHN1cHBvcnQgZm9yIFdNX1dJTkRPV1BPU0NIQU5HRUQgdG8gc2F2ZSBuZXcgb3JpZ2luIG9mIHdpbmRvdy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaCBhcmd1bWVudHMgaW5zdGVhZCBvZiBzdGF0aWMgdmFyaWFibGVzLgoJQWRkIHByb3RlY3Rpb24gdG8gcHJldmVudCByZWFkaW5nIG91dHNpZGUgdGhlIGJ1ZmZlci4KCUJldHRlciBoYW5kbGluZyBvZiBkZWdlbmVyYXRlIGNhc2VzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCVByZXZlbnQgc2V0dXAgZnJvbSBjcmFzaGluZyBpZiBhIHNlY3Rpb24gaW4gdGhlIElORiBpcyBlbXB0eSAobm8KCWVudHJpZXMpICh0aGlzIGhhcHBlbnMgd2hlbiBpbnN0YWxsaW5nIElFNSkuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJVHVyY2hhbm92IFNlcmdlaSA8cGx1bWJlckBwcmludC52bGFkLnJ1PgoJSW1wbGVtZW50IG9yZGluYWwgMzQyLgoKCSogd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCUphc29uIFBoaWxsaXBzIDxqYXNvbnAxQGNveC5uZXQ+CglNYWtlIHdpbmVjbGlwc3J2IHJ1biBhcyBhIGRhZW1vbiAoY2xvc2Ugc3Rkb3V0L3N0ZGVyciwgbm8gY29udHJvbGxpbmcKCXRlcm1pbmFsLCBzZXNzaW9uIGdyb3VwIGxlYWRlcikuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXhlbCBTY2htaWR0IDxiYWJlQGF4ZWwtc2NobWlkdC1uZXQuZGU+CglBZGRlZCBrZXlib2FyZCBsYXlvdXQgZm9yIExvZ2l0ZWNoIENvcmRsZXNzIERlc2t0b3AgUHJvLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgRklYTUVzIGZvciBhY3Rpb25zIHdpdGggaWQ+PTExNS4gVGhlc2UgYWN0aW9ucyB3ZXJlIG5vdAoJcHJvY2Vzc2VkIGJlZm9yZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHNjYWZmb2xkaW5nIGZvciBUQl97R0VUfFNFVH1QQURESU5HLgoJLSBSZXBsYWNlIHdyb25nIHRlc3QgZm9yIENDU19WRVJUIHdpdGggY29ycmVjdCB0ZXN0IGZvciB1bmRvY3VtZW50ZWQKCSAgVEJTVFlMRV9FWF8gc3R5bGUgMHgwNC4KCS0gQWRkIHN1cHBvcnQgZm9yIHVuZG9jdW1lbnRlZCBUQl9TRVRCVVRUT05TSVpFIHdoZXJlIHRoZSBzaXplIGlzCgkgIHplcm8sIHNldHMgdG8gZGVmYXVsdCB2YWx1ZS4KCS0gSXNzdWUgRklYTUVzIGZvciB1bnN1cHBvcnRlZCBleHRlbmRlZCBzdHlsZXMuCgktIEltcGxlbWVudCBmaXJzdCB0cnkgYXQgdW5kb2N1bWVudGVkIHRvb2xiYXIgbWVzc2FnZSAweDA0NjMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVRyYWNlIHVuZG9jdW1lbnRlZCB0b29sYmFyIG1lc3NhZ2VzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIEJUTl8uLi4gZGVmaW5pdGlvbnMgKHJlcGxhY2VtZW50IGZvciBUQlNUWUxFXy4uLikuCgktIEFkZCBkZWZpbml0aW9ucyBvZiBhZGRpdGlvbmFsIFRCU1RZTEVfRVhfIHN0eWxlcy4gSW5jbHVkaW5nCgkgIHVuZG9jdW1lbnRlZCBvbmUgdXNlZCBieSBJRTUuCgktIEFkZCBhZGRpdGlvbmFsIHRvb2xiYXIgbWVzc2FnZSBkZWZpbml0aW9ucyBpbmNsdWRpbmcKCSAgdW5kb2N1bWVudGVkIG9uZXMgdXNlZCBieSBhdCBsZWFzdCBJRTUuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTb21lIHNtYWxsIGNsZWFudXBzIHRvIGRpbnB1dCBtb3VzZSBjb2RlLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUNyZWF0ZWQgZHVtbXkgaW1wbGVtZW50YXRpb24gb2YgSW50ZXJuZXRTZXRPcHRpb24gZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVRlc3QgYlVuaWNvZGUgYW5kIGNhbGwgYXBwcm9wcmlhdGUgRHJhd1RleHQgcm91dGluZS4KCjIwMDItMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6CglSZWxlYXNlIDIwMDIwMzEwLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTAzLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTElDRU5TRS5PTEQ6IEtlZXAgb2xkIGxpY2Vuc2UgYXJvdW5kLgoKCSogaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIHRvb2xzL2FwaXcuaW5kZXgsIHRvb2xzL2lwY2wsCgkgIHRvb2xzL21ha2Vfb3MyLmNtZCwgdG9vbHMvbWFrZWh0bWwucGwsIHRvb2xzL3VuaW1hcC5wbCwKCSAgdG9vbHMvd21jL2xhbmd1YWdlLmM6CglSZW1vdmVkIHNvbWUgb2Jzb2xldGUgZmlsZXMuCgoJKiAqLyo6CglBZGRlZCBMR1BMIHN0YW5kYXJkIGNvbW1lbnQsIGFuZCBjb3B5cmlnaHQgbm90aWNlcyB3aGVyZSBuZWNlc3NhcnkuCglHbG9iYWwgcmVwbGFjZW1lbnQgb2YgZGVidWd0b29scy5oIGJ5IHdpbmUvZGVidWcuaC4KCgkqIENPUFlJTkcuTElCLCBMSUNFTlNFLCBXQVJSQU5UWToKCUNoYW5nZWQgbGljZW5zZSB0byBMR1BMLgoKMjAwMi0wMi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMjAyMjguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDItMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvYXV0aG9ycy5oLCBBVVRIT1JTOgoJVXBkYXRlZCBhdXRob3JzIGxpc3QgZnJvbSB0aGUgQ2hhbmdlbG9nLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91CgloYXZlIGJlZW4gbGVmdCBvdXQuCgoJKiBjb25maWd1cmUuYWMsIGNvbmZpZ3VyZToKCUFkZGVkIHRlc3RzIGV4dHJhIGRpcmVjdG9yaWVzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9SRUFETUUsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9hZnRlci5yZWcsIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9iZWZvcmUucmVnLAoJICBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvb3JpZy5yZWcsIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9yZWdhcGkucGwsCgkgIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL1JFQURNRSwKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnUmVzdG9yZXIucGwsCgkgIHByb2dyYW1zL3JlZ2FwaS9yZWdTZXQuc2gsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJTWFkZSByZWdhcGkgc2NyaXB0cyBhYmxlIHRvIHByb2Nlc3MgLnJlZyBmaWxlcyBpbiByZWdlZGl0Cglmb3JtYXQuIEltcGxlbWVudGVkIHVuaXQgdGVzdHMgZm9yIHJlZyBkaWZmIGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL21ha2VfZGxscywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglBZGRlZCBtYWtlIGNoZWNrIHRhcmdldCB0byBydW4gdW5pdCB0ZXN0cyB0b28gc2luY2UgdGhpcyBzZWVtcyB0byBiZQoJc3RhbmRhcmQuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRml4ZWQgd2lucHJvYyBtZW1vcnkgbGVhay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBc2sgZm9yIGNvcnJlY3QgbnVtYmVyIG9mIGNoYXJzIGluIEVkaXRMYmxXbmRQcm9jVC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsY0BsaW5kb3dzLmNvbT4KCU1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgU0hMV0FQSV8zNTYuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUZpeGVkIG1lcmdlIGVycm9yLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUxJU1RWSUVXX0luc2VydENvbHVtblQgY2FuIGJlIGNhbGxlZCB3aXRoIGEgd2lkdGggb2YKCUxWU0NXX0FVVE9TSVpFX1VTRUhFQURFUi4KCVVzZSB0aGUgY29ycmVjdCBzdHJpbmdzIHdoZW4gY29sdW1uIGF1dG9zaXppbmcgb24gY29sdW1ucyBvdGhlciB0aGFuCgljb2x1bW4gMC4KCUxWU0NXX0FVVE9TSVpFX1VTRUhFQURFUiB1c2VzIGJvdGggaXRlbSBhbmQgaGVhZGVyIHN0cmluZ3MuCgoyMDAyLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5udC5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBkZWZpbmVzIGFuZCBvZmZzZXRzLgoKCSogb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi9idWlsdGluMzIuYywgbWlzYy9yZWdpc3RyeS5jLAoJICBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL3N0cmluZy5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVmFyaW91cyBjb3NtZXRpYyBjaGFuZ2VzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvdXNlcjMyX3Rlc3Quc3BlYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgU3lzdGVtUGFyYW1ldGVyc0luZm8gdW5pdCB0ZXN0LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW46CglDb3NtZXRpYyBmaXhlcy4KCgkqIHByb2dyYW1zL2NvbnRyb2wvbGNjbWFrZS5iYXQsIHByb2dyYW1zL25vdGVwYWQvbGNjbWFrZSwKCSAgcHJvZ3JhbXMvdmlldy9sY2NtYWtlZmlsZSwgcHJvZ3JhbXMvd2NtZC9tYWtlZmlsZS5iY2M6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVJlbW92ZWQgYWx0ZXJuYXRpdmUgbWFrZSBzY3JpcHRzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglJbXBsZW1lbnRlZCAiQXBwIFBhdGhzIiByZWdpc3RyeSBrZXkgc3VwcG9ydCBmb3IgU2VhcmNoUGF0aCgpLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgb3ZlcmZsb3cgYW5kIHNpZ25lZC91bnNpZ25lZCBiZWhhdmlvdXIuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaDoKCVJlaW1wbGVtZW50ZWQgRGVidWdCcmVha1Byb2Nlc3MuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93aW5lZHVtcC9taXNjLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgbXNkb3MvdnhkLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTcGVsbGluZy9hbGlnbm1lbnQgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCB0b29scy93aW5lY2hlY2ssCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgUkVBRE1FOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBzdHJlc3MgdGhlIGZhY3QgdGhhdCB3aW5laW5zdGFsbCBpcyBpbiBXaW5lIHNvdXJjZQoJLSBhZGQgbWlzc2luZyB0dHlkcnYveDExZHJ2IHNlY3Rpb24gdG8gd2luZS5jb25mLm1hbgoJLSBtYWtlIHN1cmUgdGhhdCB3ZSBhbHNvIGxvYWQgc2hkb2N2dyBhcyBidWlsdGluIGluIHNhbXBsZSBjb25maWcgZmlsZQoJLSBhZGQgc2FtcGxlIEFwcERlZmF1bHRzIHNlY3Rpb24gdG8gc2FtcGxlIGNvbmZpZyBmaWxlCgktIHdpbmVjaGVjayB1cGRhdGUKCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsCgkgIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIGRldGFjaCBjb21tYW5kIHRvIHRoZSBkZWJ1Z2dlci4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IFhQIGRlYnVnZ2luZyBBUElzOiBpbXBsZW1lbnRlZCBEZWJ1Z0FjdGl2ZVByb2Nlc3NTdG9wLAoJRGVidWdTZXRQcm9jZXNzS2lsbE9uRXhpdCwgRGVidWdCcmVha1Byb2Nlc3MuCgoJKiBCVUdTOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUmV3cm90ZSBCVUdTIGZpbGUuIExpc3RlZCBkaXJlY3Rpb25zIGZvciB0aG9zZSB3aG8gd2FudCB0byBjb250cmlidXRlCgl0byB0aGUgcHJvamVjdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ2VudHJlIHRleHQgY29ycmVjdGx5IGZvciB0aGUgc2VsZWN0ZWQgaXRlbS4KCURyYXcgY29tcGxldGUgYmFja2dyb3VuZCBmb3IgdGhlIHNlbGVjdGVkIGl0ZW0uCglDYWxjdWxhdGUgdGhlIHNpemUgb2YgYSBsYXJnZSBpY29uIG1vcmUgY29ycmVjdGx5IChpbmNsdWRpbmcgbXVsdGlsaW5lCglsYWJlbHMpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBTdXBwb3J0IENDU19WRVJUIGFzIGFsdGVybmF0aXZlIGZvciBUQlNUWUxFX1dSQVBBQkxFLgoJLSBUQl9JTlNFUlRCVVRUT05XIHdhcyBub3QgYXMgZnVuY3Rpb25hbCBhcyB0aGUgJ0EnIHZlcnNpb24uIFRoZXkgbm93CgkgIG1hdGNoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbnMgd2hlbiBkZGVleGVjIHdhcyBwcmVzZW50IGluIHJlZ2lzdHJ5LgoKCSogd2luZG93cy93aW4uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggdGhlIHN0cmFuZ2UgY2FzZSBpbiBXSU5fRml4Q29vcmRpbmF0ZXMgd2hlcmUgeCBhbmQgY3ggYXJlIG5vdAoJZGVmYXVsdCBidXQgY3kgaXMgQ1dfVVNFREVGQVVMVC4KCjIwMDItMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBGaXhlZCBtYWtlIHVuaW5zdGFsbC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgY3V0JnBhc3RlIHByb2JsZW0gaW4gU0VUUlRTLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCBXb3JkIGJyZWFraW5nIGluIGNlbnRyZWQvcmlnaHQganVzdGlmaWVkIG1vZGU7IGl0IHdhcyBsZWF2aW5nIGEKCXRyYWlsaW5nIHNwYWNlIHdoaWNoIGl0IHNob3VsZCBvbmx5IGRvIGZvciBsZWZ0LWp1c3RpZmllZCB0ZXh0LgoJQWxzbyB0aWdodGVuIHVwIHNvbWUgY29tbWVudHMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBhZGRpdGlvbmFsIENDTV8gbWVzc2FnZSBuYW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgRU1fRk1UTElORVMgbWVzc2FnZSBiYXNlZCBvbiByZWxheSB0cmFjZSBvZiBuYXRpdmUuCgoJKiBpbmNsdWRlL21tcmVnLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGxvdHMgb2YgbWlzc2luZyBkZWZpbmVzLgoKCSogZGxscy91c2VyL2RkZS9taXNjLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIERkZUdldERhdGEgd2hlbiBjYWxsZWQgZm9yIGdldHRpbmcgc2l6ZS4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBXTV9TRVRGT05UIGhhbmRsaW5nIChubyByZWRyYXcgbWFkZSBpbiBzb21lIGNhc2VzKS4KCgkqIGRlYnVnZ2VyL2luZm8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWMgZml4ZXMgdG8gJ3dhbGsgcHJvYycgY29tbWFuZC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGNyYXNoIGluIHRoZSBYMTEgSEFMIHdoZW4gc2V0dGluZyBhIE5VTEwgcGFsZXR0ZSB0byBhIHN1cmZhY2UuCgoJKiBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxOgoJUGhpbGlwcCBXb2xsZXJtYW5uIDxwaGlsX3dvQGdteC5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgQ3J1eCBMaW51eCBkaXN0cmlidXRpb24gKHdpdGggb3BlbmphZGUpLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBhbm90aGVyIGJhZCB0ZXN0LiBDYXVzZWQgcmVncmVzc2lvbiBpbiBJRSA0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaGFybGVzIER1ZmZ5IDxjZHVmZnlAYmlnZm9vdC5jb20+CglTdG9wIFRPT0xCQVJfTWVhc3VyZVN0cmluZyBmcm9tIGR5aW5nIG9uIGVtcHR5IHN0cmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglQYXJ0aWFsbHkgcmVwYWlyIGhvdHNwb3QgaGFuZGxpbmcuCgoyMDAyLTAyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvY29uc29sZS5jLAoJICB3aW4zMi9leGNlcHQuYywgd2luMzIvaW5pdC5jLCBpbmNsdWRlL21zdmNydC9leGNwdC5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvZ2xvYmFsLmMsCgkgIG1lbW9yeS9zdHJpbmcuYywgbWVtb3J5L3ZpcnR1YWwuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmRvd3MuaCwKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRlYnVnZ2VyL2RiZy55LAoJICBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglOZXcgZmlsZSBtc3ZjcnQvZXhjcHQuaC4gTW92ZSBzb21lIHN0dWZmIG91dCBvZiB3aW5udC5oIGludG8gaXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglQcmV2ZW50IGxvY2stdXAgd2l0aCBhIGZvY3VzIGxvb3AgYmV0d2VlbiB0d28gdG9wIGxldmVsIHVubWFuYWdlZAoJd2luZG93cy4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglBZGRlZCBYVmlzdWFsSURGcm9tVmlzdWFsIHRvIHRzeDExIGxpc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglMVk1fR2V0SXRlbVJlY3Qgc2hvdWxkIG5vdCB0YWtlIHRleHQgc2l6ZSBpbiBhY2NvdW50IGZvciBMVklSX0xBQkVMIGluCglyZXBvcnQgbW9kZS4KCjIwMDItMDItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9maWxlLmM6CglHZXJoYXJkIFcuIEdydWJlciA8c3Bhcmhhd2tAZ214LmF0PgoJTW92ZUZpbGVFeCBub3cgZW50ZXJzIHRoZSBmaWxlcyBpbiB0aGUgcmVnaXN0cnkgd2hlbiB0aGUgYm9vdCBkZWxheQoJZmxhZyBpcyBzZXQuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS93aW51c2VyLmg6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCByZXR1cm4gdHlwZSBvZiBHZXRBc3luY0tleVN0YXRlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglJbXBsZW1lbnQgbXVsdGlsaW5lIGxhYmVscyBpbiB0aGUgTGFyZ2UgSXRlbSB2aWV3IGJ5IHVzaW5nIERyYXdUZXh0CglOb3RlIHRoYXQgdGhpcyBub3cgaGlnaGxpZ2h0cyB3ZWFrbmVzc2VzIGluIHRoZSBsYWJlbCBtZWFzdXJpbmcgY29kZQoJZXRjLiB3aGljaCBjYW5ub3QgY29ycmVjdGx5IGhhbmRsZSBtdWx0aWxpbmUgbGFiZWxzLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNvbXBpbGUgZml4IGZvciBHQ0MgMi43LnguCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCBzcGVjIHN0dWIgZm9yIFJ0bEdldE50VmVyc2lvbk51bWJlcnMuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUNoYW5nZSB1c2VsZXNzIHdhcm5pbmcgaW50byBhIFRSQUNFLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsIGRsbHMvbXN2Y3J0L2V4aXQuYzoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJYXRleGl0IGRvZXNuJ3QgdGFrZSBhIF9vbmV4aXRfdCBwYXJhbWV0ZXIuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglSZW1lbWJlciB0aGUgY3VycmVudGx5IGFjdGl2ZSBpbmRleCBiZWZvcmUgcmVmcmVzaGluZy4KCjIwMDItMDItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbG9jay5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvbXRkbGwuaDoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJQWRkIF9sb2NrLF91bmxvY2sgYW5kIGhlYWRlciBmaWxlIGZvciB0aGVtLgoJQ29udmVydCBhbGwgbXN2Y3J0IGxvY2tzIG92ZXIgdG8gdXNlIF9sb2NrIGFuZCBfdW5sb2NrLgoJRXhwbGljaXRseSBtYWtlIG1zdmNydCBjb21waWxlIHdpdGggbXVsdGl0aHJlYWRlZCBvcHRpb24uCglGaXggZmxhZyBoYW5kbGluZyBpbiBfc29wZW4uIEFkZCBXLT5BIGNhbGwgZm9yIG5ldyBfc3dvcGVuLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJQXZvaWQgYXNzZXJ0IGZvciB2ZXJ5IGxhcmdlIEMrKyAuc28gZmlsZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJRml4IElDT01fREVGSU5FIGZvciBDKysuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGb3J3YXJkIG9yZGluYWxzIDQwLCA0MSwgMTQzLCAzNjIgdG8gYXBwcm9wcmlhdGUgcm91dGluZXMuCgktIEltcGxlbWVudCBvcmRpbmFscyAxNTUsIDM1MCwgMzUxLCAzNTIsIDQxOCwgNDM2LgoJLSBGYWtlIGltcGxlbWVudGF0aW9uIG9mIFNIR2V0SW52ZXJzZUNNQVAuCgktIFN0dWIgb3JkaW5hbCAyMDkuCgktIEZpeCBkZWZpbml0aW9uIG9mIG9yZGluYWwgNy4KCS0gSW1wbGVtZW50IFNIR2V0VGhyZWFkUmVmIGFuZCBTSFNldFRocmVhZFJlZi4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHByb2JsZW1zIGluIERQQV9NZXJnZSBleHBvc2VkIGJ5IHByZXZpb3VzIGNvZGUgY2xlYW51cC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBBZGFtIEQuIE1vc3MgPGFkYW1AZ2ltcC5vcmc+CglQYXJ0aWFsbHkgcmV2ZXJ0IHByZXZpb3VzIGNoYW5nZXMsIGZvcmNlIGNvbmZpZ3VyZSB0byB3cml0ZSBhbgoJb2xkLXN0eWxlIGNvbmZpZy5jYWNoZS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURyYXdUZXh0IGVsbGlwc2lmaWNhdGlvbiBvbiBhbGwgbGluZXMsIG5vdCBqdXN0IHNpbmdsZS1saW5lLgoKMjAwMi0wMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21ha2VfY3Rlc3RzLCBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LAoJICBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYywgaW5jbHVkZS93aW5lL3Rlc3QuaCwKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBNYWtlLnJ1bGVzLmluOgoJUHJlbGltaW5hcnkgdmVyc2lvbiBvZiB0aGUgQyB1bml0IHRlc3RzIHJ1bi10aW1lIGVudmlyb25tZW50LgoJQWRkZWQgbWFrZSBydWxlcyBmb3IgYnVpbGRpbmcgYW5kIHJ1bm5pbmcgQyB1bml0IHRlc3RzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9sY2MuaCwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CgktIG1hZGUgbm90ZXBhZCBjb21waWxlIHdpdGggQ3lnd2luCgktIG1hZGUgY2hhbmdlcyB0byB0aGUgcHJlY29tcGlsZXIgZGlyZWN0aXZlcyB0byBjaGVjayBmb3Igc3BlY2lmaWMKCSAgZmVhdHVyZXMgaW5zdGVhZCBvZiBjaGVja2luZyBmb3IgdGhlIGVudmlyb25tZW50IHZlcnNpb24uCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEcmF3dGV4dCB0aWR5aW5nIHVwIHJlYWR5IGZvciB0aGUgbmV4dCBiaWcgY2hhbmdlOgoJLSBGaXggYnJhaW5mYWRlIGluIHByZXZpb3VzIGRlbHRhCgktIE1vdmUgZWxsaXBzaWZpY2F0aW9uIHJlc3VsdHMgdG8gc3RhdGljIG1lbW9yeTsgdGhleSBhcmUgZ29pbmcgdG8KCSAgaGF2ZSB0byBiZSByZWZlcmVuY2VkIGluc2lkZSBOZXh0TGluZVcgYW5kIHRoZSBhcmcgbGlzdCBpcyB0b28gYmlnCgkgIGFscmVhZHkuCgktIEFkZCB0aGUgbWlzc2luZyBlbGxpcHNpZmljYXRpb24gcmVzdWx0IChsZW5fdW5kZXIpIHRvIHNpbXBsaWZ5IGNvZGluZy4KCS0gU2xpZ2h0IGNvcnJlY3Rpb24gdG8gcHJlZml4IHRyYWNraW5nIGZvciB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsCgkgIHVuZGVybGluZWQgY2hhcmFjdGVycyBvbiBhIHNpbmdsZSBsaW5lIChEVF9FWFBBTkRUQUJTIG9ubHkpLgoJLSBBbGxvY2F0ZSBhbmQgZnJlZSB0aGUgdGVtcG9yYXJ5IGNvcHkgcmVxdWlyZWQgZm9yIERUX01PRElGWVNUUklORwoJICByYXRoZXIgdGhhbiB1c2luZyBhIGZpeGVkIHNpemUgc3RhY2sgYXJyYXkuCgktIEludHJvZHVjZSBsYXN0bGluZSBpbnRvIHRoZSBtYWluIGxvb3A7IGl0IHNpbXBsaWZpZXMgdGhlIGNvZGUgYW5kIHdlCgkgIGFyZSBnb2luZyB0byBuZWVkIGl0LgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVByb3RlY3QgUGF0aElzVU5DU2VydmVyU2hhcmUgZnJvbSBudWxsIGxwc3pQYXRoLgoKMjAwMi0wMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMva2VybmVsL2NvbW0uYywgY29uZmlndXJlLmFjLCBjb25maWd1cmU6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby4uY29tPgoJU3VwcG9ydCBmb3Igbm9uc3RhbmRhcmQgYmF1ZCByYXRlIGluIFNldENvbW1TdGF0ZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRmkucmMsIHByb2dyYW1zL25vdGVwYWQvRnIucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU3cucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnJjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwYXJzaW5nIG9mIGZpbGUgbmFtZSwgcGFzc2VkIGluIGNvbW1hbmQgbGluZSwgbG9hZGluZyBuZXcKCWZpbGUgb24gc3RhcnR1cC4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB0d28gbWlzc2luZyBleHBvcnRzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglQaGlsbGlwIEV6b2x0IDxlem9sdEBwZXJmLnprby5kZWMuY29tPgoJRml4ZWQgdGhlIHNjcm9sbGJhciBwb3NpdGlvbiBvdmVyZmxvd3MgdXNpbmcgTXVsRGl2LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJT25kcmVqIE1hY2VrIDx4bWFjZWtAaW5mb3JtYXRpY3MubXVuaS5jej4KCUZpeCBvZiBMaXN0VmlldyBpbnZhbGlkYXRpb24gaW4gTElTVFZJRVdfU2V0QmtDb2xvci4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglIQ1JfR2V0RGVmYXVsdEljb24gc2hvdWxkIHNldCBpY29uIG51bWJlciB0byAwIGlmIGl0J3MgbWlzc2luZyBmcm9tCgl0aGUgcmVnIGVudHJ5LgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEFkYW0gRC4gTW9zcyA8YWRhbUBnaW1wLm9yZz4KCU1ha2Ugd2luZWluc3RhbGwgd29yayBpbiB0aGUgbmV3LWF1dG9jb25mLXZlcnNpb24gd29ybGQuCgoJKiBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYXVkcmVuLmgsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovcGFyc2VyLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uaCwgZGxscy9xdWFydHoveGZvcm0uYywKCSAgZGxscy9xdWFydHoveGZvcm0uaCwgZGxscy9xdWFydHovYXN5bmNzcmMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGRlYWRsb2Nrcy4KCgkqIGRsbHMvYXZpZmlsMzIvaWFzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9pZ2ZyYW1lLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZXMgZm9yIGNvbXBhdGliaWxpdHkuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBtc3JsZTMyLmRsbCAoZGVjb21wcmVzc29yIG9mIE1STEUpLgoKCSogZGxscy9tc3JsZTMyL21zcmxlMzIuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBidWdzIGluIHByb2Nlc3NpbmcgREVMVEEuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDaGFuZ2UgdGhlIHdheSB0aGF0IERyYXdUZXh0IHBhcnNlcyB0aGUgbmV4dCBsaW5lIHRvIGRpc3BsYXksIHJlYWR5IHRvCglzdXBwb3J0IG11bHRpbGluZSBlbGxpcHNpZmljYXRpb24gZXRjLiAgUmF0aGVyIHRoYW4gbWVhc3VyaW5nIHRoZSB0ZXh0CgllYWNoIHRpbWUgd2UgYWRkIGEgY2hhcmFjdGVyIGFuZCBicmVha2luZyBvbmNlIGl0IGlzIHRvbyBsb25nIGFuZAoJV09SREJSRUFLIGlzIGVuYWJsZWQsIHdlIGNvcHkgYSB3aG9sZSB0ZXh0IHNlZ21lbnQgYW5kIHRoZW4gbWVhc3VyZQoJaXQ7IEdldFRleHRFeHRlbnRQb2ludEV4IGlzIGRlc2lnbmVkIHRvIHRlbGwgdXMgaG93IG11Y2ggZml0dGVkLiAgVGhpcwoJbWF5IHJlc3VsdCBpbiBhIGxpdHRsZSByZXNjYW5uaW5nIGlmIHdvcmRicmVhayBpcyBlbmFibGVkIGJ1dCB3aWxsIGJlCgl3ZWxsIHdvcnRoIHdoaWxlIHdoZW4gbXVsdGlsaW5lIHBhdGggZWxsaXBzaWZpY2F0aW9uIGlzIGJyb3VnaHQgZG93bgoJaW50byB0aGUgTmV4dExpbmUgZnVuY3Rpb24uICBOb3RlIGFsc28gdGhhdCB0aGUgd29yZGJyZWFrIGNhbGN1bGF0aW9uCglpcyBhIGxpdHRsZSBtb3JlIGNvbXBsZXRlIChlLmcuICBpbmNsdWRpbmcgYnJlYWstd2l0aGluLXdvcmQgZm9yCglEVF9FRElUQ09OVFJPTCkuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCVBhdHJpY2sgSGFsbGVyIDxwYXRyaWNrLmhhbGxlckBpbm5vdGVrLmRlPgoJRml4IGNyYXNoIGluIFZhcmlhbnRUaW1lVG9Eb3NEYXRlVGltZS4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCU11c3QgbWFrZSBhIGNvcHkgb2YgZ2xvYmFsIGhhbmRsZSByZXR1cm5lZCBieSBHZXRDbGlwYm9hcmREYXRhOyBpdCBpcwoJbm90IHZhbGlkIGFmdGVyIHdlIGNhbGwgQ2xvc2VDbGlwYm9hcmQuIEFwcGxpY2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvcgoJZnJlZWluZyB0aGUgbWVtb3J5IChmaXhlcyBjb3B5L3Bhc3RlIGluIG1haWwgYm9keSBpbiBGb3J0ZSBBZ2VudCkuCgoyMDAyLTAyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJTW9kaWZpZWQgbWFrZWRlcCB0byBoYW5kbGUgI2luY2x1ZGUgPD4gY29ycmVjdGx5IChiYXNlZCBvbiBhIHBhdGNoIGJ5CglQYXRyaWsgU3RyaWR2YWxsKS4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBkZWZpbmVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luZG93cyBoZWFkZXJzLgoKCSogd2luZG93cy93aW4uYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ29udmVydCBzb21lIGludmFsaWQgb2Zmc2V0cyBpbiBHZXRXaW5kb3dMb25nMTYgaW50byB2YWxpZCBvZmZzZXRzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTWVhc3VyZSB0aGUgdGV4dCBtb3JlIHJlYXNvbmFibHkuIFRoaXMgaGFuZGxlcyBpbnRlcmNoYXJhY3RlciBzcGFjaW5nCglhbmQgc2hvdWxkIGhhbmRsZSBhbnkga2VybmluZyBldGMuIHRoYXQgbWlnaHQgaGFwcGVuLiBBbHNvIGVuc3VyZSBubwoJd29yZGJyZWFraW5nIG9uIHNpbmdsZWxpbmUgdGV4dC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUFkZGVkIGEga2V5Ym9hcmQgbWF0Y2hlZCB0byBWTkMuCgoJKiBpbmNsdWRlL250ZGRrLmg6IFJvbiBHYWdlIDxyb25Acm9uZ2FnZS5vcmc+CglBZGRlZCBzZXZlcmFsIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBTSEZpbGVPcGVyYXRpb24oKSB3aGVuIHJlcXVlc3RlZCB0byBjb3B5IGZpbGVzLCBmaWd1cmUgb3V0IHdoZW4gdGhlCglkZXN0aW5hdGlvbiBpcyB0byBiZSB0cmVhdGVkIGFzIGEgZGlyZWN0b3J5IGFuZCBoYW5kbGUgdGhvc2UgY2FzZXMuCgoJKiBjb25maWd1cmUuYWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglGaXhlZCBpbnN0YWxsYXRpb24gaXNzdWVzIGNhdXNlZCBieSBuZXcgY29uZmlndXJlIHNjcmlwdC4KCjIwMDItMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbnZlci93aW52ZXIuYywgd2luZG93cy9ub25jbGllbnQuYywgbWlzYy9vcHRpb25zLmM6Cgl2ZXJzaW9uLmggaXMgbm93IGluIGluY2x1ZGUvd2luZSBkaXJlY3RvcnkuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dpbmVsYXVuY2hlci5pbiwKCSAgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwKCSAgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdmVyc2lvbi5oLCBpbmNsdWRlL3dpbmUvLmN2c2lnbm9yZSwKCSAgY29uZmlndXJlLmFjLCBjb25maWd1cmUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBWRVJTSU9OLAoJICBjb25maWd1cmU6CglVcGdyYWRlZCBjb25maWd1cmUgc2NyaXB0IHRvIHVzZSBhdXRvY29uZiAyLjUwIGZlYXR1cmVzLCBhbmQgcmVuYW1lZAoJdG8gY29uZmlndXJlLmFjLgoJQ2hhbmdlZCBhIGZldyB0aGluZ3MgdG8gYmV0dGVyIGZvbGxvdyB0aGUgYXV0b2NvbmYgZ3VpZGVsaW5lcy4KCgkqIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlnLnN1YjoKCVVwZGF0ZWQgdG8gbmV3ZXIgdmVyc2lvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCU1hcnRpbiBEYWxlY2tpIDxkYWxlY2tpQGV2aXNpb24tdmVudHVyZXMuY29tPgoJU29tZSBhcnR3b3JrIG9uIHRoZSBkZWZhdWx0IGljb25zLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRHJhd1RleHQgc2hvdWxkIG5vdCBzcGxpdCB3b3JkcyBqdXN0IGJlY2F1c2Ugb2YgY2xpcHBpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFNoZWxsRXhlY3V0ZTE2LCBtYWtlIHN1cmUgdGhlcmUgaXMgYSBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgYW5kCglwYXJhbWV0ZXJzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBhZ2FpbnN0IE5VTEwgd3NhZGRybGVuIGluIHdzX3NvY2thZGRyX2FsbG9jLgoKMjAwMi0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgR0RCIG5lZWQgdG8gaGF2ZSB0aGUgZmlsZW5hbWUgZGF0YSBhdmFpbGFibGUKCWZvciBlYWNoIHNlY3Rpb24sIHNvIHdlIG5lZWQgdG8gb3V0cHV0IGl0IGFnYWluIGZvciB0aGUgZGF0YSBzZWN0aW9uLgoKCSogd2luMzIvZWRpdGxpbmUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEhvbWUsIEVuZCBhbmQgRW50ZXIgb24gdGhlIGtleXBhZCB3b3JrIGluIHRoZSBkZWJ1Z2dlci4KCgkqIHdpbjMyL2ZpbGUuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJU2V0RmlsZUF0dHJpYnV0ZXMgcmV0dXJucyBub3cgYW4gZXJyb3IgaWYgdGFyZ2V0IGZpbGUgaXMgb24gQ0RST00uCgoJKiBmaWxlcy9kcml2ZS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGRlZCBtaXNzaW5nIGJyZWFrIHN0YXRlbWVudC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IFNIUmVnV3JpdGVVU1ZhbHVle0F8V30uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglXaGVuIHRoZSBjb21tYW5kSUQgd2FzIGJlaW5nIHRyZWF0ZWQgYXMgdGhlIGluZGV4LCBubyBjaGVjayBmb3IgaW5kZXgKCWdyZWF0ZXIgdGhhbiBudW1iZXIgb2YgYnV0dG9ucyB3YXMgZG9uZS4gTm93IGZpeGVkLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCByZWdyZXNzaW9uIGluIHNvbWUgcHJvZ3JhbXMgZHVlIHRvIENMUl9ERUZBVUxUIGZpeC4gTm90aWNlZCBpbgoJY29udHJvbC1zcHkgcmViYXIuZXhlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBUb0FzY2lpL1RvVW5pY29kZSB0byB3b3JrIHdpdGggc2NhbkNvZGUgPSAwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvcnJlY3QgdGVzdHMgaW52b2x2ZWQgd2l0aCBwcm9jZXNzaW5nIHRoZSBMVklGX0RJX1NFVElURU0gZmxhZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUluaXRpYWxpemUgcHN6VGV4dCB0byAwIGZvciBpbnRlcm5hbCAtPmNlSXRlbSB0byBlbGltaW5hdGUgbW92ZXMgdG8KCWdhcmJhZ2UgbG9jYXRpb25zLgoKCSogd2luZWRlZmF1bHQucmVnOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBkZWZhdWx0IGZ1bmN0aW9uIG1hcnNoYWxsZXIgcmVnaXN0cnkgZW50cnkuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQdXQgaW4gcGxhY2UgYSBwcm9wZXIgdGFiIG1vZGVsIHdpdGhpbiBEcmF3VGV4dCAoYWxzbyBpbmNsdWRlcwoJc2ltcGxpZnlpbmcgVEVYVF9OZXh0TGluZVcgdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlKS4KCjIwMDItMDItMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCUMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGxlc3Nlci1tYWdvby5sY3MubWl0LmVkdT4KCUZpbGxlZCBvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGZzY2FuZiBhbmQgX2NzY2FuZi4KCgkqIGRsbHMvbXNhY20vaW50ZXJuYWwuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIGluIGNhY2hlIGluaXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIHN1cHBsaWVkIGJ1ZmZlciB3aGVuIGNvcHlpbmcgaXRlbSB0ZXh0LgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBQQU5fRkFNSUxZU1RZTEVfSU5ERVggbmFtZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCBmdHRyaWdvbi5oLCBzbyBkb24ndCBkZWZpbmUgSEFWRV9GUkVFVFlQRSBpZiB3ZSBkb24ndCBoYXZlIGl0LgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUZpeCBvZmYtYnktb25lIGVycm9yIGluIHBsYWNpbmcgdHJhaWxpbmcgXDAuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglPcmkgUGVzc2FjaCA8b3JpX3Blc3NhY2hfYmxhaEB5YWhvby5jb20+CglTZXQgV1NfRVhfVE9PTFdJTkRPVyBpbiBhIHRvb2x0aXAncyBkd0V4U3R5bGUuCgoyMDAyLTAyLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJldHVybiBvdmVyZmxvdyBpZiBubyBjbGFzcyBidWZmZXIgd2FzIHNwZWNpZmllZC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUdlcmhhcmQgR3J1YmVyIDxzcGFyaGF3a0BnbXguYXQ+CglXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvbiBzaG91bGQgYWxsb3cgdG8gY3JlYXRlIGR1cGxpY2F0ZSBrZXlzCgliZWNhdXNlIGl0IHRha2VzIHRoZSBidWZmZXIgYXMgaXQgaXMgd2l0aG91dCBhbnkgbW9kaWZpY2F0aW9ucy4KCgkqIGRsbHMveDExZHJ2L3Njcm9sbC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gWDExRFJWX1Njcm9sbERDIG9ubHkgbW92ZSBwaXhlbHMgdGhhdCBhcmUgd2l0aGluIHRoZSBjbGlwCglyZWN0YW5nbGUsIGJlZm9yZSBhbmQgYWZ0ZXIgdGhleSBhcmUgc2Nyb2xsZWQuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRml4IGZvciBHZXROZWFyZXN0Q29sb3Igc28gaXQgcmV0dXJucyB0aGUgdHJ1ZSBjb2xvciByYXRoZXIgdGhhbiB0aGUKCXN5c3RlbSBwYWxldHRlIGlmIHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBhIHBhbGV0dGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNaXNjIGZpeGVzOgoJLSBjYWNoZSB0ZXh0IG1ldHJpY3MgZm9yIHRoZSBmb250IHdlJ3JlIHVzaW5nCgktIGltcHJvdmVkIGl0ZW0gaGl0IGRldGVjdGlvbgoJLSBtb3JlIGRlYnVnZ2luZyBvdXRwdXQKCS0gaW1wbGVtZW50IExWTV9TRVRJQ09OU1BBQ0lORwoJLSBsb3RzIG9mIGJ1Z3Mgc3F1YXNoZWQKCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmgsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIExvY2FsIFNlcnZlciBDT00uCglJbXBsZW1lbnRlZCB0aGUgVHlwZWxpYiBiYXNlZCBNYXJzaGFsZXIuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9udGRkay5oLAoJICBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9wb3BwYWNrLmgsIGluY2x1ZGUvcHNocGFjazEuaCwKCSAgaW5jbHVkZS9wc2hwYWNrMi5oLCBpbmNsdWRlL3BzaHBhY2s0LmgsIGluY2x1ZGUvcHNocGFjazguaCwKCSAgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNuZHIuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVNWQyBjb21waWxlIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBQUk9HUkVTU19SZWZyZXNoLCBhbHdheXMgZG8gSW52YWxpZGF0ZVJlY3QoKSB0byByZXBhaW50LgoJQWRkIFdNX0VSQVNFQktHTkQgaGFuZGxlciBhcyBpbiBXaW5kb3dzLgoJQmUgc2xpZ2h0bHkgc21hcnRlciB3aGV0aGVyIGludmFsaWRhdGUgYmFja2dyb3VuZCBvciBub3QuCglBbHdheXMgdHJlYXQgd1BhcmFtIGFzIElOVCB0byBub3QgbG9zZSBzaWduZWQgdmFsdWVzLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglWYXJpb3VzIGNsZWFudXBzOgoJLSBnZXQgcmlkIG9mIHRoZSBzdGF0aWMgZGF0YSBtZW1iZXIKCS0gcGFzcyB0aGUgaW5mb1B0ciBhcm91bmQgaW5zdGVhZCBvZiB0aGUgaHduZAoJLSBmaXggaW5kZW50YXRpbi9zdHlsZSBhIGJpdCB0byBtYWtlIGl0IGNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdCBvZgoJICB0aGUgZmlsZS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVNwbGl0IHRoZSBwYXRoIGFuZCB3b3JkL2VuZCBlbGxpcHNpZmljYXRpb24gb3V0IG9mIHRoZSBtYWluIGZ1bmN0aW9uCglhbmQgZG8gdGhlbSB0aG9yb3VnaGx5LiBUaGUgZXhpc3RpbmcgbWV0aG9kIHdvdWxkIGJlIGluY29ycmVjdCB3aGVyZQoJdGFicyB3ZXJlIGludm9sdmVkIGFuZCBpbiBzb21lIGtlcm5pbmcgc2l0dWF0aW9ucy4KCjIwMDItMDItMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgZm9yIGdlbmVyYXRpb24gb2YgLmRlZiBmaWxlcyBmcm9tIC5zcGVjIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUNvbXBsZXRlIExpc3R2aWV3IFVuaWNvZGlmaWNhdGlvbi4KCVNpbXBsaWZ5IHRoZSBzZXR0aW5nIG9mIChzdWIpaXRlbSB0ZXh0IGJ5IHVzaW5nIGNvbW1vbiBjb2RlLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fdXNlci5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIHdpbmVjb25zb2xlIG5vdyBleGl0cyBpZiB0aGUgc3RhcnRlZCBwcm9ncmFtIGluc2lkZSBpdCB0ZXJtaW5hdGVzCgkgIGJlZm9yZSB0aGUgY29uc29sZSBhY3R1YWxseSBzdGFydHMgdXAuCgktIFJlbW92ZWQgdGhlIGxhc3QgQW5zaSBpbXBvcnRlZCBBUElzIHNpbmNlIG5vdyBQcm9wc2hlZXQgaGFzIGEgZGVjZW50CgkgIFVuaWNvZGUgaW50ZXJmYWNlLgoJLSBGaXhlZCBhIGNvdXBsZSBvZiBtZW51IHJlbGF0ZWQgYnVncyAoc3RhdGVzIHdlcmUgd3JvbmcpLgoJLSBGaW5pc2hlZCBpbnB1dCBzZWxlY3Rpb24gY29kZSAobWFyayBhbmQga2V5IGZvciBzZWxlY3Rpb24gbW92aW5nIGFyZQoJICBvcGVyYXRpb25hbCwgZ2VuZXJhdGluZyBtb3VzZSBldmVudHMgdG8gcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdGhlCgkgIGNvbnNvbGUpLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvc291cmNlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYmFkIGJlaGF2aW9yIHdoZW4gbWFueSBzeW1ib2xzIHdpdGggc2FtZSBuYW1lcyB3aGVyZSBmb3VuZC4KCVJlbW92ZWQgZXh0ZXJuYWwgcmVhZGxpbmUgc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBTZXRJdGVtVy4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU3RvcmluZyBhbiBJUCBhZGRyZXNzIGluIGEgc2lnbmVkIGludCByZXN1bHRzIGluIGJ1Z3MgaWYgaXQgc3RhcnRzCgl3aXRoID49MTI4LgoKCSogbWVtb3J5L2NvZGVwYWdlLmMsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVpbXBsZW1lbnQgR2V0U3RyaW5nVHlwZUEgYW5kIEdldFN0cmluZ1R5cGVFeEEuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCURvIG5vdCBkZXN0cm95IElUeXBlTGliIGhlbGQgYnkgSVR5cGVJbmZvIGJlZm9yZSB0aGUgbGF0dGVyIGlzIGZyZWVkLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVZUX0VNUFRZIGNhbiBiZSBjb2VyY2VkIHRvIFZUX0k0LCB2YWx1ZSAwLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHN0eWxlIGNvcnJlY3RpbmcgY29kZSB0byB0aGUgV01fQ1JFQVRFIGhhbmRsZXIgYW5kIGFkZGVkCgljbGVhcmluZyBvZiBXU19FWF9DTElFTlRFREdFIGFuZCBXU19FWF9XSU5ET1dFREdFIGFzIGluIFdpbmRvd3MuCglBZGRlZCBTZXRXaW5kb3dQb3MoU1dQX0ZSQU1FQ0hBTkdFRCkgdG8gbWFrZSBjaGFuZ2VzIHRha2UgZWZmZWN0LgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBHZXRTeXN0ZW1NZXRyaWNzKCkgdG8gZm9yIGNhcHRpb24gbWV0cmljcyBpbiBOT05DTElFTlRNRVRSSUNTCglzdHJ1Y3QuIEluaXRpYWxpemUgaVNjcm9sbFdpZHRoIGFuZCBpU2Nyb2xsSGVpZ2h0IGVudHJpZXMgZm9yCglTUElfR0VUTk9OQ0xJRU5UTUVUUklDUy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggcHJvYmxlbSBleHBvc2VkIGJ5IHRoZSBpbXByb3ZlbWVudHMgaW4gdmVyc2lvbiA4Yi4gRGVtb25zdHJhdGVkIGJ5CglPRSA0LgoKMjAwMi0wMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBsaWJ0ZXN0L2hlbGxvNS5jLAoJICBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsCgkgIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9zdHJpbmcuYywKCSAgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywKCSAgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZSBfX3N0ZGNhbGwvX19jZGVjbCB0byB0aGUgcmlnaHQgcGxhY2UuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LCBNYWtlLnJ1bGVzLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgcnVudGVzdCAidXNlIHN0cmljdCIuCgktIEFkZGVkIG5ldyBvcHRpb24gLU0gdG8gc3BlY2lmeSB3aGljaCBtb2R1bGVzIHNob3VsZCBiZSB0ZXN0ZWQgYXMKCSAgYnVpbHRpbi4KCgkqIGxpYnRlc3QvdmFydGVzdC5jLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYywgZGxscy93aW5lcHMvbWthZ2wuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJbWFsbG9jLmggaXMgb2Jzb2xldGUgYW5kIHN0ZGxpYi5oIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzoKCVdlIGNhbiB1c2Ugbm9ybWFsIGltcG9ydHMgZm9yIHNoZWxsMzIgbm93LgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRW5zdXJlIHRoYXQgdGhlIHdob2xlIG1vZGlmaWVkIHRleHQgaXMgcmV0dXJuZWQgZnJvbSBEcmF3VGV4dEV4QS4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBkbGxzL2dkaS9kcml2ZXIuYzoKCURvIG5vdCB1c2UgdGhlIFBFQiBsb2NrIGFzIGxvYWRlciBsb2NrLCB1c2UgYSBzZXBhcmF0ZSBjcml0aWNhbAoJc2VjdGlvbiBmb3IgdGhhdCAoYW5kIGZvciB0aGUgZ3JhcGhpY3MgZHJpdmVycykuCgoJKiB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCBzb21lIG1vcmUgbWlzc2luZyBwYXJlbnRoZXNpcyBpc3N1ZXMuCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYiwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGFkZCBkb2N1bWVudGF0aW9uIHNlY3Rpb24gdG8gUkVBRE1FCgktIHVwZGF0ZWQgSE9XVE8td2luZWxpYgoJLSBhZGRlZCBuYXRpdmUgRExMIGNvbmZpZyBpbmZvIHRvIGNvbmZpZ3VyaW5nLnNnbWwKCS0gZ3JlYXRseSBpbXByb3ZlIGRpcmVjdG9yeSBkZXNjcmlwdGlvbiBvZiB3aW5lLmNvbmYgbWFuIHBhZ2UKCS0gYWRkIC0tZGVidWdtc2cgK2FsbCB3YXJuaW5nIHRvIHdpbmUgbWFuIHBhZ2UKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZsaXAgQTwtPlcgY29udmVyc2lvbiBpbiBkaXNwaW5mb19ub3RpZnlULgoKMjAwMi0wMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggdG8gR2V0SXRlbVcgdG8gc3RvcCB3aGlwaW5nIG91dCB0aGUgaXRlbXMgdGV4dC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCWNvbmZpZy5oIHNob3VsZCBiZSBpbmNsdWRlZCBmaXJzdCAoaWYgYXQgYWxsKS4KCUZpeCByZXR1cm4gb2YgY29udmVydF92YWx1ZS4KCgkqIGRsbHMvdGFwaTMyL2xpbmUuYywgaW5jbHVkZS90YXBpLmg6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRG9uJ3QgdHJ5IHRvIHNldCBmaWVsZHMgaW4gbm9uZXhpc3RhbnQgbHBMaW5lQ291bnRyeUxpc3QuCglTdXBwbHkgdmFsaWQgdGFwaSBjb2Rlcy4KCjIwMDItMDEtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvYXRvbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBbGxvdyBpbnRlZ2VyIGF0b21zIGluIHNldF9wcm9wZXJ0eSBhbmQgcmVtb3ZlX3Byb3BlcnR5LiBOZWVkZWQgYnkKCUZpbmRUZXh0IGNvbW1vbiBkaWFsb2cuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUxPQURfTElCUkFSWV9BU19EQVRBRklMRSBtb2R1bGVzIG11c3QgYmUgbWFwcGVkIGxpa2Ugbm9ybWFsIGZpbGVzLCBub3QKCWxpa2UgUEUgaW1hZ2VzLiBGaXhlZCByZXNvdXJjZSBsb2FkaW5nIHRvIGhhbmRsZSB0aGF0LgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsCgkgIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLAoJICBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvbmV0c3BpLmgsIGluY2x1ZGUvb2xlLmgsCgkgIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3Byc2h0LmgsCgkgIGluY2x1ZGUvcmljaGVkaXQuaCwgaW5jbHVkZS9zZXR1cGFwaS5oLCBpbmNsdWRlL3NobG9iai5oLAoJICBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS90YXBpLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3Zmdy5oLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5nZGkuaCwKCSAgaW5jbHVkZS93aW5pbmV0LmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2luc3ZjLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dzMnNwaS5oLCBpbmNsdWRlL2NhbGxiYWNrLmgsCgkgIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZDNkY2Fwcy5oLAoJICBpbmNsdWRlL2QzZGhhbC5oLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZGRlbWwuaCwKCSAgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RkcmF3aS5oLCBpbmNsdWRlL2RpbnB1dC5oLAoJICBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2Rzb3VuZC5oLAoJICBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvbWlzY2VtdS5oLAoJICBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZSBfX3N0ZGNhbGwvX19jZGVjbCB0byB0aGUgcmlnaHQgcGxhY2UuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2l2ZSB1c2VycyBhIGhpbnQgdG8gY2xlYW4gdGhlaXIgY29uZmlnIGZyb20gY29tbWVudHMgYW5kIGVtcHR5IGxpbmVzCglmb3IgYSBidWcgcmVwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJQWRkZWQgbWlzc2luZyBwYXJlbnRoZXNpcyBpbiBTaEdldEZpbGVJbmZvQS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBOb2cgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJRml4ZWQgZnVuY3Rpb24gMHhiLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGluY2x1ZGUvcnBjZGNlLmgsIHdpbjMyL2luaXQuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21hcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2ltZzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgdXBkYXRlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL3Njcm9sbC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUNvZGVXZWF2ZXJzCglNaW5vciBmaXhlcy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglQYWludCBjb250cm9sIGltbWVkaWF0ZWx5IG9uIFdNX1NFVFRFWFQuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUNvZGVXZWF2ZXJzCglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CgktIGJldHRlciB0cmFjZSBvdXRwdXQKCS0gc3VwcG9ydCBzdHJpbmcgc2VudCBpbiBieSBhZGRyZXNzLCByYXRoZXIgdGhlbiBpbmRleAoJLSBhZGQgRklYTUVzIGZvciBtdWx0aXBsZSBpbWFnZSBsaXN0cwoJLSBwcm90ZWN0IGFnYWlucyBpbmV4aXN0ZW50IGJ1dHRvbnMKCS0gY2FsbCB1cCB0byB0aGUgRGVmV2luZG93UHJvYyB3aGVuIGVyYXNpbmcgYmtnbmQgd2hlbiBhcHByb3ByaWF0ZQoKCSogZGxscy93aW5lZG9zL2ludDMzLmM6IE5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglJbXBsZW1lbnQgZnVuY3Rpb24gMHhiIChSZWFkIG1vdXNlIG1vdGlvbiBjb3VudGVycykgYW5kIDB4ZiAoU2V0CgltaWNrZXkvcGl4ZWwgcmF0aW8pLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJLSBJbnRyb2R1Y2UgYSBzaWduaWZpY2FudCBkZXNpZ24gZGVjaXNpb24uCgktIFJlY2FsY3VsYXRlIHRoZSBwcmVmaXggbG9jYXRpb24gaWYgZWxsaXBzaWZpY2F0aW9uIGFsdGVycyBpdC4gIFRoaXMKCSAgY2FyZWZ1bGx5IGRvZXMgTk9UIGVtdWxhdGUgYSBNaWNyb3NvZnQgYnVnIGluIHdoaWNoIHJlcHJlZml4aW5nIGlzCgkgIHdyb25nIHdoZW4gdGhlIGZpcnN0IGNoYXJhY3RlciByZW1vdmVkIGJ5IGVsbGlwc2lmaWNhdGlvbiBpcyB0aGUgb25lCgkgIHRoYXQgd291bGQgaGF2ZSBiZWVuIHVuZGVybGluZWQgKHVuZGVyIFdpbjk4IGF0IGxlYXN0KS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgQ2hlY2tUb2tlbk1lbWJlcnNoaXAgYW5kIEdldEFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCURvbid0IHJlcGFpbnQgaGVhZGVyIHdoZW4gc2Nyb2xsaW5nIGEgbGlzdHZpZXcgdmVydGljYWxseS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gZml4IG9yZGVyIG9mIHBhcmFtZXRlcnMgaXMgU2VuZE5vdGlmeQoJLSBhbHdheXMgdXNlIHRoZSBkbGcgY250cmwgSUQgb2YgdGhlIHNlbmRlcgoKCSogd2luZG93cy9yZWN0LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgTlVMTCBjaGVja3Mgb24gYWxsIHJlY3RhbmdsZSBwb2ludGVycy4KCjIwMDItMDEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgTGRyRGlzYWJsZVRocmVhZENhbGxvdXRzRm9yRGxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBDaGVja0VzY2FwZXNbQVddIGFuZCBFeHRyYWN0QXNzb2NpYXRlZEljb25FeFcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGxvY2F0aW9uIG9mIGxvY2FsIGFwcGxpY2F0aW9uIGRhdGEuCgoJKiBkbGxzL250ZGxsL3NlYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFJ0bEFkZEFjY2Vzc0FsbG93ZWRBY2UgcmV0dXJuIHZhbHVlLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgc3R1YnMgZm9yIE5kckRsbENhblVubG9hZE5vdyBhbmQgTmRyRGxsR2V0Q2xhc3NPYmplY3QuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgd2luMzIvaW5pdC5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdldENvbXB1dGVyTmFtZUV4W0FXXSBzZW1pLXN0dWIuCgoJKiBpbmNsdWRlL3dpbmluZXQuaCwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRmluZEZpcnN0VXJsQ2FjaGVFbnRyeVtBV10gc3R1YnMuCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tYXBpLmgsIGluY2x1ZGUvbWFwaWNvZGUuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIE1BUEkgc3R1YnMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvZHVtbXkuYywKCSAgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjLCBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHBhc3MtdGhyb3VnaCBtc3ZjcnQyMC4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEV4dHJhY3Qgc3R1Yi4KCgkqIGluY2x1ZGUvaW1tLmgsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgSW1tRGlzYWJsZUlNRSBzdHViLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIF93bWFrZXBhdGguCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDY3LmMsIGZpbGVzL2Rvc19mcy5jLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW46CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGRlZCBzdXBwb3J0IGZvciBET1MgRU1TIG1lbW9yeS4KCgkqIHRvb2xzL3dpbmVtYWtlciwgZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocSwKCSAgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbCwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCSd0ZXN0IC1lJyBpcyBub3Qgc3VwcG9ydGVkIG9uIFNvbGFyaXMsIHJlcGxhY2Ugd2l0aCAnLWYnIG9yICctZCcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggcHJvYmxlbXMgd2l0aCBsaXN0dmlldyBub3RpZmljYXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHdyaXRlIGJleW9uZCBlbmQgb2YgY29sb3IgdGFibGUgaW4gWDExRFJWX0RJQl9TZXRESUJDb2xvclRhYmxlLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCS0gYWRkIG5ldyBTZXRSYW5nZSBmdW5jdGlvbnMgKGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUpCgktIHBhc3MgdGhlIGluZm9QdHIgYXJvdW5kIGluc3RlYWQgb2YgdGhlIGh3bmQKCS0gdXNlIFctZnVuY3Rpb25zIGluc3RlYWQgb2YgQS1mdW5jdGlvbnMKCS0gbW9yZSBjaGVja3MgaW4gY2FzZSBvZiBmYWlsdXJlcwoJLSBtYWtlIGluZGVudGF0aW9uIGFuZCBzdHlsZSBjb25zaXN0ZW50IHRocm91Z2hvdXQgdGhlIGZpbGUKCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvcHJzaHQuaDoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVByb3BlcnR5IHNoZWV0IFVuaWNvZGlmaWNhdGlvbi4KCVN1cHBvcnQgYWRkaXRpb25hbCB3aXphcmQgZmxhZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEltYWdlTGlzdF9Xcml0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgc29tZSB1c2VsZXNzIGVycm9yIG1lc3NhZ2VzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBkZWZpbmUgSEFWRV9GUkVFVFlQRSB1bmxlc3Mgd2UgaGF2ZSBmcmVldHlwZS5oLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdCBvcHRsZW4gd2hlbiBXU19zZXRzb2Nrb3B0IGlzIGNhbGxlZCB3aXRoIFNPX0xJTkdFUi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV2VpcmQgdGhpbmcgd2l0aCBsY2lkIG9mIGxpYnJhcnkgaXMgdGhhdCBpZiBzdWJsYW5nIGlzIG5ldXRyYWwgdGhlbiB3ZQoJcmV0dXJuIHRoZSBwcmltYXJ5IGxhbmcgZWxzZSB3ZSByZXR1cm4gMC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZmlsbCBjb2xvcm1hcCBiZXlvbmQgZW5kIG9mIHNjcmVlbiBkZXB0aC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUNoYXJsZXMgTG9lcCA8Y2hhcmxlc0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBmaWxlIGV4dGVuc2lvbiBwcm9ibGVtIGluIHRoZSBmaWxlIGRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBJc0JhZFN0cmluZ1B0ckEgY2FsbCB0aGF0IGNhdXNlZCB0cm91YmxlLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUNoYXJsZXMgTG9lcCA8Y2hhcmxlc0Bjb2Rld2VhdmVycy5jb20+CglGaXggZXJyb3JzIHJlc3VsdGluZyBmcm9tIG1pc3NpbmcgcGFyZW50aGVzaXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRleHQvQmtnbmQgY29sb3IgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU2ltcGxpZnkgYW5kIGZpeCBsaXN0dmlldyBlbGxpcHNpZmljYXRpb24gb2YgbGFyZ2UgdGV4dCBsYWJlbHMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVhGT05UX0dldEF2Z0NoYXJXaWR0aDogQWx3YXlzIHJvdW5kIHVwLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdDogRml4ZWQgY29weS9wYXN0ZSBidWcuCgoJKiBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIG1zZG9zL2Rvc21lbS5jLAoJICB3aW5kb3dzL3dpbnByb2MuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgY29udHJvbHMvbWVudS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1ha2UgRklYTUVzIG1vcmUgZ3JlcC1hYmxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJQXZvaWQgY29udmVydGluZyBub25leGlzdGVudCB0ZXh0IGZyb20gQS0+Vy4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglVc2VzIFhyZW5kZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNsaWVudCBzaWRlIGZvbnQgcmVuZGVyaW5nLgoJQWRkcyBuaWNlIHRoaW5ncyBsaWtlIGFudGktYWxpYXNlZCB0ZXh0LgoKCSogZGxscy94MTFkcnYvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lb3NzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2F2ZW1hcC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21jaXNlcS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaXdhdmUvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9taWRpbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYXZpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vbWNpY2RhLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vam95c3RpY2svLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9tY2lhbmltLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL3BzYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvcmFzYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLAoJICBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLCBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwKCSAgZGxscy9tc25ldDMyLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvbWVzc2FnZXMvLmN2c2lnbm9yZSwKCSAgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsIGRsbHMvZGNpbWFuMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUF2b2lkIHdpbGRjYXJkcyBpbiAuY3ZzaWdub3JlLgoKCSogb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVZhcmlvdXMgZml4ZXMgZm9yIGdkaSBmb250IGhhbmRsaW5nIGNvZGUgaW5jbHVkaW5nOgoJLSBVc2luZyBUVHMgVkRNWCB0YWJsZSB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgZXhhY3RseSB0aGF0IHNhbWUgc2l6ZQoJICBmb250IHRoYXQgV2luZG93cyB1c2VzLgoJLSBGaXhlcyB0byBtYW55IG1lbWJlcnMgb2YgdGhlIG1ldHJpY3Mgc3RydWN0dXJlcy4KCS0gRm9udCBjYWNoZS4KCS0gUm90YXRlZCB0ZXh0IHN1cHBvcnQuCgktIFN1cHBvcnQgZm9yIEdHT19HUkFZP19CSVRNQVAgKHJlYWR5IGZvciBhbnRpLWFsaWFzZWQgdGV4dCkuCgktIFN1cHBvcnQgZm9yIEdHT19OQVRJVkUuCgoJKiBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5jLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLAoJICBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJQ2hhbmdlcyB3aW5lX21haW4gdG8gbWFpbiB0byBwcm9wZXJseSBidWlsZCBvbiBhbGwgcGxhdGZvcm1zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJQ2xlbWVucyA8dGhlcmFweUBlbmRvcnBoaW4ub3JnPgoJU2hvdWxkIHByb2Nlc3MgdGhlIC5keW5zeW0gb2Ygc2hhcmVkIGxpYnJhcmllcyBpbnN0ZWFkIG9mIHRoZSAuc3RhYi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgPT0vIT0gbWlzbWF0Y2guCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBiZSB0b28gc21hcnQgYW5kIGFkZCBXU19DQVBUSU9OIGluIEFkanVzdFdpbmRvd1JlY3RFeC4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBdm9pZCBjb25mbGljdCB3aXRoIGh0b25sICYgZnJpZW5kcyBpbiBXaW5lbGliIG9uIEZyZWVCU0QuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbmFtZSBzX2FkZHIgdG8gc3JjX2FkZHIgdG8gYXZvaWQgYSBjb25mbGljdCBvbiBTb2xhcmlzLgoJUmVuYW1lIGRfYWRkciB0byBkc3RfYWRkciBmb3Igc3ltbWV0cnkuCgoJKiBpbmNsdWRlL21zdmNydC9zZXRqbXAuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJlZml4IF9KQkxFTiB0byBhdm9pZCBjb25mbGljdCBvbiBGcmVlQlNELgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZsZXNoZWQgb3V0IHNvbWUgbWV0YWZpbGUgY29udmVyc2lvbnMuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgY29ycmVjdCBoYWxmdG9uZSBwYWxldHRlLgoKCSogZGxscy93aW5lZG9zL2ludDMzLmM6IE5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglJbXBsZW1lbnQgZnVuY3Rpb24gbnVtYmVyIDB4NSAoUmV0dXJuIG1vdXNlIGJ1dHRvbiBwcmVzcyBpbmZvcm1hdGlvbikuCgoJKiBzZXJ2ZXIvZmlsZS5jOgoJV29yayBhcm91bmQgZnRydW5jYXRlIGltcGxlbWVudGF0aW9ucyB0aGF0IGRvbid0IHN1cHBvcnQgZXh0ZW5kaW5nCglmaWxlcy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IFBhdGhDcmVhdGVGcm9tVXJse0F8V30gdG8gcmV0dXJuIHRoZSBjb3JycmVjdCBlcnJvciBjb2RlIGluIGFsbAoJY2FzZXMuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IFNIUmVnT3BlblVTS2V5e0F8V30gYW5kIFNIUmVnUXVlcnlVU1ZhbHVle0F8V30gdG8gYWN0dWFsbHkgdXNlCglwcmV2aW91c2x5IG9wZW4ga2V5cy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTG93LXJlc29sdXRpb24gYW5kIGxvdy1jb2xvciBWR0EgbW9kZXMgYXJlIG5vdyBtYXBwZWQgaW50byBtb2RlCgk2NDB4NDgweDguIEFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIGZvdXIgYml0IG1vZGVzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUHV0IHRoZSBwcmVmaXgtdW5kZXJsaW5lLWRyYXdpbmcgYXdheSBpbnRvIGl0J3Mgb3duIGZ1bmN0aW9uIHNvIHdlIGNhbgoJc2VlIHdoYXQgaXMgaGFwcGVuaW5nLgoKCSogZmlsZXMvZHJpdmUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglHZXREaXNrRnJlZVNwYWNlIG5lZWRzIHRvIHNldCB0aGUgbGFzdCBlcnJvciBvbiBmYWlsdXJlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQSBjb3VwbGUgb2YgYWRkaXRpb25zLgoKMjAwMi0wMS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAyMDEyMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wMS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGF2ZXJhZ2Ugd2lkdGggY2FsY3VsYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGhlIFxcPG5yPiBtYWdpYyBpbiBMb2FkVHlwZUxpYkV4IGZvdW5kIGRpcmVjdG9yaWVzLCB3aGljaCB3YXMgbm90CglpbnRlbmRlZC4gUmV0dXJuIGVycm9yIGluIHRoYXQgY2FzZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBYm9ydCBpZiB3ZSBkbyBub3QgZmluZCB5YWNjIG9yIGJpc29uLgoKCSogaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBvbGUvdXVpZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlZCBndWlkcyBuZWVkZWQgZm9yIFByb3h5L1N0dWIgZmFjdG9yaWVzIHRvIHJlc3BlY3RpdmUgLmggZmlsZXMsCglhZGQgdG8gbGlid2luZV91dWlkLgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvY3R5cGUuYywKCSAgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLAoJICBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZXhpdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywKCSAgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLCBkbGxzL21zdmNydC90aW1lLmMsCgkgIGRsbHMvbXN2Y3J0L3djcy5jOgoJRG9uJ3QgaW5jbHVkZSBkZWJ1Z3Rvb2xzLmggaW4gdGhlIGhlYWRlciBmaWxlLCBtb3ZlZCBpdCB0byB0aGUgQyBmaWxlcwoJdGhhdCBuZWVkIGl0IChhbmQgdXNlZCB0aGUgbmV3IHdpbmUvZGVidWcuaCB3aGlsZSB3ZSBhcmUgYXQgaXQpLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICB0b29scy93aW5lZHVtcC9vdXRwdXQuYzoKCU1vdmVkIGRlYnVnIGRlZmluaXRpb25zIHRvIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglSZW1vdmVkIHVzZSBvZiBTRVRfREVCVUdHSU5HLCBpdCdzIGJyb2tlbiBhbnl3YXkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNvbnNpc3RlbnQgdXNhZ2Ugb2YgaXN0cmluZywgdXNlIFNUUl9bR2V0fFNldF1QdHIgd2hlcmUgYXBwcm9wcmlhdGUuCgoJKiB3aW5kb3dzL3dpbi5jOgoJVG9tbXkgU2NodWx0eiBMYXNzZW4gPHRsYXNzZW5AdGxhc3Nlbi5kaz4KCU1ha2UgRW51bVdpbmRvd3MgcmV0dXJuIFRSVUUgaWYgbm8gd2luZG93cyBleGlzdHMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgaW5jbHVkZS93aW5zcG9vbC5oOgoJTWFyayBHLiBBZGFtcyA8bWdhZGFtc0BzeW1wYXRpY28uY2E+CglBZGQgR2V0RGVmYXVsdFByaW50ZXIoKSBmdW5jdGlvbnMuCgoyMDAyLTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9vcHRpb25zLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgdGhlIFdpbmUgdHJhY2UgZmFjaWxpdGllcyBhY2Nlc3NpYmxlIGZyb20gV2luZWxpYiBhcHBsaWNhdGlvbnMuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy93c29jazMyL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb21tZW50IG91dC9pZmRlZiBvdXQgdW51c2VkIGNvZGUgYW5kIHZhcmlhYmxlcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIHNlY3Rpb249PU5VTEwgKGVycm9yKSBpbiBXcml0ZVByaXZhdGVQcm9maWxlU3RyaW5nQS4KCgkqIGRsbHMveDExZHJ2L213bS5oLCBkbGxzL3gxMWRydi93aW5kb3cuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgTVdNIGhpbnRzLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ2hlY2sgZm9yIGNvbW1vbiBicm9rZW4gblZpZGlhK01lc2EgT3BlbkdMIGxpYnJhcnkgc2V0dXBzLgoJQWRkIHNvbWUgcXVvdGluZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmludCB0aGUgc3RyZXJyb3IgaW5zdGVhZCBvZiBqdXN0IHRoZSBlcnJuby4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbWlzc2luZyBjYXN0LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBpbnZhbGlkIEMgY29kZSAodW5kZWZpbmVkIGJlaGF2aW9yKS4KCgkqIGluY2x1ZGUvY29uc29sZS5oLCB3aW5kb3dzL2RlZmRsZy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhIGNvdXBsZSBvZiB3YXJuaW5ncyBhbmQgYSB0eXBvLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtLCBwcm9ncmFtcy93aW5ldGVzdC90ZXN0cy93aW5lLnBsLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzOgoJRG9uJ3QgY29udmVydCAicHRyIiByZXR1cm4gdHlwZSB0byBhIFBlcmwgc3RyaW5nLgoJQ2FsbCBHZXRQcm9jQWRkcmVzcyBvbmx5IHdoZW4gYSBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQsIG5vdCBhdAoJZGVjbGFyYXRpb24gdGltZS4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZpeGVkIGZ1bmN0aW9uIHByb3RvdHlwZSB0aGF0IGNvbmZ1c2VkIHdpbmFwaV9leHRyYWN0LgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hZHZhcGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hdmlmaWwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9jb21jdGwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9jb21kbGczMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kY2ltYW4zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kZHJhdy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kaW5wdXQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZHBsYXl4LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2Rzb3VuZC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9nZGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9nbHUzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9pY21wLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2ltYWdlaGxwLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2ltbTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2pveXN0aWNrX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9rZXJuZWwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9sejMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21jaWFuaW1fZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21jaWF2aV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpY2RhX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tY2lzZXFfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21jaXdhdmVfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21pZGltYXBfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21wci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc2FjbTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zYWNtX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc3ZjcnQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXN2ZnczMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9udGRsbC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vZGJjMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlYXV0MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlY2xpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlZGxnLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZXBybzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZXN2cjMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29wZW5nbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3BzYXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3F1YXJ0ei5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9yYXNhcGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9yaWNoZWQzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9ycGNydDQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2VyaWFsdWkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2V0dXBhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hkb2N2dy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGVsbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NobHdhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdGFwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VybG1vbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS91c2VyMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdmVyc2lvbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93MzJza3JubC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lZG9zLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVvc3NfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmluZXQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubW0ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc3Bvb2xfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnRydXN0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dzMl8zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93c29jazMyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglHZW5lcmF0ZSBQZXJsIG1vZHVsZXMgZGVmaW5pbmcgcHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zLgoKMjAwMi0wMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwgZGxscy91c2VyL2RkZS9taXNjLmMsCgkgIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGluaXRpYWxpc2F0aW9uIG1lc3NhZ2VzIGZvciByYXcgRERFLgoJRml4ZWQgRGRlQ3JlYXRlRGF0YUhhbmRsZSBmb3Igbm9uIE5VTEwgb3IgQ0ZfVEVYVCBmb3JtYXRzLgoJVmFyaW91cyBmaXhlcyAoY29zbWV0aWNzLCBiZXR0ZXIgZXJyb3IgY2hlY2tpbmcpLgoKCSogc2VydmVyL3F1ZXVlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGludGVycHJvY2VzcyBEREUgbWVzc2FnZSBwb3N0aW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIHdpbmRvd3Mvc3B5LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJLSBNYWtlIHRoZSBMaXN0VmlldyBjb250cm9sIFVuaWNvZGUgcmVhZHkuCgktIFN1cHBvcnQgYm90aCBBTlNJICYgVW5pY29kZSBMaXN0VmlldyBub3RpZmljYXRpb25zLgoJLSBGaXhlZCBhIGZldyBidWdzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBzdHJlYW1EYXRhIGFuZCBjaGVjayBvbiBmYWlsdXJlIHRvIHJlYWQgZGVzaXJlZCBkYXRhIGZyb20KCXN0cmVhbS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUHJldmVudCB0cnlpbmcgdG8gaGFuZGxlIHVuaW5pdGlhbGlzZWQgbWVtb3J5IGFzIGEgc3RyaW5nLgoKCSogd2luMzIvY29uc29sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWN0bDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHJldHVybiB2YWx1ZSBvZiBHZXRXaW5kb3dzRGlyZWN0b3J5QS9XIGFuZCBHZXRTeXN0ZW1EaXJlY3RvcnlBL1cuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJRml4IE5ldEJTRCBjb21waWxlIGVycm9yczsgQ0RJT0NSRUFEQVVESU8gaXMgbm90IGF2YWlsYWJsZSBvbiBOZXRCU0QuCgoJKiBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBHcmFkaWVudEZpbGwgc3R1Yi4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVN5c3RlbVBhcmFtZXRlcnNJbmZvOiBmaXhlZCByZXR1cm4gdmFsdWUgZm9yIFNQSV9TRVRGQVNUVEFTS1NXSVRDSC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJQmlsbCBNZWRsYW5kIChtZWRiaTAxQGFjY3BhYy5jb20pCglDb0dldENsYXNzT2JqZWN0OiBmb3IgQ0xTQ1RYX0xPQ0FMX1NFUlZFUiBhdCBsZWFzdCBsb29rIHVwIHRoZSBzZXJ2ZXIKCWluIHRoZSByZWdpc3RyeSwgZXZlbiB0aG91Z2ggd2UgZG9uJ3QgeWV0IGV4ZWN1dGUgaXQuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CgktIERvbid0IHN0cmluZyBjb3B5IGZyb20gdW5pbml0aWFsaXNlZCBzdGFjayBtZW1vcnkuICBJbiBmYWN0IGRvbid0CgkgIG1vZGlmeSB0aGUgaW5wdXQgc3RyaW5nIGlmIGl0IGRpZG4ndCBjaGFuZ2UuCgktIENvcnJlY3QgYXJyYXkgc2l6ZS4KCS0gTG9naWNhbGx5IHNlcGFyYXRlIHRoZSBjZW50cmluZyBmcm9tIHRoZSBlbGxpcHNpZmljYXRpb24uCgktIENvbW1lbnQgb24gcHJlZml4IGVycm9yLgoKCSogZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZXMgY2hhciBhcnJheSBpbiBzdHJ1Y3R1cmUgZHVtcGluZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdHViIGZvciBjb21jdGwzMi40MTkKCjIwMDItMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLnBsLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIGF0b20gdGVzdCBzY3JpcHQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC90ZXN0cy93aW5lLnBsOgoJQWRkZWQgc29tZSBwcm90b3R5cGVzIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luYmFzZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5jb24ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZGVmLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVycm9yLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmdkaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5ubHMucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubnQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lucmVnLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnNvY2syLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnNwb29sLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnVzZXIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludmVyLnBtLCBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX3N5bWJvbHM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSB0aGUgUGVybCBtb2R1bGUgZ2VuZXJhdGVkIGJ5IG1ha2Vfc3ltYm9scyBhIHJlYWwgZXhwb3J0aW5nCgkgIG1vZHVsZS4KCS0gVXNlIGNvbnN0YW50cyBpbnN0ZWFkIG9mIHZhcmlhYmxlcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZS5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGhlIHBvc3NpYmlsaXR5IChpdCBpcyBvcHRpb25hbCBmb3IgYmFja3dhcmQgY29tcGFiaWxpdHkpIHRvCglzcGVjaWZ5IGFyZ3VtZW50IHR5cGVzIGluIG9yZGVyIHRvIGZpeCBhICJidWciIGNvbmNlcm5pbmcKCWludGVnZXIvc3RyaW5nIHNjYWxhcnMuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIG9mIGFjdGlvbnMgU1BJX1NFVEtFWUJPQVJEUFJFRiwKCVNQSV9TRVRTQ1JFRU5SRUFERVIuCglTYXZlIHRvIHJlZ2lzdHJ5IHZhbHVlIG9mIFNQSV9TRVRTQ1JFRU5TQVZFQUNUSVZFIGFjdGlvbi4KCUNoYW5nZWQgcHJvY2Vzc2luZyBvZiBhY3Rpb24gU1BJX1NFVEZBU1RUQVNLU1dJVENIIHRvIGNvbmZvcm0gdG8KCVdpbmRvd3MgYmVoYXZpb3VyIG9uIGFuZCBhZnRlciBXaW5OVCA0LjAsIFdpbmRvd3MgOTUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDYXRjaCBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyBhbmQgcmV0dXJuIG91dCBvZiBtZW1vcnkgZXJyb3IuCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYywgaW5jbHVkZS9jb25zb2xlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNtYWxsIHR5cG8gZml4LgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglNb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjb21jdGwzMi5fVHJhY2tNb3VzZUV2ZW50IHRvCgl1c2VyMzIuVHJhY2tNb3VzZUV2ZW50IGFuZCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZQoJc3BlY3MuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXJzdCBzdGFnZSBvZiBEcmF3VGV4dCB1cGdyYWRlLgoJLSBSZWFycmFuZ2UgY29kZSBpbnRvIHRocmVlIGRpc3RpbmN0IGFyZWFzOyBEcmF3VGV4dCwgR3JheVN0cmluZywKCSAgVGFiYmVkVGV4dC4KCS0gUmVtb3ZlIHVudXNlZCBtYWNyb3MuCgktIE1vZGlmeSB0cmVhdG1lbnQgb2YgVGFiIGFyZ3VtZW50cyB0byBmaXQgd2l0aCBvYnNlcnZlZCBiZWhhdmlvdXIuCgkgIGUuZy4gRHJhd1RleHRFeCB3aXRoIERUX1RBQlNUT1AgYnV0IG51bGwgZHRwIHdpbGwgbm90IHRha2UgdGhlCgkgIHNldHRpbmcgZnJvbSB0aGUgZmxhZ3MuICBBbHNvIG9ubHkgdXNlcyBiaXRzIDE1IHRvIDgsIG5vdCB0aGUKCSAgaGlnaGVyIGJpdHMuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglEb24ndCBjaGVjayB0aGUgY2hlY2tzdW0gb2YgdGhlIG9yaWdpbmFsIGVjaG8gcmVxdWVzdCBwYWNrZXQgaW4gdGhlCglyZWNlaXZlZCByZXBseSBwYWNrZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgSW1hZ2VMaXN0X1tTfEddZXRGbGFncy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRG9uJ3QgY2hhbmdlIGJ1dHRvbiBzdGF0ZSBvbiBXTV9NT1VTRU1PVkUgbWVzc2FnZXMgdW5sZXNzIGxlZnQgbW91c2UKCWJ1dHRvbiBpcyBwcmVzc2VkLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIENCUGFpbnRUZXh0IHVzZSB0aGUgdGV4dCBzaXplIGFzIHJldHVybmVkIGJ5IExCX0dFVFRFWFQuIFRoZSBzaXplCglyZXR1cm5lZCBieSBMQl9HRVRURVhUTEVOIG1heSBiZSB0b28gbGFyZ2UuCgoJKiB3aW5kb3dzL2RlZmRsZy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTWFrZSBETV9TRVRERUZJRCBtZXNzYWdlIHdvcmsgZm9yIG93bmVyIGRyYXduIGJ1dHRvbnMgYXMgd2VsbC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1pY2hhZWwgQy4gTWFnZ2lvIDx2b3lhZ2VyQHZveWQubmV0PgoJQ29kZSB1c2VkIEFGX0lQWCBpbiBzb21lIHBsYWNlcyB3aGVyZSBpdCBzaG91bGQgaGF2ZSB1c2VkIFdTX0FGX0lQWC4KCgkqIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRm9yY2Ugb3JkaW5hbCBhbGxvY2F0aW9uIHN0YXJ0IGZyb20gMTAwIGFzIGluIFdpbmRvd3MuCgoJKiBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxOgoJRnJhbmdvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGluY29ycmVjdCB1c2Ugb2YgJ3Rlc3QgLWEnIChmb3IgRnJlZUJTRCkuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTGVhdmUgSUlEIGNoZWNrIHRvIHRoZSBPbGVDcmVhdGVGb250SW5kaXJlY3QsIHNvIHRoYXQgU0ZDRiB3aWxsIGhhbmRsZQoJYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQgT2xlQ3JlYXRlLi4gd2lsbC4KCjIwMDItMDEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC90ZXN0cy8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC90ZXN0cy93aW5lLnBsLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvdGVzdC5wbDoKCUludGVncmF0ZWQgdGVzdCBzY3JpcHQgZm9yIHdpbmV0ZXN0IGludG8gdGhlIG1ha2UgdGVzdAoJaW5mcmFzdHJ1Y3R1cmUuCglBZGRlZCBhIGZldyB0ZXN0cyBmb3IgdGhlIG5ldyB3aW5lLnBtIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbWFrZV9kbGxzLCBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LCBNYWtlLnJ1bGVzLmluOgoJUmV3cm90ZSBydW50ZXN0IGluIFBlcmwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBvbiB0aGUgV2luZG93cyBzaWRlLgoJQWRkZWQgb3B0aW9ucyBmb3IgaW5jbHVkZSBkaXJlY3RvcmllcywgZGVidWcgbGV2ZWwgYW5kIHRhcmdldCBwbGF0Zm9ybS4KCXNlbGVjdGlvbi4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZS5wbSwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYzoKCUFkZGVkIG9rKCkgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHN0b3AgdGhlIHRlc3Qgb24gdGhlIGZpcnN0IGVycm9yLgoJQWRkZWQgdHJhY2UoKSBmdW5jdGlvbiBmb3IgZGVidWdnaW5nIHRlc3RzLgoJQWRkZWQgc3VwcG9ydCBmb3IgdG9kbyBmdW5jdGlvbmFsaXR5LgoJTW92ZWQgd2luZS5wbSB0byBpbmNsdWRlIGRpcmVjdG9yeS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luYmFzZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5jb24ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZGVmLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVycm9yLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmdkaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5ubHMucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubnQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lucmVnLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnNvY2syLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnNwb29sLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnVzZXIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludmVyLnBtLCBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX3N5bWJvbHM6CglBZGRlZCBQZXJsIG1vZHVsZXMgY29udGFpbmluZyB0aGUgI2RlZmluZXMgdmFsdWVzIGZvciB0aGUKCWNvcnJlc3BvbmRpbmcgV2luZG93cyBoZWFkZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW46CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkLCB1cGRhdGUgaW5mb3JtYXRpb24gYWJvdXQgQXBwRGVmYXVsdC4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaCwgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLAoJICBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYzoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CgktIEFkZGVkIGRlYnVnZ2luZy4KCS0gVHJhbnNmZXIgYWxsIHJlbGV2YW50IG1lc3NhZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHNvbWUgdXNlbGVzcyB3aW5nZGkuaCBpbmNsdWRlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IE1SVUxpc3RzIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJU2hlbGxGb2xkZXJfQmluZFRvT2JqZWN0IHNob3VsZCByZXNwZWN0IHJpaWQuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+Cglfc3RhdDogQmV0dGVyIHRlc3QgZm9yIGRyaXZlIGxldHRlci4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNELgoKCSogbGlidGVzdC9oZWxsbzUuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJTG9hZExpYnJhcnkgcmV0dXJucyAwIG9uIGZhaWx1cmUsIG5vdCA8IDMyLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbjoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJVXNlIC1ETk9OQU1FTEVTU1VOSU9OIC1ETk9OQU1FTEVTU1NUUlVDVCB3aGVuIGNvbXBpbGluZy4KCgkqIGluY2x1ZGUvd2luc29jazIuaCwgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglEYW5pZWwgV2Fsa2VyIDxkaXdhbGtlckBlYXJ0aGxpbmsubmV0PgoJSW1wbGVtZW50ZWQgV1NBQWNjZXB0KCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBhZGRpdGlvbmFsIFRPT0xCQVJfQ2FsY1Rvb2xiYXIgaW4gYSBkaWZmZXJlbnQgcGF0aCBvZiBBdXRvc2l6ZS4KCS0gUmVtZW1iZXIgYW5kIHByb2Nlc3MgV01fU0VUUkVEUkFXIG1lc3NhZ2VzLgoJLSBQcm9jZXNzIHN0cmluZ3Mgc3BlY2lmaWNpZWQgaW4gSW5zZXJ0QnV0dG9ue0F8V30uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IGEgZ3JpcHBlciBpc3N1ZSBhbmQgdGhlIGFkanVzdG1lbnQgb2YgYmFuZHMgd2hlbiBSQkJTX0ZJWEVEU0laRQoJc3BlY2lmaWVkLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUHJlcGVuZCAiLS0iIHRvIGFyZ3VtZW50cy4KCjIwMDItMDEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIG1zZG9zL2ludDJmLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyB0aGUgTlQgQ0QgaW50ZXJmYWNlLgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9jZHJvbS5jLCB3aW4zMi9kZXZpY2UuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9jZHJvbS5jLCBmaWxlcy9kcml2ZS5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbnRkZGNkcm0uaCwKCSAgaW5jbHVkZS9udGRkc3Rvci5oLCBpbmNsdWRlL3dpbmlvY3RsLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgdGhlIFdpbmUgaW50ZXJuYWwgY2Ryb20gaW50ZXJmYWNlIHRvIHRoZSBOVCBtb2RlbC4KCjIwMDItMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnZlci5oOgoJUmVtb3ZlZCBvYnNvbGV0ZSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5udC5oOgoJRml4ZWQgdHlwb3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVVwZGF0ZWQgZGVidWcgY2hhbm5lbHMuCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglDaGVjayB1bml4X3BpZCBhZ2FpbiBhZnRlciBhdHRhY2guCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgcmVmY291bnRpbmcgdG8gdGhlIHRocmVhZCBtZW1iZXIgb2YgdGhlIHBpcGUgdXNlci4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSG93IHRvIHNwZWNpZnkgYSBETEwgaW4gYSBkZWJ1Z2dlciBicmVhayBjb21tYW5kLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHRoZSB3b2RSZXNldCBpbXBsZW1lbnRhdGlvbiwgaW50ZXJuYWwgbWVzc2FnZXMgcHJpb3JpdHksIGZ1bGwKCWR1cGxleCBjb2RlLCB3YWl0IGFsZ29yaXRobSBmb3IgZmVlZGluZyB0aGUgT1NTIGJ1ZmZlci4KCgkqIGRlYnVnZ2VyL2hhc2guYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZSBkaXNwbGF5IGZvciBzeW1ib2wgcGlja2luZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gVE9PTEJBUl9BZGRTdHJpbmdXLgoKMjAwMi0wMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi8uY3ZzaWdub3JlLCBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmMsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglBZGRlZCBjcnlwdDMyLmRsbCBzdHViLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0Lmg6CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhZHZhcGkzMiBwb3J0aW9uIG9mIHRoZSBDcnlwdG9BUEkuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXggcG90ZW50aWFsIG1lbW9yeSBpc3N1ZS4KCgkqIHdpbjMyL2VkaXRsaW5lLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBzb21lIGJhZCBiZWhhdmlvciB3aGVuIHNvbWUgbG9jayBzdGF0ZXMgKGNhcHNsb2NrLCBudW1sb2NrLi4uKQoJd2VyZSB0dXJuZWQgb24uCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvbW1lbnQgb25seTsgZXJyb3IgaW4gTWljcm9zb2Z0IGRvY3VtZW50YXRpb24uCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXdoaWNoIGlzIG1vcmUgcG9ydGFibGUgdGhhbiB0eXBlIChGcmVlQlNEKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHByZXZpb3VzIHBhdGNoOiB0aGUgd3Nfc29ja2FkZHJfdTJ3cyByZXR1cm4gdmFsdWUgd2FzIHdyb25nLgoJTWFrZSB3c19zb2NrYWRkcl97d3MydSx1MndzfSBzdGF0aWMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCUFkZGVkIHJ1bGVzIGZvciBydW5uaW5nIHRlc3RzLgoKMjAwMi0wMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglNb3ZlZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBXU19zb2NrZXQoKSB0byBXU0FTb2NrZXRBKCkuCglNYWRlIFdTQVNvY2tldEEoKSBhY2NvdW50IGZvciBXU0FfRkxBR19PVkVSTEFQUEVELgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc29jay5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBzb2NrZXQgZmxhZ3MuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZXZpY2UuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsCgkgIGZpbGVzL2ZpbGUuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglNb3JlIGdlbmVyYWwgYXBwcm9hY2ggdG8gZmlsZSBkZXNjcmlwdG9yIHR5cGVzIGFuZCBmbGFncy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbmMucnIuY29tPgoJUmV0dXJuIGxlbmd0aCBvZiBXU19zb2NrYWRkciBzdHJ1Y3R1cmUgaW4gd3Nfc29ja2FkZHJfdTJ3cy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXhlZCBHZXREb2N1bWVudGF0aW9uIGEgbGl0dGxlLiAgV2hlbiBjYWxsZWQgZnJvbSBSZWdpc3RlclR5cGVMaWIgaXQKCXdhcyBsZWF2aW5nIHRoZSBEb2MgZW50cnkgdW5pbml0aWFsaXNlZCwgbGVhZGluZyB0byBwYWdlIGZhdWx0IHdoZW4KCW1lYXN1cmluZyBpdC4gQWxzbyBlbnN1cmUgY29ycmVjdCBmcmVlaW5nIG9mIHJlc291cmNlcyBvbiBmYWlsdXJlLgoKCSogc2VydmVyL3RocmVhZC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIEFQQ3MgdG8gYmUgImZvcmdvdHRlbiIuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglNb3ZlIGNhbGxpbmcgb2YgQ0JUIGhvb2tzIGZyb20gV0lOX0NyZWF0ZVdpbmRvd0V4KCkgdG8gdGhlIGRyaXZlci4KCjIwMDItMDEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy91c2VyL3RleHQuYywKCSAgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGRsbHMvZ2RpL2dkaS5zcGVjLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2dkaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dkaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWRvcy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZQoJLSBNaW5vciBidWcgZml4ZXMKCgkqIHNlcnZlci9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglBZGQgc2VydmVyIHNpZGUgc3VwcG9ydCBmb3IgYXN5bmMgSU8gb24gZmlsZXMuCglVc2UgcHJlYWQvcHdyaXRlIHRvIHJlYWQvd3JpdGUgZnJvbSB0aGUgb2Zmc2V0IHNwZWNpZmllZCBpbiB0aGUKCW92ZXJsYXBwZWQgc3RydWN0dXJlLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsCgkgIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgcHJlYWQvcHdyaXRlLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCS0gQXR0ZW1wdCB3cml0ZSBiZWZvcmUgZ29pbmcgb3ZlcmxhcHBlZCBpbiBXcml0ZWZpbGUuCgktIEZpeCByZXR1cm4gY29kZXMgaW4gV3JpdGVGaWxlRXguCgoJKiBpbmNsdWRlL2ZpbGUuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBDYW5jZWxJbyBwcm9wZXJseS4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CgktIERvbid0IHVzZSBldmVudCBmbGFncyB3aXRoIFJlYWRGaWxlRXggYW5kIFdyaXRlRmlsZUV4LgoJLSBVc2Ugb3ZlcmxhcHBlZCBzdHJ1Y3R1cmUgd2l0aCBXcml0ZUZpbGUsIHNpbmNlIEZJTEVfRkxBR19PVkVSTEFQUEVECgkgIGlzIHNwZWNpZmllZC4KCS0gQ2FuY2VsIG92ZXJsYXBwZWQgb3BlcmF0aW9ucyBpbiBDbG9zZUNvbW0uCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglBZGRlZCBzdXBwb3J0IGZvciBjbGVhbmluZyB1cCB0aGUgVEVCIGZyb20gaW5zaWRlIHRoZSBleGl0aW5nIHRocmVhZC4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglBbGxvY2F0ZSBkZWJ1Z19pbmZvIHN0cnVjdHVyZSBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBURUIuCglSZW1vdmVkIHRoZSBURUIgY2xlYW51cCBzZXJ2aWNlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJQWRkZWQgU0lHTkFMX1Jlc2V0IGZ1bmN0aW9uLgoKMjAwMi0wMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBkdW1waW5nIHJlc291cmNlcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJTWFyayBHLiBBZGFtcyA8bWdhZGFtc0BzeW1wYXRpY28uY2E+CglGaXggVXVpZENyZWF0ZSgpIHRvIG5vdCBmb3JnZXQgTUFDIGFkZHJlc3MuCglSZW1vdmUge30ncyBmcm9tIFV1aWRUb1N0cmluZ0EoKSBvdXRwdXQuCglBZGQgVXVpZENyZWF0ZVNlcXVlbnRpYWwoKSBmdW5jdGlvbiBmcm9tIFdpbmRvd3MgMjAwMC4KCgkqIGNvbmZpZ3VyZS5pbjoKCUJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AcmVkaGF0LmRlPgoJQWRkZWQgbWlzc2luZyBicmFja2V0cyBpbiBuY3Vyc2VzIGNoZWNrLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUmVtb3ZlZCBvYnNvbGV0ZSBkb3Ntb2QuCgoJKiBkbGxzL2tlcm5lbC9ubHMvZGVhLm5scywgZGxscy9rZXJuZWwvbmxzL2RlbC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9kZXUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZW5pLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2Vzbi5ubHMsIGRsbHMva2VybmVsL25scy9lc3AubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZmluLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYS5ubHMsCgkgIGRsbHMva2VybmVsL25scy9mcmIubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJsLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2dhZS5ubHMsIGRsbHMva2VybmVsL25scy9ncmMubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvaXRhLm5scywgZGxscy9rZXJuZWwvbmxzL25sYi5ubHMsCgkgIGRsbHMva2VybmVsL25scy9ubGQubmxzLCBkbGxzL2tlcm5lbC9ubHMvcHRnLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL3dhbC5ubHM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZSBjdXJyZW5jeSBvZiB0aGUgZXVyb3BlYW4gRXVybyB1c2luZyBjb3VudHJpZXMgdG8gRXVyby4KCgkqIExJQ0VOU0U6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgY29weXJpZ2h0IGRhdGUuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2Rvc3ZtLmgsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRE9TIHN1cHBvcnQgcmVzdHJ1Y3R1cmUuIFRoZSBET1MgdmlydHVhbCBtYWNoaW5lIGlzIG5vdyBhIHNldCBvZgoJdGhyZWFkcyBydW5uaW5nIHdpdGhpbiBXaW5lJ3Mgb3duIGFkZHJlc3Mgc3BhY2UsIG9ic29sZXRpbmcgdGhlIG9sZAoJZG9zbW9kIG1vZHVsZS4KCjIwMDItMDEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvdGhyZWFkLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHZtODZfZW50ZXIgcmFjZSBjb25kaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCU5ldmVyIGRlbGV0ZSB0aGUgZm9udCBvYmplY3QgcmVjZWl2ZWQgYnkgV01fU0VURk9OVC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJRml4ZWQgY2FsbHMgd2l0aCB3cm9uZyBwb2ludGVyOiBDT01DVEwzMl9GcmVlKCZscHR0c2kpIHNob3VsZCBiZQoJQ09NQ1RMMzJfRnJlZShscHR0c2kpLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJRml4ZWQgREMgbGVhay4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglDaGVjaywgUmFkaW8gJiAzU3RhdGUgYnV0dG9ucyBzZW5kIFdNX0NUTENPTE9SU1RBVElDIGluc3RlYWQgb2YKCVdNX0NUTENPTE9SQlROLgoKCSogZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwgUkVBRE1FOgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIHhwbSBwYWNrYWdlcy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmVpbnN0YWxsLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVdlIG5vIGxvbmdlciBuZWVkIGxpYlhwbS4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hwbS5jLAoJICBpbmNsdWRlL3RzX3hwbS5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgdGhlIHhwbSB3cmFwcGVycy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGQgZGVmaW5lIGZvciB1bmRvY3VtZW50ZWQgc3RhdHVzIGJhciBtZXNzYWdlIFNCX1NFVEJPUkRFUlMuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmg6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURlZmluZSBMUFNUQUNLRlJBTUUgdG9vLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvc3B5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbmV3IG1lc3NhZ2VzIHRvIHRoZSBzcHkgYW5kIHdpbnVzZXIuaC4KCgkqIGluY2x1ZGUvYml0bWFwcy9vYm1fY2xvc2UsIGluY2x1ZGUvYml0bWFwcy9vYm1fY2xvc2VfOTUsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fY2xvc2VkXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JlZHVjZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9yZWR1Y2VfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVkdWNlZCwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9yZWR1Y2VkXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3Jlc3RvcmUsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVzdG9yZV85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZXN0b3JlZCwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9yZXN0b3JlZF85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV96b29tLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3pvb21fOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fem9vbWQsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fem9vbWRfOTUsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYzoKCVJlbW92ZWQgTG9hZE9FTVJlc291cmNlIGZyb20gVVNFUiBkcml2ZXIuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcmludCBGSVhNRSgpIGZvciBub3QgaW1wbGVtZW50ZWQgTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCURvIG5vdCBzYXZlIGVtcHR5IHNlY3Rpb25zIG5hbWVzLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlIGEgY2FsbCB0byBIRUFQX3N0cmR1cEF0b1cgaW4gdGhlIENvbG9yIGRpYWxvZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglTcGVlZCB1cCB0aGUgR2V0SW1hZ2VCaXRzIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhbiBYU2htIGltYWdlLgoKMjAwMi0wMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2JpdG1hcHMucmM6CglVc2UgRHJhd0ZyYW1lQ29udHJvbCBpbnN0ZWFkIG9mIGJpdG1hcHMgaW4gY2VydGFpbiBjYXNlcy4KCU1vdmVkIHJlbWFpbmluZyBPRU0gYml0bWFwcyB0byB1c2VyMzIgcmVzb3VyY2VzLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9jb21wb2JqLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIENvVHJlYXRBc0NsYXNzLCBzaW1wbGlmaWVkIE9sZVNldEF1dG9Db252ZXJ0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUhhbmRsZSB0aGUgbHBEaXJlY3RvcnkgZmllbGQgb2YgdGhlIExQU0hFTExFWEVDVVRFSU5GTy4KCjIwMDItMDEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2ZpbGUuaCwgc2NoZWR1bGVyL3N5bmNocm8uYzoKCUZpeGVkIGNoZWNrX2FzeW5jX2xpc3QgY2FsbGluZyBjb252ZW50aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2J0bmNvcm5lcnMsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fYnRzaXplLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2NoZWNrLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2NoZWNrYm94ZXMsIGluY2x1ZGUvYml0bWFwcy9vYm1fY29tYm8sCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fZG5hcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV9kbmFycm93ZCwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9kbmFycm93aSwgaW5jbHVkZS9iaXRtYXBzL29ibV9sZmFycm93LAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2xmYXJyb3dkLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2xmYXJyb3dpLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX21uYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX2Nsb3NlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF9kbmFycm93LCBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF9sZmFycm93LAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF9yZWR1Y2UsIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX3Jlc3RvcmUsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX3JnYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX3VwYXJyb3csCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX3pvb20sIGluY2x1ZGUvYml0bWFwcy9vYm1fcmdhcnJvdywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9yZ2Fycm93ZCwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZ2Fycm93aSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9zaXplLCBpbmNsdWRlL2JpdG1hcHMvb2JtX3RydHlwZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV91cGFycm93LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3VwYXJyb3dkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3VwYXJyb3dpLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2JpdG1hcHMucmM6CglNb3ZlZCB0aGUgT0VNIGJpdG1hcHMgdGhhdCBkb24ndCBkZXBlbmQgb24gdGhlIFdpbmUgbG9vayBpbnRvIHRoZQoJdXNlcjMyIHJlc291cmNlcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZ1cnRoZXIgdW5pZmllZCBIQUwgYW5kIEhFTCBtaXhpbmcsIGFuZCBhZGRlZCBzb21lIG1vcmUgaW50ZWxsaWdlbmNlCgl0byBwcmVidWZmZXJpbmcsIHdpdGggc29tZSBiYXNpYyBwcmVidWZmZXIgY2FuY2VsaW5nIHN1cHBvcnQsIHRvIGdldAoJcmlkIG9mIG1peGluZyBkZWxheXMgaW4gSGFsZi1MaWZlLiBVc2VkIGEgdmVyeSBzbWFsbCB3YXZlb3V0IGJ1ZmZlcgoJcXVldWUgaW4gSEVMIG1vZGUsIHVzaW5nIGEgY2FsbGJhY2sgdG8gcXVldWUgYWRkaXRpb25hbCBidWZmZXJzLCB0bwoJZ2V0IHJpZCBvZiBwbGF5YmFjayBkZWxheXMgaW4gSGFsZi1MaWZlLiBGaXhlZCBhIGNvdXBsZSBvZiBidWdzLgoKCSogc2VydmVyL2NvbnNvbGUuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY29sb3IgZGVmaW5pdGlvbiAoYmcgYW5kIGZnIHdlcmUgc3dhcHBlZCkuCglGaXhlZCBzb21lIGluaXRpYWxpc2F0aW9uIGlzc3Vlcy4KCUZpeGVkIGV4aXQgY29uZGl0aW9uIHdoZW4gbm90aGluZyB3YXMgYWxsb2NhdGVkLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSWYgU2FmZUFycmF5R2V0RWxlbWVudCBpcyBjYWxsZWQgb24gYSB2YXJpYW50IGFycmF5LCBpbml0aWFsaXplCglkZXN0aW5hdGlvbiB2YXJpYW50IGJlZm9yZSBjb3B5aW5nIHRoZSBhcnJheSBlbGVtZW50IHRvIGl0LCBzb21lIGJhZGx5CgliZWhhdmVkIGFwcHMgZG9uJ3Qgc2VlbSB0byBkbyBpdCB0aGVtc2VsdmVzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgbG9va3MtbGlrZS1ub2JvZHktZXZlci10ZXN0ZWQtdGhpcy1mdW5jdGlvbiBraW5kIG9mIGJ1ZyBpbgoJVmFyaWFudENvcHlJbmQuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWRlIHRoZSBvdXRwdXQgb2YgLS1kZWJ1Z21zZyArc2VoIGEgYml0IG1vcmUgdmVyYm9zZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNYWtlIERyYXdTdGF0dXNUZXh0IFVuaWNvZGUgcmVhZHkuIEdldCByaWQgb2YgYSBIRUFQX3N0cmR1cCBjYWxsLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYmV0dGVyIHN1cHBvcnQgZm9yIGV4dGVuc2lvbnMgZnVuY3Rpb25zIHRoYXQgZG8gbm90IGhhdmUgdGhlIHNhbWUKCSAgbmFtZSBpbiB3aW5kb3dzIGFuZCBpbiBVbml4LgoJLSBzdXBwb3J0IHRoZSBOVl92ZXJ0ZXhfYXJyYXlfcmFuZ2UgZXh0ZW5zaW9uLgoKMjAwMi0wMS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnNvbGUveHRlcm0uYywgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW5rIHdpdGggbGlidXRpbCBvbmx5IHdoZXJlIG5lZWRlZC4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmMsIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+UgoJU2V0IGFuIG92ZXJsYXBwZWQncyBoRXZlbnQgZm9yIFJlYWRGaWxlL1dyaXRlRmlsZSBpbiBhbiBvdmVybGFwcGVkCgljb21wbGV0aW9uIGZ1bmN0aW9uLCBub3QgaW4gUmVhZEZpbGVFeCBvciBXcml0ZUZpbGVFeC4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsCgkgIG9iamVjdHMvbWV0YWZpbGUuYywgb2xlL29sZTJubHMuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9uZXdmbnMuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWlzYy9yZWdpc3RyeS5jLAoJICBmaWxlcy9jaGFuZ2UuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGVhdXQzMi9oYXNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvbXByL3duZXQuYzoKCVJlbW92ZWQgc29tZSBvZiB0aGUgY2FsbHMgdG8gSEVBUF9zdHJkdXAqIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUluY2x1ZGUgPHN0ZGxpYi5oPiB0byBnZXQgcHJvdG90eXBlIGZvciBhYnMoKSBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTmFtZSBvZiB0aGUgc3RydWN0dXJlZCBzdG9yYWdlIGZpbGUgcm9vdCBub2RlIGlzIHBhdGggb2YgdGhlIGZpbGUsIG5vdAoJdGhlIG5hbWUgb2YgdGhlIHJvb3Qgbm9kZSBzdG9yZWQgaW4gdGhlIGZpbGUuCglXaGVuIHJlYWRpbmcgc3RyZWFtcyBzdG9yZWQgaW50byBzdHJ1Y3R1cmVkIHN0b3JhZ2UgZmlsZXMsIEVPRiBpcyBub3QKCXN1cHBvc2VkIHRvIGNhdXNlIGFuIGVycm9yIGlmIGF0IGxlYXN0IG9uZSBieXRlIGNhbiBiZSByZXR1cm5lZC4KCjIwMDEtMTItMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUxpbmsgd2l0aCBsaWJkbCBvbmx5IHdoZXJlIG5lZWRlZC4KCgkqIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmg6CglGaXhlZCBzdHJpbmcgdHlwZSBpbiBuYW1lZCBwaXBlIHJlcXVlc3RzLgoKCSogbWlzYy9jZHJvbS5jOgoJQ2hyaXMgR3JlZW4gPGNocmlzX2VfZ3JlZW5AeWFob28uY29tPgoJR2V0IHRoZSBjb3JyZWN0IGxhYmVsIG9uIGlzbzk2NjAgbWl4ZWQtbW9kZSBjZHMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeGVkIG1lbW9yeSBsZWFrLgoJUmVtb3ZlZCByZWR1bmRhbnQgSW1hZ2VMaXN0X0RyYWdTaG93Tm9sb2NrKEZBTFNFKSBjYWxsLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTd2FwIGZnL2JnIGNvbG9yIHRvIGJlIGNvcnJlY3QuCgoyMDAxLTEyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDExMjI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTEyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9zeXNwYXJhbXMuYywgaW5jbHVkZS93aW51c2VyLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIGJhc2ljIGhhbmRsaW5nIG9mIGFzc2Vzc2liaWxpdHkgYWN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUlmIHRoZSBmY2NIYW5kbGVyIGlzIG1taW9GT1VSQ0MoMCwgMCwgMCwgMCkgdGhlIEFWSSBpcyBhbHNvCgl1bmNvbXByZXNzZWQuCglpbmZvUHRyLT5oV25kIHdhc24ndCB1cGRhdGVkIGluIEFOSU1BVEVfT3BlbkEuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6CglTYXZlIHRoZSByZWdpc3RyeSBiZWZvcmUgZXhpdGluZyBvbiBhIFNJR1RFUk0uCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6CglNYWtlIHN1cmUgdGhlIERDIHZpc2libGUgcmVnaW9uIGlzIHVwZGF0ZWQgaW4gR2V0Q2xpcEJveC4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbXNkb3MvaW50MjEuYywKCSAgY29uZmlndXJlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTGluayB0byB0aGUgY3Vyc2VzIGxpYnJhcnkgb25seSBmb3IgdGhlIGRsbHMgdGhhdCBuZWVkIGl0LgoKCSogaW5jbHVkZS9oZWFwLmgsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuaDoKCVJlbW92ZWQgdGhlIFNFR1BUUl8qIG1hY3Jvcy4KCgkqIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvcGFyc2VyLnksIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogbWVtb3J5L2hlYXAuYzoKCUZpeGVkIGJ1ZyBpbiBzeXN0ZW0gaGVhcCBjcmVhdGlvbiB3aGVuIGl0IGFscmVhZHkgZXhpc3RzLgoKCSogcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglVcGRhdGVkIHRvIG5vdCByZWx5IG9uIHJ1bmRsbDMyLmV4ZSBhbnkgbW9yZS4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCwgYWRkZWQgb3IgaW1wbGVtZW50ZWQgc3R1YnM6CgktIERyYXdNZW51QmFyVGVtcCgpOiBjb3JyZWN0ZWQgcGFyYW1ldGVyIGNvdW50LgoJLSBDYWxsQ1BMRW50cnkxNigpOiBzdHViLgoJLSBTZXRTeXNDb2xvcnNUZW1wKCk6IGZ1bGx5IGltcGxlbWVudGVkIChob3BlZnVsbHkpIHRoaXMgdW5kb2N1bWVudGVkCgkgIGZ1bmN0aW9uLgoKCSogZGxscy94MTFkcnYvbW91c2UuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGRlZCBjb2xvciBjdXJzb3Igc3VwcG9ydC4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCURlc3Ryb3lpbmcgY3Vyc29yIGlzIG5vdCBuZWNlc3NhcmlseSBhbiBlcnJvci4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJVXNlIE1hcExTL1VuTWFwTFMgaW5zdGVhZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbnByb2MuaCwgd2luZG93cy9ob29rLmM6CglSZXN0cnVjdHVyZWQgaG9vayBtYXBwaW5nIGZ1bmN0aW9ucyB0byBhdm9pZCBtb3N0IG1lbW9yeQoJYWxsb2NhdGlvbnMuIEdvdCByaWQgb2YgU0VHUFRSXyogbWFjcm9zLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9tc3ZjcnQvZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWZpbml0aW9uIG9mIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIHN0cnVjdHVyZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjOgoJSm9oYW4gRGFobGluIDxqZGFobGluQHRlbGlhLmNvbT4KCVVwZGF0ZWQgU3dlZGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvdXNlci9sc3RyLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHdpbjMyL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgKnNucHJpbnRmIGZvciBDOTkgc3R5bGUgb3ZlcmZsb3cgcmVwb3J0aW5nLgoKCSogaW5jbHVkZS91c2VyLmgsIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL21zZzE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJVXNlIGFsZXJ0YWJsZSB3YWl0cyBpbiBQZWVrTWVzc2FnZTE2IGFuZCBHZXRNZXNzYWdlMTYgc28gd2UgY2FuCglwcm9jZXNzIEFQQ3MgZm9yIDE2Yml0IGNvbW1zLgoKCSogaW5jbHVkZS9tc2Rvcy5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJR290IHJpZCBvZiBXSU5FX1BBQ0tFRC4KCjIwMDEtMTItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudC9kb2N1bWVudCBvcmRpbmFscyA3LTExLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSBmdHNuYW1lcy5oIG9yIGZ0bmFtZXMuaCwgbm90IGJvdGguCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy93aW5tbS9kcml2ZXIuYywKCSAgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCVVzZSBNYXBMUy9Vbk1hcExTIGluc3RlYWQgb2YgU0VHUFRSXyogbWFjcm9zLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZvcndhcmQgdGFiIG5vdGlmaWNhdGlvbnMgdG8gdGhlIHBhcmVudC4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglUcml2aWFsIGZpeGVzIGZvciBzaGx3YXBpIGFuZCBJbnRlcm5ldCByb3V0aW5lcy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRml4ZWQgdnNucHJpbnRmIHJldHVybiB2YWx1ZSBjaGVjay4KCjIwMDEtMTItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3N5c21ldHJpY3MuaCwgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3NpbmcgZm9yIGFjdGlvbnMgU1BJX1NFVE1PVVNFQlVUVE9OU1dBUCwKCVNQSV9TRVRGQVNUVEFTS1NXSVRDSCwgU1BJX1NFVERSQUdGVUxMV0lORE9XUywgU1BJX1NFVFdPUktBUkVBLgoKCSogZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLAoJICBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLAoJICBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbXNjLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHN0YWJzIHBhcnNpbmcgZm9yIEdDQyAzLjAgKGRlZmF1bHQgdHlwZXMpLgoJQWRkZWQgYm9vbGVhbiB0eXBlIHN1cHBvcnQuCglTaW1wbGlmaWVkIGludGVybmFsIHR5cGVzIGhhbmRsaW5nLgoKCSogd2luMzIvY29uc29sZS5jLCB3aW4zMi9lZGl0bGluZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWZmZXIgbGVuZ3RoIGluIGhpc3RvcnkgbWFuaXB1bGF0aW9uLgoJV3JpdGluZyBuZXcgY2hhcnMgbXVzdCBiZSBkb25lIHdpdGggZGVmYXVsdCBhdHRyaWJ1dGUgKG5vdCBjZWxsCgljdXJyZW50IGF0dHJpYnV0ZSkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZnVsbC1kdXBsZXggY2FwYWJpbGl0eS4KCUFkZGVkIG1pc3NpbmcgaW5pdCBmb3Igd2F2ZS1pbi4KCUZpeGVkIHBhdXNlIGJlaGF2aW9yIGluIHdhdmUtb3V0LgoJQWRkZWQgbWVzc2FnZS1yaW5nIGRlbGV0aW9uLgoJQWRkZWQgZXhwZXJpbWVudGFsIGZ1bGwtZHVwbGV4IGNhcGFiaWxpdHkuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5vdGhlciBidW5jaCBvZiBidWdzIChtYWlubHkgbGlua2VkIHRvIG9wZXJhdGlvbnMgd2hlcmUgZmlsZQoJcG9pbnRlciB3YXMgcGFzdCB0aGUgZW5kIG9mIGZpbGUpLgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9oZWFwLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBSVFRJIHN1cHBvcnQuCglGaXggd2hhdF9leGNlcHRpb24gcHJvdG90eXBlLgoJRml4IG5ld19oYW5kbGVyX2Z1bmMgcHJvdG90eXBlLgoJQWRkIHNldF9uZXdfaGFuZGxlciwgX2NhbGxuZXdoLCBfaGVhcGFkZC4KCUFkZCBzdHVicyBmb3IgX191bkROYW1lIGFuZCBfX3VuRE5hbWVFeC4KCUFkZGVkIGEgc2VtaS1zdHViIGZvciBfX0N4eEZyYW1lSGFuZGxlci4KCgkqIGluY2x1ZGUvbXN2Y3J0L3NldGptcC5oLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHNldGptcC9zZXRqbXAzIGFuZCBsb25nam1wLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgbW9yZSB0aGFuIDggYml0cyBwZXIgY29sb3IgY29tcG9uZW50LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1lcmdlZCB0aGUgaGFuZGxpbmcgb2YgMTUgYW5kIDE2IGJpdHMgWCBzZXJ2ZXIgZGVwdGhzLgoJVXNlIHRoZSBtYXNrcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIDE1IGFuZCAxNiBiaXRzLgoJQ2hlY2sgdGhlIG1hc2tzIGJldHRlciBhbmQgY2FsbCBnZW5lcmljIGNvZGUgaWYgdGhleSBhcmUgbm90CglzdXBwb3J0ZWQgZGlyZWN0bHkuCglDaGFuZ2VkIHRoZSAnbm90c3VwcG9ydGVkJyB0cmFjZXMgZnJvbSBGSVhNRXMgdG8gV0FSTnMuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSGFuZGxlIFJlYWRJbnRlcnZhbFRpbWVvdXQ9TUFYRFdPUkQgc3BlY2lhbCBjYXNlIGEgYml0IGJldHRlci4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglEb24ndCByZXR1cm4gZnJvbSBvdmVybGFwcGVkIFJlYWRGaWxlIG9uIEVBR0FJTiBhbmQgb3RoZXIgbm9uLWZhdGFsCgllcnJvcnMuCgoJKiBpbmNsdWRlL21zdmNydC9zaGFyZS5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBbmQgaW4gYWRkaXRpb24gdG8gTWluZ3czMiB3ZSB3aWxsIHdhbnQgdGhlIF8gdmVyc2lvbnMuCgoyMDAxLTEyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBncmFwaGljcy93aW4xNmRydi9icnVzaC5jLAoJICBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvcGVuLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCVVzZSBNYXBMUy9Vbk1hcExTIGluc3RlYWQgb2YgU0VHUFRSXyogbWFjcm9zLgoKCSogc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywKCSAgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvYXN5bmMuaCwgc2VydmVyL2F0b20uYywKCSAgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywKCSAgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgZmlsZXMvZmlsZS5jLCBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJLSBtb3ZlIGFzeW5jIGFjdGl2YXRpb24gaW50byB0aGUgc2VydmVyCgktIGltcGxlbWVudCBhc3luYyBxdWV1ZXMKCgkqIG1lbW9yeS9nbG9iYWwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdsb2JhbFJlQWxsb2MxNjogSWYgaGVhcCBoYXMgR2xvYmFsUGFnZUxvY2sgc2V0LCB0cnkgb25seSB3aXRoCglIRUFQX1JFQUxMT0NfSU5fUExBQ0VfT05MWSBmbGFnIHNldC4KCjIwMDEtMTItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIEdsb2JhbFBhZ2VMb2NrIGZvciBHZXRWRE1Qb2ludGVyMzJXMTYgcG9pbnRlcnMuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglGaXhlZCBzdGFjayBvZmZzZXQgaW4gcmVsYXkgZGVidWdnaW5nIG9mIGNkZWNsIHJlZ2lzdGVyIGZ1bmN0aW9ucy4KCgkqIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsCgkgIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3J0bC5jOgoJTW92ZWQgaGVhcCBmdW5jdGlvbnMgdG8gbnRkbGwuCglHb3QgcmlkIG9mIGludGVybmFsIGhlYXAgZmxhZ3MuCglSZWltcGxlbWVudGVkIE1hcExTIHRvIG5vdCBkZXBlbmQgb24gdGhlIHNlZ3B0ciBoZWFwLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvc2hhcmUuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkZWQgc2hhcmUuaCBmcm9tIE1pbmd3MzIuCgoJKiBSRUFETUU6IEJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglXaW5lIGlzIG5vdyB3b3JraW5nIG9uIE5ldEJTRCwgc28gYWRkIE5ldEJTRCB0byB0aGUgc3VwcG9ydGVkIE9TJ2VzCglsaXN0IChhbmQgYWRkIHNvbWUgbm90ZXMgYXMgd2VsbCkuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgdGltZWQtb3V0IG5vbi1vdmVybGFwcGVkIFJlYWRGaWxlLgoKCSogdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvd3JjLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCVJlcGxhY2VkIE1BWCB3aXRoIG1heCBhbmQgZGVsZXRlZCBkZWZpbml0aW9uIG9mIE1BWC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUZpeGVkL2ltcGxlbWVudGVkIHRoZSBJbWFnZUxpc3RfKkRyYWcqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglJZiB0aGVyZSBpcyBubyBwc0luZm8sIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjbGVhbmVkIHVwLgoKMjAwMS0xMi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi90aHVuay5jLAoJICBpbmNsdWRlL2NhbGxiYWNrLmg6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIHRodW5raW5nIGFuZCBjYWxsb3V0IGZ1bmN0aW9ucy4KCgkqIG1pc2Mvc3lzdGVtLmM6CglTdG9yZSB0aGUgMTYtYml0IGNhbGxiYWNrIGluIHRoZSB0aW1lciBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiB1c2luZyBhCgl0aHVuay4KCgkqIHdpbmRvd3MvdXNlci5jLCBtc2Rvcy9kcG1pLmMsIG9iamVjdHMvZGliLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgaWYxNjMyL3JlbGF5LmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtZW1vcnkvbG9jYWwuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLAoJICBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDYWxsIHRoZSAzMi1iaXQgVVNFUiBzaWduYWwgcHJvYyBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIGEgY2FsbG91dC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglQcmV2ZW50ICJ3aW5kb3cgYmVsb25ncyB0byBhbm90aGVyIHByb2Nlc3MiIGVycm9ycyB3aGVuIHJ1bm5pbmcKCW11bHRpcGxlIHByb2dyYW1zIHNpbXVsdGFuZW91c2x5LgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYzoKCURvIG5vdCBjYWxsIFRIVU5LX0luaXQgYXQgc3RhcnR1cCwgb25seSBkbyBpdCB3aGVuIHRoZSBhcHAgYWN0dWFsbHkKCXJlcXVpcmVzIHRodW5rcy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBsb2FkZXIvcmVzb3VyY2UuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUV4cG9ydCBEZXN0cm95SWNvbjMyIGZyb20gdXNlcjMyIGFuZCB1c2UgR2V0UHJvY0FkZHJlc3MgdG8gY2FsbCBpdAoJZnJvbSBGcmVlUmVzb3VyY2UxNi4KCgkqIHdpbmRvd3MvLmN2c2lnbm9yZSwgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvcHJvcGVydHkuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3RodW5rLmMsCgkgIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci93bmQxNi5jOgoJQ2hhbmdlZCAxNi1iaXQgVVNFUiBFbnVtKiBmdW5jdGlvbnMgdG8gbm90IHVzZSB0aHVua3MsIG5vdyB0aGF0IDE2LWJpdAoJV2luZWxpYiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgoKCSogd2luZG93cy9ob29rLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgZGxscy91c2VyL21vdXNlLmM6CglHb3QgcmlkIG9mIGR5bmFtaWMgdGh1bmsgYWxsb2NhdGlvbiBpbiBtb3VzZS9rZXlib2FyZCBldmVudCBwcm9jcyBhbmQKCXdpbmRvdyBob29rcy4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQsIGRvY3VtZW50ZWQgb3IgZml4ZWQgU0hEZWxldGVPcnBoYW5LZXlBL1csIFNIRW51bUtleUV4QS9XLAoJU0hFbnVtVmFsdWVBL1csIFNIUXVlcnlJbmZvS2V5QS9XLiBTSFJlZ0dldFBhdGhBL1csIFNIUmVnU2V0UGF0aEEvVywKCVNIR2V0VmFsdWVBL1csIFNIU2V0VmFsdWVBL1csIFNIUXVlcnlWYWx1ZUV4QS9XLCBTSERlbGV0ZUtleUEvVywKCVNIRGVsZXRlRW1wdHlLZXlBL1csIFNIRGVsZXRlVmFsdWVBL1csIG9yZGluYWxzIDMyMC0zMjMuCgoJKiBtZW1vcnkvbG9jYWwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkZWQgZXJyb3IgbWVzc2FnZSBpbiBMT0NBTF9HZXRCbG9jaygpLgoKCSogd2luZG93cy93aW5wb3MuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQWx0ZXJlZCB0aGUgYWxnb3JpdGhtIGZvciBzZWxlY3RpbmcgYSBuZXcgZm9jdXMgYWZ0ZXIgYSB3aW5kb3cgaXMKCWRlc3Ryb3llZCB0aGF0IGN1cnJlbnRseSBoYXMgdGhlIGZvY3VzLgoKCSogZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLAoJICBkbGxzL2dkaS90aHVuay5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9saW5lZGRhLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUNoYW5nZWQgMTYtYml0IEdESSBFbnVtKiBmdW5jdGlvbnMgdG8gbm90IHVzZSB0aHVua3MsIG5vdyB0aGF0IDE2LWJpdAoJV2luZWxpYiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgoKCSogb2JqZWN0cy8uY3ZzaWdub3JlLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2RjLmMsCgkgIHdpbmRvd3MvZGNlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvcHJpbnRkcnYuYzoKCUNoYW5nZWQgREMgaG9vayBhbmQgYWJvcnQgcHJvYyBoYW5kbGluZyB0byBhdm9pZCBoYXZpbmcgdG8gYWxsb2NhdGUKCXRodW5rcyBkeW5hbWljYWxseS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglQYXNzIG9uIGFsbCB1bmhhbmRlbGVkIG1lc3NhZ2VzIHRvIHRoZSBvd25lci4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQYXRoSXNVUkwoQXxXKTogQ2hlY2sgZm9yIE5VTEwgc3RyaW5ncy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglKb2hhbiBEYWhsaW4gPGpkYWhsaW5AdGVsaWEuY29tPgoJQWRkIGEgZmV3IGV4dHJhIGZpZWxkcyB0byBIVFRQX0dldFN0ZEhlYWRlckluZGV4LgoKMjAwMS0xMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQ2hhbmdlZCAxNi0+MzIgd2luZG93IHByb2NlZHVyZSB0aHVua3MgdG8gdXNlIHdpbmVidWlsZC1nZW5lcmF0ZWQKCWVudHJ5IGNvZGUgZGlyZWN0bHkuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaWYxNjMyL2J1aWx0aW4uYywKCSAgaWYxNjMyL3JlbGF5LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dpbjg3ZW0uc3BlYywgZGxscy9rZXJuZWwvd2luZGVidWcuc3BlYywKCSAgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIE1ha2UucnVsZXMuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjOgoJTWFkZSByZWdpc3RlciBhbmQgaW50ZXJydXB0IGZsYWdzIGluc3RlYWQgb2YgZW50cnkgcG9pbnQgdHlwZXMsIHNvCgl0aGF0IHdlIGNhbiBoYXZlIGJvdGggc3RkY2FsbCBhbmQgY2RlY2wgcmVnaXN0ZXIgZnVuY3Rpb25zLgoJQ2hhbmdlZCAxNi1iaXQgLnNwZWMuYyBmaWxlIGdlbmVyYXRpb24gdG8gYXZvaWQgaW5jbHVkaW5nIGJ1aWx0aW4xNi5oLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCVBhdWwgUnVwZSA8cHJ1cGVAbmMucnIuY29tPgoJVmVyeSBzaW1wbGUgc3VwcG9ydCBmb3IgU09fT1BFTlRZUEUgaW4gZ2V0c29ja29wdCBhbmQgc2V0c29ja29wdC4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCU1ha2UgdXNlIG9mIHNvbGFyaXNfdHJ5X21tYXAoKSBmb3IgTmV0QlNELiBSZW5hbWUgaXQgdG8KCXRyeV9tbWFwX2ZpeGVkKCkgc2luY2UgaXQncyBubyBsb25nZXIgU29sYXJpcy1zcGVjaWZpYy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCUFkZGVkIGNoZWNrIGZvciBzdGRpbnQuaCAobmVlZGVkIG9uIE5ldEJTRCkuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglGaXggTmV0QlNEIGNvbXBpbGF0aW9uIGVycm9ycy4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglTaW1vbiBXYWx0b24gPHNpbW9udzJAcGFjYmVsbC5uZXQ+CglGaXhlZCBhIGJhc2hpc20uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJVGhhd2VkIHNvbWUgZnJlZXplcy4KCUNsZWFuZWQgdXAgdGltZSBhbmQgbm90aWZpY2F0aW9uIGhhbmRsaW5nLgoJVHlwb3MgZml4ZXMgKEdlcmFyZCkuCglBZGRlZCBicmVha2xvb3Agc3VwcG9ydC4KCjIwMDEtMTItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvd25kMTYuYywKCSAgd2luZG93cy9wYWludGluZy5jOgoJU3RhcnRlZCByZXdyaXRlIG9mIHBhaW50aW5nIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGUgcHJvY2Vzc2VzLiBNb3ZlZAoJQmVnaW5QYWludCB0byBkbGxzL3VzZXIuIEZpeGVkIGJ1ZyBpbiBwYWludCBjb3VudCBoYW5kbGluZy4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgcGxhY2VzIHdoZXJlIHdoaXRlc3BhY2Ugd2FzIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4KCURvIG5vdCB1c2UgYGNtZGBzIHdpdGhpbiBjYXQgPDxFT0Ygc2luY2UgYmFzaDEgc29tZXRpbWVzIGdldHMgY29uZnVzZWQKCWJ5IGl0LgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJT25seSBSVFNfQ09OVFJPTF9IQU5EU0hBS0Ugc2hvdWxkIHNldCBDUlRTQ1RTLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJRXJpYyBMYWZvcmVzdCA8ZWNsQHBldC5kaHMub3JnPgoJQWRkIHRoZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIHR0eSBkcml2ZXIuCgoyMDAxLTEyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgaW5jbHVkZS93aW5udC5oLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHJlbGF5MzIvc25vb3AuYywgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW46CglFeHBvcnRlZCBDQUxMMzJfUmVncyBmcm9tIG50ZGxsLCByZW5hbWVkIHRvIF9fd2luZV9jYWxsX2Zyb21fMzJfcmVncwoJdG8gZm9sbG93IHRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IgdGhpcyB0eXBlIG9mIGZ1bmN0aW9ucy4KCVNwbGl0IDE2IGFuZCAzMi1iaXQgcmVsYXkgZnVuY3Rpb25zIGludG8gc2VwYXJhdGUgZmlsZXMsIGFuZCBtb3ZlZCB0aGUKCTMyLWJpdCBvbmVzIHRvIGRsbHMvbnRkbGwuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBuZXcgc3R1YiBNTExvYWRMaWJyYXJ5LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGluY2x1ZGUvc2hsd2FwaS5oLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBleGNsdXNpb24gZGVmcyAmIHJlbWFpbmluZyBmdW5jcywgcmVtb3ZlIGludGVybmFsIHR5cGVzICYKCW9ial9iYXNlLmggKHN5bmMgd2l0aCB3aW4gdmVyc2lvbiksIGZpeGVkIGEgbnVtYmVyIG9mIGZ1bmN0aW9uCglwcm90b3R5cGVzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUltcGxlbWVudGVkIHB0aHJlYWRfcndsb2NrIHN0dWJzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZvciBhIHJhZGlvIGJ1dHRvbiBldmVuIGlmIHRoZSBpbml0aWFsIHN0eWxlIGluY2x1ZGVzIFdTX1RBQlNUT1AgdGhlCglmaXJzdCBCTV9TRVRDSEVDSyAwIHdpbGwgY2xlYXIgaXQgKGV2ZW4gaWYgdGhlIHN0YXRlIHdhcyBjbGVhcikuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUEgdHJlZXZpZXcgaXRlbSBtYXkgYmUgVFZJX1JPT1QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmUgSGF3a2VzIDxkYXZlaEBjYWRsaW5rLmNvbT4KCUZpeCBmb3IgdG9vbGJhciBwb3RlbnRpYWxseSB1c2luZyBhIE5VTEwgcG9pbnRlci4KCjIwMDEtMTItMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQWRkZWQgV0lOX0dldFJlY3RhbmdsZXMgZnVuY3Rpb24uCglGaXhlZCBXaW5kb3dGcm9tUG9pbnQgdG8gd29yayBhY2Nyb3NzIHByb2Nlc3Nlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL3N5c21ldHJpY3MuaCwgd2luZG93cy9zeXNtZXRyaWNzLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBmb3IgYWN0aW9uczogU1BJX0dFVC9TRVRHUklER1JBTlVMQVJJVFksCglTUElfR0VUL1NFVElDT05USVRMRVdSQVAsIFNQSV9HRVQvU0VUTUVOVURST1BBTElHTk1FTlQsCglTUElfR0VUL1NFVERPVUJMRUNMS1dJRFRILCBTUElfR0VUL1NFVERPVUJMRUNMS0hFSUdIVCwKCVNQSV9HRVQvU0VURE9VQkxFQ0xJQ0tUSU1FLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDaGFuZ2UgdGhlIG1lc3NhZ2UgdHJhY2UgaW5kZW50YXRpb24gdG8gYmUgY29uc2lzdGVudCBieSB0aHJlYWQuCgoJKiBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvdHlwZXMuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRml4IGZvciBzb21lIHR5cGVzIG9mIEMrKyBkZWJ1ZyBpbmZvIHRoYXQgY2FuIGNhdXNlIHdpbmVkYmcgdG8gY3Jhc2guCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglESUFMT0dfQ3JlYXRlSW5kaXJlY3QgY2FuIGluY29ycmVjdGx5IGtpbGwgdGhlIGN1cnJlbnQgaW5wdXQgZm9jdXMuCgoyMDAxLTEyLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wcm9jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYzoKCVJlbW92ZWQgY2FsbHMgdG8gSEVBUF9HZXRTZWdwdHIuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglGaXhlZCBjb21waWxlIGZvciAhTVpfU1VQUE9SVEVELgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBtZW1vcnkvcmVnaXN0cnkuYzoKCVVzZSBudGRsbCBmdW5jdGlvbnMgaW5zdGVhZCBvZiBNdWx0aUJ5dGVUb1dpZGVDaGFyL1dpZGVDaGFyVG9NdWx0aUJ5dGUKCXRvIGF2b2lkIGNvcnJ1cHRpbmcgdGhlIGxhc3QgZXJyb3IgY29kZS4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgbWVtb3J5L2NvZGVwYWdlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglSZW1vdmVkIG50ZGxsIGRlcGVuZGVuY3kgb24gTXVsdGlCeXRlVG9XaWRlQ2hhci9XaWRlQ2hhclRvTXVsdGlCeXRlCglrZXJuZWwzMiBmdW5jdGlvbnMsIHBsdXMgYSBmZXcgc21hbGwgY2xlYW51cHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9tYmN0eXBlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21ic3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLAoJICBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFudXAgYW5kIGltcHJvdmUgdGhlIG1iY3Mgc3VwcG9ydC4KCUFkZCBtYmN0eXBlLmggYW5kIG1ic3RyaW5nLmguCglJbXBsZW1lbnQgcHV0d2MgYW5kIHB1dHdjaGFyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVRoZSB0b29sYmFyIGNvbW1hbmRzIHdlcmUgbm90IHNlbnQgdG8gdGhlIGNvcnJlY3Qgbm90aWZpY2F0aW9uCgl3aW5kb3cuCgoJKiBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwKCSAgaW5jbHVkZS93aW5lL3dpbm5ldDE2Lmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXhlZCBpbmNvcnJlY3QgcGFja2luZy4KCgkqIGRsbHMvbXN2Y3J0L2Vudmlyb24uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglnZXRlbnYgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cglta3RpbWUgbXVzdCBub3JtYWxpemUgdGhlIHN0cnVjdCB0bSBmaWVsZHMuCgoyMDAxLTEyLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3VzZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuc3BlYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBhbGxvdyB0byBzYXZlL3Jlc3RvcmUgc29tZSBwcm9wZXJ0aWVzIGludG8gdGhlIHJlZ2lzdHJ5IChsaWtlIGZvbnQsCgkgIGN1cnNvciBzaXplLi4uKQoJLSBpbXBsZW1lbnQgdGhlIHR3byBzZXRzIG9mIHByb3BlcnRpZXMgKGRlZmF1bHQgJiBjdXJyZW50KQoJLSBmaXhlZCBzb21lIGJ1Z3MgbWFpbmx5IGluIGRpYWxvZwoJLSBlbmhhbmNlZCBmb250IHNlbGVjdGlvbiBtZWNoYW5pc21zLAoJLSBhZGRlZCBhbmQgcHJvdGVjdGVkIHN1Yi1tZW51IGZvciBhbGwgb3BlcmF0aW9ucyAoc3lzbWVudSBpcyBub3QKCSAgYXZhaWwgaW4gbWFuYWdlZCBtb2RlKQoJLSBiZXR0ZXIgZGF0YSBzZXBhcmF0aW9uIGZvciB0aGUgYmFja2VuZChzKQoKCSogc2VydmVyL2NvbnNvbGUuaCwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTGV0IHRoZSBjb25zb2xlIHJlbmRlcmVyIGJlIGRlZmluZWQgYXMgYSB0aHJlYWQuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmg6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCU9ubHkgaW5jbHVkZSB0aGUgbmVjZXNzYXJ5IGZpbGVzIHRvIGF2b2lkIGNvbmZsaWN0cyBpbiBnZXRob3N0bmFtZQoJcHJvdG90eXBlcyBiZXR3ZWVuIHdpbnNvY2suaCBhbmQgdW5pc3RkLmgKCgkqIG9iamVjdHMvYml0bWFwLmM6CglFcmlrIEluZ2UgQm9sc/ggPGtuYW5AbW8uaGltb2xkZS5ubz4KCUNyZWF0ZUJpdG1hcCBjYW4gdGFrZSBuSGVpZ2h0IG9yIG5XaWR0aCA9IHplcm8sIGFuZCB0aGVuIHJldHVybnMgYQoJcG9pbnRlciB0byBhIDF4MSBtb25vY2hyb21lIGJpdG1hcC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIF8xNjkgKGNhbGwgb2YgUmVsZWFzZSkuIFRoaXMgZml4ZXMgY3Jhc2hlcwoJICB3aGVuIGFjdHVhbGx5IGF0dGVtcHRpbmcgdG8gY2FsbCBSZWxlYXNlLgoJLSBDb3JyZWN0IHNvbWUgdHJhY2VzLgoKCSogbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy9kb3NtZW0uYywKCSAgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQxNy5jLAoJICBtc2Rvcy9pbnQxOS5jLCBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyOS5jLAoJICBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2lvcG9ydHMuYywKCSAgbXNkb3MvdmdhLmMsIG1zZG9zL3htcy5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3ZnYS5oLCBtaXNjZW11L21haW4uYywKCSAgZ3JhcGhpY3MvZGlzcGRpYi5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2RldmljZXMuYywKCSAgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MTYuYywKCSAgZGxscy93aW5lZG9zL2ludDE3LmMsIGRsbHMvd2luZWRvcy9pbnQxOS5jLCBkbGxzL3dpbmVkb3MvaW50MjAuYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQyOS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmgsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsCgkgIGRsbHMvd2luZWRvcy94bXMuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWM6CglNb3ZlZCBtb3N0IG9mIHRoZSByZWFsLW1vZGUgc3R1ZmYgdG8gZGxscy93aW5lZG9zLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFkZGVkIFNZTkNIUk9OSVpFIGFjY2VzcyB0byBzdGRpbyBoYW5kbGVzLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3B5IHRoZSBjb3JyZWN0IG51bWJlciBvZiBieXRlcyBpbiBXcml0ZUNvbnNvbGVJbnB1dEEuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIGluIG91dHB1dCBmdW5jdGlvbnMgKHdyaXRlKS4KCVJld3JvdGUgc29tZSBwYXJ0cyBmb3IgYmV0dGVyIERMTCBzZXBhcmF0aW9uLgoJRml4ZWQgc29tZSBwcm90b3R5cGVzLgoJRml4ZWQgbW1pb0FkdmFuY2UgaW4gd3JpdGUgbW9kZS4KCgkqIGRsbHMvbXNhY20vZm9ybWF0LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFjbUZvcm1hdENob29zZSByZXR1cm5lZCBmaWVsZHMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglJbml0aWFsaXplIGRpYWxvZyBkYXRhIGNvcnJlY3RseSBpbiBDcmVhdGVUZW1wbGF0ZURpYWxvZy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCU1pc2MgZml4ZXMgdG8gRENCIGJ1aWxkaW5nIGZyb20gY29tbWFuZCBsaW5lLgoKCSogdG9vbHMvd2luZWNvbmY6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglCZXR0ZXIgaGFuZGxpbmcgb2YgY29uZmlndXJhdGlvbiB3aXRoIHNldmVyYWwgV2luZG93cyBpbnN0YWxsYXRpb25zLgoKMjAwMS0xMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVVuZG9jdW1lbnRlZCBmZWF0dXJlIG9mIFRCX3tHRVR8U0VUfUJVVFRPTklORk97QXxXfTogaWYgbWFzayBoYXMKCTB4ODAwMDAwMDAgc2V0IHRoZW4gdGhlIGNvbW1hbmQgaWQgaXMgcmVhbGx5IHRoZSBpbmRleC4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4ZWQgUGF0aElzVVJMe0F8V30uCgktIEltcGxlbWVudGVkIFBhdGhSZW5hbWVFeHRlbnNpb257QXxXfSwgU0hSZWdEdXBsaWNhdGVIS2V5LAoJICBDaHJDbXBJe0F8V30uCgktIEFkZGVkIGZvcndhcmRzIHRvIERyYXdUZXh0VywgQ3JlYXRlRGlhbG9nUGFyYW1BLCBDcmVhdGVGb250VywKCSAgVHJhY2VQb3B1cE1lbnVFeC4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBTdHViIHJvdXRpbmVzIGZvciBfMTY0LCBfMjA4LCBfMjEwLCBfMjExLCBfMjM5LCBfMzU2LCBfNDEzLCBfNDM3LAoJICBDb2xvclJHQlRvSExTCgktIEltcGxlbWVudCByb3V0aW5lcyBmb3IgXzE3MiwgXzE3NCwgXzE3NiwgXzE5OSwgXzIxNSwgXzIxOSwgXzIzNiwgXzM3NywKCSAgXzM3OCwgVXJsQ29tcGFyZXtBfFd9LCBVcmxBcHBseVNjaGVtZXtBfFd9LgoJLSBGaXggcm91dGluZXMgXzIxNywgXzE2OSwgXzI0MCwgXzI3NiwgXzM0MiwgXzM3Ni4KCjIwMDEtMTEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3VzZXIuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUmVtb3ZlZCBHZXQvU2V0U2NyZWVuU2F2ZVRpbWVvdXQgdXNlciBkcml2ZXIgZnVuY3Rpb25zIGJlY2F1c2UgdGhleQoJYXJlIG5vdCB1c2VkLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbXBsZW1lbnRlZCBJbWFnZUxpc3RfR2V0RHJhZ0ltYWdlLgoJRml4ZWQgSW1hZ2VMaXN0X1NldERyYWdDdXJzb3JJbWFnZSBhbmQgSW1hZ2VMaXN0X01lcmdlLgoJTm8gbmVlZCBmb3IgU3RyZXRjaEJsdCBpbiBJbWFnZUxpc3RfQmVnaW5EcmFnLgoJQWRkZWQgc29tZSB0cmFjZXMuCgoJKiBkbGxzL3gxMWRydi9kZ2EyLmM6CglHbGVubiBTY2hyYWRlciA8Z2VzY2hyYWRlckBtZWRpYW9uZS5uZXQ+CglVc2UgZ2RpX2Rpc3BsYXkgZXZlcnl3aGVyZSB0byBhdm9pZCBCYWRDb2xvciBlcnJvcnMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglSZW1vdmUgc29tZSBwb3NzaWJsZSBpbnRlcmxvY2tpbmcgcHJvYmxlbXMgd2l0aCBwZWIgbG9jay4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbmMucnIuY29tPgoJRml4ZWQgV1NfZ2V0cGVlcm5hbWUgcGFyYW1ldGVyIGluIFdTX2FjY2VwdC4KCUNoYW5nZWQgb3JkZXIgb2YgZXZlbnQgcHJvY2Vzc2luZyBpbiBXSU5TT0NLX0RvQXN5bmNFdmVudC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCW1hcF9pbWFnZTogbWFwIHRoZSBQRSBoZWFkZXIgcmVhZG9ubHkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJZG9fcmVsb2NhdGlvbnM6IHByb2Nlc3MgcmVsb2NhdGlvbiBibG9ja3Mgd2l0aCBhIFZpcnR1YWxBZGRyZXNzIG9mIDAsCglzdG9wIG9uY2UgU2l6ZU9mQmxvY2sgPT0gMC4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCVJlbmFtZSBkZWJ1Zy5oIHRvIGRlYnVndG9vbHMuaC4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywKCSAgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2F0b20uYywKCSAgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5oLAoJICBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLAoJICBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsCgkgIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VsZWN0LmMsCgkgIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywKCSAgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBtc2Rvcy92Z2EuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsCgkgIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvcHJvcGVydHkuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9jaGFuZ2UuYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglSZWRlc2lnbiBvZiB0aGUgc2VydmVyIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdG8gYWxsb3cgYXJiaXRyYXJ5IHNpemVkCglkYXRhIHRvIGJlIGV4Y2hhbmdlZC4KCVNwbGl0IHJlcXVlc3QgYW5kIHJlcGx5IHN0cnVjdHVyZXMgdG8gbWFrZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQoJZWFzaWVyLgoJTW92ZWQgbWFueSBjb25zb2xlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbCwgYWRkZWQgY29kZSBwYWdlIHN1cHBvcnQsCgljaGFuZ2VkIGEgZmV3IHJlcXVlc3RzIHRvIGJlaGF2ZSBwcm9wZXJseSB3aXRoIHRoZSBuZXcgcHJvdG9jb2wuCgoyMDAxLTExLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvZm9udF9jb252ZXJ0LnNoLCBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxLAoJICBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQXZvaWQgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggZmlsZW5hbWVzIGNvbnRhaW5pbmcgc3BhY2VzLgoKCSogd2luMzIvY29uc29sZS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcGFzc2luZyBldmVudCB3aXRoIC0tdXNlLWV2ZW50IHRvIGxldCBwcm9ncmFtcyBzdGFydGluZyB3aXRoCglkaWdpdHMgYmVpbmcgcnVuLgoKCSogbWlzY2VtdS9tYWluLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJbW1zeXN0ZW0uZGxsIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBmb3IgMTYtYml0IGFwcHMuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBJTyB3aGVuIG5vdCBydW4gd2l0aCB3aW5lY29uc29sZS4KCjIwMDEtMTEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUNvbXBpbGUgYWxsIHByb2dyYW1zIHdpdGggLURTVFJJQ1QgLUROT05BTUVMRVNTVU5JT04gLUROT05BTUVMRVNTU1RSVUNULgoKCSogc2VydmVyL3dpbmRvdy5jOgoJU2tpcCBxdWV1ZSBjbGVhbnVwcyBpZiBxdWV1ZSBoYXMgYmVlbiBkZXN0cm95ZWQgYWxyZWFkeS4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglGaXhlZCByZWdpc3RyeSByb3V0aW5lcyBicm9rZW4gYnkgdGhlIHN0cnVjdHVyZSBzaXplcyBmaXguCgoyMDAxLTExLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvc291cmNlLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmV2aXNpdGVkIGNvbnNvbGUgc3VwcG9ydCAoZ290IHJpZCBvZiBvbGQgaGFja3MgYW5kIHByaXZhdGUgZWRpdGxpbmUKCXNpbmNlIHdlIG5vdyBoYXZlIGEgYnJhbmQgbmV3IGNvbnNvbGUpLCByZW1vdmVkIHByaXZhdGUgZGVidWcgaGVhcC4KCgkqIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2VkaXRsaW5lLmMsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsCgkgIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLnNwZWMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5jb24uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZmlsZXMvZmlsZS5jLAoJICBjb25maWd1cmUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5ldyBjb25zb2xlIGNvZGUgYmFzZWQgb24gV2luMzIgd2luZG93cy4KCgkqIG1zZG9zL3Z4ZC5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwKCSAgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL25iMzAuaCwgaW5jbHVkZS9udGRkay5oLAoJICBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludXNlci5oLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcGFja2luZyBhbmQgbGF5b3V0IG9mIG1hbnkgc3lzdGVtIHN0cnVjdHVyZXMuCgoJKiBkbGxzL21zdmNydC9lbnZpcm9uLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNU1ZDUlRfZ2V0ZW52OiBjb21wYXJlIGZvciB0aGUgbGVuZ3RoIG9mIHRoZSBrZXkgYW5kIHJldHVybiBOVUxMIGluCgljYXNlIG9mIGZhaWx1cmUuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglBZGQgbWlzc2luZyA8L3BhcmE+LgoKCSogZGxscy91c2VyL2NvbW0xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUNoZWNrIGZvciBjb21wbGV0ZWQgb3ZlcmxhcHBlZHMgaW4gUmVhZENvbW0xNiB0byBzb2x2ZSBwcm9ibGVtcyB3aXRoCglwcm9ncmFtcyB0aGF0IGxvb3Agb24gaXQgYnV0IGRvbid0IGdldCBkYXRhLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglfZGV2X3QgaXMgYW4gdW5zaWduZWQgaW50ZWdlci4KCjIwMDEtMTEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIGZvciBhY3Rpb25zIFNQSV9HRVQvU0VUU0NSRUVOU0FWRVRJTUVPVVQsCglTUElfR0VUL1NFVFNDUkVFTlNBVkVBQ1RJVkUsIFNQSV9HRVQvU0VUU0NSRUVOU0FWRVJSVU5OSU5HLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJR2V0VXNlck5hbWUgc2hvdWxkIGluY2x1ZGUgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyIHdoZW4KCXJldHVybmluZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHJldHVybmVkLiBDb3JyZWN0bHkgaGFuZGxlIHRoZQoJRVJST1JfTU9SRV9EQVRBIGNhc2UuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglVc2UgZXhjZXB0aW9uIGhhbmRsZXIgZm9yIEdsb2JhbFVubG9jaywgR2xvYmFsRnJlZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5zb2NrLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWNhcDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21hcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2ltZzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zcmxlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbmV0YXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zdGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWRvcy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglUT09MQkFSX0dldFJlY3QgZGlkIG5vdCBjb3JyZWN0bHkgdHJhbnNsYXRlIHRoZSBjb21tYW5kIElEIHRvIHRoZQoJYnV0dG9uIGluZGV4LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUR1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJQWRkIERlYmlhbi9NYW5kcmFrZSBtZW51IHN5c3RlbSBzdXBwb3J0LgoKCSogd2luZG93cy9jbGFzcy5jOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUl0IGlzIGxlZ2FsIHRvIGNhbGwgVW5yZWdpc3RlckNsYXNzIHdpdGggYW4gaEluc3RhbmNlIG9mIHplcm8uCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU9ubHkgaW5jbHVkZSAnc3lzL3VzZXIuaCcgZm9yIExpbnV4LiBGaXhlcyBhIGNvbXBpbGF0aW9uIGVycm9yIG9uCglGcmVlQlNEIDUuMC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvbnRkbGwvbnQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IExVSUQgZGVmaW5pdGlvbi4KCgkqIHdpbmRvd3Mvc3B5LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbWVzc2FnZSBzcHkgdG8gdW5pY29kZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUZpeCBsb2NrIHVwIGluIEdldEtleU5hbWVUZXh0IGR1ZSB0byBhbiBpbmNyZW1lbnQgd3JhcCB3aGVuIEtleUNvZGUgaXMKCWEgY2hhciB0eXBlIGFuZCBtYXhfa2V5Y29kZSBpcyAyNTUuCgoyMDAxLTExLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbjMyL3RpbWUuYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICB0b29scy93aW5laW5zdGFsbCwgbXNkb3MvaW50MjEuYywgbWlzYy9jZHJvbS5jLCBmaWxlcy9kaXJlY3RvcnkuYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwsIGRsbHMveDExZHJ2L2RnYTIuYywKCSAgZGxscy93aW5lcHMvd3BzX0RlLnJjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGNvbnRyb2xzL0VESVQuVE9ETywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBmaXggd3JvbmcgaGV4YWRlY2ltYWwgR2V0TGFzdEVycm9yKCkgb3V0cHV0CgktIG1pc2MgZml4ZXMKCS0gY2hhbmdlZCBteSBlbWFpbCBhZGRyZXNzCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCVByZXZlbnQgd2FybmluZ3MgYWJvdXQgbGFiZWxzIGF0IGVuZCBvZiBzd2l0Y2ggc3RhdGVtZW50cyB3aGVuCgljb21waWxpbmcgd2l0aCBnY2MtMy54LgoKCSogZGxscy93c29jazMyL3Byb3RvY29sLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgc2VydmVyL3RyYWNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBTb2xhcmlzIGFuZCBGcmVlQlNEIGNvbXBpbGF0aW9uIGVycm9ycyBpbnRyb2R1Y2VkIGJ5IHRoZQoJcmVjZW50IHdpbnNvY2sgdXBkYXRlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglTaW1vbiBCcml0bmVsbCA8dWdoYmFzaEB5YWhvby5jb20+CglGaXggYSBsb29wIHBsYXlpbmcgZmFpbHVyZSBhbmQgYSBwcm9ibGVtIHdpdGggY2hvcHB5IHNvdW5kLgoKCSogaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLAoJICBkbGxzL3NobHdhcGkvdXJsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUEgZmV3IHR5cG9zLgoKCSogaW5jbHVkZS9ycGNuZHIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTUlETF9TVFVCX01FU1NBR0UgbmVlZHMgYSBwYWNrNCBmb3IgdGhlIE1heENvdW50IGZpZWxkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQmV0dGVyIHJlbGF5aW5nIGZvciBfbGNyZWF0LgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCB0eXBvIGluIGF2aWNhcDMyLnNwZWMgZml4ZWQuCgoJKiB3aW5kb3dzL3dpbi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IGV4Y2hhbmdlZCBsaW5lcyBpbiBXSU5fR2V0V2luZG93TG9uZy4KCjIwMDEtMTEtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJVHJ1bmNhdGUgdGhlIHdpbmRvdyB0ZXh0IGlmIGl0IGlzIHRvbyBsYXJnZSBmb3IgdGhlIHJlcXVlc3QgYnVmZmVyLgoKCSogd2luZG93cy9jbGFzcy5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCUxvY2FsIGNsYXNzZXMgcmVnaXN0ZXJlZCB3aXRoIFVTRVIgaW5zdGFuY2UgaGFuZGxlIG5vdyBhcmUgbm93IGZvdW5kCglpbiBDTEFTU19GaW5kQ2xhc3NCeUF0b20uCgoJKiBpbmNsdWRlL3JpY2hlZGl0LmgsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzoKCUp1c3NpIEp1bXBwYW5lbiA8anVzc2lqQHpldXNlZGl0LmNvbT4KCUFkZGVkIG1pc3NpbmcgUmljaEVkaXQgZGVmaW5lcy4KCjIwMDEtMTEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbi5oLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jOgoJTW92ZWQgV0lOX0ZpbmRXaW5Ub1JlcGFpbnQgZnVuY3Rpb25hbGl0eSB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL3NvY2suYywgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luc29jazIuaCwKCSAgaW5jbHVkZS93czJ0Y3BpcC5oLCBpbmNsdWRlL3dzaXB4LmgsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLAoJICBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3NvY2tldC5jLAoJICBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHdpbnNvY2suaCBhbmQgd2luc29jazIuaCBpbmRlcGVuZGVudCBmcm9tIHRoZSBVbml4IGhlYWRlcnMuCglNYWtlIHRoZW0gY29tcGF0aWJsZSB3aXRoIGJvdGggdGhlIFVuaXggQyBoZWFkZXJzIGFuZCB0aGUgTVNWQ1JUCgloZWFkZXJzLgoJRW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgVW5peCBoZWFkZXJzIHZpYSB0aGUgVVNFX1dTX1BSRUZJWAoJbWFjcm8uCglBZGQgV0lORV9OT1dJTlNPQ0s6IHByZXZlbnRzIHdpbnNvY2suaCBmcm9tIGJlaW5nIGluY2x1ZGVkIGZyb20KCXdpbmRvd3MuaCB3aGVuIGRlZmluZWQuCglBZGQgd3MydGNwaXAuaCwgbW92ZSBkZWZpbml0aW9ucyB0byB0aGUgcmlnaHQgaGVhZGVyLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTdHJ1Y3R1cmUgTkVXVEVYVE1FVFJJQyB1c2VzIHBhY2tpbmcgNC4KCgkqIGluY2x1ZGUvbWFwaWRlZnMuaDoKCUp1c3NpIEp1bXBwYW5lbiA8anVzc2lqQHpldXNlZGl0LmNvbT4KCUFkZGVkIG1pc3NpbmcgTUFQSSBkZWZpbmVzLgoKMjAwMS0xMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmgsIHNlcnZlci91c2VyLmgsCgkgIHNlcnZlci93aW5kb3cuYzoKCVN0b3JlIHRoZSB3aW5kb3cgY2FwdGlvbiB0ZXh0IGluIHRoZSBzZXJ2ZXIuCglNYWludGFpbiBhIHBhaW50IGNvdW50IHNlcGFyYXRlbHkgZm9yIGVhY2ggd2luZG93LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggdGhlIHNlcnZlciBwYWludCBjb3VudCBpbiBTZXRXaW5kb3dQb3MuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHdhdmUoSW58T3V0KU9wZW4gd2hlbiBjYWxsZWQgd2l0aCBXQVZFX01BUFBFRCBmbGFnOyBzb21lIG1pbm9yCgkxNi8zMiBBUEkgY2FsbCBvcmRlcmluZy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBmb3IgU1BJX0dFVC9TRVRNT1VTRSwgU1BJX0dFVC9TRVRLRVlCT0FSRERFTEFZLAoJU1BJX0dFVC9TRVRLRVlCT0FSRFNQRUVEIGFjdGlvbnMuIEltcGxlbWVudGVkIHVzZSBvZiBtb3VzZQoJYWNjZWxlcmF0aW9uL3RocmVzaG9sZCBmb3IgcmVsYXRpdmUgbW91c2UgbW92ZW1lbnRzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRURJVF9FTV9MaW5lTGVuZ3RoIGNhbGxlZCBmcm9tIHdpdGhpbiBFRElUX0VNX0xpbmVMZW5ndGggbmVlZHMKCXN0YXJ0aW5nIGxpbmUgY2hhciBpbmRleCwgbm90IGxpbmUgaW5kZXggKD09IGxpbmUgbnVtYmVyKS4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBvcmRpbmFscyA3LCA4LCA5LCAxMywgMTQsIDE5LCAzNi4KCS0gSW1wbGVtZW50IFNIUmVnV3JpdGVVU1ZhbHVle0F8V30sIFVybEdldFBhcnR7QXxXfSwgVXJsSXMuLi57QXxXfQoKMjAwMS0xMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHJhY2UgY29uZGl0aW9ucyBpbiBub3RpZmljYXRpb24gdnMuIG9wZXJhdGlvbgoJc3luY2hyb25pemF0aW9uIHVzaW5nIHRoZSBzYW1lIGluIHByb2Nlc3MgbWVzc2FnZSByaW5nIGluIHdhdmVJbiBhcyBpbgoJd2F2ZU91dC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgc3R1cGlkIGJ1ZyB3aXRoIHR5cGVsaWIgZmlsZW5hbWVzLgoKCSogZGxscy91c2VyL3duZDE2LmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglDYXN0IGlkIHRvIHVuc2lnbmVkIGluIEdldERsZ0l0ZW0xNi4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCUdlcnNvbiBLdXJ6IDxHZXJzb24uS3VyekBwZXJnYW1vbi1zb2Z0d2FyZS5kZT4KCVBhcml0eSBzZXR0aW5ncyB3ZXJlIG5vdCBzZXQgcHJvcGVybHkgaW4gQnVpbGRDb21tRENCQW5kVGltZW91dHMoKQoJYmVjYXVzZSBvZiBhbiBvZmYtYnktb25lIGVycm9yLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeGVkIGhhbmRsaW5nIG9mIC0xIGl0ZW1pZCBpbiBXTV9EUkFXSVRFTS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCS0gaW1wbGVtZW50IG1ic2NzcG4gbW9zdGx5IGFzIGEgc3R1YgoJLSByZWltcGxlbWVudCBta3RpbWUKCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGRvbid0IGZvcmdldCB0byBpbml0aWFsaXplIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byAwCgktIGFkZCAiUkFTIGRvZXNuJ3Qgd29yayIgd2FybmluZwoKMjAwMS0xMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJU2ltb24gQnJpdG5lbGwgPHVnaGJhc2hAeWFob28uY29tPgoJQ2xlYW5lZCB1cCB0aGUgd29kUGxheWVyIGZ1bmN0aW9uYWxpdHkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93LgoJQ2hhbmdlZCBub3RpZmljYXRpb24gdG8gYmUgY2FsY3VsYXRlZCBmcm9tIGJ5dGVzIHBsYXllZCByYXRoZXIgdGhhbgoJdGltZSBlbGFwc2VkLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJVGVzdCBiaXRzIHdpdGggJyYnIGluc3RlYWQgb2YgJyYmJy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBTUElfSUNPTkhPUklaT05UQUxTUEFDSU5HLCBTUElfSUNPTlZFUlRJQ0FMU1BBQ0lORyBzeXN0ZW0KCXBhcmFtZXRlcnMgcHJvY2Vzc2luZy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGhhbmRsaW5nIG9mIHN0cmluZ3MgaW4gc2V0VmFsdWUuCglCZXR0ZXIgaGFuZGxpbmcgb2Ygc3RyKHgpIGFuZCBoZXgoeCkgaW4gc2V0VmFsdWUuCglNaXNjIHR5cG9zLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPm8KCURvY3VtZW50IHRoZSBuZXcgLXdpbnZlciB2ZXJzaW9ucy4KCgkqIGRsbHMvdXNlci93bmQxNi5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCUNoYW5nZWQgQk1fIG1lc3NhZ2VzIFNFVENIRUNLIGFuZCBHRVRDSEVDSyB0byBTRVRDSEVDSzE2IGFuZAoJR0VUQ0hFQ0sxNiBpbiBDaGVja0RsZ0l0ZW0xNiBhbmQgSXNEbGdJdGVtQ2hlY2tlZDE2LgoJQ2FzdCBVSU5UMTYgdmFsdWUgdG8gVUlOVCBvciBJTlQgZGVwZW5kaW5nIG9uIHNpZ24gaW4gU2V0RGxnSXRlbUludDE2LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZWNvZ25pemUgdGhlIEZyZWVCU0QgZGxvcGVuIGVxdWl2YWxlbnQgb2YgImNhbm5vdCBvcGVuIi4KCgkqIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglVc2UgcHJvcGVyIHVuaWNvZGUgcm91dGluZS4KCgkqIE1ha2UucnVsZXMuaW46CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBvdXQtb2Ytc291cmNlLXRyZWUgYnVpbGRzIHdvcmsgd2l0aCBTb2xhcmlzIG1ha2UuCgoyMDAxLTExLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDExMTA4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTExLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvd2NzLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUltcGxlbWVudGVkIGlubGluZSB2ZXJzaW9uIG9mIHRoZSBpc3d4eHggZnVuY3Rpb25zLgoKCSogbXNkb3MvaW50MDkuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy9pb3BvcnRzLmMsCgkgIG1zZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgdGhlIGludCA5IChrZXlib2FyZCkgaGFuZGxlciB0byBkbGxzL3dpbmVkb3MuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRmluZCBvdXQgaG93IG11Y2ggZGF0YSBpcyBhdmFpbGFibGUgd2hlbiBjYWxsaW5nIFJlYWRGaWxlRXguCgoyMDAxLTExLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglSZXBhaXJlZCBjaGlsZCB3aW5kb3cgYWN0aXZhdGlvbiBicm9rZW4gYnkgcHJldmlvdXMgY2hhbmdlLgoKCSogd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgZHVtcGluZyBvZiB3aW5kb3cgc3R5bGVzIGF0IHRoZSB3aW5kb3cgY3JlYXRpb24gdGltZS4KCgkqIG1zZG9zL3ZnYS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgZmV3IGRlZmF1bHQgcGFsZXR0ZSBlbnRyaWVzIGZvciB0aGUgVkdBL01DR0EgMjU2LWNvbG9yIG1vZGUuCglNYWRlIHRoZSBWR0EgbW9kZSBzZXQgZ28gdGhyb3VnaCBSdW5JblRocmVhZCwgc28gdGhhdCB0aGUgVkdBIGdyYXBoaWNzCgl3aW5kb3cgZ2V0cyBvd25lZCBieSB0aGUgcmlnaHQgdGhyZWFkLgoKCSogc2VydmVyL3RocmVhZC5jOgoJQXZvaWQgZnRydW5jYXRlIHRvIHdvcmsgYXJvdW5kIGJyb2tlbiBVTVNET1MgZmlsZSBzeXN0ZW0uCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQ3JlYXRlZCBuZXcgaW5mcmFzdHJ1Y3R1cmUgZm9yIFN5c3RlbVBhcmFtZXRlcnNJbmZvIGZ1bmN0aW9uLiBVc2VkIGl0Cgl0byBpbXBsZW1lbnQgcHJvY2Vzc2luZyBmb3IgU1BJX0dFVC9TRVRCRUVQLCBTUElfR0VUL1NFVEJPUkRFUiwKCVNQSV9HRVQvU0VUU0hPV1NPVU5EUyBzeXN0ZW0gcGFyYW1ldGVycy4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWw6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU1pbm9yIGdyYW1tYXRpY2FsIGNvcnJlY3Rpb25zLgoKCSogbXNkb3MvZHBtaS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsCgkgIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgUnVuSW5UaHJlYWQgY2FsbG91dCB0byB3aW5lZG9zLgoKCSogc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL25hbWVkX3BpcGUuYywgZGxscy9rZXJuZWwvc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCU1ha2UgQ29ubmVjdE5hbWVkUGlwZSB3b3JrIGluIG92ZXJsYXBwZWQgbW9kZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJZ25vcmUgRFNSL0RUUiBmbG93IGNvbnRyb2wgaW4gRENCLiB0ZXJtaW9zIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KCjIwMDEtMTEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIERlZmluZSByZXN0IG9mIFVSTF9FU0NBUEUuLi4gYW5kIG90aGVyIGZsYWdzLgoJLSBEZWZpbmUgaW1wbGVtZW50ZWQgaW50ZXJmYWNlcyBmb3IgcmVnLmMgYW5kIHVybC5jLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IFVSTF9FU0NBUEVfU0VHRU1FTlRfT05MWSwgVVJMX0VTQ0FQRV9QRVJDRU5ULAoJICBhbmQgVVJMX0RPTlRfRVNDQVBFX0VYVFJBX0lORk8gaW4gdGhlIFVybEVzY2FwZXtBfFd9IHJvdXRpbmVzLgoJLSBNYWtlIFVybENhbm9uaWNhbGl6ZUEgdXNlIFVybENhbm9uaWNhbGl6ZVcuCgktIEltcGxlbWVudCBmdWxsIGZ1bmN0aW9uYWxpdHkgaW4gVXJsQ2Fub25pY2FsaXplVy4KCS0gSW1wbGVtZW50IFVybENvbWJpbmV7QXxXfS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmg6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgU0hMV0FQSV8xIChBU0NJSSB2ZXJzaW9uIG9mIFNITFdBUElfMikuCgktIEZpeCBlcnJvciBpbiBTSExXQVBJXzE4CgktIE5ldyBmaWxlIChvcmRpbmFsLmgpIHdpdGggZG9jdW1lbnRhdGlvbiBmb3IgXzEsICZfMi4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW5wb3MuaCwgZGxscy90dHlkcnYvd25kLmM6CglXaW5kb3cgYWN0aXZhdGlvbiBjbGVhbnVwcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglSZXR1cm4gc3VjY2VzcyBpbiBDcmVhdGVQcm9jZXNzIHdoZW4gd2Ugc3RhcnRlZCBhIG5vbi1XaW5lbGliIFVuaXgKCXByb2Nlc3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgJFhfTElCUyBwYXRoIHdoaWxlIHNlYXJjaGluZyBmb3IgbGliZnJlZXR5cGUuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYzoKCTxsYXJzdGlxQGxhcnN0aXEuZHluZG5zLm9yZz4KCURldmljZXMgbmV2ZXIgbmVlZCB0byBiZSBwb2xsZWQsIHNvIHJldHVybiBESV9OT0VGRkVDVCBpbiBQb2xsLgoKCSogc2VydmVyL3NlbGVjdC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQcmV2ZW50IGRhbmdlciBvZiBhY2Nlc3NpbmcgZnJlZWQgbWVtb3J5ICh0aGVvcmV0aWNhbCBidXQgdW5saWtlbHkKCWJ1ZykuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJc3Ryc2VwIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBTb2xhcmlzLCByZXBsYWNlIGl0IHdpdGggb3VyIG93biBwb3J0YWJsZQoJaW1wbGVtZW50YXRpb24uCgoJKiBsaWJyYXJ5L2RlYnVnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbmFtZWQgc3RydWN0IG9wdGlvbiB0byBzdHJ1Y3QgZGVidWdfb3B0aW9uIHRvIGF2b2lkIGNvbXBpbGUgcHJvYmxlbXMKCXdoZXJlIHN0cnVjdCBvcHRpb24gaXMgYWxyZWFkeSBkZWZpbmVkLgoKCSogdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhIGJ1ZmZlciBvdmVyZmxvdyBpbiB3cml0ZV9uYW1lX3N0ciwgYnVnIGZvdW5kIGJ5Cglqb25hdGhhbkBjb3J2dS5jb20uYXUuCgoJKiB0b29scy93aW5lY2hlY2s6IDxnaHV0Y2hpc0BjaXNjby5jb20+CglBdm9pZCBwYXJzaW5nIHRoZSB3aG9sZSB0cmVlIHRvIGZpbmQgbGlid2luZS5zby4KCgkqIGxvYWRlci9tb2R1bGUuYywgd2luZG93cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy93c29jazMyL3NvY2tldC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL3JlZy5jLCBjb250cm9scy9jb21iby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBwcmVmaXggJXAgd2l0aCAweC4KCVZhcmlvdXMgRW5nbGlzaCBmaXhlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BwbC5sLCB3aW4zMi9kZXZpY2UuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIG1zZG9zL2Rvc21lbS5jLAoJICBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDEwLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBtZW1vcnkvZ2xvYmFsLmMsCgkgIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvZWxmLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3RzX3NoYXBlLmgsCgkgIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsCgkgIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZW5kZXIuaCwKCSAgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwKCSAgaW5jbHVkZS90c194dmlkZW8uaCwgaW5jbHVkZS93aW5lX2dsLmgsIGluY2x1ZGUveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L2RnYTIuaCwgZGxscy94MTFkcnYveDExZGRyYXcuaCwgZGxscy94MTFkcnYveHZpZG1vZGUuaCwKCSAgZmlsZXMvZHJpdmUuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5oLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLAoJICBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi91c2VyLmMsCgkgIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgY29udHJvbHMvbWVudS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgY29uZmlndXJlLmluLCBjb25zb2xlL3h0ZXJtLmMsIGNvbmZpZ3VyZToKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlICNpbmNsdWRlIG9yZGVyIGZvciBjb25maWcuaC4KCUFkZCAjaW5jbHVkZSAiY29uZmlnLmgiIGRpcmVjdGl2ZXMgd2hlcmUgbmVlZGVkLgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBkZWJ1Z3Rvb2xzLmggaW5kZXBlbmRlbnQgZnJvbSBjb25maWcuaC4KCgkqIHNlcnZlci93aW5kb3cuYzoKCUFsbG93IG93bmVyIHRvIGJlIHRoZSBkZXNrdG9wIHdpbmRvdy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglUaGUgJ2R3b3JkJyB2YWx1ZXMgc2hvdWxkIGJlIHN0b3JlZCBhcyBiaWcgZW5kaWFuIHZhbHVlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbmIzMC5oLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV0YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGNvbmZpZ3VyZToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBuZXRhcGkzMi5kbGwgYW5kIHRoZSBOZXRiaW9zKCkgY2FsbC4KCgkqIHdpbmRvd3MvY2FyZXQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRm9yIGRyYXdpbmcgYSBjYXJldCwgaW50ZXJuYWxseSByZXBsYWNlZCB0aGUgYnJ1c2ggYnkgYSBiaXRtYXAgKHRoaXMKCWFsbG93cyBjYXJldCBvZiBzaXplID4gOHg4KSwKCgkqIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3ZlcnNpb24uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHZlcnNpb25zIGZvciBXaW5NRSBhbmQgV2luWFAuCglGaXggdGhlIDE2Yml0IHZlcnNpb24gcmV0dXJuIGZvciBXaW4yMDAwLgoJTW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBXaW45NS85OCBDU0RWZXJzaW9uIGZpZWxkcy4KCUVuaGFuY2UgZG9jdW1lbnRhdGlvbiBvZiBXaW45NSB2ZXJzaW9uIG51bWJlcnMuCglDb25maXJtIHRoZSBleGlzdGluZyBkYXRhIGZvciBXaW4yMDAwLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggaW5jb3JyZWN0IHVzZSBvZiBhIFVuaWNvZGUgc3RyaW5nIGxpdGVyYWwuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRyYWNlcyB0byBoZWxwIGRpYWdub3NlIHN5c3RlbWF0aWMgY2FjaGVkLW1ldHJpY3MgcmVnZW5lcmF0aW9uCglwcm9ibGVtcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lIFNJQ19Db21wYXJlRW50cnlzIHRvIFNJQ19Db21wYXJlRW50cmllcywgYW5kIG1ha2UgaXQgc3RhdGljLgoKCSogZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmljYXAzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgbXNybGUzMi5kbGwgYW5kIGltcGxlbWVudGVkIFJMRTggZGVjb2Rlci4KCUFkZGVkIHN0dWIgZm9yIGF2aWNhcDMyLgoKMjAwMS0xMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZm9udC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IEdldENoYXJXaWR0aCB0byBVbmljb2RlLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglNb3ZlIFNQWV9FbnRlck1lc3NhZ2UgY2FsbCBhZnRlciBhbGwgcG9zc2libGUgZXhpdHMgc28gdGhhdCB0aGVyZSB3aWxsCgliZSBhIG1hdGNoaW5nIFNQWV9FeGl0TWVzc2FnZS4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbmRpY2F0ZSB0aGF0IFN0clJldFRvU3RyTntBfFd9IGFuZCBTdHJSZXRUb0J1ZntBfFd9IGFyZSBpZGVudGljYWwKCSAgY29kZSBidXQgZHVwbGljYXRlZCBkZWxpYmVyYXRlbHkuCgktIEltcGxlbWVudCBTdHJSQ2hySXtBfFd9LgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgc3VwcG9ydCBmb3IgV2luZSBpbnRlcm5hbCBtZXNzYWdlcy4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywKCSAgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFuZCBnbG9iYWxpemVkIHNvbWUgcGF0aCBhbmQgbW9kdWxlIG5hbWUgaGFuZGxpbmcuCglUd2Vha2VkIHRoZSBkZW1hbmdsaW5nIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIGFzIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZHN0IC8gc3JjIGxpbmVzIGltcGxlbWVudGF0aW9uLgoJQWRkZWQgbXV4L21peGVyIGNvbnRyb2wgZm9yIG1hc3RlciByZWMuCglBZGRlZCBmcmFtZXdvcmsgZm9yIG11bHRpcGxlIG1peGVycy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVRlc3QgZm9yIHdzX3RpbWVvdXQ9TlVMTCBpbiB3aW5zb2NrIHNlbGVjdCgpLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGVsbCBTb2xhcmlzIHVzZXJzIHdoZXJlIHRvIGdldCBYUE0uCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGQUxTRSBpcyBub3QgZGVmaW5lZCBvbiBTb2xhcmlzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBsaW5lIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBYMTFEUlZfRElCX0NvbnZlcnRfYW55X2FzaXMuCglDb3JyZWN0bHkgaW5pdGlhbGl6ZSB0aGUgY29sb3IgbWFza3Mgb2YgMjRicHAgRElCcy4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglGb3IgZ2xvYmFsIGNsYXNzZXMsIEdldENsYXNzSW5mbyBub3cgcmV0dXJucyBhIGhhbmRsZSB0byBVU0VSLgoKCSogbXNkb3MvaW50ZXJydXB0cy5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYSBkeW5hbWljIHRhYmxlIG9mIERPUyBpbnRlcnJ1cHQgaGFuZGxlcnMuCgoyMDAxLTEwLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggUmVnU2V0VmFsdWVFeCBjYWxscyBhbmQgY3Jhc2ggd2hlbiBEcml2ZXJOYW1lPSIiIGluIHJlZ2lzdHJ5LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQcm90ZWN0IGFnYWluc3QgYW4gaW50ZXJydXB0LXBlbmRpbmcgc2lnbmFsIHJlY3Vyc2lvbi4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9SRUFETUUsIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L2RldmVudW0uYywKCSAgZGxscy9xdWFydHovZGV2ZW51bS5oLCBkbGxzL3F1YXJ0ei9kZXZtb24uYywgZGxscy9xdWFydHovZGV2bW9uLmgsCgkgIGRsbHMvcXVhcnR6L2ZncGFzcy5jLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywKCSAgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcmVnc3ZyLmMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5oLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uYywKCSAgZGxscy9xdWFydHovd2F2cGFyc2UuYywgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUltcGxlbWVudGVkIElQcm9wZXJ0eUJhZy4KCUltcGxlbWVudGVkIHNvbWUgRmlsdGVyTWFwcGVyMiBtZXRob2RzLgoJSW1wbGVtZW50ZWQgQWRkU291cmNlRmlsdGVyLgoJSW1wbGVtZW50ZWQgUmVuZGVyIHBhcnRpYWxseS4KCUltcGxlbWVudGVkIENvbm5lY3QgcGFydGlhbGx5LgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBkZWZpbml0aW9ucyBvZiBNRVJJVHMuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YiBmb3IgSUNJbWFnZUNvbXByZXNzLgoJSW1wbGVtZW50ZWQgSUNJbWFnZURlY29tcHJlc3MuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkZWQgc3R1YnMgZm9yIF8xOCxfMjEsXzIyIHdoaWNoIHNlZW0gdG8gYmUgdXNlZCBvbmx5IGJ5IG5hdGl2ZQoJICBzaGRvY3Z3LmRsbAoJLSBJbXBsZW1lbnRlZCBfMjYsIF8yNywgXzI4LCBfMzIsIGFuZCBfMzQgKG1vcmUgaXN3Li4uIGZ1bmN0aW9ucykuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJU3R1YiBVcmxDb21iaW5lQSBhbmQgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBVcmxDb21iaW5lVy4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgU0hSZWdHZXRCb29sVVNWYWx1ZXtBfFd9LgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfaWNvbnMucmM6CglKZXJlbXkgTmV3bWFuIDxqbmV3bWFuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2VkIE1hcnRpbmkgZ2xhc3MuCgoyMDAxLTEwLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmM6CglEb24ndCBrZWVwIG1haW4gZXhlIGFuZCBkbGxzIGhhbmRsZXMgb3BlbiB3aGVuIHRoZSBmaWxlIGlzIG9uCglyZW1vdmFibGUgbWVkaWEuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBoYW5kbGluZyBmb3IgTFZOX0dFVERJU1BJTkZPVy4KCjIwMDEtMTAtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIEhVU0tFWSBpbnRlcm5hbHMsIGluY2x1ZGluZyBmdW5jdGlvbnM6CgkgIFNIUmVnT3BlblVTS2V5e0F8V30sIFNIUmVnQ2xvc2VVU0tleSwgU0hSZWdHZXRVU1ZhbHVle0F8V30sCgkgIFNIUmVnUXVlcnlJbmZvVVNLZXl7QXxXfQoJLSBJbXBsZW1lbnQgU0hSZWdRdWVyeVVTVmFsdWV7QXxXfQoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktICBJbXBsZW1lbnQ6CgkgICAgICBTSExXQVBJXzIgIC0gSWRlbnRpZnkgaW50ZXJuZXQgcHJvdG9jb2xzLgoJICAgICAgU0hMV0FQSV8yNSAgLSAgaXN3YWxwaGEKCSAgICAgIFNITFdBUElfMzMgIC0gIGlzd2RpZ2l0CgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCVN3aXRjaCBmb2N1cyB0byBhY3RpdmF0ZWQgd2luZG93IGV2ZW4gaWYgbm8gd2luZG93IHByZXZpb3VzbHkgaGFkIHRoZQoJZm9jdXMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJVHJ5IHRvIHVzZSByZWFkIGluc3RlYWQgb2YgbW1hcCBmb3IgZmlsZXMgb24gcmVtb3ZhYmxlIG1lZGlhLCBzbyB0aGF0Cgl3ZSBkb24ndCBuZWVkIHRvIGtlZXAgdGhlIG1hcHBpbmcgaGFuZGxlIG9wZW4uCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBtaXNjL3JlZ2lzdHJ5LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNhdmUgYSBkaXNrIGZpbGUncyBkcml2ZSB0eXBlIGluIHRoZSBzZXJ2ZXIgb2JqZWN0LgoKMjAwMS0xMC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IENvc21ldGljIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywgZGxscy9tc2Rtby8uY3ZzaWdub3JlLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsCgkgIGRsbHMvbXNkbW8vbXNkbW9fbWFpbi5jLCBkbGxzL3FjYXAvLmN2c2lnbm9yZSwKCSAgZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvcWNhcC5zcGVjLCBkbGxzL3FjYXAvcWNhcF9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMgZm9yIG1zZG1vLmRsbCwgcWNhcC5kbGwgYW5kIGRldmVudW0uZGxsLgoKCSogY29uZmlndXJlLmluLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL2ZvbnQuaCwgb2JqZWN0cy9mb250LmMsIGNvbmZpZ3VyZToKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBHZXRGb250RGF0YS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9wcm9wZXJ0eWZyYW1lLmMsCgkgIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBPbGVDcmVhdGVQcm9wZXJ0eUZyYW1lIGFuZAoJT2xlQ3JlYXRlUHJvcGVydHlGcmFtZUluZGlyZWN0LgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkL2FkZGVkIHNvbWUgY29uc29sZSBkZWZpbml0aW9ucy4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXZlcnQgMTZiaXQgd2luOTUgdmVyc2lvbiBiYWNrIHRvIG9yaWdpbmFsIHZhbHVlLiBGaXhlcyBJbnN0YWxsU2hpZWxkCglpbnN0YWxsZXIgdmVyc2lvbiBjaGVjay4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgaW5jbHVkZS94MTFmb250LmgsIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRXh0VGV4dE91dFcgd2l0aCBzeW1ib2wgZm9udHMgd29ya3Mgd2l0aCBjaGFycyBpbiB0aGUgcmFuZ2VzCgkweDAwMDAgLS0gMHgwMGZmIGFuZCAweGYwMDAgLS0gMHhmMGZmIGFuZCBub3QsIGZvciBleGFtcGxlLCB3aXRoCgljaGFycyBpbiB0aGUgVW5pY29kZSBHcmVlayByYW5nZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGZhaWx1cmUgbWVzc2FnZXMgZm9yIENvQ3JlYXRlSW5zdGFuY2UuCgoJKiB3aW5kb3dzL2RjZS5jOgoJRml4ZWQgd2luZG93IGhhbmRsZSBjaGVjayBpbiBHZXREQ0V4LgoKCSogd2luZG93cy93aW4uYzogQSBjb3VwbGUgb2Ygb3B0aW1pemF0aW9ucy4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gIkRlYnVnZ2VyIiBzZXR0aW5nLgoJUmVwbGFjZSBmaXhlZC1zaXplIGJ1ZmZlcnMgd2l0aCBkeW5hbWljIG9uZXMuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIGJlaGF2aW9yIGZvciBTSEdldEZpbGVJbmZvIHdoZW4gdGhlIFNIR0ZJX1VTRUZJTEVBVFRSSUJVVEVTCglmbGFnIGlzIHNldC4gQ29ycmVjdHMgdGhlIGdpdmVuIHR5cGUgYW5kIGljb24uCgoyMDAxLTEwLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci93aW5kb3cuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgY29udHJvbHMvc2Nyb2xsLmM6CglTdG9yZSBpbiB0aGUgc2VydmVyIGFsbCB0aGUgd2luZG93IGluZm9ybWF0aW9uIGFjY2Vzc2libGUgd2l0aAoJR2V0L1NldFdpbmRvd0xvbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBmaWxlcy9maWxlLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL250ZGxsL29tLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcsIGdyYW1tYXIgYW5kIGEgYml0IG9mIGNvbW1lbnQgZm9ybWF0dGluZyBmaXhlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLAoJICBkbGxzL3F1YXJ0ei9hc3luY3NyYy5oLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYXVkcmVuLmgsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLAoJICBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L2NzY29udi5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywKCSAgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLAoJICBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9zYW1wbGUuYywKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuaCwKCSAgZGxscy9xdWFydHovdmlkZW9ibHQuYywgZGxscy9xdWFydHovdmlkZW9ibHQuaCwKCSAgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5oLCBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei94Zm9ybS5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUltcGxlbWVudGVkIEFWSSBEZWNvbXByZXNzb3IuCglTdGFydGVkIGltcGxlbWVudGluZyBDb2xvciBTcGFjZSBDb252ZXJ0ZXIuCglTdGFydGVkIGltcGxlbWVudGluZyBzZWVraW5nLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOiBBZGRlZCAiLS1hdXRvIiBvcHRpb24uCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgcHJpbnRlciBzZXR0aW5ncy4KCVJlbW92ZSB0aGUgZml4ZWQtc2l6ZSBidWZmZXJzLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3RpbWViLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL21zdmNydC9zeXMvdXRpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwgaW5jbHVkZS9tc3ZjcnQvY3J0ZGJnLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLAoJICBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvZWguaCwgaW5jbHVkZS9tc3ZjcnQvZmNudGwuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvaW8uaCwgaW5jbHVkZS9tc3ZjcnQvbG9jYWxlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oLCBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLCBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLCBpbmNsdWRlL21zdmNydC90aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBfX1dJTkVfVVNFX01TVkNSVC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQHRnd2JkLm9yZz4KCUltcGxlbWVudGVkIHRoZSB3Y3N0b3VsIGZ1bmN0aW9uLgoKMjAwMS0xMC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLAoJICBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLAoJICBtZW1vcnkvaW5zdHIuYywgdG9vbHMvd2luZWNoZWNrLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3dpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ29zbWV0aWNzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBzdHVicyBmb3IgXzI1LCBfMzMsIF8zNQoJLSBBZGQvY29ycmVjdCBjb2RlIGZvcjogXzE1LCBfMjksIF8zMCwgXzMxLCBfMTUxLCBfMTUyLCBfMTUzLCBfMTU0LAoJICBfMTU4LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBIVVNLRVkgZGVzaWduLgoJLSBJbXBsZW1lbnQgZnVuY3Rpb25zOiBTSFJlZ09wZW5VU0tleXtBfFd9LCBTSFJlZ0Nsb3NlVVNLZXksCgkgIFNIUmVnR2V0VVNWYWx1ZXtBfFd9LCBTSFJlZ1F1ZXJ5SW5mb1VTS2V5e0F8V30KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBVcmxDYW5vbmljYWxpemVXLCBVcmxFc2NhcGVXLCBVcmxVbmVzY2FwZVcuCgktIFN0dWIgVXJsR2V0TG9jYXRpb257QXxXfS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJQXZvaWQgY3Jhc2hpbmcgb24gbm9uLWluaXRpYWxpemVkIGRlYnVnIGluZm8uCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgYSB0eXBvLgoKCSogb2JqZWN0cy9mb250LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50ZWQgR2V0Q2hhcmFjdGVyUGxhY2VtZW50Vy4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCVhGcmVlODYgNC4xIGdhbW1hIHJhbXAgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgdHlwby4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy91c2VyL2NvbW0xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJldHVybiBUUlVFIG9uIHN1Y2Nlc3MgaW4gQ09NTV9CdWlsZE9sZENvbW1EQ0IuCglEQ0IxNi5CYXVkUmF0ZSA+IDU3NjAwIG1lYW5zIDExNTIwMC4KCU9wZW5Db21tMTYgc2hvdWxkIHVzZSBvdmVybGFwcGVkIEkvTy4KCjIwMDEtMTAtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglDaGFuZ2VkIFgxMSBtb3VzZSBkcml2ZXIgdG8gdXNlIFNlbmRJbnB1dCwgYW5kIHJlbW92ZWQgV0lORV9NT1VTRUVWRU5UCgloYWNrLiBNb3ZlZCBtb3VzZS5jIHRvIGRsbHMveDExZHJ2LgoJQWRkZWQgS2V5bWFwTm90aWZ5IGV2ZW50IGhhbmRsZXIsIGFuZCBmaXhlZCBoYW5kbGluZyB3aXRoIG11bHRpcGxlCglhbHQvc2hpZnQvY29udHJvbCBrZXlzLgoJUmVtb3ZlZCBkaW5wdXQgZnVuY3Rpb25zIGZyb20gVVNFUiBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogQWRkZWQgYSBmZXcgWEJVVFRPTiBkZWZpbmVzLgoKCSogd2luZG93cy9tZGkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgV0lOX1JlbGVhc2VQdHIgbm90IFdJTl9SZWxlYXNlV25kUHRyIHdpdGggV0lOX0dldFB0ci4KCgkqIGRsbHMvZGlucHV0L01ha2VmaWxlLmluOgoJTWFrZSBkaW5wdXQgYSBwcm9wZXJseSBzZXBhcmF0ZWQgZGxsLgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJVXNlIFdIX01PVVNFX0xMIGhvb2sgaW5zdGVhZCBvZiByZWRpcmVjdGluZyB0aGUgbW91c2UgZXZlbnQgaGFuZGxlci4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCUZpeGVkIEdldERldmljZVN0YXRlIGFuZCBHZXREZXZpY2VEYXRhIHRvIHVzZSBvbmx5IGV4cG9ydGVkIEFQSXMuCgoyMDAxLTEwLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0b25zIG9mIGNvbG9yIGNvbnZlcnNpb24gYnVncy4KCVJlb3JnYW5pemUgdGhpbmdzIG1vcmUgcmF0aW9uYWxseSBhbmQgc28gdGhhdCBtb3JlIGNvZGUgaXMgc2hhcmVkLgoKCSogd2luZG93cy9pbnB1dC5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglGaXhlZCBtb3VzZV9ldmVudCBidWcgLSBjdXJzb3Igd2FzIG1vdmVkIGJlZm9yZSBuZXcgcG9zaXRpb24gd2FzCgljYWxjdWxhdGVkLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglSZWxheSB0cmFjaW5nIHdvdWxkIGNyYXNoIGlmIGl0IGNhbWUgdXBvbiBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbgoJaW52YWxpZCBwb2ludGVyIGFzIGEgcGFyYW1ldGVyLgoKCSogd2luZG93cy9pbnB1dC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWxlYXNpbmcgYSBtb3VzZSBidXR0b24gbm93IGNsZWFycyBhbiBlbnRyeSBpbiB0YWJsZQoJSW5wdXRLZXlTdGF0ZVRhYmxlIGluc3RlYWQgb2YgQXN5bmNLZXlTdGF0ZVRhYmxlLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJT25seSBtb2RpZnkgdGhlIGFuY2VzdG9yIGlmIHlvdSBmaW5kIGl0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaCwgd2luMzIvY29uc29sZS5jLCB3aW5kb3dzL2hvb2suYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsCgkgIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL2tleWJvYXJkLnNwZWMsIGRsbHMvdXNlci9sc3RyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb3ctbGV2ZWwgbW91c2UgYW5kIGtleWJvYXJkIGhvb2tzLgoJTWlzYyBrZXlib2FyZCBoYW5kbGluZyBjbGVhbnVwcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL21lc3NhZ2UuaCwKCSAgc2VydmVyL21haW4uYywgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0Lmg6CglNYWtlIHN1cmUgdGhhdCBHZXRNZXNzYWdlUG9zIGFuZCBHZXRNZXNzYWdlVGltZSByZXR1cm4gc2FuZSB2YWx1ZXMKCWZvciBhbGwgbWVzc2FnZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gYSBzdXJmYWNlIGJlY29tZXMgcHJpbWFyeSBzdXJmYWNlLCBtYXJrIHRoZSB3aG9sZSBzdXJmYWNlIGRhbWFnZWQuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgc2FtZSBjb2xvciBjb252ZXJzaW9uIGFsZ29yaXRobSBhcyB0aGUgRElCIGNvZGUgKGFuZCBXaW5kb3dzKSwKCWkuZS4gc2hpZnRzLCBub3QgTXVsRGl2cy4KCUZpeCB0aGUgZ3JheXNjYWxlIGZvcm11bGEuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU2VwYXJhdGUgY29kZSB0byBvdmVybGFwcGVkIHRpbWVvdXRzIGludG8gRklMRV9HZXRUaW1lb3V0LgoKMjAwMS0xMC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJQWRkZWQgaW50ZXJuYWwgV2luZSBtZXNzYWdlcyB0byBwZXJmb3JtIFNldFdpbmRvd1BvcywgU2hvd1dpbmRvdyBhbmQKCVNldFBhcmVudCBpbiB0aGUgY29ycmVjdCB0aHJlYWQuCglSZXBsYWNlIFFVRVVFX0lzRXhpdGluZ1F1ZXVlIGJ5IFVTRVJfSXNFeGl0aW5nVGhyZWFkLgoJU3RvcmUgd2luZG93IHJlY3RhbmdsZXMgaW4gdGhlIHNlcnZlci4KCVByZXZlbnQgRGVzdHJveVdpbmRvdyBvbiB3aW5kb3dzIG5vdCBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnQgdGhyZWFkLgoKCSogc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYywKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJQWRkZWQgcmVxdWVzdHMgdG8gc3RvcmUgd2luZG93IHJlY3RhbmdsZXMgaW4gdGhlIHNlcnZlci4KCgkqIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdXNlci9jb250cm9scy5oLAoJICBpbmNsdWRlL25vbmNsaWVudC5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJTW92ZWQgc2Nyb2xsYmFyIHRyYWNraW5nIGNvZGUgdG8gc2Nyb2xsLmMuCglBdm9pZCB1bm5lY2Vzc2FyeSBjb29yZGluYXRlcyBjb252ZXJzaW9uIGluIE5DX0hhbmRsZVN5c0NvbW1hbmQuCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWw6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglNaXNjIGRvYyB1cGRhdGVzLgoKCSogd2luZWRlZmF1bHQucmVnOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZWdpc3RyeSBlbnRyaWVzIGZvciBzdGRvbGUzMi50bGIuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gZWxpbWluYXRlIGRpZmZlcmVudCBzZWdtZW50YXRpb24gZmF1bHRzLgoJLSB3aGVuIGF0dGVtcHRpbmcgdG8gb3BlbiBhIGRsbCwgYXBwZW5kICIuZGxsIiB0byBmaW5kIGl0ICh3YXMKCSAgc3RyaXBwZWQgcHJldmlvdXNseSkuCgktIGlkZW50aWZ5IG5hbWVkIGV4cG9ydHMgc28gdGhhdCB0aGUgb3JkaW5hbCBudW1iZXIgaXMgIkAiIGluIC5zcGVjCgkgIGZpbGUuCgktIHNldHVwIG91dHB1dCBkbGwgbmFtZSBwcmlvciB0byBjcmVhdGluZyBvcmRpbmFsIHN5bWJvbHMuCgktIGRvbid0IG92ZXJsYXkgdGhlIG5hbWVkIGV4cG9ydHMgd2l0aCB0aGUgb3JkaW5hbCBleHBvcnRzLgoJLSBjb3JyZWN0IHRlc3QgZm9yIGxhc3Qgc3ltYm9sLgoJLSBmaXggZ2VuZXJhdGVkIGluc3RhbGwgc2NyaXB0IHRvIG1hdGNoIGN1cnJlbnQgbWFrZSBmaWxlcy4KCjIwMDEtMTAtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21kaS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IHRoZSBjYXNlIHdoZXJlIGNoaWxkPTAgKGxhc3QgY2hpbGQpIGluIE1ESV9DaGlsZEFjdGl2YXRlLgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3VzZXIvbXNnMTYuYywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYzoKCVJlbmFtZWQgV0lOX0dldFduZFB0ciBpbnRvIFdJTl9HZXRQdHIgYW5kIGFkZGVkIGNvcnJlc3BvbmRpbmcKCVdJTl9SZWxlYXNlUHRyLiBTdGFydGVkIHVzaW5nIGl0IGluc3RlYWQgb2YgV0lOX0ZpbmRXbmRQdHIgd2hlcmUgd2UKCWRvbid0IG5lZWQgdG8gYWNjZXNzIHdpbmRvd3Mgb2Ygb3RoZXIgcHJvY2Vzc2VzLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBHVUlEcy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgX0lPWFhYIG1hY3JvcyBjb25mbGljdCB3aXRoIHN5c3RlbSBoZWFkZXJzIG9uIFNvbGFyaXMuIFByZWZpeAoJdGhlbS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJS2FpIE1vcmljaCA8bWFpbEBrYWktbW9yaWNoLmRlPgoJSW50ZXJuYWxFeHRyYWN0SWNvbjE2IGZvcmdvdCB0byBjbG9zZSBmaWxlIGhhbmRsZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvYXRvbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgSU5WQUxJRF9BVE9NIGFuZCBNQVhJTlRBVE9NIHRvIHdpbmJhc2UuaC4KCVJlcGxhY2UgTUlOX1NUUl9BVE9NIHdpdGggTUFYSU5UQVRPTS4KCjIwMDEtMTAtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGlhbG9nLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLAoJICBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW4zMi9kZXZpY2UuYywgY29udHJvbHMvbWVudS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kcml2ZS5jLAoJICBsaWJyYXJ5L3BvcnQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaGVuIGluY2x1ZGluZyAnd2luZS9wb3J0LmgnLCBpbmNsdWRlIGl0IGZpcnN0LgoJUmVtb3ZlIHJlZHVuZGFudCAnY29uZmlnLmgnIGluY2x1ZGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd21jL21jbC5jLAoJICB0b29scy93bWMvbWN5LnksIHRvb2xzL3dtYy93bWMuYywgd2luZG93cy93aW5wcm9jLmMsCgkgIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmMsIGRsbHMvdXNlci9leHRpY29uLmMsCgkgIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGdyYXBoaWNzL2Vudi5jLCBncmFwaGljcy9wYXRoLmMsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIG1lbW9yeS9oZWFwLmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxNi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLAoJICBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaGVuIGluY2x1ZGluZyBjb25maWcuaCwgaW5jbHVkZSBpdCBmaXJzdC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcnBjZGNlLmgsIGluY2x1ZGUvcnBjbmRyLmgsCgkgIGluY2x1ZGUvcnBjcHJveHkuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc29tZSBSUEMgZGVmaW5pdGlvbnMuCgoJKiBvYmplY3RzL2ZvbnQuYywgd2luZG93cy9kcml2ZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGxvYWRlci9tb2R1bGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBwcmludCBOVUxMIHN0cmluZ3MgKGNyYXNoZXMgb24gU29sYXJpcykuCglTbWFsbCBjb2RlIG1haW50YWluYWJpbGl0eSB0d2VhayBpbiBTaGVsbEV4ZWN1dGVFeEEuCglUd28gdHlwbyBmaXhlcyBpbiB3aW5tbS4KCgkqIGluY2x1ZGUvYW12aWRlby5oLCBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9zdHJtaWYuaCwKCSAgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsCgkgIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmgsIGRsbHMvcXVhcnR6L2F1ZGlvdXRsLmMsCgkgIGRsbHMvcXVhcnR6L2F1ZGlvdXRsLmgsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLAoJICBkbGxzL3F1YXJ0ei9hdmlwYXJzZS5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmMsCgkgIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmgsIGRsbHMvcXVhcnR6L2RldmVudW0uYywgZGxscy9xdWFydHovZGV2bW9uLmMsCgkgIGRsbHMvcXVhcnR6L2VudW11bmsuYywgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ2lkaXNwLmMsCgkgIGRsbHMvcXVhcnR6L2ZncGFzcy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcC5oLCBkbGxzL3F1YXJ0ei9mbWFwMi5jLAoJICBkbGxzL3F1YXJ0ei9mbWFwMi5oLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lnY29uZmlnLmMsCgkgIGRsbHMvcXVhcnR6L2lncnZlci5jLCBkbGxzL3F1YXJ0ei9pbWNudGwuYywgZGxscy9xdWFydHovaW1maWx0ZXIuYywKCSAgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovbXR5cGUuaCwKCSAgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovc2FtcGxlLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLAoJICBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIEFWSSBzcGxpdHRlci4KCUltcGxlbWVudGVkIEFzeW5jU291cmNlLgoJTWVyZ2VkIHNvbWUgQyBzb3VyY2VzLgoJRml4ZWQgc29tZSBidWdzLgoKCSogaW5jbHVkZS9tbXJlZy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIE1QRUcxV0FWRUZPUk1BVCBhbmQgTVBFR0xBWUVSM1dBVkVGT1JNQVQuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUGFzcyBzZWN1cml0eSBhdHRyaWJ1dGVzIGZvciBET1NGUyBjcmVhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBidWdzIHdpdGggcHJvcGdldCBtZXRob2RzIHdpdGggaW5wdXQgYXJndW1lbnRzLgoJSW1wcm92ZWQgdmFyaWFudCBkZWJ1ZyBkdW1wcy4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGJ1Z3MgaW4gc2FmZSBhcnJheXMuCgktIGVubGFyZ2luZyBhIHNhZmUgYXJyYXkgZGlkbid0IGNsZWFyIHRoZSBuZXcgZW50cmllcwoJLSBlbGVtZW50IGFjY2VzcyBvbmx5IHZhbGlkYXRlZCB0aGUgZmlyc3QgZGltZW5zaW9uCgktIHRoZSB2YWxpZGF0aW9uIGFsd2F5cyBmYWlsZWQgd2hlbiB0aGUgYXJyYXkgY29udGFpbmVkIDEgZWxlbWVudAoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBhIFVJTlQxNiByZWRlZmluaXRpb24gcHJvYmxlbS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVjb2duaXplIHRoZSBTb2xhcmlzIGRsb3BlbiBlcXVpdmFsZW50IG9mICJjYW5ub3Qgb3BlbiIuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBoYW5kbGluZyBvZiBlbXB0eSBsaXN0cyBpbiBpbnN0YWxsIGFuZCB1bmluc3RhbGwgdGFyZ2V0cy4KCUluc3RhbGwgdGhlIGV4ZWN1dGFibGVzIC5zbyBsaWJyYXJpZXMgaW4gJGJpbmRpciAobm90ICRsaWJkaXIhKS4KCjIwMDEtMTAtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3Mvd2luLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Byb3BlcnR5LmMsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCVN0b3JlIHdpbmRvdyBwcm9wZXJ0aWVzIGluIHRoZSBzZXJ2ZXIuIE1vdmVkIHByb3BlcnR5LmMgdG8gZGxscy91c2VyLgoKCSogbWVtb3J5L2F0b20uYywgc2VydmVyL2F0b20uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oOgoJQWRkZWQgYXRvbV90IHR5cGUgZm9yIGF0b21zIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdGhlIHNhbWUgdHlwZQoJZXZlcnl3aGVyZS4gSGFuZGxlIE1JTl9TVFJfQVRPTSBvZmZzZXQgaW4gdGhlIHNlcnZlci4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwKCSAgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBNQUtFSU5UQVRPTSB0byB3aW5iYXNlLmggYW5kIGFkZGVkIFVuaWNvZGUgdmVyc2lvbi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgYmFkIHBvaW50ZXIgYXJndW1lbnRzIHRvIExvYWRJbWFnZUEoKSAoYW5kIGZ1bmN0aW9ucwoJY2FsbGluZ0xvYWRJbWFnZUEpIHdpdGggYW4gZXhjZXB0aW9uIGhhbmRsZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCURvbWluaWsgU3RyYXNzZXIgPGRvbWluaWsuc3RyYXNzZXJAdC1vbmxpbmUuZGU+CglXb3JrYXJvdW5kIFgxMSBCYWRXaW5kb3cgZXJyb3IgaWYgbm8gcGFyZW50IHdpbmRvdyBpcyBmb3VuZC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBXaW5lIHRvb2xzIHNlYXJjaCBwYXRoLgoJQWRkIC91c3IvbG9jYWwvbGliIHRvIHRoZSBkZWZhdWx0IG50ZGxsIHNlYXJjaCBwYXRoLgoKMjAwMS0xMC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVJlbW92ZWQgdGhlIGNsZWFudXBfd2luZG93X3F1ZXVlIHJlcXVlc3QuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglSZW1vdmVkIG5leHQgYW5kIGNoaWxkIGZpZWxkcyBpbiB0aGUgd2luZG93IHN0cnVjdHVyZSBhbmQgdXNlCglXSU5fTGlzdENoaWxkcmVuIGluc3RlYWQuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIEdVSURzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgLnNwZWMuYyBydWxlLgoKMjAwMS0xMC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglTdG9yZSB3aW5kb3cgcGFyZW50IGFzIGFuIEhXTkQgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRG8gb3ZlcmxhcHBlZCByZWFkcyBpZiBhbmQgb25seSBpZiB0aGUgZmlsZSB3YXMgb3BlbmVkIHdpdGgKCUZJTEVfRkxBR19PVkVSTEFQUEVELgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvY2F0ZSB0aGUgYXJyYXkgYW5kIHN0cmluZ3MgaW4gb25lIGx1bXAgKGJ1ZyBmb3VuZCBieSBNYWx0ZQoJU3Rhcm9zdGlrKS4KCVNhbWUgdGhpbmcgZm9yIHRoZSBscENtZGxpbmU9IiIgY2FzZS4KCVRoZXJlIGlzIG5vIE5VTEwgcG9pbnRlciBhdCB0aGUgZW5kIG9mIHRoZSBhcmd2IGxpc3QuCgoJKiBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFRleHRDaGFyc2V0SW5mbyBzaG91bGQgcmV0dXJuIHRoZSBjaGFyc2V0IHRoYXQgdGhlIGRyaXZlciBpcwoJYWN0dWFsbHkgdXNpbmcsIHJhdGhlciB0aGFuIHRoYXQgc3BlY2lmaWVkIGluIHRoZSBMT0dGT05ULgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBYRnJlZTg2IFdpbmRvd3Mgc2VydmVyLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSB0aGUgUlRfWFhYIG1hY3JvcyB0byB3aW51c2VyLmguCgl3aW51c2VyLmg6IEFkZCBzdXBwb3J0IGZvciBOT0dESS4KCXdpbnVzZXIuaDogTW9kaWZ5IHRvIGFsbG93IGNvbXBpbGF0aW9uIHdpdGhvdXQgd2luZ2RpLmguCgoJKiBpbmNsdWRlL3NobG9iai5oLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglDaHJpcyBHcmVlbiA8Y2hyaXNfZV9ncmVlbkB5YWhvby5jb20+CglBZGRlZCBuYW1lcyBvZiB0aGUgIm1pc3NpbmciIHBhdGhzIGZvciBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQS4KCjIwMDEtMTAtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsYXNzLmM6IEZpeGVkIGxvY2tpbmcgb2YgY2xhc3MgbGlzdC4KCVByaW50IEVSUiB3aGVuIGFjY2Vzc2luZyBjbGFzc2VzIG9mIG90aGVyIHByb2Nlc3Nlcy4KCgkqIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCVN0b3JlIHdpbmRvdyBjbGFzcyBhdG9tIGluIHRoZSBzZXJ2ZXIuCglLZWVwIHVubGlua2VkIHdpbmRvd3Mgb24gYSBzZXBhcmF0ZSBsaXN0LgoJSW1wbGVtZW50ZWQgaW50ZXItcHJvY2VzcyBGaW5kV2luZG93KCkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgbm9uIHdpbmRvd3MgbWFjcm9zLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCVNpbGVuY2UgdGhlIHB0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wIEZJWE1FLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeCBNYXBWaWV3T2ZGaWxlIHRvIGFsd2F5cyByZXR1cm4gYSA2NEstYWxpZ25lZCBhZGRyZXNzLgoJQXZvaWQgY29udmVydGluZyBwb2ludGVycyB0byBVSU5ULgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYva2VybmVsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbnNvY2suYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaW1nMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc3RpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZSBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93czJzcGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbmV3IGluY2x1ZGUgZmlsZSB3czJzcGkuaCBmb3IgYWRkaW5nIG5lZWRlZCB0eXBlcy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJRml4ZWQgcGFyYW1ldGVycyBvZiBTZXR1cE9wZW5JbmZGaWxlQS4KCjIwMDEtMTAtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGNhbGwgb24gUkRXX1VQREFURU5PVyBvdXQgb2YgdGhlCglSRFdfUGFpbnQgcmVjdXJzaW9uLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzdXBwb3J0IGZvciBOT0NPTE9SLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbWlzYy92ZXJzaW9uLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgV0lOREVCVUdJTkZPIGZyb20gd2luYmFzZS5oIHRvIHdpbmJhc2UxNi5oIGFuZCByZW5hbWUgdG8KCVdJTkRFQlVHSU5GTzE2LgoJTW92ZSB0aGUgcmVsYXRlZCBtYWNyb3MgdG8gdmVyc2lvbi5jIGFuZCBpZmRlZiB0aGVtIG91dCAoa2VwdCBmb3IKCWRvY3VtZW50YXRpb24gb25seSwgdGhleSBhcmUgbm90IHVzZWQpLgoKCSogZGVidWdnZXIvaGFzaC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXSU5FTElCIGFwcGxpY2F0aW9ucyAobGlrZSByZWFrdGl2YXRlKSBtaWdodCBoYXZlIHZlcnkgbG9uZyAoQysrKQoJc3ltYm9scy4gVXNlIGEgbGFyZ2VyIGJ1ZmZlci4KCgkqIGZpbGVzL2RyaXZlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglHZXREaXNrRnJlZVNwYWNlRXggc2hvdWxkIGFjY2VwdCBhbiBpbnB1dCBsaWtlICJDOiIuCgoJKiBmaWxlcy9maWxlLmMsIHNlcnZlci9maWxlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gZml4ZWQgY29weSZwYXN0ZSBidWcgKEdFTkVSSUNfV1JJVEUgaW5zdGVhZCBvZiBHRU5FUklDX1JFQUQpCgktIHdoZW4gZ2V0dGluZyB0aGUgdHlwZSBvZiBhIGhhbmRsZSwgaXQgaGFzIHRvIGJlIGRvbmUgZXZlbiBpZiBubyBmZAoJICBpcyBhdHRhY2hlZCB0byBpdCAoY29uc29sZSBmb3IgZXhhbXBsZSkKCgkqIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmgsCgkgIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLCBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsCgkgIGRsbHMvcXVhcnR6L2lnY29uZmlnLmMsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2MuYywKCSAgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovbXR5cGUuaCwgZGxscy9xdWFydHovcGFyc2VyLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5oLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovc2FtcGxlLmMsCgkgIGRsbHMvcXVhcnR6L3NhbXBsZS5oLCBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovdmlkcmVuLmgsCgkgIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmMsIGluY2x1ZGUvYW12aWRlby5oLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVN0YXJ0ZWQgSW1wbGVtZW50aW5nIFZpZGVvIFJlbmRlcmVyLgoJU3RhcnRlZCBJbXBsZW1lbnRpbmcgV0FWRS9BVS9BSUZGIFBhcnNlci4KCVN0YXJ0ZWQgSW1wbGVtZW50aW5nIGZpbGUgc291cmNlLgoJRml4ZWQgc29tZSBidWdzLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglSZW5hbWVkIFVTRVJfSW5pdCBpbnRvIFVzZXJDbGllbnREbGxJbml0aWFsaXplLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglNYWtlIHNlcmlhbCBmZCBibG9ja2luZyBtb2RlIGRlcGVuZCBvbiBGSUxFX0ZMQUdfT1ZFUkxBUFBFRC4KCgkqIG9iamVjdHMvdGV4dC5jLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU21hbGwgdHlwbyBmaXhlcy91cGRhdGVzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvZXJyb3IuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSB0aGUgRVJSX1hYWCBtYWNyb3MgZnJvbSB3aW5iYXNlLmggdG8gZXJyb3IuYy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd3NpcHguaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBTT0NLQUREUl9JUFggZGVjbGFyYXRpb24uCglDZW50cmFsaXplIGFsbCBzb2NrYWRkcl94eHggY29udmVyc2lvbnMgaW4gd3Nfc29ja2FkZHJfd3MydSBhbmQKCXdzX3NvY2thZGRyX3Uyd3MuCglSZW1vdmUgdWdseSBjYXN0cyBpbiBUUkFDRXMuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGVmZXIgZWRpdCBzdHlsZSBjb3JyZWN0aW9uIHVudGlsIEVESVRTVEFURSBpcyBmdWxseSBpbml0aWFsaXplZC4KCgkqIGRsbHMvbXN2Y3J0L3RocmVhZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCV9iZWdpbnRocmVhZDogRG9uJ3Qgc3RvcmUgdGhlIHRyYW1wb2xpbmUgb24gdGhlIHN0YWNrLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSBDT0xPUlJFRiBmcm9tIHdpbmdkaS5oIHRvIHdpbmRlZi5oLgoJQWRkIGEgcHJvdG90eXBlIGZvciBHZGlGbHVzaC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV3JhcHBlcnMgbXVzdCBhbHdheXMgYmUgY29tcGlsZWQgaW4gU1RSSUNUIG1vZGUuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sOgoJUHJvdmlkZSBoZWxwIGV2ZW4gd2hlbiBpbiB0aGUgTk9QUk9DRVNTIHN0YXRlLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGluZmluaXRlIGxvb3AgcHJvYmxlbSBpbiB3aW5lY2xpcHNydiBzdGFydHVwLgoJTGF1bmNoU2VydmVyOiBEb24ndCBnaXZlIHVwIG9uIHRoZSBmaXJzdCBtZXNzYWdlLgoJQWRkZWQgR2V0U2VsZWN0aW9uRXZlbnQ6IExpbWl0IENQVSB1c2UgYW5kIGludHJvZHVjZSB0aW1lb3V0LgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGhhbmRsaW5nIG9mIHRoZSB0aW1lb3V0IGluIFdhaXRGb3JJbnB1dElkbGUuCglVc2UgV0FJVF9GQUlMRUQgcmF0aGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgbGl0ZXJhbC4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaDoKCU1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUNyZWF0ZVVSTE1vbmlrZXIgdGFrZXMgYSBMUENXU1RSLCBub3QgYSBMUFdTVFIuCgoyMDAxLTEwLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jOgoJUHJvY2VzcyBwZW5kaW5nIGV2ZW50cyBiZWZvcmUgc2VuZGluZyBXTV9QQUlOVCBvbiBSRFdfVVBEQVRFTk9XLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3NvY2suYzoKCUFkZGVkIGdldF9maWxlX2luZm8gc3VwcG9ydCB0byBuYW1lZCBwaXBlcyBhbmQgc29ja2V0cyB0byBhdm9pZAoJYnJlYWtpbmcgdGhlIGdldF9oYW5kbGVfZmQgcmVxdWVzdC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgaW5jbHVkZS93aW5iYXNlLmg6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUFkZGVkIGRlZmluZXMgZm9yIHJlc291cmNlIHR5cGVzIFJUX01FU1NBR0VUQUJMRSwgUlRfVkVSU0lPTi4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggc2lnbiBleHRlbnNpb24gcHJvYmxlbSBpbiBtYXBfd3BhcmFtX1d0b0EuCgoJKiBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5Lmg6CglNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglBZGRlZCBJUGVyc2lzdFByb3BlcnR5QmFnMiBhbmQgSVByb3BlcnR5QmFnMiBkZWZpbml0aW9ucywgYWRkZWQKCW1pc3NpbmcgIEJJTkRJTkZPIG1lbWJlci4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJVGhlIExSXyBkZWZpbmVzIGRvIG5vdCByZXNpZGUgaW4gd2luZG93cy5oIGFueW1vcmUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEFkZFJlZidzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgWEtfTW9kZV9zd2l0Y2ggdG8gdGhlIGxpc3Qgb2YgaWdub3JlZCBrZXlzeW1zLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRGFuaWVsIFNhYm8gPGRhbmllbHNhYm9AaG90bWFpbC5jb20+CglBICdmaScgd2FzIG5lZWRlZCBpbiB0aGUgbGFzdCBpZiBzdGF0ZW1lbnQuCgoyMDAxLTEwLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDExMDA0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTEwLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSWdub3JlIFJMRSBkYXRhIHRoYXQgZ29lcyBwYXN0IHRoZSBsaW5lIGVuZCAoZm91bmQgYnkgVXdlIEJvbm5lcykuCglHZW5lcmFsIGNsZWFudXAgb2YgdGhlIFJMRSByb3V0aW5lcy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KCVNraXAgcG9ydCBudW1iZXIgYmVmb3JlIGNhbGxpbmcgZ2V0aG9zdGJ5bmFtZS4KCUZpeCBub24tYWJzb2x1dGUgdXJscy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglUaGUgRElTUFBBUkFNUyBwYXJhbWV0ZXIgYXJyYXkgaXMgYSByZXZlcnNlLW9yZGVyIGFycmF5LgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jb25zb2xlLmMsCgkgIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5jLAoJICBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUZldGNoIGEgaGFuZGxlIHR5cGUgaW4gRklMRV9HZXRVbml4SGFuZGxlLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRG9uJ3QgaWdub3JlIGZpcnN0IGNoYW5jZSBkZWJ1ZyBleGNlcHRpb25zIHNpbmNlIGl0IG1heSBiZSBhCglicmVha3BvaW50IHRoYXQgd2Ugc2V0IG91cnNlbHZlcy4KCgkqIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQSBjb3VwbGUgb2YgbWlub3IgcG9pbnRzIGFib3V0IGNvbnZlcnRpbmcgV2luZG93cyBmb250cy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnQgY29lcmNpb24gdG8gVlRfVU5LTk9XTiBmcm9tIFZUX0RJU1BBVENILgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUlUeXBlSW5mbzo6SW52b2tlIHNob3VsZCBhbHNvIHNlYXJjaCBpbmhlcml0ZWQgaW50ZXJmYWNlcyBmb3IgdGhlCgltZXRob2QgdG8gaW52b2tlLgoJSVR5cGVJbmZvOjpHZXRJRHNPZk5hbWVzIG5lZWRzIHRvIGRvIGNhc2UtaW5zZW5zaXRpdmUgc3RyaW5nCgljb21wYXJlcy4KCjIwMDEtMTAtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglTa2lwIEJpdEJsdCBESUIgb3B0aW1pemF0aW9uIGlmIHNvdXJjZSBhbmQgZGVzdCBEQ3MgaGF2ZSBkaWZmZXJlbnQKCWRlcHRocy4KCgkqIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9kZWZ3bmQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCU1hcCBhIHdpbmRvdyBpZiBpdCBpcyBzaG93biBieSBhIGRpcmVjdCBzdHlsZSBjaGFuZ2UuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRG9uJ3QgaWdub3JlIERJU1BBVENIX01FVEhPRCBpbiBJVHlwZUluZm86Okludm9rZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IFNIQWRkVG9SZWNlbnREb2NzIGNvZGUgdG8gcHJvcGVybHkgaGFuZGxlIG5hdGl2ZSBDb21jdGwzMiBhbmQKCW1pc3NpbmcgcG9saWNpZXMgbG9jYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvb2tzIGxpa2UgdGhlIFNMVEdfSW1wbEluZm8gc3RydWN0IGlzbid0IGEgZml4ZWQgc2l6ZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNvcnJlY3RlZCBJTlZPS0VLSU5EIGVudW1lcmF0aW9uIHZhbHVlcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgbmV3bHkgYWxsb2NhdGVkIFRMUyBpbmRleGVzIGFyZSBjbGVhcmVkLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQmV0dGVyIGZha2UgaW1wbGVtZW50YXRpb24gb2YgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGUuCgoyMDAxLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jOgoJRnJlZSBjYWNoZSBEQ0VzIGlmIHRoZSBEQyBnZXRzIGRlbGV0ZWQuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEZpeGVkIHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQXZvaWQgaW5jbHVkaW5nIHdpbmJhc2UuaCBpbiBnZW5lcmF0ZWQgLnNwZWMuYyBmaWxlcy4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWxsb3cgdHdvIGNvbm5lY3Rpb25zIGJ5IG5vdCByZWxlYXNpbmcgdGhlIHdyYXBwZWQgbGlicmFyeSB0b28gZWFybHkuCglBbHNvIGhlYXZpbHkgcHJvdGVjdGVkIGFuZCBhZGRlZCBhZGRpdGlvbmFsIHRyYWNlIGluZm9ybWF0aW9uLgoJTWFrZSB0aGUgTG9hZCBmdW5jdGlvbnMgc3RhdGljIHRvIHJlZHVjZSB2aXNpYmxpdHkgKGVuaGFuY2UKCXNpbXBsaWNpdHkpLgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgaW5jbHVkZS9pbnB1dC5oOgoJTWVyZ2VkIG1vdXNlIGJ1dHRvbnMgc3RhdGVzIGludG8gdGhlIGtleSBzdGF0ZSBhcnJheS4KCUZpeGVkIGNvbmZ1c2lvbiBiZXR3ZWVuIHF1ZXVlIHN0YXRlIGFuZCBhc3luYyBzdGF0ZS4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlcy9kZWZpbml0aW9ucy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJSWx5YSBLb25zdGFudGlub3YgPHdpbmUtcGF0Y2hlc0BmdXR1cmUuc2hpbnkuY28uaWw+CglBZGRlZCBhIF9ORVRfV01fTkFNRShVVEY4X1NUUklORykgcHJvcGVydHkgdG8gZXZlcnkgd2luZG93LgoKCSogaW5jbHVkZS9zeXNtZXRyaWNzLmgsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBTWVNNRVRSSUNTX1NldC4KCUltcGxlbWVudGVkIFNQSV9TRVRTSE9XU09VTkRTIGFjdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBPYUJ1aWxkVmVyc2lvbigpIHJldHVybiB0aGUgaGlnaGVzdCB2ZXJzaW9uIHZhbHVlIHBvc3NpYmxlLgoJU29tZSBjbGVhbnVwcy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbiwgd2luMzIvZGV2aWNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAoJICBmaWxlcy9kcml2ZS5jLCBmaWxlcy9wcm9maWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsCgkgIG1lbW9yeS9lbnZpcm9uLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglZZXQgYW5vdGhlciBkb2N1bWVudGF0aW9uL21lc3NhZ2UgdGV4dCBwYXRjaC4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkaXRpb25zIHRvIGhvdyB0byB1c2UgRG9jYm9vayB1bmRlciBSZWRIYXQgKHRvIGhlbHAgYmVnaW5uZXJzIGxpa2UKCW1lKS4KCUFkZGVkIGNvbnRlbnQgdG8gdGhlIGJpbmRsbHMgc2VjdGlvbiBvZiBXaW5lbGliIChiYXNlZCBvbgoJZXhwZXJpZW5jZSkuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVtYWtlci5tYW46CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVVwZ3JhZGUgd2luZW1ha2VyIG1hbiBwYWdlIGZvciB0aGUgdHdvIG9wdGlvbnMgYWRkZWQgYXQgdmVyc2lvbgoJMC41LjguCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgV1NDKkluc3RhbGxQcm92aWRlciBzdHVicy4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbDoKCUdyYWNqYW4gUG9sYWsgPGdyYWNqYW5AYWNjaHNoLmNvbT4KCUFkZGVkIHNvbWUgTUZDIGRvY3VtZW50YXRpb24gKHdpdGggdGhlIGhlbHAgb2YgRnJhbmNvaXMgR291Z2V0KS4KCgkqIGZpbGVzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoZWNrIGZvciBOVUxMIHBhdGggYXJndW1lbnQgaW4gRGVsZXRlRmlsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9uZyBuYW1lbGVzcyBhcmdzIGluIFNMVEcgYXBwYXJlbnRseSBnZXQgZGVub3RlZCBieSAweGZmZmUuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudGVkIGR1bW15IHN0dWIgZm9yIFNIQ2hhbmdlTm90aWZ5VXBkYXRlRW50cnlMaXN0IGFuZAoJZnVuY3Rpb25hbCBDSURMRGF0YV9DcmVhdGVGcm9tSURBcnJheS4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggaW1wbGljaXQgdHlwZSBkZWNsYXJhdGlvbnMuIEFkZCByZXF1aXJlZCBjYXN0LgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYSBoYWNrIGZvciBrZXlib2FyZCBncm91cCBzd2l0Y2hpbmcuCglBbHdheXMgc2F2ZS9yZXN0b3JlIGNvcnJlY3Qga2V5Ym9hcmQgZ3JvdXAgaW5kZXguCglFeHBsaWNpdGx5IGlnbm9yZSB0aGUga2V5Ym9hcmQgZ3JvdXAgc3dpdGNoaW5nIGV2ZW50cy4KCjIwMDEtMTAtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5oLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLAoJICBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L2ZnZXZlbnQuYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywKCSAgZGxscy9xdWFydHovc2FtcGxlLmMsIGluY2x1ZGUvc3RybWlmLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBDTFNJRF9BdWRpb1JlbmRlci4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgRGlzcEdldFBhcmFtLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeC9kb2N1bWVudCBTSExXQVBJIG9yZGluYWxzIDIxNyBhbmQgMjE4LgoKCSogbWlzYy92ZXJzaW9uLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWVkIG9wdGltaXphdGlvbi4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdHViIGZvciBXU0FwU2V0UG9zdFJvdXRpbmUuCgoJKiBmaWxlcy9maWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFrZSBNb3ZlRmlsZUV4IGZhaWwgd2l0aCBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUiAoYmV0dGVyIHRoYW4KCWNyYXNoaW5nKSB3aGVuIHRoZSBzb3VyY2UgZmlsZSBvcGVyYW5kIGlzIE5VTEwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU2hvdWxkIGluaXRpYWxpemUgQ09NIGJlZm9yZSBjYWxsaW5nIGl0LgoKMjAwMS0wOS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6CglGaXhlZCBzaXplIGNoZWNrIGluIEhFQVBfRmluZEZyZWVCbG9jayB0byBtYWtlIHN1cmUgd2UgYWxzbyBmaW5kCglibG9ja3MgdGhhdCBoYXZlIHRoZSBleGFjdCBzaXplIG5lZWRlZC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+Cgl3aW5lbWFrZXIgZG9jdW1lbnRhdGlvbiBmaXguCgoJKiBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL250ZGRrLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2YgdHlwZWxpYnMgbG9hZGVkIHdpdGggYSB0cmFpbGluZyByZXNvdXJjZSBudW1iZXIuCglUaGUgbG9naWMgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgYW4gU0xURyB0eXBlbGliIGhhcyBhIGZ1bmN0aW9uIHBhcmFtCglhcyBhICdzaG9ydCcgb3IgJ2xvbmcnIHR5cGUgaGFzIGJlZW4gJ3JlZmluZWQnLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUHJldmVudCBjYWxsaW5nIG51bGwgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZWQgV19PSyB0byBNU1ZDUlRfV19PSy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsIGRvY3VtZW50YXRpb24vcHJpbnQuZHNsLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5laHEuZHNsOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZm9ybWF0dGluZyBmb3IgUERGIG91dHB1dC4KCjIwMDEtMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSBjb3VwbGUgb2YgdHlwb3MuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgSUNPTV9bQ11USElTX01VTFRJIG1hY3JvcyB0byBtYWtlIGl0IGVhc2llciB0byBpbXBsZW1lbnQgb2JqZWN0cwoJdGhhdCBleHBvc2UgbXVsdGlwbGUgaW50ZXJmYWNlcy4gQWRkZWQgcHJvdG90eXBlcyBmb3IgQ29HZXRQU0Nsc2lkIGFuZAoJSVVua25vd25fKl9Qcm94eS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzb21lIG5hbWVkIHBpcGUgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL29sZTIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgcHJvdG90eXBlIGZvciBHZXRIR2xvYmFsRnJvbVN0cmVhbS4KCgkqIGZpbGVzL2ZpbGUuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBIGZhaWx1cmUgdG8gb3BlbiBhIHBpcGUgc2hvdWxkIHJldHVybiBJTlZBTElEX0hBTkRMRV9WQUxVRS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9SRUFETUUsIGRsbHMvcXVhcnR6L2FtZXJyb3IuYywKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuYywgZGxscy9xdWFydHovYmFzZWZpbHQuaCwKCSAgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2Rldm1vbi5jLAoJICBkbGxzL3F1YXJ0ei9kZXZtb24uaCwgZGxscy9xdWFydHovZW51bXVuay5jLCBkbGxzL3F1YXJ0ei9mZ2Nsc2lkLmMsCgkgIGRsbHMvcXVhcnR6L2ZnZXZlbnQuYywgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwMi5jLAoJICBkbGxzL3F1YXJ0ei9pYmFzYXVkLmMsIGRsbHMvcXVhcnR6L2liYXN2aWQuYywKCSAgZGxscy9xdWFydHovaWRldmVudW0uYywgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pZm1hcC5jLAoJICBkbGxzL3F1YXJ0ei9pZm1hcDMuYywgZGxscy9xdWFydHovaWdjb25maWcuYywgZGxscy9xdWFydHovaW1lbS5jLAoJICBkbGxzL3F1YXJ0ei9pbWVzaW5rLmMsIGRsbHMvcXVhcnR6L2ltZXZlbnQuYywKCSAgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovaW1zZWVrLmMsIGRsbHMvcXVhcnR6L2lyY2xvY2suYywKCSAgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9pdmlkd2luLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbW9ucHJvcC5jLAoJICBkbGxzL3F1YXJ0ei9tb25wcm9wLmgsIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsCgkgIGRsbHMvcXVhcnR6L3B0aW1wbC5jLCBkbGxzL3F1YXJ0ei9wdGltcGwuaCwgZGxscy9xdWFydHovcHRtcG9zLmMsCgkgIGRsbHMvcXVhcnR6L3B0bXNlZWsuYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwKCSAgZGxscy9xdWFydHovc2FtcGxlLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmgsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJTWVyZ2VkIHNvbWUgQyBzb3VyY2VzLgoJRml4ZWQgc29tZSBidWdzLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgc29tZSBwYXNzLXRocm91Z2ggaW50ZXJmYWNlcy4KCjIwMDEtMDktMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdXNlci5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL3VzZXIvbXNnMTYuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUEgY291cGxlIG9mIG9wdGltaXphdGlvbnMgdG8gYXZvaWQgc29tZSBzZXJ2ZXIgY2FsbHMgaW4gV0lOX0ZpbmRXbmRQdHIKCWFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KCgkqIHNlcnZlci93aW5kb3cuYzoKCUF2b2lkIGxpc3QgY29ycnVwdGlvbiB3aGVuIGxpbmtpbmcgd2luZG93IHdpdGggSFdORF9CT1RUT00gKHRoYW5rcyB0bwoJR2VyYXJkIFBhdGVsKS4KCgkqIG9iamVjdHMvZm9udC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFRleHRFeHRlbnRFeFBvaW50VzogZHVtcCB0aGUgc3RyaW5nIGJlZm9yZSBtb2RpZnlpbmcgdGhlIHBvaW50ZXIuCgoJKiB0b29scy93aW5lbWFrZXI6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBtYWtpbmcgYSBidWlsZCBlbnZpcm9ubWVudCB3aXRob3V0IGVkaXRpbmcgdGhlIHNvdXJjZQoJYW5kIHNwZWMgZmlsZXMuCgoyMDAxLTA5LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgbWVzc2FnZSBsb29wIG9uIHRoZSBjbGllbnQgc2lkZSBvZiB0aGUgc2Nyb2xsIGNvbnRyb2wuCgktIE1vdmUgdGhlIG1vdXNlIGNhcHR1cmUgdG8gYWZ0ZXIgdGhlIFNldEZvY3VzIHNvIHRoYXQgaXQgc3RheXMKCSAgY2FwdHVyZWQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglEYXZpZCBIYW1tZXJ0b24gPGNyYXpuZXlAY3Jhem5leS5uZXQ+CglGaXhlZCB0eXBvcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBpbml0aWFsIHZlcnNpb24gb2YgU0hBZGRUb1JlY2VudERvY3MuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywKCSAgd2luZG93cy93aW4uYzoKCUFkZGVkIHByb3BlciBzdXBwb3J0IGZvciBzdG9yaW5nIHdpbmRvdyBwYXJlbnRzIGluIHRoZSBzZXJ2ZXIuCglBZGRlZCBhIGZldyByZXF1ZXN0cyB0byBxdWVyeSB0aGUgd2luZG93IGhpZXJhcmNoeS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJSWdub3JlIENvbmZpZ3VlTm90aWZ5IHNpemUgY2hhbmdlcyB3aGlsZSB0aGUgd2luZG93IGlzIGljb25pYy4KCgkqIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsIHRvb2xzL3dpbmVkdW1wL21haW4uYywKCSAgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBkdW1iIGZpeGVzLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRGVjbGFyZSBEZXZpY2VJb0NvbnRyb2wuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBTUElfR0VUU0hPV1NPVU5EUy4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglWYXJpYW50cyBhbmQgc2FmZSBhcnJheXMgaXMgbm93IGFibGUgdG8gY29weSBCU1RSIHN3aXRoIGVtYmVkZGVkIG51bGwKCWNoYXJhY3RlcnMuIFNhZmUgYXJyYXlzIG5vdyBoYW5kbGUgQlNUUnMgYW5kIHZhcmlhbnRzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVnaXN0ZXIgdHlwZWxpYiBtYXJzaGFsaW5nIGZvciBPTEUgQXV0b21hdGlvbi1jb21wYXRpYmxlIGludGVyZmFjZXMuCgoyMDAxLTA5LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIF9leGNlcHRfaGFuZGxlcjMuCgoJKiBkbGxzL2dkaS9nZGkuc3BlYywgb2JqZWN0cy9nZGlvYmouYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dWIgZm9yIEdkaUluaXQyKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglHZXQgbW9yZSBlbnRyeSBwb2ludHMgZnJvbSBDb21jdGwzMiBhbmQgc2F2ZSB0aGUgYWRkcmVzc2VzLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRGVmaW5lIHRoZSBTSFF1ZXJ5VmFsdWVFeHtBfFd9IGVudHJ5IHBvaW50cy4KCgkqIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBiZWhhdmlvciBmb3Igd3NwcmludGZBIGlzIGRpZmZlcmVudCB0aGF0IGZvciB3c3ByaW50ZjE2IGluIGhvdyBpdAoJaGFuZGxlcyBOVUxMcyBiZWluZyBwYXNzZWQgYXMgY2hhcmFjdGVyIHBhcmFtZXRlcnMuCgoJKiBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgY29udmVyc2lvbnMgb2YgYSBjb21tYW5kIGxpbmUgdG8vZnJvbSBhbiBhcmd2IGFycmF5LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IG1vc3Qgb2YgdGhlIE1SVSByZWxhdGVkIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL2V4YW1pbmUtcmVsYXk6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSArc25vb3Agc3R5bGUgb3V0cHV0LgoKCSogb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggbWFwcGluZyBvZiBERUZBVUxUX0NIQVJTRVQuCgoyMDAxLTA5LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJQnJhZCBDYW1wYmVsbCA8YnJhZEBzZW1lLmNvbS5hdT4KCUZpeGVkIG1vdXNlIHBvc2l0aW9uIHByb2Nlc3NpbmcgZm9yIHVzZSB3aXRoIGEgdG91Y2hzY3JlZW4uCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovcHRpbXBsLmMsIGRsbHMvcXVhcnR6L3B0aW1wbC5oLAoJICBkbGxzL3F1YXJ0ei9wdG1wb3MuYywgZGxscy9xdWFydHovcHRtc2Vlay5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIElTZWVraW5nUGFzc1RocnUuCgoJKiB0b29scy93aW5lY2hlY2ssIERFVkVMT1BFUlMtSElOVFMsIFJFQURNRSwKCSAgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZmlsZXMvZG9zX2ZzLmMsIGxpYnRlc3Qvdm9saW5mby5jLAoJICBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglVcGRhdGVzIGFuZCBlcnJvciBtZXNzYWdlIGltcHJvdmVtZW50cy4KCgkqIHdpbmRvd3MvbWRpLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJQ2hhbmdlZCBNRElDcmVhdGVDaGlsZCB0byBzdXBwb3J0IENXX1VTRURFRkFVTFQgZm9yIDE2LWJpdCBNREkKCXdpbmRvd3MuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBXSU5fU2V0V2luZG93TG9uZyBjYXVzZWQgYnkgcHJldmlvdXMKCWNoYW5nZS4KCgkqIGRsbHMvaW1tMzIvaW1la2wuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubmxzLmgsCgkgIG9sZS9vbGUybmxzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgZGVmaW5pdGlvbiBvZiBzdHJ1Y3RzIE5VTUJFUkZNVCogYW5kIENVUlJFTkNZRk1UKi4KCUFkZCwgZml4IGFuZCBtb3ZlIHByb3RvdHlwZXMgZnJvbSB3aW5iYXNlLmggdG8gd2lubmxzLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwcm9ibGVtIGNvbXBhcmluZyBwaWRscyBhbmQgcmV0dXJuIGNvcnJlY3QgY29kZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIHJ1c3NpYW4gbGF5b3V0IHdpdGggcGhhbnRvbSBrZXkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zcHkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIG1hY3JvcyB0aGF0IHNob3VsZCBub3QgYmUgdGhlcmUgKGNhdXNlIGNvbmZsaWN0cyBpbiBXaW5lTGliKS4KCUFkZCBjb3JyZXNwb25kaW5nIGNvbW1lbnRzIGluIHNweS5jLgoKCSogaW5jbHVkZS90Y2hhci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24gb2YgX3RtYWluLgoJQWRkIGRlZmluaXRpb25zIGZvciBfX3Rhcmd2IGFuZCBfdGVudmlyb24uCgoJKiBjb250cm9scy9zY3JvbGwuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY29udHJvbHMuaCwKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci90aHVuay5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLAoJICBkbGxzL3VzZXIvd25kMTYuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2lucHJvYy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jYXJldC5jLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zY3JvbGwuYywKCSAgd2luZG93cy9zcHkuYywgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywKCSAgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLAoJICBjb250cm9scy9tZW51LmM6CglNYWRlIGFsbCAxNjwtPjMyIEhXTkQgY29udmVyc2lvbnMgdXNlIGV4cGxpY2l0IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mCglpbXBsaWNpdCB0eXBlIGNhc3RzLgoJTW92ZWQgYSBsb3Qgb2YgMTYtYml0IGZ1bmN0aW9ucyB0byB0aGUgbmV3IHduZDE2LmMgZmlsZS4KCUNoYW5nZWQgRElBTE9HSU5GTyBzdHJ1Y3R1cmUgaGFuZGxpbmcgdG8gc3VwcG9ydCAzMi1iaXQgaGFuZGxlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUZpeGVkIGEgY291cGxlIG9mIEhXTkQgdHlwZSBtaXNtYXRjaGVzLgoKCSogaW5jbHVkZS9mb250LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgZm9udCBjaGFyc2V0IHRvIG9idGFpbiBhIGNvZGVwYWdlIGZvciBBLT5XIGNvbnZlcnNpb24gaW4gdGhlCgl0ZXh0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglSZW5hbWUgIlN5c3RlbVRpbWUiIHRvICJ0IiAodGhpcyBpcyAqbm90KiBTWVNURU1USU1FIC0gYXZvaWQKCWNvbmZ1c2lvbikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AcmVkaGF0LmRlPgoJRml4ZXMgZm9yIGF1dG9jb25mIDIuNTIgb3IgaGlnaGVyLgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9tc3ZjcnQvbG9jYWxlLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtc3ZjcnQvbG9jYWxlLmguCglBZGQgbWlzc2luZyBpbmNsdWRlIGRpcmVjdGl2ZXMgaW4gbXN2Y3J0L3djaGFyLmguCglGaXggcHJvdG90eXBlIG9mIF93c3RhdGk2NCBpbiBtc3ZjcnQvc3lzL3N0YXQuaC4KCjIwMDEtMDktMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kcml2ZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgcmVsYXRpdmUgcGF0aHMgb2YgW0RyaXZlXSBzZWN0aW9ucyByZWxhdGl2ZSB0byBXSU5FUFJFRklYLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUxvdHMgb2YgcnBjcnQ0LmRsbCBzdHVicy4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywKCSAgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGRlbWFuZ2xpbmcgaW52b2NhdGlvbi4KCUJlIGEgYml0IG1vcmUgdmVyYm9zZSBvbiBpbXBsZW1lbnRlZCBmZWF0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSWdub3JlIG5lZ2F0aXZlIHdpZHRocyBpbiBIRUFERVJfU2V0SXRlbUJvdW5kcy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvc21ldGljIGNoYW5nZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglJbXByb3ZlZCBtYWtlX2RsbHMgc2NyaXB0LiBNb3ZlZCBkbGwgbGlzdCBvdXQgb2YKCU1ha2UucnVsZXMuaW4uIFJlbW92ZWQgYSBmZXcgbm8gbG9uZ2VyIHVzZWQgcnVsZXMuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovY29tcGxpc3QuYywKCSAgZGxscy9xdWFydHovZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9lbnVtdW5rLmMsIGRsbHMvcXVhcnR6L2ZnY2xzaWQuYywKCSAgZGxscy9xdWFydHovZmdpZGlzcC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZm1hcC5jLAoJICBkbGxzL3F1YXJ0ei9mbWFwMi5jLCBkbGxzL3F1YXJ0ei9pYmFzYXVkLmMsIGRsbHMvcXVhcnR6L2liYXN2aWQuYywKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pZm1hcC5jLCBkbGxzL3F1YXJ0ei9pZm1hcDMuYywKCSAgZGxscy9xdWFydHovaWdydmVyLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWVtLmMsCgkgIGRsbHMvcXVhcnR6L2ltZXNpbmsuYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywKCSAgZGxscy9xdWFydHovaXJjbG9jay5jLCBkbGxzL3F1YXJ0ei9pdmlkd2luLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbWVtYWxsb2MuaCwKCSAgZGxscy9xdWFydHovc2FtcGxlLmMsIGRsbHMvcXVhcnR6L3NhbXBsZS5oLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rzb3VuZC5oLAoJICBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2tzcHJvcGVydHkuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBJTWVtQWxsb2NhdG9yLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb24sCgkgIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUZpeGVkIHJlZmVyZW5jZXMgdG8gb2xkIGRvY3VtZW50YXRpb24gbG9jYXRpb24uCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIF9tYnN1cHIuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUJvYmJ5IEJpbmdoYW0gPHVobW1tbUBhbWVyaXRlY2gubmV0PgoJV2hlbiB5b3UgaG9sZCB0aGUgbGVmdCBtb3VzZSBidXR0b24gaW5zaWRlIHRoZSBzY3JvbGxiYXIsIHRoZW4gbW92ZQoJdGhlIG1vdXNlIG9mZiBzbyBpdCBzdG9wcyBzY3JvbGxpbmcsIGFuZCByZXR1cm4gdGhlIG1vdXNlLCBpdCBzaG91bGQKCWNvbnRpbnVlIHNjcm9sbGluZy4KCjIwMDEtMDktMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9zdGkvLmN2c2lnbm9yZSwgZGxscy9zdGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RpL3N0aS5zcGVjLCBkbGxzL3N0aS9zdGlfbWFpbi5jLCBkbGxzL3VybC8uY3ZzaWdub3JlLAoJICBkbGxzL3VybC9NYWtlZmlsZS5pbiwgZGxscy91cmwvdXJsLnNwZWMsIGRsbHMvdXJsL3VybF9tYWluLmMsCgkgIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL21hcGkzMi8uY3ZzaWdub3JlLCBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsCgkgIGRsbHMvbXNpbWczMi8uY3ZzaWdub3JlLCBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgbWFwaTMyLCBtc2ltZzMyLCBzdGkgYW5kIHVybC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGaXhlZCBIV05EIGNvbXBhcmUgaW4gTkNfSGFuZGxlU2V0Q3Vyc29yLgoKCSogZ3JhcGhpY3MvcGF0aC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgY2FsbGluZyBSZXN0b3JlREMgd2l0aCBnZGkgbG9jay4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hyZW5kZXIuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeHJlbmRlci5oLAoJICB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNvbmZpZyBjaGVjayBhbmQgdGhyZWFkIHNhZmUgd3JhcHBlcnMgZm9yIHRoZSBYUmVuZGVyIGxpYnJhcnkuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgaG9sZCB0aGUgR0RJIGxvY2sgd2hpbGUgMTYtYml0IEV4dERldmljZU1vZGUgaXMgY2FsbGVkLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtaXNzaW5nIENBTExCQUNLIG1vZGlmaWVyLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggcmVjdiBwcm90b3R5cGUgZm9yIFdTQVJlY3ZFeC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgZXJyb3IgcmV0dXJuZWQgYnkgR2V0TG9uZ1BhdGhOYW1lQS4KCgkqIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9taXNjLmMsCgkgIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3MvY2FyZXQuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBjb250cm9scy9jb21iby5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJTWFrZSBzdXJlIHRoYXQgSFdORCBjb21wYXJpc29ucyBhcmUgYWx3YXlzIGRvbmUgd2l0aCBmdWxsIDMyLWJpdAoJaGFuZGxlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5zb2NrLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgV1NBU3RhcnR1cCBwcm90b3R5cGUuCglGaXggaGFuZGxpbmcgb2YgdGltZW91dCBwYXJhbWV0ZXIgaW4gc2VsZWN0LgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzoKCUZpeGVkIGR1bXBpbmcgb2YgZGxsIGV4cG9ydCB0YWJsZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiB0aGUgRk9VUkNDIGNvZGVzIHNldCBieSB0aGUgSEFMIGRyaXZlci4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbGVhc2UgZ2RpIGxvY2sgYmVmb3JlIGNhbGxpbmcgRGVsZXRlREMuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVBsYWNlIHRoZSBsb2cgaW4gJFRNUCBpZiBzZXQgYW5kIC90bXAgb3RoZXJ3aXNlLgoKCSogaW5jbHVkZS93aW5jb24uaCwgd2luMzIvY29uc29sZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIQU5ETEVSX1JPVVRJTkUgaXMgaW4gZmFjdCBQSEFORExFUl9ST1VUSU5FLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGVjayBmb3IgaHRvdGFsPXZ0b3RhbD0wIChmb3IgeGZyZWUgNCB2ZXNhIGRyaXZlcikuCgoyMDAxLTA5LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywKCSAgZGxscy93aW5lcHMvZm9udC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9mb250LmgsCgkgIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTGF5IGRvd24gdGhlIGluZnJhc3RydWN0dXJlIGZvciBnZGkgZm9udCByZW5kZXJpbmcuCglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldEd5bHBoT3V0bGluZSBhbmQgR2V0T3V0bGluZVRleHRNZXRyaWNzCglmb3IgZ2RpIGZvbnRzLgoKCSogd2luZG93cy93aW5wb3MuYywgZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvd2luLmM6CglNYWtlIHN1cmUgdGhhdCBmdW5jdGlvbnMgcmV0dXJuaW5nIGFuIEhXTkQgYWx3YXlzIHJldHVybiBhIGZ1bGwgMzItYml0CgloYW5kbGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJQ3JlYXRlZCBzdHVicyBmb3IgYWxsIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb25zLgoKCSogc2VydmVyL3F1ZXVlLmMsIHNlcnZlci91c2VyLmMsIHNlcnZlci91c2VyLmg6CglDb252ZXJ0IHVzZXIgaGFuZGxlcyByZWNlaXZlZCBmcm9tIGNsaWVudCB0byBmdWxsIGhhbmRsZXMuCgoyMDAxLTA5LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9wcm9jZXNzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIG5vdCB1c2VkIGluY2x1ZGUvcHJvY2Vzcy5oLgoKCSogb2JqZWN0cy9jbGlwcGluZy5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBtc2Rvcy9pbnQxMC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jLAoJICBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvcXVhcnR6L2FtZXJyb3IuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDbGVhbnVwIGNvZGUgdGhhdCBpcyBzdHJhbmdlIG9yIGRpZmZpY3VsdCB0byBwYXJzZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgc2VwYXJhdGUgc29tZSBzeXN0ZW0gc3BlY2lmaWMgY29kZS4KCgkqIGluY2x1ZGUvZHNob3cuaCwgaW5jbHVkZS9zdHJtaWYuaCwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6L2FtdW5kb2MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9pZm1hcC5jLCBkbGxzL3F1YXJ0ei9pZm1hcDMuYywgZGxscy9xdWFydHovaW1jbnRsLmMsCgkgIGRsbHMvcXVhcnR6L2ltZW0uYywgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovaXJjbG9jay5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L2l1bmsuaCwgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5oLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5oLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBicm9rZW4gbWFjcm9zLgoJQWRkZWQgc29tZSBzdHVicy4KCUltcGxlbWV0ZWQgdW5kb2N1bWVudGVkIEFQSXMuCglJbXBsZW1lbnRlZCBtYW55IG1ldGhvZHMgaW4gSU1lZGlhRmlsdGVyLCBJTWVkaWFDb250cm9sIGFuZAoJSVJlZmVyZW5jZUNsb2NrLgoJU3RhcnRlZCBJbXBsZW1lbnRpbmcgSU1lbW9yeUFsbG9jYXRvci4KCgkqIHdpbjMyL25ld2Zucy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVF1aWV0IEZsdXNoSW5zdHJ1Y3Rpb25DYWNoZSBmb3Igbm9uLU5UIHN5c3RlbXMgd2hlcmUgaXQgZG9lcyBub3RoaW5nCglwZXIgTVNETi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU3luY2hyb25pemUgYWNjZXNzIHRvIHRoZSBzX0NPTUxvY2tDb3VudCwgZmlyc3RSZWdpc3RlcmVkQ2xhc3MsCglvcGVuRGxsTGlzdCBpbiBjb21wb2JqLgoKMjAwMS0wOS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJSWdub3JlIHNpemUgY2hhbmdlIG9uIENvbmZpZ3VyZU5vdGlmeSBpZiB3aW5kb3cgcmVjdCBpcyBlbXB0eSBhbmQgbmV3CglzaXplIGlzIDF4MS4KCgkqIHdpbmRvd3Mvd2luLmM6CglNYWtlIHN1cmUgdGhhdCByZXR1cm5lZCB3aW5kb3cgYmVsb25ncyB0byBjb3JyZWN0IHRocmVhZCB3aGVuIGNoZWNraW5nCglzaWJsaW5ncyBvZiB0cmFuc3BhcmVudCB3aW5kb3dzIGluIFdJTl9GaW5kV2luVG9SZXBhaW50LgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVGhlIFt3aW5kb3dzXSBzZWN0aW9uIGlzIGluIHdpbi5pbmkgbm90IGluIH4vLndpbmUvY29uZmlnLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfc3RhdGVtZW50cy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9tb2R1bGVfdXNlci5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbnNvY2suYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRnJlZUJTRCBub3cgc3VwcG9ydGVkLgoJLSBNdWNoIG1vcmUgd29yayBvbiB0aGUgbmV3IEMgcGFyc2VyLgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHkgUnlzaW4gPGFyeXNpbkB5YWhvby5jb20+CglBZGRlZCBVa3JhaW5pYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJQmFzaWMgaW1wbGVtZW50YXRpb24gb2YgSVN0cmVhbTpDbG9uZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCU1vcmUgZ3JhY2VmdWwgZXhpdCBvbiBmYWlsdXJlLgoKCSogbGlidGVzdC92YXJ0ZXN0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglVc2UgVl8qIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggdHlwby4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgc29tZSB1c2VmdWwgVFlQRUFUVFIgZWxlbWVudHMgZnJvbSB2MSB0eXBlbGlicy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGRlYnVnIG91dHB1dCBmb3IgSW50ZXJuZXRHZXRDb29raWUsIGFkZGVkIHN0dWIgZm9yIEludGVybmV0U2V0Q29va2llLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5oLCBpbmNsdWRlL2RkcmF3aS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBkd0ZsYWdzIHRvIGxvY2tfdXBkYXRlIHByaXZhdGUgZnVuY3Rpb25zIHNvIHdlIGNhbiBwYXNzCglXUklURU9OTFkvUkVBRE9OTFkuCglBZGRlZCB0aG9zZSBmbGFncyB0byB0aGUgaW50ZXJuYWwgTG9jaygpIGNhbGxzLgoJT25seSBjb3B5IHRoZSBzdXJmYWNlIGZyb20gc2NyZWVuIHRvIHN1cmZhY2UgaWYgbm90IHdyaXRlb25seS4KCVJlc3RyaWN0IGJsaXR0aW5nIGJldHdlZW4gZGlzcGxheSB3aW5kb3cgYW5kIHN1cmZhY2UgdG8gdGhlCglsb2NrZWQvdW5sb2NrZWQgcmVjdGFuZ2xlIGFuZCB0aGUgY2xpcHdpbmRvdyBzZWN0aW9uLgoJQWRkZWQgZGVmaW5lcyBmb3IgRERIQUxfVU5MT0NLREFUQS9EREhBTF9MT0NLREFUQSwgYWRkZWQgY2FsbHMgdG8gSEFMCglpbXBsZW1lbnRhdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVGhlIG1lc3NhZ2UgaGFuZGxlciBvZiBXTV9TVFlMRUNIQU5HSU5HIGlzIHN1cHBvc2VkIHRvIGJlIGFibGUgdG8KCW1vZGlmeSB0aGUgcHJvcG9zZWQgc3R5bGUgaWYgaXQgd2lzaGVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXNlIHRoZSBtaW4vbWF4IGluIHdpbmRlZi5oIGluc3RlYWQuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGluY2x1ZGUvd2lubmxzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0B3aW5lLmxzdC5kZT4KCUVuaGFuY2VkIEdldENhbGVuZGFySW5mbyBzdHViLCBhZGRlZCBrbm93biBDQUxfKiBkZWZpbmVzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kc291bmQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IGJ1ZmZlcmluZyBwcm9ibGVtcyBpbiBIRUwgbW9kZS4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRC4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV3cml0ZSBtc3ZjcnRfe2FyZ3Z0b3MsdmFsaXN0dG9zfSB0byBiZSBtb3JlIGVmZmljaWVudC4KCVdhcm4gYWJvdXQgdGhlICcgJyBhbmQgJyInIGhhbmRsaW5nIG9mIHRoZSBleGVjIGFuZCBzcGF3biBmdW5jdGlvbnMuCglDb3B5IHRoZSBjb21tYW5kIGxpbmUgaW4gTVNWQ1JUX3N5c3RlbSB0byBtYWtlIGl0IHdyaXRhYmxlLgoKCSogdHN4MTEvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTGluayB0c3gxMSB3aXRoIHRoZSBYL0dMIGxpYnJhcmllcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgWFZpZE1vZGUgc3VwcG9ydC4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUVyaWMgTGFtbWVydHMgPGVyaWNAbGFtbWVydHMub3JnPgoJUHJlc2VydmUgd2luZSByZXR1cm4gc3RhdHVzLgoKMjAwMS0wOS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dtYy93cml0ZS5jOgoJSnVzdGluIFNhbnRhIEJhcmJhcmEgPGp1c3RpbnNiQGhvdG1haWwuY29tPgoJRml4ZWQgcHJvYmxlbSB3aXRoIGNoZWNrIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMuCgoJKiBkbGxzL250ZGxsL3N0cmluZy5jOgoJSm9oYW5uIE1lc3NuZXIgPGpvaGFubi5tZXNzbmVyQHppZC51bmktbGluei5hYy5hdD4KCUZpeGVkIGJ1ZyBpbiBfdWx0b2EuCgoJKiBkbGxzL21zdmNydC9kYXRhLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluaXRpYWxpemUgYXJnYy9hcmd2L3dhcmd2IGJ5IGNhbGxpbmcgbnRkbGwuX193aW5lX2dldF97d31tYWluX2FyZ3MuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDaGFuZ2luZyBESUIgY29sb3IgdGFibGUgbm93IHVwZGF0ZXMgdGhlIERJQiB2aXNpYmxlIHN0YXRlLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmMsCgkgIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmgsIGRsbHMvcXVhcnR6L2RldmVudW0uYywKCSAgZGxscy9xdWFydHovZGV2ZW51bS5oLCBkbGxzL3F1YXJ0ei9kZXZtb24uYywgZGxscy9xdWFydHovZGV2bW9uLmgsCgkgIGRsbHMvcXVhcnR6L2VudW11bmsuYywgZGxscy9xdWFydHovZW51bXVuay5oLCBkbGxzL3F1YXJ0ei9mZ2Nsc2lkLmMsCgkgIGRsbHMvcXVhcnR6L2ZnaWRpc3AuYywgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwgZGxscy9xdWFydHovZm1hcDIuYywKCSAgZGxscy9xdWFydHovZm1hcDIuaCwgZGxscy9xdWFydHovaWJhc2F1ZC5jLCBkbGxzL3F1YXJ0ei9pYmFzdmlkLmMsCgkgIGRsbHMvcXVhcnR6L2lkZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWZtYXAuYywKCSAgZGxscy9xdWFydHovaWZtYXAzLmMsIGRsbHMvcXVhcnR6L2lncnZlci5jLCBkbGxzL3F1YXJ0ei9pbWNudGwuYywKCSAgZGxscy9xdWFydHovaW1lbS5jLCBkbGxzL3F1YXJ0ei9pbWVzaW5rLmMsIGRsbHMvcXVhcnR6L2ltZXZlbnQuYywKCSAgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsCgkgIGRsbHMvcXVhcnR6L2lyY2xvY2suYywgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9pdmlkd2luLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbWVtYWxsb2MuaCwKCSAgZGxscy9xdWFydHovbW9ucHJvcC5jLCBkbGxzL3F1YXJ0ei9tb25wcm9wLmgsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywgZGxscy9xdWFydHovcmVnc3ZyLmgsCgkgIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmMsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIHNvbWUgaW50ZXJmYWNlcyBpbiBGaWx0ZXJHcmFwaC4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglFbXVsYXRlIHRoZSBiZWhhdmlvdXIgb2YgTGludXggbW1hcCgpIG9uIFNvbGFyaXMuIEJhc2VkIG9uIGlkZWFzIGFuZAoJc2FtcGxlIGNvZGUgZHVlIHRvIEVyaWsgQm9hc3NvbiA8ZWJvYXNzb25Ac2lnbmFhbC5ubD4gYW5kIEpvaG4gV2VobGUKCTxqb2huQGZlaXRoLmNvbT4uCgoJKiB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3dpbnByb2MuYywgY29udHJvbHMvY29tYm8uYywKCSAgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3NweS5oLAoJICB3aW5kb3dzL21lc3NhZ2UuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglFbmhhbmNlIFNQWV9HZXRNc2dOYW1lIHRvIHRyYW5zbGF0ZSBjb21tb24gY29udHJvbCBtZXNzYWdlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aFcgdG8gc3BlYyBmaWxlLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJLSBGaW5pc2ggUGF0aFBhcnNlSWNvbkxvY2F0aW9ue0F8V30uCgktIEltcGxlbWVudCBQYXRoSXNVTkNTZXJ2ZXJ7QXxXfFNoYXJlQXxTaGFyZVd9LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR3V5IEwuIEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBzdHVicyBmb3IgU0hSZWdFbnVtVVNLZXl7QXxXfSBhbmQgcmV0dXJuIGVuZC1vZi1saXN0IGVycm9yCglhcyByZXN1bHQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgYSBkZWZhdWx0IERldk1vZGUgaWYgbm8gRGV2TW9kZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4KCXJlZ2lzdHJ5LgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgbWJzbmJjbnQsIGFkZGVkIHN0dWJzIGZvciBfR2V0dG5hbWVzIGFuZCBfX2xjX2NvbGxhdGVfY3AuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBIYW5kbGUgQ0NTX05PRElWSURFUiBib3RoIHdoZW4gcHJlc2VudCBhbmQgd2hlbiBub3QuCgktIEhhbmRsZSBzb21lIGNhc2VzIG9mIENDU19UT1AsIENDU19CT1RUT00sIGFuZCBDQ1NfTk9QQVJFTlRBTElHTi4KCS0gSGFuZGxlIHZhbHVlcyByZXR1cm5lZCBmcm9tIHRoZSBSQk5fQ0hJTERTSVpFIG5vdGlmaWNhdGlvbi4KCS0gSW1wbGVtZW50IFJCQlNfQ0hJTERFREdFLgoJLSBGaXggc29tZSBsb2dpYyBlcnJvcnMgaW4gUkVCQVJfQWRqdXN0QmFuZHMsIGFuZCBwcm9ibGVtcyB3aXRoIENDU19WRVJULgoKCSogY29uZmlndXJlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvLmN2c2lnbm9yZSwKCSAgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL1JFQURNRSwKCSAgdG9vbHMvd2luZWR1bXAvY3ZpbmNsdWRlLmgsIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsCgkgIHRvb2xzL3dpbmVkdW1wL2Z1bmN0aW9uX2dyZXAucGwsIHRvb2xzL3dpbmVkdW1wL21haW4uYywKCSAgdG9vbHMvd2luZWR1bXAvbWlzYy5jLCB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLAoJICB0b29scy93aW5lZHVtcC9vdXRwdXQuYywgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd2luZWR1bXAvcGUuaCwKCSAgdG9vbHMvd2luZWR1bXAvc2VhcmNoLmMsIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFBFIGR1bXAgY2FwYWJpbGl0aWVzIHRvIHNwZWNtYWtlciBhbmQgcmVuYW1lZCBzcGVjbWFrZXIgaW50bwoJd2luZWR1bXAuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeCBwb3NpdGlvbmluZyBvZiB0ZXh0IGluIGJ1dHRvbnMuCgktIEZpeCBuQnV0dG9uSGVpZ2h0IHNvIHRoYXQgaXQgaXMgbm90IHplcm8gaW4gc29tZSBjYXNlcwoJLSBTdXBwb3J0IFRCU1RZTEVfVFJBTlNQQVJFTlQuCgktIEZpeCBoYW5kbGluZyBpbiBXTV9FUkFTRUJLR05EIHNvIHRoYXQgdGhlIGRlZmF1bHQgZXJhc2Ugb2NjdXJzCgkgIGJldHdlZW4gbm90aWZpZXMuCgktIEZpeCBXTV9OQ0NSRUFURSBwcm9jZXNzaW5nIHRvIGlzc3VlIHByb3BlciBXTV9TVFlMRUNIQU5HSU5HICh2aWEKCSAgU2V0V2luZG93TG9uZykgYW5kIGRvY3VtZW50IHRoZSBpc3N1ZXMuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJRml4ZWQgYmVoYXZpb3Igb2YgR2V0VGV4dEV4dGVudEV4UG9pbnRXLiAgSXQgbXVzdCBhbHdheXMgcmV0dXJuIHRoZQoJZXh0ZW50cyBvZiB0aGUgZW50aXJlIHN0cmluZyBpbiBzaXplLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IGJvbWIgd2hlbiBHRElfT2JqUHRyIHJldHVybnMgbnVsbCBvYmplY3QuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlIEdESV9FUlJPUiBkZWZpbml0aW9uIHRvIHdpbmdkaS5oLgoJQWRkIEhHRElfRVJST1IuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgcmVhZGVyIGZvciB2MSAoU0xURykgdHlwZWxpYnMuCglGaXggYSBmZXcgcHJvYmxlbXMgd2l0aCB2MiAoTVNGVCkgdHlwZWxpYnMuCglMb2FkVHlwZUxpYkV4IHNob3VsZCBkbyBhIFNlYXJjaFBhdGggdG8gbG9jYXRlIHR5cGVsaWIuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU9wZW5QcmludGVyIHNob3VsZCBmYWlsIGlmIHBQcmludGVyTmFtZSBpcyAiIi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgRlVOQ0ZMQUdTIGFuZCBjaGFuZ2UgVFlQRUZMQUdTXyogdG8gYW4gZW51bS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ29udmVydCB0aGUgc29ja2V0IHR5cGUgKG5lY2Vzc2FyeSBvbiBTb2xhcmlzKS4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBpbmNsdWRlL3JwY2RjZS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgVXVpZEhhc2goKS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCAuc3BlYyBmaWxlIHBhcmFtZXRlcnMgZm9yIG1zdmNydC5fZnVsbHBhdGggYW5kIG50ZGxsLl9zcGxpdHBhdGguCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgRGlyZWN0U2hvdyBmaWx0ZXIgY2F0ZWdvcmllcy4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgR1VJRHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBjYWxscyB0byBTdHJSZXRUb0J1ZntBfFd9IHdpdGggZHVwbGljYXRlIGNvZGUgdG8gZWxpbWluYXRlCglwcm9ibGVtcyBiZXR3ZWVuIG5hdGl2ZSBhbmQgYnVpbHQtaW4gRExMcy4KCjIwMDEtMDgtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCU1ha2Ugd2luZG93IGhhbmRsZXMgMzItYml0IGJlZm9yZSBjYWxsaW5nIHdpbmRvdyBwcm9jZWR1cmUuCglEb24ndCBjbGVhciB3aW5kb3cgcGFyZW50IGZpZWxkIHdoZW4gdW5saW5raW5nIGl0LgoKMjAwMS0wOC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuYywgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbmRvdy5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvd2luLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUFkZGVkIGdsb2JhbCBtYW5hZ2VtZW50IG9mIHVzZXIgaGFuZGxlcyBpbiB0aGUgc2VydmVyLgoJVmVyeSBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBzaGFyZWQgd2luZG93IGhhbmRsZXMuCgoJKiBBTk5PVU5DRToKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJVXNlIHRoZSBuZXcgZGV2ZWxvcG1lbnQgcGFnZSBVUkwgaW4gdGhlIGFubm91bmNlbWVudC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVpbXBsZW1lbnQgUFJPRklMRV9HZXRTZWN0aW9uTmFtZXMgdG8gbWF0Y2ggdGhlIE5UICYgTVNETiBiZWhhdmlvci4KCVRoZSAzMkEgdmVyc2lvbiBpcyBub3cgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiAoaW5zdGVhZCBvZiB0aGUKCTE2Yml0IHZlcnNpb24pLgoKCSogbG9hZGVyL3Rhc2suYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT25seSB1c2Ugd2luc29jazIuaCBpbiBXaW5lLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBXTV9NT1VTRUhPVkVSIGFuZCBXTV9NT1VTRUxFQVZFIHRvIGZvcm1hdHRpbmcuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCU91dHB1dCBjb3JyZWN0IGFzc2VtYmx5IGZ1bmN0aW9uIGhlYWRlcnMgZm9yIGFsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZGV2ZW51bS5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmgsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmgsIGRsbHMvcXVhcnR6L2ZtYXAyLmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAyLmgsIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLAoJICBkbGxzL3F1YXJ0ei9pZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lmbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2lmbWFwMy5jLCBkbGxzL3F1YXJ0ei9pbWNudGwuYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovaXVuay5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovcmVnc3ZyLmMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5oLAoJICB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCjIwMDEtMDgtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2dkaW9iai5jOgoJQ2hlY2sgZm9yIHZhbGlkIG9iamVjdCBpbiBHRElfR2V0T2JqUHRyIGV2ZW4gZm9yIE1BR0lDX0RPTlRDQVJFLgoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUdyYWJQb2ludGVyIHVzZXMgbm93IFNldFdpbmRvd0xvbmcgdG8gY2hhbmdlIHdpbmRvdyBwcm9jZWR1cmUgaW5zdGVhZAoJb2YgYWNjZXNzaW5nIGRpcmVjdGx5IFdORCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgR2V0TmFtZWRQaXBlSW5mby4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIGludGVyZmFjZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBJQ09NX01FVEhPRDEyLTI2LCBJQ09NX1ZNRVRIT0QxMi0yNiwgSUNPTV9DQUxMMTItMjYuCgoyMDAxLTA4LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDEwODI0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA4LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbmUvd2luc29jazE2Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIFdTQVNUQVJUVVAxNiBhIDEgYnl0ZSBhbGlnbm1lbnQgdmVyc2lvbiBvZiBXU0FTVEFSVFVQIGZvciB3aW4xNi4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgQ0xTSURzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9wZV9pbWFnZS5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGRlZCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCBzdXBwb3J0IHRvIExvYWRMaWJyYXJ5RXguCgoJKiBjb250cm9scy9pY29udGl0bGUuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQWRkZWQgV0lOX0xpc3RQYXJlbnRzIGZ1bmN0aW9uIGFuZCByZW5hbWVkIFdJTl9CdWlsZFdpbkFycmF5IGludG8KCVdJTl9MaXN0Q2hpbGRyZW4uIE1hZGUgb3duZXIgZmllbGQgaW4gV05EIHN0cnVjdHVyZSBhbiBIV05ELgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJUmVtb3ZlZCBpbmNsdXNpb24gb2Ygd2luLmguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkIHN0dWJzIGZvciBzZXZlcmFsIG5hbWVkIHBpcGUgZnVuY3Rpb25zLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaCwgc2VydmVyL3NvY2suYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lIHRoZSByZWd1bGFyIFdTX0ZEX1hYWCBtYWNyb3MgdG8gRkRfWFhYLgoJUmVuYW1lIHRoZSBXaW5lIHNwZWNpZmljIFdTX0ZEX1hYWCBtYWNyb3MgdG8gRkRfV0lORV9YWFguCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFkZSBpbmRlcGVuZGVudCBmcm9tIHdpbnNvY2suCglJbmNsdWRlIHRoZSBuZWVkZWQgaGVhZGVycyBkaXJlY3RseSBpbiBpbnRlcm5ldC5oLgoKCSogb2JqZWN0cy9mb250LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU1pbm9yIGZpeGVzIGludm9sdmluZyBoYW5kbGluZyBOVUxMIHBvaW50ZXJzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwKCSAgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9mb2N1cy5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJSW1wbGVtZW50ZWQgR2V0QW5jZXN0b3IgYW5kIHJlbW92ZWQgV0lOX0dldFRvcFBhcmVudC4KCVJlbW92ZWQgYSBmZXcgbW9yZSBhY2Nlc3NlcyB0byB0aGUgV05EIHN0cnVjdHVyZS4KCjIwMDEtMDgtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCURvbid0IGhvbGQgdGhlIEdESSBsb2NrIGR1cmluZyBhY2Nlc3NlcyB0byB0aGUgbWV0YWZpbGUgZGF0YS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgV2FpdE5hbWVkUGlwZSBhbmQgRGlzY29ubmVjdE5hbWVkUGlwZS4KCUFkZCBhIHN0YXRlIGZvciBlYWNoIHBpcGUgaGFuZGxlIGluIHRoZSBzZXJ2ZXIuCglDcmVhdGUgYSBzb2NrZXQgb24gd2hlbiB0aGUgcGlwZSBpcyBvcGVuZWQsIG5vdCBiZWZvcmUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIHNlcnZlci9zb2NrLmM6CglEYW5pZWwgV2Fsa2VyIDxkaXdhbGtlckBlYXJ0aGxpbmsubmV0PgoJLSBGaXggZm9yIG5vbmJsb2NraW5nIHNvY2tldHMgdXNpbmcgV1NBRXZlbnRTZWxlY3QoKSAocGF0Y2ggZnJvbSBPdmUKCSAgS2FhdmVuKS4KCS0gQ2hhbmdlZCBXU0FFbnVtTmV0d29ya0V2ZW50cygpIHNvIGl0IG9ubHkgcmV0dXJucyBldmVudHMgdGhhdCB0aGUKCSAgYXBwbGljYXRpb24gaXMgbG9va2luZyBmb3IuCgktIENoYW5nZWQgc29ja19wb2xsX2V2ZW50KCkgdG8gaW50ZXJwcmV0IGEgUE9MTElOIGV2ZW50IHdpdGggemVybwoJICBieXRlcyB3YWl0aW5nIHRvIGJlIHJlYWQgYXMgYSBQT0xMSFVQLgoKMjAwMS0wOC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hbWVycm9yLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Vycm9ycy5oLAoJICBpbmNsdWRlL3Zmd21zZ3MuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCB0d28gbWlzc2luZyBoZWFkZXJzLgoJSW1wbGVtZW50ZWQgQU1HZXRFcnJvclRleHQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksIHRvb2xzL3dpbmFwaS9jX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX2VkaXRvci5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX3N0YXRlbWVudHMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfbW9kdWxlX3VzZXIucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIENvbnRpbnVlZCBvbiB0aGUgbmV3IEMgcGFyc2VyLgoJLSBNb3JlIHJlb3JnYW5pemF0aW9ucyBhbmQgZml4ZXMuCgktIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovY29tcGxpc3QuYywKCSAgZGxscy9xdWFydHovY29tcGxpc3QuaCwgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9pYmFzYXVkLmMsIGRsbHMvcXVhcnR6L2liYXN2aWQuYywgZGxscy9xdWFydHovaWZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9pbWNudGwuYywgZGxscy9xdWFydHovaW1lbS5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLCBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9pdmlkd2luLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovc3lzY2xvY2suYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzIGZvciBDTFNJRF9GaWx0ZXJHcmFwaC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGFuIGluY29ycmVjdCAoaGFybWxlc3MpIG1lbW9yeSBhbGxvY2F0aW9uLgoKCSogaW5jbHVkZS9jb250cm9sLmgsIG9sZS91dWlkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgbWlzc2luZyBJSURzLgoKCSogZGxscy91c2VyL2NvbW0xNi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2VkIFBST0ZJTEVfIGZ1bmN0aW9ucyBieSBSZWdRdWVyeVZhbHVlRXhBLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBzdHViIGZvciBDYW5jZWxJby4KCgkqIE1ha2UucnVsZXMuaW46IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgbWFuIGFuZCBkb2MtaHRtbCBydWxlcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglFdWdlbmUgTWF5ZXZza2kgPG1heWV2c2tpQGVsZG9zLm9yZz4KCUZpeGVkIERUX1JUTFJFQURJTkcgZmxhZyBpbnRlcnByZXRhdGlvbi4KCjIwMDEtMDgtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbi5oOgoJUmVtb3ZlZCBXSU5fR2V0RGVza3RvcCgpLgoKCSogd2luMzIvY29uc29sZS5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9tc2MuYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsCgkgIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBtc2Rvcy9pbnQyZi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMgKG1haW5seSB0aHJ1IHZzLiB0aHJvdWdoKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVJlY3QgcmV0dXJuZWQgYnkgTElTVFZJRVdfR2V0SXRlbVJlY3Qgc2hvdWxkIGJlIHRvdGFsIHNpemUgaW4gcmVwb3J0Cgltb2RlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRGVmYXVsdCBiaXRtYXAgaXMgbm90IHN1YmplY3QgdG8gcmVmZXJlbmNlIGNvdW50aW5nLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0aGUgZGVjVmFsIGZpZWxkIHRvIFZBUklBTlQuCglGaXggdGhlIFZBUklBTlQgQyBsYXlvdXQsIGkuZS4gdGhlIHVuaW9uL3N0cnVjdCBuYW1lcy9uZXN0aW5nLgoJRW5jYXBzdWxhdGUgYWxsIGFjY2Vzc2VzIHRvIFZBUklBTlQgdHlwZXMgd2l0aCB0aGUgVl9WVCBhbmQgVl9VTklPTgoJbWFjcm9zLgoKCSogc2VydmVyL3NlcmlhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVVuY29uZGl0aW9uYWxseSBzZXQgT19OT05CTE9DSyB3aGVuIG9wZW5pbmcuCgoyMDAxLTA4LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOgoJUmVmdXNlIHRvIHNlbGVjdCBhIGJpdG1hcCB0aGF0IGlzIGFscmVhZHkgc2VsZWN0ZWQgaW4gYW5vdGhlciBEQy4KCgkqIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgZGVsYXllZCBkZXN0cnVjdGlvbiBvZiBHREkgb2JqZWN0cy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGaXhlZCBHZXRDbGFzc0xvbmcgdG8gcmV0dXJuIGZ1bGwgMzIgYml0cyBmb3IgYWxsIGl0ZW1zLgoJUmVtb3ZlZCBHQ1dfKiBkZWZpbml0aW9ucyB0aGF0IGRvbid0IGV4aXN0IGluIFdpbjMyLgoKCSogb2JqZWN0cy9kaWIuYzoKCUNyZWF0ZSBhIGNvbG9yIGJpdG1hcCBpbiBDcmVhdGVESUJpdG1hcCBldmVuIHdpdGggYSBibGFjayZ3aGl0ZSBEQy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CglSZW1vdmVkIHN0cnVjdCBVREFURSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVN0b3JlIHRoZSBjb21tIGVycm9yIHZhbHVlIGluIHRoZSB3aW5lc2VydmVyLCBub3QgYSBnbG9iYWwuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmVhZCBkYXRhIGltbWVkaWF0ZWx5IGluIG92ZXJsYXBwZWQgUmVhZEZpbGUgaWYgcG9zc2libGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglEbyBub3Qga2VlcCB0aGUgaGFuZGxlIG9mIGEgZGVsZXRlZCBpdGVtIGFzIHRoZSBzZWxlY3RlZEl0ZW0uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBHZXREQygwKSBpbnN0ZWFkIG9mIENyZWF0ZUNvbXBhdGlibGVEQygwKS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXZSBuZWVkIHRvIG1ha2UgYSBjb3B5IG9mIHRoZSBmb250bmFtZSBhbmQgdGhlIEhGT05UIGhhbmRsZSBpbgoJSUZvbnRfQ2xvbmUsIG90aGVyd2lzZSB3ZSBnZXQgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGJhZCBHREkgaGFuZGxlcy4KCjIwMDEtMDgtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgcHJvcGVyIHN1cHBvcnQgZm9yIDMyLWJpdCBXTV9ORVhUTUVOVS4KCgkqIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL21zZzE2LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy91c2VyLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCVJlbW92ZWQgYSBudW1iZXIgb2YgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSB3aW5kb3cgc3RydWN0dXJlLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbWNpd25kLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgdGhlIE1DSVduZCogZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBwYXNzIHRoZSBoaWdoIGxldmVsIHdGbGFncyBmcm9tIFZhcmlhbnRDaGFuZ2VUeXBlKiBkb3duIHRvIGxvdwoJbGV2ZWwgVmFyaWFudCBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaDoKCUZpeGVkIGludGVybmFsIGlubGluZSBmdW5jdGlvbiB0aGF0IHdhcyBkZWNsYXJlZCBleHRlcm4uCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRXhwbGljaXRseSBjaGVjayBmb3IgQ1NfUEFSRU5UREMgaW4gV01fRVJBU0VCS0dORCBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBtZW1zZXQgYnkgaGFuZCBtYWRlIGVxdWl2YWxlbnQgdG8gd29yayBhcm91bmQgc29tZSBidWdneQoJbWVtc2V0IGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUJlY2F1c2Ugb2YgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gY29tY3RsMzIgYW5kIG1zdmZ3MzIsIHJlcGxhY2UKCWluIGNvbWN0bDMyIGRlbGF5IGxvYWRpbmcgb2YgbXN2ZnczMiBieSBtYW51YWwgbG9hZGluZy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglUZXN0IGZvciBpbnZhbGlkIGxhcmdlIGhhbmRsZXMgaW4gR0RJX0dldE9ialB0ciBhbmQgR0RJX0ZyZWVPYmplY3QuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggRmlsbFJlY3QgY2FsbHMgaW4gRklMRURMRzk1X0xPT0tJTl9EcmF3SXRlbS4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBob2xkIHRoZSBHREkgbG9jayB3aGVuIHRoZSBBQk9SVERPQyBwcm9jZWR1cmUgaXMgY2FsbGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBvbGVhdXQzMi5WYXJCc3RyQ2F0LgoKMjAwMS0wOC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCU1hZGUgdGhlIEludGVybG9ja2VkKlBvaW50ZXIgZnVuY3Rpb25zIHN0YXRpYyBpbmxpbmUgc2luY2UgdGhleSBhcmVuJ3QKCWV4cG9ydGVkIGJ5IHRoZSBXaW5kb3dzIEFQSS4KCgkqIG9iamVjdHMvZGliLmM6CglVc2UgdGhlIHBhc3NlZCBoZGMgaW4gQ3JlYXRlRElCaXRtYXAgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCgoJKiBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgZGxscy93aW5lcHMvZm9udC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oOgoJQ3JlYXRlIEdESSBzdG9jayBvYmplY3RzIGFzIG5vcm1hbCBvYmplY3RzIGluc3RlYWQgb2YgdXNpbmcgbWFnaWMKCWhhbmRsZSB2YWx1ZXMuCgoyMDAxLTA4LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2dkaW9iai5jOgoJU3BlY2lmeSBzaXplcyBmb3Igc3RvY2sgZm9udHMgYWdhaW47IHJlbW92ZWQgdGhlIEZpeFN0b2NrRm9udFNpemUKCWhhY2suIElnbm9yZSBtYXBwaW5nIG1vZGVzIHdoZW4gc2VsZWN0aW5nIHN0b2NrIGZvbnRzIGludG8gYSBEQy4KCVJlbW92ZWQgYSBmZXcgZGlyZWN0IGFjY2Vzc2VzIHRvIEdESSBzdHJ1Y3R1cmVzIGZyb20geDExZHJ2LgoKCSogb2JqZWN0cy9kYy5jOgoJUmVsZWFzZSBHREkgbG9jayBiZWZvcmUgY2FsbGluZyBEZWxldGVEQyBmcm9tIFJlc3RvcmVEQy4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvc2hlbGwxNi5oLAoJICBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzoKCU1vdmVkIHVuZG9jc2hlbGwuaCB0byBkbGxzL3NoZWxsMzIuIFJlbW92ZWQgc2hlbGwxNi5oLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbi5oOgoJTW92ZWQgdXNlciBsb2NrIHRvIHVzZXIuYy4gQWRkZWQgVVNFUl9DaGVja05vdExvY2sgZnVuY3Rpb24uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS92aXJ0dWFsLmMsCgkgIG9iamVjdHMvZ2Rpb2JqLmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy90aW1lci5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZmlsZXMvcHJvZmlsZS5jOgoJQWRkZWQgbmFtZXMgdG8gc3RhbmRhcmQgY3JpdGljYWwgc2VjdGlvbnMgKHN1Z2dlc3RlZCBieSBBbmRyZWFzCglNb2hyKS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUGFydGlhbGx5IGltcGxlbWVudCBvbGVhdXQzMi5WYXJCc3RyQ21wLgoKMjAwMS0wOC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYzoKCU1ha2Ugc3VyZSB3ZSBkb24ndCBob2xkIHRoZSBHREkgbG9jayB3aGVuIGxvYWRpbmcgZHJpdmVycy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYzoKCUltcGxlbWVudGVkIF9DaGVja05vdFN5c0xldmVsLgoKCSogaW5jbHVkZS93aW4xNmRydi5oLCBkbGxzL2dkaS9kcml2ZXIuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jOgoJRml4ZWQgd2luMTZkcnYgaW5pdGlhbGlzYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQYXRoR2V0RXh0ZW5zaW9uQVcgaGFzIHRocmVlIGFyZ3VtZW50cy4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGNhbGwgRG9zdm0gZnVuY3Rpb25zIHdoZW4gRG9zdm0gaXNuJ3QgaW5pdGlhbGl6ZWQuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ltZW0uYywgZGxscy9xdWFydHovaXJjbG9jay5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L2l1bmsuaCwgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLAoJICBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgZGxscy9xdWFydHovc3lzY2xvY2suaCwgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIHF1YXJ0eiBkbGwuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU5vcm1hbGl6ZSB0aGUgZGlzcGxheSBuYW1lIHVzZWQgdG8gYnVpbGQgdGhlIGNhY2hlZCBtZXRyaWMgZmlsZW5hbWUgc28KCXRoYXQgJzowJywgJzowLjAnLCBhbmQgJ3VuaXg6MC4wJyBhbGwgcmVzb2x2ZSB0byB0aGUgc2FtZSBmaWxlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgaW5jbHVkZS9vbGVhdXRvLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFZhclBhcnNlTnVtRnJvbVN0ciwgVmFyTnVtRnJvbVBhcnNlTnVtLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2FmbTJjLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL0NPUFlSSUdIVFMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW5lcHMvdHlwZTFhZm0uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUVsaW1pbmF0ZSBnbHlwaCBib3VuZGluZyBib3hlcyAmIG90aGVyIHVudXNlZCBmb250IG1ldHJpY3MuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21vZHVsZS5jLAoJICBkZWJ1Z2dlci93aW5lZGJnLmMsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdGhlIHBhcnNpbmcgb2YgaWQxLmlkMiB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYWNjZXNzIHRvIGZpZWxkIGlkMgoJb2Ygc3RydWN0IGlkMSwgb3IgdGhlIGlkZW50aWZpZXIgaWQyIGluIGRsbCBpZDEuCglFbmhhbmNlZCBzb21lIGVycm9yIHJlcG9ydGluZyBhcyB3ZWxsIGFzICdpbmZvIGxvY2FsJyBkaXNwbGF5IGxheW91dC4KCU1pbm9yIGNvc21ldGljIGNoYW5nZXMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBlcnJvciBtZXNzYWdlIGFuZCByZXR1cm4gdmFsdWUgaW4gY2FzZSBvZiBib2d1cyAnb3BlbiBhbGwnIG1jaQoJc3RyaW5nIGNvbW1hbmQuIE1pbm9yIDMyLzE2IG9wdGltaXphdGlvbnMgYW5kIGNvc21ldGljIGZpeGVzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURhdGVUaW1lU3RyaW5nVG9UbSBhbmQgRGF0ZVRvVG0gbXVzdCB1c2UgZHdGbGFncyBpbnN0ZWFkIG9mIGxjaWQuCgoJKiBvbGUvdXVpZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUluY2x1ZGUgR1VJRHMgaW4gc3RybWlmLmggYW5kIHV1aWRzLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2F1ZGV2Y29kLmgsIGluY2x1ZGUvZHNob3cuaCwKCSAgaW5jbHVkZS9ldmNvZGUuaCwgaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgZHNob3cgaGVhZGVycy4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgSUdyYXBoQnVpbGRlciwgSUZpbHRlckdyYXBoMiwgSU1lZGlhU2Vla2luZyBpbnRlcmZhY2VzLgoKCSogd2luMzIvZXhjZXB0LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vZGlmaWVkIHRoZSBkZWJ1Z2dlciBsYXVuY2hpbmcgY29kZSBzbyB0aGF0IG9ubHkgb25lIGluc3RhbmNlIG9mIHRoZQoJZGVidWdnZXIgaXMgY3JlYXRlZCBwZXIgcHJvY2Vzcy4KCjIwMDEtMDgtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbnByb2MuaCwgd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBtYXBwaW5ncyBmb3IgYSBmZXcgbWVzc2FnZXMuCglBZGRlZCB1bmljb2RlIG1lc3NhZ2VzIGJpdCBzZXQgdG8gc2hvcnRjdXQgbWVzc2FnZSBtYXBwaW5nIHdoZW4KCXBvc3NpYmxlLgoKCSogd2luZG93cy9zcHkuYzogRml4ZWQgc29tZSBtZXNzYWdlIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50ZWQgUkJfTUFYSU1JWkVCQU5EIGZvciB0aGUgImlkZWFsPVRSVUUiIGNhc2UuCgktIEltcGxlbWVudGVkIE5NX0NVU1RPTURSQVcgbm90aWZpY2F0aW9ucyBmb3IgdGhlIElURU1QUkVQQUlOVCBhbmQKCSAgSVRFTVBPU1RQQUlOVCBvbmx5LiAoVXNlZCBieSBJRTQgLSBnbyBmaWd1cmUuKQoJLSBJbnZhbGlkYXRlIHdpbmRvdyByZWN0YW5nbGVzIGFmdGVyIGNlcnRhaW4gUkJfIG1lc3NhZ2VzIGxpa2UgdGhlCgkgIG5hdGl2ZS4gRml4ZWQgc29tZSBwYWludGluZyBwcm9ibGVtcy4KCS0gQWRkZWQgVXBkYXRlV2luZG93IGNhbGwgaW4gX01vdmVDaGlsZFdpbmRvd3MgdG8gZml4IG90aGVyIHBhaW50aW5nCgkgIHByb2JsZW1zLgoJLSBTZXQgdGhlIENhcHRpb24gRm9udCBhcyB0aGUgZGVmYXVsdCBmb250IGZvciBhbGwgYmFuZHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBUQlNUWUxFX0ZMQVQgYXMgInRyYW5zcGFyZW50IiB0b29sYmFyIGFuZCBidXR0b25zLiAoU2tpcAoJICBGaWxsUmVjdCBhbmQgQkZfTUlERExFIG9uIF9GTEFUIHRvb2xiYXJzLikKCS0gSXNzdWUgRklYTUVzIGZvciB1bnN1cHBvcnRlZCBzdHlsZXMuCgktIElmIHRoZSAiaGlkZGVuIiBzdGF0ZSBoYXMgY2hhbmdlZCB0aGVuIHJlY2FsYyB0aGUgYnV0dG9ucy4KCS0gU3VwcG9ydCBUQlNUWUxFX0NVU1RPTUVSQVNFICh1c2VkIGJ5IElFNCkgYW5zIGlzc3VlIHNvbWUgb2YgdGhlCgkgIG5lY2Vzc2FyeSBOTV9DVVNUT01EUkFXIG5vdGlmaWVzLgoJLSBQYXNzIHRoZSBXTV9FUkFTRUJLR05EIHRvIHBhcmVudCBpZiB0aGUgdG9vbGJhciBpcyAidHJhbnNwYXJlbnQiLgoJLSBJbnZhbGlkYXRlIHRoZSBhcmVhIDEgYmlnZ2VyIHRoYW4gdGhlIGJ1dHRvbiByZWN0IG9uIGEgV01fTU9VU0VMRUFWRQoJICBzbyB0aGF0IHRoZSBlZGdlIGlzICJlcmFzZWQiIGJ5IHRoZSBwYXJlbnQuCgktIFN1cHBvcnQgdGhlIFBHTl9DQUxDU0laRSBub3RpZnkgc2luY2UgYSB0b29sYmFyIGNhbiBiZSBhIGNoaWxkIG9mIHRoZQoJICBQYWdlciBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBzdXBwb3J0IHRvIHJlc3BvbmQgdG8gdGhlIFBHTl9DQUxDU0laRSB2ZXJzaW9uIG9mIHRoZSBXTV9OT1RJRlkKCW1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBNYWtlIGFsbCBXTV9OT1RJRlkgbWVzc2FnZXMgZ28gdG8gdGhlIHBhcmVudC4KCS0gQWxsb3cgV01fV0lORE9XUE9TQ0hBTkdJTkcgd2hlbiB0aGUgY29udHJvbCBpcyBzaXplIDAgdG8gc2V0IGluaXRpYWwKCSAgc2l6ZS4KCS0gQ29tYmluZSBtdWx0aXBsZSBTZXRXaW5kb3dQb3MgY2FsbHMgaW4gc2FtZSBwcm9jZXNzaW5nIGxpbmUgYW5kIG1ha2UKCSAgdGhlIGZsYWdzIGxpa2UgbmF0aXZlLgoJLSBSZWRvIFdNX05DQ0FMQ1NJWkUgdG8gbWF0Y2ggbmF0aXZlLgoJLSBTaW5jZSBQYWdlciBpcyBhICJ0cmFuc3BhcmVudCIgY29udHJvbCAoZXhjZXB0IGZvciBpdHMgb3duIGJ1dHRvbnMpLAoJICB0aGUgV01fRVJBU0VCS0dORCBuZWVkcyB0byBiZSBwYXNzZWQgdG8gdGhlIHBhcmVudC4gQWxzbyBkbyB0aGUgd2luZG93CgkgIG9mZnNldCBsaWtlIHRoZSBuYXRpdmUgY29udHJvbCBkb2VzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgaW5jbHVkZS9vbGVhdXRvLmg6CglEYW5pZWwgV2Fsa2VyIDxkaXdhbGtlckBlYXJ0aGxpbmsubmV0PgoJLSBpbXBsZW1lbnRlZCBTeXN0ZW1UaW1ldG9WYXJpYW50VGltZS9WYXJpYW50VGltZXRvU3lzdGVtVGltZQoJICAgIFRoZXJlIHdhcyBhbm90aGVyIGltcGxlbWVudGF0aW9uIG9mIFN5c3RlbVRpbWV0b1ZhcmlhbnRUaW1lCgkgICAgc3VibWl0dGVkIHRoYXQgZGlkbid0IHdvcmsgZm9yIGRhdGVzIHByaW9yIHRvIDE5MDAuCgktIGltcGxlbWVudGVkIFZhckRhdGVGcm9tVURhdGUvVmFyVWRhdGVGcm9tRGF0ZQoJLSBpbXBsZW1lbnRlZCBWYXJpYW50VGltZVRvRG9zRGF0ZVRpbWUKCgkqIGRsbHMvbXN2Y3J0L21hdGguYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRml4ZWQgX2NvbnRyb2w4NyByZXR1cm4gdmFsdWUsIHVzZSBvZiB3cm9uZyBhc3NlbWJsZXIgY29tbWFuZCB0byBnZXQKCWZwIGNvbnRyb2wgd29yZCBhbmQgYSBidWcgdGhhdCBpbnZlcnRlZCBfSUNfQUZGSU5FIGZsYWcuCglNYWRlIF9jb250cm9sZnAgd29yayBhcyBzcGVjaWZpZWQgaW4gTVNETi4KCjIwMDEtMDgtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOgoJSm9zaCBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglXcm9uZyBoYW5kbGUgd2FzIGJlaW5nIGNsb3NlZC4KCgkqIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmUgdW51c2VkIGNoYXJhY3RlciB3aWR0aCBhcnJheS4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgRW51bUZvbnRzIGFuZCBTZWxlY3RPYmplY3QgdXNlIGNvbW1vbiBmb250IHNjYWxpbmcuCgoyMDAxLTA4LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL25vbmNsaWVudC5oLAoJICBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLAoJICBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsCgkgIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jOgoJUmVtb3ZlZCBhIG51bWJlciBvZiBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIFdORCBzdHJ1Y3R1cmUsIHJlcGxhY2luZwoJdGhlbSBieSBBUEkgY2FsbHMuCgoJKiBncmFwaGljcy9kaXNwZGliLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvbnRkbGwvc3luYy5jOgoJSvZyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUZpeGVkIGEgZmV3IHNpZ25lZC91bnNpZ25lZCBhbmQgInVuc2lnbmVkIDwgMCBhbHdheXMgdHJ1ZSIgd2FybmluZ3MuCgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RleHQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlbW92ZWQgQU5TSSBlbmNvZGluZyBzdHVmZi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUR1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJRml4IEV4dHJhY3RGcm9tRVhFRExMIGZvciBuSW5kZXggIT0gMC4KCVByZWZlciA4Yml0IGljb25zLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL2xvYWRvcmRlci5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKCSAgZGVidWdnZXIvc3RhYnMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZXMgZm9yIFNvbGFyaXMgWDg2LgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBtc3ZjcnQuX21ic3BicmsuCgoyMDAxLTA4LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGRlLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9kZGVtbC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIGNvcnJlY3RseSB0aGUgSFNaIGFzIGxvY2FsIGF0b21zIGFuZCBhZGRlZCB0aGUgbmVlZGVkCgkgIGNvbnZlcnNpb25zIHRvIGdsb2JhbCBhdG9tcwoJLSBlbmhhbmNlZCBpbnRlcm5hbCBoYW5kbGUgPD0+IHBvaW50ZXIgY29udmVyc2lvbnMsIGFzIHdlbGwgYXMKCSAgdmFsaWRpdHkgb2Ygc3VjaCBvYmplY3RzIChsaWZlIHRpbWUsIGRlc3RydWN0aW9uLCBtdXR1YWwgYWNjZXNzLi4uKQoJLSBmaXhlZCBhIGZldyBBTlNJL1VuaWNvZGUgaXNzdWVzLCBzdG9yZXMgbW9zdCBvZiB0aGUgZGF0YSBhcyBVbmljb2RlCgktIHN0YXJ0ZWQgaGF2aW5nIGJvdGggQW5zaS9Vbmljb2RlIERERSB3aW5kb3cgcHJvY3MgZm9yIG1lc3NhZ2UgQS9XCgkgIHRyYW5zZm9ybWF0aW9uCgktIGZpeGVkIGEgZmV3IHNlZ21lbnRlZCBwb2ludGVyIGlzc3VlcyAobWFpbmx5IGluIERkZUluaXRpYWxpemUgJgoJICBEZGVHZXREYXRhKQoJLSBhZGRlZCBtb3N0IG9mIHRoZSBDQkZfIGZsYWdzIGhhbmRsaW5nCgktIGltcGxlbWVudGVkIHRoZSBjb252ZXJzYXRpb24gYW5ub3VuY2VtZW50IChYVFlQX0NPTk5FQ1RfQ09ORklSTSkgb24KCSAgc2VydmVyIHNpZGUKCS0gZW5oYW5jZWQgRGRlUXVlcnlDb25maWcgYW5kIGltcGxlbWVudGVkIERkZVJlY29ubmVjdAoJLSBpbXBsZW1lbnRlZCBjb252ZXJzYXRpb24gdGVybWluYXRpb24gKGluY2x1ZGluZyBYVFlQX1VOUkVHSVNURVIpCgktIHNldmVyYWwgb3RoZXJzIGNvZGUgY2xlYW4gdXAKCS0gYWRkZWQgdHJhbnNhY3Rpb24gc3VwcG9ydCBvbiBzZXJ2ZXIgc2lkZSB0b28KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgbXVsdGlieXRlIHN0cmluZyByZXZlcnNlLgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wcy5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlIHByZXZpb3VzbHkgZGlzYWJsZWQgY29kZS4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGkvbWFrZV9maWx0ZXIsIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX2VkaXRvci5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX3N0YXRlbWVudHMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVwcy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBCZWd1biBpbXBsZW1lbnRhdGlvbiBvZiBhIEMgc3RhdGVtZW50cyBwYXJzZXIuCgktIE1vcmUgcmVvcmdhbml6YXRpb25zIGFuZCBmaXhlcy4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYzoKCURvbid0IGNyZWF0ZSB0aGUgV0lORVBSRUZJWCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQWRkZWQgSW50ZXJsb2NrZWQqUG9pbnRlciBmdW5jdGlvbnMuCglGaXhlZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSBwcm90b3R5cGUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvdmVyc2lvbi5jLCBvbGUvb2xlMm5scy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiB0b29scy93aW5lY2hlY2s6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNtYWxsIHdpbmVjaGVjayB1cGRhdGUgKERHQSBjaGVjayBpcyBib2d1cykuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIG1vcmUgU1RBVFVTXyBjb2Rlcy4KCjIwMDEtMDgtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL25vbmNsaWVudC5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZmRsZy5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3VzZXIuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVJlcGxhY2UgU2VuZE1lc3NhZ2UxNiBieSBTZW5kTWVzc2FnZVcgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL3VzZXIvdGh1bmsuYywgZGxscy91c2VyL3VzZXIuc3BlYywgd2luZG93cy9wYWludGluZy5jOgoJRml4ZWQgRHJhd1N0YXRlMTYgY2FsbGJhY2sgc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUZpeGVkIGxvb3AgdGVybWluYXRpb24gY2hlY2sgaW4gUGF0aElzRXhlVy4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOgoJRml4ZWQgaW5fZGF0YS9vdXRfZGF0YSBtaXh1cCBpbiBFc2NhcGUxNiAodGhhbmtzIHRvIExhZGlzbGF2IFNsYWRlY2VrKS4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW5lcHMvdHlwZTFhZm0uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJld3JpdGUgYW5kIHNlcGFyYXRlIEFGTSBwYXJzaW5nIGNvZGUgKG5vIG1vcmUgW2FmbWZpbGVzXSkuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlIGxpYkdMVSBjaGVjayB0byBsb29rIGZvciBnbHVMb29rQXQgaW5zdGVhZCBvZiBnbEJlZ2luLgoKMjAwMS0wOC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHRyaWVzIHRvIHByaW50IHRoZSBzeW1ib2wgbmFtZSBvZiBhIGNyc3Qgd2hlbiBpdCB0aW1lcyBvdXQuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvbid0IGNyYXNoIGlmIHNlbmRfdGhyZWFkX3dha2V1cCgpIGZhaWxzLgoKCSogd2luZWRlZmF1bHQucmVnOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzb21lIHJlZ2lzdHJ5IGVudHJpZXMgcmVsYXRlZCB0byBDT00gaW50ZXJmYWNlIG1hcnNoYWxpbmcuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21zZzE2LmMsCgkgIGRsbHMvdXNlci91c2VyLnNwZWMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglSZXdyb3RlIG1vc3Qgb2YgU2VuZE1lc3NhZ2UvUGVla01lc3NhZ2UuCglJbXBsZW1lbnRlZCBpbnRlci1wcm9jZXNzIG1lc3NhZ2luZy4KCU1vdmVkIG1vc3QgbWVzc2FnZSByb3V0aW5lcyB0byBkbGxzL3VzZXIsIGFuZCBzcGxpdCBvZmYgMTYtYml0Cglyb3V0aW5lcyB0byBhIHNlcGFyYXRlIGZpbGUuCgoyMDAxLTA4LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgT2xlTG9hZFBpY3R1cmUuCglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIEpQRUcsIEJpdG1hcCBhbmQgSWNvbnMgZnJvbSBwZXJzaXN0YW50CglzdHJlYW1zLgoJSW1wbGVtZW50ZWQgSlBFRyBzdXBwb3J0IHVzaW5nIGxpYmpwZWcsIGFkZGVkIG5lY2Vzc2FyeSBjb25maWd1cmUuaW4KCW9wdGlvbnMuCglBZGRlZCBJQ29ubmVjdGlvblBvaW50IHN0eWxlIG5vdGlmaWNhdGlvbnMgdG8gdGhlIElQaWN0dXJlIGlmYWNlLgoJSW1wbGVtZW50ZWQgc2V2ZXJhbCBvZiB0aGUgc3R1YnMgYWxyZWFkeSB0aGVyZSwgYWRkZWQgc29tZSBtb3JlLgoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVhHcmFiUG9pbnRlciBpcyBub3cgY2FsbGVkIGZyb20gdGhlIGNvcnJlY3QgdGhyZWFkIGNvbnRleHQgYW5kIGl0IGlzCgltYWRlIHN1cmUgdGhhdCB3ZSBoYXZlIGtleWJvYXJkIGZvY3VzIHdoZW4gdXNpbmcgRGlyZWN0WC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICBjb250cm9scy9tZW51LmM6CglSZXBsYWNlZCBNU0dfSW50ZXJuYWxHZXRNZXNzYWdlIGNhbGxzIGJ5IGVxdWl2YWxlbnQgZXhwb3J0ZWQgQVBJcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgcmV0dXJuIHZhbHVlIGZvciBXTV9OT1RJRlkgYW5kIFdNX0FDVElWQVRFQVBQIG1hcHBpbmdzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEFkZGVkIFNNVE9fKiBkZWZpbmVzLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRlYnVnZ2VyL2RiZy55LAoJICBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL3N0YWNrLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUV4dGVuZGVkIGJ0IGNvbW1hbmQgdG8gZGlzcGxheSBiYWNrdHJhY2Ugb2YgYW5vdGhlciB0aHJlYWQuCglFbmhhbmNlZCBwcm9jZXNzICYgdGhyZWFkIGRpc3BsYXkgd2l0aCBwcm9jZXNzIG5hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdGFiIGNvbnRyb2wgaW5kZXggaGFuZGxpbmcuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVNldENvbW1Db25maWcgaGFzIDMgYXJndW1lbnRzLCBub3QgMi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVJlY29uY2lsZWQgdGhlIHdpbmUgbWFuIHBhZ2VzIHRvIHRoZSBhYnNlbmNlIG9mIHdpbmUuY29uZi4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGltYWdlIG5hbWUgdmFsdWUgc2VudCB0byBzZXJ2ZXIgdXBvbiBwcm9jZXNzIGNyZWF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpcnN0IChwYXJ0aWFsKSBpbXBsZW1lbnRhdGlvbiBvZiBJVHlwZUluZm86Okludm9rZS4KCUZpeGVkIGJ1ZmZlciBsZW4gcGFzc2luZyB0byBzbnByaW50ZigpLgoKMjAwMS0wOC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1hcmNvIEJpenphcnJpIDxtLmJpenphcnJpQGljdWJlLml0PgoJR2V0Q29udHJvbEJydXNoMTY6IGF2b2lkIHBvdGVudGlhbGx5IHJlbGVhc2luZyB0aGUgc2FtZSBwb2ludGVyCgl0d2ljZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJSW1wbGVtZW50ZWQgUmVnaXN0ZXJUeXBlTGliLgoKCSogbGlicmFyeS9sZHQuYzoKCVBpZXJyZSBCZXlzc2FjIDxwYkBmYXN0ZXJpeC5mcmVlbml4Lm9yZz4KCUZvcmNlIERQTCAzIHdoZW4gc2V0dGluZyBlbnRyaWVzIG9uIEJTRC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU9ubHkgYWRkICIuIiBzZXBhcmF0b3IgaW4gY2FzZSBhIGRlZmF1bHQgZmlsZSBuYW1lIGV4dGVuc2lvbiBkb2VzCglleGlzdC4KCgkqIG9iamVjdHMvZGliLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURJQl9HZXRCaXRtYXBJbmZvIGRpZG4ndCByZWNvZ25pemUgQklUTUFQVjQvNUhFQURFUi4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgLTEgYXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSBmb3IgaGFuZGxlcyBiZWZvcmUgQ2xvc2VIYW5kbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBkZWJ1Z2dpbmcgZHVtcHMgb2YgYmFyIGFuZCBidXR0b25zLCBhbmQgdHJhY2UgZW50cnkgZm9yIGVhY2gKCSAgbWVzc2FnZS4KCS0gT3JnYW5pemUgV01fTk9USUZZIHByb2Nlc3NpbmcgaW4gcHJlcGFyYXRpb24gZm9yIFVuaWNvZGUKCS0gSW1wbGVtZW50IFRCTl9HRVRESVNQSU5GTyBhbmQgSV9JTUFHRUNBTExCQUNLIGZvciBiaXRtYXBzLgoJLSBJbXBsZW1lbnQgZHJhd2luZyBvZiBzZXBhcmF0b3IgZm9yIFRCU1RZTEVfRFJPUERPV04gc2ltaWxhciB0byBuYXRpdmUuCgktIENoYW5nZSBkcmF3aW5nIG9mIGJ1dHRvbnMgdG8gc3VwcG9ydCBUQlNUWUxFX0xJU1QgYW5kIG1ha2UgbWF0Y2gKCSAgbmF0aXZlIHBpeGVsIGxheW91dCAod2l0aCBhbmQgd2l0aG91dCBiaXRtYXBzKS4KCS0gQ2hhbmdlIFRPT0xCQVJfTWVhc3VyZVN0cmluZyB0byBtZWFzdXJlIHdpdGggRHJhd1RleHQgbGlrZSBuYXRpdmUuCgkgIFRoaXMgZWxpbWluYXRlcyBleHRyYSBzcGFjZSBkdWUgdG8gcHJlZml4IGNoYXIgKCImIikuCgktIFNwZWVkIHVwIFRPT0xCQVJfQ2FsY1N0cmluZ3MgYnkgZG9pbmcgdGhlIEhEQyBhbmQgRk9OVCBzZWxlY3Rpb24gb25jZS4KCS0gQ2hhbmdlIGNhbGMgb2YgYnV0dG9ucyB0byBtYXRjaCBkcmF3aW5nIGZvciBUQlNUWUxFX0xJU1QgYW5kCgkgIHNlcGFyYXRvcnMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHN1cHBvcnQgdG8gZHVtcCBtZW1vcnkgYXQgbFBhcmFtIGxvY2F0aW9uIG9uIGNvbW1vbiBjb250cm9sCgkgIG1lc3NhZ2VzLgoJLSBGaXhlZCByZW1haW5pbmcgVG9vbGJhciBhbmQgUGFnZXIgbm90aWZ5IGR1bXAgYW1vdW50cy4KCS0gU2VwYXJhdGUgbWVtb3J5IGR1bXAgY29kZSBmb3IgZWFzeSB1c2UuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIFRCTkZfKiBmbGFncyBmb3IgdGhlIE5NVEJESVNQSU5GTyBzdHJ1Y3R1cmUuCgoyMDAxLTA3LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDEwNzMxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA3LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZHJpdmVyLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUluY2x1ZGUgZGV2aWNlIG5hbWUgaW4gY2FsbCB0byBDcmVhdGVJQy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJRml4ZWQgZGVza3RvcCB3aW5kb3cgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIHdpbmRvd3MvZGNlLmM6CglGaXhlZCBhIGZldyBwcm9ibGVtcyB3aXRoIERDWF8qIGZsYWdzIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglOb2cgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJRG9uJ3QgZW5hYmxlIHRoZSAnaG90JyBzdGF0ZSBvZiBhIHRvb2xiYXIgYnV0dG9uIHdoZW4gaXQncyBub3QKCWVuYWJsZWQuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBTR0lTIG11bHRpdGV4dHVyZSBleHRlbnNpb24uCgktIG1pc2MuIG90aGVyIGZpeGVzCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRXJhc2Ugb25seSBjbGllbnQgYXJlYSBvbiBXTV9FUkFTRUJLR05ELgoKMjAwMS0wNy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmFwaS8uY3ZzaWdub3JlLCB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmFwaS90cmFtcG9saW5lLCB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBpdCBwb3NzaWJsZSB0byBpbnN0YWxsIHRoZSB3aW5hcGkgdG9vbHMuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZvcmNlIFNUUklDVCBjaGVja2luZyBvZiBjYWxsYmFjayBmdW5jdGlvbiB0eXBlcyB3aGVuIGNvbXBpbGluZyBXaW5lLgoKCSogd2luZG93cy9wcm9wZXJ0eS5jOgoJSW1wbGVtZW50IEVudW1Qcm9wcyBvbiB0b3Agb2YgRW51bVByb3BzRXggdG8gYXZvaWQgZnVuY3Rpb24gcG9pbnRlcgoJdHlwZSBtaXNtYXRjaGVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBpbmNsdWRlL3Rhc2suaDoKCUZpeGVkIEhUQVNLL0hUQVNLMTYgaGFuZGxlIG1pc21hdGNoLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvd2luZGVmLmg6CglNb3ZlZCBzb21lIGhhbmRsZSBkZWNsYXJhdGlvbnMgdG8gdGhlIHJpZ2h0IGhlYWRlcnMuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVwcy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQSBmZXcgYnVnIGZpeGVzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiB0aGUgJy0td2l0aC13aW5lLXh4eCcgb3B0aW9uczogb25seSBsb29rIGluIHRoZQoJc3BlY2lmaWVkIHBhdGguCglMaWJyYXJpZXMgYW5kIHdpbmUgZGxscyBhcmUgc2VwYXJhdGUgbm90aW9ucyB0aGF0IG5lZWQgc2VwYXJhdGUgcGF0aHMKCS0+IGFkZCBXSU5FX0RMTF97Uk9PVCxQQVRIfSwgLS13aXRoLXdpbmUtZGxscyBhbmQgYSAnLVAnIG9wdGlvbi4KCVNtYWxsIGZpeGVzIHRvIHRoZSBzZWFyY2ggb3JkZXIuCgoyMDAxLTA3LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZXNjYXBlLmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYzoKCVJld3JvdGUgRXNjYXBlIHRvIGF2b2lkIGNhbGxpbmcgZG93biB0byBFc2NhcGUxNi4KCVJlcGxhY2VkIEVzY2FwZSBieSBFeHRFc2NhcGUgaW4gdGhlIERDIGZ1bmN0aW9uIHRhYmxlLgoKCSogTWFrZS5ydWxlcy5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBhIGZpbHRlciBydWxlIGZvciBmaWx0ZXJpbmcgbWFrZSBvdXRwdXQgd2l0aAoJdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9vbGUyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvbWFrZV9maWx0ZXIsCgkgIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlcl9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvc2V0dXAucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUEgZmV3IGJ1ZyBmaXhlcy4KCgkqIGluY2x1ZGUvZHBsYXkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2xlYW51cC9yZW1vdmFsIG9mIHVubmVzc2FyeSB0aGluZ3MgdGhhdCB3b3VsZCBoYXZlIG1hZGUgd2luYXBpXyoKCXBhcnNpbmcgbW9yZSBjb21wbGljYXRlZC4KCjIwMDEtMDctMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW4xNmRydi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywKCSAgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYzoKCUFkZGVkIEdldERldmljZUNhcHMgdG8gdGhlIERDIGRyaXZlciBpbnRlcmZhY2UuIFJlbW92ZWQgZGV2Q2FwcwoJcG9pbnRlciBpbiB0aGUgZ2VuZXJpYyBEQyBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCVJlbW92ZWQgdW51c2VkIERDX0ZVTkNTIHBvaW50ZXJzLgoKMjAwMS0wNy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQm9iIEdvb2R3aW4gPGdvb2RpZTFAcGFjYmVsbC5uZXQ+CglGaXggdGhlIDE2Yml0IHdpbjk1IHZlcnNpb24uCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUHV0IHRoZSBwZXIgcHJvamVjdCBwYXRocyBiZWZvcmUgdGhlIHdpbmUgcGF0aHMuCglSZW1vdmUgdW5uZWNlc3NhcnkgbGlicmFyaWVzIGZyb20gdGhlIHdpbmUgbGluayB0ZXN0LgoJTW92ZSBETExfTElOSyBmcm9tIGNvbmZpZ3VyZS5pbiB0byB0aGUgTWFrZS5ydWxlcyBmaWxlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb24ndCBjcmFzaCBpZiBEZXZpY2VDYXBhYmlsaXRpZXMoRENfUEFQRVJOQU1FUykgZmFpbHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYzoKCUFkZGVkIG1pc3NpbmcgbnRkbGwgaW1wb3J0cy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZHJpdmVyLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywKCSAgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWM6CglCdWlsZCB0aGUgREMgZnVuY3Rpb24gdGFibGUgYnkgdXNpbmcgR2V0UHJvY0FkZHJlc3Mgb24gdGhlIGdyYXBoaWNzCglkcml2ZXIgbW9kdWxlLiBNb3ZlZCBkcml2ZXIgc3VwcG9ydCB0byBkbGxzL2dkaS4KCjIwMDEtMDctMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWM6CglSZW1vdmVkIGltcG9ydCBvZiB4MTFkcnYgZnJvbSBkZHJhdy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGxvYWRlci9kb3MvZG9zbW9kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDbGVhbnVwL3JlbW92YWwgb2YgdW5uZXNzYXJ5IHRoaW5ncyB0aGF0IHdvdWxkIGhhdmUgbWFkZSB3aW5hcGlfKgoJcGFyc2luZyBtb3JlIGNvbXBsaWNhdGVkLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTW92ZWQgY29tbSByZWxhdGVkIHByb3RveXBlcyB0byB0aGUgY29ycmVjdCAuaCBmaWxlLgoJLSBDbGVhbmVkIHVwIHRoZSBpbmNsdWRlIHNlY3Rpb24uCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGluY2x1c2lvbiBvZiB3aW5udC5oIGJlY2F1c2UgdGhlIHBvcnRpbmcgbGF5ZXIgc2hvdWxkbid0CglpbmNsdWRlIFdpbmRvd3Mgc3BlY2lmaWMgc3R1ZmYuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmV3cml0ZSBUcnVlVHlwZSBmb250IG1ldHJpYyBwYXJzaW5nIGNvZGUuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jb25maWcucG0sCgkgIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlciwgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaS90eXBlLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXA6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQSBmZXcgbW9yZSBidWcgZml4ZXMKCS0gUmVvcmdhbml6YXRpb24gY29udGludWVzCgktIE5ldyB0b29sIChtYWtlX2ZpbHRlcikgZm9yIGZpbHRlcmluZyBtYWtlIG91dHB1dCBhZGRlZAoKCSogZGxscy9udGRsbC9taXNjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgdHlwby4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRG9uJ3QgaW5saW5lIHBlcmZlY3RfZ3JhcGhpY3MoKS4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9ob29rLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpZjE2MzIvdGh1bmsuYzoKCVJlbW92ZWQgYSBmZXcgdW5uZWNlc3NhcnkgQ2FsbG91dHMuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9jbGlwYm9hcmQuYywKCSAgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmM6CglBdm9pZCB1c2luZyBHZXRGYXN0UXVldWUxNiBmcm9tIFVTRVIuCgoJKiBkbGxzL3VzZXIvdGV4dC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJRnVsbHkgaW1wbGVtZW50IERyYXdUZXh0RXgqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJlIGEgYml0IG1vcmUgZ3JhY2VmdWwgb24gTlVMTCBwcm9wZXJ0eSBzaGVldCB0aXRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIE9uIFRCX1NFVElNQUdFTElTVCByZXRyaWV2ZSBuZXcgdmFsdWVzIG9mIHRoZSBiaXRtYXAgd2lkdGggYW5kCgkgIGhlaWdodCAoZml4ZXMgb3ZlcmxhcCBvZiBpbWFnZSBhbmQgdGV4dCBpbiBJRTQpLgoJLSBIYW5kbGUgcmV0dXJuIGNvZGVzIGZyb20gVEJOX0RST1BET1dOIChhbGxvd3MgYSAiZHJvcGRvd24iIHRvIGJlCgkgIHRyZWF0ZWQgbGlrZSBhIHJlZ3VsYXIgYnV0dG9uKS4KCS0gSW1wbGVtZW50IFRCTl9CRUdJTkRSQUcgYW5kIFRCTl9FTkREUkFHIGluIFdNX0xCVVRUT057RE9XTnxVUH0gKG5vdAoJICBuZWNlc3NhcnkgYnV0IGRvbmUgYnkgbmF0aXZlKS4KCS0gSW1wbGVtZW50IE5NX1JFTEVBU0VEQ0FQVFVSRSBhbmQgTk1fQ0xJQ0suCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIHZhbHVlcyB0byBkZXNjcmliZSByZXR1cm4gdmFsdWVzIGZyb20gV01fTk9USUZZIG9mIFRCTl9EUk9QRE9XTi4KCgkqIE1ha2UucnVsZXMuaW46CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQ29ycmVjdCBtYW4gcGFnZSBzcGVjIGRpcmVjdG9yeS4KCjIwMDEtMDctMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9yZWdpc3RyeS5jLAoJICBtc2Rvcy9kb3Nhc3BpLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvcmVnaW9uLmMsCgkgIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9kcml2ZXIuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLAoJICBpZjE2MzIvdGh1bmsuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5pbmV0L2Z0cC5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTJubHMuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsCgkgIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3N0YXRpYy5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9tcHIvbXByX21haW4uYywgY29udHJvbHMvY29tYm8uYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVzaW9uIG9mIGhlYXAuaC4KCjIwMDEtMDctMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvZW5obWV0YWZpbGUuaCwKCSAgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJUmVtb3ZlZCBlbmhtZXRhZmlsZS5oLiBTaW1wbGlmaWVkIEVOSE1FVEFGSUxFT0JKIHN0cnVjdHVyZSBhIGJpdC4KCgkqIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywKCSAgbG9hZGVyL21vZHVsZS5jLCBtc2Rvcy9pbnQyMS5jLCByZWxheTMyL3Nub29wLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvd2luZXBzL2FmbS5jLAoJICBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcGQuYywKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9kcml2ZXIuYywKCSAgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaWYxNjMyL3Nub29wLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCVJlbW92ZWQgSEVBUF9zdHJkdXBBLgoKCSogZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9kYXRhL2FnbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL2FnbC5oLCBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9vay5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9va09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWlPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywgZGxscy93aW5lcHMvbWthZ2wuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgYnVpbHQtaW4gZm9udCBkYXRhIHJlYWQtb25seS4KCgkqIG9iamVjdHMvZGN2YWx1ZXMuYzoKCUdvdCByaWQgb2YgYWxsIHRoZSB1Z2x5IG1hY3Jvcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNb2RpZnkgaW5pdCBjb2RlIHRvIGhhbmRsZSBjb25zdCBkYXRhIHR5cGVzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCU1vdmUgMTYtYml0IENPTU0gY29kZSB0byBVU0VSIGRsbC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsCgkgIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL3Njcm9sbC5jLAoJICBjb250cm9scy9zdGF0aWMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdORFBST0MgaGFuZGxlcnMgbm93IGNoZWNrIHdoZXRoZXIgSFdORCBhcmd1bWVudCBpcyB2YWxpZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9MRUFVVDMyLkRsbEdldENsYXNzT2JqZWN0IGFuZCBzdXBwb3J0IGZvciB0aGUgT2xlIFN0ZEZvbnQgYWRkZWQgKGp1c3QKCWdpdmluZyBiYWNrIGEgOCBwb2ludCBTeXN0ZW0gZm9udCBmb3Igbm93KS4KCgkqIG9iamVjdHMvZGN2YWx1ZXMuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCjIwMDEtMDctMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmgsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL29sZS5oLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tc3ZjcnQvY3BwLmMsCgkgIGRsbHMvbXN2Y3J0L2V4aXQuYywgZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHN1cmUgdGhhdCB0aGUgZmlsZXMgdGhhdCBjb250YWlucyB0aGUgZGVjbGFyYXRpb25zCgkgIG9mIHRoZSBpbXBsZW1lbnRhdGVkIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQuCgktIENvcnJlY3RlZCBtaXNtYXRjaGluZyBwcm90b3R5cGVzLgoJLSBDbGVhbmVkIHVwIHRoZSBpbmNsdWRlIHNlY3Rpb24uCgoJKiBkbGxzL3dpbmVwcy9mb250LmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVc2UgV2luZG93cyBtZXRyaWNzIGZvciBmb250IHNjYWxpbmcuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVlldCBhbm90aGVyIG1ham9yIHJlb3JnYW5pemF0aW9uIGFuZCBhIGZldyBuZXcgZmVhdHVyZXMuCgoJKiBmaWxlcy9maWxlLmMsIHNlcnZlci9maWxlLmM6CglCZXJuaGFyZCBSb3NlbmtyYWVuemVyIDxiZXJvQHJlZGhhdC5kZT4KCVNldCBleGVjdXRhYmxlIHBlcm1pc3Npb25zIHdoZW4gY3JlYXRpbmcgLmV4ZS8uY29tIGZpbGVzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXNzIGhhbmRsZSB0byBHZXRGaWxlVHlwZSwgbm90IE1TVkNSVCBmZC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXdyaXRlIEJ1aWxkQ29tbURDQjE2IHRvIGRlcGVuZCBvbiBCdWlsZENvbW1EQ0IsIG5vdCB2aWNlLXZlcnNhLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLCBkbGxzL3dpbmVwcy9ta2FnbC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJT25seSBpbmRleCBnbHlwaCBuYW1lcyB3aGVuIG5lY2Vzc2FyeS4KCgkqIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2Mvb3B0aW9ucy5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCB3aW5kb3dzL2NsYXNzLmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsCgkgIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsCgkgIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKMjAwMS0wNy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9kYXRhL2FnbC5jLCBkbGxzL3dpbmVwcy9kYXRhL2FnbC5oLAoJICBkbGxzL3dpbmVwcy9ta2FnbC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRWxpbWluYXRlIFVOSUNPREVWRUNUT1IgZGF0YSB0eXBlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmVfZ2wuaDoKCUNvbW1lbnRlZCBvdXQgcmVmZXJlbmNlcyB0byB4MTFkcnYgaW50ZXJuYWxzIGZyb20gTUVTQSBjb2RlLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9wZW4uYywKCSAgaW5jbHVkZS93aW4xNmRydi5oLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsCgkgIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wZW4uYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaDoKCVJlbW92ZWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gR0RJIGludGVybmFsIHBlbi9icnVzaC9mb250CglzdHJ1Y3R1cmVzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIElmIHRoZSBjbGFzcyBvZiB0aGUgd2luZG93IGlzIGEga25vd24gc3RhbmRhcmQsIHRoZW4gZm9ybWF0IHRoZSBuYW1lCgkgIG9mIHRoZSBXTV9VU0VSK25ubiBtZXNzYWdlcyBpZiBwb3NzaWJsZS4KCS0gRml4IGNhc2Ugd2hlcmUgdGhlIGNsYXNzbmFtZSByZXR1cm5lZCB3YXMgdHJ1bmNhdGVkIGFuZCBub3QgcHJpbnRlZAoJICBhdCBhbGwuCgktIElzc3VlIGVycm9ycyBpZiBlaXRoZXIgdGhlIE5vdGlmeSBvciBjb21tb24gY29udHJvbCBtZXNzYXNnZSBsaXN0cwoJICBhcmUgb3V0IG9mIG9yZGVyLgoJLSBQcmVwYXJlIHRvIGR1bXAgb3V0IGNvbnRyb2wgYmxvY2sgc3RydWN0dXJlcyBwb2ludGVkIHRvIGJ5IGxwYXJhbQoJICBmb3IgbWVzc2FnZXMuCgoJKiBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2JpdG1hcC5oLAoJICBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jLAoJICBkbGxzL2dkaS93aW5nLmM6CglNb3ZlZCB0aGUgMTYtYml0IHBvaW50ZXIgdG8gdGhlIERJQiBiaXRzIG91dCBvZiB0aGUgZHJpdmVyLXNwZWNpZmljCglzdHJ1Y3R1cmUgYW5kIGludG8gdGhlIG1haW4gYml0bWFwIHN0cnVjdHVyZS4gUmVtb3ZlZAoJQ3JlYXRlRElCU2VjdGlvbjE2IGZyb20gdGhlIGRyaXZlciBpbnRlcmZhY2UuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9oZWFwLmgsIHdpbmRvd3MvbWRpLmM6CglHb3QgcmlkIG9mIEhFQVBfc3RyZHVwVy4KCgkqIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLCBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBkYXRhIHN0cnVjdHVyZSBmcm9tIGZvbnQgbWV0cmljcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbGVGb250OjpJRGlzcGF0Y2g6Okludm9rZSBzdHViIGNhbiBqdXN0IHJldHVybiBTX09LLgoKMjAwMS0wNy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJVXNlIEFkanVzdFdpbmRvd1JlY3QgdG8gdHJhbnNsYXRlIFggdG8gd2luZG93IHJlY3RhbmdsZSBpbnN0ZWFkIG9mCglkdXBsaWNhdGluZyB3aGF0J3MgZG9uZSBpbiBub25jbGllbnQuYy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3Rpb25zIHRvIHRoZSBXaW45NSBhbmQgbGF0ZXIgZnJhbWUgZHJhd2luZyBjb2RlLgoKCSogd2luZG93cy93aW4uYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGRpdGlvbmFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHdpbmRvdyBzdHlsZXMgZHVyaW5nIHdpbmRvdyBjcmVhdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9zaGVsbDE2LmgsIG1lbW9yeS9hdG9tLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywKCSAgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9tc3ZpZGVvL3ZmdzE2Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBzdXJlIHRoYXQgdGhlIGZpbGVzIHRoYXQgY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucwoJICBvZiB0aGUgaW1wbGVtZW50YXRlZCBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkLgoJLSBDb3JyZWN0ZWQgbWlzbWF0Y2hpbmcgcHJvdG90eXBlcy4KCS0gQ2xlYW5lZCB1cCB0aGUgaW5jbHVkZSBzZWN0aW9uLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUFkZGVkIGEgZmV3IG1vcmUgZmlsZXMgdG8gdGhlIGluc3RhbGwgbGlzdC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVHJhY2UgcmVjdGFuZ2xlcyByZXR1cm5lZCBieSBHZXRDbGllbnRSZWN0IGFuZCBHZXRXaW5kb3dSZWN0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZWNhbGMgdGhlIHRvb2xiYXIgc2l6ZSBvbiBUQl9TRVRCVVRUT05TSVpFIGluIGNlcnRhaW4gY29uZGl0aW9ucy4KCS0gQWRkIHRyYWNlIHRvIHNob3cgdGhlIHBhaW50IHJlY3RhbmdsZSBwcmlvciB0byByZWZyZXNoaW5nLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4IGhhbmRsaW5nIG9mIHRleHQgY29sb3IuCgktIENvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgV01fU0VUUkVEUkFXIHRvIGJlIGNsb3NlciB0byBuYXRpdmUuCgktIERvIG1vcmUgaW1wbGVtZW50YXRpb24gb2YgUkJTX0FVVE9TSVpFIGluIHRoZSBXTV9TSVpFIHByb2Nlc3Nvci4KCS0gSW1wbGVtZW50IFJCQlNfVkFSSUFCTEVIRUlHSFQuIFVzZWQgYnkgSUU0LgoJLSBEbyBtb3JlIHRlc3RpbmcgaW4gV01fU0laRSB0byBoYW5kbGUgc3RyYW5nZSBjYXNlcyBsaWtlIG5hdGl2ZS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRGlzcGxheSByZWN0YW5nbGUgZnJvbSBXTV9OQ0NBTENTSVpFIG9uIGVudHJ5IGFuZCBleGl0LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IGNvbnZlcnNpb24gb2YgVyBzdHJ1Y3R1cmUgdG8gQSBzdHJ1Y3R1cmUgZHVyaW5nIG5vdGlmeS4KCgkqIFJFQURNRToKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVXBkYXRlIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgRnJlZUJTRC4KCVJlZmVyIHRvIFdpbmUgaW5zdGVhZCBvZiB3aW5lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmVwbGFjZSBzZXJ2aWNlIHRocmVhZCB3aXRoIFJlYWRGaWxlRXgvV3JpdGVGaWxlRXguCgoJKiBmaWxlcy9wcm9maWxlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ICd1bmRvY3VtZW50ZWQnIGJlaGF2aW91ciBvZiBHZXRQcml2YXRlUHJvZmlsZVN0cmluZy4KCjIwMDEtMDctMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCB1bnVzZWQgZmlsZS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgcmVvcmdhbmlzYXRpb24gYW5kIGEgZmV3IGJ1ZyBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBvdXQgb2YgdGhlIHNvdXJjZSB0cmVlIGJ1aWxkIChhZ2FpbikuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHNjaGVkdWxlci90aW1lci5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9yZWdpc3RyeS5jLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3ZpcnR1YWwuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLAoJICBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jOgoJTW92ZWQgc2VydmVyLmggdG8gaW5jbHVkZS93aW5lLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdW5pY29kZS5oLAoJICB0b29scy9tYWtlX3JlcXVlc3RzOgoJVXNlIHRoZSBuZXcgcHJvdG9jb2wuZGVmIGZpbGUgdG8gYnVpbGQgdGhlIHJlcXVlc3Qgc3RydWN0dXJlcy4KCURlZmluZSBwcm90b2NvbCBzdHJ1Y3R1cmVzIGluIGEgc2VwYXJhdGUgc2VydmVyX3Byb3RvY29sLmggZmlsZS4KCVJlbW92ZWQgX19XSU5FX1NFUlZFUl9fIGNoZWNrcyBub3cgdGhhdCBhbGwgaW5jbHVkZXMgYXJlIGluIHRoZSByaWdodAoJZGlyZWN0b3J5LgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlYWQvY2FsY3VsYXRlIGF2ZXJhZ2UgY2hhcmFjdGVyIHdpZHRoIGZvciBhbGwgZm9udHMuCglXb3JrIGRpcmVjdGx5IHdpdGggMTYtYml0IFdDSEFSczsgZG9uJ3QgY29udmVydCB0byBDUDEyNTIuCgoJKiBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIEhlbHZldGljYSBOYXJyb3cgYSBzZXBhcmF0ZSBmb250IGZhbWlseS4KCjIwMDEtMDctMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvaW50MjkuYywKCSAgbXNkb3MvcHBkZXYuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGVuLmMsCgkgIHdpbjMyL2ZpbGUuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywKCSAgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS90aW1lLmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLAoJICBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvdGFzay5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywKCSAgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvd3NwcmludGYuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHN1cmUgdGhhdCB0aGUgZmlsZXMgdGhhdCBjb250YWlucyB0aGUgZGVjbGFyYXRpb25zCgkgIG9mIGltcGxlbWVudGF0ZWQgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZC4KCS0gQ29ycmVjdGVkIG1pc21hdGNoaW5nIHByb3RvdHlwZXMuCgktIENsZWFuZWQgdXAgdGhlIGluY2x1ZGUgc2VjdGlvbi4KCgkqIG1lbW9yeS9hdG9tLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3NldHVwLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYWRkaXRpb25zIGFuZCBidWcgZml4ZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS93aW51c2VyLmg6CglSZWplY3QgcG9pbnRlciBtZXNzYWdlcyBpbiBTZW5kTm90aWZ5TWVzc2FnZVtBV10gYW5kCglTZW5kTWVzc2FnZUNhbGxiYWNrW0FXXS4gRml4ZWQgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvb2FpZGwuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3JwYy5oLAoJICBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgcnBjKi5oL3dpbmRvd3MuaC9vbGUyLmgganVzdCBsaWtlIHdpbmRvd3MuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJVXNlIEdldENvbW1TdGF0ZTE2IHRvIHNhdmUgc3RhdGUgaW4gT3BlbkNvbW0xNi4KCU1lcmdlIGNvbW0xNiBnbG9iYWxzIGludG8gb25lIHN0cnVjdHVyZS4KCgkqIHRvb2xzL2ZudDJiZGYuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTWFrZSB0aGUgZm9udCBuYW1lIGFuZCBzaXplIHNldHRpbmdzIHJlZmxlY3QgdGhlIGRhdGEgaW4gdGhlIGZvbnQgZmlsZQoJcmF0aGVyIHRoYW4gYXJiaXRyYXJ5IHZhbHVlcy4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNOT09QX0RvUmV0dXJuOiByZW1vdmUgcmVkdW5kYW50IHByaW50aW5nIG9mIHRpZC4KCjIwMDEtMDctMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluOiBVcGRhdGVkIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXdyaXRlIFNldENvbW1TdGF0ZTE2IHRvIHVzZSBTZXRDb21tU3RhdGUuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1vcmUgZGVzY3JpcHRpdmUgZXJyb3Igb24gYnVmZmVyIG92ZXJmbG93LgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBcyBmb3IgdGhlIGVkaXQgY29udHJvbCwgdGhlIHN0eWxlIG9mIHRoZSBib3JkZXJzIG9uIHRoZSBsaXN0IGNvbnRyb2wKCWlzIG1vZGlmaWVkIGluIHRoZSBkaWFsb2cgbG9hZGluZyBjb2RlLCBub3QgaW4gdGhlIGNvbnRyb2wgaXRzZWxmLgoKCSogb2xlL29sZTJubHMuYywgZGxscy91c2VyL3RleHQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHNvbWUgbW9yZSBvdmVyZmxvd2luZyBzdHJpbmcgdHJhY2VzLgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRHJhdyBNZW51QmFyIGluIHByb3BlciBwbGFjZSAoc29tZSBjYXNlcykuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTWFrZSBzdXJlIHVzZXIzMiBpcyBhbHdheXMgbG9hZGVkIGJlZm9yZSB4MTFkcnYuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhhbmRsZSBzcGFjZXMgcHJvcGVybHkgd2hlbiByZXN0YXJ0aW5nIHdpbmVsYXVuY2hlciBmb3IgZGVidWcuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNvbWUgJ2NhbGVuZGFyJyB0eXBvcy4uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgQ29tbWFuZExpbmVUb0FyZ3ZXIHByb3RvdHlwZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJUmVmcmVzaCBiaXRtYXAgY291bnQgdG8gdGFrZSBpbiBhY2NvdW50IGltYWdlbGlzdCBjaGFuZ2VzIGFmdGVyCglUQl9TRVRJTUFHRUxJU1QuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeGVkIHVuaWNvZGUgd2FybmluZy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgc2VydmVyL25hbWVkX3BpcGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgU1RBVFVTXyogY29uc3RhbnQgZm9yIG5hbWVkIHBpcGVzLiBSZXR1cm4gU1RBVFVTX1BJUEVfTk9UX0FWQUlMQUJMRQoJd2hlbiBvcGVuaW5nIGEgbmFtZWQgcGlwZSBpZiB0aGUgcGlwZSBleGlzdHMgYnV0IG5vIGluc3RhbmNlcyBvZiBpdCBhcmUKCWN1cnJlbnRseSB3YWl0aW5nIGZvciBhIGNvbm5lY3Rpb24uCgoyMDAxLTA3LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYzoKCUJhY2tlZCBvdXQgdGhlIHN1c3BlbmRfcHJvY2Vzc19mb3JfcHRyYWNlIGNoYW5nZS4KCUZpeGVkIGEgY291cGxlIG9mIHJhY2VzIGluIHB0cmFjZSBjb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIC1ycGF0aCBvcHRpb24gZnJvbSB0aGUgbGluayBjb21tYW5kLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZSBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBhZGRpdGlvbnMgYW5kIGJ1ZyBmaXhlcy4KCgkqIHdpbmRvd3MvZGNlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJldHRlciBMb2NrV2luZG93VXBkYXRlIGRlYnVnLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBzb21lIEZJWE1FKClzIHByaW50IHRoZSByZXNwZWN0aXZlIHN0cmluZ3MgcGFzc2VkLgoJQ2hhbmdlZCBTdGdTZXRUaW1lcygpIHRvIGNvcnJlY3QgdHlwZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBRdWFsaXR5IEJveCAocmVhZG9ubHkgY3VycmVudGx5KSBmb3IgMTZiaXQgdGVtcGxhdGVkIGRpYWxvZ3MuCglBZGRlZCBbUHJpbnRlcl0gYnV0dG9uIHN1cHBvcnQgaW4gMTZiaXQgdGVtcGxhdGVkIGRpYWxvZ3MuCglUcnkgc2VuZGluZyBvcmllbnRhdGlvbiBpY29uIHRvIHN0YzEwIHRvby4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgbW9zdCBvZiB0aGUgbnVtYmVycyB3aXRoIHRoZSBzeW1ib2xpYyBjb25zdGFudHMgb2YgdGhlIGRpYWxvZwoJaXRlbXMuCgoJKiBtc2Rvcy9wcGRldi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgY2xhaW0gdGhlIHBhcnBvcnQgZm9yIGV4Y2x1c2l2ZSBhY2Nlc3MgYW5kIHJlbGVhc2UgdGhlIHBvcnQKCWFmdGVyIGV2ZXJ5IGFjY2Vzcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXdyaXRlIEdldENvbW1TdGF0ZTE2IHVzaW5nIEdldENvbW1TdGF0ZS4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNOT09QX0dldFByb2NBZGRyZXNzOiBkb24ndCB0b3VjaCBhbHJlYWR5IGluaXRpYWxpemVkIGZ1bi1lbnRyaWVzLgoKMjAwMS0wNy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJUmVtb3ZlZCB1bnVzZWQgZnVuY3Rpb25zIHN1c3BlbmQvcmVtb3ZlX2FsbF90aHJlYWRzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvZm9udGVuZ2luZS5jLAoJICBtZW1vcnkvc3RyaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9wZW4uYywKCSAgb2JqZWN0cy9yZWdpb24uYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgb3ZlcmxhcHBlZCBjb21wbGV0aW9uIHJvdXRpbmVzLgoJRG9uJ3QgdXNlIGxwT3ZlcmxhcHBlZC0+T2Zmc2V0SGlnaCB0byBzdG9yZSBieXRlcyB0byB0cmFuc2Zlci4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBYIGNyYXNoIHdoZW4gcnVubmluZyBpbiBtYW5hZ2VkIG1vZGUuCgoJKiB1bmljb2RlL2Nhc2VtYXAuYywgdW5pY29kZS93Y3R5cGUuYywgdW5pY29kZS9jXzA0Mi5jLAoJICB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzI4NTk3LmMsCgkgIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywKCSAgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2OS5jLAoJICB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsCgkgIHVuaWNvZGUvY185NTAuYzoKCVJlZ2VuZXJhdGVkIGNvZGVwYWdlIGZpbGVzIHdpdGggVW5pY29kZSAzLjEgZGF0YS4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yYXNhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBhZGRpdGlvbnMgYW5kIGJ1ZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJR2V0IHdpbmVtYWtlciB0byBkcm9wIHRoZSB0cmFpbGluZyBDdHJsWiB0aGF0IGlzIHN0aWxsIHRvIGJlIGZvdW5kIG9uCglxdWl0ZSBhIGxvdCBvZiBET1MgZmlsZXMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUZpeGVkIGEgZmV3IGlzc3VlcyB3aXRoIHRzeDExIGxvY2tpbmcuCglBbHdheXMgbWFwIHRoZSBjbGllbnQgd2luZG93IHdoZW4gbW92aW5nIG91dCBvZiBpY29uaWMgc3RhdGUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURvbid0IGNhbGwgU05PT1BfUmVnaXN0ZXJETEwgb24gYnVpbHRpbnMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVtb3ZlZCB1bnVzZWQgT1NNZXNhIGxpbmtpbmcKCS0gcmVtb3ZlZCBPU01lc2EgY29kZQoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBDT01NX01TUlVwZGF0ZSB3aXRoIEdldENvbW1Nb2RlbVN0YXR1cy4KCjIwMDEtMDctMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaCwKCSAgaW5jbHVkZS9ycGNudGVyci5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQHlhaG9vLmNvbT4KCUFkZGVkIGEgYnVuY2ggb2YgZW50cnkgcG9pbnRzLgoJQWRkZWQgc29tZSBzdHVicyBhbmQgaGVhZGVyIGluZm9ybWF0aW9uLgoJRml4ZWQgc29tZSByZXR1cm4gY29kZXMuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTW9kaWZ5IHNvbWUgc3lzdGVtIG1ldHJpY3MgdG8gYWdyZWUgd2l0aCBXaW45NSBhbmQgcmVmbGVjdCB0aGUgZGVza3RvcAoJcmVnaXN0cnkgZW50cmllcy4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTZW1pc3R1YnMgZm9yIF9pc21iY2RpZ2l0LF9pc21iY3NwYWNlLF9tYnNsd3IsX21ic25iY21wLF9tYnNzcG4uCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQ1Yy5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsCgkgIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywKCSAgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MvbWRpLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsCgkgIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvY29kZXBhZ2UuYywKCSAgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3N0cmluZy5jLCBtaXNjL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93c29jazMyL3Byb3RvY29sLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsCgkgIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsCgkgIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL29sZWRsZy9vbGVkbGdfbWFpbi5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsCgkgIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLAoJICBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc3ZjcnQvbWFpbi5jLAoJICBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udC5jLAoJICBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCUFkZGVkIGRpc2Fzc2VtYmx5IGZvciAweDBmIDB4NXggb3Bjb2Rlcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci93aW5lZGJnLmM6CglCZXR0ZXIgZXJyb3IgcmVwb3J0aW5nIG9uIERlYnVnQWN0aXZlUHJvY2VzcyBmYWlsdXJlLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaDoKCVNtYWxsIGZpeGVzIHRvIHRoZSBkZWJ1Z2dlciBzdXBwb3J0LgoKCSogc2VydmVyL3F1ZXVlLmM6IE1lcmdlIFdNX01PVVNFTU9WRSBtZXNzYWdlcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93b3czMi5hcGksIHRvb2xzL3dpbmFwaS9jb25maWcucG0sCgkgIHRvb2xzL3dpbmFwaS9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS91dGlsLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFqb3IgcmVvcmdhbml6YXRpb24gYW5kIGNsZWFudXAuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IEZsdXNoQ29tbTE2IHdpdGggUHVyZ2VDb21tLgoKCSogY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IHRoZSBsb2NhdGlvbiBvZiB0aGUgc3R5bGUgcGF0Y2hpbmcgZm9yIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU3R1YiBzb21lIHJhc2FwaSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGF2ZSBJbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlIGFsd2F5cyByZXR1cm4gJ0xBTiBjb25uZWN0aW9uJy4KCjIwMDEtMDctMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU3RhcnQgaW1wbGVtZW50aW5nIG5hbWVkIHBpcGVzLgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJQWRkIHNobHdhcGkud3Zuc3ByaW50ZltBV10sIGhlYWRlciBpbmZvIGFuZCBjb21tZW50cy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLAoJICBpbmNsdWRlL3dpbnNvY2syLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgYSBzdHViIGZvciBXU0FSZWN2RnJvbS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglHZXRNZW51SXRlbUlEOiByZXR1cm4gLTEgZm9yIGludmFsaWQgbWVudSBpdGVtcywgbm90IHplcm8uCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmV3cml0ZSBFc2NhcGVDb21tRnVuY3Rpb24xNiB0byB1c2UgRXNjYXBlQ29tbUZ1bmN0aW9uLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQHlhaG9vLmNvbT4KCUNyZWF0ZUZpbGUgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHNlY3VyaXR5IGF0dHJpYnV0ZXMgaW4gX29wZW4uCgoJKiBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSAoR3xTKWV0Q2xpcExpc3Qgbm90IGFib3J0LCBidXQgcmV0dXJuIERERVJSX05PQ0xJUExJU1QuCglEbyBub3Qgc2Nyb2xsIEZJWE1FKClzIHRvbyBtdWNoLgoKMjAwMS0wNy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9vbGVhdXQzMi9wYXJzZWR0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgY29tbWVudCB0aGF0IGNvZGUgaXMgYnJva2VuLgoJLSBTaWxlbmNlZCBhbm5veWluZyBsb25nIHRlcm0gd2luYXBpX2NoZWNrIG1lc3NhZ2UuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkIHByb3BlciBjaGVjayBmb3IgZXhpc3RhbmNlIG9mIHN0cnVjdCBzb2NrYWRkciBtZW1iZXIgc2FfbGVuLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVXBkYXRlZCBwcmludGluZyBkb2N1bWVudGF0aW9uIGEgYml0LgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9nZGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlZGxnLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3F1YXJ0ei5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5tbS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93c29jazMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQHlhaG9vLmNvbT4KCUZpeCBzb21lIG9yZGluYWwgZm9yd2FyZGluZy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGQgc29tZSBhcmd1bWVudCB2YWxpZGF0aW9uIHRvIFNldE1lbnVJdGVtSW5mb0EsIHNvIFFUNSBkb2VzIG5vdAoJY29ycnVwdCBpdHMgbWVudXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBNb3ZlIGNyZWF0aW9uIHByb2Nlc3MgdG8gdGhlIFdNX05DQ1JFQVRFIG1lc3NhZ2UgbGlrZSBuYXRpdmUgYW5kIGZvcmNlCgkgIHN0eWxlcyBXU19WSVNJQkxFIGFuZCBDQ1NfVE9QLgoJLSBJbXBsZW1lbnQgbWVzc2FnZXMgV01fTkNISVRURVNULCBXTV9TVFlMRUNIQU5HRUQsIFJCX01PVkVCQU5ELAoJICBSQl9NSU5JTUlaRUJBTkQuCgktIEltcHJvdmUgcHJlZm9ybWFuY2UgYnkgcmVtb3ZpbmcgY2FsbHMgdG8gR2V0V2luZG93TG9uZyBmb3IgR1dMX1NUWUxFCgkgIChieSBzYXZpbmcgc3RhdGUgYW5kIGhhbmRsaW5nIFdNX1NUWUxFQ0hBTkdFRCkuCgktIENsZWFudXAgYW5kIHJlbW92ZSBkZWFkIGFuZCB0ZXN0IGNvZGUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvcnJlY3QgYW1vdW50IG9mIGluZm8gZGlzcGxheWVkIGZvciBOTV9OQ0hJVFRFU1QgYW5kIGFsbCB0aGUgTFZOXyouCgoJKiBjb250cm9scy91aXRvb2xzLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgbW9yZSBjb2xvdXJzIHNvIHRoYXQgRHJhd0VkZ2Ugd29ya3MgZm9yIG1vcmUgY2FzZXMuCgoJKiBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIG1pc3NpbmcgSUlEcy4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgUmVhZEZpbGVFeCBhbmQgV3JpdGVGaWxlRXggKGxwT3ZlcmxhcHBlZENvbXBsZXRpb24gcm91dGluZQoJaXMgbm90IHN1cHBvcnRlZCB5ZXQuLi4pCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJVXNlIEhBTkRMRXMgaW5zdGVhZCBvZiB1bml4IGZkcy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAtLWxpc3QgZmFjaWxpdHkgdG8gbGlzdCBpbnN0YWxsZWQgcHJvZ3JhbXMuCglBZGQgLS1yZW1vdmUgeHh4IGZhY2lsaXR5IHRvIHJlbW92ZSBhIHNwZWNpZmljIHByb2dyYW0uCgoyMDAxLTA3LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvc3RyaW5nLmMsCgkgIG1pc2MvZXJyb3IuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3N5c3RlbS5jLCBtaXNjL3ZlcnNpb24uYywKCSAgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3RleHQuYywgc2NoZWR1bGVyL3N5bmNocm8uYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2JpdGJsdC5jLAoJICBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvZm9udGVuZ2luZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgbG9hZGVyL3Rhc2suYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywKCSAgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLAoJICBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLAoJICBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy92ZXJzaW9uL3ZlcjE2LmMsCgkgIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsCgkgIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X21haW4uYywgZGxscy93aW5tbS9kcml2ZXIuYywKCSAgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vc291bmQxNi5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy91c2VyL2JpZGkxNi5jLAoJICBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL2xzdHIuYywKCSAgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdGh1bmsuYywKCSAgZGxscy91c2VyL3dzcHJpbnRmLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywKCSAgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsCgkgIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZ2RpL2JpZGkxNi5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS90aHVuay5jLCBkbGxzL2dkaS93aW5nLmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3RyaW5nLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLAoJICBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZjcnQvaGVhcC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgcXVhcnR6LmRsbC4KCgkqIHdpbjMyL2ZpbGUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglEZWNsYXJlIHN0dWJzIGZvciBSZWFkRmlsZUV4LCBXcml0ZUZpbGVFeC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYW1hdWRpby5oLCBpbmNsdWRlL2FtdmlkZW8uaCwKCSAgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBkc2hvdyBoZWFkZXJzLgoKCSogZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL01ha2VmaWxlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGludGVyIGRsbCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3RkY2FsbC0+Y2RlY2wgdGh1bmtzIGZvciBpbmV0X25ldHdvcmsgYW5kIGdldG5ldGJ5bmFtZS4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBQUk9GSUxFXyogZnVuY3Rpb25zIGJ5IFJlZyouCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUkJCU19GSVhFRFNJWkUgc2hvdWxkIG5vdCBhZmZlY3QgX0FkanVzdEJhbmRzIChmb3VuZCBieSBNaWtlIE1jQ29ybWFjawoJaW4gV2luWmlwKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUZpeCBidXR0b24gdGV4dCBwbGFjZW1lbnQgZm9yIGRpc2FibGVkIGJ1dHRvbnMgKHNlZSBXaW56aXAgOC4wKS4KCgkqIGluY2x1ZGUvdXJsbW9uLmg6CglOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KCUFkZGVkIElCaW5kSG9zdCwgSVdpbkluZXRJbmZvLCBJV2luSW5ldEh0dHBJbmZvIGNsYXNzIGRlZmluaXRpb25zLAoJQklOREYsIEJJTkRTVEFUVVMgc3RydWN0cy4KCgkqIGRsbHMvZ2RpL2Rpc3BkaWIuc3BlYywgZGxscy9nZGkvd2luZy5zcGVjLCBkbGxzL2tlcm5lbC9zdHJlc3Muc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZGkuYywgY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugc29tZSAxNi1iaXQgY2FsbHMgYnkgdGhlaXIgMzItYml0IGVxdWl2YWxlbnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJlbWVtYmVyIHJlc3BvbnNlIGZyb20gTFZOX0dFVERJU1BJTkZPIGlmIHVzZXIgc2V0cyBMVklGX0RJX1NFVElURU0uCgoJKiBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbmlzaCB3aW4zMnMgc2VwYXJhdGlvbi4KCjIwMDEtMDYtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTA2MjkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDYtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgY29uZmlndXJlOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAnbWFrZSBkZXBlbmQnIGZvciBvdXQgb2YgdGhlIHNvdXJjZSB0cmVlIGJ1aWxkLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1pc3NpbmcgY29uZmlnLmggaW5jbHVkZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBTZXRXaW5kb3dQb3MgY2FsbCBpbiBTZXRXaW5kb3dSZ24uCgoJKiBSRUFETUU6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L3duZC5jLAoJZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsCglkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCWRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3Mvd2luLmMsCgl3aW5kb3dzL3dpbnBvcy5jOgoJTW92ZWQgRm9yY2VXaW5kb3dSYWlzZSB0byB0aGUgVVNFUiBkcml2ZXIgYW5kIHJlbW92ZWQgdGhlIFdORCBkcml2ZXIuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJRml4ZWQgaGFuZGxpbmcgb2YgV01fTU9VU0VXSEVFTCBtZXNzYWdlcyBpbiBub24tY2xpZW50IHNwYWNlLgoKMjAwMS0wNi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLAoJICBjb250cm9scy9tZW51LmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIG1zZG9zL2lvcG9ydHMuYywgb2JqZWN0cy9iaXRtYXAuYywKCSAgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywKCSAgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gbmFtZSBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzdWJ0bGUgY29uZmlndXJlIGJ1ZyBjb25jZXJuaW5nIE9wZW5HTC4KCUZvdW5kIG9uIEZyZWVCU0QgKHdoaWNoIGhhcyBPcGVuR0wgaW4gL3Vzci9YMTFSNi9saWIpLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBjb250cm9scy9lZGl0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUltcHJvdmVkIGhhbmRsaW5nIG9mIHN0eWxlcyBpbiB0aGUgZWRpdCBjb250cm9sLCBpbmNsdWRpbmcgZGV0ZWN0aW5nCgljaGFuZ2VzIG9mIHN0eWxlIGFuZCBjb3JyZWN0aW5nIGhhbmRsaW5nIG9mIGluY29uc2lzdGFudCBzdHlsZXMuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJubHMuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaW5pc2ggb2xlMzIgc2VwYXJhdGlvbi4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3F1ZXVlLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCS0gUmVtb3ZlIGNvb2tlZCBoYXJkd2FyZSBtZXNzYWdlcyB3aGVuIHRoZXkgYXJlIGRyb3BwZWQgKHJlcG9ydGVkIGJ5CgkgIEdlcmFyZCBQYXRlbCkuCgktIENvbnZlcnQgYWxsIHBvc3RlZCAzMi1iaXQgbWVzc2FnZXMgdG8gVW5pY29kZSBiZWZvcmUgc3RvcmluZyB0aGVtIGluCgkgIHRoZSBxdWV1ZS4KCS0gRmFzdGVyIGltcGxlbWVudGF0aW9uIG9mIE1TR19Jc1BvaW50ZXJNZXNzYWdlLgoJLSBNb3ZlZCBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgZnJvbSBxdWV1ZS5jIHRvIG1lc3NhZ2UuYy4KCjIwMDEtMDYtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvZWxmLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbjoKCVB1dCBBQ19ERUZJTkUgc3ltYm9scyBkZWZpbml0aW9ucyBkaXJlY3RseSBpbiB0aGUgY29uZmlndXJlIHNjcmlwdCBzbwoJdGhhdCB3ZSBubyBsb25nZXIgbmVlZCBhbiBhY2NvbmZpZy5oLiBDbGVhbmVkIHVwIGRsb3BlbigpIHRlc3RzIGEgYml0LgoKCSogbWlzYy9jcHUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4IG1pc2xlYWRpbmcgUDQgd2FybmluZyBtZXNzYWdlIGFwcGVhcmluZyBldmVuIGluIGNhc2Ugb2YgbWF0Y2guCgoyMDAxLTA2LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBZGRlZCB3aW5kb3cgcHJvcGVydGllcyB0byBtYWtlIHNvbWUgeDExZHJ2LXNwZWNpZmljIGluZm9ybWF0aW9uCglhdmFpbGFibGUgdG8gaGlnaGVyIGxldmVsIGNvZGUuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2lvcG9ydHMuYywKCSAgbXNkb3MvcHBkZXYuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCAvZGV2L3BhcnBvcnQgc3VwcG9ydCBmb3IgZGlyZWN0IHBvcnQgYWNjZXNzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglNYWtlIHRoZSB2aXNpYmxlIHJlZ2lvbiBlbXB0eSBmb3Igbm9uLXZpc2libGUgd2luZG93cy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBvbmUgbW9yZSBQUk9GSUxFXyBmdW5jdGlvbiBieSBSZWdRdWVyeVZhbHVlRXhBLgoKCSogZGxscy93aW5lcHMvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHNvbWUgMTYtYml0IGNhbGxzIGJ5IHRoZWlyIDMyLWJpdCBlcXVpdmFsZW50cy4KCjIwMDEtMDYtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglEb24ndCBjb21waWxlIHZtODYtc3BlY2lmaWMgY29kZSBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IGl0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfWmgucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLAoJICBkbGxzL2tlcm5lbC9ubHMvY2h0Lm5scywgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfWmgucmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUphdS1Ib3JuZyBDaGVuIDxiNjUwMjAwMkBlZS5udHUuZWR1LnR3PgoJQWRkZWQgVHJhZGl0aW9uYWwgQ2hpbmVzZSBTdXBwb3J0CglGaXhlZCBzdWJsYW5nIGZvbnQgc2l6ZSBlcnJvciB3aGVuIG5vdCB1c2luZyBmaXhlZC1zaXplIGZvbnQuCgoJKiBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywKCSAgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBzb21lIDE2LWJpdCBjYWxscyBieSB0aGVpciAzMi1iaXQgZXF1aXZhbGVudHMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLAoJICBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglJbXBsZW1lbnRlZCBTZW5kSW5wdXQoKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgc2VwYXJhdGUgdGhlIFhTaG0gdXNpbmcgY29kZS4KCjIwMDEtMDYtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cmMvcGFyc2VyLnk6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUFkZCBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIGJ5YWNjIChhZ2FpbikuCgoJKiB0b29scy9leGFtaW5lLXJlbGF5OgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmb3IgbmV3IHJlbGF5IGZvcm1hdC4gYWRkZWQgdGhyZWFkIGtub3dsZWRnZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBzdXBwb3J0IGZvciBXTV9OT1RJRllGT1JNQVQgYW5kIHN1cHBvcnQgYm90aCBBTlNJIGFuZCBVTklDT0RFCgkgIG5vdGlmeSBmb3JtYXRzLgoJLSBNb3ZlIHRoZSBkcmF3aW5nIG9mIHRoZSBiYW5kIGJhY2tncm91bmRzIGFuZCBiYW5kIHNlcGFyYXRvcnMgdG8gdGhlCgkgIFdNX0VSQVNFQktHTkQgcHJvY2Vzc2luZyBqdXN0IHRoZSB3YXkgdGhlIG5hdGl2ZSBjb250cm9scyBkby4KCS0gSW1wbGVtZW50IFdNX1NFVFJFRFJBVy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4IG1lbW9yeSBsZWFrcy4KCS0gQWRkIHN1cHBvcnQgZm9yIFdNX05PVElGWUZPUk1BVCBhbmQgc3VwcG9ydCBib3RoIEFOU0kgYW5kIFVOSUNPREUKCSAgbm90aWZ5IGZvcm1hdHMuCgktIEZpeCBzb21lIGRyYXdpbmcgaXNzdWVzIHdpdGggQ09NQk9FWF9EcmF3SXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIHRlc3Qgc28gMHhmZmZmZmZmZiBpcyBwcm9wZXJseSByZWNvZ25pemVkLgoKMjAwMS0wNi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBSZWdpc3RlcmVkT3duZXIgYW5kIFJlZ2lzdGVyZWRPcmdhbml6YXRpb24uCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgc29tZSBkZWZpbmVzIGZvciBwcm9jZXNzIHNlY3VyaXR5IHRva2Vucy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgbWlzYy9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBtaXNjL2NwdS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHZXRTeXN0ZW1JbmZvKCkgUGVudGl1bSA0IHN1cHBvcnQuCgoJKiBzZXJ2ZXIvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJlbW92ZSB0cnVuY2F0ZSBkZWJ1ZyBtZXNzYWdlIHByaW50ZWQgb24gc3VjY2Vzc2Z1bCB0cnVuY2F0ZXMuCgoJKiBpbmNsdWRlL2RkZS5oLCBpbmNsdWRlL2RkZW1sLmgsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsCgkgIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZGRlbWwxNi5oLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1lcmdlIGZyb20gQ29yZWwgdHJlZS4gQ29udHJpYnV0b3JzIGFyZToKCS0gQ29yZWwgKFNlYW4gTGFuZ2xleSwgTWljaGFlbCBBYmQtRWwtTWFsZWssIFJpY2sgTXV0emtlLCBCaWxsIFhpbmcpCgktIE1hY2FkYW1pYW4gb24gYmVoYWxmIG9mIENvcmVsIChMb3Vpcy1QaGlsaXBwZSBHYWdub24sIEplYW4tQ2xhdWRlIEJhdGlzdGEpCglBbHNvIGFkZGVkIGEgZmV3IGJpdHM6CgktIENvbXBsZXRlIHdpbmRvdyBtb2RlbCBmb3Igc2V2ZXJhbCBpbnN0YW5jZXMgYW5kIGNvbnZlcnNhdGlvbnMuCgktIFN1cHBvcnQgZm9yIGFzeW5jaHJvbm91cyB0cmFuc2FjdGlvbnMuCgktIEZpeGVkIHNvbWUgY29kZSAoV01fRERFX1JFUVVFU1QsIFdNX0RERV9BRFZJU0UsIFdNX0RERV9SRVFVRVNUKSBoYW5kbGluZy4KCS0gU3VwcG9ydCBmb3Igd2lsZCBjb25uZWN0aW9ucy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG9uJ3QgcmVseSBvbiBYIHRvIGV4cG9zZSB3aW5kb3dzIGNvdmVyZWQgYnkgYSBzaWJsaW5nLCBkbyBpdAoJbWFudWFsbHkuCgoyMDAxLTA2LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS91c2VyLmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1ha2UgR2V0Q3Vyc29yUG9zIGNhbGwgWFF1ZXJ5UG9pbnRlci4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS90aHJlYWQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRXh0ZW5kZWQgX193aW5lX2VudGVyX3ZtODYgdG8gaGFuZGxlIHBlbmRpbmcgaW50ZXJydXB0cy4KCjIwMDEtMDYtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2lucG9zLmgsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmM6CglBdm9pZCByZXR1cm5pbmcgYW4gdW5sb2NrZWQgd2luZG93IHBvaW50ZXIgZnJvbSBXSU5QT1NfV2luZG93RnJvbVBvaW50LgoJUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZCByb3V0aW5lcy4KCgkqIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTIuYywKCSAgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50MWEuYywgbXNkb3MvaW50MjAuYywKCSAgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50MmYuYywKCSAgbXNkb3MvaW50M2QuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvaW50NGIuYywgbXNkb3MvaW50ZXJydXB0cy5jLAoJICBtc2Rvcy92eGQuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvcmVnaW9uLmMsCgkgIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgbG9hZGVyL21vZHVsZS5jLAoJICBtZW1vcnkvY29kZXBhZ2UuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgbWlzYy9vcHRpb25zLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLAoJICBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC9zdHJpbmcuYywKCSAgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgY29udHJvbHMvbWVudS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2luLmgsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIHF1ZXVlIHBhaW50IGNvdW50IHRvIHRoZSBzZXJ2ZXIuIFJlbW92ZWQgYSBmZXcgbm8gbG9uZ2VyIHVzZWQKCXJvdXRpbmVzLgoKCSogZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsCgkgIGRsbHMvdXNlci91c2VyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbm1tLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJLSBGaXggdW5pbml0aWFsaXNlZCB2YXJpYWJsZSBwcm9ibGVtIGluIERJUiBjb21tYW5kLgoJLSBDb3JyZWN0IHNvbWUgY29tbWVudHMuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUNsaXAgcGFyZW50IGNsaWVudCBhcmVhIHdoZW4gdXNpbmcgdGhlIGRyYXdhYmxlIGZyb20gYSBoaWdoZXIgbGV2ZWwKCXBhcmVudC4KCgkqIGRsbHMveDExZHJ2L3Njcm9sbC5jOiBGaXhlZCByZWdpb24gbGVhay4KCgkqIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jOgoJU3VidHJhY3QgREMgb3JpZ2luIGZyb20gZ3JhcGhpY3MgZXhwb3N1cmUgZXZlbnQgY29vcmRpbmF0ZXMuCgoyMDAxLTA2LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsIGluY2x1ZGUvcXVldWUuaCwKCSAgaW5jbHVkZS9zZXJ2ZXIuaDoKCU1vdmVkIGhhcmR3YXJlIG1lc3NhZ2UgcXVldWUgaGFuZGxpbmcgdG8gdGhlIHNlcnZlci4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6CglJZ25vcmUgRUFHQUlOIGVycm9ycyBpbiByZWFkX3JlcXVlc3QuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLAoJICBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5pbmV0L2Z0cC5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vc291bmQxNi5jLCBkbGxzL3dpbm1tL3RpbWUuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3R0eWRydi91c2VyLmMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9oYXNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21wci9hdXRoLmMsCgkgIGRsbHMvbXByL211bHRpbmV0LmMsIGRsbHMvbXByL25wcy5jLCBkbGxzL21wci9wd2NhY2hlLmMsCgkgIGRsbHMvbXByL3duZXQuYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL250LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGYWlscyBtYXBwZXIgb3BlbmluZyB3aGVuIG5vIG1pZGkgb3V0IGRldmljZXMgYXJlIHByZXNlbnQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVncyBpbiBvdXRwdXQgZnVuY3Rpb25zIChhc2NlbmQsIGNyZWF0ZUNodW5rKS4KCUNsZWFuZWQgdXAgdHJhY2UgbWVzc2FnZXMuCglGaXhlZCBzb21lIG1taW9PcGVuIGZpbGUgbmFtZSBwYXJzaW5nLgoKCSogaW5jbHVkZS91cmxtb24uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQlNDRiBlbnVtIGRlZmluZXMgZmxhZ3MsIG5vdCBhbiBlbnVtZXJhdGlvbi4KCgkqIG1zZG9zL3ZnYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIERPUyBWR0EgZGlzcGxheSBhZ2FpbiB3aXRoIGxhc3QgbW9udGhzIEREUkFXIHVwZGF0ZXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgU3lzdGVtIGZvbnQgdG8gdGhlIHNldCBvZiBkZWZhdWx0IHNhbnMgc2VyaWYgZm9udHMuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUZpeGVkIG9uZSBtb3JlIGJ1ZyBpbiBjbGlwX2NoaWxkcmVuLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLAoJICBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQsIGNsZWFuZWQgdXAgYW5kL29yIGRvY3VtZW50YXRlZCBfe2JlZ2luLGVuZH10aHJlYWR7LGV4fS4KCS0gX2xmaW5kIGFuZCBfbHRvdyBhcmUgaW1wbGVtZW50ZWQgKG5vdCBzdHVicykuCgoJKiBkbGxzL21zdmNydC93Y3MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBfdWx0b3cgc2luY2UgaXQgaXMgZm9yd2FyZGVkIHRvIE5URExMIGluIHRoZQoJLnNwZWMgZmlsZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEdldENvbW1Db25maWcgbnVtYmVyIG9mIGFyZ3VtZW50cy4KCgkqIE1ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCXdpbmUgbmVlZHMgdG8gYmUgYnVpbHQgYmVmb3JlIHdpbmVkYmcuCgoJKiBpZjE2MzIvcmVsYXkuYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3ByZXByb2Nlc3Nvci5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWZpbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93MzJza3JubC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93b3czMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93c29jazMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBTbGlnaHRseSBiZXR0ZXIgaGFuZGxpbmcgb2YgZXh0ZXJuYWwvaW50ZXJuYWwgbmFtZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBQUk9GSUxFXyBmdW5jdGlvbnMgYnkgUmVnUXVlcnlWYWx1ZUV4QSBpbiB4MTFkcnYuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVNldEZpbGVQb2ludGVyIGNvcnJlY3Rpb247IHJldHVybiBFUlJPUl9ORUdBVElWRV9TRUVLIChicm9rZW4gYnkgdGhlCgk2NCBiaXQgZmlsZSBhY2Nlc3MgZW5oYW5jZW1lbnQpLgoKCSogY29uZmlndXJlLmluLCB0b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL2NvbmZpZy5zdWIsIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3VwcG9ydCBmb3IgYXV0b2NvbmYgMi41MC4KCjIwMDEtMDYtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCWNsaXBfY2hpbGRyZW46IGRvbid0IGNyYXNoIGlmIGNoaWxkIGlzIG5vdCBpbiBsaXN0IChjYW4gaGFwcGVuIG9uCglXTV9OQ0NSRUFURSkuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglVc2UgY2xvbmUoKSBpZiBIQVZFX0NMT05FIGlzIGRlZmluZWQuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUJsb2NrIFNJR0lOVCBhbmQgU0lHQUxSTSBpbiBzaWduYWwgaGFuZGxlcnMuCgoyMDAxLTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIGRpcmVjdCBzeXN0ZW0gY2FsbCBmb3IgdW5hbGlnbmVkIG1tYXAgc3VwcG9ydCBvbiBMaW51eC4KCVN1cHBvcnQgNjQtYml0IGZpbGUgb2Zmc2V0cyBpbiBNYXBWaWV3T2ZGaWxlRXguCgoJKiBvbGUvb2xlMm5scy5jLCBtaXNjL2xzdHIuYywgbWlzYy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2xzdHIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIElzQ2hhckFscGhhQSBhbmQgSXNDaGFyQWxwaGFOdW1lcmljQSB0byB1c2VyMzIuCglCZXR0ZXIgaW1wbGVtZW50IHNvbWUgb2YgdXNlcjMyICpDaGFyKiBmdW5jdGlvbnMgcmVnYXJkaW5nIGxvY2FsZS4KCVJlbW92ZSBrZXJuZWwzMiBkZXBlbmRlbmN5IG9uIHVzZXIzMi4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBmb3IgSW50ZXJuZXRHZXRDb29raWVBLgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBtb3JlIFBST0ZJTEVfIGZ1bmN0aW9ucyBieSBSZWdRdWVyeVZhbHVlRXhBLgoKCSogb2JqZWN0cy9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTXVsdGlwbGUgKnB0cisrIGNvbnN0cnVjdHMgaW4gb25lIGV4cHJlc3Npb24gaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3VyLAoJbW92ZWQgdGhlbSBvdXQgb2YgdGhlIGV4cHJlc3Npb24uCgoyMDAxLTA2LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZGV2aWNlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL25ld2Zucy5jLAoJICBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcGlwZS5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywgd2luMzIvY29uc29sZS5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtZW1vcnkvYXRvbS5jLAoJICBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsCgkgIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIG1lbW9yeS9zdHJpbmcuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbWlzYy9sc3RyLmMsCgkgIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MvdmVyc2lvbi5jLCBvbGUvb2xlMm5scy5jLAoJICBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBmaWxlcy90YXBlLmMsCgkgIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBsb2FkZXIvdGFzay5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLAoJICBkbGxzL2tlcm5lbC9zdHJpbmcuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMva2VybmVsL3V0dGh1bmsuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzICh1c2luZyB3aW5hcGlfZml4dXApLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglVc2UgdGhlIHRvcG1vc3QgcGFyZW50IHRoYXQgaXNuJ3QgY2xpcHBpbmcgY2hpbGRyZW4gYXMgZHJhd2FibGUsCgl0byBtYWtlIHN1cmUgcGFyZW50IHNpYmxpbmdzIGFyZSBub3QgY2xpcHBlZC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIENob29zZUZvbnRXIHVzZSBDaG9vc2VGb250QS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglGb3JjZSBpbnZhbGlkYXRpbmcgb2Ygc2libGluZ3MgY2hpbGRyZW4gb24gZXhwb3NlIGV2ZW50LgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaS9zZXR1cC5wbSwKCSAgdG9vbHMvd2luYXBpL3V0aWwucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBOZXcgY29tbW9uIGNvZGUgZm9yIHRoZSB3aW5hcGkgdG9vbHMuCgktIE5ldyB0b29sIGZvciBleHRyYWN0aW5nIHNvdXJjZSBjb2RlIGluZm9ybWF0aW9uLgoJLSBOZXcgdG9vbCBmb3IgYXV0b21hdGljYWxseSBtb2RpZnlpbmcgKGZpeGluZykgdGhlIHNvdXJjZSBjb2RlLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIFBST0ZJTEVfR2V0V2luZUluaVN0cmluZyBieSBSZWdRdWVyeVZhbHVlRXhBLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS93aW5lcnJvci5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgSUtzUHJvcGVydHlTZXQsIHNtYWxsIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yCglJRGlyZWN0U291bmQzREJ1ZmZlci4gRml4ZWQgb25lIHBvaW50ZXIgcmVmZXJlbmNlLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCV90enNldCBqdXN0IGZvcndhcmRzIHRvIGxpYmMgdHpzZXQoKS4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBhZ2FpbnN0IGEgZHJpdmVyIG1pc2NvbmZpZ3VyYXRpb24uCgoyMDAxLTA2LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglGaXhlZCBoYW5kbGluZyBvZiB6ZXJvLXNpemVkIGNsaWVudCB3aW5kb3cuCglDcmVhdGUgdGhlIFggd2luZG93cyBiZWZvcmUgc2VuZGluZyBXTV9OQ0NSRUFURS4KCjIwMDEtMDYtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQWRkZWQgY291bnRlciBmb3Igb3BlcmF0aW9ucyBnZW5lcmF0aW5nIGdyYXBoaWNzIGV4cG9zdXJlcyB0byB0aGUgREMKCXN0cnVjdCwgdG8gYXZvaWQgd2FpdGluZyBmb3IgZXhwb3NlIGV2ZW50cyB3aGVuIG5vbmUgd2VyZSBnZW5lcmF0ZWQuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZ3JhcGhpY3MvZHJpdmVyLmMsIG1pc2MvY3B1LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvZ2x1MzIvZ2x1LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsCgkgIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsCgkgIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzICh1c2luZyB3aW5hcGlfZml4dXApLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzogV2FybmluZyBmaXguCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9hdmlmaWxlLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWZpbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dsdTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21pZGltYXAuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93bmFzcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGlhcyBhbmQgRGV2aWNlIFR5cGUgYXJlIGNhc2UgaW5zZW5zaXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBjb3JyZWN0IHJlYmFyIHdpbmRvdyBib3JkZXJzIGFuZCBoYW5kbGluZyBvZiBSQlNfQk9SREVSUywgbm93CgkgIG1hdGNoZXMgbmF0aXZlLgoJLSBtYWpvciByZWRlc2lnbiBvZiBiYW5kIGxheW91dCwgbm93IGNvbWVzIGEgbG90IGNsb3NlciB0byBuYXRpdmUgZm9yCgkgIHRoZSB0ZXN0IHByb2dyYW1zLgoJLSBzdXBwb3J0IFJCU19WQVJIRUlHSFQgZm9yIGJvdGggb24gYW5kIG9mZi4KCS0gYmV0dGVyIGRlYnVnIGluZm8sIGFuZCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudAoKMjAwMS0wNi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJQm9iIEdvb2R3aW4gPGdvb2RpZTFAcGFjYmVsbC5uZXQ+CglNYXNrIG91dCBnYXJiYWdlIGluIHRoZSB1cHBlciBoYWxmIG9mIHN0YWNrIHBvaW50ZXIuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy91c2VyL3RleHQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUxpbWl0IG91dHB1dCBmb3IgY2VydGFpbiB0ZXh0IGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGNoZWNrIGZvciBicm9rZW4gbW1hcDY0LgoKCSogZGxscy9tYWtlX2RsbHM6CglBZGRlZCBzY3JpcHQgdG8gdXBkYXRlIGRsbHMgZGVwZW5kZW5jaWVzLgoKCSogY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dsdTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvZ2x1LmMsIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYywKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgZ2x1MzIuZGxsIGFzIGxpYkdMVS5zbyBmb3J3YXJkZXIuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2RjZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYzoKCVJlbW92ZWQgV0lOX05BVElWRSBmbGFnLgoKCSogcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVUxBUkdFX0lOVEVHRVIgbWF5IGhhdmUgYSBkdW1teSBzdHJ1Y3QgbmFtZS4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZ3JhZGUgT3BlbkdMIHRodW5rcyB3aXRoIGxhdGVzdCBpbmZvcm1hdGlvbnMgZnJvbSBPcGVuR0wgc3BlYyBmaWxlLgoKMjAwMS0wNi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmM6CglSZW1vdmVkIHVubmVlZGVkIGluY2x1c2lvbiBvZiBxdWV1ZS5oLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU3VwcG9ydCBmb3Igc3BlY2lmeWluZyBzdGFjayBzaXplIG9mIFdpbmVsaWIgYXBwcy4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvY29tZW50cnkuYywKCSAgZGxscy9hdmlmaWwzMi9pYWZpbGUuYywgZGxscy9hdmlmaWwzMi9pYXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2lnZnJhbWUuYywgZGxscy9hdmlmaWwzMi9tYWluLmMsCgkgIGRsbHMvYXZpZmlsMzIvc3RyaW5nLmMsIGluY2x1ZGUvdmZ3Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgc29tZSBwYXJ0IG9mIEFWSUZJTDMyLgoKCSogdG9vbHMvd2luZWNvbmY6CglEb25uIE1pbGxlciA8ZG1taWxsZXJAY3Z6b29tLm5ldD4KCUNhc2UgaW5zZW5zaXRpdmUgc2VhcmNoIGZvciB3aW4uaW5pLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIEdldFF1ZXVlZENvbXBsZXRpb25TdGF0dXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeGVzIHRvIEZyZW5jaCB0cmFuc2xhdGlvbiBvZiBjb21tb24gZGlhbG9nIG1lc3NhZ2VzLgoKMjAwMS0wNi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCB0aGUgb3V0ZXIgY29sb3Igb2YgYSBwdXNoIGJ1dHRvbiBmcmFtZSBmcm9tIGdyYXkgdG8gd2hpdGUsCgltYXRjaGluZyB0aGUgV2luZG93cyBsb29rOyBtb2RpZmllZCB0aGUgcGFpbnQgcm91dGluZSBmb3IgdGhlCgljbG9zZSBidXR0b24gb2YgYSB0b29sIHdpbmRvdyB0byBpbXByb3ZlIHNjYWxhYmlsaXR5LgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLAoJICB3aW5kb3dzL3dpbi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJVXNlIGEgZmxhZyB0byB0ZXN0IGlmIGNyZWF0ZSBzdHJ1Y3R1cmUgaXMgdW5pY29kZS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglSZXBsYWNlICJMaW51eCBkbGwiIHdpdGggIkdOVSBzdHlsZSBFTEYgZGxsIi4KCVJlbW92ZSBzdXBwb3J0IGZvciBOZXRCU0QgYS5vdXQgZGxsLgoKCSogQlVHUywgaW5jbHVkZS93aW5udC5oLCBvYmplY3RzL3JlZ2lvbi5jLAoJICBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHdpbjMyL2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglSZW1vdmUgdW5uZWVkZWQgV0lOQVBJLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVc2UgYXV0b2NvbmYgY2hlY2tzIHRvIGNoZWNrIGZvciB2YXJpb3VzIEZyZWVUeXBlIGhlYWRlcnMuCgoJKiB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcmVwcm9jLmMsIHRvb2xzL3dyYy9wYXJzZXIuaCwKCSAgdG9vbHMvd3JjL3BhcnNlci5sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXcmMgbm8gbG9uZ2VyIG5lZWRzIHRvIHBhcnNlIEMgY29kZS4gUmVtb3ZlIGMtanVuayBoYW5kbGluZyBjb2RlLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgZW5vdWdoIGJ1ZmZlciBzcGFjZSBpbiBQUk9GSUxFX0dldFNlY3Rpb24oKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIHBhZ2Ugc2tpcHBpbmcgb24gUFNOX1NFVEFDVElWRSAtMSByZXR1cm4uCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJU2V0IGxvdy1vcmRlciBiaXQgb2YgbW9kdWxlIGhhbmRsZSBmb3IgTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFLgoJQ2xlYW5lZCB1cCBhIGZldyBITU9EVUxFL0hNT0RVTEUxNiBtaXNtYXRjaGVzLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZF9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZF9Cb2xkT2JsLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZF9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9kYXRhL2FnbC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXBkYXRlZCBidWlsdC1pbiBtZXRyaWNzIGZvciBjb3JlIFBvc3RTY3JpcHQgZm9udHMuCgoJKiBpbmNsdWRlL2dkaS5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRml4ZWQgdHlwbyBpbiBJTlRFUk5BTF9ZV1NUT0RTLgoKCSogZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlbW92ZWQgaW5jb3JyZWN0IHN0cmluZyBsZW5ndGggY2FsY3VsYXRpb24uCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3dpbnBvcy5jOgoJQm9iYnkgQmluZ2hhbSA8dWhtbW1tQGFtZXJpdGVjaC5uZXQ+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIEFuaW1hdGVXaW5kb3coKS4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaCwgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIEFTUEkgZml4ZXMsIFNDX0dFVF9ESVNLX0lORk8gc3R1YmJlZCwgYnV0IHJldHVybmluZyBzdWNlc3MsIEFTUEkKCWJ1ZmZlciBhbGxvY2F0aW9uL2ZyZWUgaW1wbGVtZW50ZWQuCgoyMDAxLTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi93bmQuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5wb3MuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUNyZWF0ZSBhbiBYIHdpbmRvdyBmb3IgZXZlcnkgd2luZG93LCBpbmNsdWRpbmcgY2hpbGRyZW4uCglGaXhlZCBub24tY2xpZW50IHJlY3RhbmdsZSBjYWxjdWxhdGlvbnMgaW4gbWFuYWdlZCBtb2RlLgoJQWRkZWQgc3VwcG9ydCBmb3IgaWNvbiB3aW5kb3cgaW4gbWFuYWdlZCBtb2RlLgoKCSogdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvcHB5Lnk6CglNYWNpZWsgS2FsaXN6ZXdza2kgPGtlbm9uQGdvMi5wbD4KCUFkZGVkIHN1cHBvcnQgZm9yIFJDSU5DTFVERSBkaXJlY3RpdmUuIE5vdyB3cmMgaWdub3JlcyBldmVyeXRoaW5nCglleGNlcHQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgZnJvbSBpbmNsdWRlZCAqLmggKi5jIGZpbGVzLgoKCSogdG9vbHMvd3JjL3BweS55OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGNvbnZlcnNpb24gb2YgTVMgc3R5bGUgJyNsaW5lJyBkaXJlY3RpdmVzIHRvIGdjYyBzdHlsZS4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwKCSAgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLAoJICBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CgktIFJlcG9ydCBmaWxlIGFuZCBkaXJlY3Rvcnkgc2l6ZXMgdXNpbmcgNjQtYml0IGFyaXRobWV0aWMgKGxpa2UgTlQpLgoJLSBIYW5kbGUgcGlwZXMgaW4gY29tbWFuZHMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSU5TVEFMTF9MSUJSQVJZIGRvZXMgbm90IGV4aXN0LCB1c2UgSU5TVEFMTF9QUk9HUkFNLiBGaXggaGFuZGxpbmcgb2YKCXRoZSBJTlNUQUxMKiB2YXJpYWJsZXMuCglXaW5lbGliIGFwcGxpY2F0aW9ucyBkb24ndCBuZWVkIHRvIGxpbmsgd2l0aCBYLCBpMzg2LCBvc3NhdWRpbywgeHBnNCwKCW1tYXAsIHV0aWwsIGRsIG9yIGN1cnNlcy4gT25seSB3aW5lIGRvZXMgKG5vcm1hbGx5KS4KCVJlbW92ZSBZQUNDICYgTEVYIHZhcmlhYmxlcyAoTWFrZS5ydWxlcy5pbikuCglXaW5lbWFrZXIncyBtYWtlZmlsZXMgZG9uJ3QgdXNlIGxkY29uZmlnLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgb3B0aW1pemF0aW9uIGluIE5DX0hhbmRsZU5DQWN0aXZhdGUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCURpc3BsYXkgZXh0cmEgZGF0YSBmb3IgV01fTk9USUZZIHRoYXQgdXNlIE5NQ09NQk9FWHtBfFd9LgoKMjAwMS0wNS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2FibGUgdGhlIGVkaXQgYm94IHdoZW4gY3JlYXRlZCB3aXRoIFdTX0RJU0FCTEVELgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgaW5jbHVkZS91cmxtb24uaDoKCU1hbHRlIFN0YXJvc3RpayA8TWFsdGUuU3Rhcm9zdGlrQHQtb25saW5lLmRlPgoJSW1wbGVtZW50ZWQgc29tZSB2ZXJ5IGJhc2ljIGZ1bmN0aW9uYWxpdHkuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglMaXN0IDE2LWJpdCByZXNvdXJjZXMgc2VwYXJhdGVseSBhcyBSQ19TUkNTMTYuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglJZiB5b3UgaGF2ZSBmcmVldHlwZTEgYW5kIGZyZWV0eXBlMiBjb2V4aXN0aW5nLCBmcmVldHlwZS1jb25maWcgc2hvdWxkCgliZSBmcmVldHlwZTItY29uZmlnLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglGaXhlZCBmb250IG1ldHJpYyByb3VuZGluZyBlcnJvci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUT09MQkFSX0luc2VydEJ1dHRvbkE6IElmIGlTdHJpbmc9PS0xIHRoZW4gZG9uJ3QgdXNlIGl0IGFzIGEgcG9pbnRlci4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJZmNsb3NlIHNob3VsZCByZXR1cm4gRU9GICgtMSkgaWYgYW4gZXJyb3IgY29uZGl0aW9uIGV4aXN0cy4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2FsbCBGcmVlRW52aXJvbm1lbnRTdHJpbmdzIHdoZW4gbXN2Y3J0IGlzIHVubG9hZGVkLgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBpbmNsdWRlL21zdmNydC9laC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1zdmNydC9laC5oLgoJSW1wbGVtZW50ZWQgdW5leHBlY3RlZCwgdGVybWluYXRlIGFuZCBzZXRfdW5leHBlY3RlZC90ZXJtaW5hdGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBWYXJYeHhGcm9tQ3kgY29udmVyc2lvbnMuCglSZW1vdmUgKGNvbW1lbnRlZC1vdXQpIHJlZmVyZW5jZXMgdG8gaW5leGlzdGVudCBWYXJYeHhGcm9tMzIgZnVuY3Rpb25zLgoJUmVtb3ZlIG9ic29sZXRlICczMicgc3VmZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUphc29uIE1jTXVsbGFuIDxqbWNtdWxsYW5AbGludXhjYXJlLmNvbT4KCU1vcmUgYWNjdXJhdGUgc3R1YiBvZiBERFJBVzpHZXRGb3VyQ0NDb2Rlcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJQm9iYnkgQmluZ2hhbSA8dWhtbW1tQGFtZXJpdGVjaC5uZXQ+CglGaXhlZCBzY3JvbGxiYXJzIHJldHVybiB2YWx1ZSB0byB0aGUgU0JNX1NFVFJBTkdFIGFuZAoJU0JNX1NFVFJBTkdFUkVEUkFXIG1lc3NhZ2VzLgoKMjAwMS0wNS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLCBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmMsCgkgIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWZtMmMuYywKCSAgZGxscy93aW5lcHMvYWdsLmMsIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZF9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZF9Cb2xkT2JsLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZF9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLCBkbGxzL3dpbmVwcy9ta2FnbC5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUJ1aWxkIEFGTSBkYXRhIGZvciBjb3JlIFBvc3RTY3JpcHQgZm9udHMgaW50byBXSU5FUFMuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnJhcnkvcG9ydC5jLCBzZXJ2ZXIvZmlsZS5jLCB3aW4zMi9maWxlLmMsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluLCBmaWxlcy9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgYW55IGZpbGU2NCBmdW5jdGlvbnMsIHRyeSB0byB1c2Ugc3lzdGVtIHN1cHBsaWVkIDY0LWJpdCBtb2RlIGJ5Cgl1c2luZyBwcm9wZXIgZGVmaW5lcy4KCgkqIG9sZS9vbGUybmxzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIHJlYWRpbmcgcmVzb3VyY2VzIGluIE5MU19Mb2FkU3RyaW5nRXhXIHdlIHNob3VsZCBtYXAKCVNVQkxBTkdfTkVVVFJBTCB0byBTVUJMQU5HX0RFRkFVTFQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUF0dGVtcHQgdG8gd3JpdGUgZnJhZ21lbnRzIGFuZCBjaGVjayB3aGV0aGVyIHdlIGNhbiBub3RpZnkgdGhlIGNsaWVudAoJYWZ0ZXIgZXZlcnkgbWVzc2FnZS4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXJzdCB0cnkgYXQgaW1wbGVtZW50aW5nIFBhdGhHZXRDaGFyVHlwZSgpLgoKCSogdG9vbHMvd3JjL3BweS55OgoJTWFjaWVrIEthbGlzemV3c2tpIDxrZW5vbkBnbzIucGw+CglBZGRlZCBiZXR0ZXIgR0NDLXN0eWxlICNsaW5lIGRpcmVjdGl2ZSBoYW5kbGluZy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgljb25maWd1cmUuaW46IFJlbW92ZSB1bm5lY2Vzc2FyeSBBQ19QUk9HX1JBTkxJQiBjaGVjawoJTWFrZS5ydWxlcy5pbjogQWRkIG1pc3NpbmcgQ1hYIHZhcmlhYmxlCglDb3NtZXRpYyBjaGFuZ2VzCgoJKiBsaWJyYXJ5L01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpbmsgbGlid2luZS5zbyB3aXRoICQoTElCUykuCgoJKiBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXNlIG1hY3JvcyBmb3IgRnJlZVR5cGUgaW5jbHVkZXMuCgoyMDAxLTA1LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IGp1c3QgYXNzdW1lIGV2ZXJ5dGhpbmcgaXMgYSBEb3MgRGV2aWNlLCBvciBtaXJjIHdpbGwgbm90IGdldCBhbnkKCURDQyBzZW5kcy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUltcGxlbWVudGVkIERUTV9HRVQvU0VUUkFOR0UuCgoyMDAxLTA1LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3N0cmluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBrZXJuZWwzMiBkZXBlbmRlbmN5IG9uIHVzZXIzMiBieSBpbXBsZW1lbnRpbmcgZmFtaWx5IG9mIGszMgoJZnVuY3Rpb25zIGFzIGNhbGxvdXRzIHRvIHVzZXIzMi4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGFuIHVua25vd24gVnhEIGVycm9yIGNvZGUuCgoJKiBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW46CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglVcGRhdGVkIEdlcm1hbiBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL3RpbWUuYywgbG9hZGVyL3Rhc2suYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgd2luZG93cy9tZXNzYWdlLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHZXQgcmlkIG9mIEdldEN1cnJlbnRUaW1lMTYoKS4KCgkqIGluY2x1ZGUvc25vb3AuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9zbm9vcC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzbm9vcCBjb2RlIHRha2Ugb3JkaW5hbCBiYXNlIGludG8gYWNjb3VudC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBCdWlsZENvbW1EQ0IxNigpIHVzZXMgaW50IGluc3RlYWQgb2YgQk9PTAoJLSBPcGVuQ29tbTE2KCkgc2hvdWxkIHJldHVybiBJRV9CQURJRCBmb3IgKmFsbCogaW52YWxpZCBzdHJpbmdzCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywKCSAgZGxscy9zaGx3YXBpL3VybC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBhZGQgc3R1YnMgU0hMV0FQSV8yOTQsIFVybEFwcGx5U2NoZW1lVwoJLSBjb3JyZWN0IFNITFdBUElfMTUxIHBhcmFtZXRlcnMKCS0gaW1wbGVtZW50ZWQgU3RyVHJpbUEKCgkqIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVZjcFF1ZXVlRGVsZXRlKCkgZG9lcyBub3QgaGF2ZSBhIExQRVhQQU5EVlRCTCBwYXJhbWV0ZXIuCgoJKiB3aW4zMi9kZXZpY2UuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBhZGQgaGFuZGxlciBmb3IgVkNEIFZ4RCAoInZpcnR1YWwgY29tbSBkZXZpY2UiID8pCgktIFNldExhc3RFcnJvciggRVJST1JfSU5WQUxJRF9GVU5DVElPTiApOyBmb3IgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbnMKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglBZGRlZCBBdmdDaGFyV2lkdGggbWVtYmVyIHRvIGZvbnQgbWV0cmljcy4KCgkqIGRsbHMvd2luZXBzL2FnbC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXBkYXRlZCBQb3N0U2NyaXB0IGdseXBoIG5hbWUgZGF0YS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglPbmx5IGZhaWwgd2l0aCBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSIGlmIHRoZSBzdHJ1Y3R1cmUgc2l6ZSBpcwoJYWN0dWFsbHkgdG9vIHNtYWxsLgoKMjAwMS0wNS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBpc3N1ZXMuCgoJKiBpbmNsdWRlL3dpbnBvcy5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wb3MuYzoKCU1ha2UgV0lOX1dpbmRvd0Zyb21Qb2ludCB0YWtlIGEgUE9JTlQgaW5zdGVhZCBvZiBhIFBPSU5UMTYuCglTbWFsbCBidWcgZml4IGluIHNjb3BlIHdpbmRvdyBoYW5kbGluZy4KCUFsd2F5cyBjaGVjayBmb3IgbWVzc2FnZSB3aGVuIFFTX1NFTkRNRVNTQUdFIGlzIHNldC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWEsIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCBtdWx0aW1lZGlhIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsCgkgIGRsbHMvbXNhY20vd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNaW1pYyBtb3JlIGNsb3NlbHkgV2luZG93cycgYmVoYXZpb3IgKGEgTVNBQ00gZHJpdmVyIGlzIGFsd2F5cyBvcGVuZWQKCXR3aWNlOiBmaXJzdCB0aW1lIGZvciBpbmZvIGdhdGhlcmluZywgc3Vic2VxdWVudCBvcGVuaW5ncyBmb3IKCWNvbnZlcnNpb25zKS4KCUFkZGVkIGZvcm1hdCBzdWdnZXN0aW9uIGZvciBQQ00uCglDbGVhbmVkIHVwIGludGVybmFsIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLAoJICBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5kcnYuc3BlYywgd2luZWRlZmF1bHQucmVnOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIG1pZGkgbWFwcGVyIG1vcmUgcm9idXN0LgoJQWRkZWQgY2hhbm5lbCB0byBkZXZpY2UvY2hhbm5lbCBtYXBwaW5nLgoJUmVtb3ZlZCBtaWRpSW4gbWFwcGluZyAoaXQgZG9lc24ndCBleGlzdCBvbiBXaW5kb3dzKS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IGxvYWRpbmcgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgbG93IGxldmVsIGRyaXZlcnMgZnJvbSByZWdpc3RyeS4KCgkqIG1pc2MvY2Ryb20uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgbWVtc2V0IHJhdGhlciB0aGFuIGJ6ZXJvLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCU1pa2UgQm9uZCA8bWJvbmRAY294LnJyLmNvbT4KCUZpeGVkIHNwYXdubHAgYW5kIGFkZGVkIGV4ZWMgdmFyaWFudHMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgY2xlYW4gdXAuCgoJKiBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIGRsbCBzZXBhcmF0aW9uIGlzc3Vlcy4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ29ycmVjdGx5IGdlbmVyYXRlIHRoZSBlbnZpcm9ubWVudCBnbG9iYWwgdmFyaWFibGVzLgoKMjAwMS0wNS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVGFrZSBtZXNzYWdlIGZpbHRlcnMgaW50byBhY2NvdW50IGZvciBXTV9QQUlOVCB0b28uCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsCgkgIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIG5vdGlvbiBvZiBkZWxheWVkIGJyZWFrcG9pbnQgKHdoZW4gYSBmdW5jdGlvbiBpcyBub3QgbG9hZGVkCgl5ZXQsIHRoZSBuYW1lIHdpbGwgYmUgdHJpZWQgYWdhaW4gZm9yIGVhY2ggbmV3IGxvYWRlZCBtb2R1bGUpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRnIucmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgRnJlbmNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9wZW4gcmVxdWVzdHMgaW4gY2FzZSBvZiBlcnJvciAoaWYgdGhlIHBoeXNpY2FsIGRldmljZSBmYWlsZWQgdG8KCW9wZW4sIHRoZSBBQ00gc3RyZWFtIHdhcyBsZWZ0IG9wZW5lZCkuCglBZGRlZCBtYXBwaW5nIHNlYXJjaCBmb3Igd2F2ZUluIGRldmljZXMuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBiYXNpYyBzdXBwb3J0IGZvciBTUElfR0VUU0NSRUVOUkVBREVSLgoKMjAwMS0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXBseV9tZXNzYWdlIHdoZW4gdGhlcmUgaXMgbm8gcmVjZWl2ZWQgbWVzc2FnZS4KCgkqIHdpbmRvd3MvdGltZXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIFNldFRpbWVyIGZvciBod25kID09IDAuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFjY2VwdCByZXNwb25zZXMgZnJvbSAxLi5uIHdoZW4gY2hvb3NpbmcgZnJvbSBtdWx0aXBsZSBzeW1ib2xzIHRvCgltYXRjaCB0aGUgaW5wdXQgbGFiZWxzLgoKMjAwMS0wNS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJRml4ZWQgdHlwbyBpbiBtZXNzYWdlIGZpbHRlciBjaGVjay4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVJlbW92ZWQgVEhSRUFEX0lzV2luMTYuCgoJKiBjb250cm9scy9tZW51LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglGaXggbWVudSBiZWhhdmlvdXIgd2hlbiBlc2NhcGUgaXMgcHJlc3NlZC4KCgkqIHdpbjMyL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglEbyBub3QgcmV0dXJuIEZBTFNFIG9uIFNldEZpbGVBdHRyaWJ1dGVzKCkgZmFpbHVyZSAoaW4gcmVhZG9ubHkKCWRpcmVjdG9yeSBzZXR1cHMpLgoKCSogc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NlcnZlci5oLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCB0aGUgbWFqb3IgcGFydCBvZiBtZXNzYWdlIHF1ZXVlIGFuZCB3aW5kb3cgdGltZXIgaGFuZGxpbmcgaW50bwoJdGhlIHNlcnZlci4KCUltcGxlbWVudGVkIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeC4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNwZWxsaW5nIHR5cG9zLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgY29tcGlsZSBpZiB3ZSBkbyBub3QgaGF2ZSB0aGUgeGY4NnZpZG1vZGUgZXh0ZW5zaW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVRoZSBzaGVsbCBzcGVjaWFsIGZvbGRlciBwYXRoIGNyZWF0aW9uIGRpZCBub3QgbWtkaXIgdGhlIGxhc3QKCWNvbXBvbmVudCBvZiB0aGUgcGF0aCBpZiBpdCBkaWQgbm90IGVuZCB3aXRoIFwuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGluY2x1ZGUvd2lubnQuaDoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglFbmhhbmNlZCBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSBzdHViLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCU1pa2UgQm9uZCA8bWJvbmRAY294LnJyLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHNwYXdubCBhbmQgc3Bhd25scC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugb2xkZXIgY3Vwc0dldFByaW50ZXJzKCkgQVBJIHNvIHdlIHN1cHBvcnQgQ1VQUyAxLjAueCB0b28gKGFzIGZvdW5kCglpbiBEZWJpYW4gUG90YXRvKS4KCU9ubHkgc2V0IHRoZSBkZWZhdWx0IHByaW50ZXIgaWYgdGhlcmUgaXMgbm8gZW50cnkgeWV0IG9yIGl0IGlzIG5vdAoJV0lORVBTIGRyaXZlbi4KCgkqIHdpbmRvd3MvaW5wdXQuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJS2V5Ym9hcmQgZXZlbnRzIGRpZCBub3QgdXBkYXRlIEFzeW5jS2V5U3RhdGVUYWJsZSwgbm93IHRoZXkgZG8uCgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvaW1tMzIvaW1tLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCU1ha2Ugc3VyZSB3ZSBzZXQgZHdPU1ZlcnNpb25JbmZvU2l6ZSBiZWZvcmUgY2FsbGluZyBHZXRWZXJzaW9uSW5mbygpLgoKMjAwMS0wNS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRvcHRlZCB0byBuZXcgdGhyZWFkZWQgZGlzcGxheXMuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZWFkIG1ldHJpY3MgZnJvbSBUcnVlVHlwZSBmb250cy4KCgkqIHdpbmRvd3MvbWRpLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJT25seSBtZWFzdXJlIGNoaWxkIHJlY3RhbmdsZXMgb2YgdmlzaWJsZSBjaGlsZHJlbiB3aGVuIGRlY2lkaW5nIGFib3V0CglzY3JvbGwgYmFycy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRGlzYWJsZSAvZXRjL3ByaW50Y2FwIHBhcnNpbmcgaWYgbm8gUFBEIGZpbGUgc3BlY2lmaWVkLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglHdWVzc3RpbWF0ZSBXaW5kb3dzIGZvbnQgbWV0cmljcyBmb3IgVHlwZSAxIGZvbnRzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsCgkgIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsCgkgIHdpbmRvd3MveDExZHJ2L3duZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R0eWRydi91c2VyLmM6CglDcmVhdGUgYW4gWCBjb25uZWN0aW9uIGZvciBlYWNoIHRocmVhZCwgYW5kIHByb2Nlc3MgWCBldmVudHMgaW4gdGhlCgl0aHJlYWQgdGhhdCBjcmVhdGVkIHRoZSBjb3JyZXNwb25kaW5nIFggd2luZG93LgoJU3Bhd24gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gcnVuIHRoZSBkZXNrdG9wIG1lc3NhZ2UgbG9vcCBpbiBkZXNrdG9wCgltb2RlLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmM6CglXYXJuaW5ncyBmaXhlcy4KCjIwMDEtMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJyYXJ5L3BvcnQuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsCgkgIGxvYWRlci9uZS9zZWdtZW50LmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDIxLmMsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NvY2suYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgZGxscy93aW5hc3BpL2FzcGkuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5pbmV0L2Z0cC5jLAoJICBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2FjY29uZmlnLmgsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvbG9hZGVyLmMsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIDY0Yml0IGZpbGUgc2l6ZSBoYW5kbGluZy4KCVJlbW92ZWQgc2V2ZXJhbCB1bm5lZWRlZCBzeXMvc3RhdC5oIGluY2x1ZGVzLgoKCSogd2luZG93cy9xdWV1ZS5jOgoJQ2xlYXIgb3duZXIgb2Ygc3lzdGVtIG1lc3NhZ2UgcXVldWUgdG8gYXZvaWQgZnJlZWluZyBpdCB3aGVuIHRoZSBmaXJzdAoJdGFzayBleGl0cy4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUFkZCBjbG9zaW5nIHRhZ3MuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJRGVmaW5lIEhBVkVfU1lTX1NPQ0tFVF9IIG9uIE5ldEJTRCBhbmQgRnJlZUJTRC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVRlc3QgaWYgdGhlIG1lbnUgaXMgZGVzdHJveWVkIGJlZm9yZSBkaXNwbGF5aW5nIGEgbWVudSBpdGVtLgoKMjAwMS0wNS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jOgoJQ3JlYXRlIGEgbmV3IHdpbmRvdyBmb3IgdGhlIHRvcCBwb3B1cCBtZW51IG9uIGV2ZXJ5IG5ldyBtZW51IHRyYWNraW5nLAoJc28gdGhhdCB0aGUgd2luZG93IGJlbG9uZ3MgdG8gdGhlIHJpZ2h0IHRocmVhZC4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYywgZmlsZXMvZHJpdmUuYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYywgY29udHJvbHMvbGlzdGJveC5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9tc3ZjcnQvZGF0YS5jLAoJICBkbGxzL21zdmNydC9kaXIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWNlc3Nhcnkgc2luZ2xlIHF1b3Rpbmcgb2YgZGVidWdzdHJfeHh4IHN0cmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYSB3YXJuaW5nIHNheWluZyB0aGF0IHRoZSB4MTFkcnYgc2VjdGlvbiBpcyBnZXR0aW5nIG91dGRhdGVkLgoJQWRkIHRlbXBsYXRlcyBmb3IgbWlzc2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIHgxMWRydiBzZWN0aW9uLgoJUmVtb3ZlIG9ic29sZXRlIGNvbW1hbmQtbGluZSBvcHRpb25zLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCBzb21lIG1vcmUgb2Jzb2xldGUgMzIgc3VmZml4ZXMuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUVsaW1pbmF0ZSBfX2NvbXBhcl9mbl90LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZHJ2LmgsCgkgIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVJlbmFtZWQgZGlzcGxheSB0byBnZGlfZGlzcGxheSB3aGVyZSBpdCBpcyB1c2VkIGZvciBHREkgb3BlcmF0aW9ucywgdG8KCWFsbG93IHN1cHBvcnRpbmcgbXVsdGlwbGUgWCBjb25uZWN0aW9ucy4KCjIwMDEtMDUtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTA1MTAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDUtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCUZpeGVkIHJlcGFyZW50aW5nIHRvIGRlc2t0b3AgKGZvdW5kIGJ5IEdlcmFyZCBQYXRlbCkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglSZWFsbHkgZnJlZSB0aGUgbWVtb3J5IG9uIGRsbCB1bmxvYWQuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3R0eWRydi93bmQuYzoKCU1vdmVkIFNjcm9sbFdpbmRvd0V4IGltcGxlbWVudGF0aW9uIHRvIHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc3RhcnQgYXBwbGljYXRpb25zIGluIHRoZSBiYWNrZ3JvdW5kIHRvIGF2b2lkIGJyZWFraW5nIGNvbnNvbGUKCWFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBkZWNsYXJhdGlvbiBvZiBERUNJTUFMIGluIFZBUklBTlQgaGFwcGVucyBpbiB0aGUgd3JvbmcgcGxhY2UuCglDb21tZW50IG91dCBmb3Igbm93LgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIHRoZSBwcmludGluZyBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgQ1VQUyBhbmQgTFBSIHN1cHBvcnQsCglhbHNvIGdpdmUgc29tZSBoaW50cyBvbiBBRk0gZmlsZXMgaW4gc3lzdGVtIGFuZCBnZW5lcmljLnBwZC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9nZW5lcmljLnBwZDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYSBnZW5lcmljIGxldmVsIDMgY29sb3IgcG9zdHNjcmlwdCBQUEQgKGZvciAvZXRjL3ByaW50Y2FwIGJhc2VkCglwcmludGVycykuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHZlcnNpb24gZW50cnkgZm9yIERpcmVjdFggNy4wYS4KCjIwMDEtMDUtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJUmVtb3ZlZCBYU2htQ29tcGxldGlvbiBldmVudCBzdXBwb3J0IChubyBsb25nZXIgdXNlZCkuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5QTCwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHM6CglHb3QgcmlkIG9mIE1ha2VNYWtlciBzbyB3ZSBjYW4gYnVpbGQgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglBbGxvdyBXSU5FU0VSVkVSIHRvIHNwZWNpZnkgYSByZWxhdGl2ZSBwYXRoLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglPbiBOZXRCU0QgaWZfdHlwZSBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gaW4gL3Vzci9pbmNsdWRlL25ldC9pZi5oLgoJVW5kZWZpbmUgaXQgdG8gYXZvaWQgYSBjb25mbGljdC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJRG8gbm90IHVzZSBpbnRlcm5hbCBleGNlcHRpb24gY29kZXMgZGVmaW5lZCBieSBXaW5lIHdpdGggTmV0QlNELAoJcmF0aGVyIHVzZSBuYXRpdmUgb25lcyBmcm9tIC91c3IvaW5jbHVkZS9pMzg2L3RyYXAuaC4gTm90ZSB0aGF0IFRfTUNISwoJaXMgbm90IHN1cHBvcnRlZCBieSBOZXRCU0QuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUFkZGVkIHN1cHBvcnQgZm9yIE5ldEJTRC4KCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgdGhlIElEaXJlY3REcmF3U3VyZmFjZTQgaW50ZXJmYWNlIGRlY2xhcmF0aW9uIHRvIGNvbmZvcm0gYSBiaXQKCW1vcmUgd2l0aCB0aGUgRGlyZWN0WCBTREsgaGVhZGVycycgaWRlYSBvZiB3aGF0IHRoZSBpbnRlcmZhY2UgbG9va3MKCWxpa2UuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHRlc3RzIGZvciB0aGUgZmxhZyBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUywgYW5kIGFjdAoJYWNjb3JkaW5nbHkuCgoJKiB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jOgoJVXNlIDMyLWJpdCBob29rIGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZS4gQ2xlYW5lZCB1cCBhIGNvdXBsZSBvZgoJMTYtYml0IHR5cGUgdXNlcy4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmMsIG1lbW9yeS9nbG9iYWwuYywgbXNkb3MvaW50MTAuYywKCSAgbXNkb3MvaW50MjEuYywgbXNkb3MvaW9wb3J0cy5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsCgkgIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvaW1tMzIvaW1jLmMsIGRsbHMvaW1tMzIvaW1ld25kLmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMvaW1tMzIvbWVtb3J5LmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBjb250cm9scy9tZW51LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgJ1xuJyBhdCB0aGUgZW5kIG9mIHRyYWNlcy4KCgkqIGluY2x1ZGUvbm9uY2xpZW50LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCU1vdmVkIHdpbmRvdyBtb3ZlL3Jlc2l6ZSBzeXNjb21tYW5kIGhhbmRsaW5nIHRvIHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBjb250cm9scy9jb21iby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglPbmx5IGRyYXcgdGhlIHBhZGRpbmcgYXJlYSBvZiB0aGUgY29tYm8gYm94LCBkb24ndCBlcmFzZSB0aGUgY29tYm8KCXNlbGVjdGlvbiB0ZXh0LgoKCSogdG9vbHMvc3BlY21ha2VyL21zbWFuZ2xlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbmFtZWQgJ29wZXJhdG9yX2NvbXBsaW1lbnQnIHRvICdvcGVyYXRvcl9jb21wbGVtZW50Jy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoLmN6ZWthbGxhQHV0b3JvbnRvLmNhPgoJRml4ZWQgYSBwYWludCBwcm9ibGVtIHJlcG9ydGVkIGJ5IE1pa2UgTWNDb3JtYWNrLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2FnbC5jLCBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVuaWNvZGUgZW5jb2RpbmdzIGZvciBQb3N0U2NyaXB0IGZvbnRzLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgL2V0Yy9wcmludGNhcCBiYXNlZCBwcmludGluZyBzdXBwb3J0LgoJQ2hhbmdlZCAnQ1VQUzpwcmludGVybmFtZScgdG8gJ0xQUjpwcmludGVybmFtZScuCglTb21lIGZpeGVzIGluIEFkZFByaW50ZXJXKCkuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkIG1pc3NpbmcgbmV3bGluZSB0byBXQVJOIG1lc3NhZ2VzLgoKMjAwMS0wNS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3dpbnByb2MuYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaWYxNjMyL3JlbGF5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByaW50IHRoZSB0aWQgaW4gdGhlIGZpcnN0IGNvbHVtbiB3aGVuICt0aWQgaXMgc3BlY2lmaWVkLgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQUyBwYXNzdGhyb3VnaCB3YXMgc2VuZGluZyAyIGJ5dGVzIHRvbyBtYW55LgoJQWRkZWQgR0VUU0VUUFJJTlRPUklFTlQgc3R1Yi4KCUltcGxlbWVudGVkIEVQU1BSSU5USU5HIG1vZGUgY2hhbmdlci4KCjIwMDEtMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgUFNEUlZfRXNjYXBlKEdFVFBIWVNQQUdFU0laRSkgcmV0dXJuIHBoeXNpY2FsIHNpemUuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglGaXhlZCByb3VuZGluZyBlcnJvciBpbiBwYWdlIHNpemUgY2FsY3VsYXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglTd2FwIHBvcnRyYWl0L2xhbmRzY2FwZSBpY29uIHdoZW4gYnV0dG9uIGNsaWNrZWQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZGVkIGVudHJ5IGZvciBwcmludGluZyB0byBhIGZpbGUuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9taW5tYXguaCwgaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbWlubWF4LmggaGVhZGVyIChWQzYpLgoJQWRkZWQgc3VwcG9ydCBmb3IgTk9NSU5NQVguCglSZW1vdmUgX19taW4vX19tYXggZnJvbSB3aW5kZWYuaCwgdGhleSBiZWxvbmcgdG8gKG1zdmNydC8pc3RkbGliLmguCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNhbml0eSBjaGVjayBmb3IgTWFrZWRsbC5ydWxlcy5pbiAtPiBNYWtlZGxsLnJ1bGVzIG9uIHdoZXRoZXIgdG8gcmVydW4KCWNvbmZpZ3VyZS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglBZGQgdGhlIE5ldEJTRCBzdHlsZSBlcnJubyBsb2NhdGlvbi4KCU1vZGlmeSBhIG1lc3NhZ2UgdG8gZ2l2ZSBhIGJpdCBtb3JlIGluZm8gd2hlbiBidWlsZGluZyBXaW5lIG9uIE5ldEJTRC4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oLCBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlIGRpcmVjdGl2ZXMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB0aGUgYW5vbnltb3VzIGZ1bmN0aW9uIHBhcmFtZXRlciBmcm9tIGdlbmVyYXRlX2xpc3QgY2FsbHMgd2hlbgoJaXQgaXMgdW5uZWNlc3NhcnkuCglNb2RpZnkgdGhlIC5zcGVjLmMgcnVsZSB0byBhbGxvdyBjb21waWxhdGlvbiBvdXQgb2YgJChUT1BTUkNESVIpLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS93aW5kb3dzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJDX0lOVk9LRUQgKCZOT1dJTlJFUykgc3BlY2lhbCBjYXNlcy4KCgkqIHRvb2xzL3dyYy93cmMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJLWwvLUwgd2VyZSBub3QgcmVuYW1lZCB0byAtdC8tVCBpbiB0aGUgdXNhZ2UgbWVzc2FnZXMuCgoJKiBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeCBkdXBsaWNhdGUgZGlyZWN0b3JpZXMgYmVpbmcgY29uY2F0ZW5hdGVkIHRvIGJ1ZmZlciBpbgoJVmNwRXhwbGFpbjE2KCkuICBBZGRlZCBhIGZldyB1c2VmdWwgVFJBQ0UgbGluZXMuICBFbmFibGVkIGEgaWZkZWYnZWQKCW91dCBjYWxsIHRvIENvcHlGaWxlKCkgaW5zaWRlIG9mIFZDUF9Db3B5RmlsZXMoKSBzbyBmaWxlcyBhcmUgY29waWVkCgl0byBhIHVzZXJzIGRpcmVjdG9yaWVzIGR1cmluZyBhbiBpbnN0YWxsLgoKCSogZGxscy93aW5tbS93aW5lb3NzL29zcy5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglDYWxsIE9TU19NaWRpSW5pdCgpIG9ubHkgaWYgSEFWRV9PU1NfTUlESSBpcyBkZWZpbmVkLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUluY2x1ZGUgbWlzc2luZyBlcnJuby5oLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBmbGFncyBkdXJpbmcgZm9udCBlbnVtZXJhdGlvbiBmb3IgZm9udCBjaG9vc2VyIGlmIHdlIGdldCBubwoJbWF0Y2hlcy4KCgkqIGRsbHMvZ2RpL2dkaS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIHNvbWUgcHRyIGludG8gc3RyLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsCgkgIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBERUNJTUFMIHR5cGUuCglOYW1lcyBhcmUgbm8gbG9uZ2VyIHN1ZmZpeGVkIHdpdGggMzIhIFJlbW92ZWQgaXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaW5jb3JyZWN0IGNhc3QgaW4gV1NPQ0szMl9zZW5kIGFuZCBXU09DSzMyX3JlY3Zmcm9tLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIElTX0VSUk9SLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBvcnQgdGhhdCB3ZSBoYXZlIDJeMTYgY29sb3JzLCBzbyBQb3dlclBvaW50OTcgcHJpbnRzIGNvbG9yZWQKCXNsaWRlcy4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRm9yIHVuZGVybGluaW5nIGFuZCBzdHJpa2luZyBvdXQgdGV4dCB3ZSBuZWVkIHRvIHNlbmQgYSAnbmV3cGF0aCcgb3IKCWhhdmUgdGhlIHdob2xlIHBhZ2UgZmlsbGVkIHdpdGggYmxhY2suCgoJKiBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhcGVyIGRpYWxvZyB0cmFuc2xhdGVkIHRvIEdlcm1hbi4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGluIFBST0ZJTEVfQ29weUVudHJ5LgoKMjAwMS0wNS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3Mva2V5Ym9hcmQuYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYzoKCVJlbW92ZSBHZXQvU2V0QmVlcEFjdGl2ZSBmcm9tIFVTRVIgZHJpdmVyIGFuZCBtYW5hZ2UgaXQgbG9jYWxseSBpbnNpZGUKCVN5c3RlbVBhcmFtZXRlcnNJbmZvLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFdNX0NPTU1BTkQgbm90aWZpY2F0aW9uIGNvZGVzIGZvciAxNiBiaXQgUHJpbnREbGcuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCURlbGF5IGltcG9ydCBvZiB1c2VyMzIgdG8gYWxsb3cgZGVidWdnaW5nIGNyYXNoZXMgaW4gdXNlciBpbml0IGNvZGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBsYXJnZSBwYXJ0cyBvZiBQYWdlU2V0dXBEbGdBLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVidWcgb3V0cHV0IGZvciBmbGFncywgc2VsZWN0IGZpcnN0IGF2YWlsYWJsZSBoZWlnaHQgYW5kIHdlaWdodCB3aGVuCglzZWxlY3RpbmcgYSBmb250LgoKMjAwMS0wNS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGNlLmM6CglNYWtlIHN1cmUgd2UgcmVjb21wdXRlIHRoZSB2aXNpYmxlIHJlZ2lvbiBpbiBEQyBob29rLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1pc2MuIGVycm9yIGNoZWNraW5nIGluIFBvc3RTY3JpcHQgZHJpdmVyLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYXV0b3JlcGVhdCBzY3JvbGxpbmcgd2hlbiBidXR0b24gaXMgaGVsZCBkb3duLgoJSW1wcm92ZW1lbnRzIHRvIHNpemUgYW5kIGFwcGVhcmFuY2Ugb2YgYnV0dG9ucy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gc2hvdWxkIGFsc28gZGVsZXRlIHRoZSBwZGYsIHBzIGFuZCAub3V0KD8pIGZpbGVzLgoKCSogZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHd3dy53aW5laHEuY29tIGRpcmVjdG9yeSBoYW5kbGluZy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgaGFuZGxpbmcgb2Ygc2V2ZXJhbCBzeW1ib2xzIHdpdGggdGhlIHNhbWUgbmFtZS4KCUZpeGVkIHRyYW1wb2xpbmUgaWRlbnRpZmljYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgc21hbGwgc2VjdGlvbiBhYm91dCBleHByZXNzaW9ucyBpbiB3aW5lZGJnLgoKMjAwMS0wNS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVuY29tbWVudGVkIHRoZSBWaXJ0dWFsRnJlZSBjYWxsIG9uIGRsbCB1bmxvYWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgdGhlIE9TTWVzYSBjb25maWd1cmUgY2hlY2sgc28gdGhhdCBPU01lc2Egd29uJ3QgYmUgbGlua2VkIGluIGlmIGl0J3MKCWluY29tcGF0aWJsZSB3aXRoIHRoZSBHTFggaW1wbGVtZW50YXRpb24gKGUuZy4gbnZpZGlhKS4KCVJlbW92ZWQgdGhlIG9sZCAiT1NNZXNhIG5vdCBmb3VuZCIgd2FybmluZy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBQcmludERsZyBzbyB0aGUgZGV2bmFtZXMgc3RydWN0IGNvbnRhaW5zIHRoZSBjb3JyZWN0IGRyaXZlcgoJcHJpbnRlciBhbmQgcG9ydCBuYW1lcy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6CglTaW1lb24gUGlsZ3JpbSA8c2ltZW9uLnBpbGdyaW1AYWxsaWVkdGVsZXN5bi5jby5uej4KCVR5cG8gaW4gc3R1Yi1yZXBvcnRpbmcgc3R5bGUgZGVzY3JpcHRpb24KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgludGRsbC5faXN3Y3R5cGUgc2hvdWxkIGJlIG50ZGxsLmlzd2N0eXBlLgoKCSogY29udHJvbHMvY29tYm8uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IEhlYXBGcmVlKCkgbWVtb3J5IG5vdCBhbGxvY2F0ZWQgYnkgdXMgaW4gQ09NQk9fR2V0VGV4dC4KCUNvbnZlcnQgcmV0dXJuIHZhbHVlIGZyb20gTEJfR0VUVEVYVCBpbnRvIENPTUJPX0dldFRleHQuCgoyMDAxLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGNoZWNrIGZvciBjdXBzL2N1cHMuaCBoZWFkZXIgZmlsZSBhbmQgYSB3YXJuaW5nIGlmIHdlIGZpbmQgb25seQoJcnVudGltZSBsaWJyYXJpZXMsIGJ1dCBubyBoZWFkZXJzLgoKCSogY29udHJvbHMvY29tYm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJRHJhdyB0aGUgcGFkZGluZyBhcmVhIG9mIGEgY29tYm8gYm94LgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJQ2hlY2sgZm9yIGVycm9ycyBpbiBQU0RSVl9Jbml0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBjaGVja3MgaW4gX2dldF9jb21tb25fYW5jZXN0b3IgYSBiaXQgc3RyaWN0ZXIgdG8gYXZvaWQgWFF1ZXJ5VHJlZQoJWEVycm9ycy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudCBDT01DVEwzMl9TdHJUb0ludFcoKSB1c2luZyBOVERMTCdzIF93dG9pLgoKMjAwMS0wNC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL3B0cmFjZS5jLAoJICBzZXJ2ZXIvdGhyZWFkLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByZXNlcnZlIHRoZSBURiAoVHJhcCBGbGFnKSB3aGVuIGNvbnRpbnVpbmcgZnJvbSBhIHB0cmFjZWQgc3VzcGVuZC4KCgkqIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsCgkgIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLAoJICBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luMzIvZmlsZS5jLCB3aW5kb3dzL21kaS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG5hbWUgZml4ZXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbiwgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIENVUFMgcHJpbnRpbmcgc3VwcG9ydC4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglERFJBV197WEY4NkRHQTIsWFZpZE1vZGV9X0luaXQgd2FzIG1vdmVkIHRvIGRsbHMveDExZHJ2LgoKCSogZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZWltcGxlbWVudGVkIERYR3JhYiB3aXRoIGltcHJvdmVtZW50czsgaXQgbm8gbG9uZ2VyIGRlcGVuZHMgb24KCVhWaWRNb2RlLCBhbmQgaXQgcmVsZWFzZXMgdGhlIGdyYWIgaWYgdGhlIGFwcCBleGl0cyBmdWxsLXNjcmVlbgoJRGlyZWN0RHJhdy4gIEFsc28gbWFkZSB0aGUgVXNlREdBIG9wdGlvbiBhdmFpbGFibGUgZm9yIEFwcERlZmF1bHRzCgljb25maWd1cmF0aW9uLgoKMjAwMS0wNC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglBdm9pZCBjcmFzaCBvbiBkZWxldGVkIHdpbmRvd3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9jb21wb2JqLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi92ZXJzaW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbnRydXN0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZQoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJR2FlbCBkZSBDaGFsZW5kYXIgPEdhZWwuZGUuQ2hhbGVuZGFyQGxpbXNpLmZyPgoJQ29ycmVjdGVkIGEgdHlwbyBpbiBzcGVjIGZpbGUgYW5kIGFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglQbGF5U291bmRBIHNob3VsZCByZXR1cm4gVFJVRSB3aGVuIGl0IHN0b3BzIHBsYXlpbmcgc291bmQuCgoyMDAxLTA0LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3R0eWRydi93bmQuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS9tZXNzYWdlLmgsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvZm9jdXMuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCU1vdmVkIG1vc3Qgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNldFdpbmRvd1BvcyBhbmQgU2V0RHJhd2FibGUgaW50bwoJdGhlIHVzZXIgZHJpdmVyLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBpbnRvIHRoZSBkbGxzL3gxMWRydgoJZGlyZWN0b3J5LiBNb3ZlZCBhIGZldyBmdW5jdGlvbnMgb3V0IG9mIHRoZSB3aW5kb3cgZHJpdmVyIGludG8gdGhlCgl1c2VyIGRyaXZlci4gUGx1cyBhIGZldyByZWxhdGVkIGNsZWFudXBzLgoKCSogZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglTbWFsbCBjbGVhbnVwcy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBTWVNMRVZFTCBjaGVja3MgZnJvbSByZWxheSBkZWJ1Z2dpbmcsIHNpbmNlIHRoZXkgYnJlYWsgZGVidWdnaW5nCglidWlsdGluIEdESSBkbGxzLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHVzZSBXaW5kb3dzIHR5cGVzIGxpa2UgTE9OR0xPTkcgaW4gbXN2Y3J0IGhlYWRlcnMuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBtb3JlIGRpc2Fzc2VtYmx5IGluc3RydWN0aW9ucyAobm90YWJseSByZHRzYywgd2hpY2ggaXMgdXNlZAoJYnkgc2V2ZXJhbCBwcm9ncmFtcykgYW5kIG1vcmUgTU1YLgoKMjAwMS0wNC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2Ugc25wcmludGYgdG8gcHJldmVudCBidWZmZXIgb3ZlcmZsb3dzIGluIGZvcm1hdF9leGNlcHRpb25fbXNnLgoKCSogaW5jbHVkZS90Y2hhci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgdXNlIGJ5IFdpbmUncyBzb3VyY2UuCglBZGRlZCBtaXNzaW5nICdmdW5jdGlvbicgZGVmaW5pdGlvbnMgKG1hY3JvcyByZWFsbHkpLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG11c3Qgbm90IGZyZWUgdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgbG9jYWx0aW1lIChlc3BlY2lhbGx5IG5vdAoJd2l0aCBNU1ZDUlRfZnJlZSEpLgoJV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gaW5jbHVkZSBzdGRsaWIuaC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG9mZnNldG9mIChmb3IgdGhlIE1GQykuCgoJKiBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9oZWFwLmMsCgkgIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsCgkgIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oLCBpbmNsdWRlL21zdmNydC9zZWFyY2guaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1zdmNydC9tYWxsb2MuaCAoZm9yIHRoZSBNRkMpLgoJQWRkIG1zdmNydC9zZWFyY2guaC4KCU1vdmUgZHVwbGljYXRlZCBkZWZpbml0aW9ucyB0byB0aGUgbmV3IGhlYWRlcnMuCglVc2UgbWFsbG9jLmggaW5zdGVhZCBvZiBzdGRsaWIuaCB3aGVuIHNlbnNpYmxlLgoKCSogaW5jbHVkZS9tc3ZjcnQvY3J0ZGJnLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUHJvdmlkZSBsaW1pdGVkIHN1cHBvcnQgZm9yIHRoZSBtc3ZjcnQgZGVidWcgQVBJLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbGVzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIG1heSBub3QgaGF2ZSBiZWVuIHJlbmFtZWQuIFRyeSB0byBtYXRjaAoJYm90aCBmb3Jtcy4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsCgkgIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9tc2FjbS93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNhY2hlIGZvciBkcml2ZXJzIGluZm9ybWF0aW9uLgoJRml4ZWQgYSBmZXcgYnVncyAobWVtb3J5IGhhbmRsaW5nLCB2ZXJzaW9uIGluZm8uLi4pCglFbmhhbmNlZCB2YWxpZGl0eSBjaGVja3MuCgoJKiBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVzZSB0eXBlY2FzdHMgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgR2V0Q2hhckFCQ1dpZHRocyB3aXRoIEdldENoYXJXaWR0aC4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUV4dHJhY3RlZCBNRU1DSEVDSyBpbnRvIGFuIGV4dHJhIGZ1bmN0aW9uIHRvIGF2b2lkIGEgZ2NjLTIuOTUuMgoJY29tcGlsZXIgYnVnLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgTU1YIGRpc2Fzc2VtYmx5IHRvIHRoZSBkZWJ1Z2dlci4KCgkqIGRlYnVnZ2VyL2V4cHIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZ2V0dGluZyBhIHZhcmlhYmxlIGFkZHJlc3MuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmbG9hdCB2YXJpYWJsZXMgZGlzcGxheS4KCjIwMDEtMDQtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzoKCURvbWluaWsgU3RyYXNzZXIgPGRvbWluaWsuc3RyYXNzZXJAbWNocC5zaWVtZW5zLmRlPgoJQWxsb3cgaWxsZWdhbCBoYW5kbGVzIGluIEZpbmRDbG9zZS4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGZpbGVzL2RyaXZlLmMsIG9iamVjdHMvZGliLmMsIHRvb2xzL3dpbmVjb25mLAoJICBkZWJ1Z2dlci9leHRfZGVidWdnZXIuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogd2luZG93cy9wcm9wZXJ0eS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBtYWtlIHN1cmUgdGhhdCB3ZSByZWFsbHkgdXNlIHRoZSBjb3JyZWN0IGFtb3VudCBvZiBwYXJhbWV0ZXJzIGVhY2gKCSAgdGltZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uCgktIGFsd2F5cyBwYXNzIHN0cmluZ3MgaW5zdGVhZCBvZiBhdG9tcyB0byBXaW4zMiBlbnVtIHByb2MKCS0gZml4IHRyYWNlIGNyYXNoIGR1ZSB0byBzdHJpbmcgZm9ybWF0IGRpc3BsYXlpbmcgb2YgYXRvbSAoTE9XT1JECgkgIG9ubHkpIGhhbmRsZQoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9hZ2wuYywKCSAgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglTdG9yZSBlYWNoIGdseXBoIG5hbWUgb25seSBvbmNlIGluIFBvc3RTY3JpcHQgZHJpdmVyLgoKCSogb2JqZWN0cy9icnVzaC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglUYWtlIGEgc3RhYiBhdCBpbXBsZW1lbnRpbmcgU2V0U29saWRCcnVzaDE2LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIG9mZiBieSBvbmUgZXJyb3IgaW4gSW1hZ2VMaXN0X0RyYXdJbmRpcmVjdCgpLgoJRml4ZWQgc29tZSBtaXNzaW5nIE5VTEwgSElNQUdFTElTVCBjaGVjayAoZml4ZXMgTWljcm9zb2Z0IFdvcmtzCglzdGFydHVwKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRvIHJldHVybiBvdXIgdmFyaWFibGUgd2l0aCB0aGUgY29ycmVjdCByZXR1cm4gdmFsdWUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVZpcnR1YWxQcm90ZWN0IHNob3VsZCByZXR1cm4gY29ycmVjdCBvbGQgcHJvdGVjdGlvbiBmbGFncy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIE5vdGlmeSBwYXJlbnQgb2YgY2hpbGQgc2l6ZSBjaGFuZ2VzIHdoZW4gY2hhbmdlcyBhcmUgZnJvbSBXTV9TSVpFCgkgIG1lc3NhZ2VzLgoJLSBJZiBtb3JlIHRoYW4gb25lIGJhbmQgZXhpc3RzLCB0aGVuIGZpcnN0IGJhbmQgbWF5IGhhdmUgYSBncmlwcGVyLgoJLSBGaXggdGhlIGJhbmQgbGF5b3V0IGFsZ29yaXRobSB0byBoYW5kbGUgc29tZSBpc3N1ZXMgZnJvbSBXaW5BUkEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBDQl97R0VUfFNFVH1JVEVNREFUQSBmb3IgQ29tYkJveEV4LgoJLSBJbXBsZW1lbnQgV01fTkNDUkVBVEUgdG8gcmVtb3ZlIHVud2FudGVkIHdpbmRvdyBzdHlsZXMgKGFzIG5hdGl2ZSBkb2VzKS4KCS0gQ2xlYW4gdXAgc29tZSB0cmFjZXMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBmaWxlIGxvc3NhZ2UgaW4gc3ViZGlyZWN0b3JpZXMgb2YgYW4gJ2luY2x1ZGUnIGRpcmVjdG9yeSAoY2xvc2VzICMxNjMpLgoJV2hlbiBjYXNlIGZpeGluZyAjaW5jbHVkZXMsIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIGZpbGUgbWF5IGhhdmUKCWJlZW4gcmVuYW1lZCAoY2xvc2VzICMxNjEpLgoJQmV0dGVyIHN1cHBvcnQgb2YgJChTUkNESVIpIGluIC1JIGRpcmVjdGl2ZXMuCglSVEYgd2FzIG5vdCByZWNvZ25pc2VkIGluIHJjIGZpbGVzIGJlY2F1c2UgaXQgd2FzIGluIHRoZSB3cm9uZyBwbGFjZS4KCUVzY2FwZSB3ZWlyZCBjaGFyYWN0ZXJzIHdoZW4gcHV0dGluZyB0aGUgcmMgZmlsZW5hbWUgaW4gdGhlIHNwZWMgZmlsZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglBZGRlZCBXSU5FUFJFTE9BRCB0byBtYW4gd2luZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCURvbWluaWsgU3RyYXNzZXIgPGRvbWluaWsuc3RyYXNzZXJAdC1vbmxpbmUuZGU+CglEb24ndCB1c2UgUlRTQ1RTIGlmIFN0ciBoYW5kc2hha2UgaXMgZW5hYmxlZC4KCVVzZSBhcHByb3ByaWF0ZSBVbml4IHRpbWVvdXQgdmFsdWVzIGluIFNldENvbW1UaW1lb3V0cy4KCjIwMDEtMDQtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMTA0MTguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDQtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluOiBGaXhlZCBzZXR1cGFwaSBkZXBlbmRlbmNpZXMuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUdldEFzeW5jS2V5U3RhdGUgbm93IGNsZWFycyAiaGFzIGJlZW4gcHJlc3NlZCIgaW5mb3JtYXRpb24gb2Ygb25seSB0aGUKCXJlcXVlc3RlZCBrZXkgaW5zdGVhZCBvZiBhbGwga2V5cy4KCgkqIHdpbmRvd3MvZGNlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCU5vIG5lZWQgdG8gcHJlYWxsb2NhdGUgRENFcyBzaW5jZSB0aGV5IGFyZSBhbGxvY2F0ZWQgb24gZGVtYW5kCglhbnl3YXkuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS9kY2UuaDoKCU1vdmVkIERDWF8qIGNvbnN0YW50cyB0byB3aW51c2VyLmguCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmgsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywKCSAgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmg6CglSZW1vdmVkIGEgZmV3IG9ic29sZXRlIGZpbGVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IERHQSBzbyBpdCB3b3JrcyBwcm9wZXJseSBhZ2Fpbi4KCgkqIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGQgXG4gdG8gRklYTUUgY2FsbCBpbiBhY21HZXRWZXJzaW9uIHRvIHByZXZlbnQgb3ZlcmZsb3dpbmcgYnVmZmVyIGluCgl3aW5lX2RiZ192cHJpbnRmLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRWxpbWluYXRlIHVuaXRpYWxpemVkIGdhcmJhZ2UgYmVpbmcgcmV0dXJuZWQgZnJvbSBMSVNUVklFV19HZXRJdGVtQS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglFbmhhbmNlZCB0aGUgcHJhZ21hIHBhY2sgaGFuZGxpbmcuCglFbmhhbmNlZCB0aGUgJ2FmeHJlcy5oJyBoYW5kbGluZyAodGhlIGluZGVudGF0aW9uKS4KCVN0YXJ0IGlzc3Vpbmcgd2luZW1ha2VyJ3Mgd2FybmluZ3MgaW4gdGhlIHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzLgoKMjAwMS0wNC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgd2luZG93cy9tZXNzYWdlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEbyBub3Qgc2VuZCBXTV9NT1VTRUFDVElWQVRFIGZvciBjaGlsZHJlbiBvZiBkZXNrdG9wLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9oYWwuaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS9oYWwuYywKCSAgZGxscy9kZHJhdy9kcGFsZXR0ZS9oYWwuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuaCwgZGxscy9kZHJhdy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIERpcmVjdERyYXcncyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciAoSEFMKSBpbnRlcmZhY2UuCglEaXNhYmxlZCBEaXJlY3REcmF3J3Mgb2xkIFhWaWRNb2RlIGFuZCBER0EyIGRyaXZlcnMsIGl0IG5vdyBkZXBlbmRzIG9uIHRoZQoJZGlzcGxheSBkcml2ZXIgKHgxMWRydikgSEFMIGltcGxlbWVudGF0aW9ucyBvZiB0aGVzZSBmZWF0dXJlcy4KCgkqIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLAoJICBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfcHJpdmF0ZS5oLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGltcGxlbWVudCBzb21lIG1vcmUgdmlydGNvcHkgKFZDUCkgc3R1ZmYKCS0gYWRkIHNvbWUgc2V0dXB4IHJlc291cmNlcwoJLSBpbXBsZW1lbnQgVkhTVFIgZnVuY3Rpb25hbGl0eQoJLSBsYXJnZSBwYXJ0cyBvZiBWQ1AgY2FsbGJhY2sgaGFuZGxpbmcKCS0gbWVyZ2Ugc2V0dXBhcGkgYW5kIHNldHVweCBzdHVmZiwgZXNwZWNpYWxseSByZXNvdXJjZSBoYW5kbGluZwoJICBnZXRzIHJpZCBvZiBzZXR1cHggZGVidWcgY2hhbm5lbDsgc2V0dXBhcGkgaXMgdGhlIG9ubHkgb25lIHRoYXQgcmVtYWlucwoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWJ0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGlidGV4dHVyZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmVkIHRoZSBvYnNvbGV0ZSBESUJUZXh0dXJlIHN1cmZhY2UgY2xhc3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRmlsbCBpbiBzb21lIG1vcmUgSEFMIGZpZWxkcy4gRmxpcCBzb21lIG9mIHRoZW0gd2hlbiBhcHByb3ByaWF0ZS4KCUFsbG93IFNldFN1cmZhY2VEZXNjIHRvIGNoYW5nZSBjbGllbnQgbWVtb3J5IHN1cmZhY2UgYWRkcmVzcy4KCVByb3BhZ2F0ZSBESUIgY29sb3IgdGFibGUgdXBkYXRlcyB0byBiYWNrYnVmZmVycyB0b28gKHRoYW5rcyB0bwoJU3RlcGhlbiBDbG91c2UpLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaWxsIGluIHNvbWUgRGlyZWN0RHJhd1BhbGV0dGUgSEFMIGZpZWxkcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuaCwKCSAgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5oLAoJICBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlZCBVc2VyX0RpcmVjdERyYXdfR2V0Q2Fwcy4gVXNpbmcgTWFpbl9EaXJlY3REcmF3X0dldENhcHMgaW5zdGVhZCwKCWFuZCB0aGUgVXNlciBjb25zdHJ1Y3RvciBmaWxsaW5nIGluIHRoZSBtYWluIGNhcGFiaWxpdHkgYml0cy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRmlsbCBpbiBzb21lIG9mIHRoZSBkZHJhdyBIQUwgZmllbGRzLgoJQ2FsbCB0aGUgc2V0X2V4Y2x1c2l2ZV9tb2RlIGNhbGxiYWNrIHdoZW4gbmVjZXNzYXJ5LgoJQWRkZWQgYSBNYWluX0RpcmVjdERyYXdfR2V0Q2FwcyBtZXRob2QuCglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gb2Jzb2xldGUgRElCVGV4dHVyZSBzdXJmYWNlIGNsYXNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBnYW1tYSBjb250cm9sIG9uIHRoZSBEaXJlY3REcmF3IHByaW1hcnkgd2luZG93LgoJRW5zdXJlZCB0aGF0IHRoZSBwcmltYXJ5IHdpbmRvdyBpcyBjcmVhdGVkIGJlZm9yZSB0aGUgY29uc3RydWN0b3IgcmV0dXJucy4KCUZsYWcgdGhlIHByaW1hcnkgd2luZG93IGFzIHRyYW5zcGFyZW50IHNvIG1vdXNlIGNsaWNrcyBwYXNzIHRocm91Z2ggaXQuCglQdXQgdGhlIHByaW1hcnkgd2luZG93IGhhbmRsZSBpbnRvIGEgcmVzZXJ2ZWQgZmllbGQgZm9yIHgxMWRydiBIQUwgdXNlLgoKCSogZGxscy9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHR5cG8gc28gdGhhdCB3aW50cnVzdCBpcyBidWlsdC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJQWRkIGEgbWlzc2luZyA8L3NlY3QzPi4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJVXNlIG9mIHByb3BlciB0ZXN0IGdldHMgcmlkIG9mIGEgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgZGRyYXcgSEFMIGFjY2VzcyBlc2NhcGUgKERDSUNPTU1BTkQpIGluIHgxMWRydi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBzZW5kaW5nIG9mIFdNX0RSQVdJVEVNIG1lc3NhZ2UgdG8gb3duZXJkcmF3bgoJY29tYm9ib3guCgoyMDAxLTA0LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2xzdHIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IHNvbWUgY3Jhc2ggb24gYmFkIHBhcmFtZXRlciBjb25kaXRpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIF93dG9pIGFuZCBfd3RvbC4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L2RnYTIuaCwKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZGRyYXcuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIFhGODZER0EyIGRyaXZlciBmb3IgdGhlIGRkcmF3IEhBTC4KCUVudGVyZWQgc29tZSBiYXNpYyBIQUwgZGV2aWNlIGNhcGFiaWxpdGllcyBkYXRhLgoJQWRkZWQgYSBHZXREcml2ZXJJbmZvIGhhbmRsZXIuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50cnVzdC8uY3ZzaWdub3JlLCBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkZWQgbmV3IGRsbCB3aW50cnVzdC5kbGwgd2l0aCBhIHN0dWIgZm9yIFdpblZlcmlmeVRydXN0KCkuCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2dhbW1hLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIElEaXJlY3REcmF3R2FtbWFDb250cm9sIGludGVyZmFjZS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHBkLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIHBhcGVyIHNpemUgYW5kIGJpbiB0eXBlIGhhbmRsaW5nIG1vcmUgbGlrZSBXaW5kb3dzIGRyaXZlcnMuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgTlVMTCBjaGVjayBmb3IgbHBuRml0IGluIEdldFRleHRFeHRlbnRFeFBvaW50Vy4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsCgkgIHRzeDExL3RzX3hsaWIuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglDb3B5IHRoZSBmaXJzdCAxMjggY29sb3JzIGZyb20gdGhlIGRlZmF1bHQgY29sb3JtYXAgdG8gV2luZSdzIHByaXZhdGUKCWNvbG9ybWFwIHdoZW4gdXNpbmcgJ3NoYXJlZCcgY29sb3JzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglMZXQgTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIGxvYWQgdGhlIGJ1aWx0aW4gZGxsIGlmIGxvYWRpbmcgYSBuYXRpdmUKCURMTCBmYWlsZWQsIHNvIHRoYXQgd2luZXNldHVwdGsncyBmYWtlLXdpbmRvd3MgaW5zdGFsbGF0aW9uIHdvcmsuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2xpZ2h0bHkgaW1wcm92ZSBrZXlib2FyZCB0cmFja2luZyBpbiBjb21ib2JveC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURhbiBFbmdlbCA8ZGVuZ2VsQHNvdXJjZWhhcnZlc3QuY29tPgoJU2V0IHRoZSBiYWNrZ291bmQgbW9kZSB0byBvcGFxdWUgdG8gcGFpbnQgaGlnaGxpZ2h0ZWQgdGV4dC4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uaCwgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBkZHJhdyBIQUwgYW5kIGdhbW1hIHJhbXAgc3R1ZmYgdG8gaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcy4KCUFkZGVkIGEgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgdG8gZmxpcF9kYXRhIGFuZCBmbGlwX3VwZGF0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgQ29lcmNlRElCU2VjdGlvbidzIEF1eE1vZCBoYW5kbGluZy4gQWRkZWQgQ29lcmNlRElCU2VjdGlvbjIuCgoJKiBvbGUvdXVpZC5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUluY2x1ZGUgdGhlIEdVSURzIGluIGRkcmF3aS5oIGluIHRoZSBsaWJ3aW5lX3V1aWQuYSBsaWJyYXJ5LgoKCSogaW5jbHVkZS9kZHJhd2kuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJWWV0IG1vcmUgc3R1ZmYgZm9yIGRkcmF3aS5oLCBpbmNsdWRpbmcgc29tZSBHZXREcml2ZXJJbmZvIEdVSURzLgoKCSogZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvdmVyc2lvbi5yYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkIHZlcnNpb24gcmVzb3VyY2UgdG8gZGRyYXcuZGxsLCB2ZXJzaW9uZWQgdG8gRGlyZWN0WCA3LjAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUdldEl0ZW1TcGFjaW5nKHRydWUpOiBSZXR1cm4gdGhlIGRlZmF1bHQgaXRlbSBzcGFjaW5nIGlmIHRoZSB2aWV3IGlzCglMVlNfSUNPTiwgYW5kIHRoZSBjdXJyZW50ICdpdGVtIHNpemUnIG90aGVyd2lzZS4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEaXNwbGF5IHRocmVhZCBpZCBpbnN0ZWFkIG9mICVmcyBpbiBzbm9vcCB0cmFjZS4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRG9uJ3QgcmVzdG9yZSB0aGUgc2F2ZWQga2V5Ym9hcmQgYXV0b3JlcGVhdCBjb25maWcsIHNpbmNlIHRoZSBjb25maWcKCXNhdmUgY29kZSBpdHNlbGYgd2FzIGRpc2FibGVkIGEgd2hpbGUgYWdvLi4uCgoJKiBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZDNkdmVjLmlubCwgaW5jbHVkZS9kM2QuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRGlyZWN0M0QgaGVhZGVyIHVwZGF0ZS4KCgkqIGluY2x1ZGUvZDNkaGFsLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU5ldyBoZWFkZXIgZDNkaGFsLmgsIHRoZSBEaXJlY3QzRCBIQUwgZGV2aWNlIGRyaXZlciBpbnRlcmZhY2UuCgoJKiBkbGxzL21zdmNydC93Y3MuYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglIYW5kbGUgdGhlICVmIGNhc2UgaW4gd3NwcmludGYuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ2hhbmdlZCB0aGUgc3BlYyBkZWZpbml0aW9uIG9mICpzKnByaW50ZiBmcm9tICpzdHIgdG8gcHRyLCBzaW5jZSB0aGF0CglwYXJhbWV0ZXIgaXMgYSBkZXN0aW5hdGlvbiBidWZmZXIgdGhhdCBtYXkgb25seSBjb250YWluIGdhcmJhZ2Ugb24gZW50cnkuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsCgkgIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmMsIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmU6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCB2ZXJzaW9uIHJlc291cmNlIHRvIGRwbGF5eC5kbGwsIHZlcnNpb25lZCB0byBEaXJlY3RYIDcuMC4KCgkqIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUdlbmVyYWxpemUgdGhlIFdpbmUgdmVyc2lvbiByZXNvdXJjZSB0ZW1wbGF0ZSBhIGJpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfS28ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlICJTeXN0ZW0iIGZvbnQgYnkgIkhlbHYiIGluIHNoZWxsMzIgIkFib3V0IiBkaWFsb2cuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIE9MRTMyLklzQWNjZWxlcmF0b3IuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBTVEdfRV9GSUxFQUxSRUFEWUVYSVNUUyBpbiBvbGUzMi5TdGdPcGVuU3RvcmFnZSBpZiB0aGUgZmlsZSBpcwoJbm90IGEgc3RvcmFnZSBvYmplY3QuCgoJKiBvYmplY3RzL2RjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBpbXBsZW1lbnRhdGlvbiBvZiBDcmVhdGVEQzE2IHRvIENyZWF0ZURDQS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJQWxsb2NhdGUgYml0bWFwIG9iamVjdHMgaW4gdGhlIGxhcmdlIGhlYXAgYXJlYS4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIDAgY291bnQgaGFuZGxpbmcgaW4gUFNEUlZfVGV4dC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBNUyBTaGVsbCBEbGcgZm9udCB0byB0aGUgc2V0IG9mIGRlZmF1bHQgc2FucyBzZXJpZiBmb250cy4KCgkqIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgTVNWQ1JUX2Nsb2NrIHJldHVybiB0eXBlLgoKMjAwMS0wNC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCUFkZGVkIG1pc3NpbmcgPGxpc3RpdGVtPi4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuaDoKCVJlcGFpcmVkIHNoYXJlZCBQRSBkYXRhIHNlY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBub3RlIG9uIHVzaW5nIHNoZWxsIHNjcmlwdHMgYXMgQWVEZWJ1ZyBzZXR1cCwgYWRkZWQKCUJyZWFrT25EbGxMb2FkIHZhcmlhYmxlLgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQSBmZXcgZml4ZXMuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvcGVuaW5nIG9mIHNvbWUgZHJpdmVycy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNhbGxiYWNrIHBhcmFtZXRlcnMgKGJvZ3VzIGhXYXZlKTsgYWRkZWQgYWNtIGNvbnZlcnNpb24gZm9yCgl3YXZlSW4uCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGxvdyBNQ0lfU0VUIHRvIGNoYW5nZSB3YXZlRm9ybWF0IGZvciByZWNvcmRpbmcuCglGaXhlZCBidWZmZXIgaGFuZGxpbmcgb24gcmVjb3JkaW5nIGVuZC4KCUZpeGVkIHNpemUgb2YgcmVjb3JkZWQgZGF0YSBpbiBtbWlvIGZpbGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWZmZXJzIGlzc3VlIGluIHJlY29yZGluZy4KCVplcm9lZCB1bm5lY2Vzc2FyeSBzZWNvbmQgcGFyYW1ldGVyIGZvciBXSU1fREFUQSBub3RpZmljYXRpb24uCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIHJvYnVzdG5lc3MgYXQgc3RhcnR1cC4KCgkqIHdpbmRvd3MvbXNnYm94LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBNQl8qTU9EQUwgc3R5bGVzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gKmRvbid0KiBNb3ZlV2luZG93KCkgdGhlIHN0YXR1cyBiYXIgaWYgQ0NTX05PUkVTSVpFIGlzIHNwZWNpZmllZCwKCSAgYW5kIHVzZSBTZXRXaW5kb3dQb3MgaW5zdGVhZCBmb3Igb25lIG9mIHRoZSBNb3ZlV2luZG93KClzCgktIGNhbGwgU1RBVFVTQkFSX0dldEluZm9QdHIgKm9uY2UqIGxpa2UgV2luZG93cyBkb2VzLCBub3QgdHdpY2UgKHVzZWQgdG8gYmUKCSAgaW4gZXZlcnkgc3ViIGZ1bmN0aW9uLCB0b28pCgktIHJlbWVtYmVyIGh3bmRQYXJlbnQgZnJvbSBjcmVhdGUgc3RydWN0IHRvIHVzZSBpbiBhdCBsZWFzdCBXTV9DUkVBVEUgYW5kCgkgIFdNX1NJWkUgaW5zdGVhZCBvZiBHZXRQYXJlbnQoKSBsaWtlIGluIFdpbmRvd3MKCS0gYWRkZWQgRGVmV2luZG93UHJvYyBjYWxsIHRvIFdNX1NJWkUgbGlrZSBpbiBXaW5kb3dzCgktIGFkZGVkIEludmFsaWRhdGVSZWN0LCBVcGRhdGVXaW5kb3cgdG8gV01fQ1JFQVRFIGxpa2UgaW4gV2luZG93cwoJLSBtdWNoIG1vcmUgdmVyYm9zZSArc3RhdHVzYmFyIG91dHB1dAoJLSByZW5hbWUgcGFydF9udW0gdG8gblBhcnQgZm9yIGNvbnNpc3RlbmN5CgktIGFkZGVkIG5jbG0uY2JTaXplIHRvIFN5c3RlbVBhcmFtZXRlcnNJbmZvQSBjYWxsCgktIGFkZGVkIEZJWE1FIHRvIFNUQVRVU0JBUl9TZXRQYXJ0cwoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU2V0IHRoZSBjdXN0b20gZGlhbG9nIGJveCB0byB0aGUgYm90dG9tIG9mIHRoZSBaLW9yZGVyLgoKMjAwMS0wNC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGluaXQuaCwgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLAoJICBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS91dWlkLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBQcm92aWRlIGxvYmJ5IHByb3ZpZGVyIENPTSBvYmplY3QgaGVhZGVyIGZpbGUgYW5kIHN0dWIgaW1wbGVtZW50YXRpb24KCS0gQnJlYWsgb3V0IGRwbCBhbmQgZHAgc2VydmljZSBwcm92aWRlciBpbnRpYWxpemF0aW9uCgktIEFkZCBtaXNzaW5nIGRlZmluaXRpb24gb2YgRV9QRU5ESU5HCgktIFJlc29sdmUgYSBmZXcgZml4bWVzCgktIEZpeCBpbmNsdWRlcyBmb3IgZHBsYXkuaAoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBZGRlZCBmaXJzdC9sYXN0IG1lc3NhZ2UgZmlsdGVycyB0byBNU0dfSW50ZXJuYWxHZXRNZXNzYWdlIHRvIGF2b2lkCglidXN5IHdhaXRzLgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5jb24uaCwKCSAgd2luMzIvY29uc29sZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gYWRkZWQgc3R1YnMgZm9yIHRocmVlIGNvbnNvbGUgZnVuY3Rpb25zCgktIHVwZGF0ZWQgd2luY29uLmgKCgkqIG9sZS9vbGUybmxzLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTbWFsbCB0eXBvIGZpeC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTZXRXaW5kb3dSZ24gc2hvdWxkbid0IGFjdGl2YXRlIHRoZSB3aW5kb3cuCgoyMDAxLTA0LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBzaWduYXR1cmUgb2YgX19HZXRNYWluQXJncyBhbmQgX19nZXRtYWluYXJncyAoZnJvbSBtc3ZjcnQpLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsCgkgIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsCgkgIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhpdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jLCBkbGxzL21zdmNydC93Y3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSB0aGUgbXN2Y3J0IGhlYWRlcnMsIHJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbnMuCglGaXhlZCB0aGUgc2lnbmF0dXJlIG9mIGEgZmV3IGZ1bmN0aW9ucy4KCURvbid0IHVzZSB3Y3MqIGZ1bmN0aW9ucywgdXNlICpXIChmcm9tIHVuaWNvZGUuaCkgaW5zdGVhZC4KCgkqIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmV2ZW50IG11bHRpcGxlIGRlZmluaXRpb25zIGNhdXNlZCBieSBNU1ZDUlQgaGVhZGVycy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsb3cgdGhlIE1ha2VmaWxlLmluIHRvIGRlZmluZSBFWFRSQURFRlMgYW5kIGFkZCBpdCB0byBERUZTLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3RpbWViLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL21zdmNydC9zeXMvdXRpbWUuaCwKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9mY250bC5oLCBpbmNsdWRlL21zdmNydC9pby5oLAoJICBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIGhlYWRlcnMgZm9yIHRoZSBtc3ZjcnQgbGlicmFyeS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBtYXBwaW5ncyBmb3IgV01fQ0hBUlRPSVRFTSBhbmQgV01fTUVOVUNIQVIgbWVzc2FnZXMuCglSZW1vdmVkIG1hcHBpbmcgb2YgMTYtYml0IGVkaXQgbWVzc2FnZXMgaW4gdGhlIGdlbmVyaWMgcm91dGluZXMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglQYXNzIHRoZSBjb3JyZWN0IHN0cmluZyBsZW5ndGggdG8gUmVnU2V0VmFsdWVFeEEuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglSZWdTZXRWYWx1ZUV4QS9XOiBmaXhlZCBSRUdfU1ogc3RyaW5nIGxlbmd0aCBoYW5kbGluZyBmb3IgV2luOTUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFdTQVNlbmQuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIFxcUmVnaXN0cnkgcHJlZml4LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVN0dWIgZm9yIE9sZUxvYWRQaWN0dXJlRXguCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXggZm9yIHNtYWxsIHR5cG8uCgoJKiBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jdHlwZS5jLAoJICBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsCgkgIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLAoJICBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGp1c3QgdGhlICdNU1ZDUlRfJyBwcmVmaXggdG8gbWF0Y2ggdGhlIG1zdmNydCBoZWFkZXJzCglQcmVmaXggaW50ZXJuYWwgbWV0aG9kcyB3aXRoICdtc3ZjcnRfJyBpbnN0ZWFkIG9mICdNU1ZDUlRfJywgJ19fTVNWQ1JUXycsIGV0Yy4KCVJlbW92ZSAnX2NkZWNsJywgaXQncyB1bm5lY2Vzc2FyeQoKMjAwMS0wNC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3QucGwsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHMsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmM6CglTdG9yZSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpbiB0aGUgJXByb3RvdHlwZXMgaGFzaCBpbnN0ZWFkIG9mIHRoZQoJZnVuY3Rpb24gbmFtZSB0byBhdm9pZCBsb29raW5nIGl0IHVwIG9uIGV2ZXJ5IGNhbGwuCglGaXhlZCBjYWxsYmFjayB0aHVua3MgdG8gdXNlIHN0ZGNhbGwgY2FsbGluZyBjb252ZW50aW9uLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGlzcGxheSB0aHJlYWQgaWQgaW5zdGVhZCBvZiAlZnMgaW4gcmVsYXkgdHJhY2UuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglGaWxsIGluIFN0YW5kYXJkTmFtZSBmaWVsZCBpbiBzdHJ1Y3QgcmV0dXJuZWQgZnJvbSBHZXRUaW1lWm9uZUluZm9ybWF0aW9uLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBzdHVicyBmb3IgZnVuY3Rpb25zIHVzZWQgYnkgbmV3ZXIgcnBjcnQ0IGRsbHMuCgoJKiBvYmplY3RzL2RjLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJR2V0RGV2aWNlQ2FwczogbWFrZSBzdXJlIHRoZSBkZXZDYXBzIGZpZWxkIGlzIG5vdCBOVUxMIGJlZm9yZQoJZGVyZWZlcmVuY2luZyBpdC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQXJnIDMgb2YgQ29HZXRDbGFzc09iamVjdCBpcyBDT1NFUlZFUklORk8qLCBhZGRlZCBzb21lIG1vcmUgZGVidWcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJhbnNsYXRpb25zIGZvciBHZXJtYW4gbGFuZ3VhZ2UuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIEdldENvbnZlcnRTdGcgc3R1Yi4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWxseSBwcmludCB0aGUgZ3VpZHMgaW4gRGxsR2V0Q2xhc3NPYmplY3QoKS4KCgkqIFJFQURNRSwgdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCB1bmluc3RhbGwgaGludHMuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglNb2RpZnkgZGVidWdnZXIgdG8gdW5kZXJzdGFuZCBzcGVjaWFsIHVuZG9jdW1lbnRlZCAiTmFtZSBUaHJlYWQiCglleGNlcHRpb24gZnJvbSBNUyBWQzYuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVhbGx5IGRvIG5vdCByb2xsIHVwIGlmIHNlbGVjdGlvbiBpcyBiZWluZyB0cmFja2VkIGJ5IGFycm93IGtleXMgaW4KCXRoZSBkcm9wZG93biBsaXN0Ym94LgoKCSogZGxscy91c2VyL2RkZW1sLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglXaGVuIGNhbGxpbmcgQ3JlYXRlTXV0ZXgoKSBoYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgbXV0ZXggaXMgYWxyZWFkeQoJY3JlYXRlZCBpbiBhbm90aGVyIHByb2Nlc3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBZnRlciBhbiBpdGVtIHRleHQgY2hhbmdlcywgdGhlIHJlY3RhbmdsZSB3aWR0aCBzaG91bGQgYmUKCXJlY2FsY3VsYXRlZC4KCjIwMDEtMDQtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOgoJRG9uJ3QgdXNlIFRIUkVBRF9JZFRvVEVCIGluIEVudW1UaHJlYWRXaW5kb3dzLgoKCSogdW5pY29kZS93Y3RvbWIuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSAndXNlZCcgaXMgc2V0IHRvIDAgaWYgbm8gY29udmVyc2lvbnMgdGFrZSBwbGFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCBzY3JvbGxpbmcgb2YgbGlzdHZpZXcgd2l0aCBhIG1vdXNlIHdoZWVsLgoKCSogb2xlL29sZTJubHMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUltcGxlbWVudCBUSU1FX0ZPUkNFMjRIT1VSRk9STUFUIGFuZCBUSU1FX05PVElNRU1BUktFUiBmbGFncyBpbgoJT0xFX0dldEZvcm1hdEEuCgoJKiB3aW5kb3dzL3dpbnByb2MuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGZpbGVzL2RyaXZlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbXNkb3MvaW50MjEuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQWRkZWQgVEFTS19HZXRQdHIvVEFTS19HZXRDdXJyZW50IGZ1bmN0aW9ucyB0byBnZXQgdGhlIFREQiBmb3IgYSB0YXNrCgloYW5kbGUuCgoJKiBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL3Rhc2suYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVuaWZpZWQgMTYtYml0IGFuZCAzMi1iaXQgc2NoZWR1bGluZyBhIGJpdCBtb3JlLgoKCSogbXNkb3MvZG9zY29uZi5jOgoJRG9uJ3QgY2FsbCBzdHJ0b2sgdHdpY2UgaWYgaXQgZmFpbGVkIHRoZSBmaXJzdCB0aW1lLgoKCSogc2VydmVyL3JlcXVlc3QuYzoKCU1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBzb2NrZXQgaXMgbm9uLWJsb2NraW5nLgoJRG9uJ3QgZmFpbCBpZiBub3RoaW5nIHJlYWR5IG9uIHJlY3Ztc2cgZm9yIGEgZmlsZSBkZXNjcmlwdG9yLgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG9iamVjdHMvZm9udC5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG1lbWJlciBuYW1lcyBpbiBORVdURVhUTUVUUklDRVggc3RydWN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUVyYXNlIHRoZSBpbi1tZW1vcnkgREMgZm9yIHRyZWV2aWV3IGFuZCBmaXhlcyB0aGUgcmVjdGFuZ2xlIGNhbGN1bGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVNldCBiYWNrZ3JvdW5kIG1vZGUgdG8gdHJhbnNwYXJlbnQgYmVmb3JlIGNhbGxpbmcgb3duZXItZHJhd24gdXNlcgoJaGFuZGxpbmcuCgoyMDAxLTA0LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2ZvbnQuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9wc2Rydi5yZWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVZhcmlvdXMgcmVnaXN0cnktcmVsYXRlZCBQb3N0U2NyaXB0IGRyaXZlciBlbmhhbmNlbWVudHMuCgoJKiBjb250cm9scy9lZGl0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG8gbm90IHNlbmQgdGhlIEVOX0NIQU5HRSBub3RpZmljYXRpb24gbWVzc2FnZSB1bnRpbCB0aGUgc2VsZWN0aW9uCglzdGFydCBhbmQgZW5kIHZhbHVlcyBhcmUgZmlsbGVkIGluLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUd1c3Rhdm8gTm9yb25oYSBTaWx2YSAoS29WKSA8a292QGRlYmlhbi5vcmc+CglBZGRlZCBVUyBpbnRlcm5hdGlvbmFsIGtleWJvYXJkLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZCB2YWx1ZSAxMDYgdG8gU3lzdGVtUGFyYW1ldGVyc0luZm8uCgoyMDAxLTAzLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuUEwsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS53aW4zMiwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54cywgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYzoKCUpvaG4gRiBTdHVydHogPGpzdHVydHpAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvbid0IHRyeSB0byBjcmVhdGUgZmlsZSB0d2ljZSBpbiB0aGUgTlVMTCBmaWxlbmFtZSBjYXNlIGZvcgoJU3RnQ3JlYXRlRG9jRmlsZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBmb3JtYXQgZW5naW5lIHRvIHJlZHVjZSBmbGlja2VyLgoKMjAwMS0wMy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBZGRlZCBzdXBwb3J0IGZvciBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBhIGZldyBvcHRpb25zCgkoRGVza3RvcCwgTWFuYWdlZCwgU2NyZWVuRGVwdGggYW5kIFN5bmNocm9ub3VzKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdW5kZWZpbmVkIEMgY29uc3RydWN0cyAodmFsIGFzc2lnbm1lbnQgaW4gZXhwcmVzc2lvbnMgdXNpbmcgaXQsCglwb3N0aW5jIG9wZXJhdG9ycyBpbiBtYWNyb3MpLgoKCSogbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmM6CglEb24ndCBsb2FkIHVzZXIzMiB0b28gZWFybHkgb24gZm9yIDE2LWJpdCBhcHBzLCBzbyB0aGF0IGFwcC1zcGVjaWZpYwoJY29uZmlnIGNhbiBiZSBhdmFpbGFibGUgd2hpbGUgbG9hZGluZyBpdC4KCgkqIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR2V0IGFuZCBwcmludCBjbGFzcyBuYW1lIGZvciByaWdodCB3aW5kb3cgaW4gV0lOX1dhbGtXaW5kb3dzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy91c2VyL3VzZXIuc3BlYywKCSAgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMTYuaDoKCUFsd2F5cyBsb2FkIHRoZSAzMi1iaXQgZGxsIGNvbnRhaW5pbmcgYSBnaXZlbiAxNi1iaXQgYnVpbHRpbi4KCUNoZWNrIHRoZSBtb2R1bGUgbmFtZSBpbiBhZGRpdGlvbiB0byB0aGUgZmlsZSBuYW1lIHdoZW4gbG9hZGluZyBhCgkxNi1iaXQgYnVpbHRpbiBkbGwuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLAoJICB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CgktIEFsd2F5cyB1c2UgYSBkb3VibGUtYnVmZmVyZWQgdmlzdWFsIGlmIG9uZSBpcyBhdmFpbGFibGUuCgktIEVuc3VyZSB0aGF0IGFsbCBjb2xvcm1hcHMgY3JlYXRlZCB1c2UgdGhlIGRvdWJsZS1idWZmZXJlZCB2aXN1YWwgaWYKCSAgaXQgZXhpc3RzLiBUaGlzIHByZXZlbnRzIHByb2JsZW1zIHdoZXJlIERSSSBHTCBpbXBsZW1lbnRhdGlvbnMgZmFpbAoJICB0byB3b3JrIHVubGVzcyB0aGUgY29sb3JtYXAgdmlzdWFsIG1hdGNoZXMgdGhlIHdpbmRvdyB2aXN1YWwgbWF0Y2hlcyB0aGUKCSAgZ2xYIHZpc3VhbC4KCS0gR2V0IGFyb3VuZCBzaW1pbGFyIHZpc3VhbCBpc3N1ZSB3aXRoIHRoZSBkZWZhdWx0IEdMIGNvbnRleHQgY3JlYXRlZCBmb3IKCSAgYXBwcyB0aGF0IGRvbid0IGNyZWF0ZSB0aGVpciBvd24gY29udGV4dHMgYmVmb3JlIHRyeWluZyB0byB1c2UgR0wgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUZpeGVkIGNvbW1hbmQtbGluZSBleGFtcGxlLgoKMjAwMS0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFOgoJUmVsZWFzZSAyMDAxMDMyNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBhZGRpdGlvbmFsIGRlZmF1bHRzIGFuZCBzYW1wbGVzIHRvIFtmb250c10gc2VjdGlvbi4KCjIwMDEtMDMtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL29wdGlvbnMuYywgd2luZG93cy9kY2UuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUNsZWFudXAgcHJvcGVybHkgb24geDExZHJ2IHVubG9hZGluZy4KCU1vdmVkIC0tc3luY2hyb25vdXMgb3B0aW9uIGludG8gY29uZmlnIGZpbGUuCglSZW1vdmVkIC0tZGVza3RvcCwgLS1kaXNwbGF5IGFuZCAtLWxhbmd1YWdlIGNvbW1hbmQtbGluZSBvcHRpb25zLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCS0gTUNJX1NBVkUgc2hvdWxkIG92ZXJ3cml0ZSBpdHMgZGVzdGluYXRpb24gZmlsZS4KCS0gd2lkQ2xvc2UoKSBpcyBzb21ldGltZXMgZmFpbGluZy4uLiBNQ0kgKGluIFdBVkVfbWNpUmVjb3JkQ2FsbGJhY2spCgkgIHNob3VsZG4ndCBxdWV1ZSB1cCBidWZmZXJzIGlmIGl0IGtub3dzIHdlIGFyZSBubyBsb25nZXIgcmVjb3JkaW5nLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBmaWxlcy9wcm9maWxlLmMsIG1lbW9yeS9sb2NhbC5jLAoJICBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHdpbmRvd3MvdXNlci5jOgoJU21hbGwgZGxsIHNlcGFyYXRpb24gZml4ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglVc2UgVEVCIHN0YXRpYyBidWZmZXIgZm9yIFVuaWNvZGUgY29udmVyc2lvbi4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBvZiAuaHBwIGZpbGVzIChhbm90aGVyIGV4dGVuc2lvbiBmb3IgQysrIGhlYWRlcnMpLgoJVGhlIHdyYXBwZXIgY29kZSBuZWVkcyB0byBpbXBvcnQgZGxscyB0b28uCglBbGwgdGhlIGdlbmVyYXRlZCB3cmFwcGVyIGZpbGVzIHdlcmUgaWRlbnRpY2FsLCB0aGUgJ3ZhcmlhYmxlJwoJc3Vic2l0dXRpb24gd2FzIGRvbmUgb24gdGhlIHRlbXBsYXRlIGl0c2VsZi4gT3VwcyEKCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydFZlcnNpb25JbmZvMzJUbzE2OiB0aGUgZW5kIG9mIHRoZSBjaGlsZCBsaXN0IG1heSBhbHNvIGJlIG1hcmtlZAoJYnkgYSAwLWJ5dGUgY2hpbGQuCgoyMDAxLTAzLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLAoJICBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvYXN5bmMuYywKCSAgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCVVzZSBwb2xsKCkgb24gdGhlIGNsaWVudC1zaWRlIGR1cmluZyBzZXJ2ZXIgd2FpdHMgdG8gaW1wbGVtZW50CglvdmVybGFwcGVkIEkvTy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9jb25zb2xlLmMsCgkgIHNlcnZlci90cmFjZS5jLCB3aW4zMi9jb25zb2xlLmM6CglVc2UgdGhlIG5ldyBzZW5kX2ZkIG1lY2hhbmlzbSBmb3IgdGhlIHNldF9jb25zb2xlX2ZkIHNlcnZlciByZXF1ZXN0LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUplZmYgR2FyemlrIDxqZ2FyemlrQG1hbmRyYWtlc29mdC5jb20+CglBZGRlZCBuZWVkZWQgc3RyaW5nLmggaW5jbHVkZXMuCgoyMDAxLTAzLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglDbGVhbmVkIHVwIGFzc3VtcHRpb25zIGFib3V0IFdTX0NISUxEIGZsYWcgc28gdGhhdCB3ZSBjYW4gYWxsb3cgaXQgdG8KCWJlIGNoYW5nZWQgaW4gU2V0V2luZG93TG9uZy4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluY3JlYXNlIGRlYnVnIGJ1ZmZlciBzaXplIHVwIHRvIDEwMjQgYnl0ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLlBMLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUud2luMzIsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3QucGwsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHMsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LnNwZWM6CglBZGRlZCBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdGluZyBmcmFtZXdvcmsuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sCgkgIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFkZGVkICIqIiB3aWxkY2FyZCBlbnRyeSB0byBEbGxPdmVycmlkZXMgdG8gcmVwbGFjZSBEbGxEZWZhdWx0cwoJc2VjdGlvbjsgdGhpcyB3YXkgaXQgY2FuIGFsc28gYmUgc3BlY2lmaWVkIG9uIGEgcGVyLWFwcCBiYXNpcy4KCVJlbW92ZWQgY29tcGlsZWQtaW4gZGVmYXVsdHMgZm9yIGRsbHMgbWVudGlvbmVkIGluIHRoZSBzYW1wbGUgY29uZmlnLgoJVXBkYXRlIG1hbiBwYWdlLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLAoJICBpbmNsdWRlL25ldHNwaS5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUplZmYgR2FyemlrIDxqZ2FyemlrQG1hbmRyYWtlc29mdC5jb20+CglXYXJuaW5nIGZpeGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93bWMvbWNsLmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9hdG9tLmM6CglKZWZmIEdhcnppayA8amdhcnppa0BtYW5kcmFrZXNvZnQuY29tPgoJQWRkZWQgc29tZSBpbmNsdXNpb25zIG9mIHN0cmluZy5oIHdoZXJlIG5lY2Vzc2FyeS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRGlzYWJsZSBET05UX1JFU09MVkVfRExMX1JFRkVSRU5DRVMgZm9yIGJ1aWx0aW4gZGxscy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBsb2FkaW5nIG9mIGJ1aWx0LWluIGRsbHMgd2l0aCBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgZmxhZyBzZXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU2hvdyBhbiBlcnJvciBpZiBzbWFsbCBlbm91Z2ggZnJhZ21lbnQgc2l6ZXMgY291bGRuJ3QgYmUgc2V0LgoJRm9yY2UgYSBjb21wbGV0ZSBjbG9zZS9yZW9wZW4gb2YgdGhlIHNvdW5kIGRldmljZSBpZiBwYXVzZSBpcwoJcmVxdWVzdGVkIGluIERpcmVjdFNvdW5kIG1vZGUgKG1hbnkgZHJpdmVycyByZXF1aXJlIHRoaXMpLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSBhbmQgbWlzbGVhZGluZyBGSVhNRS4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIEdldC9TZXREZXZpY2VHYW1tYVJhbXAuCgoyMDAxLTAzLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywKCSAgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2Mvb3B0aW9ucy5jOgoJLSBBZGRlZCBzdXBwb3J0IGZvciBhcHAtc3BlY2lmaWMgZGxsIG92ZXJyaWRlcyB1c2luZwoJICBBcHBEZWZhdWx0c1w8YXBwbmFtZT5cRGxsT3ZlcnJpZGVzIGNvbmZpZ3VyYXRpb24gc2VjdGlvbi4KCS0gQmV0dGVyIHN1cHBvcnQgZm9yIG11bHRpcGxlIC0tZGxsIG9wdGlvbnMuCgktIEFkZGVkIHdhcm5pbmcgbWVzc2FnZSB0byBkaXNjb3VyYWdlIHB1dHRpbmcgbXVsdGlwbGUgZGxscyBpbiBhCgkgIHNpbmdsZSBvdmVycmlkZSBlbnRyeS4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJVGVybWluYXRlIHByb2Nlc3Mgb24gdW5oYW5kbGVkIF5DIGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIGxhdW5jaGluZyB0aGUKCWRlYnVnZ2VyLgoKCSogZGxscy90dHlkcnYvZGMuYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIEdldC9TZXREZXZpY2VHYW1tYVJhbXAuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3Mvd2luLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBHZXRXaW5kb3dzTW9kdWxlRmlsZU5hbWVbQS9XXS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJTmF0aXZlIHZlcnNpb24gc2VlbXMgdG8gYWx3YXlzIHJlLWRyYXcgdGhlIHNlbGVjdGVkIHRleHQgYXQgdGhlIGVuZCBvZgoJYSByb2xsdXAuCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5oLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5oLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBnYW1tYSByYW1wIGNvZGUgdG8gdGhlIFhWaWRNb2RlIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvZGRyYXdpLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vcmUgRGlyZWN0RHJhdyBIQUwgdHlwZSBkZWNsYXJhdGlvbnMuCgoyMDAxLTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglTYXRzdWtpIEZ1amlzaGltYSA8c2ZAZnJlZWJzZC5vcmc+CglGaXhlZCBGcmVlQkRTIHhwZzQgY2hlY2suCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvc3BlY21ha2VyL01ha2VmaWxlLmluOgoJU2F0c3VraSBGdWppc2hpbWEgPHNmQGZyZWVic2Qub3JnPgoJVXNlIElOU1RBTExfU0NSSVBUIGluc3RlYWQgb2YgSU5TVEFMTF9QUk9HUkFNIGZvciBzY3JpcHRzLgoKCSogaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYywgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdmVyc2lvbi5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgdmVyc2lvbiBpbmZvIGZvciBidWlsdC1pbiBvbGVhdXQzMi5kbGwuCgoJKiBjb250cm9scy9tZW51LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXggc3lzdGVtIG1lbnUgY3Jhc2ggYnkgZW5zdXJpbmcgdGhhdCBpdGVtLT50ZXh0IGlzIG5vdCBudWxsIHdoZW4KCU1GX1RFWFQgc2V0LgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBJRGlyZWN0RHJhd0dhbW1hQ29udHJvbCBpbnRlcmZhY2UgZGVjbGFyYXRpb24uCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRydW5jYXRlIHZlcnNpb24gZGF0YSBpZiBwcm92aWRlZCBidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIHNvdW5kIGRpc2FwcGVhcmluZyBhZnRlciBvbi10aGUtZmx5IHNhbXBsZSByYXRlIGNoYW5nZXMgYW5kCglhZnRlciBjZXJ0YWluIHVuZGVycnVuIGNvbmRpdGlvbnMuCglDb21waWxhdGlvbiBmaXhlcyBmb3Igd2hlbiBVU0VfRFNPVU5EM0QgaXMgZGVmaW5lZC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luMjAwMDogSWYgYm90aCBXU19FWF9MQVlFUkVEIGFuZCBXU19FWF9UUkFOU1BBUkVOVCBzdHlsZXMgYXJlIHNldCwKCW1vdXNlIGNsaWNrcyBzaG91bGQgZ28gc3RyYWlnaHQgdGhyb3VnaCB0aGUgd2luZG93LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglTSEdldFNwZWNpYWxGb2xkZXJQYXRoQSBtdXN0IGJlIGFibGUgdG8gY3JlYXRlIGEgZnVsbCBwYXRoIGlmIGl0Cglkb2Vzbid0IGV4aXN0LgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIF9zZXRqbXAzKCkuCglJbXBsZW1lbnRlZCBfc29wZW4oKS4KCjIwMDEtMDMtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWRkZWQgdmVyc2lvbiBpbmZvLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9mb250LmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEdldFRleHRNZXRyaWNzIHRvIHVuaWNvZGUuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBpbmNsdWRlL3dpbnZlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHByb3RvdHlwZSBvZiBHZXRGaWxlVmVyc2lvbkluZm9BL1cuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIERvY3VtZW50ZWQgdGhpbmdzIGtub3duIHRvIGJlIHVuaW1wbGVtZW50ZWQuCgktIEltcGxlbWVudGVkIENCTl9TRUxDSEFOR0UsIENCTl9LSUxMRk9DVVMsIGFuZCBDQk5fU0VMRU5ET0suCgktIENvcnJlY3RlZCBDQkVOX0VOREVESVQgbm90aWZpZXMgdG8gYWx3YXlzIGhhdmUgZWRpdCBjb250cm9sIHRleHQuCgktIExvY2tlZCAic2VsZWN0ZWQiIHN0YXRlIG9mIGljb24gdG8gZm9jdXMgc3RhdGUgb2YgZWRpdCBjb250cm9sIChpZgoJICBpdCBleGlzdHMpIGp1c3QgbGlrZSBuYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IFJCTl9DSElMRFNJWkUgYmFuZCByZWN0YW5nbGUgdG8gbWF0Y2ggbmF0aXZlLgoJLSBDb3JyZWN0IGZsYWdzIGluIERlZmVyV2luZG93UG9zIHRvIFNXUF9OT1pPUkRFUiB0byBtYXRjaCBuYXRpdmUuCgktIE1ha2UgaGFuZGxpbmcgQ29tYm9Cb3ggYW5kIENvbWJvQm94RXggdGhlIHNhbWUgd2hlbiBtb3ZpbmcgY2hpbGQKCSAgd2luZG93cy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJTGFiZWwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgY29ycmVjdGx5IGluIHRoZSBXSU5ET1dQT1MgZGlzcGxheS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBXaW4yMDAwIFdTX0VYX0xBWUVSRUQgd2luZG93IHN0eWxlLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsYWNlZCBvbmUgLmtkZSB3aXRoIC5rZGUyIGluIEtERTIgbWVudSBjb2RlLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgcGF0aCBmcm9tIGRwbGF5eCByZWdpc3RyeSBlbnRyeSwgc28gdGhhdCB0aGUgYnVpbHRpbiBkcGxheXgKCWNhbiBiZSBsb2FkZWQuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU2V0IExEX0xJQlJBUllfUEFUSCBpZiBuZWNlc3NhcnkgYmVmb3JlIGNhbGxpbmcgd3JjICYgd2luZWJ1aWxkLgoKMjAwMS0wMy0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGZyb20gR2V0RmlsZVZlcnNpb25JbmZvKFNpemUpIGlmIHNwZWNpZmllZCBmaWxlIGZvdW5kLCBidXQKCVZTX1ZFUlNJT05fSU5GTyByZXNvdXJjZSBub3QuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVJlbW92ZWQgYnJva2VuIHN1cHBvcnQgZm9yIEVWX1RYRU1QVFkgYmVjYXVzZSBpdCBjYXVzZXMgYnVzeSBsb29wcy4KCgkqIHNlcnZlci9hc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGQgbWlzc2luZyByZWxlYXNlIG9iamVjdCBzbyBzZXJ2ZXIgZXhpdHMgY2xlYW5seS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVJlY2FsY3VsYXRlIG1lbnUgc2l6ZXMgaWYgV01fSU5JVE1FTlUgaGFzIHJlY3JlYXRlZC9jaGFuZ2VkIHNvbWV0aGluZy4KCjIwMDEtMDMtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9ubHMvY2h0Lm5sczoKCUhhbm4taHVlaSBDaGlvdSA8a29hbGFAbWFuYS5lZS5udHUuZWR1LnR3PgoJVXBkYXRlZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkZWQgc3R1YiBmb3IgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGUgKG5ldyBmdW5jdGlvbiBpbiBXaW45OC8yMDAwKS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBVbmljb2RlL0Fuc2kgbWVzc2FnZSB0cmFuc2xhdGlvbiBmb3Igc29tZSBsaXN0Ym94L2NvbWJvYm94CgltZXNzYWdlcyB3aXRoIGEgemVybyB2YWx1ZWQgbHBhcmFtLiBPdXRwdXQgYW4gZXJyb3Igd2hlbiB0aGUKCXRyYW5zbGF0aW9uIGZhaWxzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggdHlwbyBpbiBPVVRMSU5FVEVYVE1FVFJJQyBkZWZpbml0aW9uLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVlldCBhbm90aGVyIGF0dGVtcHQgb24gZml4aW5nIG5vdGlmaWNhdGlvbnMgaW4gdGhlIGVkaXQgY29udHJvbC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCBzb21lIHNwZWNpZmljIGFmbWRpcnMgYXMgZXhhbXBsZXMuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJRG9uJ3QgbG9hZCBBRk0gZmlsZXMgZnJvbSBwcmVkZWZpbmVkIGRpcmVjdG9yaWVzOyB1c2UgW2FmbWRpcnNdCglzZWN0aW9uIGluIFdpbmUgY29uZmlnIGZpbGUgaW5zdGVhZC4KCjIwMDEtMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgbm90aWZpY2F0aW9ucyBvZiB0aGUgZWRpdCBjb250cm9sLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglDYWxsIERlZldpbmRvd1Byb2MgZm9yIFdNX0NUTENPTE9SU1RBVElDIG1lc3NhZ2Ugd2hlbiB0aGUgYXBwcyBkb2VzCglub3QuCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBsb2FkZXIvbG9hZG9yZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc3BlbGxpbmcvdHlwb3MgaW4gY29tbWVudHMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBleHRlbnNpb24gZm9yICdvbGUzMi5kbGwnLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ3JlYXRlUmVtb3RlVGhyZWFkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglJbXBsZW1lbnQgU0hHZXRGaWxlSW5mb1cgYnkgY2FsbGluZyBTSEdldEZpbGVJbmZvQS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSGFuZGxlIGVtcHR5IHN0cmluZ3MgYW5kIGludmFsaWQgdmFsdWVzIGluIGxwc3RySW5pdGlhbERpciBmb3IgMzIgYml0cwoJb3BlbiBmaWxlIGRpYWxvZ3MuCgoyMDAxLTAzLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglBZGRlZCB2ZXJzaW9uMTYucmMgaW4gUkNfU1JDUyBsaXN0LgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsCgkgIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglBZGRlZCBzdXBwb3J0IGZvciBuZXN0ZWQgc2VydmVyIHdhaXRzICh0byBhbGxvdyB3YWl0aW5nIGluIHNpZ25hbAoJaGFuZGxlcnMpLgoKCSogUkVBRE1FLCB0b29scy93aW5lY2hlY2s6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBhIHBlcmwgc2NyaXB0IHRvIGNoZWNrIG1hbnkgYXNwZWN0cyBvZiBXaW5lIGNvbmZpZ3VyYXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglMUEFSQU0gaW4gZmluZCBkaWFsb2cgd21faW5pdGRpYWxvZyBpcyB0aGUgZmluZC9yZXBsYWNlIHN0cnVjdHVyZSwgbm90CgljdXN0ZGF0YS4KCgkqIGRsbHMva2VybmVsL25scy9sdmkubmxzOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglVcGRhdGVkIExhdHZpYW4gZGF0ZSBmb3JtYXQuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIFNIRUxMIGxpbmtpbmcgb2YgS0RFMiBkZXNrdG9wL21lbnUgZW50cmllcy4KCjIwMDEtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTAzMDUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIG5TZWxlY3Rpb25NYXJrIGFuZCBuRm9jdXNlZEl0ZW0gd2hlbiBpbnNlcnRpbmcvZGVsZXRpbmcvc29ydGluZwoJaXRlbXMuCglTb3J0SXRlbXM6IElmIHNvcnRpbmcgbGVzcyB0aGFuIDIgaXRlbXMsIGRvIG5vdGhpbmcuCgoJKiB3aW4zMi9maWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU2V0RmlsZUFwaXNUb09FTSwgU2V0RmlsZUFwaXNUb0FOU0kgYW5kIEFyZUZpbGVBcGlzQU5TSS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJLSBCYWNrZ3JvdW5kIG9mIHRoZSBjaGlsZCB3bmQgc2hvdWxkIGJlIGVyYXNlZCB3aXRoIHRoZSBzYW1lIGNvbG9yIGFzCgkgIHRoZSBjb250cm9sLgoJLSBEZWZhdWx0IHNjcm9sbCBhbW91bnQgc2hvdWxkIGJlIHRoZSBtaW5pbXVtIGNsaWVudCBhcmVhLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVVuYmxvY2sgdGhlIGRpYWxvZyBtZXNzYWdlIGxvb3Agd2l0aCBhIFdNX05VTEwgbWVzc2FnZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVZlZHJhbiBSb2RpYyA8dmVkcmFuQHJlbmF0YS5pcmIuaHI+CglNYWRlIDggYnBwIHRvIDI0IGJpdCBkZXB0aCBjb252ZXJzaW9uIGluIFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzXzgKCWZhc3RlciBieSB1c2luZyBpbmxpbmUgYXNtLgoKCSogdG9vbHMvc3BlY21ha2VyL21pc2MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBkbGxzL3dpbm1tL21taW8uYzoKCUNoYW5nZWQgaXNvbGF0ZWQgZm9yIGxvb3BzIHRvIHdoaWxlIGxvb3BzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEFuZHJlYXMKCU1vaHIpLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglUaGUgZm9yIGxvb3AgaW4gSVR5cGVMaWIyX2ZuRmluZE5hbWUgd2FzIHdyb25nIChleHRyYSAnOycpLgoKCSogZmlsZXMvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSgpIGZhaWxzIGZvciBwaXBlIGhhbmRsZXMgYWNjb3JkaW5nIHRvCglNU0ROLCBhbmQgYWxzbyBmb3Igc2VyaWFsIGhhbmRsZXMgKEZJTEVfVFlQRV9DSEFSIGluIGdlbmVyYWwgPykuCgoJKiBkbGxzL2dkaS9nZGlfbWFpbi5jLCBncmFwaGljcy9kcml2ZXIuYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJRG9uJ3QgbG9hZCB0aGUgV0lORVBTIGRyaXZlciB1bnRpbCBpdCdzIG5lZWRlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEVESVRfVW5sb2NrQnVmZmVyIGNvcGUgd2l0aCBkZXN0cm95ZWQgd2luZG93cy4KCjIwMDEtMDMtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBtZW1vcnkvaGVhcC5jOgoJV2UgbmVlZCB0byBjcmVhdGUgdGhlIHN5c3RlbSBoZWFwIGF0IHN0YXJ0dXAgZXZlbiB0aG91Z2ggd2UgZG9uJ3QgdXNlCglpdCwgc2luY2Ugc29tZSBXaW45NSBuYXRpdmUgZGxscyBkZXBlbmQgb24gdGhhdC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSBhZGQgdHJhY2luZyB0byBPcGVuR0wgdGh1bmtzCgkgLSB1cGRhdGUgdG8gbGF0ZXN0IGdsLnNwZWMgZmlsZQoKCSogd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgRENYX0NMSVBTSUJMSU5HUyB0byBmbGFncyBmb3IgRENFX0dldFZpc1JnbiBvbmx5IGlmIHdpbmRvdyBoYXMKCVdTX0NMSVBTSUJMSU5HUyBiaXQgc2V0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIExJU1RWSUVXX0FkZEdyb3VwU2VsZWN0aW9uIGFuZCBMSVNUVklFV19TZXRHcm91cFNlbGVjdGlvbiwgaWYgbm8KCXNlbGVjdGlvbiBtYXJrIGhhcyBiZWVuIHNldCwganVzdCBzZWxlY3QgdGhlIGN1cnJlbnQgaXRlbS4KCUluIExJU1RWSUVXX1NldEdyb3VwU2VsZWN0aW9uIHdlIG11c3QgYWxzbyBzZXQgdGhlIHNlbGVjdGlvbiBtYXJrIGluCgl0aGF0IGNhc2UgKGFuZCBvbmx5IGluIHRoYXQgY2FzZSkuCglSZW1vdmVkIGEgbmF1Z2h0eSAnOycgKHNwb3R0ZWQgYnkgRXJpYyBQb3VlY2gpLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgdGFyZ2V0IGhhcyBDKysgc291cmNlcywgdGhlbiB1c2UgZysrIHRvIGxpbmsgaXQgKGZpeGVzICMxNjIpLgoJUmVtb3ZlZCBTT05BTUUsIGl0J3Mgbm90IHJlbGV2YW50IGZvciBkbGxzIGFuZCB3YXMgdW51c2VkIGFueXdheS4KCjIwMDEtMDMtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IEZpeGVkIGZpbGUgZGVzY3JpcHRvciBsZWFrLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZmlsZXMvZGlyZWN0b3J5LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTb21lIG1vcmUgbWVzc2FnZSBjbGVhbnVwcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IENocmlzIEphY29ic29uCglTbWFsbCBidWcgZml4LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUluaXRpYWxpemUgdGhlIHJldHVybiBlcnJvciBjb2RlIHRvIDAgZm9yIGNvbW1vbiBkaWFsb2cgZmlsZQoJZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBmaWxlcyBmb3VuZCBpbiBhbiAnaW5jbHVkZScgZGlyZWN0b3J5LCB0byB0aGUgJ21pc2Mgc291cmNlcycgbGlzdC4KCjIwMDEtMDMtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglDcmVhdGUgdGhlIHNlcnZlciBwaXBlcyBvbiB0aGUgY2xpZW50IHNpZGUgYW5kIHRyYW5zZmVyIHRoZW0gdG8gdGhlCglzZXJ2ZXIgb24gdGhyZWFkIGNyZWF0aW9uLgoJVXNlIGEgc2luZ2xlIHBlci1wcm9jZXNzIHNvY2tldCBpbnN0ZWFkIG9mIG9uZSBwZXIgdGhyZWFkIGZvcgoJdHJhbnNmZXJyaW5nIGZpbGUgaGFuZGxlcyBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZW5hYmxlIHRoZSB3cmFwcGVyIHN1cHBvcnQuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJU3F1YXNoIGFub3RoZXIgQUZNIGNoYXJhY3RlciBtZXRyaWNzIHBhcnNpbmcgYnVnLgoKMjAwMS0wMi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglOZXcgbWVjaGFuaXNtIHRvIHRyYW5zZmVyIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBjbGllbnQgdG8gc2VydmVyLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUpvaGFubmVzLlNjaGluZGVsaW5AZ214LmRlCglTb21lIG1pbm9yIGNoYW5nZXMgdG8gdGhlIEdlcm1hbiBrZXlib2FyZCBsYXlvdXQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckBtY2hwLnNpZW1lbnMuZGU+CglBdm9pZCBjcmFzaCBhdCBlbmQgb2YgbGlzdC4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglGaXggYnVnIGluIEFGTSBjaGFyYWN0ZXIgd2lkdGggcGFyc2luZy4KCgkqIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL2RkcmF3LmgsIG9iamVjdHMvbWV0YWZpbGUuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTbWFsbCAndHlwb3MgaW4gY29tbWVudHMnIGZpeGVzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJVXNlIHRoZSBzdGFuZGFyZCBDcmVhdGVUaHJlYWQgcm91dGluZSB0byBjcmVhdGUgMTYtYml0IHRhc2tzIGluc3RlYWQKCW9mIGR1cGxpY2F0aW5nIHRoZSBjb2RlLgoKCSogZGxscy93aW5zcG9vbC93c3Bvb2wuYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglSZW1vdmVkIGRlcGVuZGVuY3kgb24gY29tY3RsMzIuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV0lORV9VTklDT0RFX1RFWFQgd2FzIGluY29ycmVjdC4KCURyb3BwZWQgc3VwcG9ydCBmb3IgV0lORV9VTklDT0RFX1RFWFQoJ2MnKSBpbiBDLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSW1wbGVtZW50ZWQgV3NDb250cm9sIGNvbW1hbmQgd2l0aCBpZCAweDEwMS4KCgkqIGRsbHMva2VybmVsL25scy9hZmsubmxzLCBkbGxzL2tlcm5lbC9ubHMvYmVsLm5scywgZGxscy9rZXJuZWwvbmxzL2Jnci5ubHMsIGRsbHMva2VybmVsL25scy9jYXQubmxzLCBkbGxzL2tlcm5lbC9ubHMvY3plLm5scywgZGxscy9rZXJuZWwvbmxzL2RlYS5ubHMsIGRsbHMva2VybmVsL25scy9kZWMubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVsLm5scywgZGxscy9rZXJuZWwvbmxzL2Rlcy5ubHMsIGRsbHMva2VybmVsL25scy9lc20ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNuLm5scywgZGxscy9rZXJuZWwvbmxzL2VzcC5ubHMsIGRsbHMva2VybmVsL25scy9ldXEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZmluLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYS5ubHMsIGRsbHMva2VybmVsL25scy9mcmIubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJjLm5scywgZGxscy9rZXJuZWwvbmxzL2ZybC5ubHMsIGRsbHMva2VybmVsL25scy9mcnMubmxzLCBkbGxzL2tlcm5lbC9ubHMvZ3JjLm5scywgZGxscy9rZXJuZWwvbmxzL2h1bi5ubHMsIGRsbHMva2VybmVsL25scy9pbmQubmxzLCBkbGxzL2tlcm5lbC9ubHMvaXNsLm5scywgZGxscy9rZXJuZWwvbmxzL2l0YS5ubHMsIGRsbHMva2VybmVsL25scy9pdHMubmxzLCBkbGxzL2tlcm5lbC9ubHMvanBuLm5scywgZGxscy9rZXJuZWwvbmxzL25sYi5ubHMsIGRsbHMva2VybmVsL25scy9ubGQubmxzLCBkbGxzL2tlcm5lbC9ubHMvbm9uLm5scywgZGxscy9rZXJuZWwvbmxzL25vci5ubHMsIGRsbHMva2VybmVsL25scy9wbGsubmxzLCBkbGxzL2tlcm5lbC9ubHMvcHRiLm5scywgZGxscy9rZXJuZWwvbmxzL3B0Zy5ubHMsIGRsbHMva2VybmVsL25scy9yb20ubmxzLCBkbGxzL2tlcm5lbC9ubHMvc2t5Lm5scywgZGxscy9rZXJuZWwvbmxzL3Nsdi5ubHMsIGRsbHMva2VybmVsL25scy9zdmUubmxzLCBkbGxzL2tlcm5lbC9ubHMvdHJrLm5sczoKCVByemVteXNsYXcgQnJ1c2tpIDxmNjYzMzZwYkBhc2suZXRpLnBnLmdkYS5wbD4KCUFkZGVkIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFIGRlZmluaXRpb24gaW4gbW9zdCBubHMgZmlsZXMuCgoyMDAxLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYzoKCU5ldyBzZXQgb2YgbWFjcm9zIGZvciBzZXJ2ZXIgY2FsbHM7IG1ha2VzIHJlcXVlc3RzIHdpdGhvdXQgdmFyaWFibGUKCXBhcnQgc29tZXdoYXQgZmFzdGVyLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU1vdmVkIFBUSFJFQURfaW5pdF9kb25lIG91dCBvZiB0aGUgI2lmZGVmLgoKMjAwMS0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy91c2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3Npbmcgc3R1YnMgdG8gS0VSTkVMMzIgYW5kIFVTRVIzMi4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIGZpbGVuYW1lcyB3aXRoIHNwYWNlcy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTWFwIDMyIGJpdHMgcmVzb3VyY2UgZm9yIDE2IGJpdHMgcHJpbnQgZGlhbG9nLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBHZXRTeXNDb2xvckJydXNoKENPTE9SX1dJTkRPVykgd2hlbiB0aGVyZSBpcyBubyBicnVzaCBmb3IgZHJhd2luZwoJYmFja2dyb3VuZCBpbiBsaXN0Ym94LgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJRGF2aWQgR3JhbnQgPGRhdmVAcmVhY2gubmV0PgoJQWRkZWQgKHBhcnRpYWwpIHN1cHBvcnQgZm9yIEZPX0NPUFkgYW5kIEZPX0RFTEVURS4KCjIwMDEtMDItMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3ZlcnNpb24ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdmVyc2lvbjE2LnJjLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsLnJjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdmVyc2lvbi5yYywgZGxscy9rZXJuZWwvdmVyc2lvbjE2LnJjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvdmVyc2lvbi5yYywgZGxscy9nZGkvdmVyc2lvbjE2LnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB2ZXJzaW9uIGluZm9ybWF0aW9uICgxNiBhbmQgMzIgYml0KSB0byBjb3JlIGJ1aWx0LWluIGRsbHM6Cglrcm5sMzg2LmV4ZS9rZXJuZWwzMi5kbGwsIHVzZXIuZXhlL3VzZXIzMi5kbGwsIGdkaS5leGUvZ2RpMzIuZGxsLgoJUHJvdmlkZSBhIHdheSBmb3IgcmVhZGluZyB2ZXJzaW9uIGluZm9ybWF0aW9uIHVzaW5nIHN0YW5kYXJkIEFQSToKCUdldEZpbGVWZXJzaW9uSW5mb1NpemUgLT4gR2V0RmlsZVZlcnNpb25JbmZvIC0+IFZlclF1ZXJ5VmFsdWUuCgoJKiBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU9ubHkgY3JlYXRlIHRoZSBzeXN0ZW0gaGVhcCB3aGVuIHdlIGFjdHVhbGx5IG5lZWQgaXQuCgoJKiBmaWxlcy9kb3NfZnMuYywgbWVtb3J5L2dsb2JhbC5jOgoJQWxsb2NhdGlvbnMgZG8gbm90IG5lZWQgdG8gYmUgb24gdGhlIHN5c3RlbSBoZWFwLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglIb3Jpei9WZXJ0IGRldGVybWluYXRpb24gbXVzdCBiZSBkeW5hbWljLCBhcyB0aGUgc3R5bGUgbWF5IG5vdCBiZSBzZXQKCXVwb24gY3JlYXRpb247IGltcHJvdmVkIHBvc2l0aW9uaW5nIGFuZCBzY3JvbGxpbmcuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGFsaWdubWVudCBwcm9ibGVtcyB3aXRoIE5NUEdTQ1JPTEwgc3RydWN0LgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIGZpeG1lIGZvciBTUElfR0VUV0hFRUxTQ1JPTExMSU5FUyB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlIG9mIDMuCgoJKiBjb250cm9scy9idXR0b24uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcmVwYXJlIGJhY2tncm91bmQgd2hpbGUgZHJhd2luZyByYWRpbyBidXR0b25zIGFuZCBjaGVja2JveGVzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBwYXkgYXR0ZW50aW9uIHRvIGlmIG91ciBjYWxsIHRvCgkgIFNldENsaXBib2FyZERhdGEgZnJvbSB0aGUgWDExRFJWIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIHdvcmtzLiBJZiBub3QKCSAgd2UgbmVlZCB0byBkZWxldGUgdGhlIGdsb2JhbCBibG9jayB3ZSBhbGxvY2F0ZWQuIFRoaXMgaXMgYSBzZXZlciBtZW1vcnkKCSAgbGVhayB3aXRoIGxhcmdlIGNsaXBib2FyZCBpdGVtcy4KCS0gSWYgYW4gWCBzZWxlY3Rpb24gaXQgdG9vIGxhcmdlIHRoZW4gWCBtYXkgZ2l2ZSBpdCB0byB1cyBpbiBjaHVua3MsCgkgIHdlIHdlcmUgbm90IGhhbmRsaW5nIHRoaXMgd2VsbC4KCgkqIGRsbHMva2VybmVsL25scy91a3IubmxzOgoJVmFsZXJ5IEthcnRlbCA8a3ZuQGlnay5raWV2LnVhPgoJVXBkYXRlZCBhbGwgZmllbGRzIHdpdGggVWtyYWluaWFuIHZhbHVlcy4KCgkqIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCURvIG5vdCBhbGxvY2F0ZSBhbnkgVVNFUiBkYXRhIG9uIHRoZSBzeXN0ZW0gaGVhcC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY3BsLmgsIGluY2x1ZGUvd2ludXNlci5oLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQSBmaXJzdCBzdGFiIGF0IGltcGxlbWVudGluZyB0aGUgUnVuRGxsIGZlYXR1cmVzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQnVpbGRDb21tRENCMTYgaGFkIGEgcmF0aGVyIGJyb2tlbiBiYXVkIHJhdGUgaGFuZGxpbmcuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgdGhlIHdpbmVsYXVuY2hlciBzdXBwb3J0IHdpbmVsaWIgYXBwIGludm9jYXRpb25zLiBGaXhlZCBhIGZldwoJZmlsZSBwYXRoIGlzc3Vlcy4KCjIwMDEtMDItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHNlcGFyYXRlIHNlcnZlciBwaXBlIHRvIHdhaXQgb24gYmxvY2tpbmcgc2VydmVyIGNhbGxzLgoJU2VuZCB0aGUgY29tcGxldGUgcmVxdWVzdC9yZXBseSB0aHJvdWdoIHRoZSByZXF1ZXN0IGZpZm8gaW5zdGVhZCBvZgoJanVzdCBhIGR1bW15IGJ5dGUuCglDb252ZXJ0IGVycm9yIHN0YXR1cyB0byB0ZXh0IGluIHNlcnZlciByZXBseSB0cmFjaW5nLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQ29uZmlybSBmaWxlIGRlbGV0ZXMuICBNYWtlIGRlbGV0ZSBjb25maXJtYXRpb24gbWVzc2FnZXMgbW9yZQoJY29uc2lzdGVudC4gSW1wcm92ZSB0cmFjZSBtZXNzYWdlcyBvbiBkZWxldGUgZmFpbHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglBZGQgc2hlbGwgc3VwcG9ydCBmb3IgZGVsZXRpbmcgZmlsZXMgdXNpbmcgdGhlIERlbGV0ZSBrZXkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglJbXBsZW1lbnQgRW51bVByaW50ZXJEYXRhRXh7QXxXfS4KCgkqIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBvcmRpbmFscy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglfX2dldG1haW5hcmdzIGxhc3QgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIG5ld19tb2RlLgoKMjAwMS0wMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglTbWFsbCBzZXJ2ZXIgcHJvdG9jb2wgY2xlYW51cHMuCgoJKiBkbGxzL29sZWNsaS9vbGVjbGkuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVN0dWIgZm9yIE9sZVNhdmVkQ2xpZW50RG9jLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUluc2VydCB0aGUgaXRlbSBiZWZvcmUgY2FsbGluZyBhIFNldEZpcnN0VmlzaWJsZSB3aGljaCBjYW4gZ2VuZXJhdGUgYQoJV01fUEFJTlQgbWVzc2FnZS4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJQ2xlYXIgJWVicCBiZWZvcmUgZW50ZXJpbmcgdGhlIG5ldyB0aHJlYWQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHb3QgcmlkIG9mIHRoZSBXU0lORk8gc3RydWN0dXJlLiBGaXhlZCBhIGNvdXBsZSBvZiBidWdzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglGaXhlZCBfX0dldE1haW5BcmdzLgoKCSogQU5OT1VOQ0UsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJQWRkIGluZm9ybWF0aW9uIGFib3V0IHByZWJ1aWx0IGRvY3VtZW50YXRpb24gcGFja2FnZXMgaW4KCW90aGVyLXRoYW4tc2dtbCBmb3JtLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIGdpdmUgcm9vbSBmb3IgdGhlIG51bGwgdGVybWluYXRpb24gd2hlbiB0cmFuc2xhdGluZyB0aGUKCWNsaXBib2FyZCB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgQ0JfU0VUQ1VSU0VMLCBDQkVNX0RFTEVURUlURU0sIENCRU1fR0VUSVRFTSwKCSAgQ0JFTV97R0VUfFNFVH1VTklDT0RFRk9STUFULCBDQl9GSU5EU1RSSU5HRVhBQ1QsIFdNX0NPTU1BTkQsCgkgIFdNX0RFTEVURUlURU0uCgktIEltcGxlbWVudCBleHRlbmRlZCBzdHlsZSBDQkVTX0VYX05PRURJVElNQUdFLCBhbmQgd2FybiBvdGhlcnMgYXJlCgkgIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCgktIFJlc3RydWN0dXJlIERyYXdJdGVtIGNvZGUgdG8gZG8gdGhpbmdzIG1vcmUgcmF0aW9uYWxseS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZXN0cnVjdHVyZSBQYWludFRleHQgY29kZSB0byByZW1vdmUgRmlsbFJlY3QgZnJvbSBvd25lci1kcmF3biBwYXRoLgoJLSBDaGFuZ2UgU2V0Rm9jdXMgdG8gaW5kaWNhdGUgZm9jdXMgc2V0IG9ubHkgYWZ0ZXIgTm90aWZ5IGlzIHNlbnQgdG8gb3duZXIuCgktIEdldCBtb3JlIGluZm8gaW4gYSB0cmFjZS4KCgkqIGZpbGVzL2Rvc19mcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCBlcnJvciBtZXNzYWdlIGluIGNhc2UgRE9TRlNfT3BlbkRldmljZSgpIGZhaWxzIG9uIGEgQ09NeAoJZGV2aWNlLgoKCSogbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW4zMi9leGNlcHQuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci90YXNrLmM6CglSZW1vdmVkIGEgZmV3IENhbGxvdXQgZnVuY3Rpb25zIGJ5IGRvaW5nIGEgR2V0UHJvY0FkZHJlc3MgYXQgdGhlIHRpbWUKCXdlIGFjdHVhbGx5IG5lZWQgdGhlIGZ1bmN0aW9uLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIE1FTV9TWVNURU0gaGFuZGxpbmcgdG8gYXZvaWQgdW5tYXBwaW5nIGFyZWFzIHRoYXQgd2UgZGlkbid0IG1tYXAuCgoJKiBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwcm90b3R5cGVzIG9mIE1TVkNSVF9fX2dldG1haW5hcmdzIGFuZCBNU1ZDUlRfX193Z2V0bWFpbmFyZ3MuCglQcm90ZWN0IE1TVkNSVF9fYWNtZGxuIGdsb2JhbCB2YXJpYWJsZSBmcm9tIGNvcnJ1cHRpb24uCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCB0eXBlZGVmIG9mIENSSVRJQ0FMX1NFQ1RJT04gb3V0IG9mICNwcmFnbWEgcGFjaygxKSBibG9jay4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBiZWhhdmlvdXIgb2YgZHJvcGRvd24gYnV0dG9ucy4gV2hlbiBhIGRyb3Bkb3duIGJ1dHRvbiBpcwoJY2xpY2tlZCwgaXQgZG9lcyBub3QgY2hhbmdlIGludG8gcHJlc3NlZCBzdGF0ZS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgRU1GIHJlY29yZCBFTVJfRVhUU0VMRUNUQ0xJUFJHTi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcmFuc2xhdGVkIG5ldyBjb21tb24gZGlhbG9nIHJlc291cmNlcyBpbnRvIEdlcm1hbi4KCVJlc2l6ZWQgZmlsZSBkaWFsb2cgYSBiaXQgdG8gbWFrZSB0b29sYmFyIGNvbXBsZXRlbHkgdmlzaWJsZSBhZ2Fpbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBHZXJtYW4gdHJhbnNsYXRpb24sIGNoYW5nZWQgZGlhbG9nIGZvbnQgdG8gSGVsdmV0aWNhLgoKMjAwMS0wMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAxMDIxNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBc3NlcnQgb24gb3V0cHV0IGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZSBzZWxlY3Rpb24gYWZ0ZXIgc29ydGluZyAoaW4gTElTVFZJRVdfU29ydEl0ZW1zKSBieSBtYWtpbmcgc3VyZQoJc2VsZWN0aW9uIGxpc3QgbWF0Y2hlcyBzdGF0ZXMgb2YgaW5kaXZpZHVhbCBpdGVtcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERJQi9waXhtYXAgc3luY2hyb25pemF0aW9uIGZvciB7R2V0LFNldH1QaXhlbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRCX1NFVEJVVFRPTlNJWkUgbWVzc2FnZXMgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQgZXZlbiBhZnRlcgoJYnV0dG9ucyBoYXZlIGJlZW4gYWRkZWQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvY29uc29sZS5jOgoJUGFzcyB0aGUgc3RkaW4vc3Rkb3V0IGhhbmRsZXMgb24gc3RhcnR1cCB0byB1c2UgYXMgY29uc29sZSAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgRXJpYyBQb3VlY2gpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHRoZSBjb2RlcGFnZSBmb3IgdGhlIFR1cmtpc2gga2V5Ym9hcmQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTZXR0aW5nIHRoZSBIb3RJdGVtIHRvIC0xIGNhbiBiZSBkaXNhc3Ryb3VzIGF0IHRpbWVzIGlmIGl0IGVxdWFscwoJb2xkaGl0LgoKCSogdG9vbHMvc3BlY21ha2VyL2RsbC5jLCB0b29scy9zcGVjbWFrZXIvbWFpbi5jLCB0b29scy9zcGVjbWFrZXIvbXNtYW5nbGUuYywgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jLCB0b29scy9zcGVjbWFrZXIvc2VhcmNoLmMsIHRvb2xzL3NwZWNtYWtlci9zcGVjbWFrZXIuaCwgdG9vbHMvc3BlY21ha2VyL3N5bWJvbC5jLCB0b29scy9zcGVjbWFrZXIvUkVBRE1FOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gQ3JlYXRlIGVudHJpZXMgZm9yIG9yZGluYWwgb25seSBleHBvcnRzLCB1c2Ugb3JkaW5hbHMgaWYgbm9uLXN0YW5kYXJkLgoJLSBJbXByb3ZlIEMrKyBkZW1hbmdsZXIsIHJlY29nbmlzZSBkYXRhIHR5cGVzLCBmaXggc29tZSBidWdzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglHaXZlcyBiYWNrIHRoZSBFUlJPUl9GSUxFX05PVF9GT1VORCB0byBHZXRGaWxlQXR0cmlidXRlcy4KCjIwMDEtMDItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBiYWNrc2xhc2ggZXNjYXBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUlmIFZlclF1ZXJ5VmFsdWVBIGlzIGNhbGxlZCB3aXRoIGEgUEUgcmVzb3VyY2UsIHRyYW5zbGF0ZSB0aGUgY2FsbCB0bwoJVmVyUXVlcnlWYWx1ZVcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb250aW51ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNldCBIb3QgSXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNlbmQgTFZOX0RFTEVURUlURU0gbm90aWZpY2F0aW9uIGZpcnN0LCB0byBhdm9pZCBjcmFzaGVzIGlmIHRoZSBhcHAKCXJlcXVlc3RzIExWSUZfUEFSQU0gd2l0aCBMSVNUVklFV19HZXRJdGVtKCkgZHVyaW5nIGl0cyBMVk5fREVMRVRFSVRFTQoJbWVzc2FnZSBoYW5kbGVyLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglBZGQgaW5jbHVkZXMgZm9yIDx0aW1lLmg+LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhLXdpbmVAZGlrdS5kaz4KCShQU0RSVl9BRk1HZXRDaGFyTWV0cmljcyk6IFVzZSB1bnNpZ25lZCBjaGFycyAoc2luY2UgaXNzcGFjZSBpcyB1c2VkKS4KCShQU0RSVl9BRk1QYXJzZSk6IERvbid0IGNyYXNoIG9uIG1pc3NpbmcgZm9udCBuYW1lLiAgVXNlIHVuc2lnbmVkCgljaGFycy4gIEZpeCBwZWN1bGlhciBpbmNvbnNpc3RlbnQgaW5kZW50YXRpb24uICBEb24ndCBsZWFrIGEgRklMRS4KCUNhdGNoIHByb2JsZW1hdGljIGZpbGVzIHdpdGggbm8gbGluZSBmZWVkIGluIHRoZW0uICBEb24ndCBtaXgKCWNoYXJhY3RlcnMgYW5kIGludGVnZXJzLiAgRG9uJ3Qgb3ZlcnJ1biB0aGUgYnVmZmVyLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHR1cmtpc2gga2V5Ym9hcmQgbGF5b3V0LgoKMjAwMS0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglSZW1vdmVkIG9yZGluYWwgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb24ndCBuZWVkIGEgc3BlY2lmaWMgdmFsdWUuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL2luaXQuYywgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL3RpbWUuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9saW5lZGRhLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2Vudi5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIEZPTlRPQkogdG8gdXNlIExPR0ZPTlRXIHJhdGhlciB0aGFuIExPR0ZPTlQxNi4KCVVwZGF0ZWQgcGFyYW1ldGVycyBvZiBERVZJQ0VGT05URU5VTVBST0MuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRml4ZWQgV01fR0VUVEVYVExFTkdUSCBoYW5kbGluZy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aV9yZXMucmMsIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21jaWF2aS5oLCBpbmNsdWRlL3Zmdy5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIHRoZSByZWFsIGltcGxlbWVudGF0aW9uIG9mIG1jaWF2aS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUFsd2F5cyByZXR1cm4gc3VjY2VzcyBpbnN0ZWFkIG9mIG92ZXJmbG93IGlmIGNhbGxlciBkaWRuJ3Qgc3BlY2lmeSBhCglidWZmZXIuCgoJKiB0b29scy93aW5lY29uZjoKCU1vcnRlbiBXZWxpbmRlciA8dGVycmEtd2luZUBkaWt1LmRrPgoJT3V0cHV0IHRoZSByaWdodCBudW1iZXIgb2YgYmFja3NsYXNoZXMgaW4gdmFsdWVzLgoKCSogd2luZG93cy9zcHkuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCZSBzbWFydGVyIGFib3V0IHRoZSBlbGxpcHNpcyBpbiBTUFlfR2V0V25kTmFtZS4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgbWVtb3J5L2hlYXAuYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNaXNjIHR5cG9zIGluIGNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpc3RWaWV3X0dldEl0ZW1SZWN0IGFscmVhZHkgc2V0cyByYy5sZWZ0LgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgb2xlL29sZTJubHMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglkZWJ1Z3N0cl94eHggYWxyZWFkeSBkb2VzIHRoZSBxdW90aW5nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIHRoZSBjYWxsYmFjayBkZWNsYXJhdGlvbnMgdG8gYSBzYWZlciBmb3JtYXQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJVHVuZSB0aGUgZG9jbyB0byB0aGUgY29kZSBmb3IgcmVsYXkvc25vb3Agc3BlY2lmaWMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljcy4KCgkqIHdpbjMyL2RldmljZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglHaXZlIGJvdGggLS13aW52ZXIgbnQ0MCBhbmQgd2luMzEgZm9yIFZ4RCB3YXJuaW5nLCBhcyBzb21lIHByb2dyYW1zCgl3b3JrIHdpdGggd2luMzEuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9zdHJ1Y3RfY29udmVydC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGNvcnJlY3QgRERSQVdfQ29udmVydF9ERERFVklDRUlERU5USUZJRVJfMl9Ub18xIGNvbmZ1c2lvbgoJLSBmaXggR2V0QXZhaWxhYmxlVmlkTWVtIGRkcmF3IGlmYWNlIGNvcHkmcGFzdGUgYnVnIChkb2ggISkKCgkqIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmgsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglHdXRzIG9mIGEgc2ltcGxlIFhWaWRNb2RlLXN1cHBvcnRpbmcgRGlyZWN0RHJhdyBIQUwgaW4geDExZHJ2LgoKCSogZmlsZXMvZmlsZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNldExhc3RFcnJvcigpIGZvciBHZXRGaWxlQXR0cmlidXRlc0EuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglFeGNlcHRpb24gZm9yIGFsbG93aW5nIHRoZSBwYXJlbnQgdG8gc2V0IHRoZSBjdXJzb3IgZm9yIGEgY2hpbGQgd25kIGlzCgl3aGVuIHRoZSBjdXJzb3IgaXMgb24gdGhlIGJvcmRlciBvZiBhIHJlc2l6YWJsZSB3bmQuCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBtZW51IGl0ZW0gdG8gc2VwZXJhdG9yIG9ubHkgd2hlbiBzdHJpbmcgaXMgTlVMTC4KCjIwMDEtMDItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RjaWRkaS5oLCBpbmNsdWRlL2RkcmF3aS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTb21lIGltcG9ydGFudCBzdHVmZiBmcm9tIHRoZSBEaXJlY3REcmF3IERESyBoZWFkZXJzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sb2FkZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgdmVyYm9zZSBlcnJvciBtZXNzYWdlcyB3aGVuIGFwcGxpY2F0aW9uIGxvYWQgZmFpbHMuCgoJKiBpbmNsdWRlL3dpbm50LmgsIG1pc2MvY3B1LmMsIHdpbjMyL25ld2Zucy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgUGVudGl1bSdzIHJkdHNjIGluc3RydWN0aW9uIChpZiBhdmFpbGFibGUpIHRvIGltcGxlbWVudAoJUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2lubmxzLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2RjaW1hbjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy93aW5ubHMvd2lubmxzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJUGV0ZXIgSC4gR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJLSBvbmx5IHBhcnNlIEFGTS1maWxlcywgd2hpY2ggc3RhcnQgd2l0aCAiQmVnaW5Gb250TWV0cmljcyIKCS0gdXNlIGZnZXRjIGluc3RlYWQgb2YgZmdldHMgdG8gY29wZSB3aXRoIEFGTS1GaWxlcyB3aXRoCgkgIE1hY2ludG9zaC1TdHlsZSBsaW5lLWJyZWFrcyAoJ1xyJykgaW4gdGhlIHBhcnNlci4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgYSBidW5jaCBvZiBzaGx3YXBpIGZ1bmN0aW9ucywgYWRkIHNvbWUgbmV3IHN0dWJzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIFJHQiA1NjUgPT4gUkdCIDA4ODggY29udmVyc2lvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGtleWJvYXJkIHNob3J0Y3V0IEYyIHRvIHJlbmFtZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlCglzaGVsbHZpZXcgKGFuZCBpbiBjb21tb24gZGlhbG9ncykuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglNb3JlIHBvcnRhYmxlIC5hbGlnbiBkaXJlY3RpdmUuCglJZ25vcmUgLWRlbGF5IGRpcmVjdGl2ZSBvbiBwcGMgb25seS4KCUFkZGVkIGNvZGUgdG8gY2FsbCB0aGUgZGxsIGNvbnN0cnVjdG9ycy4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZWQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyBmb3IgcHBjLgoKCSogY29udHJvbHMvbWVudS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBjcmFzaCBvbiBjbG9zZSBmcm9tIHdpbmRvdyBtYW5hZ2VyLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBvc3RNZXNzYWdlQS9XIGlnbm9yZXMgbWVzc2FnZXMgY29udGFpbmluZyBwb2ludGVycyBhbmQgcmV0dXJucwoJRkFMU0UvTGFzdEVycm9yIEVSUk9SX0lOVkFMSURfUEFSRU1FVEVSLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlSWNvbiBtdXN0IHBlcmZvcm0gY29sb3IgZGVwdGggY29udmVyc2lvbiBpZiB0aGUgcHJvdmlkZWQgYml0bWFwCglpcyBub3Qgb2YgdGhlIHNhbWUgZGVwdGggYXMgdGhlIHNjcmVlbi4KCUFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbi4KCjIwMDEtMDItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CgktIG1ha2UgdGhlIExhbmRzY2FwZS9Qb3J0cmFpdCBidXR0b25zIGRvIHNvbWV0aGluZy4KCS0gZml4IHRoZXNlIHByb2JsZW1zIGluIHRoZSBQYXBlciBTaXplIGFuZCBTb3VyY2UgY29tYm8gYm94ZXM6CgkgIDEpIEV2ZXJ5IHRpbWUgdGhlIHByaW50ZXIgc2V0dXAgZGlhbG9nIGlzIG9wZW5lZCwgdGhlIHNldHRpbmdzCgkgIGFyZSBzZXQgYmFjayB0byBnYXJiYWdlIHNldHRpbmdzLgoJICAyKSBJZiB0aGUgcGFwZXIgc2l6ZSBvciBzb3VyY2UgaXMgY2hhbmdlZCwgYW5kIHRoZW4gdGhlIHByaW50ZXIgaXMKCSAgY2hhbmdlZCwgdGhlIG5ldyBwcmludGVyIGRvZXMgbm90IGdldCB0aGUgbmV3IHNpemUgYW5kIHNvdXJjZQoJICBzZXR0aW5ncyBldmVuIHRob3VnaCBpdCBhcHBlYXJzIHRvIGZyb20gdGhlIGRpYWxvZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgb2JqZWN0cy9kaWIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglJbiBDcmVhdGVESUJTZWN0aW9uLCB0aGUgb2Zmc2V0IGludG8gdGhlIGZpbGUgbWFwcGluZyBkb2VzIG5vdCBoYXZlIHRvCgliZSBhIG11bHRpcGxlIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBncmFudWxhcml0eS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1pc3NpbmcgZGVmaW5pdGlvbnMgcmVxdWlyZWQgYnkgdGhlIENvbnRyb2wgU3B5IGV4YW1wbGVzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBwbGF5aW5nIG9mIEVNUl9CSVRCTFQsIEVNUl9TVFJFVENIQkxULCBFTVJfTUFTS0JMVCwKCUVNUl9QTEdCTFQsIEVNUl9TRVRESUJJVFNUT0RFVklDRSwgRU1SX1BPTFlURVhUT1VUQSwgRU1SX1BPTFlURVhUT1VUVywKCUVNUl9GSUxMUkdOLCBFTVJfRlJBTUVSR04sIEVNUl9JTlZFUlRSR04sIEVNUl9QQUlOVFJHTiBlbmhhbmNlZAoJbWV0YWZpbGUgcmVjb3JkIHR5cGVzIGFjY29yZGluZyB0byBzcGVjcy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2hhc2guYywgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBMSGFzaFZhbE9mTmFtZVN5c0EgZm9yIDQgTENJRHMsIGZpeCBwcm90b3R5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgVE9PTEJBUl9JRCBhbmQgV01fU0VUVElOR0NIQU5HRSwgdGhleSBhcmUgbm90IHVzZWQuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlY2xhcmUgUklDSEVESVRfQ0xBU1MyMFcgdXNpbmcgYSBXQ0hBUiBhcnJheS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWYgYW4gYXBwbGljYXRpb24gZGlyZWN0bHkgY2FsbHMgU2V0Q2xpcGJvYXJkRGF0YSB3aXRoIENGX1RFWFQgYW5kCgl0aGVuIGxhdGVyIGNhbGxlZCBHZXRDbGlwYm9hcmREYXRhIHdpdGggQ0ZfVEVYVCB3ZSBnYXZlIHRoZW0gYSBOVUxMCgliZWNhdXNlIHdlIHdoZXJlIG5vdCBoYW5kbGluZyB0aGlzIGNhc2UuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBiZWhhdmlvdXIgb2YgRU1fR0VUTElORSBtZXNzYWdlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IE1TR19QZWVrTWVzc2FnZSB1c2VzIGFuIGludGVybmFsIHZhcmlhYmxlIHRvIGF2b2lkCgljb3JydXB0aW9uLgoKCSogZGxscy9udGRsbC9yZWcuYywgZmlsZXMvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3JlZ2FwaS9SRUFETUUsIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIFRSQUNFIG9wZW5lZCByZWdpc3RyeSBoYW5kbGVzCgktIGFkZCBwcm9wZXIgcXVvdGVzIHRvIHdpbmVpbnN0YWxsCgktIHNwZWxsaW5nCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBtb3ZlIFRTWEdyYWJTZXJ2ZXIgYWZ0ZXIgYSBwb3NzaWJsZSByZXR1cm4gRkFMU0U7CgktIG1vdmUgbWlzcGxhY2VkIGNvbW1lbnQKCS0gb3B0aW1pemUgVFNYR3JhYlNlcnZlciB1c2UKCgkqIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXJzIGZyb20gTURJQ3JlYXRlQ2hpbGQgYW5kIE1ESURlc3Ryb3lDaGlsZC4KCU1ha2UgdGhlIHBhcmFtZXRlciBuYW1lcyBzbGlnaHRseSBtb3JlIGRlc2NyaXB0aXZlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGFuIHVwZG93biBjb250cm9sIHRvIHRoZSBjb3B5IGNvdW50IGVudHJ5LgoJRGlzYWJsZSB0aGUgY29sbGF0ZSBidXR0b24gaWYgbm8uIG9mIGNvcGllcyBpcyAxLgoJQWRkIExhbmRzY2FwZS9Qb3J0cmFpdCBpY29ucy4KCUdldCByaWQgb2YgdGhlICJEdW1teSBDb21tZW50IiBsaW5lLgoJRml4IHRoZSBFbmdsaXNoIG9mIHNvbWUgb2YgdGhlIGVycm9yIG1lc3NhZ2VzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVudXNlZCBvdXRYZm9ybS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFsbG93IGFuIGFwcGxpY2F0aW9uIHRvIHJlLWFzayBmb3IgRVhDTFVTSVZFIERpcmVjdERyYXcgYWNjZXNzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgUFJPUFNIRUVUUEFHRUEucGZuQ2FsbGJhY2sgZm9yIE5VTEwgcG9pbnRlciBpZiBQU1BfVVNFQ0FMTEJBQ0sKCWlzIGdpdmVuLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBXTV9DSEFScyBhbmQgcGFzcyB0aGVtIHRvIFRSRUVWSUVXX1Byb2Nlc3NMZXR0ZXJLZXlzLiBTZWUgYWxzbwoJTElTVFZJRVdfUHJvY2Vzc0xldHRlcktleXMgaW4gbGlzdHZpZXcuYy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggKHJld3JpdGUpLCBhbmQgYWRkIGRvY3VtZW50YXRpb24gdG8gTElTVFZJRVdfUHJvY2Vzc0xldHRlcktleXMuCglMb3dlcmVkIHRoZSBrZXkgcmVwZXRpdGlvbiBkZWxheSAoQXJpYykuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJlcXVpcmUgd3JpdGUgYWNjZXNzIG9uIHRoZSBmaWxlIGhhbmRsZSB0byBjcmVhdGUgYQoJY29weS1vbi13cml0ZSBtYXBwaW5nLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93c3Bvb2wuYywgbGlidGVzdC9oZWxsbzUuYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHdpbmRvd3MvZGVmd25kLmMsIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hhbmdlIHRoZSBjYWxsYmFjayBkZWNsYXJhdGlvbnMgdG8gYSBzYWZlciBmb3JtYXQuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGZpbGVzL2ZpbGUuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gYXJndW1lbnQgZml4ZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG5hbWUgZml4ZXMgKGFsd2F5cyB1c2UgZXh0ZXJuYWwgbmFtZSkuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBsaWJ0ZXN0L3ZhcnRlc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHR5cG9zIGluIGNvbW1lbnRzLgoKCSogZGxscy9rZXJuZWwvbmxzL21zbC5ubHMsIG1pc2Mvb3B0aW9ucy5jLCB0b29scy93bWMvbGFuZy5jLCB0b29scy93bWMvbGFuZ3VhZ2UuYywgdG9vbHMvd3JjL3V0aWxzLmMsIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgTWFsYXlhbiBsYW5ndWFnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBMaXN0Vmlld19HZXRJdGVtUmVjdCgpIG1hY3JvLgoJRml4IHVzZSBvZiBMaXN0Vmlld19HZXRJdGVtUmVjdCgpIG1hY3JvIGluIGxpc3R2aWV3IGNvbnRyb2wuCglBZGQgc29tZSBkb2N1bWVudGF0aW9uIHRvIExJU1RWSUVXX0dldEl0ZW1SZWN0KCkuCgoJKiBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tYXRoLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9tc3ZpZGVvLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGRlZCBzdXBwb3J0IGZvciBBUEk6cyBpbXBsZW1lbnRlZCB3aXRoIF9fQVNNX0dMT0JBTF9GVU5DCgktIFJlb3JnYW5pemVkIGRvY3VtZW50YXRpb24gY2hlY2tpbmcuCgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcwoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBkaWZmZXJlbnRseSBzaXplZCBzdHJ1Y3RzIGJ5IHVzaW5nIHRoZWlyIGR3U2l6ZSBwYXJhbWV0ZXJzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZldyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgYWxsb3cgY29tY3RsMzIgY29udHJvbHMgdG8gYWNjZXNzIHRoZWlyIGluZm9QdHIgYmVmb3JlIGl0IGhhcwoJYmVlbiAgYWxsb2NhdGVkIG9yIGFmdGVyIGl0IGhhcyBiZWVuIGZyZWVkLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgTU1JT19PcGVuIHdvcmsgd2l0aCBOVUxMIGZpbGVuYW1lIGFnYWluLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYywgZGxscy91c2VyL2NvbnRyb2xzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pY29kZSBNREkgY2xpZW50IHdpbmRvdyBwcm9jLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgY2hhciB0aGF0IHNob3VsZCBoYXZlIGJlZW4gc2lnbmVkLgoKCSogaW5jbHVkZS9wcm9jZXNzLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGV4dGVybiAiQyIgZm9yIFdpbmVsaWIgQysrIGFwcHMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgTG9hZEltYWdlIHRvIGxvYWQgdGhlIG5vbi1zdGFuZGFyZCBzaXplZCBjb2xsYXRlIGljb25zLgoKCSogZGxscy93aW5lcHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTWFwICdDb3VyaWVyIE5ldycgdG8gJ0NvdXJpZXInLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IEVNRiBwb3NpdGlvbmluZyB3aGVuIHJjbEZyYW1lIGhhcyBhIG5vbi16ZXJvIG9yaWdpbi4KCgkqIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NldHVwYXBpLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbnN2Yy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2UgdGhlIGNhbGxiYWNrIGRlY2xhcmF0aW9ucyB0byBhIHNhZmVyIGZvcm1hdC4KCgkqIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglhY21Ecml2ZXJFbnVtVyBzaG91bGRuJ3QgcmV0dXJuIE1NU1lTRVJSX0VSUk9SIGlmCglhY21Ecml2ZXJFbnVtQ2FsbGJhY2sgcmV0dXJucyBUUlVFLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTZXQvR2V0UHJpbnRlckRhdGFbRXhdLgoJUmVtb3ZlIG9yZGluYWxzIGZyb20gd2luc3Bvb2wuZHJ2LnNwZWMgLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgYSBzdGFiIGF0IGltcGxlbWVudGluZyBPbGVTZXRBdXRvQ29udmVydC4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhIE5VTEwgcHRyIHByb2JsZW0uCglBZGRlZCBsb2FkaW5nIG9mIC5hZm0gZmlsZXMgZnJvbSBzZXZlcmFsIGNvbW1vbiBsb2NhdGlvbnMKCShnaG9zdHNjcmlwdCwgYTJwcywgZW5zY3JpcHQsICh0ZVRlWCksIFgxMSkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdG91Y2ggV0FWRUhEUnMgZHdMb29wcyB2YXJpYWJsZS4KCgkqIGRsbHMvd2luZXBzL3BwZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3BhY2VzIGRvIG5vdCBoYXZlIHRvIGNvbWUgYWZ0ZXIgdGhlICc6JyB0aGF0IGVuZHMgYSBrZXl3b3JkLgoJTWFwIGJpbiBuYW1lIE1hbnVhbEVudiB0byBETUJJTl9FTlZNQU5VQUwuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIGFsbCBmaWxlcyBhcmUgdGVybWluYXRlZCB3aXRoIGEgJ1xuJy4KCVJlbW92ZSBvYnNvbGV0ZSBjb21tZW50IGFib3V0ICdhZnhyZXMuaCcgY29taW5nIGJhY2sgYWZ0ZXIgZWRpdGluZyBpbiBWQy4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBSVEYgcXVhbGlmaWVyIGluIFJDIGZpbGVzLgoKCSogbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIGludDIxIExGTiByZW5hbWUgZmlsZSBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IFJlbGVhc2VTdGdNZWRpdW0gZm9yIE1ldGFGaWxlUGljdCB0eXBlcy4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb3Igcm90YXRlZCB0ZXh0IHdoZW4gbHBEeCBpcyBzcGVjaWZpZWQuCglCZXR0ZXIgaGFuZGxpbmcgb2YgY3VtdWxhdGl2ZSByb3VuZGluZyBlcnJvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgQ0NTX05PUkVTSVpFIHN0eWxlLgoJQ2hhbmdlIHRoZSBzY3JvbGwgZGVsdGEgb25seSB3aGVuIHRoZSBhcHAgcmVzcG9uZHMgdG8gdGhlIFBHTl9OT1RJRlkgbXNnLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbiBDb3B5RElCU2VjdGlvbiwgdXNlIHNvdXJjZSBESUIgY29sb3JtYXAgaW5zdGVhZCBpZiBubyBwYWxldHRlIGhhcwoJYmVlbiBzZWxlY3RlZCBpbnRvIHRoZSBzb3VyY2UgREMsIHRvIHdvcmsgYXJvdW5kIHNvbWUgWDExLWltcG9zZWQKCURJQnNlY3Rpb24gaW1wbGVtZW50YXRpb24gZGVmaWNpZW5jaWVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBER0EyIG1vZGUgc2V0dGluZyB0byB1c2UgdGhlIGNvcnJlY3QgY29sb3IgZGVwdGguCgoJKiB0b29scy93aW5lY29uZjoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggd2luZWNvbmYgdG8gZ2VuZXJhdGUgbmV3IGNvbmZpZyBmaWxlIGZvcm1hdAoJLSBmaXggc29tZSB2YXJpYWJsZSBjaGVja3MKCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgRU1SX0VYVFRFWFRPVVRBIGFuZCBFTVJfQ1JFQVRFTU9OT0JSVVNIIGVuaGFuY2VkCgltZXRhZmlsZSByZWNvcmRzLiBCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgRU1SX1NUUkVUQ0hESUJJVFMgYW5kCglFTVJfRVhUVEVYVE9VVFcuCgoJKiByZWxheTMyL3Nub29wLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNYWtlIHNub29wIHNwZWNpZmljIGNhc2UgaW5zZW5zaXRpdmUuCgoJKiBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRENJQ2xvc2VQcm92aWRlciBzdHViLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJU2hlbGxMaW5rPEF8Vz5fZm5HZXRXb3JraW5nRGlyZWN0b3J5LAoJSVNoZWxsTGluazxBfFc+X2ZuR2V0QXJndW1lbnRzLCBJU2hlbGxMaW5rPEF8Vz5fZm5HZXRJY29uTG9jYXRpb24uCgoJKiBjb250cm9scy9jb21iby5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCU93bmVyZHJhd24gY29tYm8gYm94ZXMgc2hvdWxkIHVzZSBPRFNfQ09NQk9CT1hFRElUIGluIHRoZSBpdGVtU3RhdGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXggdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgktIEFkZCBzdHJ1Y3R1cmVzIGZvciBDQkVOX0lOU0VSVElURU0gbm90aWZ5IG1lc3NhZ2UuCgoJKiB0b29scy93cmMvdXRpbHMuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgeG1hbGxvYy94cmVhbGxvYyBsaW1pdHMgZm9yIGxhcmdlIGJpbmFyeSByZXNvdXJjZXMuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0ZXh0IHNpemUgY2FsY3VsYXRpb24gYnVnIGluIEdldFRleHRFeHRlbnRQb2ludCgpIGZvciB3aW5kb3cgZGMncy4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJTmV3IHNlY3Rpb24gYWJvdXQgd3JpdGluZyBkb2NzIGluIERvY0Jvb2sgYW5kIGRlYWxpbmcgd2l0aCB0aGUgV2luZQoJU0dNTCBidWlsZCBzeXN0ZW07IGhhbGYgZG9uZSwgYnV0IGEgZ29vZCBzdGFydC4KCgkqIGRsbHMvd2lubmxzL3dpbm5scy5jLCBkbGxzL3dpbm5scy93aW5ubHMuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQSBjb3VwbGUgb2Ygc3R1YnMgZm9yIFRlcm1pbmFsIFNlcnZlciBDbGllbnQgMTYgYml0LgoKMjAwMS0wMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJTWF0dGhldyBDbGFya2UgPE1hdHRoZXdfQ2xhcmtlQG1pbmRsaW5rLmJjLmNhPgoJRG9uJ3QgYXNzdW1lIC5zcGVjIGZpbGVzIGFyZSBmb3VuZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGFzIHRoaXMKCWlzIG5vdCB0aGUgY2FzZSB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTeW5jaHJvbml6ZSBhY2Nlc3MgdG8gTUVTU0FHRVFVRVVFIG1lbWJlcnMuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgbW9yZSAxNi0+MzIgbWFwcGluZ3MgZm9yIElDTSogbWVzc2FnZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZHZpZGVvLmRsbCBmb3JnZXRzIHRvIHNldCB0aGUgRERTRF9DQVBTIGZsYWcsIGp1c3QgYXNzdW1lIGl0IHNldC4KCU91dHB1dCBtb3JlIGRlYnVnIGluZm8gb24gZmFpbHVyZS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRGlzYWJsZWQgc2V0dGluZyBvZiB3aW5kb3cgb3JpZ2luIGZyb20gYW4gRU1GLgoKMjAwMS0wMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgVmlkZW9DYXBEcml2ZXJEZXNjQW5kVmVyLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdXNlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIGV4cG9ydHMuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURvbid0IGRpc2FibGUga2V5Ym9hcmQgYXV0b3JlcGVhdCwgc2luY2UgYXV0b3JlcGVhdCBpcyBub3cgZGV0ZWN0YWJsZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCS0gU2llZGxlcjMgYXBwZWFycyB0byBoYXZlIHJhdGhlciBsaW1pdGVkIGJ1ZmZlcnMgZm9yIGRldmljZS9kZXNjcmlwdGlvbgoJICBzdHJpbmdzIGFuZCBjcmFzaGVzIHdpdGggdGhvc2UgbG9uZyBzdHJpbmdzLiBTaG9ydGVuZWQgdGhvc2Ugc3RyaW5ncy4KCS0gQWxzbyBkcml2ZXIgbmVlZHMgdG8gYmUgImRpc3BsYXkiIGZvciBkaXNwbGF5IGRldmljZXMgKHNvbWUgb3RoZXIKCSAgcHJvZ3JhbXMgcmVseSBvbiB0aGF0IGluZm8gSSBzZWVtIHRvIHJlbWVtYmVyKS4KCS0gRml4ZWQgRFN1cmZhY2U6OkdldFN1cmZhY2VEZXNjIHRvIG5vdCBqdXN0IGJsaW5kbHkgY29weSBhCgkgIEREU1VSRkFDRURFU0MyIHN0cnVjdCBvdmVyIGEgc21hbGxlciBERFNVUkZBQ0VERVNDIG9uZS4KCgkqIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgY2lyY3VsYXIgYnVmZmVyaW5nIGZvciB0aGUgZGlucHV0IG1vdXNlIGRldmljZS4KCU1hcHBlZCB0aGUgbW91c2Ugd2FycCBvbiB0aGUgY2VudGVyIG9mIHRoZSBjb29wZXJhdGl2ZSB3aW5kb3csIHdoaWNoCglzaG91bGQgbWFrZSB3aW5kb3dlZCBnYW1lcyB3b3JrIGJldHRlciBpbiBtYW5hZ2VkIG1vZGUuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglUYWtlIGludG8gYWNjb3VudCB1bnByaW50YWJsZSBtYXJnaW5zIGluIHBzZHJ2LgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJcHNkcnYncyBEZXZpY2VDYXBhYmlsaXRpZXMgc2hvdWxkIGxpc3QgRE1CSU5fQVVUTyBhcyBhbiBhdmFpbGFibGUKCWJpbi4KCgkqIGRsbHMvd2luZXBzL3BwZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAiT25seU9uZSIgcGFwZXIgc291cmNlLCB1c2VkIGJ5IHRoZSBBY3JvYmF0IERpc3RpbGxlciBQUEQuCgoJKiBkbGxzL21zdmNydC9tYXRoLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0eXBvLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBtY2kgc3RyaW5nIHBhcnNpbmcgaXNzdWVzLgoJQWRkZWQgbW9yZSBtYXBwaW5ncyAzMkFUbzE2LgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTaW1wbGlmaWVkIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBhc3luY2hyb25vdXMgTUNJIG1lc3NhZ2UgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuZHJ2LnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURlbGF5IGltcG9ydGluZyB1c2VyMzIgKG9ubHkgdXNlZCBmb3IgY29uZmlndXJhdGlvbikuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IG9kZGl0aWVzLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBiaXQgbW9yZSBvZiBmbGFncyBoYW5kbGluZyBpbiBkcmF3ZGliIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglQdXQgYSAnXG4nIGF0IHRoZSBlbmQgb2YgdGhlIEZJWE1FIHRvIHByZXZlbnQgdmVyeSBvZGQgYW5kIGRpZmZpY3VsdAoJdG8gZGVidWcgY3Jhc2hlcyBkdWUgdG8gb3ZlcmZsb3dpbmcgb2YgdGhlIGRlYnVnIGluZm8ncyBvdXRwdXQgYnVmZmVyLgoKCSogdG9vbHMvc3BlY21ha2VyL1JFQURNRSwgdG9vbHMvc3BlY21ha2VyL21haW4uYywgdG9vbHMvc3BlY21ha2VyL21zbWFuZ2xlLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgdG9vbHMvc3BlY21ha2VyL3NwZWNtYWtlci5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcHJvdmUgbmFtZSBkZW1hbmdsaW5nLCBhZGQgJ2RlbWFuZ2xlIHN5bWJvbCcgb3B0aW9uLgoKMjAwMS0wMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUga2V5d29yZCAnZnVuY3Rpb24nLCBhcyByZXF1ZXN0ZWQgYnkgUm9iZXJ0IEx1YmVyZGEuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0eXBvIHdoaWNoIGNhdXNlZCB0aGUgV3JpdGV0b0hvbWVSZWdpc3RyeUZpbGVzIG9wdGlvbiB0byBiZQoJaWdub3JlZC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmV3cml0ZSBXTV9DUkVBVEUgdG8gbWF0Y2ggbmF0aXZlIChhbGxvY2F0aW5nIG93biBFZGl0IGNvbnRyb2wsIGV0YykuCgktIEltcGxlbWVudCBhZGRpdGlvbmFsIFdORFBST0NzIGZvciB0aGUgQ29tYm8gYW5kIEVkaXQgY29udHJvbHMgdG8KCSAgaGFuZGxlIGRpZmZlcmVudCBmdW5jdGlvbnMuCgktIEltcGxlbWVudCBDQkVNX1NFVENVUlNFTCBhbmQgQ0JFTV9IQVNFRElUQ0hBTkdFRC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBXaGVuIHBhaW50aW5nIHRoZSB0ZXh0LCBpZiB0aGUgY29udHJvbCBpcyBPV05FUkRSQVdOIHRoZSBpc3N1ZSB0aGUKCSAgV01fRFJBV0lURU0gbWVzc2FnZS4KCS0gU2V0IHRoZSBmb2N1c2VkIHN0YXR1cyBhdCB0aGUgZW5kIG9mIHRoZSBlbmQgb2YgdGhlIFNldGZvY3VzIHJvdXRpbmUuCgktIEZsaXAgdGhlIG9yZGVyIG9mIHVwZGF0aW5nIHRoZSBsaXN0IGJveCBhbmQgaXNzdWluZyB0aGUgV01fTk9USUZZCgkgIGZvciBDQk5fRURJVFVQREFURSB0byBtYXRjaCBuYXRpdmUuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJTWFkZSBleGNlcHRpb25fZXZlbnRfcmVxdWVzdCBub24tYmxvY2tpbmcsIGFuZCBhZGRlZAoJZ2V0X2V4Y2VwdGlvbl9zdGF0dXMgdG8gcmV0cmlldmUgdGhlIGV4Y2VwdGlvbiByZXN1bHQgcmV0dXJuZWQgYnkgdGhlCglkZWJ1Z2dlci4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9jb2RlcGFnZS5jLCBtc2Rvcy9kb3Nhc3BpLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG9iamVjdHMvZGliLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLCBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywgZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGQgPHN0cmluZy5oPiB0byBmaWxlcyB0aGF0IG5lZWRlZCBpdC4KCgkqIGZpbGVzL2ZpbGUuYywgbWVtb3J5L2F0b20uYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTb21lIG1vcmUgY2xlYW51cHMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNoZWNrIHRoYXQgdGhlIGxpbnV4IDIuNCBldmVudCBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlIGJlZm9yZSBjcmVhdGluZwoJYSBkaW5wdXQgZGV2aWNlIGJhc2VkIG9uIGl0LgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBscER4IGFycmF5IHByb3Blcmx5LgoKCSogd2luZG93cy93aW5wb3MuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFNXX1JFU1RPUkUgaGFuZGxpbmcuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IG5vdGlmeSBwYXJlbnQgb2YgdGhlIEVkaXQgY29udHJvbCBvbiBXTV9TRVRURVhUIHdoZW4gRWRpdCBpcwoJcGFydCBvZiB0aGUgQ29tYm9Cb3guCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBtYWtlIGhpZGRlbiBiYW5kcyBoYXZlIHZhbGlkICgwIHdpZHRoKSBjaGlsZCB3aW5kb3cgYXJlYXMKCS0gd2hlbiBoaWRpbmcgYSBiYW5kLCBkb24ndCBzaG93IHRoZSB3aW5kb3csIGhpZGUgaXQuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglDaGFuZ2VkIHdhaXRfcHJvY2VzcyBhbmQgd2FpdF9kZWJ1Z19ldmVudCByZXF1ZXN0cyB0byBuZXZlciBibG9jazsKCXdhaXRpbmcgaXMgYWx3YXlzIGRvbmUgdGhyb3VnaCBXYWl0Rm9yU2luZ2xlT2JqZWN0KCkuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IG9wZW4gdGhlIGNvbW0gaGFuZGxlIHdpdGggR0VORVJJQ19XUklURSB2aWEgRklMRV9HZXRVbml4SGFuZGxlLgoKCSogd2luZG93cy9kZWZ3bmQuYywgaW5jbHVkZS93aW4uaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIDE2LWJpdCBjYWxscyBpbiBEZWZXaW5kb3dQcm9jIGJ5IDMyLWJpdCwgcHJlZmVycmluZyB1bmljb2RlCglBUEkgY2FsbHMuCgoyMDAxLTAxLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3dzcHJpbnRmLmM6CglHb3QgcmlkIG9mIFdQUklOVEZfRXh0cmFjdFZBUHRyLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgaW5jbHVkZS9kb3NleGUuaCwgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L3N0cnVjdF9jb252ZXJ0LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVkb3MuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBidWdmaXhlcy4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zdHJlc3MuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXh0LmMsIGxvYWRlci90YXNrLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUZpeGVkIHR5cG8gaW4gSEtFWV9VU0VSUy8uRGVmYXVsdCBjcmVhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEb24ndCBzZW5kIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBpbml0aWFsIGRpc3BsYXkgb2YgdGhlIGZpcnN0IHRhYiBvZgoJdGhlIGNvbnRyb2wuCgoJKiB3aW5kb3dzL3NweS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWRkZWQgYSBmZXcgbWVzc2FnZXMgYW5kIG5vdGlmaWNhdGlvbnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2FibGVkIHNldHRpbmcgb2Ygdmlld3BvcnQgb3JpZ2luIGZyb20gYW4gRU1GLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJlc3RvcmUgdGhlIGJpdF9ncmF2aXR5IHRvIEJHRm9yZ2V0IGFmdGVyIHVzaW5nIEJHTm9ydGh3ZXN0IHRvCgljb3B5IGJpdHMgZHVyaW5nIFNldFdpbmRvd1Bvcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBuZWNlc3NhcnkgcmVnaXN0cnkgZW50cmllcyBmb3IgdGhlIE1vemlsbGEgQWN0aXZlWCBjb250cm9sLgoKMjAwMS0wMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgc2V0IHdpbmRvdyB0ZXh0IGZvciBXTV9OQ0NSRUFURSBpbiBEZWZXaW5kb3dQcm9jKigpIGluIGNhc2UKCWxwc3pOYW1lIGlzIGEgc3RyaW5nIChpLmUuIGNoZWNrIEhJV09SRCkuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmFkaW9jaGVjaywgaW5jbHVkZS93aW51c2VyLmg6CglSZW1vdmVkIG5vbi1zdGFuZGFyZCBPQk1fUkFESU9DSEVDSyBiaXRtYXAuCgoJKiBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNtZXRyaWNzLmM6CglVc2UgRHJhd0ZyYW1lQ29udHJvbCgpIGluc3RlYWQgb2YgT0VNIGJpdG1hcHMgdG8gcGFpbnQgY2FwdGlvbiBidXR0b25zCglhbmQgbWVudSBjaGVjayBtYXJrcy4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3RleHQuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB3b3JsZCB0cmFuc2Zvcm0gc3VwcG9ydC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJU2V2ZXJhbCBmaXhlcyBmb3IgcGxheWluZyBlbmhhbmNlZCBtZXRhZmlsZXMgaW4gYSBnaXZlbiByZWN0YW5nbGUuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaDoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB3b3JsZCB0cmFuc2Zvcm0gc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG9iamVjdHMvZm9udC5jLCBSRUFETUUsIGRlYnVnZ2VyL1JFQURNRToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBrZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdXNlci5zZ21sOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJLSBTcGxpdCBXaW5lbGliIFVzZXIgR3VpZGUgaW50byBzbWFsbGVyIGZpbGVzIGZvciBlYXNpZXIgbWFpbnRlbmFuY2UKCSAgYW5kIGJldHRlciBpbnRlZ3JhdGlvbiB3aXRoIG1ha2Vfd2luZWhxLgoJLSBBZGQgc29tZSBXaW5lbGliIGRvY3MgZnJvbSBKb24gR3JpZmZpdGhzLgoJLSBGaXggYSA8c2VjdDI+IHByb2JsZW0gaW4gcnVubmluZy5zZ21sLgoKMjAwMS0wMS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IHJlYWQtb25seSBlZGl0IGNvbnRyb2wgZnJvbSBtb2RpZmljYXRpb24uCgoJKiBkbGxzL21zdmNydC9leGl0LmM6CglKb24gR3JpZmZpdGhzIDx0bnRqcGdyaWZmQHRzbnh0LmNvLnVrPgoJSW1wbGVtZW50ZWQgX19kbGxvbmV4aXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglNaXNjIGZpeGVzIGluIExJU1RWSUVXX1NldEltYWdlTGlzdCwgTElTVFZJRVdfU2V0SXRlbUNvdW50LAoJTElTVFZJRVdfVXBkYXRlU2l6ZS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURpc3BsYXkgdGhlIGNvbmZpZyBmaWxlIGxvY2F0aW9uIGluIHRoZSBpbmNvcnJlY3QgY29uZmlnIGZpbGUgZXJyb3IKCW1lc3NhZ2UuCgoJKiBkbGxzL21zdmNydC93Y3MuYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglVc2UgaW50IGluc3RlYWQgb2YgV0NIQVIgaW4gdmFfYXJnKCkgKGZpeGVzIGdjYy1jdXJyZW50IGNvbXBpbGF0aW9uCglwcm9ibGVtKS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgdmFyaW91cyBkZWZpbml0aW9ucyAobW9zdGx5IG1hY3JvcykuCglGaXhlZCB0eXBvIGluIHRoZSBIRE5fe0JFR0lOLEVORH1EUkFHIG1hY3Jvcy4KCUFkZGVkIGEgcG9pbnRlciB0eXBlIGZvciBJTUFHRUlORk8uCglGaXhlZCB0aGUgcmV0dXJuIHR5cGUgb2YgVHJlZVZpZXdfe1NldFRvb2xUaXBzLEdldFRvb2xUaXBzfS4KCUV2ZW4gbWFjcm9zIG11c3QgY29tZSBpbiBBL1cgYW5kIG5ldXRyYWwgZm9ybSAoc2VlIHRoZSBMaXN0Vmlld18gc2VyaWVzKS4KCUZpeGVkIHR5cG8gaW4gTW9udGhDYWxfU2V0Q29sb3IuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIENIQVJSQU5HRS4KCgkqIGluY2x1ZGUvcHJzaHQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgUFNOX0dFVE9CSkVDVC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgJ29wdGlvbnMuaCcgZm9yIGEgbmVlZGVkIHByb3RvdHlwZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgVmFyQ3lGcm9tSTEgdG8gdGFrZSBhIHNpZ25lZCBjaGFyLgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9tc3ZjcnQvbWJjcy5jLCBvYmplY3RzL2JpdG1hcC5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR5cG8gZml4ZXMgaW4gY29tbWVudHMuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBOZXcgbXN2Y3J0IHVuaWNvZGUgZnVuY3Rpb25zLCB3aW5hcGlfY2hlY2svLVdhbGwvLVcgY2xlYW4uCgktIEZvcndhcmQgdG8gbnRkbGwgd2hlcmUgcG9zc2libGUuCgktIEZpeCBzb21lIC5zcGVjIGVudHJpZXMgd2l0aCBpbmNvcnJlY3QgcGFyYW1ldGVycy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXhlZCBVbmljb2RlIHN0cmluZ3MuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFkZSBTcGluQ291bnQgRklYTUUgaW50byBhIFRSQUNFLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbmNyZWFzZWQgZGVidWdnZXIgaW5jbHVkZSBsaW1pdCB0byA1MTIuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBSZW1vdmUgPHN0cmluZy5oPiBmcm9tIHdpbm50LmguCgktIG50ZGxsOiBjb21wbGV0ZSBjcnQgZnVuY3Rpb25zLCBwcmV2ZW50IGxpYmMgaW1wb3J0cywgZml4IHNzY2FuZi4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9wcnNodC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gRml4IGEgdHlwbyBpbiBUQlNBVkVQQVJBTVMgQS9XIGRlY2xhcmF0aW9uLgoJLSBVc2UgMTYgYml0IFVuaWNvZGUgY29uc3RhbnRzIGZvciB3YyBzdHJpbmdzLgoJLSBNYWtlIHNvbWUgc3RyaW5nIGNvbnN0YW50cyBhdmFpbGFibGUgYXMgVW5pY29kZS4KCjIwMDEtMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUZpeGVkIHRoZSBzaXplIG9mIHRoZSBmaWxlIGRpYWxvZyBpY29ucy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGRlZCBOTUNCRUVOREVESVQgc3RydWN0dXJlIGZvciBOT1RJRlkgZHVtcC4KCS0gQWRkZWQgZHVtcCBvZiBwb3NpdGlvbmluZyBzdHJ1Y3R1cmUgZm9yIFdNX1dJTkRPV1BPU0NIQU5He0VEfElOR30uCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgTk1DQkVFTkRFRElUe1d8QX0gc3RydWN0dXJlcyBhbmQgZmxhZ3MuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXggdGhlIGNtZGxpbmUgYXJndW1lbnQgcGFzc2VkIHRvIE5FX0NyZWF0ZVRocmVhZCB0byBpbmNsdWRlIHN0cmluZwoJbGVuZ3RoLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgcG9pbnRlciB0eXBlIGRlY2xhcmF0aW9ucyAodXN1YWxseSBQeHh4KS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglFc2NhcGUgYW55IHNwYWNlcyBpbiBscHN6T2JqZWN0TmFtZSBwYXNzZWQgdG8gSHR0cE9wZW5SZXF1ZXN0LgoKMjAwMS0wMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IFdhcm5pbmcgZml4LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEaXNwbGF5IHRoZSBpbXBvcnRpbmcgZGxsIGluIHRoZSAweGRlYWRiZWVmIG1lc3NhZ2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2N1cnNvcnMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2ljb25zLnJjLCBpbmNsdWRlL3dpbnVzZXIuaCwgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL2xjYy5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uaCwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJRml4ZWQgYSBudW1iZXIgb2YgaW5jb21wYXRpYmlsaXRpZXMgaW4gT0VNIGljb25zL2N1cnNvcnMgaGFuZGxpbmcuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgaW4gVEVYVF9OZXh0TGluZVcuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9tc2FjbS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3Jhc2FwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZG9jdncuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVkb3MuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3NvY2szMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoJLSBNaW5vciBkb2N1bWVudGF0aW9uIGNoZWNrIGltcHJvdmVtZW50cy4KCjIwMDEtMDEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igb2xkIGxpbnV4L2lucHV0LmguCgoJKiBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXBrZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgY29udmVuaWVuY2Ugc2NyaXB0IGZvciBnZW5lcmF0aW5nIG9ubGluZSBkb2NzIGZvciB3aW5laHEuY29tLgoKCSogY29udHJvbHMvdWl0b29scy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJU3BlY2lmaWVkICdzaWduZWQnIG9uIGNoYXJzIGNvbXBhcmVkIHRvIC0xLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgU0dNTCBJRCBhdHRyaWJ1dGVzIGluIHBhY2thZ2luZy5zZ21sIG1vcmUgdW5pcXVlIHRvIGF2b2lkCgljb25mbGljdHMgd2hlbiB3ZSBidW5kbGUgYWxsIGZvdXIgZ3VpZGVzIGludG8gYSBzaW5nbGUgc2V0LgoKCSogY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9zY3JvbGwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTb2x2ZSByZW1haW5pbmcgcHJvYmxlbXMgd2l0aCBzY3JvbGwgYmFycyBpbiB0aGUgZWRpdCBjb250cm9sLgoKMjAwMS0wMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHE6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCBkYjJodG1sLXdpbmVocSBIVE1MIGdlbmVyYXRpb24gc2NyaXB0LiAgV29ya3MgaW4gRGViaWFuLCBhbmQKCW1heSBhY3R1YWxseSB3b3JrIGluIFJlZGhhdCBub3csIHRvby4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU0hFTEwzMi5Jc05ldERyaXZlIGFuZCBTSEVMTDMyLklMU2F2ZVRvU3RyZWFtIG5lZWRlZCBmb3IKCUlFIDUuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZWQgZm9yIGNoYW5nZSBpbiBjb25maWcgZmlsZSBuYW1lLiAgUmVtb3ZlZCByZWZlcmVuY2VzIHRvCglvYnNvbGV0ZSBnbG9iYWwgd2luZSBjb25maWd1cmF0aW9uIGZpbGUgd2hlcmUgYXBwcm9wcmlhdGUuICBVcGRhdGVkCgljb25maWcgb3B0aW9uIGZvcm1hdCB0byBtYXRjaCB0aGUgbmV3IHN5bnRheC4gIE1pc2MgY2xlYW51cHMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfY3Vyc29ycy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfaWNvbnMucmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL29jcl9hcHBzdGFydGluZywgaW5jbHVkZS9iaXRtYXBzL29jcl9idW1tZXIsIGluY2x1ZGUvYml0bWFwcy9vY3JfY3Jvc3MsIGluY2x1ZGUvYml0bWFwcy9vY3JfZHJhZ29iamVjdCwgaW5jbHVkZS9iaXRtYXBzL29jcl9oYW5kLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2hlbHAsIGluY2x1ZGUvYml0bWFwcy9vY3JfaWJlYW0sIGluY2x1ZGUvYml0bWFwcy9vY3JfaWNvbiwgaW5jbHVkZS9iaXRtYXBzL29jcl9ubywgaW5jbHVkZS9iaXRtYXBzL29jcl9ub3JtYWwsIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZSwgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXplbmVzdywgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXplbnMsIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZW53c2UsIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZXdlLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3VwLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3dhaXQsIGluY2x1ZGUvYml0bWFwcy9vaWNfYmFuZywgaW5jbHVkZS9iaXRtYXBzL29pY19iYW5nXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2Nkcm9tLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2Zsb3BweSwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyMiwgaW5jbHVkZS9iaXRtYXBzL29pY19oYW5kLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hhbmRfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGRpc2ssIGluY2x1ZGUvYml0bWFwcy9vaWNfbGFuZHNjYXBlLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25ldHdvcmssIGluY2x1ZGUvYml0bWFwcy9vaWNfbm90ZSwgaW5jbHVkZS9iaXRtYXBzL29pY19ub3RlXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2ljX3BvcnRyYWl0LCBpbmNsdWRlL2JpdG1hcHMvb2ljX3F1ZXMsIGluY2x1ZGUvYml0bWFwcy9vaWNfcXVlc185NSwgaW5jbHVkZS9iaXRtYXBzL29pY19zYW1wbGUsIGluY2x1ZGUvYml0bWFwcy9vaWNfd2luZWljb24sIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCVN0b3JlIFVTRVIgaWNvbnMgYW5kIGN1cnNvcnMgYXMgcmVzb3VyY2VzIGluc3RlYWQgb2YgeHBtIGJpdG1hcHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBvZmYgYnkgb25lIGVycm9yIGluIGJ1ZmZlciBsZW5ndGggY2hlY2suCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglTd2l0Y2hlZCBmcm9tIHdpbmUuY29uZmlnIGJhY2sgdG8gd2luZS5jb25mLCBubyBuZWVkIHRvIHVzZSBzb21ldGhpbmcKCW5vdCBsaW51eCBzdGFuZGFyZC4gIFJlbW92ZWQgdXNlIG9mIG9ic29sZXRlICItLWNvbmZpZyIgb3B0aW9uIHdoZW4KCWNhbGxpbmcgcmVnYXBpLiAgTG90cyBvZiBjbGVhbnVwIGFuZCByZW9yZ2FuaXphdGlvbi4gIENoZWNrIHRvIHNlZSBpZgoJd2luZSBpcyBpbnN0YWxsZWQgd2hlbiB3aW5laW5zdGFsbCBpcyBub3QgcnVuIGFzIHJvb3QuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgMyBtaXNzaW5nIEZTX3h4eCBtYWNyb3MuCgoyMDAxLTAxLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJUmVwbGFjZWQgc29tZSBHZXRQcm9jQWRkcmVzcygpIGltcG9ydHMgYnkgdGhlIHN0YW5kYXJkIGRsbCBpbXBvcnQKCW1lY2hhbmlzbS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2ltbTMyL21haW4uYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLmgsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21tZGxnL2dlbmVyaWMuYzoKCUNsZWFuZWQgdXAgZGxsIHN0YXJ0dXAgcm91dGluZXMgbm93IHRoYXQgd2UgaGF2ZSBzZXBhcmF0ZSBhZGRyZXNzCglzcGFjZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvd2lubW0vZHJpdmVyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglNYWtlIHNvbWUgbm9pc2UgaW4gYSBmZXcgY2FzZXMgd2hlcmUgdGhlIFgxMWRydiBkb2Vzbid0IGxvYWQsIGJ1dCB1c2VkCgl0byBmYWlsIHNpbGVudGx5LgoKCSogc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglTRVJWSUNFX0NyZWF0ZVNlcnZpY2VUYWJsZSBzdGlsbCByZXR1cm5lZCBUUlVFIGlmIENyZWF0ZVRocmVhZCBmYWlsZWQuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2Vycm5vLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3gxMWRydi5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUNsZWFuZWQgdXAgdGhlIHZhcmlvdXMgZXJybm8gbG9jYXRpb24gdGVzdHMgaW4gY29uZmlndXJlLgoJQWRkZWQgKGhfKWVycm5vX2xvY2F0aW9uIHBvaW50ZXJzIGluIHRoZSBsaWJyYXJ5IHRoYXQgYWxsb3cgcmVtYXBwaW5nCgl0aGUgY2FsbHMgaW4gaGlnaGVyIGxldmVsIGRsbHMuCglNb3ZlZCBYMTFEUlZfQ3JpdFNlY3Rpb24gb3V0IG9mIHN5c2RlcHMuYyBhbmQgaW50byB4MTFkcnYuZGxsLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglJbiBXc0NvbnRyb2wsIGRvbid0IG1peCBMaW51eCBhbmQgV2luZSBzb2NrZXQgY2FsbHMuIEFsd2F5cyB1c2UgV2luZSBjYWxscy4KCUFkZGVkIGhhY2sgZm9yIG1pc3NpbmcgV0lOQVBJIGluIFVuaXggc29ja2V0KCkgZGVmaW5pdGlvbi4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZGVkIHNvbWUgc3R1YnMgbmVlZGVkIGZvciBJRSA1LjUgc2V0dXAuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmV2aXNlZCB3aW5lc2hlbGxsaW5rIHRvIHdha2UgdXAgS0RFIDEueCBzbyB0aGF0IGFwcGxpY2F0aW9ucyB0aGF0IGdldAoJaW5zdGFsbGVkIHNob3cgdXAgd2l0aG91dCBhIG1hbnVhbCBLREUgbWVudSByZWZyZXNoIHJlcXVpcmVkLgoJQWRkZWQgYSBmZXcgdXNhZ2UgY2hlY2tzIHRvIG1ha2UgbWFudWFsIGludm9jYXRpb24gYSBsaXR0bGUgbGVzcwoJcGFpbmZ1bC4KCgkqIHRvb2xzL2JpbjJyZXMuYzogRml4ZWQgdG1wZmlsZSBidWZmZXIgc2l6ZS4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJRml4ZWQgdHlwbyBpbiB3aW5lX2dldF91bml4X2ZpbGVfbmFtZSgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmV2aXNlZCBzaGVsbCBsaW5rIHByb2Nlc3MgdG8gdHJlYXQgZW1wdHkgKGUuZy4gIiIpIHN0cmluZ3MKCWlkZW50aWNhbGx5IHRvIE5VTEwgc3RyaW5ncy4gTWFrZXMgbWFueSBtb3JlIGluc3RhbGxlcnMgdGFrZSB1c2VmdWwKCWFjdGlvbi4gQWRkZWQgbWFueSB0cmFjZSBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgYWRqdXN0IGl0ZW0gcmVjdCBieSBob3Jpem9udGFsIHNjcm9sbGJhciBvZmZzZXQgaW4gcmVwb3J0IHZpZXcuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglDaGFuZ2UgV1NBQ2xlYW51cCAtIHdzaW5mbyBpcyBhIHN0YXRpYyBzdHJ1Y3R1cmUgbm93LgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB3aW5lbGF1bmNoZXIgdGVzdCBmb3IgeG1lc3NhZ2UgYW5kIHdhcm4gdGhlIHVzZXIgaWYgdGhleSBkb24ndAoJaGF2ZSBpdC4KCjIwMDEtMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgaW5jbHVkZS93aW5lX2dsLmgsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJUmVwbGFjZWQgWDExRFJWX0NyaXRTZWN0aW9uIHJlZmVyZW5jZXMgYnkgd2luZV90c3gxMV8odW4pbG9jay4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS94MTFkcnYuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVJlbW92ZWQgQ0FMTF9MQVJHRV9TVEFDSyBzdXBwb3J0LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2FsbCBhIE5FIERMTCdzIERsbEVudHJ5UG9pbnQgdHdpY2UgZHVyaW5nIG9uZSBzaW5nbGUKCUxvYWRNb2R1bGUoKSBjYWxsLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1hcFZpZXdPZkZpbGVFeDogbWFrZSB0aGUgcmV0dXJuZWQgZXJyb3IgZGVwZW5kZW50IG9uIHRoZSBXaW5kb3dzCgl2ZXJzaW9uIHVzZWQuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglVcGRhdGVkIGRlYnVnIGNoYW5uZWxzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGhlYWRlcnMuCgoJKiB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgTUVOVUlURU1JTkZPIHN0cnVjdHVyZSBiZWZvcmUgY2FsbGluZyBHZXRNZW51SXRlbUluZm8uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhbiBpbnRlcmZhY2UgY2FzdCBpbiBERDItPkRENyB0aHVuay4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgb25lIG1pc3NpbmcgYnVmZmVyIHNpemUgcm91bmRpbmcgaW4gdGhlIGVkaXQgY29udHJvbC4KCU1ha2Ugcm91bmRpbmcgY29kZSBzbGlnaHRseSBtb3JlIHJlYWRhYmxlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgaWYxNjMyL2J1aWx0aW4uYzoKCVJlcGxhY2VkIEdMT0JBTF9BbGxvYyBieSBHbG9iYWxBbGxvYzE2IHdoZXJlIHBvc3NpYmxlLgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy90d2Vhay5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy91c2VyL2NhY2hlLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9jYWNoZS5oLCBpbmNsdWRlL3R3ZWFrLmgsIGluY2x1ZGUvdXNlci5oOgoJTW92ZWQgdHdlYWsgc3VwcG9ydCB0byBVU0VSIGRsbC4gUmVtb3ZlZCB0d2Vhay5oIGFuZCBjYWNoZS5oLgoKCSogbWVtb3J5L2xvY2FsLmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDJmLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2luaXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHByLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2ZpbGUuYywgaWYxNjMyL3JlbGF5LmM6CglSZW1vdmVkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSAxNi1iaXQgdGFzayBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9tc3ZjcnQvY3R5cGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGaXhlZCB0b3VwcGVyL190b3VwcGVyIG1peHVwLgoKMjAwMS0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAxMDExMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYzoKCUFkZGVkIG1pc3NpbmcgV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWM6Cgl3aW5tbS5kbGwgY2FuIG5vdyBiZSBwcm9wZXJseSBzZXBhcmF0ZWQuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdhcm5pbmcgZml4LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZXMgZm9yIHZhcmlvdXMgdW5kZXJydW4tcmVsYXRlZCBwcm9ibGVtcy4gQWxzbyBhZGRlZCBhIG1lY2hhbmlzbQoJZm9yIHRoZSBzb3VuZCBkcml2ZXIgdG8gcmVxdWVzdCB0aGF0IGEgU3RvcCBzaG91bGQgY2xvc2UgYW5kIHJlb3BlbgoJdGhlIGRldmljZS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZSBtdWx0aW1lZGlhIHRpbWVycyBmcm9tIHRoZSBzZXJ2aWNlIHRocmVhZCwgdXNlIGEgc2VwYXJhdGUgdGhyZWFkCglpbnN0ZWFkLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbiBTVEFUVVNCQVJfR2V0VGlwVGV4dHthLFcsIGFsd2F5cyBwdXQgYSB0ZXJtaW5hdGluZyAnXDAnIGluIHRoZQoJYnVmZmVyLgoJUGFzcyBhIGJ1ZmZlciBvZiBzdWZmaWNpZW50IHNpemUgdG8gVFRNX0dFVFRFWFRBLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYTJfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsIGRsbHMvZGRyYXcvbWFpbi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCVdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL25zcGFwaS5oLCBpbmNsdWRlL3dzaGlzb3RwLmgsIGluY2x1ZGUvd3NpcHguaCwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJSW1wbGVtZW50ZWQgRW51bVByb3RvY29sQS9XLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglOZXRCU0QgMS41IGlzIGxhY2tpbmcgZWN2dCwgZmN2dCwgZ2N2dCBmb3IgY3J0ZGxsLgoKCSogc2VydmVyL2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJV29ya2Fyb3VuZCBmb3IgU3VTRSA3IDIuMi4xNiBrZXJuZWwgYnVnLgoKCSogY29udHJvbHMvZWRpdC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJR3VhcmQgYWdhaW5zdCBpbmNvbWluZyBzdHJpbmcgb2YgTlVMTCBpbiBXTV9TRVRURVhULgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NvbnNvbGUuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL2xvY2FsZS5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC9tZW1vcnkuYywgZGxscy9jcnRkbGwvc3Bhd24uYywgZGxscy9jcnRkbGwvc3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3RpbWUuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUdXJuIGNydGRsbCBpbnRvIGZvcndhcmRzIHRvIG1zdmNydC4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHNvbWUgZXhjZXB0aW9uIGhhbmRsaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21hdGguYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgbWlzdHlwZWQgdmFyaWFibGUgbmFtZSBpbiBNU1ZDUlRfX2ZwY2xhc3MoKS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglBZGRlZCBmbGFnIHRvIGRpZmZlcmVudGlhdGUgZmlsZSBtYXBwaW5ncyBhbmQgVmlydHVhbEFsbG9jKCkgYmxvY2tzLAoJYW5kIHJlamVjdCBWaXJ0dWFsRnJlZSgpIGNhbGxzIG9uIGZpbGUgbWFwcGluZ3MuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglSZW1vdmVkIG9ic29sZXRlIGdldF9yZXFfYnVmZmVyKCkgZnVuY3Rpb24uCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVN3YXAgbHBPdmVybGFwcGVkIHBhcmFtZXRlcnMgaW4gUmVhZEZpbGUgYW5kIFdyaXRlRmlsZS4KCVRoZSBJbnRlcm5hbEhpZ2ggbWVtYmVyIHNob3VsZCBjb250YWluIHRoZSBudW1iZXIgb2YKCWJ5dGVzIHRyYW5zZmVycmVkLgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeGVzIGFzIGEgcmVzdWx0IG9mIHRlc3RpbmcgYnVpbHRpbiBjcnRkbGwgYWdhaW5zdCBidWlsdGluIG1zdmNydC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZWQgbWVzc2FnZXMgd2l0aCBuZXcgY29uZmlnIGZpbGVzIGluIG1pbmQgdG8ga2VlcCBmcm9tIGNvbmZ1c2luZwoJdXNlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIG1vc3QgZnVuY3Rpb25hbGl0eS4gIFRPRE8gbGlzdHMgd2hhdHMgbGVmdC4KCjIwMDEtMDEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLCBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaCwgd2luZWRlZmF1bHQucmVnOgoJSm9obiBSLiBTaGVldHMgPGR1c2tAcmF2ZW5kdXNrLm9yZz4KCUltcGxlbWVudGVkIHN0dWJzIGZvciBJV2ViQnJvd3NlciBpbiBzaGRvY3Z3LmRsbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6CglOYXRoYW4gTmV1bGluZ2VyIDxubmV1bEB1bXIuZWR1PgoJUmVuYW1lZCBzdHJ1Y3Qgb3B0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGdldG9wdC5oLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIGJpbmFyeSBjb21wYXRpYmxlIF9fRUhfcHJvbG9nLgoKCSogc2VydmVyL21haW4uYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgc2ltcGxlIHVzYWdlKCkgZnVuY3Rpb24uCgoJKiBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYzoKCU5vIGxvbmdlciB1c2VkLgoKCSogaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3Lmg6CglKb2huIFIuIFNoZWV0cyA8ZHVza0ByYXZlbmR1c2sub3JnPgoJQ29ycmVjdCBzb21lIGN1dCAmIHBhc3RlIHR5cG9zLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGZvciB0aGUgbmV3IGNvbmZpZyBmb3JtYXQgYW5kIGxvY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGNvbmZpZwoJZmlsZS4gIEFkZCBhIGNvbmZfcXVlc2lvbiB0byBjb252ZXJ0IGFuIG9sZCB1c2VyIGNvbmZpZyBmaWxlLCBvciB1c2UKCXRoZSBkZWZhdWx0IFdpbmUgY29uZmlnIGZpbGUuICBSZW1vdmVkIHRoZSBzZXR0aW5nIG9mIG9ic29sZXRlCglFWFRSQV9MRF9MSUJSQVJZX1BBVEguICBBZGRlZCBhIGNvbmZfcXVlc3Rpb24gdG8gZ2l2ZSB0aGUgdXNlciB0aGUKCW9wdGlvbiB0byBpbnN0YWxsIGxvY2FsIGNvbmZpZyBhbmQgcmVnaXN0cnkgZmlsZXMgd2hlbiB0aGUgc2NyaXB0IGlzCgliZWluZyBydW4gYnkgcm9vdC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgdGhlIG1haW5fdGFyZ2V0IGluIHNpbmdsZS10YXJnZXQgbW9kZS4KCVRoZSBkZWZpbmVkKEBhcnJheSkgY29uc3RydWN0IGlzIHNhaWQgdG8gYmUgZGVwcmVjYXRlZCwgYXZvaWQgaXQuCglTaW1wbGlmeSB0aGUgdXNhZ2UgcmVwb3J0aW5nLgoJQWRkIGEgd29yZCBvZiBjYXV0aW9uIHRvIHRoZSB1c2FnZSBtZXNzYWdlLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIFdNX0dFVFRFWFQgaW4gdGhlIGVkaXQgY29udHJvbC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVmFyaW91cyBjb21ib2JveCBmaXhlcy4KCgkqIGZpbGVzL01ha2VmaWxlLmluOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBkZWZpbmVzIGFmdGVyIHByb2ZpbGUuYyBjbGVhbnVwLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB1bm5hbWVkIHVuaW9uIGR1bW15IG5hbWVzLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsIGluY2x1ZGUvd2lubnQuaCwgY29uZmlndXJlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZXBsYWNlZCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGNvbmZpZ3VyZSBjaGVja3MgYnkgaGFyZGNvZGVkCglkZWZpbml0aW9ucyBpbiB3aW5udC5oICh0byBhdm9pZCBjb25maWcuaCBkZXBlbmRlbmN5KS4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvdG90eXBlcyB0byBhdm9pZCBjb21waWxlIHdhcm5pbmdzIG9uIFNvbGFyaXMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV29yayBhcm91bmQgcHJvYmxlbXMgb24gU29sYXJpcyBpZiBjb25maWcuaCBpcyBub3QgaW5jbHVkZWQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnl0ZW9yZGVyIHByb2JsZW1zIGNhdXNlZCBieSBub24tcG9ydGFibGUgY29kZS4KCjIwMDEtMDEtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvY3R5cGUuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZXhpdC5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXNfZXJybm8uaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywgZGxscy9tc3ZjcnQvdGltZS5jLCBkbGxzL21zdmNydC93Y3MuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgbG9hZGVyL2xvYWRvcmRlci5jLCBERVZFTE9QRVJTLUhJTlRTLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIE1pZ3JhdGUgQ1JURExMIHRvIE1TVkNSVC4KCS0gTWFueSBmaXhlcyBhbmQgYSBsb2FkIG9mIG5ldyBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9vcHRpb25zLmM6CglSZW1vdmVkIGFsbCB0cmFjZXMgb2YgdGhlIC0tY29uZmlnIG9wdGlvbi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglSZWVuYWJsZWQgRFhHcmFiIG9wdGlvbi4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTeW5jaHJvbml6ZSB0aGUgc2l6ZXMgb2YgdGhlIGV4dGVybmFsIGFuZCBpbnRlcm5hbCBidWZmZXJzIGF0IHN0YXJ0CglhbmQgZW5kIG9mIG1lc3NhZ2UgcHJvY2Vzc2luZyBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4ZWQgcmV0dXJuZWQgbGVuZ3RoIGZvciBMQl9HRVRURVhULgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglBZGRlZCBubHMgdG8gRVhUUkFTVUJESVJTLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdXNlIG9mIG91dGRhdGVkIFdJTkVfSU5JIGVudmlyb25tZW50IHZhcmlhYmxlLiAgUmVtb3ZlZAoJb2Jzb2xldGUgLS1jb25maWcgb3B0aW9uLiAgUmVtb3ZlZCBsb2FkaW5nIG9mIGdsb2JhbCB3aW5lIGNvbmZpZyBmaWxlLgoJQ2xlYW5lZCB1cCBzb21lIG1lc3NhZ2VzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJZXMtPmJ1ZmZlcl9zaXplIGlzIG5vdCBhbHdheXMgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBjdXJyZW50bHkgaW4gdGhlCgllZGl0Ym94LCBzbyB1c2UgLTEgaW5zdGVhZC4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBZGRlZCBhIHNwZWNpZmljIGRlYnVnIGNoYW5uZWwgZm9yIGRsbCBsb2FkaW5nIChidWlsdGluL25hdGl2ZSkuCgoJKiBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglGaXhlZCBzb21lIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIFJlYWRGaWxlIGFuZCBXcml0ZUZpbGUuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVxdWlyZSB0aGF0IHRoZSB1c2VyIHNwZWNpZnkgYSB3b3JrIGRpcmVjdG9yeS4gVGhpcyBwcm92aWRlcyBhCglzYWZlZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsIGludm9jYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPbmx5IGNvcHkgdGhlIGR3U2l6ZSBieXRlcyByZWFsbHkgb2NjdXBpZWQgYnkgbHBQcm9wU2hlZXRQYWdlLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGb3IgdGhlIEdsb2JhbCpQdHIqIHNldCBvZiBtYWNyb3MsIHJlcGxhY2UgdGhlIDE2Yml0IHZlcnNpb24gd2l0aAoJdGhlaXIgMzIgYml0IGVxdWl2LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglPbmx5IGNhbGwgVE9PTEJBUl9DYWxjVG9vbGJhciB3aGVuIHBhcmFtZXRlcnMgY2hhbmdlLgoKMjAwMS0wMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy91c2VyL2NvbnRyb2xzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pY29kZSB3aW5kb3cgcHJvYyBmb3IgdGhlIGxpc3Rib3ggY29udHJvbC4KCVJlcGxhY2VkIGFsbCBhbnNpIGNhbGxzIGJ5IHRoZWlyIHVuaWNvZGUgZXF1aXZhbGVudHMuCglSZW1vdmVkIHVzZSBvZiB0aGUgY3VzdG9tIGxvY2FsIGhlYXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBmb3IgTlVMTCBhbmQgTFBTVFJfVEVYVENBTExCQUNLIGJlZm9yZSB1c2luZyBscENvbHVtbi0+cHN6VGV4dC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBzb21lIGluY29ycmVjdCBmb3JtYXQgc3RyaW5ncy4KCgkqIGRlYnVnZ2VyL2RiZ21haW4uYzogUmVtb3ZlZCBvYnNvbGV0ZSBmaWxlLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3VzZXIvbWlzYy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgSERXUCB0byB3aW51c2VyLmguCglDb252ZXJ0IEhXSU5TVEEgdG8gU1RSSUNULgoKCSogZmlsZXMvZHJpdmUuYywgbWlzYy9jZHJvbS5jOgoJUnlhbiBDdW1taW5nIDxib2RuYXI0MkBib2RuYXI0Mi5kaHMub3JnPgoJTWFrZSBDRFJPTV9HZXRMYWJlbCByZXR1cm4gMCBpbiB0aGUgZXZlbnQgb2YgZmFpbHVyZSwgYW5kIG1ha2UgdGhlCglkZWZhdWx0IGxhYmVsIGZvciBkcml2ZXMgYSBzdHJpbmcgb2YgMTEgc3BhY2VzLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglGaXhlZCB1c2FnZSBvZiBSZWdFbnVtVmFsdWVBLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIEVudW1QcmludGVycygpIGZsYWcgUFJJTlRFUl9FTlVNX0RFRkFVTFQgaW4gdGhlIHNhbWUgd2F5Cgl0aGF0IE5UIGRvZXMgLSB0aGF0IGlzIGlnbm9yZSBpdCBhbmQgcmV0dXJuIFRSVUUuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFjdHVhbGx5IGNhbGwgQ0RST01fQXVkaW9fR2V0VHJhY2tzSW5mbyB3aGVuIHJldHJpZXZpbmcKCU1DSV9DREFfU1RBVFVTX1RSQUNLX1RZUEUuCglXSU5FX0NEQV9PUEVOIG1hcHMgdG8gTUNJRVJSX0hBUkRXQVJFLgoKCSogc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU0VSVklDRV9BZGRPYmplY3QgY2hlY2sgZm9yIE5VTEwgaGFuZGxlcyBpbiBhZGRpdGlvbiB0bwoJSU5WQUxJRF9IQU5ETEVfVkFMVUUuCgoJKiBmaWxlcy9maWxlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGxhc3QgcGFyYW1ldGVyIG9mIENyZWF0ZUZpbGUgc2hvdWxkIGJlIDAgKGFrYSBOVUxMKSwgbm90IC0xLgoJQ3JlYXRlRmlsZSByZXR1cm5zIElOVkFMSURfSEFORExFX1ZBTFVFIHdoZW4gaXQgZmFpbHMsIG5vdAoJSEZJTEVfRVJST1IuCglBZGRlZCBjb21tZW50cy4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglwdHlfaGFuZGxlIGlzIGEgSEFORExFLCBub3QgYW4gaW50LgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCShjb25maWd1cmUpIExvb2sgZm9yIHRoZSBoZWFkZXJzIGluICRXSU5FX1JPT1QvaW5jbHVkZS93aW5lIGFuZAoJL29wdC93aW5lL2luY2x1ZGUvd2luZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVNlbmQgdGhlIGNyZWF0aW9uIG5vdGlmaWNhdGlvbiB0byB0aGUgdHJ1ZSBvd25lciBvZiB0aGUgdG9vbHRpcC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglFbnN1cmUgdGhlcmUgaXMgYW4gZWRpdCBjb250cm9sIHdoZW4gd2UgcmVzZXQgY29udGVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglBZGp1c3QgaXRlbSByZWN0cyBieSBob3Jpem9udGFsIHNjcm9sbGJhciBvZmZzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4ZWQgVENNX0dldFJvd0NvdW50LgoKMjAwMS0wMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjOgoJTmVlZCB0byBpbXBvcnQgdXNlcjMyIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHVzZSBzeW1ib2xzIGZyb20gaXQgeWV0LgoKCSogdG9vbHMvc3BlY21ha2VyL01ha2VmaWxlLmluOgoJTGVvbmFyZCBOb3JyZ+VyZCA8dmluc2NpQG5pYy5mdW5ldC5maT4KCVJlZmVyZW5jZSAkKFNSQ0RJUikgd2hlbiBpbnN0YWxsaW5nIHRoZSBwZXJsIHNjcmlwdCAoaXQgZG9lc24ndCBleGlzdAoJaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSkuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglDaGFuZ2VkIHN0cmluZyBwb2ludGVyIGNhbGN1bGF0aW9uLgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIGFsbCB0aGUgZG9jdW1lbnRlZCBzaGx3YXBpIGZ1bmN0aW9ucyBvdXQgb2YgdW5kb2NzaGVsbC5oIGludG8KCXNobHdhcGkuaC4gIE5vdGhpbmcgYnV0IGZpbGVzIGluIGRsbHMvc2hlbGwzMiB3aWxsIG5vdyBpbmNsdWRlCgl1bmRvY3NoZWxsLmguCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBvbmUgJiwgbm93IENvQ3JlYXRlSW5zdGFuY2UoKSBvZiBkZHJhdyBvYmplY3RzIHdvcmtzIGFnYWluLgoKCSogc2VydmVyL2FzeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUNhbGN1bGF0ZSB0aGUgdGltZW91dCB0aW1lIG9uY2Ugd2hlbiB0aGUgYXN5bmMgaXMgY3JlYXRlZC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBIYXNPdmVybGFwcGVkQ29tcGxldGVkIG1hY3JvLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1pc3NpbmcgbWFwcGluZyBmb3IgTEJfRklORFNUUklOR0VYQUNUIG1lc3NhZ2UgKHRoYW5rcyB0byBHZXJhcmQKCVBhdGVsIGZvciByZXBvcnRpbmcgdGhlIGJ1ZykuCgoJKiBjb250cm9scy9jb21iby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbWJvYm94IHNob3VsZCBjbGVhciBpdHMgY3VycmVudCBzZWxlY3Rpb24gb24gcmVzcG9uc2UgdG8KCUNCX1NFVENVUlNFTCgtMSkgbWVzc2FnZS4KCjIwMDEtMDEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVzZSB0aGUgZXhlIG5hbWUgYW5kIGZpbGUgaGFuZGxlIHdlIGdvdCBmcm9tIHRoZSBzZXJ2ZXIgYWxzbyB3aGVuCglzdGFydGluZyBXaW4xNiBvciBET1MgcHJvZ3JhbXMsIHRvIGF2b2lkIGRlcGVuZGluZyBvbiB0aGUgY29udGVudHMgb2YKCXRoZSBjb21tYW5kLWxpbmUuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYzoKCUFkZGVkIHNlcGFyYXRlIHF1ZXVlIGZvciAic3lzdGVtIiBBUENzIHRoYXQgZ2V0IGNhbGxlZCBldmVuIHdoZW4gdGhlCgl0aHJlYWQgaXMgbm90IGluIGFuIGFsZXJ0YWJsZSBzdGF0ZS4KCVNwZWNpZnkgdGhlIHNlbGVjdF9yZXF1ZXN0IHRpbWVvdXQgYXMgYWJzb2x1dGUgdmFsdWUgc28gdGhhdCB3ZSBjYW4KCXJlc3RhcnQgdGhlIHJlcXVlc3Qgd2hlbiBpbnRlcnJ1cHRlZC4KCgkqIHdpbmUuaW5pOiBSZW1vdmVkIG9sZCBmb3JtYXQgY29uZmlnIGZpbGUuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW9kaWZ5IHRoZSBsb29rIG9mIGJpdG1hcCBtZW51IGl0ZW1zIHRvIG1hdGNoIFdpbjk1IGFuZCBXaW45OAoJRml4IHRoZSBzdW5rZW4gZWRnZS9iaXRtYXAgb3ZlcmxhcCBpbiB0aGUgV2luOTggbG9vawoJSW50cm9kdWNlIGFuIElTX01BR0lDX0lURU0gbWFjcm8gdG8gdGVzdCBpZiB0aGUgaXRlbSBpcyAnbWFnaWMnCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBIRklMRSB2cy4gSEFORExFIG1pc21hdGNoZXMuCglJZiBub3QgdXNlZCB0aGUgbGFzdCBwYXJhbWV0ZXIgb2YgQ3JlYXRlRmlsZSBtdXN0IGJlIDAsIG5vdCAtMS4KCgkqIGRsbHMvbXNhY20vbXNhY20uc3BlYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRm9yY2VkIGxvYWRpbmcgb2YgbXNhY20zMiB3aGVuIG1zYWNtIGlzIGxvYWRlZC4KCUFkZGVkIG1zYWNtIERMTCBwYWlyIGluIGNvbmZpZyBmaWxlcy4KCUFkZGVkIHNvbWUgZHVtYiBjYWxscyBmcm9tIDE2IHRvIDMyLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSW50ZXJuZXRDYW5vbmljYWxpemVVcmwuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJQWRkZWQgYSBtb3JlIHRydXRoZnVsIG1lc3NhZ2UgYWJvdXQgd2hhdCByZWFsbHkgaXMgd3JvbmcuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgY2FsbCBRdWVyeUFib3J0MTYoKSBpbiBXcml0ZVNwb29sMTYoKSwgc2luY2UgaXQgbWlnaHQgYmUgY2FsbGVkCgl3aXRoIGxvY2tzIGhlbGQgKGFuZCB3ZSBkbyBub3QgbmVlZCB0byBjYWxsIGl0IGhlcmUpLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglUb29rIGEgc3RhYiBhdCBpbXBsZW1lbnRpbmcgTEJTX05PU0VMLgoKMjAwMS0wMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jOgoJU2VuZCB0aGUgZXhlIGZpbGUgaGFuZGxlIGluIGluaXRfcHJvY2Vzc19kb25lIHJlcXVlc3QuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBdm9pZCBjcmFzaGluZyBvbiBpbnZhbGlkIGxpbmVzIGR1cmluZyBjb25maWcgZmlsZSBjb252ZXJzaW9uLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdXJsLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgYSBmZXcgVXJsKiBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9jb21iby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgd2luZG93IHByb2MgZm9yIGNvbWJvYm94IGNvbnRyb2wuCglSZXBsYWNlZCBhbnNpIGNhbGxzIGJ5IHRoZWlyIHVuaWNvZGUgZXF1aXZhbGVudHMuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIHdpbmRvdyBwcm9jIGZvciB0aGUgc3RhdGljIGNvbnRyb2wuCglSZXBsYWNlZCBhbnNpIGNhbGxzIGJ5IHRoZWlyIHVuaWNvZGUgZXF1aXZhbGVudHMuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVJldHVybmluZyBzdWNjZXNzIGZvciB1bmtub3duIFdTQ05UTF9UQ1BJUF9RVUVSWV9JTkZPIGNvZGUgbWFrZXMgd2luOTgKCXdpbmlwY2ZnIHdvcmsuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdXNlIGV2ZW50cyBmaXguCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9yZWdpc3RyeS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQWRkZWQgaGFuZGxlX3QgdHlwZSB0byBzZXJ2ZXIgaW50ZXJmYWNlIHNvIHRoYXQgd2UgY2FuIG1ha2UgaGFuZGxlcwoJcG9pbnRlcnMgbGF0ZXIgb24uCglBbHdheXMgdXNlIDAgdG8gc2lnbmFsIGludmFsaWQgaGFuZGxlIGluIHNlcnZlciByZXF1ZXN0cy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUkgdHJpcGxlIGNoZWNrZWQgYnV0IHllcywgQ0hPT1NFQ09MT1IuaEluc3RhbmNlIGlzIGFuIEhXTkQuLi4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIG1zZG9zL3ZnYS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG11c3QgY2FzdCB0aGUgcmV0dXJuIHZhbHVlIG9mIEdldFByb2NBZGRyZXNzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIFduZFByb2MgZnVuY3Rpb24gd2FzIG1pc3NpbmcgdGhlIENBTExCQUNLIG1vZGlmaWVyLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBmaXJzdCAyIHBhcmFtZXRlcnMgb2YgV2luTWFpbiBhcmUgSElOU1RBTkNFcywgbm90IEhBTkRMRXMuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBwcm9ibGVtcyB3aXRoIHNjcm9sbGluZyBpbiB0aGUgZWRpdCBjb250cm9sLgoKMjAwMS0wMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZWQgdGhlICdmbicgcHJlZml4IChpLmUuIElDT01fRk4pLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RkcmF3LmgsIG1zZG9zL3ZnYS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uaCwgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5oLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmgsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuaCwgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWJ0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGlidGV4dHVyZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZG9jdW1lbnRhdGlvbi9kZHJhdy50eHQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZGNvbWltcGwuaCwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvc3RydWN0X2NvbnZlcnQuYywgZGxscy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWpvciBEaXJlY3REcmF3IHJlc3RydWN0dXJlL3JlaW1wbGVtZW50YXRpb24sIHVzaW5nIGFuIGltcHJvdmVkIGNvbXBvbmVudAoJb2JqZWN0IG1vZGVsIGhpZXJhcmNoeS4gVGhlIGltcGxlbWVudGF0aW9uIGN1cnJlbnRseSBzdXBwb3J0czoKCS0gRGlyZWN0RHJhdyBvdmVyIEdESS9VU0VSIGluIGEgd2luZG93ICh1c2luZyBESUJzZWN0aW9ucyBhbmQKCSAgYXN5bmNocm9ub3VzIHVwZGF0ZXMpCgktIFhWaWRNb2RlCgktIFhGODZER0EyCgktIEFsbCBEaXJlY3REcmF3IGludGVyZmFjZXMgZnJvbSB2ZXJzaW9ucyAxIHRvIDcgKGF0IGxlYXN0IGluIHRoZW9yeSkKCS0gSG9va3MgZm9yIERpcmVjdDNEIGludGVyZmFjZXMKCgkqIGRsbHMvbXNhY20vd2luZWFjbS5oLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9tc2FjbWRsZy5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIHBhcnRzLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0aGUgYWxpZ25tZW50IG9mIHRoZSBNRl9SSUdIVEpVU1RJRlkgbWVudSBpdGVtcy4KCgkqIG1pc2MvbWFpbi5jOiBSZW1vdmVkIG9ic29sZXRlIGNvZGUuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBGaXhlZCBkbGwgZGVwZW5kZW5jaWVzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgaW5jbHVkZS9tbWRkay5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgbWFuaWZlc3QgY29uc3RhbnQgaW5zdGVhZCBvZiByYXcgdmFsdWVzIGZvciBhbGwgdGhlCglEUlZfUVVFUlk/Pz8gdmFsdWVzLgoKCSogZGxscy9rZXJuZWwvdGh1bmsuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkZWQgVWxyaWNoIFdlaWdhbmQncyBkZXNjcmlwdGlvbiBvZiBLRVJORUwzMl85OS4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCU1pa2UgTWNDb3JtYWNrICA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVNvbWUgYm9ya2VuIG1lbW9yeSBtb25pdG9yaW5nIHByb2dyYW1zIGRpdmlkZSBieSBkd1RvdGFsUGFnZUZpbGUsCgl3aGljaCBwcm9iYWJseSBpc24ndCB6ZXJvIG9uIHdpbmRvd3MuCgoJKiBjb25maWd1cmUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9zcGVjbWFrZXIvLmN2c2lnbm9yZSwgdG9vbHMvc3BlY21ha2VyL01ha2VmaWxlLmluLCB0b29scy9zcGVjbWFrZXIvUkVBRE1FLCB0b29scy9zcGVjbWFrZXIvZGxsLmMsIHRvb2xzL3NwZWNtYWtlci9mdW5jdGlvbl9ncmVwLnBsLCB0b29scy9zcGVjbWFrZXIvbWFpbi5jLCB0b29scy9zcGVjbWFrZXIvbWlzYy5jLCB0b29scy9zcGVjbWFrZXIvbXNtYW5nbGUuYywgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jLCB0b29scy9zcGVjbWFrZXIvc2VhcmNoLmMsIHRvb2xzL3NwZWNtYWtlci9zcGVjbWFrZXIuaCwgdG9vbHMvc3BlY21ha2VyL3N5bWJvbC5jLCBjb25maWd1cmU6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgc3BlYyBnZW5lcmF0aW9uIHRvb2wgc3BlY21ha2VyLgoKCSogbWlzYy9vcHRpb25zLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmVpbXBsZW1lbnRlZCAicmVsYXk9IiBhbmQgInNub29wPSIgc3Vib3B0aW9ucy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHRoZSBmdW5jdGlvbiBwb2ludGVyIHR5cGVzIHRvIHRoZWlyIHJpZ2h0ZnVsIGhlYWRlcnMuCglUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlcyBtdXN0IGJlIGJhc2VkIG9uIFNUUklDVC4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU3RhcmNyYWZ0IHdhcyBjb25mdXNlZCBieSBhIHdyb25nIEZBTFNFIEJpdEJsdCByZXR1cm4uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IGZyYWdtZW50cyBmb3Igd2F2ZSBpbnB1dCB0byA3IHggMTAyNCBieXRlLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkaW5nIG9mIDE2IGJpdCBkcml2ZXJzLgoJQmV0dGVyIHN1cHBvcnQgZm9yIG5hdGl2ZSBtYXBwZXJzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVyZSB3aGVuIGRlbGV0aW5nIGFuIGl0ZW0gdXNpbmcgaW5kZXggLTEgb24gYW4gZW1wdHkKCWxpc3Rib3ggd2Ugd291bGQgcGFzcyB0aHJvdWdoIGFuIGlsbGVnYWwgbmVnYXRpdmUgaW5kZXggYW5kIGNhdXNlCglwcm9ibGVtcy4KCjIwMDEtMDEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUGFzcyB0aGUgYXBwbGljYXRpb24gbmFtZSBhbHNvIHdoZW4gc3RhcnRpbmcgYSBVbml4IGFwcCwgYW5kIHVzZSBpdCB0bwoJbG9hZCB0aGUgbWFpbiBleGUgLnNvIGZpbGUuCglGaXhlZCBidWcgaW4gZGlyZWN0b3J5IGhhbmRsaW5nIGluIFBST0NFU1NfQ3JlYXRlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglKb24gR3JpZmZpdGhzIDx0bnRqcGdyaWZmQHRzbnh0LmNvLnVrPgoJQWRkZWQgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudCBwcm90b3R5cGUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCB3aW5kb3dzL3VzZXIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IEhERVNLIHRvIFNUUklDVC4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZHVwbGljYXRlIGZpZWxkIGluIGludGVybmFsIHN0cnVjdHVyZS4KCVNpbGVuY2VkIHdhcm5pbmcgZm9yIE1DSV9DT05GSUdVUkUgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIERSVk1fTUFQUEVSX1NUQVRVUyBtZXNzYWdlLgoKCSogZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBwb2ludGVycyB0byBleHRlcm5hbCBmdW5jdGlvbnMgYnkgYSBETEwgaW1wb3J0LgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYml0bWFwIHNpemUgaGFuZGxpbmcuCgoyMDAxLTAxLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGNvbmZpZ3VyZToKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJVHVybiBvbiBkZXRlY3RhYmxlIGF1dG9yZXBlYXQgaWYgdGhlIFggS2V5Ym9hcmQgRXh0ZW5zaW9uIGlzCglkZXRlY3RlZC4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgSE1FVEFGSUxFUElDVCB0byB3dHlwZXMuaC4gTm90ZSwgSE1FVEFGSUxFUElDVCBpcyBhbHdheXMgYQoJJ3ZvaWQqJyB1bmxpa2UgcmVndWxhciBoYW5kbGVzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudCBQcmludERsZzE2IGJldHRlciAoYWRkaW5nIFByaW50RGxnUHJvYzE2IGFuZCBzZXZlcmFsIG90aGVyCgkxNmJpdCBkZXBlbmRlbnQgZnVuY3Rpb25zKQoJSWYgd2UgYXJlIHVzaW5nIGEgdGVtcGxhdGUgd2UgbWlnaHQgbm90IGhhdmUgdGhlIGRlZmF1bHQgY29tYm9ib3ggZm9yCglwcmludGVycywgdXNlIHRoZSBkZWZhdWx0IHByaW50ZXIgaW4gdGhvc2UgY2FzZXMuCglNb3JlIGVycm9yIG1lc3NhZ2VzIGFuZCBjaGVja3MuCglBZGRlZCBHbG9iYWxGbGFnczE2IGFuZCBHbG9iYWxSZUFsbG9jMTYgdG8ga2VybmVsMzIuc3BlYy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVsYXllZCBpbXBvcnQgdGh1bmtzIGZvciBTcGFyYy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgYW4gJyNpZmRlZiBTVFJJQ1QnLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQnVnZml4IGZvciBzb3VuZCBkcm9wcGluZyBvdXQsIGFuZCB3b3JrYXJvdW5kIGZvciBIYWxmLUxpZmUncwoJYnJhaW5kZWFkIHNlY29uZGFyeSBzb3VuZCBidWZmZXIgbWFuYWdlbWVudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvd2luZGVmLmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgSERST1AgdG8gc2hlbGxhcGkuaC4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNob3VsZCBpbmNsdWRlIGNndWlkLmguCgoJKiBpbmNsdWRlL29sZTIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0d28gZXJyb3IgY29kZXM6IEVfRFJBVyBhbmQgREFUQV9FX0ZPUk1BVEVUQy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiA4LjMgZmlsZSBuYW1lcy4KCUZpeGVkIHNpemVvZihXQ0hBUikgYnVncy4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBGaXhlZCBhIGJ5dGVvcmRlciBjb252ZXJzaW9uIHByb2JsZW0gd2l0aCBtZXNzYWdlIHRhYmxlcy4KCS0gQ2FyZWZ1bGx5IHJlYWQgYW5kIHdyaXRlIChwb3NzaWJseSkgbWlzYWxpZ25lZCBkYXRhIGVsZW1lbnRzCgkgIHRvIGF2b2lkIGNyYXNoZXMgb24gYXJjaGl0ZWN0dXJlcyB3aGVyZSB0aGlzIGlzIG5vdCBhbGxvd2VkLgoKCSogcHJvZ3JhbXMvdmlldy92aWV3LmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2VkIGNhbGxzIHRvIE9wZW5GaWxlIHdpdGggdGhlIGVxdWl2YWxlbnQgY2FsbCB0bwoJQ3JlYXRlRmlsZS4gUmVtb3ZlcyB0aGUgbmVlZCB0byBjYXN0IHRoZSByZXN1bHQgdG8gSEFORExFLgoKCSogcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgbGFzdCBwYXJhbWV0ZXIgb2YgQ3JlYXRlRmlsZSBpcyBhIEhBTkRMRSBhbmQgc2hvdWxkIHRodXMgYmUgTlVMTC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQSBzb2NrZXQgYmVjb21lcyByZWFkYWJsZSBhZnRlciBjb25uZWN0IGluIExpbnV4IDIuNCAoZXZlbiBmb3IKCWNvbm5lY3Rpb24gcmVmdXNlZCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZCA0IGJ5dGVzIHRvIHdha2UgdXAgR0VUSVNQQUNFLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG9uZSBzYWZldHkgY2hlY2sgdG8gQUZNIHBhcnNpbmcuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkxNmJpdCB1c2VyIEdldFByb3AvU2V0UHJvcCBnZXQgc3RyaW5ncyBvciBhdG9tcywgc28gd2UgY2FuIHVzZSAnc3RyJy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgMCB2cy4gRkFMU0UgbWlzbWF0Y2hlcy4KCUZpeGVkIGEgJyV4JyB2cy4gJyVseCcgbWlzbWF0Y2guCglGaXhlZCBzb21lIERXT1JEIHZzLiBTQ19IQU5ETEUgbWlzbWF0Y2hlcy4KCgkqIGluY2x1ZGUvd2luc3ZjLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU0NfSEFORExFIGlzIGEgSEFORExFLCBub3QgYSAnREVDTEFSRV9IQU5ETEUnCglTRVJWSUNFX1NUQVRVU19IQU5ETEUgaXMgYSBEV09SRAoKCSogbWVtb3J5L2xvY2FsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsaWduIG1vdmVhYmxlIGJsb2NrcyBpZiB0aGUgYXJjaGl0ZWN0dXJlIHJlcXVpcmVzIGl0LgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlb3JkZXJlZCB0aGUgZGVmaW5pdGlvbnMgYWNjb3JkaW5nIHRvIHRoZWlyIHZhbHVlLgoJSW5zZXJ0ZWQgdGhlICpfU18qIG1hY3JvcyByaWdodCBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgKl9FXyogYmxvY2sKCVJlaW5kZW50ZWQgdGhlIHZhbHVlcy4KCVJlbW92ZWQgdGhlIGR1cGxpY2F0ZSBzZXQgb2YgRV94eHggbWFjcm9zIHNpbmNlIHRoZXkgYXJlIG9ubHkgdXNlZCBvbgoJbm9uIFdJTjMyIHBsYXRmb3Jtcy4KCVVuY29tbWVudGVkIHRoZSBDT19FX0lOSVRfIHNldCBvZiBtYWNyb3MuCglSZW1vdmVkIHNvbWUgZHVwbGljYXRlIG1hY3JvIGRlZmluaXRpb25zIGFuZCBmaXhlZCB2YXJpb3VzIHR5cG9zLgoJQWRkZWQgdGhlIGRlZmluaXRpb25zIG5lZWRlZCBieSB0aGUgTUZDLgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFJlc2VydmVkNSAtPiBsc3RyY21wMTYuCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29kZSB3YXMgY2hlY2tpbmcgZm9yIDAgb3IgSEZJTEVfRVJST1IgaW5zdGVhZCBvZiBuZWdhdGl2ZSBlcnJvcgoJdmFsdWVzLgoKMjAwMC0xMi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCSJJbXBsZW1lbnQiIEdldEtCQ29kZVBhZ2UgYW5kIEdldEtCQ29kZVBhZ2UxNi4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgR2V0T3ZlcmxhcHBlZFJlc3VsdC4KCgkqIG9iamVjdHMvZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGVGb250SW5kaXJlY3QoKSBjYW4gZ2V0IE5VTEwgcG9pbnRlcnMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcHJvdmUgYXN5bmMgaS9vIGNvbXBhdGFiaWxpdHkuIGxwT3ZlcmxhcHBlZC0+SW50ZXJuYWwgc2hvdWxkIGhvbGQKCXRoZSBvdmVybGFwcGVkIHRyYW5zZmVyIHN0YXR1cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnVpbHRpbiBpbXBvcnRzIGJyb2tlbiBieSBsYXRlc3QgY2hhbmdlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdW5hbGlnbmVkIGFjY2VzcyB0ZXN0IGVmZmVjdGl2ZS4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGV2aWxpc2ggY3V0IGFuZCBwYXN0ZS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb21waWxlIHRoZSBkZWJ1Z2dlciB3aXRoIFNUUklDVCBvbi4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJVXNlIGEgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIHRvIG1hdGNoIFBvc3RTY3JpcHQgZm9udCBuYW1lcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIElDT01fRk4gdGhhdCBnZW5lcmF0ZXMgZWl0aGVyIGZuIyN4Zm4gb3Igc2ZuIGFzIGFwcHJvcHJpYXRlLgoJVXNlIElDT01fRk4gdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlICdJQ09NX1Y/TUVUSE9ELionIGRlZmluaXRpb25zLgoJUmVtb3ZlIHRoZSBvYnNvbGV0ZSBJQ09NX0NWTUVUSE9EIG1hY3Jvcy4KCVVzZSB0aGUgSUNPTV9WVEJMIG1hY3JvIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSAnSUNPTV9DQUxMLionCglkZWZpbml0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaW1wbGVtZW50ZWQgcGFzc2l2ZSBGVFAgdHJhbnNmZXJzIChQQVNWLCBuZWVkZWQgZm9yIGZpcmV3YWxscykKCS0gZml4ZWQgbHN0blNvY2tldCBjbG9zaW5nCgoJKiBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL3dpbm50LmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgd2luZWJ1aWxkIHRvIHdvcmsgb24gbm9uLUludGVsIGFyY2hpdGVjdHVyZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVByZXZlbnQgdW5hbGlnbmVkIGFjY2VzcyB0byBORSBpbi1tZW1vcnkgbW9kdWxlIGRhdGEuCgoJKiBtZW1vcnkvY29kZXBhZ2UuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jb21wb3NlLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmM6CglBZGRlZCBzdXBwb3J0IGZvciBjb21wb3NpdGUgVW5pY29kZSBjaGFyYWN0ZXJzIGluIE11bHRpQnl0ZVRvV2lkZUNoYXIKCWFuZCBXaWRlQ2hhclRvTXVsdGlCeXRlLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHByb3RvdHlwZSBmb3IgR2V0TG9nQ29sb3JTcGFjZS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBIQ09MT1JTUEFDRSB0byBTVFJJQ1QgbW9kZS4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCVVwZGF0ZWQgZmlyc3QgZXhhbXBsZSB1c2luZyBsYXRlc3Qgd2luZWJ1aWxkIGRsbC9zbyBwcm9jZWR1cmUuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHNtYWxsIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdm04Nl9lbnRlcigpIGFuZCBzaWduYWwgaGFuZGxpbmcuCglNYWRlIHNlcGFyYXRlIHNhdmVfdm04Nl9jb250ZXh0IGFuZCByZXN0b3JlX3ZtODZfY29udGV4dCBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWxsb3cgc3R1YnMgZm9yIGV4cG9ydHMgdGhhdCBhcmUgbm90IGxlZ2FsIEMgaWRlbnRpZmllcnMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVGVzdCBwb2ludGVyIGJlZm9yZSBpdCBpcyBkZXJlZmVyZW5jZWQgaW4gQ3JlYXRlRXZlbnRXKCkuCgoyMDAwLTEyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL01ha2VmaWxlLmluLCB0b29scy93aW5lbWFrZXIsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJUmVuYW1lZCBsaWJ1dWlkLmEgdG8gbGlid2luZV91dWlkLmEKCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBsaW5rIHdpdGggbGlidyBpZiBsaWJjIGFscmVhZHkgY29udGFpbnMgdyogcm91dGluZXMuCglMaW5rIGV2ZXJ5IGxpYnJhcnkgd2l0aCBsaWJuc2wgaWYgcmVxdWlyZWQuCglJbmNsdWRlIGllZWVmcC5oIHdoZXJlIG5lY2Vzc2FyeS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29tcGlsZSBmaXggaWYgSEFWRV9PU1MgaXMgbm90IGRlZmluZWQuCgoJKiBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnJva2VuIHByb3RvdHlwZXMuCgoJKiBpZjE2MzIvc25vb3AuYywgcmVsYXkzMi9zbm9vcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTaWxlbmNlIHNpbGx5IGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wb3J0IGtlcm5lbDMyIChmb3IgU2V0TGFzdEVycm9yKCkpLgoKCSogZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9oZWFwLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kaWFsb2cuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvdXNlci9leHRpY29uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGNoZWNrIHdoZXRoZXIgdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MgaXMgYWxsb3dlZC4KCUFkZGVkIG1hY3JvcyB0byBhY2Nlc3MgdW5hbGlnbmVkIFdPUkRzIC8gRFdPUkRzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2ZpbGUuYywgUkVBRE1FLCBjb25zb2xlL2dlbmVyaWMuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gY2xhcmlmeSBtYW55IGVycm9yIG1lc3NhZ2VzCgktIGFkZCBkYXRhIGNvcnJ1cHRpb24gd2FybmluZyB0byBSRUFETUUgZmlsZQoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIHRoZSBYIHN0YXRlIGluc3RlYWQgb2YgdGhlIFZLIGtleSBzdGF0ZSB0byBjaGVjayBmb3IgZWF0YWJsZQoJY2hhcmFjdGVycywgc2luY2UgdGhlIFZLIGtleSBzdGF0ZSBpc24ndCBhIGZhbiBvZiBBbHRHci4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQWxsb3cgYW4gYXBwbGljYXRpb24gdG8gb3BlbiBhIGRvcyBkZXZpY2UgZW5kaW5nIHdpdGggJzonLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWxlYXNlIHRoZSBXaW4xNiBsb2NrIGJlZm9yZSBzdGFydGluZyB0aGUgRE9TIHByb2Nlc3MsIHNpbmNlIGl0J3Mgbm90CglyZWFsbHkgYSBXaW4xNiBhcHAuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2luY2UgRE9TVk1fV2FpdCgpIGJsb2NrcyB0aGUgbm9ybWFsIGV2ZW50IHByb2Nlc3NpbmcsIGl0IHNob3VsZAoJZGlzcGF0Y2ggcGVuZGluZyBldmVudHMgaXRzZWxmLgoKMjAwMC0xMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglGaXggdGhlIHRyaXZpYWwgY29tcGlsZXIgd2FybmluZ3MgaW4gZGVidWdnZXIvIHdoZW4gY29tcGlsaW5nIHdpdGggLVcKCS0gbW92ZWQgaW5saW5lIHN0YXRlbWVudHMgdG8gZnJvbnQKCS0gZml4ZWQgdGhlIHRyaXZpYWwgY2FzZXMgb2Ygc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb25zCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgZnVuY3Rpb24gcG9pbnRlcnMgdG8gd2lubW0gYW5kIG1zdmZ3MzIsIGJ1dCBkZWxheQoJbG9hZGluZyBpbnN0ZWFkLgoKCSogdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhYmlsaXR5IHRvIGRlbGF5IGxvYWRpbmcgb2YgYW4gaW1wb3J0ZWQgRExMIHVudGlsIGl0J3MgbmVlZGVkCgkobmV3IC1kZWxheSBvcHRpb24gZm9yIGltcG9ydCBkaXJlY3RpdmUgaW4gc3BlYyBmaWxlKS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYzoKCUZpeGVkIGVycm9yIHJlY292ZXJ5IGR1cmluZyB0aHJlYWQgY3JlYXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGxvYWRlci9kb3MvTWFrZWZpbGUuaW4sIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pb3BvcnRzLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZToKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2VwYXJhdGVkIHRoZSBNWiBsb2FkZXIgYW5kIGNvcmUgRE9TIFZNIGludG8gZGxscy93aW5lZG9zLgoKCSogaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc3ZjLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBhbGwgaGFuZGxlcyB3aXRoIERFQ0xBUkVfT0xEX0hBTkRMRSB0byBlYXNlIGNvbnZlcnNpb24gdG8KCVNUUklDVC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIEdldERDQnJ1c2hDb2xvciBhbmQgR2V0RENQZW5Db2xvci4KCjIwMDAtMTItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUmVtb3ZlZCAtLWNvbmZpZyBmcm9tIG1hbiB3aW5lLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVJlbW92ZWQgdHJhaWxpbmcgZ2FyYmFnZSBhZnRlciBbc2VyaWFscG9ydHNdIGRldmljZSBuYW1lLgoKMjAwMC0xMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGluY2x1ZGUvcmFzLmgsIGluY2x1ZGUvd2luZGVmLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgSFJBU0NPTk4gZnJvbSB3aW5kZWYuaC4KCUFkZGVkIG1pc3NpbmcgVW5pY29kZSB0eXBlIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucy4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgbWFjcm8gZGVmaW5pdGlvbnMuCglFbmNsb3NlIGluIGFuIGV4dGVybiAiQyIgZm9yIEMrKyBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCUFkZGVkIHRoZSBzdHJ1Y3R1cmUgcGFja2luZyBzcGVjaWZpY2F0aW9uLgoKCSogZmlsZXMvY2hhbmdlLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgc2NoZWR1bGVyL2hhbmRsZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgZmV3IHR5cGUgY2xhc2hlcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIHN3aXRjaCB0byBTVFJJQ1QuCgoJKiBncmFwaGljcy94MTFkcnYvcGVuLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlZCB0aGUgbG9vayBvZiBkb3RzIGFuZCBkYXNoZXMgdG8gbWF0Y2ggdGhlIFdpbjMyIGxvb2suCglJc3N1ZSBhIEZJWE1FIGFib3V0IFBTX1VTRVJTVFlMRS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBUTVAgYXMgYW4gYWxpYXMgZm9yIFRFTVAuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCTxtYWxsb2MuaD4gaXMgbm90IElTTyBDLCA8c3RkbGliLmg+IGlzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCBsb29wIHRlc3QgZm9yIG5lZ2F0aXZlIHZhbHVlLgoKMjAwMC0xMi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMTIyMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0xMi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2FuY2VsIGEgZmV3IGNoYW5nZXMgdG8gZ2V0IGJhY2sgYmFzaWMgdGV4dCBjbGlwYm9hcmQgZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbmhlbHAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgY2FsbHMgdG8gS0VSTkVMLllpZWxkMTYgYnkgY2FsbHMgdG8gS0VSTkVMMzIuSzMyV09XWWllbGQgZnJvbQoJb3V0c2lkZSBsaWJrZXJuZWwuc28uCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglObyBsb25nZXIgdHJ5IHRvIGxvYWQgYnVpbHRpbiBsaWJyYXJ5IHdoZW4gbG9hZG9yZGVyIGlzICdzbycuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBsaWJyYXJ5L01ha2VmaWxlLmluLCB0c3gxMS9NYWtlZmlsZS5pbiwgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBkbGx3cmFwIGZvciBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzIGluIGN5Z3dpbi4KCgkqIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYzoKCUF2b2lkIGR1cCdpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIG5vdCBuZWNlc3NhcnkuCglEbyBub3Qgc2VuZCBmZCB0byB0aGUgY2xpZW50IGlmIG9wcy0+Z2V0X2ZkKCkgZmFpbHMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglGaXhlZCBjb3B5L3Bhc3RlIGJ1ZyAodGhhbmtzIHRvIEdlcmFyZCBQYXRlbCkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3JlIGludGVsbGlnZW50IERpcmVjdFNvdW5kIHByZWJ1ZmZlcmluZy4gQnkgdHJhY2tpbmcgdGhlCglsYXN0LXdyaXR0ZW4gcG9zaXRpb24gb2Ygc3RyZWFtaW5nIGJ1ZmZlcnMsIGl0IGF0dGVtcHRzIHRvIGF2b2lkCglwcmVidWZmZXJpbmcgcGFzdCB0aGlzIHBvc2l0aW9uIHVubGVzcyBuZWNlc3Nhcnk7IHRoaXMgbWF5IGF2b2lkIGEKCW51bWJlciBvZiBzb3VuZCBwcm9ibGVtcyBpbiB2YXJpb3VzIHNpdHVhdGlvbnMuIE1lcmdlZCBIRUwgYW5kIEhBTAoJbWl4aW5nIGNvZGUsIHdoaWNoIHNob3VsZCByZWR1Y2UgdGhlIEhFTCBtb2RlJ3MgQ1BVIHVzYWdlIHNsaWdodGx5LgoKCSogd2luZG93cy93aW4uYzogSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglXYXJuIHdoZW4gRmluZFdpbmRvdyBuZWVkcyB0byBjaGVjayBvdGhlciBwcm9jZXNzZXMgd2luZG93cy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCURvbid0IHN1cHByZXNzIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglBZGQgJWZzIGluZm8gdG8gdGhlIGNyaXRpY2FsIHNlY3Rpb24gdGltZW91dCBtZXNzYWdlLgoKCSogaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCAnOycgYXQgdGhlIGVuZCBvZiBsaW5lLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZW1haW5pbmcgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoZXMuCgoJKiBkbGxzL250ZGxsL29tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJVXNlIGEgc2VwYXJhdGUgRklGTyBwYWlyIGZvciBzZXJ2ZXIgcmVxdWVzdHMgdGhhdCBkb24ndCBuZWVkIHRvIHBhc3MgYQoJZmlsZSBkZXNjcmlwdG9yLgoJQXNzb2NpYXRlIGZpbGUgZGVzY3JpcHRvcnMgd2l0aCBoYW5kbGVzIG9uIHRoZSBzZXJ2ZXIgc2lkZSBzbyB0aGF0IHdlCglkb24ndCBuZWVkIHRvIHBhc3MgdGhlIGZkIGV2ZXJ5IHRpbWUgdGhlIGNsaWVudCB3YW50cyB0byB1c2UgaXQuCgoJKiB3aW5lLmluaToKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglOYXRpdmUgSU1NMzIuRExMIGNyYXNoZXMgd2luZSAtIHVzZSBidWlsdGluIERMTC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IGFsbCBwcm9ibGVtcyBhcyBFUlIoKSBleGNlcHQgZm9yICJjb3VsZCBub3Qgb3BlbiIgbGlicmFyeSwgd2hpY2gKCWlzIFdBUk4oKS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJRGlyZWN0RHJhd1N1cmZhY2U6OkJsdDo6U1JDQ09QWSBpcyB0aGUgZGVmYXVsdCBST1Agb3BlcmF0aW9uLCBkbyBub3QKCXRocm93IGVycm9yLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVZhcmlvdXMgZG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglSZW1vdmVkIHRoZSBkdW1teSBtb3VzZSBldmVudCBpbiBTZXRXaW5kb3dQb3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgMTYgYml0IGVudHJ5IHBvaW50cyBuZWVkZWQgYnkgbXVsdGltZWRpYSBETExzLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2xvY2FsLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgY29udHJvbHMvZWRpdC5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3dpbm1tL21taW8uYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmM6CglSZXBsYWNlZCBXSU4xNl9HbG9iYWxMb2NrMTYgYnkgIm9mZmljaWFsIiBmdW5jdGlvbiBLMzJXT1dHbG9iYWxMb2NrMTYuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCU1vcmUgRElCIHNlY3Rpb24gY29weS1ibGl0dGluZyBpbXByb3ZlbWVudHM6IEhhbmRsZSA4YnBwIERJQnMsIERDCgltYXBwaW5nIG1vZGVzLCBhbmQgY2xpcHBpbmcuIFRha2UgYWR2YW50YWdlIG9mIHRoZSBESUJzZWN0aW9uJ3MKCVhTaG1JbWFnZSBtZWNoYW5pc20gdG8gZ2V0IGEgcmVhbGx5IGZhc3QgYmxpdCB0byB0aGUgZGlzcGxheS4KCjIwMDAtMTItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoJLSBBZGRlZCBuZXcgb3B0aW9uIG9uIC0tZG9jdW1lbnRhdGlvbi1vcmRpbmFsIChvZmYgYnkgZGVmYXVsdCkuCgktIEFkZGVkIG5ldyBvcHRpb24gb24gLS1kb2N1bWVudGF0aW9uLXBlZGFudGljIChvZmYgYnkgZGVmYXVsdCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGVycm9ycyBmb3IgSURzRHJpdmVyX0dldFBvc2l0aW9uLgoJUmVwb3J0IERTRVJSX1VOSU5JVElBTElaRUQgb24gbm9uLW9wZW5lZCBXaW5lT1NTIGF1ZGlvIGRldmljZS4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vZHJpdmVyLmMsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFuZWQgdXAgdGhlIGNvZGUgYSBiaXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRW5hYmxlIHRoZSBEaXJlY3RTb3VuZCBIQUwgZm9yIHNvdW5kIGRyaXZlcnMgdGhhdCBkbyBub3QgcmVwb3J0CglEU1BfQ0FQX1JFQUxUSU1FLiBTZXQgcHJlY2lzaW9uIG9mIHRoZXNlIHRvIDI1NiBieXRlcyAoYWJvdXQgM21zKS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBUTEJfRG9GdW5jczogY29kZSBjbGVhbnVwIGFuZCBlbGVtZGVzY0Z1bmMgcmVhZCBjb3JyZWN0bHkgZnJvbSBUTEIuCgktIFRMQl9Mb2FkVHlwZUxpYjogcmVmIGNvdW50IHByb2JsZW0uCgktIElUeXBlTGliOjpHZXRUeXBlSW5mb09mR3VpZDogc2FmZXIgaW1wbGVtZW50YXRpb24gKHBvaW50ZXIgdGVzdGluZykuCgktIElUeXBlSW5mbzo6R2V0UmVmVHlwZU9mSW1wbFR5cGU6IHNhZmVyIGltcGxlbWVudGF0aW9uIChwb2ludGVyIHRlc3RpbmcpLgoJLSBJVHlwZUluZm8yOjpHZXREb2N1bWVudGF0aW9uTCByZXR1cm4gZXJyb3JzIGlmIFN5c0FsbG9jU3RyaW5nIGZhaWxlZC4KCS0gVExCIGxvYWRlciBmdW5jdGlvbnMgbm93IHRyYWNlIGluICJ0eXBlbGliIiBjaGFubmVsLgoJLSBJbXByb3ZlZCB0cmFjZXMgaW4gQWRkUmVmL1JlbGVhc2UgYW5kIGltcHJvdmVkIGR1bXBfKiBmdW5jdGlvbnMgZm9yCgkgIGRlYnVnZ2luZy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEb24ndCB3cml0ZSB0byBidWZmZXIgd2l0aCB6ZXJvIGxlbmd0aC4KCVJlbW92ZWQgc29tZSB1bnVzZWQgZnVuY3Rpb24gcGFyYW1ldGVycy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGZyZWUgdGhlIG5vdCBvd25lZCBlcnJvciBzdHJpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCBTYWZlQXJyYXlHZXRVQm91bmQgYW5kIFNhZmVBcnJheUdldExCb3VuZCB3aXRoIG1vcmUgc2FuaXR5CgljaGVja3M6IGFuIGFycmF5IGhhcyBhdCBsZWFzdCBvbmUgZGltZW5zaW9uLgoJVXBkYXRlZCB2YWxpZENvb3JkaW5hdGVzLCB3aGVyZSBTYWZlQXJyYXlHZXRMQm91bmQgd2FzIGNhbGxlZCBvbgoJZGltZW5zaW9uIDAuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJld3JvdGUgdGhlIGFsbG9jYXRpb24gb2YgTU0gZHJpdmVyIGRlc2NyaXB0b3JzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglVc2UgaGFuZGxlIHRvIHBhbGV0dGUgaW5zdGVhZCBvZiBpbmRleCBmb3IgRU1SX1NFTEVDVFBBTEVUVEUuCglJbXBsZW1lbnRlZCBzaW1wbGUgY2FzZSBmb3IgRU1SX0VYVFNFTEVDVENMSVBSR04uCgoyMDAwLTEyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglGaXhlZCBkZWJ1ZyByb3V0aW5lcyB0byB3b3JrIGJlZm9yZSB0aGUgcHJvY2VzcyBoZWFwIGlzIGNyZWF0ZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglEbyBub3QgY2FsbCB0aHJlYWQgYXR0YWNoL2RldGFjaCByb3V0aW5lcyBkdXJpbmcgcHJvY2VzcyBleGl0IHRvIGF2b2lkCglwb3RlbnRpYWwgZGVhZGxvY2tzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU2V0IHRoZSBjb2xvciBtYXNrIHdpdGggQklfQklURklFTEQgZGlicywgZG9uJ3QgdXNlIHRoZQoJYXBwbGljYXRpb24tcHJvdmlkZWQgdmFsdWUuCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG5ldyBlZGl0IGNvbnRyb2wgYWxsb2NhdGUgaXRzIGJ1ZmZlcnMgd2l0aCBncmFudWxhcml0eSAzMiBieXRlLgoJRW5zdXJlIHRoYXQgYWxsIGNvcGllZCBzdHJpbmdzIGFyZSAwIHRlcm1pbmF0ZWQuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gcHJpbnQgb3V0IFdNX05PVElGWSBtZXNzYWdlIGNvZGUgaWYgd2Uga25vdyBpdC4KCS0gcHJpbnQgb3V0IG1lbW9yeSBwYXN0IGVuZCBvZiBOTUhEUiBzdHJ1Y3R1cmUgZm9yIHRoZSBzaXplIG9mCgkgIHRoZSBub3JtYWwgTk14eHh4eCBzdHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIGNvZGUuCgktIHNldHVwIG5vdGlmeSBjb2RlIHRhYmxlIGZvciBjb21tb24sIFJFQkFSLCBUT09MQkFSLCBhbmQgQ09NQk9FWCAoYXQKCSAgbGVhc3QgcGFydGlhbGx5KS4KCjIwMDAtMTItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFNldCBsYXN0IGVycm9yIGluIEdsb2JhbFVubG9jay4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJQW5kcmV3IEpvaG5zdG9uIDxham9obnN0b25Ac3dpdGNoLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRFVNTVlTVFJVQ1ROQU1FMiBjcmVhdGVzIGEgY29uZmxpY3Qgd2hlbiB1c2luZyBhbm9ueW1vdXMgdW5pb24gbmFtZXMuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUFkZGVkIGRlc2NyaXB0aW9uIG9mIHByaW50ZXJwb3J0cyBzZWN0aW9uIG9mIHRoZSB3aW4uaW5pIGZpbGUgZm9yIHdpbmVwcy5kcnYuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpeCBJQ29ubmVjdGlvblBvaW50Q29udGFpbmVyIGludGVyZmFjZSBtYWNyb3MuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIERpc3BhdGNoIEFQSS4KCgkqIGRsbHMvY3J0ZGxsL2NvbnNvbGUuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL2xvY2FsZS5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEFkZCBzZXZlcmFsIG1iY3MgYW5kIENQIDkzMiBmdW5jdGlvbnMsIGZpeCBzb21lIGV4aXN0aW5nIGNhbGxzCgktIEJ1ZyBmaXhlcywgLVcgd2FybmluZ3MgYW5kIHdpbmFwaV9jaGVjayB1cGRhdGVzLgoJLSBEb24ndCBiZSBzbyBzdHJpY3Qgc2V0dGluZyBkZWZhdWx0IGxvY2FsZSwgc3RvcmUgY29kZXBhZ2UKCgkqIGxpYnJhcnkvcG9ydC5jOgoJSW5jbHVkZSBzdGRsaWIuaCBpbnN0ZWFkIG9mIHdjaGFyLmguCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglzaGx3YXBpIGZvcndhcmRlcnMgZm9yIFNldFdpbmRvd0xvbmdXIGFuZCBDYWxsV2luZG93UHJvY1cuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTmV3IHVuaWNvZGUgZWRpdCBjb250cm9sLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgYWdhaW5zdCBOVUxMIGJ1ZmZlciBpbiB0aGUgcHJvZmlsZSBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTmV3IHVuaWNvZGUgZWRpdCBjb250cm9sLgoKCSogb2xlL29sZTJubHMuYywgdG9vbHMvYmluMnJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21kaS5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBtaXNjL3R3ZWFrLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDMzLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS90aW1lLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJd2ludXNlci5oIG5vdyByZXF1aXJlcyB0aGF0IHdlIGluY2x1ZGUgd2luYmFzZS5oIGZpcnN0LgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ3JlYXRlV2luZG93U3RhdGlvbi4KCgkqIGluY2x1ZGUvd2luZG93cy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlICdleHRlcm4gIkMiIHsgLi4uIH0nIHN0YXRlbWVudC4gSXQgaXMgbm90IHN1cHBvc2VkIHRvIGJlCgl0aGVyZS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgYSBtaXNwbGFjZWQgJ2V4dGVybiAiQyIgeyAuLi4gfScgc3RhdGVtZW50LgoKCSogbGlicmFyeS9wb3J0LmMsIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGJldHRlciBzdXBwb3J0IGZvciBVbmljb2RlOgoJQWRkZWQgc3VwcG9ydCBmb3IgMTYtYml0IHdjaGFyX3QKCUFkZGVkIHN1cHBvcnQgZm9yIHJld3JpdGluZyA0LWJ5dGUgVW5pY29kZSBsaXRlcmFscyB0byAxNmJpdCBVbmljb2RlCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgSU1BR0VfUkVTT1VSQ0VfRElSRUNUT1JZX0VOVFJZIG9uIGJpZy1lbmRpYW4gbWFjaGluZXMuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU3R1YiBmb3IgRGxsRGVidWdPYmplY3RSUENIb29rLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglNaXNjIGZpeGVzIGZvciBRdWVyeVBhdGhPZlJlZ1R5cGVMaWIsIFRMQl9SZWFkVHlwZUxpYiwKCUlUeXBlSW5mb19mbkdldENvbnRhaW5pbmdUeXBlTGliLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG8gbm90IHNlbmQgYSBXTV9OT1RJRllGT1JNQVQgdG8gYSBub24tZXhpc3RlbnQgb3duZXIuCgoJKiBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9hc3luYy5jOgoJTWVyZ2VkIHRoZSBnZXRfcmVhZF9mZCBhbmQgZ2V0X3dyaXRlX2ZkIHJlcXVlc3RzLgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBESUdERF9QRUVLIGZvciBTeXNNb3VzZUE6OkdldERldmljZURhdGEuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJX3N0cntkZWMsaW5jfTogQ2FzdCB0aGUgcGFyYW1ldGVycyB0byB0aGUgcHJvcGVyIHR5cGUgZmlyc3QKCUFkZGVkIGRlZmluaXRpb25zIGZvciBfdGZpbmRkYXRhKgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBzb21lIG9mIHRoZSBTVERNRVRIT0QvU1REQVBJIHRvIHdpbm50LmguCglNb3ZlZCB0aGUgRVhURVJOX0MgbWFjcm8gdG8gd2lubnQuaC4KCUFkZGVkIGEgJyNpZm5kZWYgX19XSU5FX18nIGFyb3VuZCB0aGUgcmVtYWluaW5nIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBzb21lIG9mIHRoZSBTRUNVUklUWV94eHggdHlwZXMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBTZXRVc2VyT2JqZWN0U2VjdXJpdHkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIG5vdGlmeSBzdHJ1Y3R1cmVzIE5NTU9VU0UsIE5NT0JKRUNUTk9USUZZLCBOTUtFWSwgYW5kIE5NQ0hBUi4KCjIwMDAtMTItMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltYy5jLCBkbGxzL2ltbTMyL2ltZWtsLmMsIGRsbHMvaW1tMzIvaW1ld25kLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2ltbTMyL21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBrZXlib2FyZCBsYXlvdXQgYW5kIGNvbnRleHQgIC0gZmFyIGZyb20gY29tcGxldGUuCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCU1vcnRlbiBXZWxpbmRlciA8dGVycmEtd2luZUBkaWt1LmRrPgoJKHN0cmNhc2VjbXApOiBDb25mb3JtIHRvIEFOU0kgc3BlY3MgZm9yIHRvdXBwZXIuCgkoc3RybmNhc2VjbXApOiBEaXR0by4gIEFsc28gZG8gbm90IHVzZSBzaWRlLWVmZmVjdHMgaW4gbWFjcm8gYXJncy4KCSh3aW5lX29wZW5wdHkpOiBQbHVnIGRlc2NyaXB0b3IgbGVhay4gIEFsd2F5cyBzZXQgZXJybm8gb24gZmFpbHVyZS4KCSh3aW5lX2Fub25fbW1hcCk6IEZpeCBjb21tZW50IGxvY2F0aW9uLgoKCSogbWlzYy9vcHRpb25zLmM6CglNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhLXdpbmVAZGlrdS5kaz4KCShwYXJzZV9vcHRpb25zKTogQWxsb3cgR05VLWxpa2Ugb3B0aW9uIGFyZ3VtZW50cyBsaWtlCgkiLS1kZXNrdG9wPTgwMHg2MDAiLiAgKE5vdCBwZXJmZWN0IC0tIHdlIGRvbid0IGFsbG93IHNob3J0aGFuZHMuKQoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBkcmFnIGZvciB2ZXJ0aWNhbCByZWJhcnMgKGRyYWcgdXAgYW5kIGRvd24pLgoJLSBCZXR0ZXIgYWxnb3JpdGhpbXMgZm9yIGluc2VydGluZyBuZXcgYmFuZHMgLSBtYXRjaGVzIG5hdGl2ZSB2ZXJzaW9uCgkgIGNsb3Nlci4KCS0gTWFrZSBkcmF3aW5nIG9mIHJlYmFyIGF0dGVtcHQgdG8gbWF0Y2ggbmF0aXZlIHBpeGVsIGJ5IHBpeGVsIChub3RlCgkgIHRoaXMgZG9lcyBub3QgZml4IHRoZSBlbWJlZGRlZCBjb250cm9scyBpbiBlYWNoIGJhbmQgLSB0aGV5IHN0aWxsIGFyZQoJICBhcyBnb29kIG9yIGJhZCBhcyBiZWZvcmUuKQoJLSBJbXBsZW1lbnQgc29tZSBvZiB0aGUgbm90aWZpY2F0aW9ucyAoUkJOX0hFSUdIVENIQU5HRSwgX0NISUxEU0laRSwKCSAgX0RFTEVUSU5HQkFORCwgX0RFTEVURURCQU5EKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVBhc3MgV01fQ09NTUFORCBhbmQgV01fTk9USUZZIHRvIHBhcmVudCBhcyByZWNlaXZlZC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglDaGFuZ2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFzIHRoZSB1c2VyIGJyb3dzZXMgdGhlIGRpcmVjdG9yeSB0cmVlLgoKCSogZGxscy9jcnRkbGwvZmlsZS5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCUNoYW5nZWQgdHlwbyB2YV9saXN0IHRvIHZhbGlzdC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBbGxvdyBmb3IgdGhlIGRpYWxvZyBmb250IHNpemUgdG8gYmUgc2V0IGRpcmVjdGx5IGluIHBpeGVscy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglXTV9HRVRNSU5NQVhJTkZPIHRyYWNrIG1pbiBzaXplIHNob3VsZCBiZSB1c2VkIGluIFNldFdpbmRvd1BvcyBhbHNvCglmb3IgMzIgYml0cyBhcHBzLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYXBwaW5nIGZvciBJQ01fU0VUU1RBVEUgKHB0ciBpbiBsUGFyYW0xIHRvIHByaXZhdGUgZGF0YSkuCgoyMDAwLTEyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBtZW1vcnkvZW52aXJvbi5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbW0zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L29sZWNsaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZSB1cGRhdGUuCgktIFR1cm5lZCBvbiAtLWRvY3VtZW50YXRpb24tYXJndW1lbnRzIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9sb2NhbGUuYywgZGxscy9jcnRkbGwvc3Bhd24uYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvY29uc29sZS5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBGaXggX2Z1bGxwYXRoICYgc3BsaXRwYXRoLCB3aW5hcGlfY2hlY2sgZml4ZXMKCS0gQWRkIGNwcmludGYsY3NjYW5mLF9mZ2V0d2NoYXIsX2ZnZXR3YyxfZnB1dHdjaGFyLF9mcHV0d2MsCgkgIF93dG9pICYgX3d0b2wgKGZ3ZCksc2NhbmYsX3RpbWV6b25lX2RsbAoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2lucHV0LmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBdm9pZCBhIGNvdXBsZSBvZiBkZXBlbmRlbmNpZXMgb24gaW5wdXQuYyBpbnRlcm5hbCB2YXJpYWJsZXMuCgoJKiBkbGxzL2NydGRsbC9maWxlLmM6CglGaXhlZCBpbmZpbml0ZSBsb29wIGluIENSVERMTF9fZmNsb3NlYWxsLgoKCSogZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbWV3bmQuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2ltbTMyL21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBzb21lIEFQSXMgYW5kIElNRSBjbGFzcyAtIGZhciBmcm9tIGNvbXBsZXRlLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIGJlZm9yZSBkb2luZyBJc0VxdWFsR1VJRCgpLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGluZyBvZiAxNiBiaXQgTUNJIGRyaXZlcnMgKGZvciBjb21tYW5kIHRhYmxlcykuCglGaXhlZCBhbGlhcyBoYW5kbGluZyBpbiBtY2lTZW5kU3RyaW5nLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGRvbid0IGluaXRpYWxpemUgd2l0aCBwRmlyc3RMREQgaWYgcEZpcnN0TEREIGlzbid0IGluaXRpYWxpemVkIHlldCBlaXRoZXIKCS0gY29ycmVjdGVkIFZjcENsb3NlIC5zcGVjCgoyMDAwLTEyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFsbG9jYXRlIGVudHJ5IHBvaW50cyBkeW5hbWljYWxseSB0byBhbGxvdyBmb3IgYSBsYXJnZXIgbnVtYmVyIG9mCglvcmRpbmFscy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2ltbTMyL2ltbWRkay5oLCBkbGxzL2ltbTMyL21haW4uYywgZGxscy9pbW0zMi9tZW1vcnkuYywgZGxscy9pbW0zMi9zdHJpbmcuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBzb21lIERESyBBUElzIC0gZmFyIGZyb20gY29tcGxldGUuCgoJKiBNYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHRvIG9sZS9saWJ1dWlkLmEuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGxpbmsgd2l0aCB1dWlkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY2FwdHVyZSBtb3VzZSB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQuCgoJKiBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBzb21lIG1hY3JvcyBsaWtlIE5VTEwsIEZBTFNFIHRvIHdpbm50LmgKCU1vdmVkIHRoZSBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucyB0byB3aW5udC5oCglNb3ZlZCBjYWxsaW5nIGNvbnZlbnRpb24gbWFjcm9zIHRvIHdpbm50LmgKCU1vdmVkIHNvbWUgYmFzaWMgdHlwZXMgbGlrZSBCT09MLCBJTlQsIExPTkcsIGV0Yy4gdG8gd2lubnQuaAoJTW92ZWQgSEFORExFIGFuZCBERUNMQVJFX0hBTkRMRSB0byB3aW5udC5oCglNb3ZlZCBzdHJ1Y3R1cmUgcGFja2luZyBtYWNyb3MgdG8gd2lubnQuaAoKCSogaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2VydmVyL3NuYXBzaG90LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTmVlZHMgdG8gaW5jbHVkZSB3aW5kZWYuaC4KCgkqIGluY2x1ZGUvb2xlMi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIE9sZUlzQ3VycmVudENsaXBib2FyZCBhbmQgT2xlU2V0Q2xpcGJvYXJkLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIHByb3RvdHlwZSBvZiBHZXRDbGFzc0ZpbGUuCgoJKiB3aW5kb3dzL3dpbi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG9uJ3QgcmV0dXJuIGxhc3QgYWN0aXZlIHBvcHVwIGlmIGl0IGlzIHBvaW50aW5nIHRvIGEgZGVsZXRlZCB3aW5kb3cuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBtaXNjL29wdGlvbnMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZWQgdXNhZ2UgbWVzc2FnZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUNvbnZlcnRlZCBlbnVtX2tleV92YWx1ZSByZXF1ZXN0IHRvIHRoZSBuZXcgcmVxdWVzdCBtZWNoYW5pc20uCgoJKiBtaXNjL2Nkcm9tLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdGF0dXMgb2YgQ0RST01fQVVESU9fSU5WQUxJRCBzZWVtcyB0byBtZWFuIHRoZSBkaXNrIGlzIHN0b3BwZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgZGlmZmljdWx0aWVzIHdpdGggdGhlIGZvbnQgb24gdmVydGljYWwgdGFicy4gQWxzbyBwbHVnZ2VkIGEKCXJlc291cmNlIGxlYWsuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hcmsgd2lkdGggYXMgdmFsaWQgd2hlbiB3ZSBzZW5kIEhETl9FTkRUUkFDS0EuCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2d2Vycy5jb20+CglDaGVjayB0byBzZWUgd2hldGhlciBhbnkgYW5jZXN0b3Igd2luZG93cyBhcmUgZHJvcCB0YXJnZXRzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTcGVsbGluZyBmaXguCgoJKiBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgdGhlIHR5cGUgb2YgRnVuY3Rpb24gdG8gUERXT1JEIGFzIG9uIFdpbmRvd3MuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXNwLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgZGVjbHNwZWMgc3BlY2lmaWVyLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBtaXNjL29wdGlvbnMuYywgbWlzY2VtdS9tYWluLmMsIG1pc2NlbXUvd2luZS5zcGVjLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFVuaWNvZGUgYXBwbGljYXRpb25zIGluIHdpbmVidWlsZC4KCVJlbW92ZWQgY3VpZXhlX25vX21haW4gaGFjay4KCUF2b2lkIHN0ZGNhbGwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluc2lkZSBmdW5jdGlvbnMgYmVjYXVzZSBvZiBnY2MgYnVnLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJLSByZWdpc3RyeSBsb2FkaW5nIHNwZWVkIHVwIChyZWR1Y2VkIGNsaWVudCA8LT4gc2VydmVyIGNvbW11bmljYXRpb24pCgktIG1ha2UgdGhlIGNvZGUgYSBiaXQgbW9yZSB1bmRlcnN0YW5kYWJsZQoKMjAwMC0xMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCAiaWdub3JlIiBkaXJlY3RpdmUgZm9yIHNraXBwaW5nIGluZGl2aWR1YWwgc3ltYm9sIHJlc29sdXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYzoKCVZhc2lseSBJLiBWb2xjaGVua28gPFZhc2lseS5Wb2xjaGVua29AbXN0dS5lZHUucnU+CglBZGRlZCBtb3JlIFJ1c3NpYW4gc3VwcG9ydC4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbS5zcGVjLCBkbGxzL3dpbm5scy8uY3ZzaWdub3JlLCBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwgZGxscy93aW5ubHMvd2lubmxzLmMsIGRsbHMvd2lubmxzL3dpbm5scy5zcGVjLCBkbGxzL3dpbm5scy93aW5ubHMzMi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgc3BlYyBmaWxlIGZvciAxNmJpdCBpbW0uCglBZGRlZCBzcGVjIGZpbGVzIGZvciB3aW5ubHMgYW5kIHdpbm5sczMyLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOgoJQWRkZWQgaW5saW5lIGRlZmluaXRpb24gZm9yIE1hcFNMLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYW4gdW5xdW90ZWQgc3RyaW5nLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglBZGQgc3RyZXJyb3IoKSB0byB0aGUgIkNvdWxkIG5vdCBzdGF0IiBhbmQgIkludmFsaWQgcGF0aCIgc3RhcnR1cAoJZXJyb3IgbWVzc2FnZXMuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJQ29tbWVudGVkIG91dCBsYXJnZSBzdGFjayBpbml0IG5vdyB0aGF0IHRocmVhZCBzdGFja3MgYXJlIGF0IGxlYXN0IDFNYi4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiBEaXJlY3REcmF3Q3JlYXRlIGdldHMgcGFzc2VkIGEgSURpcmVjdERyYXd7Miw0LDd9IGludGVyZmFjZSwgZ2V0Cgl0aGlzIGludGVyZmFjZSBhbmQgZG8gbm90IHVzZSBJRGlyZWN0RHJhdy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBuYW1lIG9mIEFQSXMgZXhwb3J0ZWQgYnkgb3JkaW5hbC4KCgkqIGRsbHMva2VybmVsL25scy9odW4ubmxzOgoJTmVtZXRoIFBldGVyIDxxZ2VucGV0ZUBnb2xkLnVuaS1taXNrb2xjLmh1PgoJU29tZSBOTFMgdXBkYXRlcy4KCjIwMDAtMTItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZGVmYXVsdC5kc2wsIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3Rvb2xzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5laHEuZHNsLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdXNlci5zZ21sOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9sb2FkZXIuYywgbGlicmFyeS9wb3J0LmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdvcmsgYXJvdW5kIGdsaWJjIDIuMS54IGRsb3BlbiBidWcgKGFnYWluKS4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9wcml2YXRlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaW1wbGVtZW50ZWQgcHJvcGVyIExERC9MRElEIGhhbmRsaW5nCgktIGltcGxlbWVudCBDdGwqTGRkKCksIEN0bFtHU11ldExkZFBhdGgsIEdlbkluc3RhbGwgKG5vIHJlYWwgb3BlcmF0aW9ucwoJICB5ZXQsIEkgd2FudCBoZWxwKSwgSW5zdGFsbEhpbmZTZWN0aW9uCgktIFN0dWJiZWQgb3V0IERpR2V0Q2xhc3NEZXZzMTYgKG5lZWRlZCBmb3IgZS5nLiBNb25rZXkgSXNsYW5kIDMgOykKCS0gbWFueSBuZXcgLnNwZWMgc3R1YnMKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU0hHZXRNYWxsb2MgbXVzdCB1c2UgTUVNQ1RYX1RBU0ssIG90aGVyd2lzZSBDb0dldE1hbGxvYyB3aWxsCgliYWRseSBmYWlsIHdpdGggRV9JTlZBTElEQVJHIGluIGNhc2UgbmF0aXZlIE9MRTMyIGlzIHVzZWQuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21hcGkuaCwgaW5jbHVkZS9tYXBpZGVmcy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1hcGkuaCB3aXRoIHRoZSBkZWZpbml0aW9ucyBuZWVkZWQgYnkgdGhlIE1GQy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIF91bHRvdygpIGFuZCBleHBvcnQgW050L1p3XVF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlKCkuCgoJKiB0b29scy9tYWtlZGVwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBhdGggcmVzb2x1dGlvbiBmb3IgYS9iLmMgc291cmNlIGZpbGVzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJSW52YWxpZGF0ZSB0aGUgZm9jdXMgcmVjdCB3aGVuIGEgbGlzdGJveCBpcyByZXNpemVkLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2VsZWN0b3JzLmgsIG1pc2MvbHN0ci5jLCBtc2Rvcy9kb3Nhc3BpLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCglHb3QgcmlkIG9mIGxkdC5oLgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbXNkb3MveG1zLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHdpbjMyL2RldmljZS5jOgoJVXNlIGdldHBhZ2VzaXplKCkgaW5zdGVhZCBvZiBWSVJUVUFMX0dldFBhZ2VTaXplKCkuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wcm9jLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludDVjLmMsIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCBtaXNjL2Vycm9yLmMsIG1zZG9zL2RldmljZXMuYywgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvc3RyaW5nLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9kaWdpdGFsdi5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5udC5oLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvd3NwcmludGYuYywgZGxscy92ZXJzaW9uL3ZlcjE2LmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWNsaS9vbGVjbGkuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9jb21iby5jOgoJUmVwbGFjZWQgUFRSX1NFR19UT19MSU4gbWFjcm8gYnkgZXhwb3J0ZWQgTWFwU0wgZnVuY3Rpb24uCglGaXhlZCBhIGZldyBwdHIvc2VncHRyIG1pc21hdGNoZXMuCglNb3ZlZCBDT05WX1JFQ1QvUE9JTlQgbWFjcm9zIHRvIHdpbmdkaTE2LmguCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogd2luZG93cy9kcml2ZXIuYywgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3BsaXQgZHJpdmVyIGZ1bmN0aW9ucyBpbnRvIFVTRVIgKDE2IGJpdCBwYXJ0KSBhbmQgV0lOTU0gKDMyIGJpdCBwYXJ0KS4KCUZpeGVkIHNvbWUgYnVncyBpbiAxNiBiaXQgcGFydCBhcyB3ZWxsLgoJTm93IGNvcnJlY3RseSBwYXJzaW5nIHRoZSBzeXN0ZW0uaW5pIGV4dHJhIHBhcmFtZXRlcnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjcnRkbGwgY29tcGlsZSBwcm9ibGVtIHJlZ2FyZGluZyBmcG9zX3QgaW4gZ2xpYmMyLjIuCgoJKiBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY29uc29sZS5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvc3Bhd24uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEltcGxlbWVudCBjb25zb2xlIEkvTwoJLSBTdXBwb3J0IHRlbXBvcmFyeSBmaWxlcywgYWRkIHRtcGZpbGUsIHJtdG1wCgktIHNwYXduKiBmdW5jdGlvbnM6IGZpeCBhcmdzLCBhZGQgY3dhaXQsIHNlYXJjaGVudgoKCSogcHJvZ3JhbXMvY2xvY2svbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGEgY3Jhc2ggaW4gcHJvZ3JhbS9jbG9jay4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCUZpeGVkIGNyYXNoIG9mIFdpblppcCA4LjAgZHVlIHRvIGludmFsaWQgaW1hZ2UgbGlzdCBoYW5kbGUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBOVUxMIGFzIGluIFdpbjMyLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXR1cm4gdmFsdWVzIGZyb20gRFJWX0VOQUJMRSBzaG91bGQgbm90IGJlIGNoZWNrZWQuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZvcm1hdE1lc3NhZ2VBIHdhc24ndCBwcm9wZXJseSBoYW5kbGluZyB0aGUgJWxzIG1vZGlmaWVyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUludmFsaWQgYnV0dG9ucyBhcmUgImhpZGRlbiIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYWxsIHZhbHVlcyBvZiBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQSBpbnRvIGFuIGFycmF5LCBhZGQgc29tZQoJb3RoZXIgcmVnaXN0cnkgbG9jYXRpb25zIGFuZCBpbXByb3ZlIHRoZSBudW1iZXIgb2Ygc3VwcG9ydGVkIENTSURMcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJQ2hhbmdlZCBGSUxFRExHOTVfT25PcGVuIHRvICJkb3VibGUgdGVybWluYXRlIiB0aGUgcmV0dXJuZWQgc3RyaW5nIGlmCglPRk5fQUxMT1dNVUxUSVNFTEVDVCBpcyBzZXQuCgoyMDAwLTEyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglHb3QgcmlkIG9mIG1haW4uaC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJVXNlIF9fQVNNX0dMT0JBTF9GVU5DIGRpcmVjdGx5IGluIGkzODYtb25seSBjb2RlLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJQ2hhbmdlZCBMb2FkSW1hZ2UxNiB0byB0YWtlIGFuIExQQ1NUUiBpbnN0ZWFkIG9mIGEgU0VHUFRSLgoKCSogaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNy5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBmaWxlcy9kcml2ZS5jOgoJVXNlIHRoZSBEUklWRV8qIEFQSSBjb25zdGFudHMgaW5zdGVhZCBvZiB0aGUgRFJJVkVUWVBFIGVudW0uCglDaGFuZ2VkIERSSVZFX0NBTk5PVERFVEVSTUlORSBhbmQgRFJJVkVfRE9FU05PVEVYSVNUIHRvIHVzZSB0aGUKCWNvcnJlY3QgbmFtZXMuCglDbGVhbmVkIHVwIGEgZmV3IGRlcGVuZGVuY2llcyBvbiBpbnRlcm5hbCBkcml2ZS5jIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kaW5wdXQuaDoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBwcmVmZXJlbmNlcyB0byBkaW5wdXQgZHJpdmVycyAoc28gd2UgY2FuIGhhdmUgdHdvIGpveXN0aWNrCglkcml2ZXJzKS4gSW1wbGVtZW50ZWQgYSBqb3lzdGljayBkcml2ZXIgZm9yIHRoZSBMaW51eCAyLjQKCWRldi9pbnB1dC9ldmVudCBBUEkuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9sb2NhbGUuYywgZGxscy9jcnRkbGwvdGltZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gSW1wbGVtZW50ZWQgc2V0bG9jYWxlIHBhcnNpbmcgYW5kIExDX1RZUEUgYmVoYXZpb3IuCgktIEltcGxlbWVudGVkIGlzbGVhZGJ5dGUsIHNucHJpbnRmLgoJLSBBZGRlZCBOTFMgSXNWYWxpZENvZGVQYWdlIHByb3RvdHlwZSwgbWlzYyBDUlRETEwgZml4ZXMuCgoJKiBpbmNsdWRlL3NoZWxsYXBpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBwcm90b3R5cGUgZm9yIFNIQXBwQmFyTWVzc2FnZS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgaW5kZW50YXRpb24gcHJvYmxlbXMgcmVzdWx0aW5nIGZyb20gYXV0b21hdGljIHJlbmFtaW5nLCBvdGhlcgoJYWVzdGhldGljIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVVzZSBEcmF3VGV4dCB0byBkaXNwbGF5IHRleHQgaW4gaG9yaXpvbnRhbCB0YWJzLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIHRoZSBjb25kaXRpb24gc28gaXQgYWxzbyB3b3JrcyBpbiBjYXNlIHdoZW4gc3NjYW5mIHJldHVybnMgRU9GLgoKMjAwMC0xMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdXNlci5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy92ZXJzaW9uLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL3Z4ZC5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvZmlsZS5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL3RpbWUuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmM6CglNb3ZlZCBhbGwgV2luZSBpbnRlcm5hbCBkZWZpbml0aW9ucyBvdXQgb2YgcHJvY2Vzcy5oLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJT3V0cHV0IHRoZSBleHBvcnRzIHRhYmxlIGluIGFzc2VtYmx5IGNvZGUgdG8gbWFrZSBpdCBwb3NzaWJsZSB0bwoJZXhwb3J0IEMrKyBtYW5nbGVkIG5hbWVzLgoKCSogZGxscy9udGRsbC9ydGwuYzoKCUltcGxlbWVudGVkIFJ0bEFjcXVpcmVQZWJMb2NrIGFuZCBSdGxSZWxlYXNlUGViTG9jay4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglJbXBsZW1lbnRlZCBEcmF3VGV4dFcgYXMgVW5pY29kZSBhbmQgRHJhd1RleHRBIGFzIGNhbGwgdG8gRHJhd1RleHRXLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIENGX1VOSUNPREVURVhUIGFzIHByaW1hcnkgdGV4dCBjbGlwYm9hcmQgZm9ybWF0LgoJVXNlIFt4MTFkcnZdLlRleHRDUCBmb3IgaW50ZXJjaGFuZ2Ugd2l0aCBYLgoKMjAwMC0xMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJRGVubmlzIEJqb3JrbHVuZCA8ZGJAemlnby5kaHMub3JnPgoJUmVtb3ZlIG9sZCBsaW5rIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3IG9uZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL2NvbWJvLmgsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2RpYWxvZy5oLCBpbmNsdWRlL21kaS5oLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS9zY3JvbGwuaCwgaW5jbHVkZS9zdGF0aWMuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBNYWtlLnJ1bGVzLmluLCBjb250cm9scy9NYWtlZmlsZS5pbiwgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgY29udHJvbHMvd2lkZ2V0cy5jOgoJTW92ZWQgbW9zdCBidWlsdGluIGNvbnRyb2xzIHN0cnVjdHVyZXMgaW50byB0aGVpciByZXNwZWN0aXZlIEMgZmlsZS4KCUNyZWF0ZWQgbmV3IGNvbnRyb2xzLmggZmlsZSBwcml2YXRlIHRvIHVzZXIzMi5kbGwgYW5kIG1vdmVkIHJlbWFpbmluZwoJYnVpbHRpbiBjb250cm9scyBkZWZpbml0aW9ucyB0aGVyZS4KCjIwMDAtMTItMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgZWxmZGxsIGxvYWRlci4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgbWlzYy9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgUkVBRE1FOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIFJFQURNRSB1cGRhdGUKCS0gYWRkIG9mZnNldHMgdG8gQVNQSSBzdHJ1Y3QgZGVmaW5lcwoJLSBzcGVsbGluZwoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZmFpbCBvbiBwb2ludGVyIGFkZHJlc3MgY2hlY2tpbmcgd2hlbiBmb3JlaWduIGhlYXAuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBkdXBsaWNhdGUgZGVmaW5lcy4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIE1lc3NhZ2VCb3goKSB1c2FnZS4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgQ0RCIGFyZWEuCgoyMDAwLTEyLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBoYW5kbGVycyBmb3Igc29tZSBJTUUgbWVzc2FnZXMgaW4gRGVmV2luZG93UHJvYy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpbGVva3N0cmluZyBub3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGN1c3RvbSBjaGlsZCBkaWFsb2csCglub3QgdG8gdGhlIG1haW4gZGlhbG9nLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURlLXN0dWIgc2luKCkgYW5kIGNvcygpLgoJQWRkIG5vaW1wb3J0IGZsYWcgdG8gc2luKCksIGNvcygpLCBhbmQgcG93KCkuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL2NsYXNzLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvd2lkZ2V0cy5jOgoJUmVtb3ZlZCBkZXBlbmRlbmNpZXMgb24gdGhlIGludGVybmFscyBvZiB0aGUgQ0xBU1Mgc3RydWN0dXJlLgoJQWRkZWQgc3VwcG9ydCBmb3IgaGF2aW5nIGJvdGggQVNDSUkgYW5kIFVuaWNvZGUgd2luZG93IHByb2NlZHVyZXMgZm9yCglidWlsdGluIGNsYXNzZXMuCgoJKiB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCVJlbW92ZWQgY2FsbHMgdG8gV0lER0VUU19Jc0NvbnRyb2wuCgoJKiBpbmNsdWRlL3dpbmluZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVbmNvbW1lbnQgR09QSEVSX0FUVFJJQlVURV9UWVBFIGFuZCBHb3BoZXJHZXRBdHRyaWJ1dGUuCglDcmVhdGUgQS9XIHZlcnNpb25zIG9mIEdPUEhFUl9BVFRSSUJVVEVfVFlQRSBhbmQKCUdPUEhFUl9BVFRSSUJVVEVfRU5VTUVSQVRPUi4KCgkqIGluY2x1ZGUvd2luc29jay5oLCB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBwcm90b3R5cGUgZm9yIGNsb3Nlc29ja2V0LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGhhbmRsaW5nIG9mIERpYWxvZ0JveEluZGlyZWN0UGFyYW1BIHJldHVybiB2YWx1ZS4KCjIwMDAtMTItMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGZpbGVzL3Byb2ZpbGUuYywgUkVBRE1FLCB3aW5lLmluaToKCUFkZGVkIGF1dG9tYXRpYyB0cmFuc2xhdGlvbiBvZiB0aGUgY29uZmlnIGZpbGUgdG8gdGhlIG5ldwoJZm9ybWF0LiBVcGRhdGVkIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJQWRkZWQgZGVmaW5lIGZvciBTX0lTTE5LIGlmIG1pc3NpbmcuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvbid0IG1ha2UgdGhlIHNwZWMgZmlsZSBjb25zdHJ1Y3RvcnMgc3RhdGljIHNvIHRoYXQgdGhleSBkb24ndCBnZXQKCW9wdGltaXplZCBvdXQuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJRElCIHNlY3Rpb24gaW1wcm92ZW1lbnRzOyBVcGRhdGVESUJTZWN0aW9uIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGgKCUxvY2tESUJTZWN0aW9uIGFuZCBVbmxvY2tESUJTZWN0aW9uLCBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KCURJQl9TdGF0dXNfKiBpcyBub3cgZHJpdmVyLWluZGVwZW5kZW50LCBhbmQgdGhlcmUncyBhIG5ldwoJRElCX1N0YXR1c19BdXhNb2QuIEJldHRlciBoYW5kbGluZyBvZiBESUIgc3VyZmFjZXMgd2l0aCBub25zdGFuZGFyZAoJcGl0Y2guIFNsaWdodCBvcHRpbWl6YXRpb24gb2YgRElCc2VjdGlvbi0+ZGlzcGxheSBCaXRCbHQuCgoJKiBkbGxzL2tlcm5lbC9ubHMvaGViLm5scywgbWlzYy9vcHRpb25zLmMsIHRvb2xzL3dyYy91dGlscy5jLCBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkIGJhc2ljIE5MUyBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yIEhlYnJldy4KCgkqIGRsbHMva2VybmVsL25scy9jeW0ubmxzOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJV2Vsc2ggbmVlZHMgaXNvODg1OS0xNC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBTZW5kTm90aWZ5TWVzc2FnZSgpIGZvciBXTV9TWU5DUEFJTlQuCgoJKiBkbGxzL250ZGxsL250LmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCVJldHVybiBhIG1heGltdW0gcmVnaXN0cnkgc2l6ZSBvZiAzMiBNQiBpbiBOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJQWRkZWQgc2FtcGxlIGNvbmZpZyBmaWxlIGluIHRoZSBuZXcgZm9ybWF0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglTZXQgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MiBmbGFnIGlmIHN1cHBvcnRlZCB0byBhdm9pZCB3YXN0ZWZ1bAoJc3RhY2sgYWxpZ25tZW50cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHByaW50cyBsaW5lIG51bWJlciBmb3IgJ3guZGxsIGltcG9ydGVkIGJ1dCBubyBzeW1ib2xzIHVzZWQnIHdhcm5pbmcuCgoJKiBjb250cm9scy9jb21iby5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlIGludGVybmFsIGNvbnRyb2xzIG9uIFdNX1dJTkRPV1BPU0NIQU5HRUQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZXh0X2RlYnVnZ2VyLmMsIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZXh0X2RlYnVnZ2VyLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUJ1aWxkIHRoZSBkZWJ1Z2dlciBhcyBhIC5zby4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBpbmNsdWRlL2RwbGF5LmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3V1aWQuYywgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCUNyZWF0ZWQgYSBzbWFsbCBzdGF0aWMgbGlicmFyeSBpbiBvbGUvbGlidXVpZC5hIHRoYXQgY29udGFpbnMgYWxsIHRoZQoJVVVJRCBkZWZpbml0aW9ucyAod2l0aCB0aGUgaGVscCBvZiBGcmFuY29pcyBHb3VnZXQpLgoKCSogdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbjoKCVVzZSBsaWJ3aW5lIGFuZCBsaWJ3aW5lX3VuaWNvZGUgZGlyZWN0bHkgZnJvbSB0aGVpciBidWlsZCBkaXJlY3RvcnkKCWluc3RlYWQgb2YgdXNpbmcgc3ltbGlua3MuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS90c19zaGFwZS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EuaCwgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cG0uaCwgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgaW5jbHVkZS90c194dmlkZW8uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvLmN2c2lnbm9yZSwgdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL2xvY2tpbmcuYywgdHN4MTEvdHNfc2hhcGUuYywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2ZGdhMi5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYywgdHN4MTEvdHNfeHZpZGVvLmMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUJ1aWxkIHRzeDExIGxheWVyIGFzIGEgc2VwYXJhdGUgc2hhcmVkIGxpYnJhcnkuCgoyMDAwLTEyLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGlmMTYzMi9idWlsdGluLmMsIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9lbGYuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUFsd2F5cyBwYXNzIGxvd2VyLWNhc2UgZmlsZW5hbWVzIHRvIHdpbmVfZGxsX2xvYWQoKS4KCUNsZWFyIGRsZXJyb3IoKSBiZWZvcmUgYW5kIGFmdGVyIGNhbGxzIHRvIGRsb3Blbi9kbHN5bSB0byB3b3JrIGFyb3VuZAoJYSBnbGliYyBidWcgKHRoYW5rcyB0byBKYW1lcyBBYmJhdGllbGxvIGZvciB0cmFja2luZyB0aGUgYnVnKS4KCgkqIGRsbHMva2VybmVsL25scy9zcmIubmxzLCB0b29scy93cmMvdXRpbHMuYzoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJRml4ZWQgU2VyYmlhbiBsYW5ndWFnZSBjb2RlIHBhZ2UuCgoJKiBjb250cm9scy9jb21iby5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVyZSB0aGUgc3RyaW5nIGluIGEgY29tYm8gYm94IGZsaWNrZXJzIGlmIHlvdQoJcmFwaWRseSByZXNldCB0aGUgY29udGVudCBhbmQgdGhlbiByZXBsYWNlIHRoZSBjb250ZW50LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBlcnJvciBtZXNzYWdlIGZvciBmb3J3YXJkcy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9aaC5yYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDaGluZXNlIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvaW1tLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQ29tcGlsZSBmaXggZm9yIGdjYyAyLjcuMi4zLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXNlIHRoZSBhcHByb3JpYXRlIGNvbW1hbmQgZm9yIGNvbWJpbmluZyAubyBmaWxlcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlIGNvZGUgZHVwbGljYXRpb24uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEb24ndCBmb3JnZXQgdG8gbWFwIHRoZSBtZXNzYWdlIGluIFdJTlBST0NfTWFwTXNnMTZUbzMyVygpLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgZGxlcnJvcigpIGNoZWNrIHRvIHVzZSBzdHJzdHIoKS4KCgkqIGRsbHMvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXNlIEBMSUJFWFRAIGluc3RlYWQgb2YgLnNvIGZvciB0aGUgaW50ZXItZGxscyBkZXBlbmRlbmNpZXMuCgoJKiB0b29scy9tYWtlZGVwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJLSBvdmVyd3JpdGUgKHJhdGhlciB0aGFuIGFwcGVuZCkgdGhlIG91dHB1dCBmaWxlIGlmIHdlIGhhdmUgbm8gc2VwYXJhdG9yCgktIGF2b2lkIG91dHB1dCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmM6CglLZW4gQ29sZW1hbiA8a2VuX2NvbGVtYW5AaW5hbWUuY29tPgoJQWRkZWQgYSBmaXJzdC1jdXQgdmVyc2lvbiBvZiBNYXBWaXJ0dWFsS2V5RXhXKCkgdGhhdCBoYXMgdGhlIHNhbWUKCWZ1bmN0aW9uYWxpdHkgKGFuZCBsaW1pdGF0aW9ucykgYXMgdGhlIEFOU0kgdmVyc2lvbi4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+Cgl3aW5laW5zdGFsbCBkaWRuJ3QgY3JlYXRlIHRoZSBkZWZhdWx0IG5vLXdpbmRvd3MgZGlyZWN0b3J5IC9jCgl3aGVuIGp1c3QgcHJlc3NpbmcgZW50ZXIuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBjb3JyZWN0IG51bWJlciBvZiBjb2xvcm1hcCBlbnRyaWVzIGxvb2tlZCBhdCBpbiBHZXRESUJDb2xvclRhYmxlLgoJLSBjb3JyZWN0IG51bWJlciBvZiBjb2xvcm1hcCBlbnRyaWVzIHByb2Nlc3NlZCBpbiBTZXRESUJDb2xvclRhYmxlLgoKCSogZGxscy9rZXJuZWwvbmxzL25sYi5ubHMsIGRsbHMva2VybmVsL25scy9ubGQubmxzOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNvbWVzIGZpeGVzIGZvciBEdXRjaCBsb2NhbGVzLgoKCSogZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoyMDAwLTEyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAxMjAyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL21hcHBpbmcuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlICpjdXJyZW50KiBzZWN0aW9uLCBub3Qgb25seSB0aGUgYXR0cmlidXRlcwoJb2YgdGhlICpmaXJzdCogc2VjdGlvbi4uLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCBXSU5QUk9DX0dldFB0cigpIHRvIGFsd2F5cyBwYXNzIHRoZSBzdGFydCBvZiB0aGUgYmxvY2sgdG8KCUhlYXBWYWxpZGF0ZSgpLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCURpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBpZiBsb2FkaW5nIGEgV2luZWxpYiBhcHAgZmFpbGVkIChzdWdnZXN0ZWQgYnkKCUZyYW5jb2lzIEdvdWdldCkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSB0aGUgRFVNTVlVTklPTk5BTUUgbWFjcm9zIHNvIHRoYXQgdGhlIGhlYWRlcnMgY2FuIGJlIHVzZWQgaW4KCVdpbmVsaWIuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEFTQ0lJLW9ubHkgdmVyc2lvbiBvZiB0b3VwcGVyLCB0b2xvd2VyLCBzdHJjYXNlY21wIGFuZCB0aGUgbGlrZQoJZm9yIGZpbGUgYW5kIG1vZHVsZSBJL08uCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCVVzZSBpb2N0bHNvY2tldCgpIGluc3RlYWQgb2YgaW9jdGwoKSBzbyB0aGF0IHdlIGNhbiBpbXBvcnQgd3MyXzMyLmRsbAoJYWdhaW4gKHVudGVzdGVkKS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL21pc2MuYywgbG9hZGVyL3Jlc291cmNlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQvbW9kaWZpZWQgZG9jdW1lbnRhdGlvbiBmb3IgZnVuY3Rpb24gYXJndW1lbnRzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYva2VybmVsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbnNvY2suYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd3Byb2NzLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaWxlT3BlbkRsZ1Byb2M5NTogbm90aWZ5IGFwcGxpY2F0aW9uIG9mIGNoYW5nZWQgc2VsZWN0aW9uIGFmdGVyCglmaWxsaW5nIHRlbXBsYXRlLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIG1pc2MvY2Ryb20uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVncyB3aGVuIHRyYXkgd2FzIG9wZW4uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzZXZlcmFsIGFkZGl0aW9uYWwgdG8vZnJvbSB1bmljb2RlIG1lc3NhZ2UgbWFwcGluZ3MuCgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUFsd2F5cyBwdXQgdGhlIGRsbCBjb25zdHJ1Y3RvciBpbiB0aGUgLmluaXQgc2VjdGlvbiwgYW5kIGxpa2UgdGhlCgkuc3BlYy5vIGZpbGUgZmlyc3QgdG8gZW5zdXJlIGNvcnJlY3QgY2FsbGluZyBvcmRlciBvZiB0aGUgY29uc3RydWN0b3JzLgoKCSogbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTUuYywgb2JqZWN0cy9icnVzaC5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG1pc2NlbGxhbmVvdXMgdHlwb3MsIHN5bnRhY3RpYyBhbmQgZ3JhbW1hdGljYWwgZXJyb3JzLgoKCSogREVWRUxPUEVSUy1ISU5UUywgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5ubHMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgY2FzZSBvZiAiV2luZWxpYiIuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVtYWtlci5tYW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBXaW5lbGliIGNhc2UuCglUaGUgbGlua2luZyBhc3BlY3RzIGhhdmUgYmVlbiBzb2x2ZWQgYnkgdGhlIGxhc3Qgd2luZWJ1aWxkIHVwZGF0ZSAtPgoJcmVtb3ZlZCBmcm9tIHRoZSB0b2RvIGxpc3QuCglUaGUgY29uZmlndXJlIHNjcmlwdCBoYXMgYmVlbiB1cGRhdGVkIC0+IHJlbW92ZWQgZnJvbSB0aGUgdG9kbyBsaXN0LgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHRoZXJlIGlzIGEgc2luZ2xlIHRhcmdldCwgaXQgc2hvdWxkIGFsc28gZ2V0IHRoZSAncHJvamVjdF9zZXR0aW5ncwoJc291cmNlcycuCglJZiBhIHN1YmRpcmVjdG9yeSBpcyBjYWxsZWQgJ2luY2x1ZGUnIHRoZW4gYWRkIGl0IHRvIHRoZSBpbmNsdWRlIHBhdGguCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglJbmNsdWRlIGNvbmZpZy5oLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc2V2ZXJhbCBjbGlwYm9hcmQgZm9ybWF0cy4KCgkqIE1ha2UucnVsZXMuaW46CglEZW5uaXMgQmr2cmtsdW5kIDxkYkB6aWdvLmRocy5vcmc+CglDb21waWxlIGZpeCBmb3IgYnVpbGRpbmcgd2luZSBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbnRlcm5ldENsb3NlSGFuZGxlIGRpZG4ndCByZXR1cm4gVFJVRSBpbiBhbGwgYXBwcm9wcmlhdGUgY2FzZXMuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSAtLXdpbnZlciBudDQwIGhpbnQgdG8gVnhEIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWE8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCS0gVGFrZSB0aGUgbW91c2UgY2FwdHVyZSBvbiBhIFdNX05DUkJVVFRPTkRPV04gb24gdGhlIGNhcHRpb24gYmFyLAoJICByZWxlYXNlIGl0IG9uIGEgV01fUkJVVFRPTlVQCgktIERvbid0IHNlbmQgV01fQ09OVEVYVE1FTlUgb24gYSBXTV9OQ1JCVVRUT05VUAoJLSBVc2UgcGFyZW50LXJlbGF0aXZlIGNvb3JkaW5hdGVzIHdoZW4gY2FsbGluZyBOQ19IYW5kbGVOQ0hpdFRlc3QKCjIwMDAtMTItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3RleHQuYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL2ludDEwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvZHJpdmUuYywgZ3JhcGhpY3MvZGlzcGRpYi5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvbHN0ci5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMva2VybmVsL2NvbW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQvbW9kaWZpZWQgZG9jdW1lbnRhdGlvbiBmb3IgZnVuY3Rpb24gYXJndW1lbnRzLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgV2luMTYgZG9jdW1lbnRhdGlvbiBub3QgZml4ZWQgYmVjYXVzZSBvZiBhIGJ1ZyBpbiB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL3dpbmluZXQvZnRwLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9kb3MvZG9zbW9kLmMsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9nZGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgYSBidWcgY29uY2VybmluZyBXaW4xNiBkb2N1bWVudGF0aW9uLgoJLSBGaXhlZCBzb21lIGJ1Z3MgY29uY2VybmluZyBhcmd1bWVudCBkb2N1bWVudGF0aW9uCgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUKCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuaCwgdG9vbHMvZm50MmJkZi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wb3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBpZjE2MzIvdGh1bmsuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvdmVyc2lvbi5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL3Z4ZC5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY3J0ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRlYnVnZ2VyL21zYy5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOgoJTW92ZWQgdXNlZnVsIE5FIGZvcm1hdCBkZWZpbml0aW9ucyB0byB3aW5iYXNlMTYuaC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vZGlmaWVkIHdpbmVidWlsZCB0byB1c2UgdGhlIF9fQVNNX0ZVTkMgbWFjcm8gZm9yIGdyZWF0ZXIgcG9ydGFiaWxpdHkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglNb3ZlZCB0aGUgZmV3IHJlbWFpbmluZyBmdW5jdGlvbnMgaW4gd3Byb2NzLmRsbCB0byBrZXJuZWwuZGxsLgoJTm8gbG9uZ2VyIGxvYWQgd3Byb2NzLmRsbCB1bmNvbmRpdGlvbmFsbHkuCglSZXN0b3JlZCBkZWZhdWx0IGludGVycnVwdCBoYW5kbGVyIGJlaGF2aW9yIChyZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWMsIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmM6CglGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIHNoZWxsMzIgYW5kIHdzb2NrMzIuCgoJKiBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU3VwcGx5IGR1bW15IGdldHJsaW1pdCBpZiBhYnNlbnQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2Vnc3RyIHRvIHN0ciBwcm90by4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFuZWQgdXAgaW50ZXJuYWwgdHlwZXMgZGVmaW5pdGlvbi4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcHJvdmVkIHN0YWJzIGxvYWRpbmcgKG5vdyB1c2luZyByZWN1cnNpdmUgcGFyc2luZywgcmVxdWlyZWQgYnkgc3RhYnMKCWdlbmVyYXRlZCBieSBsYXRlc3QgZ2NjIHZlcnNpb25zKS4KCgkqIGRlYnVnZ2VyL2V4cHIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV29yayBhcm91bmQgZm9yIGRlcmVmIGlzc3VlcyAobGVhc3QgaW1wYWN0IHNvbHV0aW9uIHRha2VuLCBldmVuIGlmIGlzc3VlcyByZW1haW4pLgoKCSogZGxscy9rZXJuZWwvbmxzL2NodC5ubHMsIGRsbHMva2VybmVsL25scy9jemUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGFuLm5scywgZGxscy9rZXJuZWwvbmxzL2Zpbi5ubHMsIGRsbHMva2VybmVsL25scy90cmsubmxzLCBkbGxzL2tlcm5lbC9ubHMvemhpLm5sczoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBIG51bWJlciBvZiBhZGRpdGlvbnMgdG8gdGhlIG5scyBmaWxlcy4gQWxzbyBvbmUgY29ycmVjdGlvbiwgd2UgaGFkCgk4OTUgZm9yIHRoZSBDemVjaCBkZWZhdWx0IGNvZGVwYWdlIGJ1dCBhY2NvcmRpbmcgdG8gbWljcm9zb2Z0IGl0CglzaG91bGQgYmUgODUyLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB3aW5lbGF1bmNoZXIgd29yayBiZXR0ZXIgZm9yIHNvdXJjZSB0cmVlIGJ1aWxkcy4KCU1ha2Ugd2luZWxhdW5jaGVyIGRldGVjdCB0aGUgbGFjayBvZiBhIH4vLndpbmVyYyBmaWxlIGFuZCBwcm9tcHQgdGhlCgl1c2VyIGFib3V0IGl0LgoJUGFzcyBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBhIGJpdCBtb3JlIGdyYWNpb3VzbHk7IGltcHJvdmVzCglpbnRlcmFjdGlvbiB3aXRoIGdtYyBhbmQga2ZtLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHRoZSBLREUgMiBiZXRhIGFuZCBmaW5hbCBtZXRob2Qgb2Ygc3BlY2lmeWluZyBzeXN0cmF5IHdpbmRvd3MuCgoyMDAwLTExLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJRG9uJ3QgdXBkYXRlIHNjcm9sbGJhcnMgd2hlbiBwcm9jZXNzaW5nIFdNX0RFU1RST1kuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUNoZWNrIGZvciBOVUxMIGhhbmRsZSBiZWZvcmUgY2FsbGluZyBIZWFwVmFsaWRhdGUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVtYWtlci5tYW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQnJpbmcgdGhlIG1hbiBwYWdlIGluIGxpbmUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2Ygd2luZW1ha2VyLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW4gaW50ZXJhY3RpdmUgbW9kZSwgZG9uJ3QgaWdub3JlIGludmFsaWQgb3B0aW9ucywgYXNrIHRoZSB1c2VyIGFnYWluCgktIFVwcGVyY2FzZSBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGFmdGVyIGFsbCAoaGludDogJChTUkM6LmM9Lm8pKQoJLSBQYXNzIHRoZSBnbG9iYWwgZGVmaW5lcyBhbmQgaW5jbHVkZSBwYXRoIHRvIFdSQwoJLSBCYXNlIHRoZSBjbGVhbnVwIG9uIHRoZSBPQkpTIHZhcmlhYmxlIHNvIHRoYXQgaXQgd29ya3MgZXZlbiBpZiB0aGUKCSAgc291cmNlcyBhcmUgaW4gYSBzdWJkaXJlY3RvcnkKCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CgktIEZpeCB0aGUgaGFuZGxpbmcgb2YgcmVsYXRpdmUgaW5jbHVkZS9saWJyYXJ5IHBhdGhzCgktIEluIGludGVyYWN0aXZlIG1vZGUsIHByaW50ICIuLyIgZm9yIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IHJhdGhlcgoJICB0aGFuIGFuIGVtcHR5IHN0cmluZwoJLSBXZSBkb24ndCBuZWVkIHRvIGZvcmNlIGEgc3BhY2UgYmVmb3JlIGFzc2lnbm1lbnRzCgktIEFsaWduIFRPUFNSQ0RJUiAmIGNvIGxpa2UgYWxsIHRoZSBvdGhlciBhc3NpZ25lbWVudHMKCS0gQ29tcGlsZSBEbGxzIGZpcnN0IChkZXBlbmRlbmNpZXMgd291bGQgZG8gaXQgbW9yZSBvciBsZXNzIGFueXdheSkKCS0gV29yZGluZyBjaGFuZ2UgaW4gdGhlIHVzYWdlCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCBtaXNjL3JlZ2lzdHJ5LmMsIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9nZGkvTWFrZWZpbGUuaW46CglGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIGFkdmFwaTMyLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9pZnMuYywgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy5zcGVjOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBvbGUzMi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBiZXR0ZXIgdmVyc2lvbiBvZiBEUEFfTWVyZ2UuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBtaXNzaW5nICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+IHRvIGdldCBzdHJ1Y3QgaW5fYWRkciBvbiBhbGwgcGxhdGZvcm1zLgoKCSogbWVtb3J5L2hlYXAuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgY3Jhc2ggaW4gVW5NYXBMUyBmb3IgcG9pbnRlcnMgbm90IGJlbG9uZ2luZyB0byB0aGUgc2VncHRyIGhlYXAuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9taWRpbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2F2ZW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93b3czMi8uY3ZzaWdub3JlLCBkbGxzL3dzb2NrMzIvLmN2c2lnbm9yZSwgZGxscy94MTFkcnYvLmN2c2lnbm9yZSwgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLCBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWFuaW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhdmkvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2ljZGEvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lzZXEvLmN2c2lnbm9yZSwgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL3BzYXBpLy5jdnNpZ25vcmUsIGRsbHMvcmFzYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLCBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hmb2xkZXIvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc25ldDMyLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLCBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvZGNpbWFuMzIvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZToKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglSZW1vdmUgbGliWFhYWC5zby4xLjAgbGluZXMgZnJvbSAuY3ZzaWdub3JlIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2YgY29tY2x0MzIgYW5kIGNvbWRsZzMyLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jOgoJRml4ZWQgcHJvZ21hbiBpbnRlcm5hbCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGl0IGxpa2UgdGhlIG90aGVyCglwcm9ncmFtcy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUV4cG9ydCBhIGZldyAxNi1iaXQgZnVuY3Rpb25zIG5lZWRlZCBieSBoaWdoZXItbGV2ZWwgZGxscy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJRXhwb3J0IHRoZSB3aW5lIHNlcnZlciBmdW5jdGlvbnMgZnJvbSBudGRsbC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi90b29saGVscC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIG5ldyBvcHRpb24gLS1kb2N1bWVudGF0aW9uLWFyZ3VtZW50cwoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlCgoJKiBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvd2luZG93cy5oLCBtc2Rvcy9pbnQxMS5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvbid0IGluY2x1ZGUgd2luZG93cy5oIGludGVybmFsbHkuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYWxpYXMgY2FwYWJpbGl0eSB0byAtLXdpbnZlci4KCXdpbjIwMDAgaXMgdGhlIG9mZmljaWFsIHZhbHVlLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW46CglVc2UgdGhlIEhFQVBfV0lORV9TRUdQVFIgZmxhZyB0byBzcGVjaWZ5IGFsbG9jYXRpb25zIG9uIHRoZSBzZWdwdHIgaGVhcC4KCUFkZGVkIGEgaGFjayBpbiBNYXBMUyB0byByZWNvZ25pemUgc3VjaCBhbGxvY2F0aW9ucyBhbmQgdXNlIHRoZSBoZWFwCglzZWxlY3RvciBpbiB0aGlzIGNhc2UuCgoJKiBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCVJlbW92ZWQgZGVwZW5kZW5jaWVzIG9uIFdpbmUgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglBbHdheXMgaW5pdGlhbGl6ZSBtc2cxNiBhbmQgd3BhcmFtMTYgaW4gV0lOUFJPQ19NYXBNc2czMldUbzE2LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL2xvYWRvcmRlci5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5lLmluaToKCVJlbW92ZWQgImVsZmRsbCIgbG9hZCBvcmRlciBvcHRpb24gYW5kIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCjIwMDAtMTEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9kZXZpY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRG8gbm90IGluY2x1ZGUgc3lzL3B0cmFjZS5oIGFuZCBzeXMvdXNlci5oIHVuY29uZGl0aW9uYWxseS4KCU90aGVyIHBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmM6CglCcmlhbiBUZWFndWUgPGJ0ZWFndWVAcmljZS5lZHU+CglBZGQgYSBzdHViIGZvciB0aGUgQ0FQUzEgY2FwYWJpbGl0eSBpbiBHZXREZXZpY2VDYXBzLgoJRGVmaW5lIHRoZSBDQVBTMSBiaXQgZmxhZ3MgaW4gd2luZ2RpLmgKCU1ha2UgdmFyaW91cyBjYWxscyB0byBHZXREZXZpY2VDYXBzIGluIERMTFMgdXNlICNkZWZpbmVkIHZhbHVlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy91c2VyL21vdXNlLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvZHBtaS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJUmVuYW1lZCBDYWxsVG8xNiogZnVuY3Rpb25zIHRvIHdpbmVfY2FsbF90b18xNiogYW5kIGV4cG9ydCB0aGVtIGZyb20KCWtlcm5lbDMyLnNwZWMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4ZWQgcmV0dXJuZWQgbGVuZ3RoIG9mIGZpbGVzLgoKCSogY29uZmlndXJlLmluLCBkZWJ1Z2dlci9zdGFicy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmU6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRG8gbm90IHVzZSBhLm91dC5oLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL3duZXQuYywgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJQ2xlYW5lZCB1cCBzb21lIG1vcmUgZGVwZW5kZW5jaWVzIG9uIFdpbmUgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIGxzdGF0IHRvIHBvcnQuYy4KCgkqIHdpbjMyL2RldmljZS5jOgoJS2VlcyBTY2hvZW5tYWtlcnMgPGtlZXNzQG1pbGx0cm9uaWNzLmNvbT4KCUFkZGVkIEhBU1AgZGV2aWNlIHN0dWIuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRoZSBzaXplIG9mIHRoZSBsYXJnZV9oYW5kbGVzIGFycmF5LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5kcnYuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCBhIGZldyBjb21waWxhdGlvbiB3YXJuaW5ncy4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglXTV9TRVRURVhUIHNob3VsZCByZXR1cm4gVFJVRSBvbiBzdWNjZXNzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVmlydHVhbFF1ZXJ5IHNob3VsZCByZXR1cm4gMCBmb3IgYWxsIGFkZHJlc3NlcyA+PSAweGMwMDAwMDAwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU93bmVyZGF0YSBsaXN0dmlld3Mgd2VyZSBub3QgY2xlYXJpbmcgcHJldmlvdXNseSBzZWxlY3RlZCBpdGVtcyB3aGVuIGEKCW5ldyBpdGVtIGlzIHNldCBhcyBzZWxlY3RlZCB1c2luZyBTZXRJdGVtIGFuZCB0aGUgbGlzdHZpZXcgaGFzCglMVklTX1NJTkdMRVNFTC4KCjIwMDAtMTEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIHdlcmUgcmV0dXJuaW5nIGNoYXJhY3RlcnMgZm9yIHZhcmlvdXMgQ1RSTCArIFN5bWJvbCBrZXlzdHJva2VzCgl3aGljaCBzaG91bGQgbm90IHJldHVybiBjaGFyYWN0ZXJzLgoKCSogbWlzYy9jcHUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglsaW51eC0yLjQuMC10ZXN0MTAgbm93IGNhbGxzICdmbGFncycgYXMgJ2ZlYXR1cmVzJy4KCgkqIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVNsaWdodGx5IHJlYXJyYW5nZSBXSU4xNi9XSU4zMkEvV0lOMzIgd2luZG93IGNyZWF0aW9uLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL3dpZGdldHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJTWFkZSBidXR0b24gY29udHJvbCBmdWxseSB1bmljb2RlIGF3YXJlLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZml4IGNyYXNoIGluIFNFVFVQWF9UcmFuc2xhdGVMRElEKCkKCS0gaW1wbGVtZW50IGN1c3RvbSBMRElEIGxvb2t1cAoKCSogbWlzYy9jZHJvbS5jLCBtaXNjL2NwdS5jLCBtaXNjL3ZlcnNpb24uYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2xlL29sZTJubHMuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9pbml0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21wci93bmV0LmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJR290IHJpZCBvZiB0aGUgV2luZSBpbnRlcm5hbCBsc3RyY3B5KiBmdW5jdGlvbnMgYW5kIG9mIHdpbmVzdHJpbmcuaC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZWQgbWFuIHBhZ2UuCgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL2hlYXAuaDoKCU1hZGUgSEVBUF9zdHJkdXAqIGZ1bmN0aW9ucyBpbmxpbmUgKHRlbXBvcmFyeSkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgd2luMzIvbmV3Zm5zLmM6CglNb3ZlZCBFbnVtUG9ydHNBIHRvIGRsbHMvd2luc3Bvb2wuCgoyMDAwLTExLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVxdWlyZSB7REVDTEFSRSxERUZBVUxUfV9ERUJVR19DSEFOTkVMIHN0YXRlbWVudHMgdG8gZW5kIGluIGEgOwoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglTZXQgZGVidWdnaW5nIG9wdGlvbiBiYXNlZCBvbiBOT19UUkFDRV9NU0dTIGRlZmluZS4gT25seSBvdXRwdXQgMzItYml0CglyZWxheSBzdHVicyBpZiBkZWJ1Z2dpbmcgaXMgb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbm50Lmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVGVzdCBpZiB3ZSBuZWVkIHRvIHB1dCB0aGUgLnR5cGUgZGlyZWN0aXZlIGluc2lkZSBhIC5kZWYgZGlyZWN0aXZlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRydW5jYXRlIGRlc3QgYmxpdCByZWN0YW5nbGUgZG93biB0byBzdXJmYWNlIHNpemUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXQVJOKCkgYWJvdXQgbWlzc2luZyAvZGV2L3NlcXVlbmNlciwgaXQncyB0b28gY29uZnVzaW5nIGZvciBuZXdiaWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBbHNvIG1lbnRpb24geHBtLWRldmVsIGluIHRoZSBlcnJvciBtc2cuCgoJKiBtaXNjL2NwdS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBGbG9hdGluZ1BvaW50UHJvY2Vzc29yIGVtcHR5IGVudHJ5IHRvIHRoZSByZWdpc3RyeS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gcHJvY2Vzc2luZyBtb3VzZSBtZXNzYWdlcyBpbiBNRU5VX1RyYWNrTWVudSwgdXNlIHRoZSBjb29yZGluYXRlcwoJaW4gbFBhcmFtIGluc3RlYWQgb2YgdGhvc2UgaW4gTVNHOjpwdC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRGlzcGxheSB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gd2hlbiBpbXBvcnQgZmFpbGVkLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9tcHIvd25ldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3N0YXRpYy5jOgoJRml4ZWQgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIDE2LWJpdCBvciBpbnRlcm5hbCBmdW5jdGlvbnMuIEZpeGVkIGEgZmV3Cgl3YXJuaW5ncy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5tbS9tbWlvLmM6CglGaXhlZCBTRUdQVFJfR0VUIHVzYWdlLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJQWRkZWQgZW50cnkgZm9yIFByaXZhdGVFeHRyYWN0SWNvbnNBLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvdnhkLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUltcGxlbWVudGVkIERvc0ZpbGVIYW5kbGVUb1dpbjMySGFuZGxlLCBXaW4zMkhhbmRsZVRvRG9zRmlsZUhhbmRsZSBhbmQKCURpc3Bvc2VMWjMySGFuZGxlIGFuZCB1c2UgdGhlbSB0byByZXBsYWNlIGZpbGUuYyBpbnRlcm5hbCBmdW5jdGlvbnMuCglSZW5hbWVkIFdPVyogZnVuY3Rpb25zIGludG8gSzMyV09XKi4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWM6CglBZGRlZCBlbnRyeSBmb3IgVGVybWluYXRlQXBwMTYuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy93aW4uYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3VzZXIuc3BlYzoKCUNoYW5nZWQgR2V0UHJvY0FkZHJlc3MxNiBhbmQgMTYtYml0IHJlc291cmNlIGZ1bmN0aW9ucyB0byB0YWtlIG5vcm1hbAoJcG9pbnRlcnMgaW5zdGVhZCBvZiBTRUdQVFJzLgoJUmVtb3ZlZCBXSU4xNl9HZXRUZW1wRHJpdmUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBtaXNjL29wdGlvbnMuYywgbWlzYy92ZXJzaW9uLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGFkZGVkIHdpbnZlciBzZXR0aW5ncyBudDJrLCB3aW4zMCBhbmQgd2luMjAgKHllcywgc29tZSByYXJlIHByb2dyYW1zIG5lZWQgdGhpcykKCSAgYW5kICpkb2N1bWVudCogaXQgKHdpbjk4IHdhcyBub3QgZG9jdW1lbnRlZCBwcmV2aW91c2x5KQoJLSBPYUJ1aWxkVmVyc2lvbjogYWRkIHZhbHVlIGZvciBOVDQgU1A2CgktIHNwZWxsaW5nIGZpeGVzCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIGNvbmZpZ3VyZSB0ZXN0cyBmb3IgZmluaXRlKCkvZnBjbGFzcygpLCBmaXhlcyBCU0QgY29tcGlsZQoJLSB3aW5hcGlfY2hlY2sgdXBkYXRlcywgZml4IGVycm5vIGluIG1vcmUgbWF0aCBjYWxscwoKCSogd2luMzIvZXhjZXB0LmMsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbG9hZGVyL3Rhc2suYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgVGVybWluYXRlQXBwIG5lZWRlZCBmb3IgREJhc2UgNS4wLgoJTWFkZSBGYXRhbEFwcEV4aXQxNiBob25vciB0aGUgU0VNX05PR1BGQVVMVEVSUk9SQk9YIGVycm9yX21vZGUgZmxhZy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJR2VuZXJhbCBjbGVhbiB1cCBvZiB0aGUgZWRpdCBjb250cm9sOiByZW1vdmVkIHRyYW5zZmVyIG9mIHVudXNlZAoJdmFyaWFibGVzLCBmaXhlZCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2hlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgaW5pdCBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG1haW4uCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUdsb2JhbEFsbG9jIGFzIEdsb2JhbEFsbG9jMTYgc2hvdWxkIHJvdW5kIHNpemUgdG8gMzIuCglDYWxsIFNldExhc3RFcnJvciBpbiBHbG9iYWxMb2NrLgoKMjAwMC0xMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIG1lbW9yeS9zZWxlY3Rvci5jOgoJTW92ZWQgVVRTZWxlY3Rvck9mZnNldFRvTGluZWFyIGFuZCBVVExpbmVhclRvU2VsZWN0b3JPZmZzZXQgdG8KCWRsbHMvd2luMzJzLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweDE2Lmg6CglSZW1vdmVkIGRlcGVuZGVuY3kgb24gMTYtYml0IGZpbGUgSS9PIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci93c3ByaW50Zi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3dzcHJpbnRmLmMsIG1zZG9zL2ludDExLmMsIG9sZS9vbGUybmxzLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYzoKCU1vdmVkIHdzcHJpbnRmIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkcmF3IHNjcm9sbGJhcnMgaWYgdGhlaXIgY2xpZW50IHJlY3RhbmdsZSBpcyBlbXB0eS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWdub3JlIFNPTF9TT0NLRVQvU09fREVCVUcgc2V0c29ja29wdCgpIGNhbGxzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHN0cmFuZ2UgY2hlY2tqIGZvciAhZmlsZW5hbWUsIHNvIHdlIGRvbid0IGdldCBzZWN0aW9uIE5VTEwKCWFjY2Vzc2VzIGxhdGVyLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJUmVwbGFjZWQgdV9jaGFyL3Vfc2hvcnQvdV9sb25nIGJ5IEJZVEUvV09SRC9EV09SRCBmb3IgaW5jcmVhc2VkIHBvcnRhYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglDb3JyZWN0ZWQgZGVmYXVsdCB2YWx1ZXMgd2l0aCBoZWxwIGZyb20gVWxyaWNoIEN6ZWthbGxhLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgZW50cnkgcG9pbnQgZmxhZ3MgLW5vaW1wb3J0LCAtbm9yZWxheSwgLXJldDY0IGFuZCAtaTM4Ni4KCVJlcGxhY2VkICdieXRlJywgJ3dvcmQnIGFuZCAnbG9uZycgYnkgJ3ZhcmlhYmxlJyBhbmQgbWFkZSBpdCB3b3JrIGZvcgoJV2luMzIgdG9vLgoJTWFkZSBwYXJzZXIgbW9yZSByb2J1c3QgYWdhaW5zdCB0cnVuY2F0ZWQgZmlsZXMuCgoJKiBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvZWxmZGxsLmgsIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgZGxscy93aW5tbS93aW5lb3NzL29zcy5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1ha2Ugc3VyZSBhbGwgZmlsZXMgdXNpbmcgY29uZmlnLmggY29uc3RhbnRzIGFjdHVhbGx5ICNpbmNsdWRlICJjb25maWcuaCIKCgkqIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9hdmlmaWxlLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2RjaW1hbjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGhlIF9fd2luZV9jYWxsX2Zyb21fMTZfIGNhbGxzIGluIHRoZSBpbXBvcnQgdGFibGUgc2hvdWxkIHVzZSBhIHZhbGlkCglzZWdtZW50IGZvciBkZXJlZmVyZW5jaW5nIHRoZWlyIHBvaW50ZXIgKHVzaW5nIENTKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luc29jay5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNoZWNraW5nIGZvciBuZXRkYi5oLgoJRG9uJ3QgaW5jbHVkZSBhcnBhL2luZXQuaCBhbmQgc3lzL3NvY2tldC5oIGlmIHN5c3RlbSBkb2Vzbid0IGhhdmUgdGhlc2UgaGVhZGVycy4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglEbyBub3QgY29tcGlsZSBjb2RlIHRoYXQgbWFrZXMgdXNlIG9mIHRoZSBYIFNobSBleHRlbnNpb24uCgoyMDAwLTExLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5udC5oOgoJTW92ZWQgR0VUX0lQIG91dCBvZiB3aW5udC5oLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9DaGFuZ2VMb2csIHByb2dyYW1zL3Byb2dtYW4vUnUucmMsIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYzoKCVZhc2lseSBJLiBWb2xjaGVua28gPEZvb2RUZWNobm9sb2dpc3RAcGlzZW0ubmV0PgoJQWRkZWQgUnVzc2lhbiBsYW5ndWFnZSBzdXBwb3J0LgoJRml4ZWQgYnVnIG9mIGZpbGUgYnJvd3Npbmcgb3BlcmF0aW9uIChmaWxlcGF0aCBsZW5ndGggY29ycmVjdGVkKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjaGVja2luZyBmb3IgbW1hcC4KCgkqIHRvb2xzL3dyYy91dGlscy5jOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBsYW5ndWFnZXMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmMsIGRsbHMva2VybmVsL25scy9oa2cubmxzLCBkbGxzL2tlcm5lbC9ubHMvcHJjLm5scywgZGxscy9rZXJuZWwvbmxzL3NncC5ubHM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUFkZGVkIG1pc3NpbmcgbG9jYWxlcyB0byBsb2NhbGVfcmMucmMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1hZGUgWDExRFJWX0RJQl9HZXRJbWFnZUJpdHNfMTYgYXdhcmUgb2YgNTY1IERJQnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gc3VwcG9ydCBmb3IgYXJndW1lbnRzIHdpdGggcmVmZXJlbmNlZCB0eXBlcwoJLSBpbXBvcnRlZCB0eXBlIGxpYnJhcmllcwoJLSBkaXNwaW50ZXJmYWNlcwoJLSBkdWFsIGludGVyZmFjZXMKCS0gcmVmIGNvdW50IHByb2JsZW1zCgktIG1lbW9yeSBsZWFrcyBmaXhlZAoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZ2xpYmMyLjIgbmVlZHMgX19VU0VfSVNPQzk5IGZvciBGUF9OQU4gYW5kIGlzZmluaXRlKCkuCgoJKiB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmgsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGaXhlZCBHZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemUgcmV0dXJuIHR5cGUgZm9yIFdpbmVsaWIgYXBwcy4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjOgoJQWRkZWQgYSBmZXcgZm9yd2FyZHMuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglGaXhlZCB0eXBvcy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0RElCQ29sb3JUYWJsZS4KCgkqIGRsbHMva2VybmVsL25scy9sdGgubmxzLCBkbGxzL2tlcm5lbC9ubHMvbHZpLm5sczoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQ29tcGxldGVkIGx2aS5ubHMgYW5kIGx0aC5ubHMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hlY2sgd2hldGhlciBzZW5kZXJRIGlzIE5VTEwgYmVmb3JlIHRyeWluZyB0byBsb2NrIGl0LgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gRml4IGN0eXBlKCksIG1ha2UgaXMqIGZ1bmN0aW9ucyBiaW5hcnkgY29tcGF0aWJsZQoJLSBBZGQgMTMgZnVuY3Rpb25zLCBzZXQgZXJybm8gaW4gbWF0aCBjYWxscwoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBpZjE2MzIvcmVsYXkuYywgd2luZG93cy91c2VyLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL3JwYy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgdGhlIHNhbWUgaGVhZGVycyBhcyBvbiBXaW5kb3dzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGluY2x1ZGUvY29tcG9iai5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWNvbXBvYmouaCBpcyBhIHN5bm9ueW0gZm9yIG9iamJhc2UuaAoJTW92ZWQgYWxsIHRoZSBvdGhlciBjb250ZW50cyB0byBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBub3RpZmljYXRpb24gZm9ybWF0IGhhbmRsaW5nLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIFdpbjE2IGJlaGF2aW91ciBvZiBERExfRFJJVkVTIGluIERsZ0Rpckxpc3QuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBUb1VuaWNvZGUgVFJBQ0UgbWVzc2FnZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gQWRkIG1hdGggY2FsbHM6IHNjYWxiLCBmcGNsYXNzLCBuZXh0YWZ0ZXIsIGxvZ2IsIF9DSSoKCS0gQWRkIGZ1dGltZSwgdXRpbWUsIHB1cmVjYWxsLCBnZXRwaWQKCgkqIGRsbHMvbnRkbGwvbWlzYy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU5URExMX19DSXBvdyByZXR1cm5zIGRvdWJsZSwgbm90IExPTkcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBSZWFkIGFsbCB0aGUgZnJhZ21lbnRzIGF2YWlsYWJsZSwgbm90IG9ubHkgb25lIGZyYWdtZW50IGJlZm9yZQoJICBnb2luZyBiYWNrIHRvIHNsZWVwLgoJLSBVc2UgU05EQ1RMX0RTUF9TRVRUUklHR0VSIGlvY3RsIGNvbW1hbmQgdG8gdHJpZ2dlciB0aGUgc3RhcnQgdGhlCgkgIHJlY29yZGluZy4gSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSwgcmVhZCA0CgkgIGJ5dGVzIGluIHRoZSBzb3VuZCBkZXZpY2UgaW5zdGVhZC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBuYXRpb25hbCBjaGFyYWN0ZXJzIGFzIGFjY2VsZXJhdG9ycyBpbiBkaWFsb2dzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBnZW5lcmF0ZSB1bmljb2RlIENIQVIgbWVzc2FnZXMuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmM6CglGaXhlZCB3YXJuaW5ncy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RyaXZlci5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvb2xlMzIvaWZzLmMsIG1zZG9zL2Rvc21lbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpY3MuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2RpU2VlR2RpRG8xNi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBkb3VibGUgQU5ZU0laRV9BUlJBWSBkZWZpbmUuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBhdXRvZGV0ZWN0ZWQgdGhlIE1GQyB3ZXJlIHN0aWxsIGdlbmVyYXRpbmcgd3JhcHBlcnMuCglGaXhlZCBpbmNvbnNpc3RlbmNpZXMgaW4gdGhlIHVzZSBvZiAnbm8nIGluIHRoZSBvcHRpb24gbmFtZXMuCglVcGRhdGVkIHRoZSBNRkMgbGluay1saXN0IChjb25maWd1cmUuaW4pLgoJTWFkZSB0aGUgTWFrZWZpbGUuaW4gbGF5b3V0IG1vcmUgcmVhZGFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVwZGF0ZSBjb21tZW50cywgY2xlYW51cCB3YXJuaW5nIG1lc3NhZ2VzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzZXJ2ZXIvdHJhY2UuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglJbmNsdWRlIGNvbmZpZy5oIGluIGZpbGVzIHRoYXQgdGVzdCBmb3IgY29uc3RhbnRzIGRlZmluZWQgaW4gaXQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQXZvaWQgdXNpbmcgVElPQ01fKiBjb25zdGFudHMgaWYgbm90IGF2YWlsYWJsZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIHR5cG8gaW4gbWFjcm8gSUNPTV9NRVRIT0QxMSBwYXJhbWV0ZXIgbGlzdC4KCgkqIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFBFIGZpbGUgY2hlY2tzdW0gY2FsY3VsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgY2FsbHMgdG8gaW50ZXJuYWwgKG5vbi1leHBvcnRlZCkgd2luZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIHR1cmtpc2ggbG9jYWxlLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBmb3IgemVyby1sZW5ndGggc3RyaW5nIHNlbGVjdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJU2VuZCBIRE5fSVRFTUNIQU5HSU5HIGFuZCBIRE5fSVRFTUNIQU5HRUQgd2hlbiByZXNpemluZy4KCgkqIG9sZS9vbGUybmxzLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBhcmVTdHJpbmdXIHJldHVybmVkIHdyb25nIHJlc3VsdHMgc29tZXRpbWVzLgoKCSogb2xlL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVdlIG5vIGxvbmdlciBoYXZlIGFuIG9sZS9ubHMgZGlyZWN0b3J5LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIG9yZGluYWwgc3R1YnMsIGltcGxlbWVudGVkIFNIRGVsZXRlVmFsdWUqLCBTSFNldFZhbHVlKi4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBTZW5kTm90aWZ5TWVzc2FnZSgpLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hZGUgd2luZWluc3RhbGwgYSBiaXQgbW9yZSB2ZXJib3NlLgoKCSogZGxscy9nZGkvd2luZy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbkcgd2FzIHdyaXR0ZW4gZm9yIDhicHAgRElCcywgc28gc29tZSBhcHBzIGFzc3VtZSB0aGF0LCBzbyBhbHdheXMKCXJlY29tbWVuZCA4YnBwLCByZWdhcmRsZXNzIG9mIHRoZSBhY3R1YWwgZGlzcGxheSBkZXB0aC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldFBpeGVsIG5lZWRzIHRvIHJldHVybiBDTFJfSU5WQUxJRCBpZiBub3QgaW5zaWRlIGNsaXBwaW5nIHJlZ2lvbi4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIE9MRTMyLkRsbFJlZ2lzdGVyU2VydmVyIHN0dWIuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUm91dGVkIGEgY291cGxlIG9mIDE2LWJpdCBhdmlmaWxlLmRsbCBoYW5kbGVycyB0byB0aGUgMzItYml0CgloYW5kbGVycy4uLiB3ZWxsLCB3b3JrcyBmb3IgQ2l2aWxpemF0aW9uIElJLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwb3coKSBmb3J3YXJkLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCB0ZXN0ICFISVdPUkQgdmFsdWVzIGZvciBwb2ludGVybmVzcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgY29tcGlsYXRpb24gd2FybmluZyBvbiBDeWd3aW4uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTXVsdGlCeXRlVG9XaWRlQ2hhcigpIHJldHVybnMgY2hhcmFjdGVycywgbm90IGJ5dGVzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBWVF9FTVBUWSB0byBWVF9CU1RSIHR5cGUgY29lcmNpb24uCgoJKiBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIE9sZXtHLFN9ZXRBdXRvQ29udmVydCwgTEhhc2hWYWxPZk5hbWVTeXN7LEF9LgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgJWxzIHNhbWUgYXMgJXMuCgoJKiBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgRENJT3BlblByb3ZpZGVyLgoKMjAwMC0xMS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluOgoJQXZvaWQgbGlua2luZyB3aXRoIG50ZGxsIHdoZXJlIHBvc3NpYmxlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL3NwYXduLmM6CglSZW1vdmVkIGNhbGxzIHRvIFdpbmUgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglSZXBsYWNlZCBIRUFQX3N0cmR1cCogYW5kIGxzdHJjcHluQXRvVyBjYWxscyBieSBleHBvcnRlZCBmdW5jdGlvbnMuCgoyMDAwLTExLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9nZGlvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3N5c2xldmVsLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCU1vdmVkIHN0YW5kYXJkIHN5c2xldmVsIEFQSXMgZGVjbGFyYXRpb24gdG8gd2luYmFzZS5oLgoJVXNlIGV4cG9ydGVkIHN5c2xldmVsIGZ1bmN0aW9uIHdoZXJldmVyIHBvc3NpYmxlLgoJTW92ZWQgU0VHUFRSIGRlY2xhcmF0aW9uIHRvIHdpbmRlZjE2LmguCgoJKiBpbmNsdWRlL3dpbnByb2MuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtYXBwaW5nIHRvL2Zyb20gdW5pY29kZSBmb3IgV01fQ0hBUiwgV01fREVBRENIQVIsIFdNX1NZU0NIQVIsCglXTV9TWVNERUFEQ0hBUiBtZXNzYWdlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbG93IHRoZSB1c2VyIHRvIHN0aWNrIHRoZSBvcHRpb24gYW5kIGl0cyBhcmd1bWVudCB0b2dldGhlci4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9tZW1vcnkuYywgZGxscy9jcnRkbGwvc3RyaW5nLmMsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gQ29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhlYXAgZnVuY3Rpb25zCgktIEZvcndhcmQgajAsajEsam4seTAseTEseW4gbWF0aCBjYWxscyB0byBsaWJjCgktIEFkZCBzdHJuZXh0YywgcGFzcyB0ZXh0IGZsYWcgaW4gY3JlYXQsIHdpbmFwaV9jaGVjayBmaXhlcwoKCSogY29udHJvbHMvd2lkZ2V0cy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglQcmVwYXJlIHN3aXRjaGluZyB0byB1bmljb2RlIG9mIGJ1aWx0aW4gd2lkZ2V0cy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJSW5jcmVhc2UgbnVtYmVyIG9mIHBhcmFtZXRlcnMgcG9zc2libGUgZm9yIElDT01fKiBtYWNyb3MgdG8gMTEuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglTa2lwIGRpcmVjdG9yaWVzIHdoZW4gbG9hZGluZyBkZWJ1ZyBzeW1ib2xzLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgaW50ZXJuYWwgbW9kdWxlIGhhbmRsaW5nIChtb2R1bGUgbm93IGhhdmUgYSBzaXplLCBtYXAgb2YKCWxvYWRlZCBtb2R1bGUgaXMgY2xlYXJlciwgYmV0dGVyIGVycm9yIHJlcG9ydGluZywgc2VwZXJhdGVkIG1vZHVsZQoJbG9hZGluZyBjb2RlIGZyb20gc3ltYm9sIGV4dHJhY3Rpb24pLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlcy4KCUVsaW1pbmF0ZSB1c2Ugb2YgVVNFUiBpbnRlcm5hbCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJVXNlIGludGVybmFsIHVuaWNvZGUgc3RyaW5ncy4KCUFkZGVkIHVuaWNvZGUgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglOZXcgdW5pY29kZSBzdXBwb3J0IGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglJbmNsdWRlIGNvbmZpZy5oLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNpbXBsaWZpZWQgcmVnIGhhbmRsaW5nIGluIENvR2V0Q2xhc3NPYmplY3QsIGRvIG5vdCB1c2UgUmVnUXVlcnlWYWx1ZVcuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlZ1NldFZhbHVlRXgxNiBtaWdodCBnZXQgcGFzc2VkIDAgYXMgY291bnQgb2YgZGF0YWJ5dGVzLCBkZXRlcm1pbmUKCXN0cmluZyBsZW5ndGggZm9yIG91cnNlbHZlcyBpbiB0aGlzIGNhc2UuCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS91bmtud24uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYXRjaCB0aGUgV2luZG93cyBoZWFkZXIgZGVwZW5kZW5jaWVzLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU01fQVJSQU5HRSBpcyBBUldfSElERSwgaS5lLiA4CgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRGlzdGluZ3Vpc2ggYmV0d2VlbiBJTVBPUlRTIGFuZCBMSUJSQVJJRVMuCglSZW5hbWVkIExJQlJBUklFUyB0byBETExTIHRvIGF2b2lkIGNvbmZ1c2lvbiB3aXRoIHRoZSBhYm92ZSwgcmVuYW1lZAoJUFJPR1JBTVMgdG8gRVhFUyB0byBtYXRjaC4KCUFkZGVkIGEgJy1pJyBvcHRpb24gZm9yIGltcG9ydGluZyBhIFdpbmVsaWIgbGlicmFyeS4gJy1sJyBpcyBzdGlsbAoJdGhlcmUgYnV0IGlzIG9ubHkgdXNlZCBmb3IgbGlua2luZyBpbiB0aGUgVW5peCBzZW5zZS4KCURpc2FibGVkIHRoZSAnd3JhcHBlcicgb3B0aW9ucy4gSXQgd2lsbCBiZSByZW1vdmVkIGFzIGEgc2VwYXJhdGUKCXBhdGNoLgoJTm8gbG9uZ2VyIGxpbmsgd2l0aCBhbGwgb2YgV2luZSdzIGxpYnJhcmllcy4KCUltcG9ydCB0aGUgc2FtZSBkZWZhdWx0IHNldCBvZiBkbGxzIGFzIFZpc3VhbCBTdHVkaW8uCglBdm9pZCBkdXBsaWNhdGUgaW1wb3J0cyB3aGVuIGdlbmVyYXRpbmcgdGhlIC5zcGVjIGZpbGUuCglVcGRhdGVkIHRoZSB3YXkgd2luZWJ1aWxkIGlzIHVzZWQuCglMaW5rIGFwcGxpY2F0aW9ucyBhcyBsaWJyYXJpZXMgYW5kIGNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgdG8gd2luZS4KCURldGVjdCB3aGVyZSAnd2luZScgaXMgbG9jYXRlZCBpbiB0aGUgY29uZmlndXJlIHNjcmlwdC4KCVJlbW92ZWQgdW51c2VkL25vIGxvbmdlciB1c2VkIHZhcmlhYmxlczogRExMRkxBR1MsIFhMSUIsIFhfRExMUywKCVhGSUxFUywgRExMUyAoY29uZmlndXJlLmluKQoJVXBkYXRlZCBMRFNIQVJFRCBBTkQgTERETExGTEFHUyBkZXRlY3Rpb24gKGNvbmZpZ3VyZS5pbikuCglSZW1vdmVkIHRoZSBydWxlcyBwZXJ0YWluaW5nIHRvIHNwZWMgZmlsZXMgZnJvbSB0aGUgTWFrZS5ydWxlcy4KCVVwZGF0ZWQgdGhlIGNsZWFuIGNvbW1hbmQgdG8gcmVtb3ZlIHRoZSBzeW1ib2xpYyBsaW5rcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIHJwY3J0NCBzdHVicy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBkZXNrdG9wPU4gaW4gdGhlIFt4MTFkcnZdIHNlY3Rpb24gb2YgLndpbmVyYywgaW5zdGVhZCBvZgoJZGVmYXVsdGluZyB0byBkZXNrdG9wPTY0MHg0ODAuCgoyMDAwLTExLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvbGR0LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy92eGQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvZ2xvYmFsLmgsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvc2VsZWN0b3JzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvbGR0LmMsIGxvYWRlci90YXNrLmM6CglNb3ZlZCBMRFQgaGFuZGxpbmcgdG8gbGlid2luZS5zby4gQ2hhbmdlZCB0aGUgaW50ZXJmYWNlIHRvIHVzZSB0aGUKCWV4cG9ydGVkIExEVF9FTlRSWSBzdHJ1Y3R1cmUuCgoyMDAwLTExLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYzoKCVRlbXAgaGFjazogZG8gbm90IGltcG9ydCBkbGxzIHRoYXQgd2UgbGluayB3aXRoIGF0IHRoZSBFTEYgbGV2ZWwuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRml4ZWQgY29weS9wYXN0ZSB0eXBvIHNwb3R0ZWQgYnkgRGltaXRyaWUgTy4gUGF1bi4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgZHJhZ2dpbmcgb24gZ3JpcHBlciB0byBleHBhbmQgYW5kIGNvbXByZXNzIGJhbmRzLiBBY3R1YWwKCW1vdmluZyBiYW5kcyB0byBkaWZmZXJlbnQgcm93cyB3aWxsIGJlIGxhdGVyLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCS0gY3JlYXRlZCBzZXJ2ZXIgb2JqZWN0IGZvciBoYW5kbGluZyBhc3luYyBpL28KCS0gaW1wbGVtZW50ZWQgV2FpdENvbW1FdmVudCB3aXRoIHRoZSBFVl9SWENIQVIgZmxhZwoJLSBpbXBsZW1lbnRlZCBHZXRPdmVybGFwcGVkUmVzdWx0CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHVuay5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRXhwb3J0IHRoZSBDYWxsRnJvbTE2eHh4IGZ1bmN0aW9ucyBmcm9tIGtlcm5lbDMyLiBSZW5hbWVkIHRoZW0KCV9fd2luZV9jYWxsX2Zyb21fMTYgdG8gZm9sbG93IHRoZSBuYW1pbmcgY29udmVudGlvbi4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvIG5vdCB3YXJuIGZvciB1bnVzZWQgaW1wb3J0ZWQgZGxscyB3aGVuIGZvcndhcmRzIHRvIHRoZSBzYW1lIGRsbHMKCWFyZSBwcmVzZW50LgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG9uJ3QgaW5jbHVkZSB3aW5lIGludGVybmFsIGZ1bmN0aW9ucyBpbiB0aGUgcmVsYXkgZGVidWdnaW5nIHRhYmxlLgoKCSogTWFrZS5ydWxlcy5pbjoKCURvIGEgc3RyaXAgLS1zdHJpcC11bm5lZWRlZCBvbiB0aGUgLnRtcC5vIGZpbGUgdG8gcmVkdWNlIGRpc2sgdXNhZ2UuCgoJKiBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgbWVtb3J5L2dsb2JhbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL21zYWNtL2ludGVybmFsLmM6CglSZXBsYWNlZCBhIGZldyBpbnRlcm5hbCBmdW5jdGlvbnMgYnkgZXhwb3J0ZWQgb25lcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVuaXg5OCBwdGhyZWFkX3J3bG9jayogc3R1YnMgZm9yIGdsaWJjMi4yIGNvbXBhdGliaWxpdHkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2luY2Ugd2UgY2FuIG5vIGxvbmdlciBidWlsdCAuYSBmaWxlczoKCS0gcmVtb3ZlIC1kaXNhYmxlLy1lbmFibGUtZGxsIG9wdGlvbgoJLSBlcnJvciBhbmQgYWJvcnQgaWYgbm8gc3VpdGFibGUgc2hhcmVkIGxpYnJhcnkgbGlua2luZyBpcyBwb3NzaWJsZQoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBkZXRlY3Rpb24gb2YgdGhlIGxpbmsgZmxhZ3MgZm9yIE5ldEJTRC9DeWd3aW4gKGNvbmZpZ3VyZS5pbikKCUFkZGVkIEFDX1BBVEhfSEVBREVSIGFuZCBBQ19QQVRIX0xJQlJBUlkKCUJldHRlciBoZWFkZXIvbGlicmFyeSBkZXRlY3Rpb24uIE5vdyB3b3JrcyBpZiB0aGluZ3MgYXJlIGFscmVhZHkgaW4KCXRoZSBpbmNsdWRlL2xpYnJhcnkgcGF0aAoJTG9vayBmb3IgdGhlIHdpbmUvTUZDIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBpbiBtb3JlIHBsYWNlcyBzbyB0aGF0IGl0Cgl3b3JrcyBvdXQgb2YgdGhlIGJveCBpZiBXaW5lL01GQyBpcyBpbnN0YWxsZWQgaW4gYSBzdGFuZGFyZCBwbGFjZQoJKGFsdGhvdWdoIHRoZXJlIGlzIG5vdCByZWFsbHkgYSBzdGFuZGFyZCBwbGFjZSB5ZXQgZm9yIHRoZSBNRkMpCglSZW5hbWVkIHRoZSAnLS13aXRoLXh4eCcgb3B0aW9ucyB0byBoYXZlIHNpbXBsZXIgbW9yZSBuYXR1cmFsIG5hbWVzCglSZW5hbWVkIHRoZSBjb3JyZXNwb25kaW5nICdXSU5FTElCX3h4eCcgdmFyaWFibGVzIHRvICdXSU5FX3h4eCcKCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaGVuIGEgV2luMTYgYXBwIHNldHMgYSBzZWxlY3RvciBiYXNlIHRvIGxvdyBET1MgbWVtb3J5LCBtYWtlIHN1cmUgbG93CglET1MgbWVtb3J5IGlzIG1hcHBlZCBmaXJzdC4KCgkqIG1zZG9zL2ludGVycnVwdHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIHRoZSB2aXJ0dWFsIHJlYWwtbW9kZSBpbnRlcnJ1cHQgdGFibGUgaWYgbG93IERPUyBtZW1vcnkgaXNuJ3QKCW1hcHBlZC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVvcmdhbml6ZWQgRE9TIG1lbW9yeSByZW1hcHBpbmcgc2xpZ2h0bHksIHNvIHRoYXQgdGhlIHJlYWwtbW9kZQoJaW50ZXJydXB0IHRhYmxlIGNhbiBleGlzdCBldmVuIHdoZW4gbG93IERPUyBtZW1vcnkgaXNuJ3QgbWFwcGVkLAoJYW5kIGlzIGNvcGllZCBkb3duIGFsb25nIHdpdGggdGhlIEJJT1MgYXJlYSB3aGVuZXZlciBpdCBpcyBtYXBwZWQuCglBZGRlZCBET1NNRU1fU3lzdGVtQmFzZSgpIHdoaWNoIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2aXJ0dWFsCglyZWFsLW1vZGUgaW50ZXJydXB0IHRhYmxlIGFuZCBCSU9TIGRhdGEgc2VnbWVudC4KCUFsbG93ZWQgRE9TTUVNX0luaXQoVFJVRSkgdG8gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgoKMjAwMC0xMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbjoKCVN0YXJ0IHVzaW5nIGltcG9ydCB0YWJsZXMgZm9yIGRsbHMgdGhhdCBjYW4gYWxyZWFkeSBzdXBwb3J0IGl0LgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywgaWYxNjMyL3JlbGF5LmMsIGxvYWRlci90YXNrLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJUmFpc2UgYW4gZXhjZXB0aW9uIGZvciB1bmltcGxlbWVudGVkIDE2LWJpdCBlbnRyeSBwb2ludHMgdG9vLgoJQWRkZWQgY2hlY2sgZm9yIGR1cGxpY2F0ZSBuYW1lcyBpbiAxNi1iaXQgc3BlYyBmaWxlcy4KCgkqIHdpbjMyL2V4Y2VwdC5jLCB3aW5lZGVmYXVsdC5yZWc6CglUaGUgZGVidWdnZXIgIkF1dG8iIHJlZ2lzdHJ5IHZhbHVlIHNob3VsZCBiZSBhIHN0cmluZy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIHdpbmUuaW5pOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0aGUgRGVza3RvcD1YWFh4WVlZIHNldHRpbmcgaW4gdGhlIFt4MTFkcnZdIHNlY3Rpb24gb2YgdGhlCgljb25maWcgZmlsZS4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIHVzZSBvZiBXaW5kb3dzIHN0cnVjdHVyZSBmb3IgQ09GRiBpbmZvLgoJRml4ZWQgYSBmZXcgaXNzdWVzIGluIENPRkYgbG9hZGluZy4KCUNsZWFuZWQgdXAgdGhlIGNvZGUuCgoJKiB0b29scy9jMm1hbi5wbDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIEFQSXMgdGhhdCBkb24ndCBoYXZlIGFueSBvcmRpbmFsIChvcmRpbmFsPUApLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCU1hZGUgV0lOU1BPT0xfR2V0UHJpbnRlckRyaXZlciB3b3JrIGFnYWluLgoKMjAwMC0xMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb250cm9scy9idXR0b24uYywgc2VydmVyL3JlcXVlc3QuYywgdG9vbHMvYmluMnJlcy5jLCB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dtYy9sYW5nLmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglHZXQgcmlkIG9mIHNvbWUgd2FybmluZ3MgYWJvdXQgdW51c2VkIHZhcmlhYmxlcywgc2lnbmVkL3Vuc2lnbmVkCgljb21wYXJpc29ucyBhbmQgaW5jb21wbGV0ZSBpbml0aWFsaXphdGlvbnMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5nZGkuaCwgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY18yODYwMC5jLCB1bmljb2RlL2NfMjg2MDMuYywgdW5pY29kZS9jXzI4NjA0LmMsIHVuaWNvZGUvY18yODYwNS5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL2NwdGFibGUuYzoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQWRkIG5ldyBlbmNvZGluZ3MgSVNPIDg4NTktMTAgKGNwMjg2MDApLCA4ODU5LTEzIChjcDI4NjAzKSwgODg1OS0xNCAoY3AyODYwNCksCgk4ODU5LTE1IChjcDI4NjA1KS4gQWRkIExpdGh1YW5pYW4gKEJhbHRpYykga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFdNX1BBSU5UIGluIEFOSU1BVEVfV2luZG93UHJvYzsgY2FsbCBEZWZXaW5kb3dQcm9jQSBmb3IgZGVmYXVsdCBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhbm90aGVyIGRldGVjdGlvbiBvZiBzdHJlbmd0aC1yZWR1Y2UgYnVnIGluIEdDQy4KCjIwMDAtMTEtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci93aW52ZXIuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uc3BlYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW46CglCdWlsZCBtb3N0IHByb2dyYW1zIGFzIC5zbyBmaWxlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglBZGRlZCBNYWtlcHJvZy5ydWxlcy5pbiBjb250YWluaW5nIHJ1bGVzIGZvciBidWlsZGluZyBXaW5lbGliCglwcm9ncmFtcy4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXNlIHZhcmlhYmxlIGFyZ3VtZW50IG1hY3JvcyB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugd2luZWxhdW5jaGVyIHNtYXJ0ZXIgYWJvdXQgZmluZGluZyB0aGUgV2luZSBsaWJyYXJpZXMgYW5kCgliaW5hcmllcy4gIENoYW5nZSB0aGUgY29sb3Igc2NoZW1lLiAgSGFuZGxlIGxhdW5jaGVzIHdpdGggbm8KCWFyZ3VtZW50cywgY29ycmVjdGx5IGhhbmRsZSBpbnZvY2F0aW9uIGFzIGEgbWltZS10eXBlIGhhbmRsZXIgZnJvbQoJS0RFLgoKCSogbWVtb3J5L2hlYXAuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvc3FsZXh0LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBEVU1NWXh4eE5BTUUgZm9yIGFub255bW91cyBzdHJ1Y3QvdW5pb25zLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIHBvaW50ZXIgdHlwZXM6IFB4eHggb3IgTFB4eHgKCUZpeGVkIHRoZSBkZWZpbml0aW9uIG9mIEZPTlRFTlVNUFJPQwoJRml4ZWQgdHlwbzogVEFfUlRMRUFESU5HIGlzIGluIGZhY3QgVEFfUlRMUkVBRElORyAocmlnaHQgdG8gbGVmdAoJcmVhZGluZyBJIGJlbGlldmUpCglBZGRlZCBtaXNzaW5nIGRlZmluaXRpb25zOiBQQ19UUkFQRVpPSUQKCVVzZSBEVU1NWXh4eE5BTUUgZm9yIGFub255bW91cyBzdHJ1Y3QvdW5pb25zIGluIERFVk1PREUKCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgU1ROX3h4eCBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUhJQ09OIGFuZCBIQ1VSU09SIHNob3VsZCBiZSBpbnRlcmNoYW5nZWFibGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgTFBVREFDQ0VMIGFuZCBIREZfUlRMUkVBRElORy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGluY2x1ZGUgc3RhdGVtZW50cyBvZiBub3QtZm91bmQgZmlsZXMgdG8gbG93ZXIgY2FzZSBieQoJZGVmYXVsdAoJQWRkZWQgLS1uby1sb3dlci1pbmNsdWRlIG9wdGlvbiB0byBvdmVycmlkZSB0aGUgYWJvdmUKCUJlYXV0aWZpZWQgdGhlIGludGVyYWN0aXZlIG1vZGUgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGZvbGxvdwoJSW50ZXJhY3RpdmUgbW9kZTogc3VwcG9ydCB0aGUgLS1tZmMgYW5kIC0td3JhcCBvcHRpb25zIGZvciBib3RoCglwcm9qZWN0cyBhbmQgdGFyZ2V0cwoJRml4ZWQgdGhlIG1mYy93cmFwIHByb3BhZ2F0aW9uIGJldHdlZW4gcHJvamVjdCBhbmQgdGFyZ2V0cyAoZ29lcyBib3RoCgl3YXlzKQoJQXV0b2RldGVjdCBNRkMgYmFzZWQgcHJvamVjdHMgYnkgbG9va2luZyBmb3IgYW4gJ3N0ZGFmeC4oY3BwfGgpJyBmaWxlCglEb24ndCBwdXQgdGhlIHN0ZGFmeC5jcHAgZmlsZSBpbiB0aGUgbGlzdCBvZiBmaWxlcyB0byBjb21waWxlIChpdCdzCglqdXN0IHRoZXJlIGZvciBwcmUtY29tcGlsZWQgaGVhZGVycywgeXVrKQoJRml4ZWQgTERfTElCUkFSWV9QQVRIIHdoZW4gbGlua2luZyBhbiBhcHBsaWNhdGlvbiB3aXRoIGEgbGlicmFyeSBmcm9tCgl0aGUgc2FtZSBtYWtlZmlsZQoJRG9uJ3QgZm9yZ2V0ICdleHRyYScgc291cmNlcyB3aGVuIGxvb2tpbmcgZm9yIGEgZmlsZSBmb3IgY29uZmlndXJlLmluCglSZW5hbWVkIHRoZSAnLS1uby1tYWtlZmlsZScgb3B0aW9uIHRvICctbm8tZ2VuZXJhdGVkLWZpbGUnCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVtYWtlci5tYW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnQgdGhlIC0tbG93ZXItaW5jbHVkZSBvcHRpb25zLgoJRG9jdW1lbnQgdGhlIC0tbm8tZ2VuZXJhdGVkLWZpbGVzIG9wdGlvbnMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBSZXBhaXJlZCByZWxheSBkZWJ1Z2dpbmcuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglXZSBkbyBub3QgbmVlZCB0byBzZXQgU09WRVJTSU9OIGZvciBkbGxzLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9leHBhbmQuc3BlYywgbGlidGVzdC9oZWxsby5zcGVjLCBsaWJ0ZXN0L2hlbGxvMi5zcGVjLCBsaWJ0ZXN0L2hlbGxvMy5zcGVjLCBsaWJ0ZXN0L2hlbGxvNC5jLCBsaWJ0ZXN0L2hlbGxvNC5zcGVjLCBsaWJ0ZXN0L2hlbGxvNS5zcGVjLCBsaWJ0ZXN0L25ldy5zcGVjLCBsaWJ0ZXN0L3JvbGV4LnNwZWMsIGxpYnRlc3QvdmFydGVzdC5jLCBsaWJ0ZXN0L3ZhcnRlc3Quc3BlYywgbGlidGVzdC92b2xpbmZvLnNwZWM6CglCdWlsZCB0ZXN0IHByb2dyYW1zIGFzIC5zbyBmaWxlcy4gQWRkZWQgbWlzc2luZyBpbXBvcnRzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sb2FkZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgYSBXaW5lbGliIGFwcCBsaW5rZWQgYXMgYSAuc28gZnJvbSB0aGUgd2luZQoJbGF1bmNoZXIsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBhcmd2WzBdLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbjoKCURvbid0IGxpbmsgbGlid2luZV91bmljb2RlIGludG8gYWxsIGRsbHMuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5oLCBwcm9ncmFtcy9jbG9jay9saWNlbnNlLmMsIHByb2dyYW1zL2Nsb2NrL2xpY2Vuc2UuaCwgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5oLCBwcm9ncmFtcy9ub3RlcGFkL2xpY2Vuc2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9saWNlbnNlLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglGaXhlZCBsYW5ndWFnZSBoYW5kbGluZy4gUmVtb3ZlZCBzb21lIGRlcGVuZGVuY2llcyBvbiBXaW5lIGludGVybmFscy4KCgkqIHdpbmUuaW5pOiBBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIGV4cGxhbmF0aW9uIGZvciB0aGUgZGlyZWN0b3J5IHN5bWxpbmsgc3R1ZmYuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQ29ycmVjdGVkIHVzZWQgcmVnaXN0cnkga2V5LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgblNvY2tldEZEIHRvIElOVkFMSURfU09DS0VULgoKMjAwMC0xMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWMsIHByb2dyYW1zL3ZpZXcvdmlldy5zcGVjLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2luZW1pbmUvd2luZW1pbmUuc3BlYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHByb2dyYW1zL3dpbnZlci93aW52ZXIuc3BlYywgZGVidWdnZXIvd2luZWRiZy5zcGVjLCBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLnNwZWMsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5zcGVjOgoJQWRkZWQgc29tZSBtaXNzaW5nIGltcG9ydHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgc3VwcG9ydCBpbiB3aW5lYnVpbGQgZm9yIHJlc29sdmluZyBmdW5jdGlvbiBpbXBvcnRzICgtc3ltIG9wdGlvbikuCglBZGRlZCAtTCBvcHRpb24gZm9yIGxvY2F0aW5nIGltcG9ydGVkIGRsbHMuCglDaGFuZ2VkIGdlbmVyYXRlZCBleGUgaW5pdCBjb2RlIHRvIHVzZSBfX3dpbmVfZ2V0X21haW5fYXJncy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgbWlzYy9vcHRpb25zLmM6CglBZGRlZCBfX3dpbmVfZ2V0X21haW5fYXJncyB0byByZXRyaWV2ZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0aGUKCWFwcGxpY2F0aW9uLgoKCSogbG9hZGVyL2VsZmRsbC5jOgoJRG9uJ3Qgc3RyaXAgdGhlIGxpYnJhcnkgZXh0ZW5zaW9uIGlmIGl0J3Mgbm90ICIuZGxsIi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRml4ZWQgTmV0QlNEIGRsbCBjaGVjay4KCUFkZGVkIGNoZWNrIGZvciAtQnN5bWJvbGljLgoJRml4ZWQgTERTSEFSRUQgZGVmaW5pdGlvbiB0byBzdXBwb3J0IHVuZGVmaW5lZCBTT05BTUUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGVhZGVyIGNvbnRyb2wgY3Vyc29ycyBhbmQgZHJhZyBsaXN0IGFycm93IGljb24uCgoJKiBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfRW4ucmMsIGRsbHMvd2luZXBzL3dwc19SdS5yYywgZGxscy93aW5lcHMvd3BzX1NrLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBSdXNzaWFuIHJlc291cmNlcyB0byB0aGUgUG9zdHNjcmlwdCBkcml2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglNYWtlIGEgY29weSBvZiB0aGUgZGlhbG9nIHJlc291cmNlIGJlZm9yZSBjb3JyZWN0aW5nIHN0eWxlcy4KCjIwMDAtMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xvYWRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJRG8gYnVpbHRpbiBtb2R1bGVzIGZpeHVwcyBpbiBsaWJyYXJ5L2xvYWRlci5jIGJlZm9yZSBjYWxsaW5nIHRoZQoJbG9hZF9kbGwgY2FsbGJhY2suCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL3BhbGV0dGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvY29tbS5jOgoJQ2hlY2sgYWxsIENhbGxvdXRzIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBOVUxMIGJlZm9yZSB1c2luZyB0aGVtLgoJRG9uJ3QgbG9hZCBVU0VSIGRsbCBpZiBub3QgbmVlZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC9tZW1vcnkuYywgZGxscy9jcnRkbGwvc3Bhd24uYywgZGxscy9jcnRkbGwvc3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3RpbWUuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gSW1wbGVtZW50ZWQgNzMgQ1JUIGZ1bmN0aW9ucwoJLSBSZWltcGxlbWVudGVkIGZpbGUgSS9PIHVzaW5nIFdpbjMyIGNhbGxzCgktIFNldCBlcnJuby9kb3NlcnJubyBpbiBtb3N0IGNhbGxzCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBtaXNzaW5nICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+IGFuZCAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPi4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCUFkZGVkIG1pZGRsZSBtb3VzZSBidXR0b24gaGFuZGxpbmcuCgoJKiBkbGxzL3VzZXIvLmN2c2lnbm9yZTogUmVtb3ZlZCAucyBmaWxlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjZGNlLmgsIGluY2x1ZGUvcnBjZGNlcC5oLCBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHRoaW5ncyB0byB0aGUgcHJvcGVyIHJwY3h4eC5oIGhlYWRlci4KCUFkZGVkIHNvbWUgdHlwZSBkZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBNRkMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG11c3QgaW5jbHVkZSB3aW5kZWYuaCBiZWZvcmUgd3R5cGVzLmggKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRE1fUkVQT1NJVElPTi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG11c3QgaW5jbHVkZSBzdGRhcmcuaC4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgZXhjZXB0aW9uIHJlbGF0ZWQgdHlwZXMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBpbmNsdWRlIGN0eXBlLmggc28gdGhhdCBhcHBsaWNhdGlvbnMgZ2V0IGlzYWxudW0gJiBjby4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENDX1NPTElEQ09MT1IgYW5kIENDX0FOWUNPTE9SLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9kZWJ1Zy5jLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTW92ZWQgYnVpbHRpbiBkbGwgcmVnaXN0cmF0aW9uIHRvIGxpYndpbmUuCglDaGFuZ2VkIHByb2Nlc3MgaW5pdGlhbGl6YXRpb24gdG8gbm90IGxvYWQgaW1wb3J0ZWQgZGxscyB0b28gZWFybHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgVktfUFJJT1IgYW5kIFZLX05FWFQgcHJvY2Vzc2luZyAobWVyZ2VkIGZyb20gQ29yZWwgdHJlZSkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRvVW5pY29kZTogaWdub3JlIENUUkwrbnVtYmVyIGtleXN0cm9rZXMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9vcHRpb25zLmM6CglBZGRlZCBuZXcgbGlicmFyeS5oIGhlYWRlciBmb3IgbGlid2luZSBkZWZpbml0aW9ucy4KCUFkZGVkIGdldHBhZ2VzaXplKCkgYW5kIHdpbmVfYW5vbl9tbWFwKCkgcG9ydGFiaWxpdHkgZnVuY3Rpb25zLgoKMjAwMC0xMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglwdGhyZWFkX2F0Zm9yazogZG9uJ3QgY2FsbCBjcml0aWNhbCBzZWN0aW9uIGZ1bmN0aW9ucyBiZWZvcmUKCWluaXRpYWxpemF0aW9uIGlzIGRvbmUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgMC8tMSBtaXh1cCBmb3IgaW5kaWNhdGluZyBubyBtYXBwaW5nIGhhbmRsZS4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYywgaW5jbHVkZS90Y2hhci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0eXBvcyBpbiBjb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdG9vbGJhciBjdXN0b21pemF0aW9uIGRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIG5ldyBtZXNzYWdlcy4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIFRha2UgT01BUCByZWNvcmRzIGludG8gYWNjb3VudCB0byBjb3JyZWN0IHN5bWJvbCBhZGRyZXNzZXMuCgktIFVuZGVyc3RhbmQgQ29kZVZpZXcgZGF0YSBlbWJlZGRlZCBpbiB0aGUgUEUgZmlsZSBpdHNlbGYuCgktIFVuZGVyc3RhbmQgTkIxMSBzaWduYXR1cmUgQ29kZVZpZXcgZGF0YS4KCS0gTm8gbW9yZSBib2d1cyAndGltZXN0YW1wIG1pc21hdGNoJyBlcnJvcnMuCgktIEdlbmVyYWwgY2xlYW51cCAvIHJlbW92YWwgb2YgZHVwbGljYXRlIGNvZGUuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgSU1BR0VfREVCVUdfTUlTQyBkZWZpbml0aW9uLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU2VuZCB0aGUgbG9jYWwgaXAgYWRkcmVzcyB3aXRoIHRoZSBQT1JUIGNvbW1hbmQgYW5kIG5vdCB0aGF0IG9mIHRoZQoJc2VydmVyLgoJRml4IGhhbmRsaW5nIG9mIG11bHRpLWxpbmUgcmVzcG9uc2VzLgoJUmVhZCBhIHJlc3BvbnNlIGFmdGVyIHRoZSBTVE9SIGNvbW1hbmQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIFJlZHJhd0l0ZW1zIG1lc3NhZ2UgZm9yIGEgbGlzdHZpZXcuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTmV3IHBhdGggZm9yIEFGTSBkb2N1bWVudGF0aW9uIG9uIHRoZSBuZXQuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBpbmNsdWRlIHBhdGggaGFuZGxpbmcgaW4gZ2V0X3JlYWxfaW5jbHVkZV9uYW1lCglNb2RpZmllZCBnZXRfcmVhbF9pbmNsdWRlX25hbWUgc28gdGhhdCBpdCBjYW4gZm9sbG93IGFuIGluY2x1ZGUgcGF0aAoJc3RhcnRpbmcgd2l0aCAkKFRPUFNSQ0RJUikKCUluZGVudCB0aGUgZGVidWcgbWVzc2FnZXMgYSBiaXQgbW9yZSBzbyB0aGF0IHdpbmVtYWtlcidzIGlzIHN0aWxsCglyZWFkYWJsZSB3aGVuIHRoZXkgYXJlIG9uCglUaGUgQVRMX0lOQ0xVREVfUk9PVCB2YXJpYWJsZSB3YXMgc2V0IHdyb25nIChjb25maWd1cmUuaW4pCglUaGUgTUZDIGluY2x1ZGUgcGF0aCBtdXN0IGNvbnRhaW4gdGhlIHBhdGggdG8gdGhlIEFUTCBoZWFkZXJzCgkoY29uZmlndXJlLmluKQoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIERyYXdGb2N1c1JlY3QgdG8gZHJhdyB0aGUgZm9jdXMgcmVjdGFuZ2xlLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBmb3J0aWZ5IEFTUEkgL3Byb2MgZmlsZSBwYXJzaW5nIChTQ1NJX2dldHByb2NlbnRyeSgpKSBhZ2FpbnN0CgkgIENELVJPTSBkcml2ZXMgdGhhdCBhcmUgZG9pbmcgbWFkIHRoaW5ncyB3aXRoIHNwYWNlcwoJLSBhZGQgRVJSKClzIGluIGNhc2Ugb2YgcGFyc2luZyBwcm9ibGVtcwoKCSogaW5jbHVkZS9iaXRtYXBzL3dpbmVfc21hbGwueHBtOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIDE2eDE2IHdpbmUgbG9nby4KCjIwMDAtMTEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWM6CglSZW1vdmVkIFNVQkRJUlMgaW4gd2lubW0gTWFrZWZpbGUuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zZXR1cGFwaS5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3R1YnMgYW5kIHNldHVwYXBpLmguCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ0JFTV9TRVRJVEVNVyBkb25lIGJ5IGV4YW1wbGUgZnJvbSBTRVRJVEVNQSwgY29udmVydGVkIFNFVElURU1BIHRvIHVzZQoJaXQuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmVtYWtlci5tYW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2luZW1ha2VyJ3MgbWFuIHBhZ2UgaW5pdGlhbCByZWxlYXNlLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZWRlcC5jLCB0b29scy93bWMvTWFrZWZpbGUuaW46CglCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIGluY2x1ZGUgZmlsZSBpcyBub3QgZm91bmQgYnkgbWFrZWRlcC4KCUFkZGVkIHN1cHBvcnQgZm9yIC5tYyBleHRlbnNpb24uCglEbyBub3QgdHJ5IHRvIG9wZW4gKi50YWIuaCBhbmQgKi5tYy5yYyBpbmNsdWRlIGZpbGVzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOgoJQWRkZWQgbWlzc2luZyBkZXBlbmRlbmN5IGZvciAxNi1iaXQgcmVzb3VyY2UgZmlsZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsLnJjLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy8uY3ZzaWdub3JlOgoJVXNlIC5tYy5yYyBleHRlbnNpb24gZm9yIHJjIGZpbGVzIGdlbmVyYXRlZCBieSB0aGUgbWVzc2FnZSBjb21waWxlci4KCgkqIGxvYWRlci9lbGYuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJR2V0IEVMRl9Mb2FkTGlicmFyeUV4QSBiYWNrIGludG8gYSB3b3JraW5nIHN0YXRlLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUVuYWJsZSB0aGUgZnVuY3Rpb25zIEFkZFByaW50ZXJXLCBXSU5TUE9PTF9HZXRQcmludGVyRHJpdmVyLAoJQWRkUHJpbnRlckRyaXZlckEsIFdJTlNQT09MX0VudW1QcmludGVyRHJpdmVycyB0byBkaXN0aW5ndWlzaCB0aGUKCXJlZ2lzdHJ5IGVudHJ5cyBvZiBXaW45WzU4XSBhbmQgV2luTlQgcHJpbnRlciBkcml2ZXJzLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUYWtlIGludG8gYWNjb3VudCB0aGUgc3Vua2VuIGJvcmRlciBmb3IgV2luOTggbG9vay4KCUxlYXZlIGEgMSBwaXhlbCBnYXAgdG8gdGhlIGxlZnQgb2YgbWVudSBiaXRtYXAgaXRlbXMgZm9yIHN5bWV0cnkgKGFuZAoJYmVjYXVzZSBXaW45eCBkb2VzIGl0KS4KCUxlYXZlIGEgMSBwaXhlbCBnYXAgYWJvdmUgbWVudSBiYXIgaXRlbXMgZm9yIHN5bWV0cnkgKGFuZCBiZWNhdXNlCglXaW45eCBkb2VzIGl0KS4KCjIwMDAtMTEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2RpbnB1dC5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlb3JnYW5pemVkIERJbnB1dCBETEwKCS0gYWRkZWQgc3R1YmJpbmcgZm9yIERJbnB1dCA3YQoJLSAnZml4ZWQnIHRoZSBtb3VzZSBwcm9ibGVtIGluIEZhbGxvdXQKCgkqIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oLCBkbGxzL29sZTMyL29sZTMycmVzLnJjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRG5EIGN1cnNvcnMgYXMgb2xlMzIgcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9zcHkuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvc3B5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIHNlZSBuYW1lcyBvZiB0aGUgdmlydHVhbCBrZXkgY29kZXMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHdpbmVsYXVuY2hlciBzaGVsbCBzY3JpcHQgd2hpY2ggbWFrZXMgdGhlIHByb2Nlc3Mgb2YgcnVubmluZwoJV2luZSBhIGxpdHRsZSBuaWNlciBmb3IgYW4gZW5kIHVzZXIuICBUaGUgaW50ZW50IG9mIHdpbmVsYXVuY2hlciBpcyB0bwoJYmUgdXNlZCBpbnNpZGUgb2YgYSBkaXN0cmlidXRpb24gcGFja2FnZS4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTmV3IHNjcmlwdCBmb3IgcG9ydGluZyBXaW5kb3dzIHNvdXJjZSBjb2RlIHRvIFdpbmVMaWIuCgoJKiBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYywgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5kcnYuc3BlYywgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3MuZHJ2LnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5kcnYuc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCURlY2xhcmUgZGVidWcgY2hhbm5lbHMgaW4gYWxsIGRsbHMgdGhhdCBuZWVkIHRoZW07IGFkZGVkIGltcG9ydHMgb2YKCW50ZGxsIHdoZXJlIG5lY2Vzc2FyeS4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL21haW4uaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9kZWJ1Zy5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2RlYnVnc3RyLmMsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvZmluZF9kZWJ1Z19jaGFubmVscywgdG9vbHMvbWFrZV9kZWJ1ZzoKCU5ldyBkZWJ1ZyBjaGFubmVsIG1lY2hhbmlzbSBhbGxvd2luZyBkZWNlbnRyYWxpemVkIGNoYW5uZWwKCWRlY2xhcmF0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIGRlYnVnX2NoYW5uZWxzIHN1cHBvcnQuCgoJKiBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9tZXRhZmlsZWRydi5oLCBncmFwaGljcy9wYWludGluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglPcHRpbWl6ZWQgeyxwfU1vdmVUb3ssRXh9eywxNn0uCgoJKiB3aW5kb3dzL2RjZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgd2UgaGF2ZSBhbiBFUlIgcmF0aGVyIHRoYW4gYSBXQVJOLgoKCSogbXNkb3MvZG9zbWVtLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIG1pc3NpbmcgI2luY2x1ZGUgPHN5cy90eXBlcy5oPi4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGb3J3YXJkIENCRU1fU0VURVhTVFlMRSB0byBDQkVNX1NFVEVYVEVOREVEU1RZTEUsIHBhc3MgV01fU0VUVEVYVCBhbmQKCVdNX0dFVFRFWFQgZG93biB0byBjb21ibyBib3guCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFudXAgU3lzdGVtUGFyYW1ldGVyc0luZm88MTZ8QXxXPi4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCByZXNldCBNRl9QT1BVUCBmbGFnIGluIFNldE1lbnUoKS4KCgkqIHdpbmRvd3MvcXVldWUuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglGaXggdGVzdCBmb3IgcGVuZGluZyBtZXNzYWdlIGluIFFVRVVFX1JlY2VpdmVNZXNzYWdlKCkuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2NvbG9yLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3RleHQuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9icnVzaC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcGVuLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJQWxsb2NhdGUgREMgb2JqZWN0cyBvbiB0aGUgcHJvY2VzcyBoZWFwLCBhbmQgcmVtb3ZlZCBXSU5fRENfSU5GTwoJc3RydWN0dXJlIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEtlbiBDb2xlbWFuKS4KCjIwMDAtMTEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglSZW1vdmVkIGxlZnRvdmVyIGRlYnVnIG91dHB1dC4KCgkqIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZml4IGluZiBmaWxlIG9wZW4vY2xvc2UKCSAgLSBkbyBOT1QgcmV0dXJuIGhhbmRsZXMgYmFzZWQgb24gbGlzdCBvZmZzZXQKCSAgLSB3ZSBtaWdodCB3YW50IHRvIHVzZSBIRUFQX3N0cmR1cEEgaW5zdGVhZCBvZiBhc3NpZ25pbmcgc3RyaW5nIHBvaW50ZXJzLi4uCgktIGltcGxlbWVudCAobW9yZSBvciBsZXNzKSBHZW5Gb3JtU3RyV2l0aG91dFBsYWNlaG9sZGVycwoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVByb3RlY3QgdGhlIGJhY2tzbGFzaGVzIHdlIG1lYW4gdG8gaGF2ZSBzaG93IGZyb20gZ3JvZmYuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciBpbiBEUEEgaGFuZGxpbmcsIGFkZGVkIHNvbWUgd2FybmluZ3MuCgoJKiBmaWxlcy9maWxlLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXNlIGRlYnVnZ2luZyBBUEkgaW5zdGVhZCBvZiBvdXRwdXRpbmcgdG8gc3RkZXJyIGRpcmVjdGx5LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGRpdmlzaW9uIGJ5IHplcm8uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhc3MgdXAgV01fRFJBV0lURU0gbWVzc2FnZXMgdG8gcGFyZW50LgoKMjAwMC0xMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgaW5jbHVkZS9iaXRtYXBzL3dpbmUueHBtLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZXNoZWxsbGluaywgd2luZS5pbmk6CglDcmVhdGUgR25vbWUvS0RFIGRlc2t0b3AgYW5kIG1lbnUgZW50cmllcyBmcm9tIElTaGVsbExpbmsKCWludGVyZmFjZS4gQmFzZWQgb24gdGhlIHdvcmsgb2YgSmFtZXMgVGhvbXNvbiBhbmQgRHVzYW4gTGFja28uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVHJlZXZpZXcgaXRlbSBzb3J0aW5nIGNvdWxkIG1lc3MgdXAgdGhlIHZpc2libGVPcmRlciBvZiB0aGUgaXRlbXMuCgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZSBmb2N1cyByZWNhbGN1bGF0aW9uIG91dCBvZiB0aGUgd2luZG93IGRlc3Ryb3kgcmVjdXJzaW9uCglzbyB3ZSBkbyBub3Qgc2VuZCBXTV9TRVRGT0NVUyB0byBhbHJlYWR5IGRlc3Ryb3llZCB3aW5kb3dzLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgaW52ZXJ0ICJtYWdpYyIgYml0bWFwIG1lbnUgaXRlbXMuCgoJKiB0b29scy9maW5kX2RlYnVnX2NoYW5uZWxzOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHN1cmUgdG8gY2FyZWZ1bGx5IHF1b3RlIGZpbGUgbmFtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3dhcCBDYWxjVG9vbGJhciBhbmQgcGFpbnQgcmVjdGFuZ2xlIGNvbXB1dGF0aW9uIHRvIHRoZSBjb3JyZWN0IG9yZGVyLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJUGF1c2UgY29tbWFuZCBpbnRlcnByZXRlciB3aGlsZSBleGVjdXRpbmcgYSBjb25zb2xlLW1vZGUgYXBwLgoKMjAwMC0xMS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJRml4ZWQgU2VhcmNoUGF0aCB0byBoYW5kbGUgYSAnOyctc2VwYXJhdGVkIHBhdGggYXMgZmlyc3QgYXJndW1lbnQuCgoJKiBkbGxzL250ZGxsL250LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4oKSB0byBmaWxsIG91dCBhIHZhbGlkIFRPS0VOX0dST1VQIHdpdGgKCWFkbWluIHByaXZpbGVnZXMuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJhd0ljb25FeDogd2hlbiBmbGFncz0wIHVzZSBmbGFncz1ESV9OT1JNQUwgaW5zdGVhZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglFeHBvcnQgU0hHZXRTZXR0aW5ncyBieSBuYW1lLiBOZXcgc3R1YiBmb3Igc2hlbGwuNjguCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhdmUgSW50ZXJuZXQgRXhwbG9yZXIgMyBzaG93IGl0cyB0b29sYmFycyBieSBwYXNzaW5nIFJCX0dFVEJBTkRJTkZPCgl0byBSQl9HRVRCQU5ESU5GT0EuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBHRElTZWxlY3RQYWxldHRlMTYgaW5zdGVhZCBvZiBTZWxlY3RQYWxldHRlIGFuZAoJR0RJUmVhbGl6ZVBhbGV0dGUxNiBpbnN0ZWFkIG9mIFJlYWxpemVQYWxldHRlIGluIG9yZGVyIHRvIGdldCByaWQgb2YKCXBvc3NpYmxlIGRlYWRsb2Nrcy4KCgkqIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuaCwgd2luMzIvY29uc29sZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2MvY3B1LmMsIG1pc2MvZXJyb3IuYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy92Z2EuYywgbXNkb3MvdnhkLmMsIG9iamVjdHMvZGliLmMsIGNvbnRyb2xzL2VkaXQuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglWYXJpb3VzIHdhcm5pbmcgZml4ZXMuCgoJKiBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGluY2x1ZGUvcGF0aC5oOgoJTWFyayBEdWZvdXIgPG0uZHVmb3VyQHN0dWRlbnQudHVkZWxmdC5ubD4KCU1ha2UgdGhlIGZ1bmN0aW9ucyBQaWUsIENob3JkLCBSb3VuZFJlY3QsIEFuZ2xlQXJjLCBQb2x5RHJhdyBhbmQKCUVsbGlwc2Ugd29yayB3aXRoIGFuIG9wZW4gcGF0aC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBiaXRtYXAgbWVudSBpdGVtcyBsb29rIGxpa2UgaW4gd2luZG93cyB3aGVuIHNlbGVjdGVkLAoJaS5lLiBpbnZlcnRlZCBhbmQgaGlsaXRlZCAoaW4gV2luOTggbG9vaykuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hlY2sgZm9yIFNCX0NUTCBiZWZvcmUgZGlzcGxheWluZyBhIGNhcmV0LgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJRG8gbm90IHRydW5jYXRlIGhpZ2ggd29yZCBvZiBtZXNzYWdlIGlkLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luZS9vYmpfc2VydmljZXByb3ZpZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgaGFuZGxpbmcgb2YgY3VzdG9tIHRlbXBsYXRlcyBhbmQgaG9va3MuCglCdWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjYWxscyBvZiBUT09MQkFSX0NhbGNUb29sYmFyKCkgKHdoaWNoIHdvdWxkIGJlCglyZWNhbGN1bGF0ZWQgZHVlIHRvIEludmFsaWRhdGVSZWN0KCktPldNX1BBSU5UIGFueXdheSkuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglHYWJyaWVsIEdhcmNpYSA8R2FyY2lhR0BvcmlnZW5lcy5jb20uYXI+CglBZGRlZCBMYXRpbiBBbWVyaWNhbiBsYXlvdXQuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVN0dWJzIGZvciBVcmxNa1NldFNlc3Npb25PcHRpb24sIFNITFdBUElfMTMyLCBTSEdldEludmVyc2VDTUFQLgoJUmVkaXJlY3RlZCBmb3J3YXJkIG9mIHNobHdhcGkuNTQgdG8gZ2RpMzIuQ3JlYXRlSUNXLgoKMjAwMC0xMC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBQU19BTFRFUk5BVEUgcmF0aGVyIHRoYW4gUFNfRE9ULgoJVXNlIFJlY3RhbmdsZSB0byBkcmF3IGZvY3VzIHJlY3RhbmdsZXMuCgoJKiBvYmplY3RzL3Blbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbG93IHBlbnMgd2l0aCBzdHlsZXMgZ3JlYXRlciB0aGFuIFBTX0lOU0lERUZSQU1FIHRvIGJlIGNyZWF0ZWQgd2l0aAoJQ3JlYXRlUGVuSW5kaXJlY3QgYW5kIEV4dENyZWF0ZVBlbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9wZW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIHNpemVvZiBmb3IgbWFpbnRhaW5hYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUlnbm9yZSBSQkJTX0JSRUFLIHN0eWxlIG9uIGZpcnN0IGJhbmQuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCBhIGZldyBkZXZpY2UgY2FwcyB2YWx1ZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJX250X3BhcnNlX25rKCkgc2hvdWxkIG5vdCBjbG9zZSBrZXlzIHRoYXQgaXQgZG9lcyBub3Qgb3Blbi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNldCB0aGUgdGhpY2tuZXNzIG9mIHN0b2NrIHBlbnMgdG8gMCBzbyB0aGF0IHRoZXkgYXJlIG5vdCBzY2FsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgY2FuY2VscyBlZGl0aW5nIG9mIGEgbGlzdHZpZXcgbGFiZWwgaWYgdGhlIGxpc3R2aWV3IGlzCglzY3JvbGxlZC4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdGhlIHZhbHVlIG9mIHNvbWUgc3lzdGVtIGNvbG9ycy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIGF2b2lkaW5nIHN1YnRyYWN0aW9uIGZyb20gdW5zaWduZWQgemVyby4KCgkqIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19Tay5yYywgZGxscy93aW5tbS93aW5tbV9Tay5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmMsIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLCBwcm9ncmFtcy9jbG9jay9Tay5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9wcm9nbWFuL1NrLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvU2sucmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tay5yYzoKCVBldGVyIEl2YW55aSA8aXZhbnlpQGludGVybmV0LnNrPgoJQWRkZWQvdXBncmFkZWQgU2xvdmFrIG1lc3NhZ2VzLCBhbmQgU2xvdmFrIGFuZCBDemVjaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSGlkZSB0aGUgY2FyZXQgb25seSBvbiB0aGUgZmlyc3QgV01fS0VZRE9XTi4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgbW91c2UgVW5BY3F1aXJlIHRvIE5PVCB1bmFjcXVpcmUgaXQgb24gbXVsdGlwbGUgdW5hY3F1aXJlcy4KCUltcGxlbWVudGVkIERJUFJPUF9BWElTTU9ERSBmb3IgU3lzTW91c2VBSW1wbF9TZXRQcm9wZXJ0eS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJVW5kZXIgc29tZSBjb25kaXRpb25zIGl0cyBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBzaG93IHRoZQoJc2Nyb2xsYmFycy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURpc3BsYXkgYW4gRVJSIG9uIGVycm9ycyB3aGlsZSBpbml0aWFsaXppbmcgVVNFUi4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglSZXR1cm4gVElNRV9aT05FX0lEX1NUQU5EQVJEIGluIEdldFRpbWVab25lSW5mb3JtYXRpb24oKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgaXRlbUlEID0gLTEgKHNwZWNpYWwgZm9jdXMgcmVjdCBkcmF3KS4KCgkqIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4IGluc3VmZmljaWVudCByZWN0IHdpZHRoIHZhbHVlIGluIHJlc291cmNlIGZpbGUuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJTmVlZCB0byBnZXQgYW55IG91dHN0YW5kaW5nIGlucHV0IHByaW9yIHRvIHJldHVybmluZyBudW1iZXIuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU29tZSBidWdmaXhlcywgYW5vdGhlciBmdW5jdGlvbiBmb3IgcGFja2FnaW5nLCBhbmQgc29tZSB0ZXh0CglyZWZvcm1hdHRpbmcgZnJvbSBFcmljIE1hcnluaWFrLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJUmVtb3ZlZCBvYnNvbGV0ZSBUT09MU1VCRElSUyBkZXBlbmRlbmN5LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBtaXNjZW11L3dpbmUuc3BlYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWM6CglBZGRlZCBpbXBvcnQgb2YgbnRkbGwuCgoJKiB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB1bmljb2RlL01ha2VmaWxlLmluLCAuY3ZzaWdub3JlLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGxpYnJhcnkvLmN2c2lnbm9yZSwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9wb3J0LmMsIGxpYnJhcnkvd2luZXN0dWIuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wb3J0LmM6CglCdWlsZCBudGRsbCBhcyBhIHJlYWwgZGxsLCBpbmNsdWRpbmcgZXZlcnl0aGluZyB0aGF0IHdhcyBwcmV2aW91c2x5IGluCglsaWJ3aW5lLnNvLiBDcmVhdGVkIGEgbmV3IChtb3N0bHkgZW1wdHkpIGxpYndpbmUuc28gaW4gbGlicmFyeS8gc3ViZGlyLgoKMjAwMC0xMC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJREVCVUdfUHJvY2Vzc0RCR0ZpbGU6IHVzZSBhIHN0YWNrIHZhcmlhYmxlIGZvciB0aGUgZXh0cmFfaW5mby4KCgkqIHJlbGF5MzIvc25vb3AuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmgsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgbG9hZGVyL3Rhc2suYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCBhIGZldyBjb21waWxhdGlvbiB3YXJuaW5ncwoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaCwgc2VydmVyL2hhbmRsZS5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglNb3ZlIGlubGluZSBhbmQgc3RhdGljIHRvIHRoZSBiZWdpbm5pbmcgb2YgZGVjbGFyYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDT01CT0VYX0RyYXdJdGVtOiBjaGVjayByZXR1cm4gdmFsdWUgb2YgU2VuZE1lc3NhZ2VBKC4uLixDQl9HRVRJVEVNREFUQSwuLi4pCgoJKiB0b29scy93aW5lY29uZjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBhICctaW5pZmlsZScgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSB3aW5lLmluaSBmaWxlCgl1c2VkIGluIHRoZSBidWlsZGluZyBvZiB0aGUgbmV3IHdpbmUuaW5pIGZpbGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBlbmFibGUgbG9hZGluZyBvZiBwZGIgZmlsZXMgbmFtZWQgaW4gTkIxMCByZWNvcmRzIG9mIGEgZGJnIGZpbGUKCS0gZGlzYWJsZSB0aW1lc3RhbXAgY2hlY2sgZm9yIHBkYiBmaWxlcwoKCSogd2luMzIvZGV2aWNlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVF1aWV0ZW4gVnhEQ2FsbF9WTU0gb3V0cHV0LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCXdpbmVpbnN0YWxsIGltcHJvdmVtZW50cywgbW9zdGx5IGZvciB1c2FnZSBpbiBwYWNrYWdlIHBvc3RpbnN0YWxsCglzY3JpcHRzLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJUGF0Y2ggZmxhdCBjcyBvZiAxNi1iaXQgZW50cnkgcG9pbnRzIGlmIGN1cnJlbnQgJWNzIGlzIGRpZmZlcmVudCBmcm9tCgljb21waWxlZCB2YWx1ZSwgYW5kIHJldHJpZXZlIGZsYXQgZHMgZnJvbSBhIGdsb2JhbCB2YXJpYWJsZS4gVGhpcwoJc2hvdWxkIGF2b2lkIHByb2JsZW1zIHdpdGggd2luNGxpbiBrZXJuZWxzLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy93aW5wb3MuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGZpbGVzL2RpcmVjdG9yeS5jLCBpbmNsdWRlL250ZGRrLmgsIG1lbW9yeS9yZWdpc3RyeS5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCUFkZGVkIGJhc2ljIHdvcmtpbmcgc3R1YnMgb2YgbmV3IFdpbmRvd3MgMjAwMCBBUEkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9sb2NhbC5oLCBtZW1vcnkvbG9jYWwuYzoKCVJlbW92ZWQgdW51c2VkIExPQ0FMX0xvY2tTZWdwdHIuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglVc2UgR2V0U3RvY2tPYmplY3QoKSBpbnN0ZWFkIG9mIHRoZSBtYWdpYyBTVE9DS18qIGhhbmRsZXMuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURFQlVHX1Byb2Nlc3NEQkdGaWxlOiBhbGxvY2F0ZSBNU0NfREJHX0lORk8gYmVmb3JlIHdyaXRpbmcgdG8gbWVtYmVycwoJb2YgdGhhdCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUltcGxlbWVudCBTSEdGSV9FWEVUWVBFIGZ1bmN0aW9uIG9mIFNIR2V0RmlsZUluZm8uCgoJKiB3aW5kb3dzL3dpbmhlbHAuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwb3J0IGVycm9ycyBvbiBXaW5IZWxwKCkgZmFpbHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGltcHJvdmVkIHRyYWNlIGluZm9ybWF0aW9uCgktIGltcGxlbWVudGVkIENCX1NFVElURU1IRUlHSFQsIFdNX1dJTkRPV1BPU0NIQU5HSU5HLAoJICBXTV9NRUFTVVJFSVRFTSwgV01fRFJBV0lURU0KCS0gY2hhbmdlZCBDQkVNX0lOU0VSVElURU1BLCBDQkVNX1NFVElNQUdFTElTVCwKCSAgV01fQ1JFQVRFLCBXTV9ERVNUUk9ZCgktIGFib3ZlIGNoYW5nZXMgY29ycmVjdCB3aW5kb3cgcmVjdGFuZ2xlLCBkcmF3cyBpdGVtcywgYW5kIGNyZWF0ZXMKCSAgY29udHJvbCBjb3JyZWN0bHkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBjb3JyZWN0IHByb2Nlc3Npbmcgb2YgUkJCU19CUkVBSyBzdHlsZS4KCS0gaGFuZGxlIGNhc2VzIHdoZXJlIGN5Q2hpbGQgd2FzIHNldCB0byAtMSBieSBhcHBsLiAtIHVuZG9jdW1lbnRlZC4KCS0gcmVtb3ZlIHNwZWNpYWwgY29kZSBmb3IgQ29tYm9ib3hleCBwcm9ibGVtIChub3cgc29sdmVkKS4KCS0gZml4IHNvbWUgcGFpbnRpbmcgcHJvYmxlbXMKCjIwMDAtMTAtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgZHdUb3RhbFZpcnR1YWwuCglSZXR1cm4gYSBtb3JlIHBsYXVzaWJsZSB2YWx1ZSBmb3IgZHdBdmFpbFZpcnR1YWwuCgoJKiBtaXNjL2NwdS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJldHVybiBhIG1vcmUgcGxhdXNpYmxlIHZhbHVlIGZvciBNaW5pbXVtQXBwbGljYXRpb25BZGRyZXNzLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJRmVkZXJpY28gU2Nod2luZHQgPGZnc2NoQGNvcmUtc2RpLmNvbT4KCUZpeGVzIGZvciBPcGVuQlNELgoKCSogZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGVJdGVtTW9uaWtlciBtYXkgZ2V0IE5VTEwgYXMgc3pEZWxpbSwgc29tZSBjbGVhbnVwcy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIE9sZUxvYWRGcm9tU3RyZWFtOiBEZXJlZmVyZW5jZSBwcHZPYmogYW5kIGdldCBJUGVyc2lzdFN0cmVhbQoJaW5zdGVhZCBvZiBhY2Nlc3NpbmcgSVVua25vd24uCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdHViIGZvciBIdHRwU2VuZFJlcXVlc3RFeEEuCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gc2V0IHRoZSBpdGVtIGhlaWdodCBub3Qgb25seSBmb3IgdGhlIGxpc3Rib3gsIGJ1dCBhbHNvIGZvciB0aGUgdGV4dCBmaWVsZAoJLSBjZW50ZXIgdGV4dCB2ZXJ0aWNhbGx5CgktIGJlYXV0aWZ5IGNvbW1lbnRzCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglNYXR0aGV3IENsYXJrZSA8TWF0dGhld19DbGFya2VAbWluZGxpbmsuYmMuY2E+CglEb24ndCBhc3N1bWUgd2UgYXJlIGJ1aWxkaW5nIGluIHRoZSBzb3VyY2UgdHJlZSwgYnV0IGFsbG93IG1ha2UgdG8KCWxvY2F0ZSByZXNvdXJjZXMvZGlzcGxheS5yYyBhbmQgcmVzb3VyY2VzL21vdXNlLnJjIHZpYSBWUEFUSC4KCjIwMDAtMTAtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB3aW4zMi9leGNlcHQuYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGEgc3R1YiBlbnRyeSBwb2ludCBpcyBjYWxsZWQuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy9zdHJ1Y3QzMi5oOgoJUmVtb3ZlZCB1bnVzZWQgU1RSVUNUMzJfTkNDQUxDU0laRSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXNrIGFwcGxpY2F0aW9uIHRvIHJlaW5pdGlhbGl6ZSBpdHMgbWVudSBiZWZvcmUgcHJvY2Vzc2luZyBhbgoJYWNjZWxlcmF0b3Iga2V5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJIlN0YXJ0TWVudSIgLS0+ICJTdGFydCBNZW51IiwgIlN0YXJ0dXAiIC0tPiAiU3RhcnRVcCIuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglGaXhlZCB0eXBvIGR1ZSB0byBtZXJnZSBlcnJvci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCB0aGUgbG9hZCBwcm9jZXNzIHNvIHRoYXQgYWxsIHR5cGVsaWJzIChhbmQgbm90IGp1c3QgdGhlIGZpcnN0CglvbmUsIGFzIGl0IHVzZWQgdG8pIHN0b3JlZCBpbiBhIERMTCBjYW4gYmUgbG9hZGVkLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCU1hcmsgRHVmb3VyIDxtLmR1Zm91ckBzdHVkZW50LnR1ZGVsZnQubmw+CglJbXBsZW1lbnRlZCBQb2x5RHJhdygpIGFuZCBBbmdsZUFyYygpLgoKMjAwMC0xMC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMTAyNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0xMC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHdpbjMyL2V4Y2VwdC5jOgoJUmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gYSBzdHViIGVudHJ5IHBvaW50IGlzIGNhbGxlZC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3N0cnVjdDMyLmg6CglSZW1vdmVkIHVudXNlZCBTVFJVQ1QzMl9OQ0NBTENTSVpFIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBc2sgYXBwbGljYXRpb24gdG8gcmVpbml0aWFsaXplIGl0cyBtZW51IGJlZm9yZSBwcm9jZXNzaW5nIGFuCglhY2NlbGVyYXRvciBrZXkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CgkiU3RhcnRNZW51IiAtLT4gIlN0YXJ0IE1lbnUiLCAiU3RhcnR1cCIgLS0+ICJTdGFydFVwIi4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUZpeGVkIHR5cG8gZHVlIHRvIG1lcmdlIGVycm9yLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIHRoZSBsb2FkIHByb2Nlc3Mgc28gdGhhdCBhbGwgdHlwZWxpYnMgKGFuZCBub3QganVzdCB0aGUgZmlyc3QKCW9uZSwgYXMgaXQgdXNlZCB0bykgc3RvcmVkIGluIGEgRExMIGNhbiBiZSBsb2FkZWQuCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJTWFyayBEdWZvdXIgPG0uZHVmb3VyQHN0dWRlbnQudHVkZWxmdC5ubD4KCUltcGxlbWVudGVkIFBvbHlEcmF3KCkgYW5kIEFuZ2xlQXJjKCkuCgoyMDAwLTEwLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgYW4gYW5vdGhlciBzcGVjaWFsIGNhc2UgaGFuZGxpbmcgZm9yIFNoaWZ0K1tOdW1QYWRdREVMLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCUtyaXN0b2ZmZXIgR2xlZGl0c2NoIDx0b2ZmZXJAcGluZy51aW8ubm8+CglBZGRlZCBMREZMQUdTIHRvIGxpbmtpbmcgb2Ygd2luZS1yZWxhdGVkIGJpbmFyaWVzLgoKCSogZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZXBsYWNlZCBUb0FzY2lpIGJ5IFRvVW5pY29kZSBpbiB0aGUgVXNlciBkcml2ZXIgaW50ZXJmYWNlLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCVdpbGxpYW0gV2FnaG9ybiA8d3dhZ2hvcm5AbGl0YW55LmRlbW9uLmNvLnVrPgoJeGY4NnZtb2RlX3NldGRpc3BsYXltb2RlKCkgd2Fzbid0IHByb3Blcmx5IHNhdmluZyB0aGUgJ3ByaXZhdGUnIGZpZWxkCglvZiB0aGUgWEY4NlZpZE1vZGVNb2RlTGluZSBzdHJ1Y3R1cmUuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBvZiBibGlua2luZyB0aHVtYiBhcyBmb3VuZCBpbiBXaW5kb3dzIHNjcm9sbGJhci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCB0eXBlbGliIGxvYWRlci4gVHlwZWxpYiBjb250ZW50cyBjYW4gYmUgc3RvcmVkIGFzIG11bHRpYnl0ZQoJc3RyaW5ncy4gSG93ZXZlciwgdGhleSBhcmUgYWx3YXlzIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiBhcyBCU1RSLAoJZS5nLiBVTklDT0RFIHN0cmluZ3MuIEFsbCBzdHJpbmdzIGFyZSBub3cgc3RvcmVkIGFzIEJTVFIgaW5zdGVhZCBvZgoJQVNDSUkgc3RyaW5ncy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZyZWUgdGhlIFdpbjE2IGR1bW15IG1vZHVsZSBhbmQgd20tPmRlcHMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCU1hcmsgRHVmb3VyIDxtLmR1Zm91ckBzdHVkZW50LnR1ZGVsZnQubmw+CglYMTFEUlZfRHJhd0FyYzogc3dhcCB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgd2hlbiBkcmF3aW5nIGluCgljbG9ja3dpc2UgZGlyZWN0aW9uLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCUF2aWFkIFBpbmVsZXMgPHBhdmlhZEBuZXR2aXNpb24ubmV0LmlsPgoJQXZvaWQgaW5maW5pdGUgbG9vcCBpbiBDcmVhdGVSb3VuZFJlY3RSZ24oKS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci9yZXNvdXJjZXMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL2Rpc3BsYXkucmMxNiwgZGxscy91c2VyL3Jlc291cmNlcy9tb3VzZS5yYywgZGxscy91c2VyL3Jlc291cmNlcy9tb3VzZS5yYzE2LCBpZjE2MzIvYnVpbHRpbi5jLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgLnJlcyBmaWxlcyBmb3IgMTYtYml0IHJlc291cmNlcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIHN0cnVjdHVyZSBkZWZpbml0aW9uLgoKCSogdG9vbHMvd3JjL3dyaXRlcmVzLmM6CgkxNi1iaXQgcmVzb3VyY2Ugc2l6ZSBtdXN0IGJlIHNjYWxlZCBieSBhbGlnbm1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBUQ1NfVkVSVElDQUwgc3R5bGUuICBGaXggdGFiIGJvcmRlcnMgdG8gaGF2ZSBzaGFkaW5nIHRoYXQKCW1hdGNoZXMgV2luZG93cy4gIENlbnRlciBpbWFnZSBhbmQgdGV4dCBpbiB0YWJzLiAgU2l6ZSB0YWJzIHRvCgljb21wbGV0ZWx5IGZpbGwgZWFjaCByb3cgd2l0aCBtdWx0aWxpbmUgc3R5bGUuICBGaXggcG9zaXRpb25pbmcgb2YKCXRhYnMgZm9yIFRDU19CT1RUT00gc3R5bGUuICBGaXggdmFyaW91cyBkcmF3aW5nIGlzc3Vlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJLSBXaGVuIGluc2VydGluZyBhbiBpdGVtLCBkbyBub3QgaW52YWxpZGF0ZSB0aGUgYXJlYSBhYm92ZSB0aGUgbmV3CgkgIGl0ZW0uCgktIFRoZSBkZWJ1ZyBmdW5jdGlvbiB0aGF0IHZlcmlmaWVzIHRoZSB0cmVlIGFmdGVyIGVhY2ggaW5zZXJ0aW9uCgkgIHNob3VsZCBiZSBkaXNhYmxlZCBieSBkZWZhdWx0LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmVpbXBsZW1lbnQgcGF0Y2ggYnkgTWFyY3VzIE1laXNzbmVyICgnOTgpIHRvICJmaXgiIHByb2JsZW1zIHdpdGgKCURTQ0FQU19FTVVMRFJJVkVSIGZsYWcgZm9yIGdhbWVzIGxpa2UgUXVha2UgMiBhbmQgVW5yZWFsIFRvdXJuYW1lbnQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNmb3JtIGRldmljZSBvcGVuIGVycm9yIFRSQUNFKClzIGludG8gV0FSTigpOyBiZXR0ZXIgZXJyb3IgbXNncy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW4gU1dQX0RvTkNDYWxjU2l6ZSgpIHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgY2xpZW50IGFyZWEgaGFzCgltb3ZlZCwgdXNlIHRoZSBjbGllbnQgY29vcmRpbmF0ZXMgYXMgdGhleSBhcmU6IG5vdCByZWxhdGl2ZSB0byBpdHMKCXdpbmRvdyBjb29yZGluYXRlcy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFNQSV9HRVRXSU5ET1dTRVhURU5TSU9OLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGEgV0lORUxPQURFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGljaCBhbGxvd3MgdGhlCglzcGVjaWZpY2F0aW9uIG9mIGEgZGlmZmVyZW50IGJpbmFyeSBsb2FkZXIuCgoyMDAwLTEwLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglSZW1vdmVkIEdldFJlc0RpckVudHJ5QS9XLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCUltcGxlbWVudCBJbnRlcm5hbEV4dHJhY3RJY29uIGJ5IGNhbGxpbmcgUHJpdmF0ZUV4dHJhY3RJY29ucyBpbnN0ZWFkCglvZiBkdXBsaWNhdGluZyBhbGwgdGhlIGNvZGUuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUFkZGVkIGNvZGVwYWdlIHRyYW5zbGF0aW9uIGJhc2VkIG9uIHRoZSBsYW5ndWFnZSBpZCAoYmFzZWQgb24gYSBwYXRjaAoJYnkgSnVuaWNoaSBLdWNoaW5pc2hpIDxqa3VjaGlAbWFob3JvYmEubmUuanA+KS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0ZWQgbWVudSBzdHJpbmcgaGFuZGxpbmcgdG8gVW5pY29kZS4KCgkqIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBmb3J3YXJkIGZvciBXU0FSZXNldEV2ZW50LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvbnZlcnQgdGhlIHZhbHVlIG9mIGxldmVsIHdoZW4gc2V0c29ja29wdCBpcyBjYWxsZWQgd2l0aAoJV1NfU09fRE9OVExJTkdFUi4KCgkqIG1pc2Mvb3B0aW9ucy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy93aW5lcHMvaW5pdC5jLCBpZjE2MzIvdGh1bmsuYywgbG9hZGVyL3Rhc2suYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRXhwbGljaXRseSBpbml0aWFsaXplIHN0cnVjdHVyZXMuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBFeHBsaWNpdGx5IGluaXRpYWxpemUgc3RydWN0dXJlcy4KCS0gRml4ZWQgc3RyYW5nZSBjb2RlIHByb2JhYmx5IGNhdXNlZCBieSBhIG1lcmdlIGNvbmZsaWN0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIEFsbCBhdWRpbyBkZXZpY2UgaGFuZGxlcyBhcmUgaW5pdGlhbGl6ZWQgdG8gLTEgYW5kIHNldCB0byAtMSB3aGVuIGNsb3NlZC4KCS0gV0lORV9XTV9IRUFERVIgZXZlbnQgc2hvdWxkICpOT1QqIG1ha2UgdGhlIHJlY29yZGluZyB0aHJlYWQgc3RhcnQuIFRoZQoJICB0aHJlYWQgc2hvdWxkIG9ubHkgc3RhcnQgdGhyb3VnaCB3YXZlSW5TdGFydC4gVGhlIGFwcGxpY2F0aW9uIGNhbGxpbmcKCSAgd2F2ZUluQWRkQnVmZmVyIG1pZ2h0IG5vdCBiZSBpbiBhIHN0YXRlIHRvIHByb3ZpZGUgYW5vdGhlciBidWZmZXIgaW4KCSAgYSBwZXJpb2Qgb2YgdGltZSBzaG9ydCBlbm91Z2ggdG8gYXZvaWQgYnVmZmVyIHVuZGVycnVuIGluIHdpZFJlY29yZGVyCgkgIHRocmVhZC4KCS0gd2lkUmVjb3JkZXIgLSBpbXByb3ZlZCByb2J1c3RuZXNzIG9mIHdpZFJlY29yZGVyIHRvIGF2b2lkIHNvbWUgZGF0YQoJICBsb3NzIHRoYXQgb2NjdXJlZCB3aGVuIG5vdCByZWFkaW5nIG9uZSBmdWxsIGZyYWdtZW50IGZyb20gdGhlIE9TUwoJICBhdWRpbyBkcml2ZXIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9jZHJvbS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcyBmb3Igbm9uLUxpbnV4LgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJRml4ZWQgT0ZGU0VUT0YgbWFjcm8gZGVmaW5pdGlvbiBmb3IgZ2NjIDIuOTYuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBDcnlwdEdlblJhbmRvbSgpLCBDcnlwdFJlbGVhc2VDb250ZXh0KCkuCgoJKiBjb250cm9scy9jb21iby5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgYmxvY2sgQ0JOX0VESVRDSEFOR0UgZm9yIFdNX1BBU1RFIG9yIFdNX0NVVCB3aXRoIHRoZQoJTk9FRElUTk9USUZZIGZsYWcsIGFzIHRoZXNlIG1zZ3MgY2FuIGNvbWUgZGlyZWN0bHkgZnJvbSB0aGUgYXBwIHRvIHRoZQoJY29tYm8gd25kcHJvYy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBFbnVtRW5oTWV0YUZpbGUgd29yay4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFJwY1N0cmluZ0ZyZWVBIGFuZCBVdWlkVG9TdHJpbmdBLgoKMjAwMC0xMC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvdmlldy5zcGVjLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvd2luZW1pbmUuc3BlYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvbWFrZWRlcC5jLCBkbGxzL3VzZXIvcmVzb3VyY2VzLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgbGlidGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2hlbGxvMy5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjLCBNYWtlLnJ1bGVzLmluLCBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJQnVpbGQgV2luMzIgcmVzb3VyY2VzIGFzIC5yZXMgZmlsZXMgYW5kIGR1bXAgdGhlbSBpbnRvIHRoZSAuc3BlYy5jIGZpbGUuCgoJKiB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBXaW4zMiAucmVzIGZpbGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvdXNlci9kaXNwLnJjLCBkbGxzL3VzZXIvbW91c2VyYy5yYywgZGxscy91c2VyL3Jlc291cmNlcy9UT0RPLCBkbGxzL3VzZXIvcmVzb3VyY2VzL2Rpc3BsYXkucmMxNiwgZGxscy91c2VyL3Jlc291cmNlcy9tb3VzZS5yYzE2LCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQ2EucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0NzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGUucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VuLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRXMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZpLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Gci5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSHUucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0l0LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9KYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfS28ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05sLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Oby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUGwucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1B0LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9SdS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2sucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1N2LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9XYS5yYzoKCU1vdmVkIGFsbCBVU0VSIHJlc291cmNlcyB0byBuZXcgZGxscy91c2VyL3Jlc291cmNlcyBkaXJlY3RvcnkuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludmVyLmgsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3ZlcnNpb24vdmVyLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jOgoJRHVwbGljYXRlIHJlc291cmNlIGRpcmVjdG9yeSBzZWFyY2hpbmcgcm91dGluZXMgaW5zdGVhZCBvZiBjYWxsaW5nCglwZV9yZXNvdXJjZS5jIGludGVybmFsIGZ1bmN0aW9ucy4KCU1hZGUgR2V0RmlsZVJlc291cmNlMTYgYW5kIEdldEZpbGVSZXNvdXJjZVNpemUxNiBjYWxsYWJsZSBkaXJlY3RseQoJaW5zdGVhZCBvZiBkZWZpbmluZyBleHRyYSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jOgoJRHVwbGljYXRlIHJlc291cmNlIGRpcmVjdG9yeSBzZWFyY2hpbmcgcm91dGluZXMgaW5zdGVhZCBvZiBjYWxsaW5nCglwZV9yZXNvdXJjZS5jIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJRml4ZWQgZHVwbGljYXRpb24gb2YgdHlwZW5hbWUgaW4gMTYtYml0IGFzc2VtYmx5IG91dHB1dC4KCgkqIG1lbW9yeS9oZWFwLmM6CglGaXhlZCBtdWx0aWJ5dGUgaGFuZGxpbmcgaW4gSEVBUF9zdHJkdXBBdG9XLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGluY2x1ZGUvY2Ryb20uaCwgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgb3Blbi9jbG9zZSB0aGUgQ0QtUk9NIGRldmljZSBmb3IgZXZlcnkgV2luZG93cyBBUEkgQ0QtUk9NCglhY2Nlc3MuCgoJKiBjb250cm9scy9lZGl0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvIG5vdCBzZW5kIEVOX1VQREFURSB0byBtdWx0aS1saW5lIGVkaXQgY29udHJvbHMuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHRoZSB0ZXh0IGNvbG9yIG9mIGhpZ2xpZ2h0ZWQgbWVudSBiYXIgaXRlbSBmb3IgdGhlIFdpbjk4IGxvb2suCglDbGlja2luZyBvbiBhIHNlcGFyYXRvciBzaG91bGQgbm90IGNsb3NlIHRoZSBtZW51LgoJRG8gbm90IHJpZ2h0IGFsaWduICdiaXRtYXAnIGl0ZW1zIGFuZCB0aGUgaGVscCBtZW51IGZvciB0aGUgV2luOXggbG9vawoJYW5kIGZlZWxzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHdlIGhhdmUgYSBkcml2ZSBwb2ludGluZyB0byAvLCB3ZSBtdXN0IG5vdCByZW1vdmUgdGhlIGZpbmFsIC8gb3Igd2UKCWdldCB0aGUgY3VycmVudCBkaXJlY3RvcnkgZG91YmxlZC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgYmFzaWMgSURpcmVjdERyYXc3IGludGVyZmFjZSBzdXBwb3J0LCBmaXhlZCBhcmd1bWVudCBjb3VudAoJb2YgSURpcmVjdERyYXd7NCw3fV9TZXREaXNwbGF5TW9kZSBkZWZpbmVzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCS0gQ2FsY3VsYXRlIGNoYW5nZXMgaW4gdGhlIGNsaWVudCBhcmVhIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3cKCSAgaW5zdGVhZCBvZiBpdHMgcGFyZW50IHdoZW4gdXNpbmcgU1dQX0VYX1BBSU5UU0VMRi4KCS0gV2l0aCBTV1BfRVhfUEFJTlRTRUxGLCBjb3B5IG9ubHkgaWYgY2xpZW50IGFyZWEgY2hhbmdlZCwgc2luY2UgYQoJICB3aW5kb3cgY2FuJ3QgbW92ZSByZWxhdGl2ZSB0byBpdHNlbGYuCgktIEluIFNXUF9Eb05DQ2FsY1NpemUsIHdoZW4gZGV0ZXJtaW5pbmcgaWYgdGhlIGNsaWVudCBhcmVhCgkgIGNoYW5nZWQsIHVzZSB2YWx1ZXMgcmVsYXRpdmUgdG8gdGhlIHdpbmRvdyBpdHNlbGYsIG5vdCBpdHMgcGFyZW50LgoKCSogb2JqZWN0cy9yZWdpb24uYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBwYWludGluZyBwcm9ibGVtcyBpbiBub24tTU1fVEVYVCBtb2Rlcy4KCjIwMDAtMTAtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYywgbXNkb3MvZG9zY29uZi5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglSZWR1Y2UgdGhlIG51bWJlciBvZiB3YXJuaW5ncyBhYm91dCBtaXNzaW5nIGluaXRpYWxpemVycy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR290IHJpZCBvZiBtaXNsZWFkaW5nICJObyBUbHMgU3BhY2UiIGVycm9yIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZSBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVzZSBpbnRlcm1lZGlhdGUgdHlwZWRlZi4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L29sZTJkaXNwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3R5cGVsaWIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNhY20zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvc3B5LmMsIGluY2x1ZGUvc3B5Lmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgd1BhcmFtIGFuZCBsUGFyYW0gYXMgcGFyYW1ldGVycyBpbiBTUFlfRXhpdE1lc3NhZ2UKCUFkZGVkIGR1bXAgZm9yIHRoZSBTVFlMRUNIQU5HW0lOR3xFRF0gbWVzc2FnZXMuCglEdW1wIHN0cnVjdHVyZXMgb24gZXhpdCBvbmx5IGlmIG1lc3NhZ2UgYWxsb3dzIGNoYW5nZXMuCgoJKiB3aW4zMi9leGNlcHQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBQcmludCBDUyByZWcgYXQgY3Jhc2ggTWVzc2FnZUJveCAobmVlZGVkIGZvciBXaW4xNiBwcm9ncmFtcykuCgktIEFkZCAiaGludCIgZm9yIGRlYnVnZ2VyIHNldHVwLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWR2YXBpMzIgdG8gaW1wb3J0ZWQgRExMcyBsaXN0LgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbW9yZSBjb252ZXJzaW9uIHJvdXRpbmVzIChyYXRlIGNvbnZlcnNpb24gaXMgaW1wbGVtZW50ZWQpLgoJQ2xlYW5lZCB1cCB0aGUgY29kZS4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQREIgc3ltYm9sIGhlYWRlciBmb3JtYXQgZGVwZW5kcyBvbmx5IG9uIHZlcnNpb24gY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHNldCB0aGUgaVN1Ykl0ZW0gcGFydCBvZiB0aGUgc3RydWN0IGZvciBMVk1fSElUVEVTVCwKCWFwcGxpY2F0aW9ucyBvbmx5IG5lZWQgdG8gcGFzcyBtZW1vcnkgc3BhY2UgdXAgdG8gaUl0ZW0uCgoJKiBSRUFETUU6IEFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWVudGlvbiB0aGF0IHlvdSBuZWVkIHRoZSBYMTEgZGV2ZWwgZmlsZXMuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlyZWN0RHJhd0NyZWF0ZUV4KCkgc2hvdWxkIGFscmVhZHkgcmV0dXJuIHRoZSBpbnRlcmZhY2UgZm9yIHRoZQoJcGFzc2VkIHJlZmlpZC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoYW5nZSB0aGUgd2lkdGggLyBoZWlnaHQgcGFyYW1ldGVyIG9uIGEgU2V0RGlzcGxheU1vZGUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBidWcgd2hlbiBjaGFuZ2luZyBkcml2ZXMgaW4gMTYgYml0IHN0eWxlIGRpYWxvZyBmb3IgYSAzMiBiaXQgYXBwCgkrIG1pc2NlbGxhbmVvdXMgZml4ZXMuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB0d28gY2hlY2tzIGZvciBvdXQgb2YgcmFuZ2UgcG9pbnRlciBhY2Nlc3Nlcy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZsb2F0aW5nIHBvaW50IGRhdGEgcHJpbnRpbmcgYW5kIG1hZGUgYmFzaWMgdHlwZXMgcmVhZGluZyBtb3JlCglyb2J1c3QuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJSmFzb24gTWF3ZHNsZXkgPGphc29uQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBmbGlja2VyaW5nIHRoYXQgd2FzIG9jY3VycmluZyBpbiB0aGUgaW1hZ2UgbGlzdCBjb250cm9sCgl3aGVuIGl0IHJlcGFpbnRlZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzbGVlcCB0aW1lIGNhbGN1bGF0aW9uIGZvciB0aGUgd29kUGxheWVyIHRocmVhZC4KCUNoYW5nZWQgdGhlIHdvZFBsYXllciB0aHJlYWQgbWVzc2FnaW5nIHRvIHVzZSBpdHMgb3duIGZhc3QgMzAgZW50cmllcwoJcmluZyBidWZmZXIgbGlzdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHJlZHVuZGFudCB0aHJlYWQgcHJpb3JpdHkgZGVmaW5lcy4KCjIwMDAtMTAtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Byb2Nlc3MuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBjcnQvbXN2Y3J0IHRocmVhZCBwcm90b3R5cGVzLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGFzeW5jaHJvbm91cyByZWNvcmRpbmcgaW4gTUNJIGxheWVyLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIEFaRVJUWSBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTZXF1ZW5jZXIgZXJyb3IgbWVzc2FnZSBmaXguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglGaXggbWVzc2FnZXMgc2VudCB3aGVuIHJpZ2h0LWNsaWNraW5nIGluIGEgYmxhbmsgKG5vbi1pdGVtKSBhcmVhIG9mIGEKCWxpc3R2aWV3LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQYXNzIHRoZSBjb3JyZWN0IGhGaWxlIHRvIFBFX0NyZWF0ZU1vZHVsZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEcmF3IHRleHQgYW5kIGljb25zLCBpbXBsZW1lbnQgb3JkZXJpbmcgZnVuY3Rpb25zLCBhbGxvdyByZW9yZGVyaW5nCgl3aXRoIG1vdXNlIGFuZCBmaXggdGhlIFdNX05PVElGWSB0YXJnZXQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBBWkVSVFkga2V5Ym9hcmQgbGF5b3V0LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLmgsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jOgoJPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJQ2hhbmdlZCBHUk9VUCB0byBQUk9HR1JPVVAuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbm50Lmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNraXAgZGlyZWN0b3J5IHN5bWxpbmtzIGluIERPU0ZTX0ZpbmROZXh0RXguCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYzogQnJpYW4gUGlyaWUKCUFkZGVkIHN1cHBvcnQgZm9yIFBBU1NUSFJPVUdIIGFuZCBQT1NUU0NSSVBUX1BBU1NUSFJPVUdIIGVzY2FwZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmluZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZC9maXhlZCBtaXNzaW5nIGV4dGVybiAiQyIuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgY2hhci9OVUxMIGNvbXBhcmlzb24uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIHtIUkVTVUxULFNDT0RFfV9TRVZFUklUWSBtYWNyb3MuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJVXNlIGEgYmluYXJ5IHNlYXJjaCB0byBmaW5kIGVudHJpZXMgaW4gcmVzb3VyY2UgZGlyZWN0b3JpZXMuCglGaXhlZCBHZXRSZXNEaXJFbnRyeUEvVyBwcm90b3R5cGVzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUNhbGwgUHJpdmF0ZUV4dHJhY3RJY29uIGluIHVzZXIzMiBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBjb2RlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglTaG91bGQgdGVzdCB1bml4ZGV2IGFnYWluc3QgLTEgKHNlZSB3b2RPcGVuL3dpZE9wZW4pLgoJd2lkUmVjb3JkZXI6IGJ5dGVzUmVhZCBpcyBub3cgdGVzdGVkIGFnYWluc3QgKERXT1JEKSAtMS4KCgkqIGxvYWRlci9lbGZkbGwuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQmFjayBvdXQgbXkgRUxGRExMX2Rsb3BlbiBwYXRjaCBhbmQgYWRkIGEgd2FybmluZyBmb3IgZnV0dXJlIG1pc2d1aWRlZAoJaGFja2Vycy4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgZnJlZWluZyBsb2NrZWQgZ2xvYmFsIG1lbW9yeSBoYW5kbGVzLgoKCSogd2luZG93cy9tZGkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2F0Y2ggb3V0IGZvciBEZWZNRElDaGlsZFByb2MgY2FsbHMgb24gbm9uLU1ESS1jaGlsZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBob2xkIHRoZSBYMTEgbG9jayB3aGlsZSBjYWxsaW5nIEdESSBvYmplY3Qgcm91dGluZXMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCBkbyBhbnkgR0xYIGNhbGxzIG9uIGEgZGlzcGxheSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgR0xYLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY2FsY3VsYXRlIG5JdGVtSGVpZ2h0IHdoZW4gTFZTX1NFVElNQUdFTElTVCBpcyBjYWxsZWQuICBGaXhlcyBpY29ucwoJYmVpbmcgY2hvcHBlZCBvZmYgaW4gdGhlIGZpbGUgZGlhbG9nIHdpbmRvdy4gIEFsaWduIGl0ZW1zIHRvIHRvcCBhbmQKCXJlZnJlc2ggYWZ0ZXIgc29ydGluZywgYXMgd2luZG93cyBkb2VzLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglTdHViIENyZWF0ZURpc3BUeXBlSW5mbywgQ3JlYXRlU3RkRGlzcGF0Y2gxNiBhbmQgQ3JlYXRlU3RkRGlzcGF0Y2guCgoJKiBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZCBwcm9wZXIgbWVzc2FnZSByZXBseSBtZWNoYW5pc20gYW5kIHNwIHBsYXllciBkYXRhIHN0b3JhZ2UKCS0gTW9yZSBpbXBsZW1lbnRhdGlvbiBhbmQgZml4ZXMKCgkqIGluY2x1ZGUvcG9wcGFjay5oLCBpbmNsdWRlL3BzaHBhY2sxLmgsIGluY2x1ZGUvcHNocGFjazIuaCwgaW5jbHVkZS9wc2hwYWNrNC5oLCBpbmNsdWRlL3BzaHBhY2s4Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhyZWUgbGV2ZWxzIG9mIG5lc3Rpbmcgb2YgdGhlICdwcmFnbWEgcGFjaycKCWRpcmVjdGl2ZXMuCgoyMDAwLTEwLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MjEuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIERPUyBJTlQyMSBBSD00QiAoRVhFQykuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3Iga2V5Ym9hcmQgaW5wdXQgaW4gdmFyaW91cyBsb2NhbGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBMVk1fU0VUSVRFTVBPU0lUSU9OMzIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW1lbWJlciBvd25lciBIV05EIHdoZW4gY3JlYXRpbmcgYW5kIHVzZSB0aGlzIGh3bmQgZm9yIHRoZSBXTV9OT1RJRlkKCW1lc3NhZ2UgdGFyZ2V0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIGZsYWcgYW5kIG5vdGlmaWNhdGlvbiBkZWZpbml0aW9ucyBmb3IgQ29tYm9Cb3hFeC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBvbGQgV2luIDIueCBzdHJpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglXYXJuaW5nIGZpeC4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIGFwcHJvcHJpYXRlIGNhc3RzIHRvIGNhZGRyX3QgZm9yIHRoZSB0aGlyZCBwYXJhbWV0ZXIgb2YgcHRyYWNlKCkuCgoyMDAwLTEwLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiByZWNlbnQgYnVncywgYW5kIGFkZGVkIHNvbWUgbW9yZSBzYWZlZ3VhcmRzIChjb3VsZAoJYmUgaGFuZHkgZm9yIHBvcnRhYmlsaXR5IGFueXdheSkgYW5kIHRyYWNlIHN0YXRlbWVudHMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgbWlzYy9yZWdpc3RyeS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgZGxscy9rZXJuZWwvY29tbS5jLCBmaWxlcy9kb3NfZnMuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQ29udmVydGVkIGEgZmV3IG1vcmUgc2VydmVyIHJlcXVlc3RzIHRvIHRoZSBuZXcgbWVjaGFuaXNtLgoKCSogZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL250ZGRrLmg6CglGaXhlZCBhIGZldyBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJU2V0IHNlbGVjdG9yIDAwMDBIIGJhc2UgdG8gMHhmMDAwMCB1bnRpbCB0aGUgZmlyc3QgNjRLIGFyZQoJdW5wcm90ZWN0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBTaGVsbE1lc3NhZ2VCb3hbQVddIGJ1ZmZlcnMgdXNhZ2UgKGluIHNvbWUgY2FzZXMsIHdyb25nIGJ1ZmZlcnMKCXdlcmUgdXNlZCA7IGRlc3RpbmF0aW9uIGJ1ZmZlciBkb2Vzbid0IGhhdmUgYSBmaXhlZCBzaXplKS4KCUZpeGVkIEZvcm1hdE1lc3NhZ2UgcGFyYW1ldGVyIHdhcm5pbmdzIChpdCdzIG5vdyBhIHZhX2xpc3QqKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgb3JpZ19tb2RlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURyYXcgdGhlIHNjcm9sbGJhciBiZXNpZGUgdGhlIGJ1ZGR5IHdoZW4gbmVpdGhlciBVRFNfQUxJR05bUklHSFR8TEVGVF0KCWlzIGdpdmVuLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTG9jYWxpemF0aW9uIGFuZCBleHBlY3QgbGVhcGRheXMgd2hlbiBsb29raW5nIGZvciB0aGUgbGVuZ3RoIG9mIGEKCW1vbnRoLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTG9jYWxpemF0aW9uIGFuZCBtYW55IGNoYW5nZXMgdG8gYmVoYXZpb3VyIGFuZCBvdXRsb29rLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTcGxpdCBvdXQgcmVzb3VyY2VzIHRoYXQgbWlnaHQgYmUgbG9jYWxpemVkLgoJQWRkZWQgR2VybWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGFkZGl0aW9uYWwgcmVzb3VyY2UgSURzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWJiZWQgTG9va3VwQWNjb3VudE5hbWVBLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiAiZGVmYXVsdCIgRGlyZWN0RHJhdyBkcml2ZXIgaWYgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgZHJpdmVyCglyZWdpc3RlcmVkLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRml4ZWQgYmVoYXZpb3VyIG9mIHdpbmRvdydzIHN5c3RlbSBidXR0b25zLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTG9hZFN0cmluZ0EgaW5zZXJ0cyB0ZXJtaW5hdGluZyBudWxsIGluIHRoZSBidWZmZXIgd2hlbiB0aGUgc3RyaW5nCglyZXNvdXJjZSBpcyBhbiBlbXB0eSBzdHJpbmcgb3Igd2hlbiBpdCBjYW4gbm90IGJlIGZvdW5kLgoKMjAwMC0xMC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL29jcl9oYW5kLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0aGUgSURDX0hBTkQgY3Vyc29yLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBGb3JtYXRNZXNzYWdlIEFQSXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21jeC5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgTU9ERU0gc3R1ZmYgaGFzIGJlZW4gc3B1biBvZmYgdG8gaXRzIHJpZ2h0ZnVsIHBsYWNlOiBtY3guaC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBsZXRlZC9jb3JyZWN0ZWQgdGhlIGxpc3Qgb2YgaW5jbHVkZSBmaWxlcy4KCUhhbmRsZSBXSU4zMl9MRUFOX0FORF9NRUFOIGFuZCB0aGUgTk94eHggbWFjcm9zLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIE5PR0RJIHByb3RlY3Rpb24uCglSZXBsYWNlZCBfTUFYX1BBVEggd2l0aCBNQVhfUEFUSC4KCSN1bmRlZiBjYW4gYmUgdXNlZCBkaXJlY3RseSBvbiBUUkFOU1BBUkVOVC4KCgkqIGluY2x1ZGUvb2xlMi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU11c3QgaW5jbHVkZSBvYmpiYXNlLmguCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgaW5jbHVkZS93aW5kZWYuaCwgZGxscy9rZXJuZWwvY29tbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUhGSUxFIGlzIGFuIGludCwgbm90IGEgcmVndWxhciBIQU5ETEUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIE1TR0ZfRERFTUdSLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgaW5jb3JyZWN0IGZvcm1hdCBzdHJpbmcuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgY2hhbmdpbmcgbW91c2UgY3Vyc29yIHdoZW4gb3ZlciBhIGhlbHAgdG9waWMgbGluay4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBEaXJlY3RJbnB1dENyZWF0ZUV4LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJRG8gbm90IHNlbmQgYSBXTV9DT05URVhUTUVOVSBtZXNzYWdlIHdoZW4gYSBUcmVlVmlldyByZWNlaXZlcyBhCglXTV9SQlVUVE9OVVAuCgoJKiBpZjE2MzIvZmluZGZ1bmMsIHRvb2xzL2ZpbmRmdW5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTWFrZSBmaW5kZnVuYyBsb29rIGZvciAuc3BlYyBmaWxlcywgYW5kIHB1dCBpdCB3aXRoIHRoZSBvdGhlciB0b29scy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVmFsaWRhdGUgYWNjZXNzIGV2ZW4gaWYgd3JhcCBwYXN0IGFkZHJlc3MgMCBmb3IgSXNCYWRTdHJpbmdQdHJbQXxXXQoJYW5kIElzQmFkW1JlYWR8V3JpdGVdUHRyLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgbG9hZGVyL2xvYWRvcmRlci5jLCBtZW1vcnkvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBzdHVwaWQgc3BlbGxpbmcgZml4ZXMKCS0gc29tZSBtb3JlIGxvYWRvcmRlciBhcnJheSB3b3JrCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL250ZGRrLmgsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBZGRlZCBhIGZldyBtb3JlIGxhcmdlIGludGVnZXIgZnVuY3Rpb25zLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgb2JqZWN0cy9kYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVN0dWJiZWQgR2V0RGV2aWNlR2FtbWFSYW1wLgoKCSogbXNkb3MvaW50MjEuYzoKCVBldGVyIEhhd2tpbnMgPHBldGVyQGhhd2tpbnMuZW11LmlkLmF1PgoJQWRkZWQgRE9TIGludCAyMWggZnVuY3Rpb24gNDQ1Mmggc3VwcG9ydCAoRFItRE9TIHZlcnNpb24gY2hlY2spLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaWxsIGluIHRoZSBkc0JtaWguYmlTaXplSW1hZ2UgZmllbGQgb2YgRElCU2VjdGlvbnMgd2l0aCB0aGUKCWNhbGN1bGF0ZWQgYml0bWFwIHNpemUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbmRpY2F0ZSB0aGF0IHRoZSBNSURJIGVycm9yIG1lc3NhZ2Ugb25seSBhZmZlY3RzIHByb2dyYW1zIHRoYXQgbmVlZCBNSURJLgoKCSogbWVtb3J5L2hlYXAuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJR2V0IHJpZCBvZiBzaGFyZWQgaGVhcCBmaXhtZSBtZXNzYWdlcy4KCVNsaWdodGx5IGNvcnJlY3RlZCBteSBoZWFwIGNvbW1pdCBwYXRjaCAoWGlsaW54KS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWVyZ2VkIERPU1ZNX0ludCB3aXRoIERPU1ZNX1NpbXVsYXRlSW50LCBhbmQgbWFkZSBpdCBoYW5kbGUgYXBwcyB0aGF0CglwdXJwb3NlZnVsbHkgc2h1ZmZsZSB0aGUgaW50ZXJydXB0IHZlY3RvcnMgYXJvdW5kLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRvIGltcHJvdmUgY3VzdG9tLWRyYXduIGl0ZW1zLCBhZGQgZm9jdXMgYm9yZGVyIHRvIGl0ZW1SZWN0cyBhbmQgZG8KCW5vdCBvdmVybGFwIHRoZW0uCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9jb21tLmgsIGluY2x1ZGUvbXNkb3MuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9jb21tLmMsIG1zZG9zL2ludDExLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCU1vdmVkIGNvbW0uYyBpbnRvIGtlcm5lbDMyLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDbGFpbSB0aGF0IG91ciBoZWFkZXJzIGNvbmZvcm0gdG8gdGhlIHZlcnNpb24gNS4wLgoKCSogaW5jbHVkZS9wcnNodC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBzdHJpbmcgZmllbGRzIGluIFBST1BTSEVFVFBBR0VBIHNob3VsZCBiZSBBTlNJIHN0cmluZ3MuCgoJKiBpbmNsdWRlL29sZWN0bC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlIERVTU1ZX1VOSU9OX05BTUUgaW4gZmF2b3Igb2YgRFVNTVlVTklPTk5BTUUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG1pc3NpbmcgVFZJTlNFUlRTVFJVQ1Qgc3lub255bXMuCglBZGRlZCBtaXNzaW5nIENCRUlGX3h4eCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIHNpZ25hdHVyZSBvZiBTeXNBbGxvY1N0cmluZ0J5dGVMZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU3RhdHVzIGJhcnMgb24gbWFuYWdlZCB3aW5kb3dzIHNob3VsZCBub3QgaGF2ZSBTSVpFR1JJUCBzdHlsZS4KCgkqIGRsbHMvbnRkbGwvcmVnLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIHJlZyB0aGUgZGVmYXVsdCBvdXRwdXQgY2hhbmVsLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUlnbm9yZSBzZXRzb2Nrb3B0IGNhbGxzIHRoYXQgbWFrZSB0aGUgc2l6ZSBvZiB0aGUgcmVjZWl2ZSBidWZmZXIgdG9vCglzbWFsbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU3ViaXRlbXMgb2YgbGlzdHZpZXdzIHdlcmUgbm90IHBhaW50ZWQgd2l0aCB0aGUgcmlnaHQgYmFja2dyb3VuZCB3aGVuOgoJLUxWU19FWF9GVUxMUk9XU0VMRUNUIHN0eWxlIGlzIGRlZmluZWQKCS1pdGVtIGlzIHNlbGVjdGVkCgktTGlzdHZpZXcgZG9lc24ndCBoYXZlIHRoZSBmb2N1cy4KCgkqIHNlcnZlci9zb2NrLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUFmdGVyIGFjY2VwdCBpcyBjYWxsZWQgb24gdGhlIHNvY2tldCwgdGhlIGxpc3RlbmluZyBzb2NrZXQgbmVlZHMgdG8gYmUKCXJlc2VsZWN0ZWQuCgoJKiBtZW1vcnkvcmVnaXN0cnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb24gZGF0YSByZXR1cm5zIGZyb20gUmVnUXVlcnlWYWx1ZUV4QS4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6IEtvbnJhZCBSaWVjayA8a3JAcjBxLmN4PgoJQ2hhbmdlZCByZXBuZSB0byByZXBueiBmb3IgU29sYXJpcyBhc3NlbWJsZXIuCgoyMDAwLTEwLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIExDVFlQRSwgR2V0TG9jYWxlSW5mbywgTlVNQkVSRk1ULCBDVVJSRU5DWUZNVCBhbmQgdGhlIHJlbGF0ZWQKCUFQSSB0byB3aW5ubHMuaC4KCU1vdmVkIExBTkdfeHh4LCBTVUJMQU5HX3h4eCwgU09SVF94eHggYW5kIElTX1RFWFRfVU5JQ09ERV94eHggdG8KCXdpbm50LmguCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3dpbmhlbHAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtYW55IG1pc3NpbmcgKlB4eHggdHlwZXMuCglSZW1vdmVkIGEgZmV3ICpMUHh4eCB0eXBlcyB0aGF0IGFyZSBub3Qgc3VwcG9zZWQgdG8gYmUgdGhlcmUgKGluCglwYXJ0aWN1bGFyIExQSUNPTklORk8pLgoJQWRkZWQgYSBmZXcgbWlzc2luZyAqTFBDeHh4IHR5cGVzIChNRU5VSVRFTUlORk8sIFNDUk9MTElORk8sCglETEdJVEVNVEVNUExBVEUpLgoJV0lOSEVMUCBhbmQgUEVfQUNDRUwgYXJlIGludGVybmFsIHR5cGVzLgoJTVVMVElLRVlIRUxQIGFuZCBIRUxQV0lOSU5GTyBib3RoIGhhdmUgYW4gQSBhbmQgVyB2YXJpYW50LgoJTlVNQkVSRk1ULCBDVVJSRU5DWUZNVCBhbmQgdGhlIHJlbGF0ZWQgQVBJIGJlbG9uZyB0byB3aW5ubHMuaC4KCUFkZGVkIG1pc3NpbmcgQVJXX3h4eCBkZWZpbmVzIChmb3Igc3lzbWV0cmljcykuCgoJKiBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJPVEZMQUdTIGhhdmUgdGhlaXIgb3duIGlmZGVmIHByb3RlY3Rpb24sIHRha2UgdGhlbSBvdXQgb2YgdGhlCglfU0VDVVJJVFlfREVGSU5FRCBpZmRlZiBibG9jay4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBkZWNsYXJhdGlvbiBmb3IgR2V0RW5oTWV0YUZpbGVEZXNjcmlwdGlvbi4KCgkqIHdpbmVkZWZhdWx0LnJlZzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgRm9udHMgcmVnaXN0cnkga2V5LgoKCSogd2luMzIvZXhjZXB0LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gZm9yIGRlYnVnZ2VyIHN0YXJ0dXAgZXZlbnQgY3JlYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXggZGVwcmVzc2VkIHN0YXRlIHdpdGggZmxhdCB0b29sYmFycyBzbyBwcmVzc2luZyB0aGUgYnV0dG9ucyBkcmF3cwoJdGhlIGJ1dHRvbiBpbiBhIGRlcHJlc3NlZCBzdGF0ZS4gIEZpeCBiaXRtYXAgb2Zmc2V0cywgZml4ZXMgYml0bWFwCglvZmZzZXQgcHJvYmxlbXMgaW4gZmlsZSBjb21tb24gZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCU9uIEluc2VydEl0ZW0gd2l0aCBUVklfRklSU1QsIHRoZSBjaGVjayBmb3IgcmVzZXR0aW5nIGZpcnN0VmlzaWJsZQoJbXVzdCBiZSBkb25lICpiZWZvcmUqIHRoZSBwYXJlbnQncyBmaXJzdENoaWxkIGNoYW5nZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgbm9uLWJ1ZmZlcmVkIG92ZXJsYXlzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJld3JpdGUgdG8gc3VwcG9ydCByb3dzIG9mIGJhbmRzLgoJRHJhdyBzZXBhcmF0b3JzIGJldHdlZW4gYmFuZHMgaW4gcm93cyBhbmQgYmV0d2VlbiByb3dzLgoJU3VwcG9ydCB0ZXh0IGFuZCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBjb2xvciBwcm9wYWdhdGlvbi4KCUltcHJvdmUgbGF5b3V0IGNvZGUuCglNYWtlIGZNYXNrIGluIGludGVybmFsIHN0cnVjdHVyZSB0aGUgaW5kaWNhdG9yIG9mIHZhbGlkIGluZm9ybWF0aW9uLgoJRml4IHNpemUgb2YgZ3JpcHBlcnMuCglBZGQgZGVidWdnaW5nIHRyYWNlcyBmb3IgZnV0dXJlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCVNpbXBsZSBOVUxMIGNoZWNrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIEJhY2tncm91bmQgc2hvdWxkIG5vdCBiZSBkcmF3biBpZiB0aGUgYmFja2dyb3VuZCBjb2xvciBpcyBDTFJfTk9ORS4KCS0gRG9uJ3QgY2hhbmdlIHRoZSBzaXplIHRvIDAgZm9yIHRoZSBoZWFkZXIgY29udHJvbCBvZiBsaXN0dmlldyB3aXRoCgkgIExWU19OT0NPTFVNTkhFQURFUiBzdHlsZS4gSW4gZmFjdCBqdXN0IHNldHRpbmcgSERTX0hJRERFTiB0byB0aGUKCSAgaGVhZGVyIGNvbnRyb2wgaXMgZW5vdWdoLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvY29udmVydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAxNiAoNTY1KSAtPiAxNSAoNTU1KSBiaXQgZGVwdGggY29udmVydGVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3VwcG9ydCBmb3IgY3A5MzYuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IFdvcmstYXJvdW5kIGZvciBnY2MgYnVnLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbW50ZWQgR2V0Rm91ckNDQ29kZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5hYmxlIFhGODZ2bW9kZSBzd2l0Y2hpbmcgcG9zc2libGUgZm9yIFgxMSB0b28uCgoJKiBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgUENNIGNvbnZlcnRlciBpbnRlcm5hbCBkcml2ZXIuCglBIGZldyBkcml2ZXIgaGFuZGxpbmcgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0aGUgT3BlbkdMIGRldGVjdGlvbiBjb2RlLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgbG9hZGluZyBvZiBzeW1ib2xzIGZyb20gbGlicmFyaWVzLgoKCSogd2luMzIvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJUHJldmVudCBTZXRGaWxlQXR0cmlidXRlQSBmcm9tIG1ha2luZyBkaXJlY3RvcnkgcmVhZC1vbmx5LgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlIGFub255bW91cyBzdHJ1Y3QvdW5pb24gc3VwcG9ydCBieSBkZWZhdWx0IGluIGJvdGggQyBhbmQgQysrLgoJRGlzYWJsZSB0aGVtIGZvciBjb21waWxlcnMga25vd24gbm90IHRvIHN1cHBvcnQgdGhlbS4KCURpc2FibGUgdGhlbSBmb3IgdGhlIFdJTkUgY29kZS4KCgkqIGluY2x1ZGUvZGRlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGZvdXIgRERFbFBhcmFtIGZ1bmN0aW9ucy4KCU5vdyBuZWVkcyBhbiAnZXh0ZXJuICJDIicgcHJvdGVjdGlvbiBmb3IgQysrLgoKCSogZGxscy91c2VyL2RkZW1sLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBwYXJhbWV0ZXIgdHlwZXMgYW5kIGNvbW1lbnRzIG9mIHRoZSBEREVsUGFyYW0gZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHN0cmF5IEEvVyBmcm9tIGludm9jYXRpb25zIG9mIFdJTkVMSUJfTkFNRV9BVy4KCgkqIG1zZG9zL2ludDExLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVJlbW92ZWQgZGVwZW5kZW5jeSBvbiBnbG9iYWxzIExQVFtdIGFuZCBDT017fS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIHNvbWUgb2YgdGhlIEFQSXMgaW50cm9kdWNlZCBpbiBXaW45OCwgbW9zdGx5IHRoZSBWYXJYeHggbWF0aHMgQVBJcy4KCgkqIG1zZG9zL3ZnYS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglSZXBsYWNlIG51bGwgYnl0ZXMgYnkgc3BhY2VzIGluIFdyaXRlQ29uc29sZU91dHB1dEEgY2FsbC4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTUNJQ0RBIGRpZG4ndCBvcGVuL2Nsb3NlIHRoZSBkb29yIHdoZW4gY2FsbGluZyB0aGUgY29tbWFuZCB3aXRob3V0Cgl2YWxpZCBwYXJhbWV0ZXIgYmxvY2sgKGkuZS4gPT0gTlVMTCkuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgT2xlTG9ja1J1bm5pbmcgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGVkIHNvbWUgc2VndnMgdGhhdCBvY2N1ciB3aXRoIG93bmVyZGF0YSBsaXN0dmlld3MuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gdmFsdWVzIGFyZSByZXZlcnNlZCBpbiBmYWlsdXJlL3JnZGF0YSA9PSBOVUxMIGNhc2UgaW4KCUdldFJlZ2lvbkRhdGEgKHdhcyBtZXJnZSBlcnJvciBieSBtZSkuCgoJKiB3aW4zMi9leGNlcHQuYywgd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQ2hhbmdlZCBkZWJ1Z2dlciBsYXVuY2hpbmcgdG8gYXV0byBwZXIgZGVmYXVsdC4KCgkqIGRsbHMva2VybmVsL25scy9kYW4ubmxzOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglEZWZpbmUgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgZm9yIERhbmlzaCBsb2NhbGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcHJlc3MganVuayBub2lzZSBhdCBzdGFydHVwIG9mIERpcmVjdFNvdW5kIG9uIFNCIExpdmUhIGFuZCBFUyAxMzcxLgoKMjAwMC0xMC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZHJpdmUuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZmlsZXMvZHJpdmUuYzoKCVVzZSBzcGVjaWFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0cmFuc21pdCB0aGUgY3dkIG9mIHRoZSB2YXJpb3VzCglkcml2ZXMgdG8gY2hpbGQgcHJvY2Vzc2VzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgJzsnIGVuZGluZyBvbiBsaW5lcyB1c2luZyB0aGUgREVDTF9XSU5FTElCX1RZUEVfQVcgYW5kCglXSU5FTElCX05BTUVfQVcgbWFjcm9zLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBtaXNzaW5nICdTeXNBbGxvY1N0cmluZycgcHJvdG90eXBlcy4KCUFkZGVkIHNvbWUgbWlzc2luZyAnVHlwZUxpYicgcHJvdG90eXBlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvYml0bWFwcy9vY3JfaWJlYW06CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB3aGl0ZSBib3JkZXIgYXJvdW5kIHRoZSBJLWJlYW0gY3Vyc29yLgoKMjAwMC0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVByb3RlY3QgR2xvYmFsSGFuZGxlKCkgYWdhaW5zdCBiYWQgcGFyYW1ldGVycy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6CglGaXhlZCBiYWNrdHJhY2UgZm9yIGFwcHMgdGhhdCBuZXZlciBjYWxsZWQgZG93biB0byAxNi1iaXQgY29kZS4KbgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHN1cmUgdGhhdCB3ZSBza2lwIHRhc2tzIHdpdGggbWlzc2luZyBoSW5zdGFuY2UuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUludHJvZHVjZWQgYSBuZXcgYXJlbmEgZmxhZyBjYWxsZWQgR0FfRE9TTUVNIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KCURPU01FTSBhbmQgbm9ybWFsICJ3aW5kb3dzIiBnbG9iYWwgbWVtLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4ZXMgaW4gbW1pbywgcmVsYXRlZCB0byBidWZmZXJpbmcgaW4gcmVjb3JkIG1vZGUuCgoyMDAwLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0U6CglSZWxlYXNlIDIwMDAxMDAyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBHbG9iYWxIYW5kbGUoKSBhZ2FpbnN0IGJhZCBwYXJhbWV0ZXJzLgoKCSogZGVidWdnZXIvc3RhY2suYzoKCUZpeGVkIGJhY2t0cmFjZSBmb3IgYXBwcyB0aGF0IG5ldmVyIGNhbGxlZCBkb3duIHRvIDE2LWJpdCBjb2RlLgoKCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzdXJlIHRoYXQgd2Ugc2tpcCB0YXNrcyB3aXRoIG1pc3NpbmcgaEluc3RhbmNlLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbnRyb2R1Y2VkIGEgbmV3IGFyZW5hIGZsYWcgY2FsbGVkIEdBX0RPU01FTSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCglET1NNRU0gYW5kIG5vcm1hbCAid2luZG93cyIgZ2xvYmFsIG1lbS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeGVzIGluIG1taW8sIHJlbGF0ZWQgdG8gYnVmZmVyaW5nIGluIHJlY29yZCBtb2RlLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3NlcnZlci5oLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglDb252ZXJ0IE50UXVlcnlLZXkgYW5kIE50RW51bWVyYXRlS2V5IHRvIHRoZSBuZXcgcmVxdWVzdCBtZWNoYW5pc20uCglGaXhlZCBhIGZldyBidWdzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZvcndhcmQgYWxsIGxhcmdlIGludGVnZXIgZnVuY3Rpb25zIHRvIG50ZGxsLgoKCSogb2xlL29sZTJubHMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldERhdGVGb3JtYXRBOiBDaGVjayByYW5nZSBhbmQgcmVjYWxjdWxhdGUgd0RheU9mV2Vlay4KCU9MRV9HZXRGb3JtYXRBfFc6IEZpeCB0cmFuc2Zvcm1hdGlvbiBvZiB3RGF5T2ZXZWVrIHRvCglMT0NBTEVfUyhBQkJSRVYpREFZTkFNRXguCgoJKiBpbmNsdWRlL3duYXNwaTMyLmgsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3duYXNwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21tc3lzdGVtLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFN1cHBvcnQgZm9yIHN0ZGNhbGw2NAoJLSBNaW5vciBBUEkgdXBkYXRlcy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUJlYXV0aWZpZWQgdGhlIGxvYWRvcmRlciBhcnJheSAoZ3JvdXAgRExMcyBhY2NvcmRpbmcgdG8gZnVuY3Rpb25hbGl0eSwKCWFkZCBncm91cCBoZWFkZXIgY29tbWVudHMsIC4uLiksIGFkZGVkIGJ1aWx0aW4geDExZHJ2IGFuZCB3aW5hc3BpLgoKCSogZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU2lsZW5jZSB1bm5lZWRlZCBleGNlcHRpb24gdG8gYWxsb3cgZWFzaWVyIEFDTSBkZWJ1Z2dpbmcuCgoyMDAwLTEwLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jOgoJQ29udmVydGVkIHNvbWUgb2YgdGhlIHJlZ2lzdHJ5IHNlcnZlciByZXF1ZXN0cyB0byB0aGUgbmV3IHJlcXVlc3QKCW1lY2hhbmlzbS4KCgkqIHdpbjMyL3RpbWUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci90aW1lci5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglJbXBsZW1lbnRlZCBhIGJ1bmNoIG9mIGxhcmdlIGludGVnZXIgZnVuY3Rpb25zIGluIG50ZGxsLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCByZWxheTMyL3JlbGF5Mzg2LmM6CglBZGRlZCBzdGRjYWxsNjQgZW50cnkgcG9pbnQgdHlwZSB0byBhbGxvdyBjb3JyZWN0IHJlbGF5IGRlYnVnZ2luZwoJc3VwcG9ydCBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIDY0LWJpdCB2YWx1ZXMuCgoyMDAwLTA5LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzdXJlIHdlIGNvbW1pdCBlbm91Z2ggbWVtb3J5IGluIGEgbmV3IHN1YmhlYXAuCgoJKiBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJLSBtb3ZlZCBzb21lIGNvZGUgZnJvbSBXSU5TUE9PTF9HZXRQcmludGVyRHJpdmVyIGludG8gbmV3IGZ1bmN0aW9uCgkgIFdJTlNQT09MX0dldERyaXZlckluZm9Gcm9tUmVnCgktIGJ1ZyBmaXggaW4gZnVuY3Rpb24gR2V0UHJpbnRlckRpcmVjdG9yeVc6IGZyZWUgbG9jYWwgdmFyaWFibGUgbm90CgkgIHRoZSBvbmUgZnJvbSBmdW5jdGlvbiBpbnRlcmZhY2UKCS0gaW1wbGVtZW50ZWQgRW51bVByaW50ZXJEcml2ZXJzQXxXCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nICh0cmFpbGluZyBzcGFjZXMgb2YgdGhlIGRlZmF1bHQgdmFsdWUKCWFyZSBjbGlwcGVkKS4KCXNlY3Rpb24gPT0gTlVMTCwga2V5X25hbWUgPT0gTlVMTCB1bmRvYy4gZmVhdHVyZSBpcyBvbmx5IHZhbGlkIGluIFdpbjMyLgoKCSogZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvbnRkZGsuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvcHJvY2Vzcy5jLCB3aW4zMi90aW1lLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCU1vdmVkIGEgYnVuY2ggb2Ygcm91dGluZXMgdG8ga2VybmVsMzIuZGxsICh3aXRoIHRoZSBoZWxwIG9mCglEaW1pdHJpZSBPLiBQYXVuKS4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR0RJU2VsZWN0UGFsZXR0ZTE2IGNoZWNrZWQgR2V0T2JqZWN0VHlwZSgpIHJldHVybiB2YWx1ZSBmb3IKCVBBTEVUVEVfTUFHSUMgaW5zdGVhZCBvZiBPQkpfUEFMLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIERMTFZFUlNJT05JTkZPIHRvIHNobHdhcGkuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTGV0IEludGVybmFsRXh0cmFjdEljb24xNiBsb2FkIGljb25zIGZyb20gYnVpbHRpbiBETExzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW9kaWZpZWQgdGhlIGJpdG1hcCBjZW50ZXJpbmcgYWxnb3JpdGhtIHRvIHRha2UgdGhlIGJ1dHRvbidzIGJvcmRlcgoJaW50byBhY2NvdW50LgoKCSogd2luZG93cy90aW1lci5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgd2luZG93cy9tZXNzYWdlLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUJlZm9yZSBjYWxsaW5nIHRoZSB0aW1lciB3aW5kb3cgcHJvYywgbWFrZSBzdXJlIGl0IGlzIHZhbGlkLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NlYy5jOgoJUmVtb3ZlZCBhIGZldyBkZXBlbmRlbmNpZXMgb24ga2VybmVsMzIgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJTW92ZWQgY3JpdGljYWwgc2VjdGlvbiBpbXBsZW1lbnRhdGlvbiB0byBudGRsbC4KCgkqIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luZG93cy9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL01ha2VmaWxlLmluLCB0c3gxMS9NYWtlZmlsZS5pbiwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL01ha2VmaWxlLmluLCBvYmplY3RzL01ha2VmaWxlLmluLCBvbGUvTWFrZWZpbGUuaW4sIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1zZG9zL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIG1lbW9yeS9NYWtlZmlsZS5pbiwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZG9zL01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGlmMTYzMi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9tZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZmlsZXMvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL01ha2VmaWxlLmluLCBjb25zb2xlL01ha2VmaWxlLmluLCBjb250cm9scy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCU1vdmVkICQoTU9EVUxFKS5vIHJ1bGUgb3V0IG9mIE1ha2UucnVsZXMgaW50byB0aGUgaW5kaXZpZHVhbAoJTWFrZWZpbGVzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9yZWcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgU0hEZWxldGVFbXB0eUtleUEsIFNIRGVsZXRlS2V5QS4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglTZXJnZWkgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJRml4ZWQgcmV0dXJuIHZhbHVlcyBvZiBHZXRSZWdpb25EYXRhLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBSZWxlYXNlQ2FwdHVyZSAod2hpY2ggdHJpZ2dlcnMgV01fQ0FQVFVSRUNIQU5HRUQpIGFmdGVyIHRoZQoJV01fQ09NTUFORCBmb3IgdGhlIGJ1dHRvbiBoYXMgYmVlbiBzZW50LCByYXRoZXIgdGhhbiBiZWZvcmUuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVzZSB3YXZlYXVkaW8sIG5vdCB3YXZlZm9ybS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgY291cGxlIG9mIFRSQUNFIG1lc3NhZ2VzLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgbWlzc2luZyBjYXN0LgoKCSogaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcmV0dXJuIHR5cGUgb2YgbWl4ZXJNZXNzYWdlMTYuCgoJKiBpbmNsdWRlL3dpbnZlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZWQgVlNfVVNFUl9JTkZPIHRvIFZTX1VTRVJfREVGSU5FRC4KCjIwMDAtMDktMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2J1aWx0aW4zMi5oLCBtaXNjZW11Ly5jdnNpZ25vcmUsIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCBtaXNjZW11L3dpbmUuc3BlYywgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIE1ha2UucnVsZXMuaW46CglDaGFuZ2VkIHRoZSBXaW4zMiBkbGwgZGVzY3JpcHRvciB0byBiZSBpbiBJTUFHRV9OVF9IRUFERVJTIGZvcm1hdC4KCUdlbmVyYXRlIHRoZSBpbXBvcnQgdGFibGUgZGlyZWN0bHkgaW4gUEUgZm9ybWF0LgoJQWRkZWQgZ3VpL2N1aWV4ZV9ub19tYWluIG1vZGVzIGluIEVYRSBzcGVjIGZpbGVzLCBhbmQgdXNlIHRoaXMgZm9yIHRoZQoJbWFpbiB3aW5lIGJpbmFyeS4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBpbXBvcnRzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdmFyaW91cyB0eXBlIGFuZCBtYWNybyBkZWZpbml0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG8gY29tcGlsZQoJdGhlIGxhdGVzdCBNRkMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdG9yZSBhIGNvcHkgb2YgTUlESU9QRU5ERVNDIGluZm9ybWF0aW9uIGluc3RlYWQgb2YgcG9pbnRlci4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVW5sb2NrIHdpbjE2IGNyc3Qgd2hpbGUgdGh1bmtpbmcgdXAgdG8gMzIgYml0IGRsbC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbmNsdWRlIDx1bmlzdGQuaD4gZm9yIHByb3RvdHlwZSBvZiBzZWxlY3QoKS4KCgkqIHNlcnZlci9zb2NrLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVNvY2tldCByZXR1cm5lZCBieSBhY2NlcHQgZnVuY3Rpb24gb2YgTWljcm9zb2Z0IEFQSSBzaG91bGQga2VlcCB0aGUKCXByb3BlcnRpZXMgb2YgdGhlIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYWxzbyB0cnVlIGZvciBub24tYmxvY2tpbmcKCXByb3BlcnR5LgoKCSogd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJSWYgd2luZG93IHdhcyBub3QgcmVzaXplZCBhbmQgbm90IG1vdmVkLCByZXBhaW50IG9ubHkgaXRzZWxmIGV4Y2x1ZGluZwoJcGFyZW50LgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUdlbmVyYXRlIFdpbjMyIGRsbCBkZXNjcmlwdG9yIHN0cnVjdHVyZSBpbiB0aGUgLnNwZWMuYyBmaWxlIHNvIHRoYXQgd2UKCWRvbid0IG5lZWQgdG8gZGVwZW5kIG9uIGJ1aWx0aW4zMi5oLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3ptb3VzZS5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlZCB6bW91c2UuaCwgbW92ZWQgd2hlZWwgY29kZSBmcm9tIG1vdXNlLmggaW50byBpdC4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglNQ0lfU1RBVFVTX0xFTkdUSCBvbiBXaW5kb3dzIHJldHVybnMgb25lIGZyYW1lIGxlc3MgdGhhbiB0aGUgdG90YWwKCXRyYWNrIGxlbmd0aCBmb3IgdGhlIGxhc3QgdHJhY2sgb24gYSBDRC4gIFRoaXMgYWxzbyBhZmZlY3RzIHF1ZXJpZXMKCWZvciB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBDRC4KCgkqIG1zZG9zL2Rvc2FzcGkuYywgaW5jbHVkZS93aW5lL3dpbmFzcGkuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJRml4ZWQgYSBmZXcgbm9uIHBvcnRhYmxlIHplcm8tc2l6ZSBhcnJheSBkZWNsYXJhdGlvbnMuCgoJKiBmaWxlcy9kcml2ZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYXZlIHRoZSBVTklYIGN3ZCBmb2xsb3cgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9uIHRoZSBjdXJyZW50IGRyaXZlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJT24gcmVjZXB0aW9uIG9mIGEgRm9jdXNPdXQgZXZlbnQsIGRvbid0IGRlYWN0aXZhdGUgdGhlIGFwcGxpY2F0aW9uIGlmIHRoZQoJbmV4dCB3aW5kb3cgdG8gZ2V0IHRoZSBmb2N1cyBpcyBhIFdpbmUgd2luZG93LgoKMjAwMC0wOS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbjoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFJlbW92ZSB3aW5tbSBoYWNrIGluIGRwbGF5IGNvZGUKCS0gRml4IHVwIHNvbWUgbWlzc2luZyBob2xlcyBpbiB0aGUgY29kZQoJLSBNb3JlIG1lc3NhZ2UgaW1wbGVtZW50YXRpb24KCS0gU3RhdHVzIGRvY3VtZW50YXRpb24gdXBkYXRlCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNaWdyYXRlICRMREZMQUdTIGZyb20gY29uZmlndXJlIHRvIE1ha2VmaWxlIGFuZCBpbnRvIG1haW4gd2luZQoJZXhlY3V0YWJsZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEaXNwbGF5IGFuIEVSUigpIGluIGNhc2Ugb2YgdW5kZWZpbmVkIHN5bWJvbHMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3RhcnRlZCBzb21lIGJhc2ljIHdvcmsgb24gdGhlIG1vcmUgb3IgbGVzcyB1bmRvY3VtZW50ZWQgU0VUVVBYCglmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IGZvciBUQlNUWUxFX0VYX0RSQVdEREFSUk9XUyBzdHlsZTsgcmVzZXQgY2FwdHVyZSBhbmQgYnV0dG9uCglwcmVzc2VkIGZsYWdzIG9uIFdNX0NBUFRVUkVDSEFOR0VELgoKCSogb2JqZWN0cy9kYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXT1JEIGlzIHVuc2lnbmVkLCBzbyB3ZSBuZWVkIHRvIHRyYW5zYWx0ZSAweGZmZmYgaW50byAtMS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbjMyL2NvbnNvbGUuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtc2Rvcy9kb3Nhc3BpLmMsIG1zZG9zL3htcy5jLCBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2LmgsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYXNwaS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lucHJvYy5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93aW52ZXIuaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBpbmNsdWRlL3dvd250MzIuaCwgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmFzcGkuaCwgaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL2xvY2FsLmgsIGluY2x1ZGUvbHpleHBhbmQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpZjE2MzIvc25vb3AuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2ZpbGUuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vc291bmQxNi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbmFzcGkvYXNwaS5oLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3ZlcnNpb24vdmVyMTYuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9kZGVtbDE2LmgsIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9tc3ZpZGVvL3ZmdzE2LmgsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtL21zYWNtZHJ2LmgsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL2dkaS9iaWRpMTYuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJTW92ZWQgYWxsIFdpbjE2IGRlZmluaXRpb25zIG91dCBvZiB0aGUgc3RhbmRhcmQgV2luZG93cyBoZWFkZXJzLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUF2b2lkIGNyYXNoZXMgaWYgMTYtYml0IG1vZHVsZSBoYW5kbGUgd2FzIHBhc3NlZCB0byB0aGUgMzItYml0CglyZXNvdXJjZSBlbnVtZXJhdG9yLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgaW5jbHVkZS9kZHJhdy5oLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCB3aW5lLmluaToKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBEaXJlY3REcmF3IG92ZXJsYXlzIHVzaW5nIHRoZSBYVmlkZW8gZXh0ZW5zaW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQ29kZSBjbGVhbnVwLgoJQWRkIGNoZWNraW5nIGZvciBpbnZhbGlkIERCQ1MgdHJhaWxlciBieXRlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBjb21tY3RsIGhlYWRlciBpc3N1ZXMgcmVwb3J0ZWQgaW4gbmV3c2dyb3VwLgoKCSogZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvdzMyc2tybmwuaCwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgcmVzb3VyY2VzL3N5c3Jlc19XYS5yYzoKCUEgZmV3IGluY2x1ZGVzIGNsZWFudXAuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgbG9hZGVyL21haW4uYywgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGluY2x1ZGUvZGxncy5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZG93cy5oLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYzoKCVJlbW92ZWQgc2hlbGwuaC4gQ2xlYW5lZCB1cCB0aGUgbmVzdGVkIGluY2x1ZGVzIG1lc3MgaW4gd2luZS9vYmpfKi5oLgoKMjAwMC0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVXNlIGRvY3VtZW50ZWQgRFJPUEZJTEVTIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGludGVybmFsIERST1BGSUxFU1RSVUNULgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludDVjLmMsIG1zZG9zL3Z4ZC5jLCBtc2Rvcy94bXMuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvZXJyb3IuYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3Nhc3BpLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3VzZXIvbW91c2UuYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYzoKCVJlbW92ZWQgc29tZSBvZiB0aGUgWFhYX3JlZyBtYWNyb3Mgbm93IHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBzdGFuZGFyZAoJQ09OVEVYVDg2IHN0cnVjdHVyZSBldmVyeXdoZXJlLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHdpbjMyL2NvbnNvbGUuYywgbWlzYy9jb21tLmMsIG1pc2MvY3B1LmMsIG1pc2MvbWFpbi5jLCBtaXNjL3ZlcnNpb24uYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL2V2ZW50LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2Nkcm9tLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmM6CglSZW1vdmVkIGluY2x1c2lvbiBvZiB3aW5lL3dpbmVzdHJpbmcuaCBmcm9tIHdpbmJhc2UuaCBhbmQgYWRkZWQgaXQgdG8KCXRoZSBDIGZpbGVzIHRoYXQgbmVlZCBpdC4KCjIwMDAtMDktMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1lbW9yeS9pbnN0ci5jLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvZG9zZXhlLmg6CglNb3ZlZCBtb3N0IGdsb2JhbCBkYXRhIG91dCBvZiB0aGUgTFBET1NUQVNLIHN0cnVjdHVyZS4KCUFsbG9jYXRlIERQTUkgcmVhbC1tb2RlIHNlZ21lbnRzIGdsb2JhbGx5IGF0IHN0YXJ0dXAuCglUcnkgdG8gYWxsb2NhdGUgRE9TIG1lbW9yeSBhdCBhZGRyZXNzIDAuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJQ2FsbCBXSF9HRVRNRVNTQUdFIGhvb2sgaW4gUGVla01lc3NhZ2UgdG9vIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYgoJRmFybnVtKS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUxvY2tzIHRoZSB2aXJ0dWFsIHZpZXdzIGxpbmtlZCBsaXN0LgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWtlIGNhbGxzIHRvIGdldGhvc3RieW5hbWUsIGdldGhvc3RieWFkZHIsIGdldHNlcnZieW5hbWUsCglnZXRzZXJ2Ynlwb3J0LCBnZXRwcm90b2J5bmFtZSBhbmQgZ2V0cHJvdG9ieW51bWJlciB0aHJlYWQtc2FmZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBhcHByb3ByaWF0ZSBjaGFyc2V0IGlmIGZhY2VuYW1lcyBvZiBmb250IGlzIGtub3duLgoJVXNlIENQX0FDUCBpZiBERUZBVUxUX0NIQVJTRVQgaXMgcmVxdWVzdGVkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglJbiBXTV9EUkFXSVRFTSwgYWx3YXlzIGNhbGxzIHRoZSBhcHAgd2l0aCBhIHZhbGlkIGN1cnJlbnQgZm9jdXNfaXRlbS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9icmVhay5jOgoJSW1wcm92ZWQgc3VwcG9ydCBmb3Igdm04NiBtb2RlLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglBZGRlZCBzdXBwb3J0IGZvciBleGNlcHRpb24gaGFuZGxpbmcgd2hpbGUgaW4gdm04NiBtb2RlLgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiB2bTg2IHN1cHBvcnQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCBvYmplY3RzL2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBmb3JtYXQgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgc2V0IFdTX0NISUxEIGFuZCBDQ1NfVE9QIHRvIHRoZSB0b29sYmFyJ3Mgc3R5bGUuCglUT09MQkFSX0NhbGNUb29sYmFyKCk6IGlmIHRoZSBiaXRtYXAgc2l6ZSBpcyAwLCB1c2UgdGhlIGJ1aWx0aW4KCWRlZmF1bHRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBzaXplIG9mIHRoZSBjb21jdGwzMiBpbnRlcm5hbCBiaXRtYXBzIGlzIDI0eDI0IG5vdCAyNngyNi4KCUZpeGVkIG1pbm9yIHR5cG9zLgoKCSogdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvUkVBRE1FLndyYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRmlsZW5hbWVzIG1heSBjb250YWluICcvJyBhbmQgJ1wnLgoJU21hbGwgdHlwbyBmaXhlcy4KCjIwMDAtMDktMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUGFpbnQgYmFja2dyb3VuZCBiZWZvcmUgZHJhd2luZyBpdGVtIGFuZCBzdWJpdGVtcy4gIFBhaW50IGFueSBhcmVhIG9mCgl0aGUgY29udHJvbCBub3Qgb2NjdXBpZWQgYnkgaXRlbXMuICBFYXJseSBvdXQgb2YgTElTVFZJRVdfUmVmcmVzaFhYWAoJaWYgbm8gaXRlbXMgZXhpc3QuIEludmFsaWRhdGVSZWN0KCkgb24gTEJVVFRPTkRPV04gb25seSBpZiB0aGUgY29udHJvbAoJaGFzIGl0ZW1zIHRvIGRyYXcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBtaXNjL21haW4uYywgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIEdldFRpY2tDb3VudCBub3QgdXNlIHRoZSB3aG9sZSBVbml4IGVwb2NoIChzaW5jZSAxOTcwKSBhbnkgbW9yZSwKCXNpbmNlIHRoYXQgY3Jhc2hlZCBzZXZlcmFsIGdhbWVzIG9yIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRoZW0gYXMgdGhleQoJYXJlbid0IHVzZWQgdG8gYSBoaWdoIFdpbmRvd3MgdXB0aW1lIG9mIG1vcmUgdGhhbiAyNC45IGRheXMuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglSb2JlcnRvIEF1Z3VzdG8gUHVuZ2FydG5payA8cHVuZ0BrYXJpbmEuZXRjb20udWZyZ3MuYnI+CglBZGRlZCBTX0lTRklGTyBjaGVjayBmb3IgU29sYXJpcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBtYWNybyBmb3IgX2RlY2xzcGVjIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHN5bm9ueW0gb2YKCV9fZGVjbHNwZWMpLgoJUmVtb3ZlZCB0aGUgZGxsaW1wb3J0IGFuZCBkbGxleHBvcnQgbWFjcm9zLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTXVzdCBpbmNsdWRlICdzdGRsaWIuaCcuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgSEFORExFX1dNX05PVElGWSBhbmQgRk9SV0FSRF9XTV9OT1RJRlkuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL3BzZGxnLmgsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmVwcy93cHNfRW4ucmMsIGRsbHMvd2luZXBzL3dwc194eC5yYywgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy9NYWtlZmlsZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBhcGVyIHNpemUgYW5kIG9yaWVudGF0aW9uIHByb3Agc2hlZXQgZm9yIHdpbmVwcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBEVF9QQVRIX0VMTElQU0lTLCBEVF9FTkRfRUxMSVBTSVMsIGFuZCBEVF9XT1JEX0VMTElQU0lTCglmbGFncyBpbiBEcmF3VGV4dC4KCgkqIGxvYWRlci9tb2R1bGUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgV2luRXhlYzE2IHRvIGhhbmRsZSBxdW90ZWQgZmlsZW5hbWVzIGNvcnJlY3RseS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmM6CglEYW15YW4gT2dueWFub2ZmIDxEYW15YW5Acm9ja2V0bWFpbC5jb20+CglJRXJyb3JJbmZvIGlzIG5vdyBkZXJpdmVkIGZyb20gSVVua25vd24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBzb21lIHNpdHVhdGlvbnMgd2l0aCBsaXN0dmlldyBzZWxlY3Rpb25zLiBTcGVjaWZpY2FsbHkgZml4ZWQKCXNpdHVhdGlvbnMgd2hlcmUgaW4gYW4gT1dORVJEQVRBIGxpc3R2aWV3IHRoZSBzZWxlY3Rpb24gcmFuZ2VzIGJlY29tZQoJaW52YWxpZCBpZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGlzIGNoYW5nZWQuIEFkZGl0aW9uYWwgZml4ZXMgYSBmZXcKCXByb2JsZW1zIHJlc3VsdGluZyBpbiBsb29wcyBpbiBSZW1vdmVBbGxTZWxlY3Rpb25zLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBtYWNyb3MsIHR5cGVzIGFuZCBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS93aW5yZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTmV3IGZpbGUuIEFsbCBSQyBmaWxlcyBnZW5lcmF0ZWQgYnkgVkM2IGluY2x1ZGUgYWZ4cmVzLmggd2hpY2ggaW4gdHVybgoJaW5jbHVkZXMgdGhpcyBmaWxlLgoKCSogd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWxsaW5nLCB0cmFjZSBmaXhlcy4KCgkqIG1lbW9yeS9lbnZpcm9uLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBTZXRMYXN0RXJyb3IoKSBpbiBHZXRFbnZpcm9ubWVudFZhcmlhYmxlQS4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglEYW15YW4gT2dueWFub2ZmIDxEYW15YW5Acm9ja2V0bWFpbC5jb20+CglBZGRlZCBlcnJvciBjb3JyZWN0aW9uIHdoZW4gdXNpbmcgc3ltYm9sIG9mZnNldHMuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAdm9pbGEuZnI+CglGaXhlZCByZWVudHJhbmN5IGlzc3VlcyBpbiBwbGF5L3N0b3Agb3BlcmF0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IFByaW50RGxnIGNvbGxhdGUgaWNvbnMuICBBZGQgb3JpZW50YXRpb24gaWNvbnMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YnMgZm9yIHNobHdhcGkuMTUxIGFuZCBzaGx3YXBpLjE1My4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgZm9yIENvSXNPbGUxQ2xhc3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBjbG9zZSBvbiBleGVjKCkgZmxhZyBhdCB0aW1lcyB3aGVuIHdlIGxlYXZlIC9kZXYvZHNwIGFuZAoJL2Rldi9zZXF1ZW5jZXIgb3Blbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgRkxBVEJVVFRPTiBzdHlsZSB0YWJzLgoJTWFkZSB3aWR0aCBvZiBCVVRUT04gc3R5bGUgdGFicyBubyBsZXNzIHRoYW4gMnggdGhlaXIgaGVpZ2h0LgoJRXhwYW5kZWQgZm9jdXMgcmVjdCB0byBiZSBqdXN0IGluc2lkZSB0aGUgYm9yZGVyLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZCBGSVhNRXMgZm9yIGFsbCB0aGVzZSBuaWNlIGNvbXBsZXRlbHkgdW5pbXBsZW1lbnRlZCBUT09MSEVMUAoJZnVuY3Rpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglmaXhlZCB0aGUgd2luOTUgcmVnaXN0cnkgbG9hZGVyIHRvIGhhdmUgc29tZXdoYXQgc3RyaWN0ZXIgY2hlY2tpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBidXR0b24gaW1hZ2UgdG8gYmUgb2Zmc2V0IHRvIHRoZSBjZW50ZXIgb2YgdGhlIGJ1dHRvbiBob3Jpem9udGFsbHksCgl2aXNpYmxlIHdpdGggV2luWmlwIGFuZCBDdXRlRlRQIDQuMC4gIEZpeGVkIGNvbXBpbGUgd2FybmluZ3MgZnJvbSBmb3JtYXQgdHlwZQoJc3BlY2lmaWVycyBpbiB0d28gVFJBQ0Uncy4gIFJlbW92ZWQgVFJBQ0UgaW4gVE9PTEJBUl9HZXRJdGVtUmVjdCgpLiAgQWRkZWQKCWJ1dHRvbiB3aWR0aCB0byBUUkFDRSBpbiBUT09MQkFSX0NhbGNUb29sYmFyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIFJlZHJhd1dpbmRvdygpJ3MgdG8gSW52YWxpZGF0ZVJlY3QoKSdzLiAgUmVkcmF3V2luZG93KCkgd2FzCgliZWluZyBjYWxsZWQgd2l0aCBSRFdfVVBEQVRFTk9XLCBmb3JjaW5nIGltbWVkaWF0ZSBwYWludGluZy4gIEFkZGVkCglyZWRyYXdpbmcgbG9naWMgdG8gU1RBVFVTQkFSX1NldFRleHRXKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4IGJlaGF2aW9yIG9mIFRWU19TSU5HTEVFWFBBTkQgc3R5bGUgYnJva2VuIGluIENvcmVsIG1lcmdlLiAgT3B0aW1pemUKCXJlZHJhd2luZyBpbiBUUkVFVklFV19TZXRJdGVtQSgpIHRvIHJlZHJhdyBvbmx5IGlmIHRoZSBpdGVtIGNoYW5nZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSYWlzZWQgTUFYX0RMTFMgdG8gMTAwLgoKMjAwMC0wOS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgc29tZSBtaXNzaW5nIFdJTkVMSUJfTkFNRV9BVyBkZWZpbml0aW9ucywgdHlwZXMgYW5kIG1lc3NhZ2VzCgktIFNtYWxsIHByb3RvdHlwZSBmaXhlcwoKCSogcmVsYXkzMi9zbm9vcC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNhdGNoIEVYQ0VQVElPTl9QUklWX0lOU1RSVUNUSU9OIGV4Y2VwdGlvbiB0b28uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU5vdGlmaWNhdGlvbiBOTV9DTElDSywgTk1fUkNMSUNLIGFuZCBOTV9EQkxDTEsgc2VudCBieSB0aGUgbGlzdHZpZXcKCXNob3VsZCBzZXQgbFBhcmFtIHRvIGEgTk1MSVNUVklFVyBpbnN0ZWFkIG9mIGEgTk1IRFIuIEFjY29yZGluZyB0bwoJTVNETiBkb2MsIGl0IGlzIGxpa2UgdGhhdCBzaW5jZSB2ZXJzaW9uIDQuNzEsIFdpbmUgaXMgcmV0dXJuaW5nIDUuMCBhcwoJdGhlIERMTCB2ZXJzaW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB3aW5kb3cgbG9jayBwcm9ibGVtIGluIFNldE1lbnUoKS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSGVubmluZyBIb2ZmbWFubgoJQXZvaWQgZGVhZGxvY2tzIGluIEVudW1NZXRhRmlsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZCBpbmZpbml0ZSBsb29wIGlmIFF1ZXJ5UGF0aE9mUmVnVHlwZUxpYiBpcyBjYWxsZWQgd2l0aCBsY2lkPTAuCgoyMDAwLTA5LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50ZXJydXB0cy5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBtZW1vcnkvaW5zdHIuYzoKCU1pc2MgY2xlYW51cHMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHN3aXRjaGluZyB0byB2bTg2IG1vZGUgd2l0aCBwcm9wZXIKCWV4Y2VwdGlvbiBoYW5kbGluZy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNb3ZlZCBGSUxFX2RvbW1hcCgpIHRvIG1lbW9yeS92aXJ0dWFsLmMgKGFuZCByZW5hbWVkIGl0IFZJUlRVQUxfbW1hcCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQ2hhbmdlIEZJWE1FKCJCdXR0b24gc2l6ZSBzZXQgYWZ0ZXIgYnV0dG9uIGluIHRvb2xiYXJcbiIpIGluCglTZXRCdXR0b25TaXplKCkgdG8gV0FSTiBhcyBxdWl0ZSBhIGZldyBhcHBsaWNhdGlvbnMgYXJlIGRvaW5nIHRoaXMKCWFmdGVyIGFkZGluZyBlYWNoIGJ1dHRvbiB0byB0aGUgdG9vbGJhciBhbmQgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbgoJc3RvcCB0aGVtLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUmVtb3ZlIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBpbiBER0FfSURpcmVjdERyYXdTdXJmYWNlNEltcGxfU2V0UGFsZXR0ZSgpLgoKCSogbWlzYy9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCS0gcmVtb3ZlZCByZWR1bmRhbnQgZnVuY3Rpb25zIENPTU1fR2V0KFJlYWQvV3JpdGUpRmQKCS0gY29ycmVjdGVkIHRoZSBuYW1lIG9mIDE2Yml0IGZ1bmN0aW9ucyBpbiBjb21tZW50cwoJLSByZW1vdmVkIHVudXNlZCBzdGF0aWMgdmFyaWFibGUKCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBwcmVmZXIgd2luZWluc3RhbGwKCS0gbWVudGlvbiBkZWJ1Z2dlciBzZXR1cCAodGVtcG9yYXJ5KQoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUZpeGVkIGluY29ycmVjdCBhcmcgY291bnQgaW4gU0hHZXRTZXR0aW5ncyB0aGF0IGNhdXNlcyB3aW56aXAzMi5leGUgdG8KCXJlcG9ydCBhbiBlcnJvci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU29ydGluZyBpdGVtcyBpbiBhIGxpc3R2aWV3IHVzaW5nIExWV19TT1JUSVRFTVMgaXMgb25seSBzb3J0aW5nIHRoZSBpdGVtcwoJYW5kIG5vdCB0aGUgc3ViaXRlbXMuIFRoaXMgcGF0Y2ggZml4IHRoaXMgaXNzdWUuIEkndmUgcmVtb3ZlIHRoZSB0ZW1wb3JhcnkKCVNvcnRsaXN0LCBpdCB3YXMgbm90IG5lY2Vzc2FyeSB0byBjcmVhdGUgYW5vdGhlciBsaXN0LCBhbmQgaXQgd2FzIGJ1Z2d5LgoKMjAwMC0wOS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaWYxNjMyL3RodW5rLmM6CglSZW1vdmVkIGEgY291cGxlIG9mIHVudXNlZCBmdW5jdGlvbnMgaW4gdGhlIENhbGxvdXQgc3RydWN0dXJlLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBTZWxlY3QvUmVhbGl6ZVBhbGV0dGUgaW1wbGVtZW50YXRpb24gdG8gVVNFUiBhbmQgdXNlCglwZm5TZWxlY3QvUmVhbGl6ZVBhbGV0dGUgZnVuY3Rpb24gcG9pbnRlcnMgaW4gR0RJLgoJTWFrZSBzdXJlIHRoZSBwYWxldHRlIGhhbmRsZSBpcyB2YWxpZCBpbiBHRElTZWxlY3RQYWxldHRlMTYgKHRoYW5rcyB0bwoJVXdlIEJvbm5lcykuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgU2V0Q29tbU1hc2ssIFNldENvbW1UaW1lb3V0cywgR2V0Q29tbU1hc2ssIEdldENvbW1UaW1lb3V0cy4KCgkqIGRsbHMvd2luZXBzL29iamVjdHMuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIG5vbi1kZWxldGFibGUgc3lzdGVtIGJydXNoZXMgYW5kIHBlbnMgY3JlYXRlZCBieQoJVVNFUi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUpvaG4gR2lsbW9yZSA8Z251QHRvYWQuY29tPgoJQ2xlYW5lZCBpdCB1cCBzbyB0aGF0IGNvZGUgcGF0aHMgd2hpY2ggaGF2ZSB1bnN1cHBvcnRlZCBXU19TTyB2YWx1ZXMKCW5ldmVyIGFjdHVhbGx5IHBhc3MgdGhlbSB0byBVbml4IHN5c3RlbSBjYWxscy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIG1lbW9yeS92aXJ0dWFsLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBWaXJ0dWFsQWxsb2NFeC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIEdldFRpbWVab25lSW5mb3JtYXRpb24gYW5kIFRJTUVfWk9ORV9JRF9JTlZBTElELgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHRhYiBjb250cm9sIHRvIHVzZSBIVFRSQU5TUEFSRU5UIHdoZW4gbW91c2UgaGl0cyBjbGllbnQgYXJlYSwKCWJ1dCBub3QgdGFiIGNvbnRyb2wgYnV0dG9ucy4KCgkqIG1pc2MvY2Ryb20uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU2lsZW5jZSBzb21lIGJvZ3VzIGVycm9yIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkanVzdGVkIHRvIGFsbG93IE1GQyBjb21waWxhdGlvbjsgcHJldmVudCBkZWZpbml0aW9uIG9mIHN0cnVjdCBmZF9zZXQKCXdoaWNoIGNvbmZsaWN0cyB3aXRoIHRoZSBmZF9zZXQgdHlwZWRlZi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUFdORENMQVNTIGRlZmluaXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUFsbG93IGhhdmluZyBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQgdGV4dCBjb2xvciBmb3IgdGhlIGxpc3R2aWV3LgoKCSogb2xlL29sZTJubHMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgdGhlIHN5c3RlbSBsb2NhbCB0aW1lIGlmIGxwVGltZT1OVUxMLgoKMjAwMC0wOS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVwZGF0ZSBFU1AgY29ycmVjdGx5IG9uIHJldHVybiBmcm9tIGZsYXQgdGh1bmsgcm91dGluZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgbG9hZGVyL25lL21vZHVsZS5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIENhbGxUbzE2UmVnaXN0ZXIgcm91dGluZXMgdG8gdXBkYXRlIHJlZ2lzdGVyIGNvbnRleHQgYWZ0ZXIKCWNhbGwgcmV0dXJucy4gQ2FsbGVycyBhZGFwdGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBTdHIqIHByb3RvdHlwZXMgdG8gc2hsd2FwaS5oLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJTWVyZ2VkIG1haW4gV2luZSBjaGFuZ2VzIGludG8gQ29yZWwncyB0cmVldmlldyBjb250cm9sIHJld3JpdHRlbiBieQoJU2VyZ2UgSXZhbm92IGFuZCBBbmRyZXcgTGV3eWNreS4gIEZpeGVkIGl0ZW0gZm9jdXMgYmVoYXZpb3IgdG8gbWF0Y2gKCVdpbmRvd3MuICBGaXhlZCBpdGVtIHNlbGVjdGlvbiB3aGVuIHVuL2V4cGFuZGluZyBpdGVtcy4gIEltcGxlbWVudGVkCglXTV9TRVRSRURSQVcuICBBZGRlZCBDb3JlbCdzIENPTUNUTDMyX0NyZWF0ZVRvb2xUaXAoKSBoZWxwZXIgZnVuY3Rpb24KCXRvIGNvbW1jdHJsLmMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIGNvbnRyb2xzL2J1dHRvbi5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgkoTWVyZ2VkIGJ5IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPikKCUZpeGVkIHByb2JsZW0gd2l0aCBvcmlnaW4gZm9yIERTVF9DT01QTEVYIHN0eWxlLgoJRml4ZWQgaGFuZGxpbmcgb2YgRFNTX0RJU0FCTEVEIGFuZCBEU1NfREVGQVVMVCBzdHlsZXMuCgoJQWRkZWQgaGFuZGxpbmcgb2YgQlNfTVVMVElMSU5FIHN0eWxlLCBsYWJlbCBhbGlnbm1lbnQKCXN0eWxlcyAoQlNfUklHSFQsIGV0Yy4pIGFuZCBzb21lIGV4b3RpYyBzdHlsZXMgQlNfRkxBVCAob25seQoJcHVzaGJ1dHRvbnMgZm9yIG5vdyksIGFuZCBCU19QVVNITElLRS4KCglNb2RpZmllZCBsYWJlbCBkcmF3aW5nIHByb2NlZHVyZTogbm93IGFsbCBraW5kcyBvZiBidXR0b25zCgl1c2UgY29tbW9uIEJVVFRPTl9EcmF3TGFiZWwgZnVuY3Rpb24uIEFjdHVhbCBsYWJlbCBkcmF3aW5nIGlzCglwZXJmb3JtZWQgYnkgRHJhd1N0YXRlVyBmdW5jdGlvbi4KCglHcm91cEJveCBtdXN0IHVzZSBXTV9DVExDT0xPUlNUQVRJQyBpbnN0ZWFkIG9mIFdNX0NUTENPTE9SQlROIG1lc3NhZ2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGdyYWRlIGFsc28gMTVicHAgdG8gMTZicHAgc3VyZmFjZXMuCgoyMDAwLTA5LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wb3MuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUtERSAxLnggaGFzIHByb2JsZW1zIHdpdGggdXNpbmcgWFNoYXBlQ29tYmluZU1hc2sgd2hlbiB0aGVyZSB3YXMgbm8KCXByZXZpb3VzIHJlZ2lvbi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXRTY3JvbGxJbmZvIDogZG9uJ3Qgc2hvdy9oaWRlIHNjcm9sbGJhciBpZiBubyBwYXJhbWV0ZXIgKG1pbnZhbCwKCW1heHZhbCkgY2hhbmdlLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUFkZGVkIG1pc3NpbmcgX192b2xhdGlsZV9fLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9nZGkvZ2RpLnNwZWMsIGZpbGVzL2ZpbGUuYywgbWlzYy9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBjb250cm9scy9idXR0b24uYywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGZpeGVzIGRlYnVnZ2VyIG91dHB1dAoJLSBnZXQgcmlkIG9mIHdyb25nIGNvbW1lbnRzCgktIGZpeCBjb21tZW50cwoJLSAuc3BlYyBzcGVsbGluZyBmaXgKCS0gaW1wcm92ZSB3YXJuaW5nIG1lc3NhZ2UKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RpbWUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCSJpbXBsZW1lbnRlZCIgR2V0U3lzdGVtVGltZUFkanVzdG1lbnQuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCB0cnkgdG8gZGVsZXRlIGEgd25kY2xhc3MgYmFja2dyb3VuZCBicnVzaCBpZiBpdCdzIGEgQ09MT1JfKgoJY29uc3RhbnQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglNYWtlIHN1cmUgTkNfSGFuZGxlTkNDYWxjU2l6ZSByZXR1cm5zIGEgdmFsaWQgcmVjdGFuZ2xlLgoJUGFpbnRpbmcgZmFpbHMgaWYgdGhlIHJlY3RhbmdsZSBpcyBpbnZhbGlkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglIaWRlIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgd2hlbiBsaXN0dmlldyBzdHlsZSBpcyBMVlNfTElTVC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdNX1VTRVJDSEFOR0VELgoKCSogZGVidWdnZXIvaW5mby5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBpbmNsdWRlL3RsaGVscDMyLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgdHBYWFggaW5zdGVhZCBvZiB0YlhYWCBpbiB0YWdUSFJFQURFTlRSWTMyLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgREdBIC8gREdBIDIgcGFsZXR0ZSBjcmVhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBhIG1lbW9yeSBsZWFrIGluIFgxMURSVl9HZXRUZXh0RXh0ZW50UG9pbnQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDktMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglBZGRlZCBXSU5FU0VSVkVSIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGFsbG93IG92ZXJyaWRpbmcgdGhlIG5vcm1hbAoJc2VydmVyIHNlYXJjaCBzZXF1ZW5jZS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJUmVtb3ZlZCBjaGRpcigiLyIpIHVudGlsIHdlIGhhdmUgcHJvcGVyIFVuaXggY3dkIG1hbmFnZW1lbnQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJSW1wbGVtZW50ZWQgUnRscFdhaXRGb3JDcml0aWNhbFNlY3Rpb24gYW5kIFJ0bHBVbldhaXRDcml0aWNhbFNlY3Rpb24uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBORV9Mb2FkRXhlSGVhZGVyIGVycm9yIGhhbmRsaW5nLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkZXIgLSBicm9rZW4gc2VhcmNoIGZvciBhbHJlYWR5IGxvYWRlZCBtb2R1bGVzLgoKCSogb2JqZWN0cy9kaWIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmFsbGJhY2sgY29kZSBmb3IgU3RyZXRjaEJsdCBvbiBSTEUgRElCcyB3aXRoIGdhcHMuCgoyMDAwLTA5LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBiZGZ0b3BjZiBjb21tYW5kLgoKCSogZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9zdHJlYW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKkZpbHRlciogZnVuY3Rpb25zLgoJTWlzYyBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBUQ01fR0VUUk9XQ09VTlQuCgoJKiBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbWlzc2luZyBsaWJyYXJ5IGRlcGVuZGVuY2llcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY2d1aWQuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBjZ3VpZC5oLgoKCSogZGxscy9kZHJhdy9kZ2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3Qgc3VwcG9ydCBER0Egd2hlbiBEaXJlY3RWaWRlbyBub3QgcHJlc2VudC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVVuaWZ5IFdNX1NFVFRFWFQgaGFuZGxpbmcgYW1vbmcgRGVmV2luZG93UHJvYzE2L0RlZldpbmRvd1Byb2NBL0RlZldpbmRvd1Byb2NXLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBdm9pZCBkaXZpZGUgYnkgemVybyB3aGVuIGxpc3Rib3ggc2V0IHRvIHplcm8gaGVpZ2h0LgoKCSogd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJU2ltcGxpZnkgYSBiaXQgTURJIGNoaWxkIHdpbmRvdyBjcmVhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJR2V0TWVudSBtaWdodCBiZSB1c2VkIHRvIGdldCBjaGlsZCB3aW5kb3cgaWQuCgoyMDAwLTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUdpb3Zhbm5pIFBhbmNvdHRpIDxnaW92YW5uaS5wYW5jb3R0aUBjZWRlY3JhLml0PgoJSXRhbGlhbiBrZXlib2FyZCBmaXhlcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglET1NGU19NYXRjaExvbmcgaWdub3JlZCBzZXZlcmFsIHRoaW5ncyBhYm91dCBmaWxlIG1hc2sgbWF0Y2hpbmcgZm9yCglsb25nIGZpbGUgbmFtZXMuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJRXJpayBIb2ZtYW4gPGVyaWsuaG9mbWFuQGExLm5sPgoJQWRkZWQgbWlzc2luZyBjb25zdCB0byBleHRlcm5hbCB0YWJsZXMgZGVmaW5pdGlvbnMuCgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9jb21tLmgsIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvY29tbS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIHNlcmlhbCBwb3J0IG9iamVjdCB0byB0aGUgc2VydmVyLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBNYWtlIHN1cmUgdG9vbHRpcHMgYXJlIGhpZGRlbiBiZWZvcmUgZGVsZXRpbmcgdGhlbS4KCS0gR2xpdGNoIGhhcHBlbmVkIHdoaWxlIG1vdmluZyBmcm9tIGEgdG9vbHRpcCB0byBhbm90aGVyIChmaXhlZCkuCgoJKiBvYmplY3RzL2RjLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSBHZXREZXZpY2VDYXBzMTYgKGhkYywgTlVNQ09MT1JTKSBub3QgcmV0dXJuIC0xIGZvciAxNiBiaXRzIHByb2dyYW1zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3VwcG9ydCBmb3IgY3A5NDkuCgoyMDAwLTA5LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2F0b20uYzogRml4ZWQgY3V0JnBhc3RlIHR5cG8uCgoJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194dmlkZW8uYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194dmlkZW8uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBwb3NzaWJpbGl0eSB0byB1c2UgWFZpZGVvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgYm90aCBjdXN0b21kcmF3IG1lc3NhZ2Ugc2VuZGluZyBhbmQgaGFuZGxpbmcgKGJhc2VkIG9mZgoJdGhlIHRyZWV2aWV3IG1ldGhvZCkgYXMgd2VsbCBhcyBMVlNfT1dORVJEUkFXRklYRUQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJRml4ZWQgYSBidWcgKGluY29ycmVjdCBzaXplIGluIG1lbW1vdmUpIHRoYXQgSSBpbnRyb2R1Y2VkIHdpdGggYW4KCWVhcmxpZXIgcGF0Y2guIFRlc3RlZCB3aXRoIHdvcmR2aWV3LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglQaGlsIENvbGUgPHVrcGdjQHAuY29sZS5lYXN5bmV0LmNvLnVrPgoJQWRkZWQgdHdvIGRpcmVjdG9yaWVzIHRvIGRlZmF1bHQgbm9uLXdpbmRvd3MgaW5zdGFsbC4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBuZXdlciAoQVNQSSAzLjAgPykgZnVuY3Rpb24gc3R1YnMgdG8gV05BU1BJMzIuCglCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU3lzdHJheSBzaG91bGQga2VlcCBhIGNvcHkgb2YgaXRzIGljb25zLgoKCSogc2VydmVyL3NvY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGFwdGVkIFdpbnNvY2sgdG8gTGludXggMi40IFRDUCBzb2NrZXQgcG9sbCgpIGJlaGF2aW91cgoJKHRoYW5rcyB0byBCZXJlbmQgT3pjZXJpIGZvciBmaW5kaW5nIHRoZSBwcm9ibGVtKS4KCgkqIHdpbmRvd3MvbWRpLmM6IFNlcmdlIEl2YW5vdgoJRGVsYXkgZGVzdHJveWluZyBtZW51IGVudHJ5IHVudGlsIGFsbCBtZXNzYWdlcyBhcmUgc2VudC4KCjIwMDAtMDktMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvYXRvbS5jOgoJRml4ZWQgVW5pY29kZSBjb252ZXJzaW9uIGluIEdldEF0b21OYW1lQSAodGhhbmtzIHRvIEdlcmFyZCBQYXRlbCkuCgoJKiBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9jb21wb2JqLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGQgamlzeDAyMTIgZW5jb2RpbmcuCglSZW1vdmUgRklYTUVzIGZvciBpbXBsZW1lbnRlZCBEQkNTIGhhbmRsaW5nLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkZWQgbWlzc2luZyBjb21tYS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZXdyb3RlIHF1aWNrc29ydCB0byBzb2x2ZSBpbmZpbml0ZSByZWN1cnNpb25zIFdpbjk4IGV4cGxvcmVyLmV4ZS4KCjIwMDAtMDktMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZSB4dGVybSBtb3VzZSB0cmFja2luZyBtb2RlIHRvIEJUTl9FVkVOVF9NT1VTRSAodHJhY2sgaWYgcHJlc3NlZCkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQXZvaWQgY3Jhc2ggb24gZW1wdHkgY29tbWFuZC1saW5lLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgdHdvIG1pc3NpbmcgY2FzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCVVzZSBTZXRESUJpdHMgaW5zdGVhZCBvZiBTdHJldGNoRElCaXRzIChpbiBBTklNQVRFX1BhaW50RnJhbWUpLgoKMjAwMC0wOS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9idWlsdGluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBdm9pZCBidWZmZXIgb3ZlcmZsb3dzIGluIGJ1aWx0aW4gZGxsIGxvYWRpbmcgKHdpdGggdGhlIGhlbHAgb2YgRG1pdHJ5CglUaW1vc2hrb3YpLgoKCSogd2luZG93cy9tZGkuYzogSGVubmluZyBIb2ZmbWFubgoJQXVnbWVudCBtZW51IHdoZW4gYSBtZGkgd2luZG93IHN0YXJ0cyBtYXhpbWl6ZWQuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY2lzIEJlYXVkZXQKCU1ESSBQYXRjaCB3aGljaCBmaXhlcyBwcm9ibGVtcyBpbiBQUiwgUVAsIFdQIGFuZCBQYXJhZG94LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRG9uJ3QgdXNlIGNvcGllcyBvZiBjcml0aWNhbCBzZWN0aW9ucyBtYWRlIGJ5IG1lbWNweSgpCglBZGRlZCBtaXNzaW5nIFdJTkFQSXMKCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4IGZvciBkZWJ1Z2dlciBkaXNhc3NlbWJseSBiZWluZyBvZmYgYnkgb25lIGJ5dGUgYWZ0ZXIgdXNpbmcgbmV4dGkKCW9uIGEgImNhbGwiIGluc3RydWN0aW9uLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglXaGVuIGNoZWNraW5nIHRoZSBzb2NrZXQgcmV0dXJuIGJ5IHRoZSBzZXJ2ZXIgcmVxdWVzdCwgd2Ugc2hvdWxkIGRvIGEKCSJzaWduZWQiIGNoZWNrLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIENvR2V0UFNDbHNpZCgpLgoKMjAwMC0wOC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVjb25mOgoJUGhpbCBDb2xlIDx1a3BnY0BwLmNvbGUuZWFzeW5ldC5jby51az4KCVRoZSBQYXRoIHZhcmlhYmxlIGluIHRoZSBjcmVhdGVkIC53aW5lcmMgbXVzdCBiZSBpbiBkb3MgZm9ybWF0LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglQaGlsIENvbGUgPHVrcGdjQHAuY29sZS5lYXN5bmV0LmNvLnVrPgoJU21hbGwgZml4LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgYSBzdHJpbmcgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CgktIGltcHJvdmVkIEFDU19UUkFOU1BBUkVOVCBhbmQgQUNTX0NFTlRFUiBzdXBwb3J0CgktIGFkZGVkIFJMRTggaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbgoJLSBlYWNoIGFuaW1hdGlvbiBpcyBub3cgY29udHJvbGxlZCBieSBpdHMgb3duIFdpbmRvd3MgdGhyZWFkCgktIGFkZGVkIHVzZSBvZiBDcml0aWNhbCBTZWN0aW9ucyBpbiB0aGUgV01fUEFJTlQgaGFuZGxlci4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsYWNlZCBVU0VSMzIuRExMIHVzZSBieSBoYXJkY29kZWQgdGFibGVzIGZvciBWa0tleVNjYW5BIGFuZAoJTWFwVmlydHVhbEtleUEuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NvbW0uYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ29udmVydGVkIGEgbG90IG9mIHNlcnZlciByZXF1ZXN0cyB0byB0aGUgbmV3IGV4Y2VwdGlvbiBoYW5kbGluZwoJbWVjaGFuaXNtLgoKMjAwMC0wOC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglGaXhlZCBub24tT3BlbkdMIGNvbXBpbGUuCgoJKiBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9xdWV1ZS5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9zeW5jLmM6CglBZGRlZCBleGNlcHRpb24gaGFuZGxpbmcgd3JhcHBlciB0byBhIG51bWJlciBvZiBzZXJ2ZXIgcmVxdWVzdHMuCglDaGFuZ2VkIGEgZmV3IHJlcXVlc3RzIHRvIHVzZSB0aGUgbmV3IHZhcmFyZyBtZWNoYW5pc20uCgoyMDAwLTA4LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIG1pc2MvY2Ryb20uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHZlcmJvc2UgQ0QtUk9NIHNlcmlhbCBudW1iZXIgd2FybmluZ3MgYW5kIHNvbWUgc3BlbGxpbmcgZXJyb3JzLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglOZXdiaWUgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBmb3IgM0QgY3JlYXRpb24gZmFpbHVyZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTW9yZSBpbXBsZW1lbnRhdGlvbgoJLSBTaG91bGQgYmUgYWJsZSB0byBlbnVtZXJhdGUgc2Vzc2lvbnMgYW55d2hlcmUgd2l0aCBhdCBsZWFzdCB0Y3AvaXAKCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBtYWNyb3MgdGhhdCB3aWxsIGJlIG5lZWRlZCB0byBzdXBwb3J0CglyZWVudHJhbnQgc2VydmVyIHJlcXVlc3RzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9pbnB1dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBmaXggb25lIGxvY2tpbmcgaWdub3JhbnQgcmV0dXJuIDA7IGluIE1TR19TZW5kTWVzc2FnZUludGVyVGhyZWFkKCkKCS0gZml4IGEgY3Jhc2ggaW4gUVVFVUVfUmVtb3ZlU01TRygpCgktIGNvbnZlcnQgc29tZSBxdWV1ZSBXQVJOKCkgdG8gRVJSKCkKCS0gc3BhaWxlbmcgZmlrc2VzCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFsd2F5cyBjYWxsIExJU1RWSUVXX1NldFNlbGVjdGlvbigpIGZvciBhbiBpdGVtLCBldmVuIGlmIHRoYXQgaXRlbQoJaGFzIGJlZW4gc2VsZWN0ZWQgYmVmb3JlLCBpbiBvcmRlciB0byBsZXQgb3RoZXIgaXRlbXMgZ2V0IGVyYXNlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJQ29udmVydCB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgaWQgdG8gYSBnbHlwaCBpZCBpbgoJWDExRFJWX0dldFRleHRFeHRlbnRQb2ludC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCS0gZW5oYW5jZWQgcmVwb3J0aW5nIG9mIHVuc3VwcG9ydGVkIFggZm9udCBlbmNvZGluZ3MKCS0gYWRkZWQgLWNwLSotIGRhdGEgdG8gZm9udCBlbmNvZGluZyBsb29rdXAgc3RydWN0dXJlcwoKMjAwMC0wOC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2Mvb3B0aW9ucy5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJLSBBbHdheXMgc3RvcmUgdGhlIGZ1bGwgcGF0aCBuYW1lIG9mIDMyYml0IG1vZHVsZXMgaW4gV0lORV9NT0RSRUYKCS0gQWRkIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgcGF0aCBuYW1lcyB3aXRoIHRoZSAtLWRsbCBjb21tYW5kIGxpbmUKCSAgb3B0aW9uCgktIEFkZCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHRoZSAtLWRsbCBjb21tYW5kIGxpbmUgb3B0aW9uIHNldmVyYWwKCSAgdGltZXMuCgktIE5vdGU6IFRoZSBjb2xvbi1zaWduIGlzIG5vdyBleGNoYW5nZWQgd2l0aCB0aGUgcGx1cy1zaWduLCBhcyBpdCBpcwoJICBwYXJ0IG9mIGRvcyBwYXRoIG5hbWVzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBhIHdpbmUgcnBtIHVuaW5zdGFsbCBzZWN0aW9uIHRvIHdpbmVpbnN0YWxsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJRG8gbm90IGNoZWNrIGZvciBzeXN0ZW0gbWVudSBpZiB0aGUgd2luZG93IGhhcyBzdHlsZSBXU19FWF9UT09MX1dJTkRPVy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgQVJHQiAxNTU1IGZvcm1hdAoJLSBmaXhlZCByZWZjb3VudCBwcm9ibGVtIGZvciBBZGQvRGVsZXRlQXR0YWNoZWRTdXJmYWNlCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglGaXhlZCB0eXBvIGluIEhLRVlfQ1VSUkVOVF9DT05GSUcgbmFtZS4KCgkqIGRsbHMva2VybmVsL21lc3NhZ2VzL3dpbmVycl9lbnUubWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBtaXNzaW5nIG1lc3NhZ2UgdG8gd2luZXJyX2VudS5tYy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUluY3JlYXNlIG51bWJlciBvZiBzdXBwb3J0ZWQgYXJncyBmb3IgV09XX0NhbGxQcm9jMzJXMTYgZnJvbSAxMSB0byAxMwoJKGZvciBDcmVhdGVTZXJ2aWNlKS4KCgkqIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBtc2Rvcy92eGQuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJU3R1YiBzdXBwb3J0IGZvciBpbnQyZi9heD0xNjg0L2J4PTAwMjcgKFZYRExEUikuCgoyMDAwLTA4LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBsb2FkZXIvdGFzay5jOgoJUmVtb3ZlZCBjYWxscyB0byBDb252ZXJ0VG9HbG9iYWxIYW5kbGUgYW5kIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL250ZGRrLmg6CglTaW1wbGlmaWVkIHJvb3Qga2V5IGhhbmRsaW5nIG5vdyB0aGF0IHRoZSBzZXJ2ZXIgc3VwcG9ydHMgYSByZWFsIHJvb3QKCWtleS4gRml4ZWQgYSBmZXcgcHJvdG90eXBlcy4gSW1wbGVtZW50ZWQgTnREZWxldGVLZXkvTnREZWxldGVWYWx1ZUtleS4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaDoKCUZpeGVkIGRlYnVnc3RyX2FzL3VzIHByb3RvdHlwZXMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvY29tbS5jLCBtaXNjL2V4dF9kZWJ1Z2dlci5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgY29uc29sZS94dGVybS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGRsbHMvd2luaW5ldC9mdHAuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gbWFkZSB0aGUgTUlESSBzZXF1ZW5jZXIgZXJyb3IgbWVzc2FnZSBtdWNoIGJldHRlciBmb3IgY29uZnVzZWQgdXNlcnMKCSAgdG8gYmUgZm91bmQgb24gI1dpbmVIUQoJLSB1c2Ugc3RyZXJyb3IgaW5zdGVhZCBvZiBlcnJubyBhdCBpbXBvcnRhbnQgcGxhY2VzCgktIGdvdCByaWQgb2YgSEFWRV9TVFJFUlJPUiBtYWNybwoJLSByZW1vdmVkIHNvbWUgI2luY2x1ZGU6cyAoaG9wZWZ1bGx5IEkgZGlkbid0IGJyZWFrIGFueXRoaW5nKQoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlcGxhY2VkIGNDdXJJbWFnZSBieSBjTWF4SW1hZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJIkZpeGVkIiBob3JyaWJseSBtaXNhbGlnbmVkIHBhZ2VzIGluIHByb3BlcnR5IHNoZWV0cyBvZiBhcHBhcmVudGx5CgluZXdlciBJbnN0YWxsU2hpZWxkcy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVnaXN0ZXIgV2luZSBQb3N0c2NyaXB0IERyaXZlciBhcyAiV0lORVBTIiwgIldJTkVQUy5ETEwiIGFuZAoJIldJTkVQUy5EUlYiIHRvIGFsbG93IGFuIGVhc3kgY29uZmlndXJpbmcgZm9yIHVzZXJzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJICBpbXBsZW1lbnRzIERyYXdUZXh0IGZvciBjcDkzMi4KCgkqIGRsbHMvdXNlci9kZGVtbC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9uJ3QgbWFrZSBEREVNTCBtdXRleGVzIGdsb2JhbCBhbnkgbW9yZS4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGRlZCBhIHJlYWwgcm9vdCBrZXkgYW5kIHNpbXBsaWZpZWQgY3JlYXRpb24gb2YgdGhlIEhLRVlfKiBzcGVjaWFsIHJvb3Qga2V5cy4KCURvIG5vdCBwcmVmaXggYWxsIGtleXMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgdG9wIGtleSB3aGVuIHNhdmluZyB0byBhIGZpbGUuCglUcnkgdG8gbG9hZCAkV0lORVBSRUZJWC9jb25maWcgaW50byB0aGUgV2luZSBjb25maWcgYnJhbmNoIGF0IHN0YXJ0dXAuCgoJKiBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBpbmNsdWRlL21zYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIG1vc3Qgb2YgJypGb3JtYXQqJyBBUEkuCglJbXByb3ZlZCBpbnRlcm5hbCBvYmplY3QgYW5kIG1lc3NhZ2VzIGhhbmRsaW5nLgoJU3RhcnRlZCBzb21lICcqRmlsdGVyKicgZnVuY3Rpb25zLgoJRml4ZWQgc3RhbmRhcmQgaGVhZGVycyBmb3IgV2luZWxpYi4KCUZpeGVkIGFjbU1ldHJpY3MuCgoyMDAwLTA4LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL250ZGRrLmg6CglGaXhlZCBSdGwqIHN0cmluZyBmdW5jdGlvbnMgZm9yIHByb3BlciBNQkNTL2NvZGVwYWdlIHN1cHBvcnQuIEFkZGVkIGEKCWZldyBtb3JlIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBUQVNLX0NyZWF0ZSBjYWxsIHRvIEtFUk5FTCBpbml0aWFsaXNhdGlvbiByb3V0aW5lLgoJQ2xlYXIgbGFzdCBlcnJvciBjb2RlIGJlZm9yZSBjYWxsaW5nIG1haW4gZW50cnkgcG9pbnQgKHJlcG9ydGVkIGJ5CglKYW1lcyBKdXJhbikuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3VzZXIuc3BlYywgbWVtb3J5L3N0cmluZy5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgV0lOQVBJIGlzc3VlcyB3aXRoIDE2LWJpdCBzcGVjIGZpbGVzICh0aGFua3MgdG8KCU1hcmN1cyBNZWlzc25lcikuCgoJKiBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmgsIGluY2x1ZGUvZHBsYXkuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvZ3VpZC5jLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBpbml0LmgsIGRsbHMvZHBsYXl4L2RwbGF5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBJbXBsZW1lbnRlZCBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBvZiBzZXJ2aWNlIHByb3ZpZGVycwoJLSBDcmVhdGVkIHNlcnZpY2UgcHJvdmlkZXIgQ09NIG9iamVjdAoJLSBMb3RzIG9mIGRwbGF5L2RwbG9iYnkgaW1wbGVtZW50YXRpb24vZml4ZXMKCS0gQ2xlYW4gdXAgb2Ygb2xlL2d1aWQuYwoKCSogb2JqZWN0cy9kYy5jOiBCYWNrZWQgb3V0IGZvbnQgY29kZXBhZ2UgY2hhbmdlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1pc2MvY29tbS5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvaW50MmYuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNaW5vciBjb3NtZXRpYyBjaGFuZ2VzLgoKCSogbWlzYy90d2Vhay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglDbGVhbnVwIGFuZCBzcGVlZHVwIG9mIGluaXQgY29kZS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlc3RvcmVkIHRoZSBoUHNldWRvQml0bWFwIGhhY2sgZm9yIHByb2dyYW1zIGRlbGV0aW5nIHRoZSAxeDEgYml0bWFwCglpbiBtZW1vcnkgRENzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUJhY2tlZCBvdXQgZm9udCBjb2RlcGFnZSBjaGFuZ2UuCgoJKiBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRoZSBkaXNwbGF5aW5nIG9mIHRoZSBGT1VSQ0MgY29kZXMgaW4gX2R1bXBfcGl4ZWxmb3JtYXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVjb3JkaW5nIGZvcm1hdCBzZXR0aW5ncyAoMTYgYml0IHdhcyBicm9rZW4pIGFuZCByZWVudHJhbmN5Cglpc3N1ZXMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcHJvdmVkIGEgYml0IHRoZSBmb2xkZXIgYnJvd3NpbmcgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU1hdHRoZXcgTGFrZSA8TWFzdGVyUl9MQHlhaG9vLmNvbT4KCUFkZGVkIExITkQuCgoJKiB0b29scy93cmMvLmN2c2lnbm9yZSwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJRml4ZWQgYSBMQUxSKDIpIHByb2JsZW0gd2hpbGUgc2Nhbm5pbmcgdXNlcnR5cGUgcmVzb3VyY2VzIHdoaWNoIGhhZAoJaWRlbnRpZmllcnMgZm9yIGJvdGggbmFtZSBhbmQgdHlwZS4KCgkqIG1pc2Mvd3NwcmludGYuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglVc2UgaW50IGluc3RlYWQgb2YgQ0hBUi9XQ0hBUiBpbiB2YV9hcmcoKSAoZml4ZXMgZ2NjLWN1cnJlbnQgY29tcGlsZQoJcHJvYmxlbSkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2UgcGl4ZWwgZm9ybWF0IGZvciAyNCBCUFAgc3VyZmFjZXMgd2hlbiB0aGUgRERyYXcgQlBQIGlzIDMyLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldE9iamVjdEE6IHVubG9jayB0aGUgb2JqZWN0IGFnYWluIGV2ZW4gaW4gY2FzZSBvZiBmYWlsdXJlLgoKMjAwMC0wOC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUZpeGVkIGZpbmFsbHkgaGFuZGxlciBuYW1lLgoKCSogd2luZG93cy9jbGFzcy5jOgoJRml4ZWQgUmVnaXN0ZXJDbGFzcyBsYXN0IGVycm9yIGNvZGUgb24gYXRvbSBjcmVhdGlvbiBmYWlsdXJlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglDbGVhbmVkIHVwIG1ham9yIHVnbGluZXNzIGluIF9fbGZDaGVja1N1bS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglMYXJnZSBjYXB0aW9uIGljb25zIHNob3VsZCBlbmQgaW4gJy4uLicgd2hlbiB0aGV5IGFyZSBhYmJyZXZpYXRlZC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglGb3IgdGhlIHRyYW5zcGFyZW5jeSBpc3N1ZSwgaW1wbGVtZW50ZWQgYSBzd2l0Y2gtY2FzZSBmb3IgdGhlIGJpdGNvdW50CgkoYml0IHBlciBwaXhlbCkgb2YgdGhlIGFuaW1hdGlvbiBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaW5lIHdhcyBub3QgZHJhd2luZyB0cmFja2JhcnMgd2l0aCBtaW5pbXVtIHJhbmdlcyBvZiBtb3JlIHRoYW4gMAoJY29ycmVjdGx5LgoKMjAwMC0wOC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSByZW1vdmVkIHVubmVjZXNzYXJ5IHJlY3Vyc2lvbgoJLSB1cG9uIHF1ZXJ5IGZhaWx1cmUgb24gbWFpbiBwcmltYXJ5IGxjaWQgYW5kIHNlY29uZGFyeSBsY2lkLAoJICBhdHRlbXB0cyBhIHF1ZXJ5IG9uIHN5c3RlbSBsY2lkICgwKQoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGlmMTYzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlcyBmb3IgcmVhZGluZyBsYXRjaGVkIHZhbHVlcyB3aXRoIHBvcnRzIDB4NDAtMHg0My4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEb24ndCBjcmFzaCB3aGVuIGNhbGxpbmcgRGlyZWN0RHJhd1N1cmZhY2U6OkVudW1BdHRhY2hlZFN1cmZhY2VzIG9uIGEKCXN1cmZhY2Ugd2l0aCBubyBhdHRhY2hlZCBzdXJmYWNlcy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWxsb3cgRm9ybWF0TWVzc2FnZSB0byBsb2FkIFVuaWNvZGUgc3RyaW5nIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIEFQQyBzdXBwb3J0IGluIHdhaXRhYmxlIHRpbWVycy4KCgkqIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGxzIHRvIENMSVBQSU5HX1VwZGF0ZUdDUmVnaW9uLiBGaXhlZCBQYXRCbHQgdG8KCXVzZSBEQ19HZXREQ1VwZGF0ZS4KCjIwMDAtMDgtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDA4MjEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDgtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gZG9uJ3QgcmV0dXJuIEZBTFNFIGZvciBzeXN0ZW0gcHJvY2VzcyBjaGFuZ2VzCgktIFNIVVRET1dOX05PUkVUUlkgaXMgMSBhbmQgaGFzIHRvIGJlIGluIHdpbmJhc2UuaAoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJlZ2lubmluZyBvZiBzb21lIHNpbXBsZSBvcHRpbWl6YXRpb24gb2YgdGhlIGxpc3R2aWV3CglkcmF3aW5nLiBTcGVjaWZpY2FsbHkgaXQgcmVkdWNlcyBmbGlja2VyIHdoZW4gc2VsZWN0aW9uIGNoYW5nZXMuCgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglUcmFuc2Zvcm0gZXZlcnkgRVJSKCkgdG8gV0FSTigpIGluIE1ha2VQcm9jSW5zdGFuY2UuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2FsbCBXcml0ZU91dFByb2ZpbGVzMTYgdG8gbWFrZSBzdXJlIHRoYXQgbGFzdCBwcm9maWxlIGdldHMgd3JpdHRlbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURpc2FibGUgdGhlIG93bmVyIG9mIGEgbW9kYWwgZGlhbG9nIGJveCBqdXN0IGJlZm9yZSBjcmVhdGluZyB0aGUKCWRpYWxvZyB3aW5kb3cuCgoJKiBmaWxlcy9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShmcm9tIElCTSBUb3BQYWdlIHBhdGNoKSByZXR1cm4gY29ycmVjdCBlcnJvciBmb3IgYWxyZWFkeSBleGlzdGluZwoJZmlsZS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglIYW5kbGUgdGhlIExCX0dFVFRFWFQgYW5kIENCX0dFVExCVEVYVCBjYXNlcyBmb3IgMzJXIHRvIDE2IG1hcHBpbmcuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglFbmFibGVzIHNob3dpbmcgb2YgaGlkZGVuIHdpbmRvd3Mgd2hlbiB0aGUgYXBwIGFzayAqb25seSogdG8gbWF4aW1pemUgaXQuCgoyMDAwLTA4LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUhhbmRsZSB0aGUgY29kZXBhZ2Ugb2YgZm9udHMgaWYgc3VwcG9ydGVkIGJ5IHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGludGVybmFsIGNoYXJzZXRzIGZvciBzdXBwb3J0aW5nIERCQ1MgY2hhcnNldHMuCgoJKiBvYmplY3RzL2RjLmM6CglGaXhlZCBHREkgbG9ja2luZyBpbiBHZXREZXZpY2VDYXBzLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUthaSBNb3JpY2ggPG1haWxAa2FpLW1vcmljaC5kZT4KCUZpeGVkIGJ1ZyBpbiByZXBlYXRlZGx5IGljb25pc2F0aW9uLCBjb2RlIGNsZWFudXAuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgWDExRFJWX0RldmljZUNhcHMubnVtQ29sb3JzIGFjY29yZGluZyB0byBkb2MgKGZpeGVzIEN1YmFzZSBWU1QyNAoJc3RhcnR1cCBwcm9ibGVtKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgRHVwbGljYXRlSWNvbigpLgoKCSogbXNkb3MvaW50MTUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglTdHViYmVkIElOVCAxNSBmdW5jdGlvbiA4NGguCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJLSBTZXBhcmF0ZSBhcHBsaWNhdGlvbiBjYWxscyB0byBTaG93T3duZWRQb3B1cHMgZnJvbSBXaW5lIGNhbGxzIChpbgoJICBFVkVOVF9NYXBOb3RpZnkpIGJ5IGludHJvZHVjaW5nIGFuIGludGVybmFsIGZ1bmN0aW9uLgoJLSBGaXggU2hvd093bmVkUG9wdXBzIHNvIGl0IHNlbmRzIG1lc3NhZ2VzIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcwoJICBpbiBXaW5kb3dzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZW1vdmVkIGRpcmVjdCBjYWxscyB0byBUUkVFVklFV19SZWZyZXNoKCkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBwbGF5YmFjayBvZiBFTVJfUE9MWUJFWklFUntUT30xNiwgRU1SX1BPTFlMSU5FMTYgYW5kCglFTVJfUE9MWVBPTFlMSU5FLgoKCSogaW5jbHVkZS9tYWluLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBuZXcgbGFuZ3VhZ2UgZGV0ZWN0aW9uIHNjaGVtZSB0aGF0IHVzZXMgTkxTIGRhdGEgYmFzZSBpbnN0ZWFkIG9mCgloYXJkIGNvZGVkIHZhbHVlcy4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglQYXNzIHRoZSB0eXBlL25hbWUgYXMgYSBDIHN0cmluZyBpbnN0ZWFkIG9mIGFuCglJTUFHRV9SRVNPVVJDRV9ESVJfU1RSSU5HX1Ugc3RydWN0dXJlIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KCjIwMDAtMDgtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG1lbW9yeS9sb2NhbC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS9nZGkuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCUFkZGVkIHN5c2xldmVsIGxvY2tpbmcgZm9yIEdESSBvcGVyYXRpb25zLgoJUHJvcGFnYXRlIHRoZSBjaGFuZ2VzIHRocm91Z2ggdGhlIGdyYXBoaWNzIGNvZGUuCgoJKiBtaXNjL2Nkcm9tLmM6CglFZCBTbm93IDxlZF9zbm93QHR0bWVuZ2luZWVyaW5nLmNvbT4KCUNvcnJlY3RlZCBzZXJpYWwgbnVtYmVyIGdlbmVyYXRpb24gZm9yIENEJ3Mgd2l0aCAxIG9yIDIgdHJhY2tzLgoKMjAwMC0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY2Ryb20uYywgZmlsZXMvZG9zX2ZzLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUZpeGVkIHJldHVybiB2YWx1ZSBvZiBDRFJPTV9HZXRMYWJlbCBpZiBDRFJPTV9PcGVuIGZhaWxlZCAoZS5nLiBubwoJRGV2aWNlIGVudHJ5IGZvciBkcml2ZSBpbiB3aW5lLmNvbmYpLgoKCSogaW5jbHVkZS94MTFmb250LmgsIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglTZXBhcmF0ZSBHZXRUZXh0TWV0cmljcyBhbmQgaW1wbGVtZW50IGl0IGZvciBTQkNTL1VuaWNvZGUvY3A5MzIuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUZpeGVkIFNUQVRVU19HZXRUZXh0VyBpbiByZWdhcmQgdG8gTlVMTCBwb2ludGVycy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBcHBlbmQgLkRSViB0byBuYW1lIG9ubHkgaWYgbm8gZXh0ZW5zaW9uIHByZXNlbnQuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgY3Jhc2ggaWYgcGF0aCBpcyBOVUxMIGluIERFQlVHX1Byb2Nlc3NFbGZGaWxlRnJvbVBhdGguCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUVkIFNub3cgPGVkX3Nub3dAdHRtZW5naW5lZXJpbmcuY29tPgoJQ2xlYW4gb3V0IHRoZSBoYWNrIG9uIEJBU1MvVFJFQkxFIGFuZCBzdXBwcmVzcyB0aGVtIGluIHRoZSBtYXNrIGFzIHdhcwoJcmVjb21tZW5kZWQgb2ggc28gbG9uZyBhZ28uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJLSBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiBUT09MQkFSX0dldFRleHQoKSBhbmQgbWFjcm8gVE9PTEJBUl9IYXNUZXh0KCkgdG8KCSAgZGV0ZXJtaW5lIHdoZXRoZXIgd2UgbmVlZCB0byBjYWxsIEludmFsaWRhdGVSZWN0KCkgd2l0aCBiRXJhc2Ugb2YgVFJVRSBvcgoJICBGQUxTRS4gIFJlZHVjZXMgYmFja2dyb3VuZCBlcmFzZXMgaW4gbm9uLXRleHQgdG9vbGJhcnMgYnkgODAtODUlLgoJLSBGaXhlZCBidXR0b24gc3RhdGUgbm90IGJlaW5nIHVwZGF0ZWQgcHJvcGVybHkgd2hlbiBMQlVUVE9ORE9XTiBhbmQgY3Vyc29yCgkgIGxlYXZlcyB0aGUgdG9vbGJhci4KCS0gUmVtb3ZlZCBGSVhNRSgpIGluIFRPT0xCQVJfRHJhd1N0cmluZyBmb3IgYnRuUHRyLT5pU3RyaW5nID09IC0xLCByZXBsYWNlZAoJICB3aXRoIGEgc291cmNlIGNvZGUgY29tbWVudC4KCS0gUmVtb3ZlZCB1bmVjZXNzYXJ5IGNhbGwgdG8gVE9PTEJBUl9DYWxjVG9vbGJhcigpIGluCgkgIFRPT0xCQVJfR2V0SXRlbVJlY3QoKS4gIE9wdGltaXplZCBUT09MQkFSX0NhbGNTdHJpbmdzKCkuIEZpeGVzIHZlcnkKCSAgc2xvdyByZXNwb25kaW5nIHRvb2xiYXJzIGluIFVsdHJhZWRpdCBkdWUgdG8gcHJvY2Vzc2luZyBUQl9HRVRJVEVNUkVDVAoJICBtZXNzYWdlcy4KCS0gT3B0aW1pemVkIFRPT0xCQVJfU2V0SW50ZW50KCksIFNldFJvd3MoKSBhbmQgU2V0U3R5bGUoKS4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmM6CglNaWtlIE1jQ29ybWFjayAgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglTYXZlIEdFVF9BUENTIGRhdGEgYmVmb3JlIGNhbGxpbmcgYW55IGFzeW5jaHJvbm91cyBwcm9jZWR1cmUgY2FsbHMsIGluCgljYXNlIHRoZSBzZXJ2ZXIgaXMgY2FsbGVkIGR1cmluZyB0aGUgQVBDLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgaW5jbHVkZS9kaWFsb2cuaCwgd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVHVybnMgdGhlIGhhbmRsaW5nIHRvIHB1cmUgMTYgYml0cywgcmVtb3ZlIHJlZmVyZW5jZXMgdG8gZGlhbG9nLmguCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglSZW1vdmUgdW51c2VkIGNyaXRpY2FsIHNlY3Rpb24gZ2xvYmFsIHZhcmlhYmxlIFBSSU5UMzJfUmVnaXN0cnlCbG9ja2VyLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWRzIGNoYW5naW5nIDIgbGV2ZWxzIHdoZW4gY2xpY2tpbmcgLi4gaW4gdGhlIGRpcmVjdG9yeSBsaXN0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglTdHViYmVkIFNldENvbnNvbGVJbnB1dEV4ZU5hbWVBL1cuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglXTV9HRVRGT05UIHNob3VsZCByZXR1cm4gYSByZWFsIGZvbnQgaGFuZGxlIGluc3RlYWQgb2YgTlVMTC4KCjIwMDAtMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCU5pY2xhcyBLYXJsc3NvbiBNQVRFIDxua2FybHNzb0ByYS5hYm8uZmk+CglXQVRDT00gY29tcGlsZWQgcHJvZ3JhbXMgbGVhdmUgVmlydHVhbFNpemUgdG8gemVybyB3aGljaCB0cmlnZ2VycyB0aGUKCXZpcnVzIGNoZWNrLiBVc2UgU2l6ZU9mUmF3RGF0YSBpbnN0ZWFkLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglOaWNsYXMgS2FybHNzb24gTUFURSA8bmthcmxzc29AcmEuYWJvLmZpPgoJSW1wbGVtZW50ZWQgQUNTX0NFTlRFUiBmb3IgYW5pbWF0aW9uIGNvbnRyb2xzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglBdm9pZCBnb2luZyBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlbG9jYXRpb24gc2VjdGlvbi4gU2tpcCBzYW5pdHkgY2hlY2tzCglmb3IgZW1wdHkgcmVsb2NhdGlvbiBibG9ja3MuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgYmFja2dyb3VuZCB0cmFuc3BhcmVuY3kgb24gYW5pbWF0aW9uIGNvbnRyb2wgZm9yIGF2aQoJY29tcG9zZWQgb2YgOCBicHAob3IgbGVzcykgaW1hZ2UuIEkgYWRkZWQgc3VwcG9ydCBmb3IgOCBicHAgb3IgbW9yZSwKCWJ1dCBpdCBoYXMgbm90IGJlZW4gdGVzdGVkLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglXaGlsZSBkcmFnZ2luZywgY2F0Y2gga2V5Ym9hcmQgbWVzc2FnZXMgYmV0d2VlbiBXTV9LRVlGSVJTVCBhbmQKCVdNX0tFWUxBU1QsIG5vdCBqdXN0IFdNX0tFWUZJUlNULgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUlmIGEgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBpbiBMb2FkTGlicmFyeUV4MzJXMTYsIGNhbGwgTG9hZExpYnJhcnlFeAoJYW55d2F5LCBzaW5jZSBpdCBtaWdodCBiZSBhIGJ1aWx0aW4gbW9kdWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzZWQgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBldmVyeSBhcmd1bWVudCBpbiBDb21tYW5kTGluZVRvQXJndi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGQgYW4gZXJyb3IgbWVzc2FnZSBpZiBkZXZtb2RlIHN0cnVjdHVyZSBpbiByZWdpc3RyeSBpcyBpbnZhbGlkOwoJYXR0ZW1wdCB0byBwcm92aWRlIHBsYXVzaWJsZSB2YWx1ZXMuCgoyMDAwLTA4LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS94MTFmb250LmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGZvciBEQkNTKGNwOTMyL2NwOTQ5KSBjb2RlcGFnZSBjb252ZXJzaW9uLgoJSW1wbGVtZW50ZWQgY3A5MzIgaGFuZGxpbmcgcGFydGx5KGJ1dCBzdGlsbCBpbmNvbXBsZXRlKS4KCUFkZGVkIHN1cHBvcnRpbmcgbXVsdGlwbGUgZm9udHMgZm9yIERCQ1MgaGFuZGxpbmcuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9zdGFicy5jLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIEVMRiBmaWxlcyBsb29rdXAgZm9yIHN5bWJvbGljIGluZm8uCgoJKiBkZWJ1Z2dlci9icmVhay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGluIGJyZWFrIGNvbW1hbmQuCgoyMDAwLTA4LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IHJldHVybiB2YWx1ZSB0byAxNiBiaXRzIGZvciAxNiBiaXQgaG9vazsgcmVtb3ZlIGxlYWRpbmcgc3BhY2UgZm9yCglmaWxlIHNwZWNpZmljYXRpb24uCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVRocmVhZHMgd2l0aG91dCBhY3RpdmUgb3IgZm9jdXMgd2luZG93IHNob3VsZCBub3QgcmVjZWl2ZSBrZXlib2FyZAoJbWVzc2FnZXMuCgoJKiBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglJbXBsZW1lbnRlZCBTRUNfSU1BR0UgbWFwcGluZ3MgYW5kIHNoYXJlZCBQRSBzZWN0aW9ucyAod2l0aCB0aGUgaGVscAoJb2YgUGV0ZXIgR2FudGVuKS4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2xzdHIuYywgbWlzYy9tYWluLmMsIG1zZG9zL2ludDIxLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jOgoJTW92ZWQgQ2hhclVwcGVyKiBhbmQgQ2hhckxvd2VyKiBmdW5jdGlvbnMgdG8gZGxscy91c2VyLgoKCSogZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpYWwgdHJlYXRtZW50cyAodXNlIDIgb3IgbW9yZSBmb250cywgY29kZXBhZ2UKCWNvbnZlcnNpb24sIGV0Yy4uLikgZm9yIERCQ1MgdGV4dC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmVkZWZhdWx0LnJlZzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkICJGdWxsV2luZG93RHJhZyIgZmVhdHVyZSBmb3Igbm90IG1hbmFnZWQgd2luZG93cy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHRoZSBlZGl0IGJveCBiZWZvcmUgcm9sbGluZyB1cCB0aGUgbGlzdGJveCwgc28gdGhlCglzZWxlY3Rpb24gaXNuJ3QgbG9zdC4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcmVmZXJlbmNlZCBkbGxzIGZvciBsaWJ0ZXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTmljbGFzIEthcmxzc29uIE1BVEUgPG5rYXJsc3NvQHJhLmFiby5maT4KCUxQU1RSX1RFWFRDQUxMQkFDSyB3b3VsZG4ndCB3b3JrIGlmIHRoZSBhcHBsaWNhdGlvbiBzdXBwbGllZCB0aGUgaXRlbQoJdGV4dCBpbiBpdHMgb3duIGJ1ZmZlci4KCgkqIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9lcnJvci5jLCB3aW4zMi9maWxlLmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJQ2xlYW5lZCB1cCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLiBBZGRlZCBhIGZldyBpbXBvcnRzLgoKCSogb2xlL29sZTJubHMuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zcHkuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGxvYWRlci9uZS9jb252ZXJ0LmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBvYmplY3RzL3BhbGV0dGUuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmM6CglSZXBsYWNlZCBhbGwgbHN0ciogY2FsbHMgZnJvbSBpbnNpZGUgV2luZSBjb2RlIGJ5IHRoZWlyIHN0ciogZXF1aXZhbGVudC4KCgkqIG1zZG9zL2RwbWkuYzoKCVJlcGxhY2VkIGdsb2JhbCBDYWxsYmFja3Mgc3RydWN0dXJlIGJ5IGFwcHJvcHJpYXRlIGdsdWUgY29kZQoJZ2VuZXJhdGlvbi4gUmVtb3ZlZCBhIGZldyB1bnVzZWQgZW50cmllcyBpbiB0aGUgQ2FsbG91dCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL3dpbmhlbHAuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglSZXBsYWNlZCBWRVJTSU9OXyogY2FsbHMgYnkgZXhwb3J0ZWQgQVBJIGVxdWl2YWxlbnRzLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvbmUvLmN2c2lnbm9yZSwgbG9hZGVyL25lL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvLmN2c2lnbm9yZSwgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvbG9jYWwuYywgbWlzYy9jb21tLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgY29udHJvbHMvLmN2c2lnbm9yZSwgY29udHJvbHMvTWFrZWZpbGUuaW4sIGNvbnRyb2xzL2VkaXQuYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvYnVpbHRpbjE2Lmg6CglSZXBsYWNlZCBnbG9iYWwgQ2FsbGJhY2tzIHN0cnVjdHVyZSBieSBhcHByb3ByaWF0ZSBnbHVlIGNvZGUKCWdlbmVyYXRpb24uIFJlbW92ZWQgYSBmZXcgdW51c2VkIGVudHJpZXMgaW4gdGhlIENhbGxvdXQgc3RydWN0dXJlLgoKCSogd2luZWRlZmF1bHQucmVnOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGRlZCBsb2FkIGFkZHJlc3MgZm9yIHRoZSBzaGFyZWQgbWVtb3J5IG9mIEJERSAoQm9ybGFuZCBkYXRhYmFzZQoJbWFuYWdlcikuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggZm9yIHN0YXJ0aW5nIHNlcnZlciBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNoZWNraW5nIGZvciBicm9rZW4gZm9udCBjYWNoZS4KCUFkZGVkIHN1cHBvcnRpbmcgZm9yIGlzbzEwNjQ2IGVuY29kaW5nLgoKMjAwMC0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYzoKCU1hZGUgc2VydmVyIHN0YXJ0dXAgbW9yZSByb2J1c3QgYWdhaW5zdCByYWNlcyBjYXVzZWQgYnkgYSBwcmV2aW91cwoJc2VydmVyIHRlcm1pbmF0aW5nIGF0IHRoZSBzYW1lIHRpbWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdG9vbHMvYzJtYW4ucGw6CglNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglDcmVhdGVkIGRlZmF1bHQgYzJtYW4gY29tcGF0aWJsZSBwZXJsIHNjcmlwdCBmb3IgZ2VuZXJhdGluZwoJZG9jdW1lbnRhdGlvbiwgaW4gY2FzZSBjMm1hbiBpc24ndCBpbnN0YWxsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc2VuZGluZyBvZiBMVk5fSVRFTUNIQU5HSU5HIGFuZCBMVk5fSVRFTUNIQU5HRUQgbWVzc2FnZXMsCgljbGVhbmVkIHVwIHNvbWUgb2YgdGhlIGRyYXdpbmcsIGltcGxlbWVudGVkIHRoZSBpSW5kZW50IGZvciBMVlNfUkVQT1JUCglhbmQgZml4ZWQgYSBwcm9ibGVtIHdoZXJlIHN1YiBpdGVtcyB3aGVyZSBub3QgYmVpbmcgcHJvcGVybHkKCWFzc29jaWF0ZWQgd2l0aCB0aGVpciBpdGVtIGZvciB2aXJ0dWFsIGxpc3Qgdmlld3MuCgoJKiBtZW1vcnkvY29kZXBhZ2UuYywgbWlzYy9sc3RyLmMsIG9sZS9vbGUybmxzLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvd2N0eXBlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvdXNlci9sc3RyLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJQWRkZWQgVW5pY29kZSBjdHlwZSBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS9jb21tY3RybC5oOgoJTW92ZWQgTk1fVVBET1dOIGRlZmluaXRpb24gdG8gY29tbWN0cmwuaC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVRoZSB1c2VyIGRyaXZlciBmdW5jdGlvbnMgbWlnaHQgYmUgY2FsbGVkIHdpdGggdGhlIHdpbmRvdyBsb2NrIGhlbGQuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgRmluZFJlc291cmNlIGFuZCBGaW5kUmVzb3VyY2VFeCBmdWxseSB3aW5kb3dzIGNvbXBhdGlibGUuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglEYW15YW4gT2dueWFub2ZmIDxEYW15YW5Acm9ja2V0bWFpbC5jb20+CglSZW1vdmUgc29tZSBvYnNvbGV0ZSAjZGVmaW5lJ3MgLSBzdHJsd3IgYW5kIHN0cnVwciBhcmUgaW4gTlRETEwgbm93LgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbWVtb3J5L2NvZGVwYWdlLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvdXRmOC5jOgoJQWRkZWQgVVRGLTggY29udmVyc2lvbiBzdXBwb3J0LgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluc3RlYWQgb2Ygbm90IGRvaW5nIHRoZSBaIG9yZGVyaW5nIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGFza3MgdG8gcGxhY2UKCXRoZSB3aW5kb3cgdW5kZXIgYSB6ZXJvLXNpemVkIHdpbmRvdywgbm93IHRoZSB3aW5kb3cgYWJvdmUgdGhlCgl6ZXJvLXNpemVkIHdpbmRvdywgaXMgdXNlZCB0byBkbyB0aGUgWiBvcmRlcmluZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJSW5pdGlhbGl6ZSBscHN0ckluaXRpYWxEaXIgdG8gcmVhbGx5IGJvZ3VzIHZhbHVlIHRvIHJlc3RvcmUgb3JpZ2luYWwKCXZhbHVlIGxhdGVyLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgYSBmZXcgbW9yZSBhbm9ueW1vdXMgdW5pb24gZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL2d1aWRkZWYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgQysrIG9wZXJhdG9ycyByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBmb3BlbigpIGFwcGVuZCBtb2RlLCBhbmQgYSByZWFsbHkgY2hlZXN5IGZzY2FuZigpCglpbXBsZW1lbnRhdGlvbi4uLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CgkxLiBNYWtlIGJ1ZmZlciBmb3IgbWVzc2FnZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB2ZXJ5IGxvbmcgZmlsZSBuYW1lcy4KCTIuIFBhc3MgRk9STUFUX01FU1NBR0VfQVJHVU1FTlRfQVJSQVkgZm9yIEZvcm1hdE1lc3NhZ2VBIHRvIG5vdCBhc3N1bWUKCSAgIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGJlaGF2aW91ci4KCTMuIFNob3cgYWN0dWFsIG1lc3NhZ2UgdG8gdXNlciwgbm90IG5vbi1mb3JtYXR0ZWQgb25lLgoKMjAwMC0wOC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglNZXJnZWQgY2xpcGJvYXJkIGRyaXZlciBpbnRvIFVTRVIgZHJpdmVyLgoJTW92ZWQgYWxsIHR0eWRydiBzb3VyY2UgZmlsZXMgdG8gZGxscy90dHlkcnYuCglMb2FkIGZ1bmN0aW9ucyBwb2ludGVyIGZvciB0aGUgVVNFUiBkcml2ZXIgZnJvbSB0aGUgZ3JhcGhpY3MgZHJpdmVyCglkbGwgd2l0aCBHZXRQcm9jQWRkcmVzcy4KCjIwMDAtMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvbXNhY21kcnYuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgbWlzYy9jb21tLmMsIG1pc2MvbWFpbi5jLCBtc2Rvcy9pbnQwOS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvbXNhY20vbXNhY21kcnYuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy93aWRnZXRzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgI2luY2x1ZGVzIGFuZCBkbGwgZGVwZW5kZW5jaWVzLgoKCSogbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9pbml0LmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYzoKCU1ha2UgUERCLCBFTlZEQiBhbmQgU1RBUlRVUElORk8gZ2xvYmFsIHZhcmlhYmxlcy4KCUFkZGVkICdtb2R1bGUnIGZpZWxkIGluIFBEQiwgYW5kIHJlbW92ZWQgV2luZS1zcGVjaWZpYyBmaWVsZHMuCgoJKiBtaXNjL3ZlcnNpb24uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglSZW1vdmVkIHdpbnZlciBhbmQgc2VydmljZV90YWJsZSBmcm9tIHRoZSBQREIgYW5kIG1hZGUgdGhlbSBzdGF0aWMKCXZhcmlhYmxlcy4KCgkqIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGZpbGVzL2ZpbGUuYzoKCVJlbW92ZWQgdGhlIERPUyBoYW5kbGVzIHRhYmxlIGZyb20gdGhlIFBEQiBhbmQgbWFkZSBpdCBhIHN0YXRpYwoJdmFyaWFibGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2Rvc21lbS5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglSZW1vdmVkIG9ic29sZXRlIFNITURBVEEgcGFyYW1ldGVyIGluIEdMT0JBTF9DcmVhdGVCbG9jay4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBBdm9pZCBudWxsLXBvaW50ZXIgZXhjZXB0aW9ucyBieSB0ZXN0aW5nIGxpc3Rub2RlcyB2YWxpZGl0eSBiZWZvcmUgZG9pbmcKCSAgYW55IHdvcmsgd2l0aCB0aG9zZS4KCS0gVExCX1JlYWRUeXBlTGliIG5vdyByZXRyaWV2ZXMgdGhlIGxlbmd0aCBvZiB0aGUgVExCIGFuZCBwYXNzZXMgaXQgdG8KCSAgdGhlIFRMQiBjb25zdHJ1Y3RvciB3aGljaCBpbml0aWFsaXplcyBUTEJDb250ZXh0OjpsZW5ndGggdG8gdGhhdAoJICB2YWx1ZS4KCS0gRm9yIG5vbi1zdGFuZGFyZCBwb2ludGVkIHR5cGVzLCB0ZFszXSBpcyBhbHdheXMgMC4gSSBvYnNlcnZlZCB0aGF0CgkgIHRoZSB0eXBlIGlzIHN0b3JlZCBhdCB0ZFsyXS84IGFuZCBub3QgdGRbM10vOC4KCS0gTnVsbC1wb2ludGVyIGV4Y2VwdGlvbiBvY2N1cnMgd2hlbiBHZXRSZWZUeXBlT2ZJbXBsVHlwZSBpcyBjYWxsZWQgb24gYQoJICB0eXBlIHdpdGggbm8gaW5oZXJpdGVkIGludGVyZmFjZXMuIElmIHRoZSBpbXBsZW1lbnRlZCB0eXBlcyBsaW5rZWQgbGlzdAoJICBpcyBlbXB0eSwgc2V0IHBSZWZUeXBlIGFzIDAgYW5kIHJldHVybiBTX09LLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHR5cG8gaW4gdGhlIElEaXNwYXRjaF9HZXRUeXBlSW5mbyBtYWNyby4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIHJlbWFpbmluZyBwcm9ibGVtcyB3aXRoIHRvb2x0aXBzLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIE9wZW5HTCBjb25maWd1cmU6IG1vdmUgSEFWRV9PUEVOR0wgZGVmaW5lIHRvIHdoZXJlIGl0IGJlbG9uZ3MsCglmaXhlZCBnbGV4dC5oIHByZXNlbmNlIGluIGNvbmZpZ3VyZSBjaGVjayBmb3IgUEZOR0xDT0xPUlRBQkxFRVhUUFJPQy4KCgkqIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NydGRsbC5oLCBpbmNsdWRlL2RldmljZS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3czMnN5cy5oLCB0b29scy9tYWtlX2F1dGhvcnMsIHdpbjMyL2ZpbGUuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvc2hlbGwzMi9hdXRob3JzLmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21ldGFmaWxlZHJ2LmgsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJTW92ZWQgYSBmZXcgbm9uLXN0YW5kYXJkIGhlYWRlcnMgaW50byB0aGVpciByZXNwZWN0aXZlIGRsbHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJSW5zdGFsbCBhbGwgc3RhbmRhcmQgV2luZG93cyBpbmNsdWRlcywgcGx1cyBzb21lIGZyb20gdGhlIHdpbmUgc3ViZGlyLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5oLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL2FuaW1hdGUuaCwgaW5jbHVkZS9jb21ib2V4LmgsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL2ZsYXRzYi5oLCBpbmNsdWRlL2hlYWRlci5oLCBpbmNsdWRlL2hvdGtleS5oLCBpbmNsdWRlL2ltYWdlbGlzdC5oLCBpbmNsdWRlL2lwYWRkcmVzcy5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvbW9udGhjYWwuaCwgaW5jbHVkZS9uYXRpdmVmb250LmgsIGluY2x1ZGUvcGFnZXIuaCwgaW5jbHVkZS9wcm9ncmVzcy5oLCBpbmNsdWRlL3JlYmFyLmgsIGluY2x1ZGUvc3RhdHVzLmgsIGluY2x1ZGUvdGFiLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBpbmNsdWRlL3Rvb2x0aXBzLmgsIGluY2x1ZGUvdHJhY2tiYXIuaCwgaW5jbHVkZS90cmVldmlldy5oLCBpbmNsdWRlL3VwZG93bi5oLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVJlbW92ZWQgYWxsIG5vbi1zdGFuZGFyZCBjb21tb24gY29udHJvbCBoZWFkZXJzIGZyb20gdGhlIGluY2x1ZGUKCWRpcmVjdG9yeS4KCgkqIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy9zdHJ1Y3QzMi5oLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9zdHJ1Y3QzMi5oLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvc3RydWN0MzIuYzoKCU1vdmVkIHN0cnVjdDMyLmMgdG8gd2luZG93cyBkaXJlY3RvcnkuCgoyMDAwLTA4LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCU1ha2Ugc3VyZSBidWlsdGluIGRsbHMgYXJlIG5ldmVyIGZyZWVkIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgZGxjbG9zZQoJcHJvcGVybHkgeWV0LgoKCSogZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJU21hbGwgZGxsIGludGVyZmFjZXMgY2xlYW51cHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS93aW5lX2dsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVhc2VkIHJlc3RyaWN0aW9ucyBvbiBPcGVuR0wvTUVTQSB1c2FnZSBhIGJpdC4gSXQgY29tcGlsZXMganVzdCBmaW5lCgl1c2luZyBtZXNhLTMuMiBldmVuIHdpdGhvdXQgZ2xleHQuaC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29ya2VkIGhvdyBzZWxlY3Rpb25zIGFyZSBrZXB0IHRyYWNrIG9mIGluIHRoZSBsaXN0IHZpZXcuIFNlbGVjdGlvbnMKCWFyZSBub3cgbGlzdGVkIGFzIGEgc29ydGVkIHJhbmdlIG9mIHBhaXJlZCBpbnRlZ2Vycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gdW5zdWJjbGFzc2luZyB0b29scywgdXNlIHRvb2xQdHItPmh3bmQgaW5zdGVhZCBvZiB0b29sUHRyLT51SWQgaWYKCXRvb2xQdHItPmZsYWdzIGRvZXMgbm90IGNvbnRhaW4gVFRGX0lESVNIV05EIChtZWFuaW5nIHVJZCBpcyBub3QgYQoJdmFsaWQgd2luZG93IGhhbmRsZSkuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglBZGRlZCBkZXNjcmlwdGlvbiBvZiB1c2luZyBETExzIHdpdGggV2luZUxpYi4KCgkqIGRvY3VtZW50YXRpb24vKjoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnRlZCBXaW5lIGRvY3VtZW50YXRpb24gdG8gU0dNTCBmb3JtYXQuCgoyMDAwLTA4LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluaXRpYWxpemUgJ3N0cicgaW4gSUNPTlRJVExFX0dldFRpdGxlUG9zLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCUZpeGVkIHJlc291cmNlIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGggMzItYml0IG1vZHVsZXMgdGhhdCBkb24ndCBoYXZlIGEKCTE2LWJpdCBjb3VudGVycGFydCAobmVjZXNzYXJ5IGZvciBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgc3VwcG9ydCkuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZCBhbiBlZGl0IGNvbnRyb2wgc2hvd2luZyB0aGUgY29tbWFuZCBsaW5lIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQKCWRlaW5zdGFsbCBpdGVtLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdJTlBPU19XaW5kb3dGcm9tUG9pbnQgc2hvdWxkIHJlc3BlY3QgaHJnblduZC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJU2V0IHVwIGV4ZV9tb2RyZWYgYmVmb3JlIGxvYWRpbmcgaW1wbGljaXRseSBsaW5rZWQgZGxscy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUHJldmVudCBlbmRsZXNzIGxvb3BpbmcgaW4gbGluZWJyZWFrIGhhbmRsaW5nLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgYXJlIGxvb2tpbmcgZm9yIGFuIGV4aXN0aW5nIHBpeG1hcCBmb3JtYXQsIHdlIGRvIG5vdCBuZWVkIHRoZQoJc2FtZSBiaXRzcGVycGl4ZWwgKGZpeGVzIGRlcHRoIDE1L2JpdHNwaXhlbCAxNiBtb2RlKS4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGEgZmV3IERpcmVjdElucHV0IDcgZGVmaW5pdGlvbnMgYW5kIEMrKyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglMb2FkTGlicmFyeUV4MzJXMTYgc2hvdWxkIHVzZSB0aGUgc2VhcmNoIGFsZ29yaXRobSBvZiAxNi1iaXQgbGlicmFyaWVzLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy93aW5wb3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBsb2NhbCB2YXJpYWJsZSBzaGFkb3dzIHdhcm5pbmdzLgoKCSogd2luMzIvcHJvY2Vzcy5jLCBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWlzYy92ZXJzaW9uLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CgktIEZpeGVkIHJlc291cmNlIGZ1bmN0aW9ucyB0byB3b3JrIGRpcmVjdGx5IGZyb20gdGhlIEhNT0RVTEUgaW5zdGVhZCBvZgoJICByZXF1aXJpbmcgYSBtb2RyZWYuCgktIEF0dGVtcHRlZCB0byBnZXQgTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIHJpZ2h0IChiYXNlZCBvbiBwYXRjaGVzIGJ5CgkgIEVyaWMgUG91ZWNoIGFuZCBEdXNhbiBMYWNrbykuCgktIFNpbXBsaWZpZWQgbW9kcmVmIHN0cnVjdHVyZSBhbmQgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJvdGVjdCB0aGUgcHJvdG90eXBlcyBpbiBoZXJlIGZyb20gQysrIG5hbWUgbWFuZ2xpbmcuLi4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVZJRl9PVVRPRlNQQUNFIGFuZCBWSUZfT1VUT0ZNRU0gd2VyZSByZXZlcnNlZC4KCgkqIGluY2x1ZGUvdmZ3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWlubGluZSBtdXN0IGJlIGZpcnN0IGF0dHJpYnV0ZSBpbiBmdW5jdGlvbiBkZWZpbml0aW9uLgoKCSogZGxscy91c2VyL2xzdHIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgQ2hhck5leHRXLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfUkxFODogYnJlYWsgaW1hZ2UgbGluZXMuCgoyMDAwLTA4LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglBZGRlZCBpbXBvcnRzIG9mIGtlcm5lbDMyLmRsbCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBNYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluOgoJTGluayBVU0VSIHJlc291cmNlcyBpbnRvIGxpYnVzZXIuc28uCgoJKiBvbGUvb2xlMm5scy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgY2FsbGluZyBjdHlwZSBmdW5jdGlvbnMgd2l0aCBVbmljb2RlIGNoYXJhY3RlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQ29udmVydGVkIGFsbCBjYWxscyB0byBSZWRyYXdXaW5kb3cgdG8gSW52YWxpZGF0ZVJlY3QuICBQcmV2aW91c2x5CglSZWRyYXdXaW5kb3cgd2FzIGJlaW5nIHVzZWQgZm9yIHRoZSBSRFdfVVBEQVRFTk9XIGZsYWcgd2hpY2ggZm9yY2VkIGFuCglpbW1lZGlhdGUgV01fUEFJTlQgbWVzc2FnZS4gIE1vdmluZyB0byBJbnZhbGlkYXRlUmVjdCBzaG91bGQgbGV0CglXTV9QQUlOVHMgb2NjdXIgbm9ybWFsbHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgcmVzZXR0aW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gY2xlYXJpbmcgb3V0IGJsYW5rIGFyZWFzLCBhcwoJaXQgbWF5IGhhdmUgYmVlbiBzZXQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gQ09MT1JfV0lORE9XIGJ5IHRoZQoJYXBwbGljYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJVG9wIGxldmVsIHdpbmRvd3Mgd2l0aCAwIHdpZHRoIG9yIGhlaWdodCBhcmUgY3JlYXRlZCB3aXRoIGEgc2l6ZSBvZiAxeDEgaW4KCXRoZSBYMTEgZHJpdmVyLiBJJ3ZlIGFkZGVkIHNvbWUgY29kZSB0byBtYWtlIHN1cmUgdGhvc2Ugd2luZG93cyBhcmUgbmV2ZXIKCW1hcHBlZCB3aGlsZSB0aGUgc2l6ZSA8PSAwLgoKCSogbWlzYy9sc3RyLmMsIG1pc2MvbWFpbi5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZHVtbXkuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBtZW1vcnkvc3RyaW5nLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJTW92ZWQgbW9zdCBVU0VSIHN0cmluZyBmdW5jdGlvbnMgdG8gZGxscy91c2VyLgoJQ2xlYW5lZCB1cCBhIGZldyBtb3JlIGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiBvbGUvb2xlMm5scy5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9pbml0LmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdXNlci90ZXh0LmM6CglSZXBsYWNlZCBsc3RybGVuL2xzdHJjbXAgYnkgbGliYyBlcXVpdmFsZW50cyBldmVyeXdoZXJlIHdlIGRvbid0IG5lZWQKCXRvIHRyYXAgZXhjZXB0aW9ucy4KCjIwMDAtMDgtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWN0bDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93c29jazMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBXYXJuIGFib3V0IGRpcmVjdG9yaWVzIHNwZWNpZmllZCBpbiBtb2R1bGVzLmRhdCB0aGF0IGFyZSBub3QgdXNlZC4KCS0gRWxpbWluYXRlZCB0aGUgd2FybmluZ3MgY2F1c2VkIGJ5IHRoZSBjaGFuZ2UgYWJvdmUuCgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkZWJ1Z2dlci9zdGFjay5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIGZldyBtaXNzaW5nIGltcG9ydHMuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL25ld2Zucy5jLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NhY2hlLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvY2FjaGUuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbHN0ci5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJTW92ZWQgYSBidW5jaCBvZiBmdW5jdGlvbnMgb3V0IG9mIGxpYndpbmUva2VybmVsL2dkaSBpbnRvIFVTRVIuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL21ldGFmaWxlLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbWVudS5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCVJlbW92ZWQgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIEdESSBpbnRlcm5hbHMgZnJvbSBVU0VSIGRsbC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgaW1wb3J0cy4KCjIwMDAtMDgtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmMsIE1ha2VmaWxlLmluLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3ByaW50ZHJ2LmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDE2LmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCU1ha2UgVVNFUiBhbmQgR0RJIHNlcGFyYXRlIGRsbHMuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnNvY2syLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHRoZSBXaW4xNi9XaW4zMiBzdHJ1Y3R1cmUgc2l6ZS9hbGlnbm1lbnQgZGlmZmVyZW5jZXMgb2YKCXdzX2hvc3RlbnQsIHdzX3Byb3RvZW50LCB3c19zZXJ2ZW50LCB3c19uZXRlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGluY2x1ZGUvdG9vbHRpcHMuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZWRvIHRoZSBzaG93L2hpZGUgbG9naWMgYW5kIGFkZCBhIGNvbW1lbnQgdG8gZXhwbGFpbiB3aGF0J3MgZ29pbmcgb24uCglGaXggVFRNX3tTfEd9RVRERUxBWVRJTUUgdG8gdXNlIHRoZSBkb3VibGUgY2xpY2sgdGltZSBhcyBkZWZhdWx0LgoJRml4IGhhbmRsaW5nIG9mIFRURFRfQVVUT01BVElDLgoJUmVsYXllZCBtb3VzZSBtZXNzYWdlcyBzaG91bGQgZXh0cmFjdCB0aGUgcG9zaXRpb24gZnJvbSBsUGFyYW0gbm90Cgltc2cucHQKCVN1YmNsYXNzUHJvYyBub3cgdW5pZmllZCB3aXRoIFRUTV9SRUxBWUVWRU5ULgoJQ2hhbmdlIGFsbCBsc3RyY3B5eHRveCB0byB1c2Ugd2luMzIgQVBJcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDaGFuZ2VkIHRoZSBBRk0gbWV0cmljcyBzdHJ1Y3R1cmUgdG8gdXNlIGFuIGFycmF5IGluc3RlYWQgb2YgYSBsaW5rZWQKCWxpc3QuIFRoaXMgYXZvaWRzIGRvaW5nIHR3byBoZWFwIGFsbG9jYXRpb25zIGZvciBldmVyeSBjaGFyYWN0ZXIsIGFuZAoJcmVkdWNlcyB0aGUgbWV0cmljcyBwYXJzaW5nIHRpbWUgYnkgYXBwcm94IDI1JS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCAiTWltZS1WZXJzaW9uIiB0byBzdGFuZGFyZCBNSU1FIGhlYWRlcnMgcGFyc2VkIGluCglIVFRQX0dldFN0ZEhlYWRlckluZGV4KCkuCgoJKiBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgdGhlIEVycm9ySW5mbyBpbnRlcmZhY2VzLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglBZGRlZCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIG1lc3NhZ2UgZmlsZXMgZm9yIHBlb3BsZSB3aG8gZG9uJ3QgcnVuCgltYWtlIGRlcGVuZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBvbGUvZ3VpZC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6CglNb3ZlZCBHVUlEIGRlZmluaXRpb25zIHRvIHRoZWlyIHJlc3BlY3RpdmUgZGxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oOgoJRml4ZWQgSVNoZWxsTGlua0EvVyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgaW5jbHVkZS9ndWlkZGVmLmgsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJQWRkZWQgZ3VpZGRlZi5oIGFuZCBtb3ZlZCBhIGZldyBHVUlEIGRlZmluaXRpb25zIHRvIHRoZSBjb3JyZWN0IGZpbGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRml4ZWQgSXNFcXVhbEdVSUQgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUxPQ0FMRV9OT1VTRVJPVkVSUklERSBtZWFuczogZG8gbm90IGdldCB1c2VyIHJlZGVmaW5lZCBzZXR0aW5ncyBmcm9tCgl0aGUgcmVnaXN0cnkuIEluc3RlYWQsIHVzZSBzeXN0ZW0gZGVmYXVsdCB2YWx1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBGaXhlZCBidWcgd2hlcmUgSW5pdFN1Ykl0ZW0gd2FzIGRvaW5nIGEgWmVyb01lbW9yeSBvbiB0aGUgaXRlbS4KCS0gQ2xlYW5lZCB1cCBhIHNpdCBvZiBleHRyYSBibHVlIGF0IHRoZSBlbmQgb2YgYSBGVUxMUk9XU0VMRUNUIGxpc3QgdmlldwoJICBpZiB0aGVyZSBpcyBvbmx5IG9uZSBjb2x1bW4uCgktIENvcnJlY3RlZCBhIGJ1ZyBJIGludHJvZHVjZWQgd2l0aCBhbiBlYXJsaWVyIHBhdGNoIHdoaWNoIGNhdXNlZAoJICBwcm9ibGVtcyB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT25lIG9mIHRoZSAyNC8zMiBjb252ZXJ0IGNvbG9yIG1hc2tzIHdhcyB3cm9uZy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0UHJvcEEvVyBoYXZlIHN0cmluZyBhcmdzLgoKCSogaWYxNjMyL3RodW5rLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvKi9NYWtlZmlsZS5pbiwgZGxscy8qLyouc3BlYzoKCUFkZGVkIGltcG9ydHMgb2YgdXNlcjMyL2dkaTMyL2tlcm5lbDMyIHdoZXJldmVyIG5lY2Vzc2FyeS4KCjIwMDAtMDgtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDA4MDEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDgtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgV01fVENBUkQgYW5kIERXT1JETE9ORy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgdG9vbHMvd21jL3dyaXRlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBFX01FU1NBR0VfSEVBREVSLkxlbmd0aCBjb250YWlucyB0aGUgaGVhZGVyIGl0c2VsZiB0b28uCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglDb21taXR0aW5nIGEgcGFnZSBvZiBhIHNoYXJlZCBtYXBwaW5nIGluIG9uZSBwcm9jZXNzIGxldHMgaXQgYXBwZWFyCgljb21taXR0ZWQgaW4gb3RoZXIgcHJvY2Vzc2VzLCB0b28uIFRvIGZha2UgdGhpcywgd2UgY29tbWl0IHRoZW0gYXMKCXNvb24gYXMgdGhleSBhcmUgbWFwcGVkLgoKCSogaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvaGVhcC5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJTW92ZWQgV2luZSBwcml2YXRlIGhlYXAgY3JlYXRpb24gZmxhZ3MgdG8gb3RoZXIgdmFsdWVzLgoJUmV0dXJuIHN5c3RlbSBoZWFwIHdoZW4gYSBzaGFyZWQgaGVhcCBpcyByZXF1ZXN0ZWQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCU9ubHkgc2V0IENPTVNQRUMgaWYgbm90IGRlZmluZWQgYWxyZWFkeS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZWQgdGhlIHdpbjMxIHN0eWxlIGZpbGUgZGlhbG9nIHRvIDMyIGJpdHMgc3RydWN0dXJlcyBhbmQKCW1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTZXJnZSBJdmFub3YKCUFuZHJldyBMZXd5Y2t5CglJbXByb3ZlZCBkcmF3aW5nIG9mIGl0ZW0gdGV4dCwgYWRkZWQgU0hPV1NFTEFMV0FZUyBjYXBhYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWF0dGhldyBMYWtlIDxNYXN0ZXJSX0xAeWFob28uY29tPgoJRml4ZWQgYSBzZWdmYXVsdCBwcm9ibGVtIHVzaW5nIHRoZSBzdGFuZGFyZCBmaWxlIG9wZW4gZGlhbG9nIGJveC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdmdhLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy92Z2EuYywgb2JqZWN0cy9nZGlvYmouYzoKCU1vdmVkIE11bERpdigpIGFuZCBWR0Egcm91dGluZXMgb3V0IG9mIEdESS4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIEVSUk9STEVWRUwuCglNb3N0IGVycm9ycyByZXBvcnRlZCB2aWEgRm9ybWF0TWVzc2FnZSgpLgoJQ09QWSBjb21tYW5kIG5vdyB3b3JrcyBjb3JyZWN0bHkgaWYgb3V0cHV0IHNwZWNpZmllciBpcyBhIGRpcmVjdG9yeS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglNb3JlIGNvbnNpc3RlbnQgY2FsY3VsYXRpb24gb2YgbGluZSBoZWlnaHQsIHNjcm9sbHMgYSBmdWxsIGl0ZW0gb24KCWxpbmUgdXAvZG93bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW5jbHVkaW5nIG9uZSB3aXRoIHNldHRpbmcgZXh0ZW5kZWQgc3R5bGVzIGFuZAoJZWRpdGluZyBsYWJlbHMuCglJbXBsZW1lbnRlZCB0aGUgTFZTX0VYX0ZVTExST1dTRUxFQ1QgZXh0ZW5kZWQgc3R5bGUuCglCZWdpbiBhbiBpbXBsZW1lbnRhdGlvbiBvZiB2aXJ0dWFsIGxpc3Qgdmlld3MgKExWU19PV05FUkRBVEEgc3R5bGUKCXNldCkuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgWDExIGluY2x1ZGVzIGZyb20gZGRyYXcuaC4KCgkqIGxvYWRlci9tb2R1bGUuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJV2luRXhlYzE2IHNob3VsZCBub3Qgc3BsaXQgcXVvdGVkIGZpbGVuYW1lcyB3aXRoIHNwYWNlcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEludGVybmV0Q2hlY2tDb25uZWN0aW9uQS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYW5vdGhlciBub24tTGludXggYnVpbGQgZmFpbHVyZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAyIGZvcndhcmQgZW50cmllcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc29tZSBmbGlja2VyIGJ5IGRldGVjdGluZyBpZiB3ZSBzZXQgdGhlIHNhbWUgdmFsdWUgYWdhaW4uCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlIGxvZ2ljIG9mIGxpc3Rib3ggcmVzaXppbmcgZm9yIDE2IGJpdHMgYXBwcyBmb3IgbGlzdHMgd2l0aG91dAoJTEJTX05PSU5URUdSQUxIRUlHSFQgc3R5bGUuCgoJKiBvYmplY3RzL2RjLmM6IFBoaWxsaXAgRXpvbHQgPGV6b2x0QHBlcmYuemtvLmRlYy5jb20+CglGaXhlZCBDcmVhdGVEQyB0byB3b3JrIHByb3Blcmx5IHdoZW4gaXQgaXMgY2FsbGVkIHdpdGggYSBkZXZpY2UuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUphc29uIEVkbWVhZGVzIDxqYXNvbkB0aGUtZWRtZWFkZXMuZnNuZXQuY28udWs+CgktIFN1cHBvcnQgd2hpdGVzcGFjZSBhcm91bmQgY29tbWFuZHMgYmV0dGVyLCBhbmQgc3VwcG9ydCB0aGUgQAoJICBwcmVmaXggYmV0dGVyCgktIEVuaGFuY2UgdGhlIHNldCBzdXBwb3J0IHRvIHVuc2V0LCBkaXNwbGF5IHZhbHVlIGVycm9yIGNvcnJlY3RseQoJLSBFbmhhbmNlIHRoZSBjb21tYW5kIGxpbmUgc3VwcG9ydCBmb3IgcGFybXMsIGFuZCBlbnYgdmFyIGV4cGFuc2lvbgoJLSBFbmhhbmNlIHRoZSBlY2hvIGNvbW1hbmQgdG8gbm90IGxvb3NlIHdoaXRlc3BhY2UsIGFuZCBkaXNwbGF5CgkgIG91dHB1dCB3aXRoICUgc2lnbnMgYmV0dGVyCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9yZWdzdHIuaCwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9SRUFETUUsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5oLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBhbiB1bmluc3RhbGxlciBmb3IgSW5zdGFsbFNoaWVsZCwgV0lTRSBldGMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCVByb3ZpZGUgcG9zaXRpb24gaGludHMgZm9yIHdpbmRvdyBtYW5hZ2Vycy4KCjIwMDAtMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL21vbml0b3IuaCwgaW5jbHVkZS9zeXNtZXRyaWNzLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJQ2xlYW5lZCB1cCBzb21lIG1vcmUgVVNFUiBkZXBlbmRlbmNpZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIHN5c3RlbSBtZXRyaWNzIGRlZmluaXRpb25zIHRvIHdpbnVzZXIuaC4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGlkeWVkIHVwIHN0YWNrIGJhY2t0cmFjZSBjb2RlIGEgYml0LCBhbmQgYWRkZWQgYSBzaW1wbGUgc3BlY2lhbAoJY2FzZSBmb3IgYmFja3RyYWNpbmcgZnJvbSBhIG51bGwgRUlQLgoKCSogZmlsZXMvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgNjQtYml0IG5lZ2F0aXZlIHNlZWsgdmFsdWUuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIERPUyB0YXNrIGZpZWxkcyBmcm9tIHRoZSBORV9NT0RVTEUgc3RydWN0dXJlLgoKCSogbG9hZGVyL3Rhc2suYzoKCVNraXAgcXVvdGVkIHByb2dyYW0gbmFtZSB3aGVuIGJ1aWxkaW5nIGNvbW1hbmQgbGluZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRE9TIGJpbmFyeSBzdXBwb3J0IGhhcyBiZWVuIHJlc3RvcmVkLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3Rvb2xoZWxwLmMsIHdpbmRvd3MvdXNlci5jOgoJTW92ZWQgdG9vbGhlbHAgaW1wbGVtZW50YXRpb24gaW50byBrZXJuZWwzMiBkbGwuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCUJhY2tlZCBvdXQgRmluZFJlc291cmNlIGxhbmd1YWdlIHBhdGNoLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBtc2Rvcy9pbnQwOS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGZldyBwcm9ibGVtcy4KCgkqIGRsbHMva2VybmVsL21lc3NhZ2VzL3dpbmVycl9lbnUubWM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUFkZGVkIHRleHQgZm9yIGFsbCBtZXNzYWdlcyBpbmNsdWRlZCBpbiB3aW45NSBhbmQgd2luTlQuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHsgfSBhcm91bmQgc3R1ZmYgaW4gQUREX1RPX1QgbWFjcm9zLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ29udmVydCBET1MgKE1aKSBiaW5hcnkgbG9hZGVyIHRvIHRoZSBuZXcgRE9TIHByb2Nlc3MgbW9kZWwuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIE1aX0N1cnJlbnQoKSBpbnN0ZWFkIG9mIHBNb2R1bGUtPmxwRG9zVGFzay4gQ2xlYW5lZCB1cCB0aGUgUk1DQjMyCglhc3NlbWJseSBjb2RlIGEgYml0LCBhbmQgd3JhcHBlZCBpdCBpbiAjaWZkZWYgX19pMzg2X18uCgoyMDAwLTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9rZXlib2FyZC5jOgoJQ2xlYW5lZCB1cCBhIGZldyBVU0VSIGRlcGVuZGVuY2llcy4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBoTW9kdWxlIHBhcmFtZXRlciBmcm9tIE1aX0FsbG9jRFBNSVRhc2soKSwgYW5kIHJlbmFtZWQKCU1aX0tpbGxNb2R1bGUoKSB0byBNWl9LaWxsVGFzaygpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglDcmVhdGUgZGxsL2tlcm5lbC9tZXNzYWdlcyBkaXJlY3RvcnkuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgRE9TTUVNX0luaXQoKSB0YWtlIGEgQk9PTCBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIEhNT0RVTEUxNiwgYW5kCglpbml0aWFsaXplIERPUyBtZW1vcnkgcHJvcGVybHkgaW4gdGhlIG5ldyBwcm9jZXNzIG1vZGVsLiBNYWRlCglET1NNRU1fTWVtb3J5QmFzZSgpIHVzZSBNWl9DdXJyZW50KCktPmltZyBpbnN0ZWFkIG9mIHBNb2R1bGUtPmRvc19pbWFnZS4KCgkqIGxvYWRlci90YXNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCB1c2FnZSBvZiBvYnNvbGV0ZSBwTW9kdWxlLT5scERvc1Rhc2suCgoyMDAwLTA3LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWlzYy9jb21tLmMsIG1pc2MvbHN0ci5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpZjE2MzIvc25vb3AuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdXNpb25zIG9mIHdpbmdkaS5oIGFuZCB3aW51c2VyLmgKCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS9udGRkay5oLCBsb2FkZXIvbW9kdWxlLmM6CglSZW1vdmVkIGEgZmV3IGV4dGVybmFsIGRlcGVuZGVuY2llcyBmcm9tIG50ZGxsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBDcmVhdGVUeXBlTGliLExIYXNoVmFsT2ZOYW1lU3lzIHN0dWJzLgoJQ2hlY2sgZm9yIGNvcnJlY3Qgc3RydWN0IG1hZ2ljIGJlZm9yZSByZWFkaW5nIG91dCBvZiBpdC4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgU21vb3RoU2Nyb2xsV2luZG93LgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlsbCBCSU9TIHNlZ21lbnRzIHVzaW5nIHBvaW50ZXJzIGZyb20gRE9TTUVNX0Jpb3MqIGZ1bmN0aW9ucywgaW5zdGVhZAoJb2YgcG9pbnRlcnMgZnJvbSBnbG9iYWwgaGVhcCBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldCByaWQgb2YgVVNFUjMyIGZ1bmN0aW9ucyBpbiBLRVJORUwzMi4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFdpbjMyIENvbnNvbGUgaW50ZXJmYWNlIHRvIHRoZSBtYWluIERPU1ZNIGV2ZW50Cglsb29wLiBDbGVhbmVkIHVwIGV2ZW50IGRpc3BhdGNoaW5nIGNvZGUgYSBiaXQuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgZGlyZWN0IGNvbnNvbGUgaW5wdXQgcm91dGluZXMgZ28gdGhyb3VnaCBpbnQxNiwgcmF0aGVyIHRoYW4KCXJlYWRpbmcgZGlyZWN0bHkgZnJvbSB0aGUgY29uc29sZSBkcml2ZXIuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJb2xlMzIgbm93IHJlcXVpcmVzIGxpbmtpbmcgd2l0aCBrZXJuZWwzMgoJc2hlbGwzMiBub3cgcmVxdWlyZXMgbGlua2luZyB3aXRoIGtlcm5lbDMyIGFuZCBzaGx3YXBpCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdlIGFsd2F5cyBoYXZlIHN0cmVycm9yLCBzbyBubyBuZWVkIHRvIGlmZGVmIEhBVkVfU1RSRVJST1IuCgoJKiB3aW5kb3dzL3dpbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBocmduV25kLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBHTEVYVCBmdW5jdGlvbiBwcm90b3R5cGUgdHlwZWRlZnMgZGV0ZWN0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pb3BvcnRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglMZXQgSW50MDkgcm91dGluZXMgcmVtZW1iZXIgYSBrZXlzdHJva2UncyBBU0NJSSBjb2RlLCBpZiBhdmFpbGFibGUuCgoJKiBtc2Rvcy9pbnQzMy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgaW50MzMgZnVuY3Rpb24gc3R1YnMuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZWQgYSBmZXcgY29yZSBpbnQxMCByb3V0aW5lcyB0byB1c2UgdGhlIEJJT1MgZGF0YSBzZWdtZW50IGN1cnNvcgoJcG9zaXRpb25zIGFuZCB0aGUgVkdBIHJvdXRpbmVzLCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUKCWNvbnNvbGUgZHJpdmVyLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgT2xlR2V0QXV0b0NvbnZlcnQuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUZpbmRSZXNvdXJjZUV4QS9XIHNob3VsZCBzZWFyY2ggZm9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgcmVzb3VyY2Ugb25seS4KCUZpbmRSZXNvdXJjZUEvVyBzaG91bGQgc2VhcmNoIGZvciBhbnkgbGFuZ3VhZ2UgcmVzb3VyY2UuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5vIGxvbmdlciBjcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aCBEaXJlY3REcmF3IHdpdGggYSBERENsaXBwZXIgaW4KCS1kZXNrdG9wIG1vZGUuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTkNfRG9OQ0hpdFRlc3Qgbm93IHJldHVybnMgSFROT1dIRVJFIGxpa2UgV2luZG93cyBpcyBkb2luZyB3aGVuCgljbGlja2luZyBvbiBhIHdpbmRvdyBoYXZpbmcgYSBjdXN0b21pemUgbm9uIGNsaWVudCBhcmVhLgoKMjAwMC0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkIFgxMURSVl9ESUJfVXBkYXRlRElCU2VjdGlvbjIgdGhhdCB0YWtlcyBhIEhCSVRNQVAgcGFyYW1ldGVyLgoKCSogbWVtb3J5L2NvZGVwYWdlLmM6CglXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvc2Nod290QGdteC5uZXQ+CglBZGRlZCBOVUxMIHBvaW50ZXIgY2hlY2tzLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3NoYXBlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3NoYXBlLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBTZXRXaW5kb3dzUmduIGFuZCBHZXRXaW5kb3dSZ24KCS0gWDExRFJWIGFuZCBUVFlEUlYgdXBkYXRlZCB3aXRoIG5ldyBBUEkgU2V0V2luZG93UmduCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCB0aGUgaE1vZHVsZSBwYXJhbWV0ZXIgZnJvbSB2YXJpb3VzIERPU01FTSByb3V0aW5lcywgdGhlIERPU01FTQoJcm91dGluZXMgbm93IGFsd2F5cyB1c2UgdGhlIGN1cnJlbnQgbWVtb3J5IHNwYWNlLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd21jL21jeS55OiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgc3BlY2lmaWMgZml4ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL2RlZnduZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglOb3cgdGhlIHNlcnZpY2UgdGhyZWFkIGlzIG5vIG1vcmUgaW4gY2hhcmdlIG9mIGVyYXNpbmcgdGhlIGJhY2tncm91bmQKCW9mIHRoZSBXaW5kb3cuIFNlcnZpY2UgdGhyZWFkIGlzIGRvaW5nIHRoZSBpbnZhbGlkYXRpb24gcGFydCwgYW5kIHRoZQoJYXBwbGljYXRpb24gdGhyZWFkIGlzIGRvaW5nIHRoZSBlcmFzaW5nIHBhcnQuIEFsbCB0aGlzIGhhcyBiZWVuCglpbXBsZW1lbnRlZCB1c2luZyBXTV9TWU5DUEFJTlQgbWVzc2FnZS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3R1YiBmb3IgT0xFMzIuT2xlU2V0QXV0b0NvbnZlcnQgbmVlZGVkIGJ5IEFkb2JlIFBob3Rvc2hvcCA0LjAuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgY3Jhc2ggaWYgd2luZG93IHdhcyBub3QgZm91bmQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gVXBkYXRlV2luZG93IHNob3VsZCByZWZyZXNoIGFsbCBjaGlsZHJlbiB0aGF0IGhhdmUgYW4gdXBkYXRlIHJlZ2lvbi4KCS0gSW4gRElBTE9HX0NyZWF0ZUluZGlyZWN0IFVwZGF0ZVdpbmRvdyBzaG91bGRuJ3QgYmUgY2FsbGVkLiBXaW5lIHdpbGwgZ2VuZXJhdGUKCSAgYSBXTV9QQUlOVCBldmVudHVhbGx5IGZvciB0aGUgZGlhbG9nLCBubyBuZWVkIHRvIGZvcmNlIGEgcGFpbnQgcmlnaHQgYXdheS4KCShiYXNlZCBvbiBhIHBhdGNoIGZyb20gSmFtZXMgSGF0aGV3YXkgaW4gdGhlIENvcmVsIHRyZWUpCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglKdXN0IGdldCBET1MgdGFzayBzdHJ1Y3R1cmUgZnJvbSBNWl9DdXJyZW50KCksIGluc3RlYWQgb2YgKGNsdW1zaWx5KQoJdHJ5aW5nIHRvIGZpbmQgYW5kIHJlYWQgZnJvbSB0aGUgY3VycmVudCB0YXNrJ3MgbW9kdWxlIHN0cnVjdHVyZXMuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSBhIGdsb2JhbCBhc20gaGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSAzMi1iaXQgUk1DQiBjYWxscywgc28gd2UKCWRvbid0IG5lZWQgdGhvc2UgY29tcGxleCBjb25zdHJhaW50cyBlaXRoZXIuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBbHdheXMgZ2V0IGEgaGFyZHdhcmUgbWVzc2FnZSBmcm9tIHRoZSBzeXN0ZW0gcXVldWUgaW4gUGVla01lc3NhZ2UsCglldmVuIGlmIG5vIHN1Y2ggd2FrZSBiaXRzIGFyZSBzZXQsIGJlY2F1c2UgaW4gYSBQZWVrTWVzc2FnZSBsb29wLAoJdGhlcmUncyBubyBzbGVlcGluZywgc28gdGhlIG5lY2Vzc2FyeSB3YWtlIGJpdHMgYXJlIG5ldmVyIHNldC4uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGluY2x1ZGUvb2xlY3RsLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgQ29ubmVjdGlvbiBQb2ludCBzdXBwb3J0IHRvIE9MRSBmb250IG9iamVjdHMuCglBZGQgc29tZSBtb3JlIFRSQUNFKClzLgoKCSogZGxscy8qLyouc3BlYzoKCUFkZGVkICdvd25lcicgZmllbGQgdG8gMTYtYml0IHNwZWMgZmlsZXMgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUKCTMyLWJpdCBkbGwgdGhhdCBjb250YWlucyBpdC4KCjIwMDAtMDctMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3NvdW5kLnNwZWMsIGRsbHMvd2lubW0vc291bmQxNi5jLCBpbmNsdWRlL3N0cmVzcy5oLCBpbmNsdWRlL3dpbmUvd2luZXNvdW5kLmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMva2VybmVsL3N0cmVzcy5zcGVjLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCU1lcmdlZCBzZXR1cHguZGxsIGludG8gc2V0dXBhcGkuZGxsLgoJTWVyZ2VkIHNvdW5kLmRsbCBpbnRvIHdpbm1tLmRsbC4KCU1lcmdlZCBzdHJlc3MuZGxsIGludG8ga2VybmVsMzIuZGxsLgoKCSogZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L2RwbGF5X21haW4uYywgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvbXNuZXRfbWFpbi5jLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXJfbWFpbi5jLCBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL3dvd19tYWluLmM6CglBZGRlZCBhIGZldyBlbXB0eSBzb3VyY2UgZmlsZXMgc28gdGhhdCBlYWNoIGRsbCBoYXMgYXQgbGVhc3Qgb25lIEMKCWZpbGUuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgaW5jbHVkZS9kcml2ZXIuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvdmZ3LmgsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCB3aW5kb3dzL2RyaXZlci5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSByZW1vdmVkIChub3cgb2Jzb2xldGUpIGRyaXZlci5oIGZpbGUgKGl0J3MgY29udGVudCBpcyBub3cgaW4gbW1zeXN0ZW0uaCkKCS0gdXBncmFkZWQgdmZ3LmggY29udGVudAoKCSogbXNkb3MvZHBtaS5jOiBBdm9pZCBjbG9iYmVyaW5nICVlYnguCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglSZXR1cm4gdGhlIHByb3BlciBlcnJvciBjb2RlIHdoZW4gYSAxNi1iaXQgdGFzayBmYWlsZWQgdG8gc3RhcnQKCSh0aGFua3MgdG8gUGV0ZXIgR2FudGVuKS4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRhcHRlZCB0byB0aGUgcmVjZW50IHdpbmVidWlsZCByZW5hbWUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGRldGVjdGlvbiBjb2RlIGZvciB2ZXJ5IG9sZCBXaW5kb3dzICgxLjEsIDIuMCwgLi4uKSBiaW5hcmllcyB0bwoJTU9EVUxFX0dldEJpbmFyeVR5cGUoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNb3ZlZCBzaGx3YXBpIHJvdXRpbmVzIGZyb20gc2hlbGwzMi5kbGwgdG8gc2hsd2FwaS5kbGwuCgoyMDAwLTA3LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2F0b20uYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci91bmljb2RlLmMsIHNlcnZlci91bmljb2RlLmgsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdW5pY29kZS8uY3ZzaWdub3JlLCB1bmljb2RlL01ha2VmaWxlLmluOgoJTWFrZSB1bmljb2RlLm8gaW50byBhIHNlcGFyYXRlIEVMRiBsaWJyYXJ5IHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBmcm9tCgl0aGUgd2luZXNlcnZlciB0b28uCgoJKiBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBmaXhlZCBhIGdyb3NzIGJ1ZyBpbiBTZXRDdXJyZW50RGlyZWN0b3J5QSAod2hlcmUgY2hhbmdpbmcgdG8gYSBuZXcKCSAgbm9uLWV4aXN0ZW50IGRpcmVjdG9yeSB3b3VsZCBsZWF2ZSB0aGUgbmV3IGRyaXZlIGVuYWJsZWQgdXBvbiBhYm9ydGluZwoJICAoZml4ZXMgQ3V0ZUZUUCBpbnN0YWxsIGFuZCBzaG91bGQgZml4IE1BTlkgYXBwcykKCSAgVGhpcyBoYXMgcHJvYmFibHkgYmVlbiBjYXVzZWQgYnkgbXlzZWxmLiAqYnJvd25wYXBlcmJhZyoKCS0gYWRkZWQgR2V0Vm9sdW1lSW5mb3JtYXRpb24gc2VyaWFsIG51bWJlciBidWctZm9yLWJ1ZyBjb21wYXRpYmlsaXR5CgktIGNvcnJlY3RlZCBVbmljb2RlIGxhYmVscyAoYmV0dGVyIENELVJPTSBoYW5kbGluZyBpbiBnZW5lcmFsKQoJLSBtb3ZlZCBDRC1ST00gbGFiZWwgZGV0ZWN0aW9uIGNvZGUgdG8gbWlzYy9jZHJvbS5jCgktIHBvc3NpYmxlIHRvIHVzZSBsb29wYmFjayBtb3VudGVkIElTTzk2NjAgZmlsZXMKCS0gaW5pdCBzb21lIHVuaW5pdGlhbGlzZWQgZHJpdmUgZmllbGRzCgktIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IGhlYWRlciBpbmNsdWRlcwoKCSogd2luZG93cy93aW5wb3MuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkZXN0cm95IHRoZSBjYXJldCBvbiBTV1BfSElERVdJTkRPVy4KCgkqIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2tlcm5lbC5yYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbWVzc2FnZXMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvbWVzc2FnZXMvd2luZXJyX2VudS5tYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbHN0ci5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglJbXByb3ZlZCBGb3JtYXRNZXNzYWdlOgoJLSBBZGRlZCBmdWxsIHN1cHBvcnQgZm9yIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNCgktIEltcGxlbWVudGVkIGxhbmd1YWdlIHNlYXJjaCBhcyBkb2N1bWVudGVkCgktIElsbGVnYWwgY29tYmluYXRpb25zIG9mIG9wdGlvbnMgdHJhcHBlZC4KCS0gTWVzc2FnZSB0YWJsZSBmb3Igc3lzdGVtIG1lc3NhZ2VzIGFkZGVkLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgRk9STUFUX01FU1NBR0UgZmxhZ3MgZGVmaW5pdGlvbiB0byB3aW5iYXNlLmguCgoJKiBNYWtlLnJ1bGVzLmluOgoJQWRkZWQgcnVsZXMgZm9yIG1lc3NhZ2UgY29tcGlsZXIgLm1jIGZpbGVzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVBvcnRhYmlsaXR5IGZpeGVzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBtaXNjL2NvbW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yYXNhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2VyaWFsdWkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgYSBidWctd29yay1hcm91bmQgZm9yIEJlcmtlbGV5IHlhY2MgKGJ5YWNjKSB3aGljaAoJICBkb2VzIG5vdCBnZW5lcmF0ZSBwcm9wZXIgZGVmYXVsdCB0cmFuc2l0aW9uIHJ1bGVzIGZvciBub24tdGVybWluYWxzLgoJICBTZWUgY29tbWVudHMgaW4gcGFyc2VyLnkgaG93IHRoZSBmaXggd29ya3MuCgktIENoYW5nZWQgdGhlIGVycm9yLWxpbmUvY2hhciBwb3NpdGlvbiB0byBtYWtlIGVtYWNzIGhhcHB5IHBhcnNpbmcKCSAgdGhlIHBvc2l0aW9uIG9mIHRoZSBlcnJvci4KCS0gQWRkZWQgY29tbWVudHMgaW4gdGhlIGRvY3VtZW50YXRpb24gaW4gd2hpY2ggb3JkZXIgdGhlIGxpbmUtbnVtZXIKCSAgYW5kIGNoYXJhY3Rlci1wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaXMgd3JpdHRlbi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgbGNhbGwgb3Bjb2Rlcywgc28gYWxsIGdhcy1lcyB1bmRlcnN0YW5kIGl0Li4uCgoJKiBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2ZsYXR0aHVuay5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3czMnNjb21iLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvdXR0aHVuay5jLCByZWxheTMyL3dvd3RodW5rLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9mbGF0dGh1bmsuaCwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNb3ZlZCB0aHVua2luZyBmdW5jdGlvbnMgb2ZmIHRvIGtlcm5lbDMyLmRsbC4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2VjLmMsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L3JlZ2lzdHJ5LmM6CglUZW1wb3JhcmlseSBtb3ZlZCBhZHZhcGkzMiByZWdpc3RyeSBzdXBwb3J0IGJhY2sgaW50byBsaWJ3aW5lLnNvLCBhbmQKCW1hZGUgYWR2YXBpMzIgYSBzZXBhcmF0ZSBkbGwuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglmaXhlZCBhIG51bWJlciBvZiBsb25nIHN0YW5kaW5nIGJ1Z3M6CgkgICAgLSBzZWdtZW50ZWQgZXhwcmVzc2lvbnMgZGlkbid0IGRpc3BsYXkgY29ycmVjdGx5CgkgICAgLSB1c2luZyBkeW5hbWljIHNpemUgYXJyYXkgZm9yIG5lc3RlZCB0eXBlcyBwYXJzaW5nCgkgICAgLSBjb3JyZWN0IGRpc3BsYXkgb2Ygc291cmNlIGNvZGUgYWZ0ZXIgYSBjcmFzaAoJZmFjdG9yaXplZCBzb21lIGNvZGUKCgkqIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9nZGkvd2luZy5zcGVjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW46CglNZXJnZWQgd2luZy5kbGwgaW50byBnZGkzMi5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCB0aGUgYXR0ZW1wdCB0byBkcmF3IGludmFsaWQgaW1hZ2UgaW5kZXhlcy4KCVByb3ZpZGUgdGhlIHR3byBwaXhlbCBidWZmZXIgYmV0d2VlbiB0aGUgaW1hZ2UgYW5kIHRoZSBsYWJlbC4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBIGdlbmVyaWMgaW1wbGVtZW50aW9uIG9mIElDb25uZWN0aW9uUG9pbnQvSUVudW1Db25uZWN0aW9ucy4KCgkqIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvZm50MmJkZi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBmbnQyYmRmIHByb2R1Y2UgY29ycmVjdCBmb250cy4KCgkqIG1zZG9zL2ludDE2LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSBpbnQxNiByZWFkIGZyb20gdGhlIEJJT1Mga2V5Ym9hcmQgYnVmZmVyLCBub3QgZGlyZWN0bHkgZnJvbSB0aGUKCWNvbnNvbGUgZHJpdmVyLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGJyb2tlbiBhc3NlbWJsZXIuIFJlbW92ZWQgc3VwcG9ydCBmb3Igb2xkIHByb3RlY3RlZC1tb2RlIGhhY2sKCWZvciBydW5uaW5nIHJlYWwtbW9kZSBjb2RlIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgdm04NjsgdGhlCgljdXJyZW50IENhbGxSTS0+Uk1DQiBzaG9ydGN1dCBjb2RlIHNob3VsZCB0YWtlIGNhcmUgb2YgYWxsCglXaW5lLXN1cHBsaWVkIFJNIEFQSXMgKHN1Y2ggYXMgRE9TQVNQSSkgYW55d2F5LgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglQZXJmb3JtIE5FX0luaXRQcm9jZXNzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgdGFzay4KCjIwMDAtMDctMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9rZXJuZWwvd2luODdlbS5zcGVjLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5jLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5zcGVjOgoJTWVyZ2VkIG1zYWNtIGFuZCBtc2FjbTMyIGRsbHMuCglNZXJnZWQgd2luODdlbSBhbmQgd2luZGVidWcgaW50byBrZXJuZWwzMi5kbGwuCgoyMDAwLTA3LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgaW50L0hBTkRMRSBtaXNtYXRjaGVzIHJldmVhbGVkIGJ5IC1EU1RSSUNULgoJUmVwbGFjZWQgdGhlIFdpbjE2IGhtZW1jcHkxNiAob2Jzb2xldGUpIHdpdGggbWVtY3B5LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIFdpbk1haW4ncyBzaWduYXR1cmUuCglSZXBsYWNlZCB0aGUgV2luMTYgaG1lbWNweTE2IChvYnNvbGV0ZSkgd2l0aCBtZW1jcHkuCglSZW1vdmVkIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gdGhlIExhbmd1YWdlcyBhcnJheS4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvcHJvZ21hbi9zdHJpbmcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIHRoZSBMYW5ndWFnZXMgYXJyYXkuCgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIFdpbk1haW4ncyBzaWduYXR1cmUuCglGaXhlZCBwYXJhbWV0ZXIgb3JkZXIgZm9yIHRoZSBjYWxsIHRvIENyZWF0ZVdpbmRvdy4KCgkqIGxpYnRlc3QvaGVsbG8uYywgbGlidGVzdC9oZWxsbzIuYywgbGlidGVzdC9oZWxsbzMuYywgbGlidGVzdC9oZWxsbzQuYywgbGlidGVzdC9oZWxsbzUuYywgbGlidGVzdC9uZXcuYywgbGlidGVzdC9yb2xleC5jLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL3dpbnZlci93aW52ZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgV2luTWFpbidzIHNpZ25hdHVyZS4KCgkqIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgLURTVFJJQ1QuCglBZGRlZCBtaXNzaW5nIGxpYnJhcmllcyBjb21jdGwzMiBhbmQgcnBjcnQ0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkcyBhbiBpbml0aWFsIFdTQUlvY3RsIGZ1bmN0aW9uIHdpdGggc3VwcG9ydCBmb3Igb25seSB0aGUKCVNJT19HRVRfSU5URVJGQUNFX0xJU1QgY29tbWFuZC4gIEFkZHMgaW5pdGlhbCBjb2RlIHRvIFdzQ29udHJvbAoJZnVuY3Rpb24gdG8gc3VwcG9ydCB0aGUgV1NDTlRMX1RDUElQX1FVRVJZX0lORk8gY29tbWFuZC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvbXBpbGF0aW9uIGZpeGVzIGZvciBPcGVuR0wuCgoJKiBNYWtlLnJ1bGVzLmluOiBNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglDb3JyZWN0ZWQgYzJtYW4gZmxhZ3MuIEl0IHN0aWxsIGNyYXNoZXMgYW55aG93IDotLwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURldGVjdCBicm9rZW4gZ2xleHQuaCBoZWFkZXJzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oOgoJTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJQWRkZWQgc29tZSBiYXNpYyB0ZXh0IGRpc3BsYXkgYW5kIGVkaXRpbmcgY2FwYWJpbGl0aWVzLCBjdXJzb3IKCXBvc2l0aW9uaW5nLCBhIGJpdCBvZiBzY3JvbGxpbmcgYW5kIGEgdGV4dCBmaWxlIGxvYWRlci4KCgkqIGluY2x1ZGUvdGFwaS5oOiBNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglJbXBsZW1lbnRlZCBsaW5lR2V0Q291bnRyeS4gKHdvcmtzIHdpdGggSHlwZXJUcm0uZXhlKQoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZvY3VzIGhhbmRsaW5nLCB2aXN1YWwgY2hhbmdlcyArIG1pc2MgZml4ZXMuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmM6IE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUltcGxlbWVudGVkIGxpbmVHZXRDb3VudHJ5LiAod29ya3Mgd2l0aCBIeXBlclRybS5leGUpCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbiBvZiBBZGRBY2Nlc3NBbGxvd2VkQWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgZnVuY3Rpb24gU2V0SXRlbSBpcyBjYWxsZWQgdG8gc2VsZWN0IGFuIGl0ZW0KCW9yIHNldCBpdHMgZm9jdXMuCgoJKiBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kM2R2ZWMuaW5sOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBhIGZldyBDKysgb3BlcmF0b3JzIHRvIERpcmVjdDNEIHN0cnVjdHVyZXMsIGFuZCBtYWRlIHNvbWUgdW5pb25zCgknbmFtZWxlc3MnLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluc3VyZWQgdGhhdCBhbGwgcGFyYW1ldGVycyBvZiBhc3luYyBmdW5jdGlvbnMgYXJlIGNvcGllZCBiZWZvcmUKCXJldHVybmlnIGZyb20gcmVxdWVzdC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9ycywgZG9jdW1lbnRhdGlvbi94MTFkcnYsIHRvb2xzL3dpbmVjb25mOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggYSBmZXcgdHlwb3MgYW5kIHN1Y2guCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgRGlyZWN0RHJhdzctcmVsYXRlZCBkZWZpbml0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIG5vbi1leGlzdGVuY2Ugb2YgKGYpbGV4IGFuIGVycm9yLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSURpcmVjdERyYXcsSURpcmVjdERyYXcyLElEaXJlY3REcmF3NCBmaXhlZCB1cCBpbiByZWdhcmQgdG8gQ09NIHVzYWdlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBmZXcgV2luMzIgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVkdWNlIHNjb3BlIG9mICJTdGF0dXMiICNpZmRlZiBoYWNrLgoKCSogaWYxNjMyL3JlbGF5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNheSB0aGF0ICJObyBoYW5kbGVyIiBtZXNzYWdlcyBhcyBmYXRhbC4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRml4ZWQgU2hhcmVkRGlyIGxvY2F0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBtc2Rvcy9kcG1pLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS93aW5udC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2UgdGhlIFY4NkJBU0UgbWFjcm8gdG8gY2FsbCBET1NNRU1fTWVtb3J5QmFzZSgpIGluc3RlYWQgb2YgdXNpbmcKCXRoZSB1Z2x5IERyNyBoYWNrLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmaXJzdCBzZWVrIG9uIE1FTSBtbWlvIGZpbGVzLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIGNhbGxzIHRvIERJQUxPR19Eb0RpYWxvZ0JveCBhbmQgRElBTE9HX0NyZWF0ZUluZGlyZWN0LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGZldyBtb3JlIGZpZWxkcyB0byBIVFRQX0dldFN0ZEhlYWRlckluZGV4KCkgYW5kIGZpeCBzb21lIHR5cG9zLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglQdXQgdGhlIFVSTCBwYXJhbWV0ZXIgbGlzdCBpbiB3aXRoIHRoZSBVUkwgcGF0aCBpZiB0aGUgRXh0cmFJbmZvCglidWZmZXIgaXNuJ3Qgc3BlY2lmaWVkLgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIGNhbGN1bGF0aW9uIG9mIGJ1ZmZlciBsZW5ndGggYWZ0ZXIgc3dpdGNoIG9mIHdpbmRvdyB0ZXh0IHRvCgl1bmljb2RlLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ29tbWVudCBvdXQgYSBub25mdW5jdGlvbmFsIERPUyBwYXJ0IG9mIGRlYnVnZ2VyLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzdHViIGZvciBSYXNIYW5nVXBBKCkuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZldpbmRvd1Byb2Mgc2hvdWxkIHBhc3MgdW5oYW5kbGVkIFdNX01PVVNFV0hFRUwgdG8gcGFyZW50LCBhY2NvcmRpbmcKCXRvIGRvY3VtZW50YXRpb24uCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGZldyBwcm9ibGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCS0gQ2hhbmdlZCB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciBmb3IgbG9hZGluZyByZXNvdXJjZXMgZnJvbSAyNTYgdG8gNTEyCgktIERlZmluZSBNQVhfUkVTT1VSQ0VfU1RSSU5HX0xFTkdUSCBpbnN0ZWFkIG9mIHVzaW5nIGl0IG1hZ2ljYWxseSB0aHJvdWdob3V0CgkgIHRoZSBmdW5jdGlvbgoJLSBVc2UgbHN0cmNweW5XIGluc3RlYWQgb2YgbHN0cmNweVcKCjIwMDAtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDA3MTYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIGFzc2VtYmx5IHdyYXBwZXIgZm9yIGNhbGxpbmcgd2luZG93IHByb2NlZHVyZXMuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJR2V0IGZ1bGwgcGF0aCBvZiBhcmd2WzBdIGJlZm9yZSB3ZSBjaGFuZ2UgZGlyZWN0b3JpZXMuCglNYWtlIHN1cmUgcHJvY2VzcyBuYW1lcyBhcmUgbG9uZyBwYXRoIG5hbWVzLgoJQ2xlYW5lZCB1cCBpbml0aWFsaXNhdGlvbiBhIGJpdC4KCgkqIHNlcnZlci9zb2NrLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluIHNldF9zb2NrZXRfZXZlbnQsIHRoZSBldmVudCBzaG91bGQgYmUgc2lnbmFsZWQgaWYgdGhlcmUncyBhIHBlbmRpbmcKCW5ldHdvcmsgZXZlbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZXZlbnRzIHRoZSBhcHBsaWNhdGlvbiB3YW50ZWQgdG8gYmUKCW5vdGlmaWVkLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvY2xhc3MuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHRvb2xzL3dpbmVpbnN0YWxsLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRG9jIGFuZCB0cmFjZSB1cGRhdGVzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJhbnNtaXQgY3VycmVudCBkaXJlY3Rvcnkgc2V0dGluZ3MgdG8gbmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMuCgoJKiBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW46CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglBZGRlZCBHZXJtYW4gaW5zdGFsbGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG1hbnVhbC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglSYXVsIEZlcm5hbmRlcyA8cmdmQGllZy5jb20uYnI+CglBZGRlZCBCcmF6aWxpYW4ga2V5Ym9hcmQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IGNsaXBwaW5nIHJlZ2lvbiB0byBjbGllbnQgd2luZG93IGJlZm9yZSBvd25lci1kcmF3biBwYWludGluZy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgdGhlICJTaGFyZWREaXIiIHJlZ2lzdHJ5IGtleS4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBEaXJlY3QzRCBzdXBwb3J0IGFuZCBhIGxvdCBvZiB3YXJuaW5ncwoJLSBhZGQgc3VwcG9ydCBmb3IgRERyYXcgaW4gYSB3aW5kb3cgKG5vdCBvcHRpbWl6ZWQgeWV0KQoJLSBjbGVhbnMgdXAgT3BlbkdMIGV4dGVuc2lvbnMgaGFuZGxpbmcgZm9yIEQzRAoKCSogY29udHJvbHMvc3RhdGljLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQmFja2dyb3VuZCBvZiBTU19TSU1QTEUgc3RhdGljIGNvbnRyb2wgaXMgbm90IGZpbGxlZCAodW5sZXNzIGl0IGhhcwoJU1NfTk9QUkVGSVggdG9vKS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIFVOSVggY3dkIHRvIC8gYWZ0ZXIgY2FsY3VsYXRpbmcgV0lORSBjdXJyZW50IGRpcmVjdG9yeSAodG8gYWxsb3cKCUNEIHVubW91bnRzKS4KCjIwMDAtMDctMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU5ldyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBmcm9tIEZyYW5jb2lzIEphY3F1ZXMgd2l0aCBhIG1vZGlmaWNhdGlvbiBvZgoJbXkgb3duIHRoYXQgbWFrZXMgZXZlcnlib2R5IGhhcHB5IDotKQoKCSogbWlzYy9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUhvb2sgc2VyaWFsdWkgZGxsIGludG8gZXhpc3RpbmcgY29tbSBmdW5jdGlvbnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5oLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIHNlcmlhbHVpIGRsbCBjb250YWluaW5nIENvbW1Db25maWdEaWFsb2csCglHZXREZWZhdWx0Q29tbUNvbmZpZyBhbmQgU2V0RGVmYXVsdENvbW1Db25maWcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcy4KCS0gTWlub3IgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBbGwgc3RhbmRhcmQgd2luZG93IGNvbnRyb2xzIHNob3VsZCBoYXZlIENTX1BBUkVOVERDLCBidXQgc2hvdWxkIHN0aWxsCgljbGlwIHRvIHRoZSBjb250cm9sIHdpbmRvdy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJSm9obiBSIC4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGFsc28gaGF2ZSB0byB2YWxpZGF0ZSB0aGUgZnJhbWUgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVuIHRoZQoJYXBwIGRvZXNuJ3QgY2FsbCBCZWdpblBhaW50LgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglFeHRlbmQgdGhlIFdTT0NLMzIgd2FybmluZyBpbiBjZXJ0YWluIGZ1bmN0aW9ucyB0byBtZW50aW9uIFdTMl8zMiB0b28uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUVkIFNub3cgPGVkX3Nub3dAdHRtZW5naW5lZXJpbmcuY29tPgoJRml4ZXMgdW5tdXRpbmcgd2hlbiB1bm11dGVkLgoJVW5pZmllcyBzY2FsZSByZXBvcnRlZCB3aXRoIHNjYWxlIHVzZWQgZm9yIHZvbHVtZSBjb250cm9sLgoJSGFjayBmb3IgQmFzcy9UcmVibGUgdW50aWwgYmV0dGVyIGZpeCBpcyBjb21wbGV0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIERCQ1MvdW5pY29kZSBlbmNvZGluZyB0ZW1wbGF0ZXMuCgoJKiBjb250cm9scy9jb21iby5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNsZWFyIHNlbGVjdGlvbiB3aGVuIGluaXRpYWwgZW50cnkgaXMgbm90IGluIHRoZSBsaXN0LgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgb2xlL29sZTJubHMuYzoKCU1hZGUgLS1sYW5ndWFnZSBiZWhhdmUgdGhlIHNhbWUgYXMgc2V0dGluZyB0aGUgTEFOR1VBR0UgZW52aXJvbm1lbnQKCXZhcmlhYmxlLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS93dHlwZXMuaCwgbG9hZGVyL2xvYWRvcmRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHJwY3J0NC5kbGwuCglJbXBsZW1lbnQgVXVpZENyZWF0ZSAodXNpbmcgZXhpc3RpbmcgY29kZSBmcm9tIENvQ3JlYXRlR3VpZCkuCglDb0NyZWF0ZUd1aWQgY2FsbHMgVXVpZENyZWF0ZS4KCgkqIG1lbW9yeS9oZWFwLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBzdXBwb3J0aW5nIERCQ1MuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVJvYiBGYXJudW0gPHJmYXJudW1AbWluZHNwcmluZy5jb20+CglJZ25vcmUgaUJpdG1hcCB3aWR0aCB3aGVuIGRyYXdpbmcgZmxhdCB0b29sYmFyLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUZpeGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gdGhlIFBFIGxvYWRlci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CglFbnN1cmUgdGhlIHZhbGlkaXR5IG9mIGhPbGRGb2N1cyBiZWZvcmUgY2FsbGluZyBXSU5fR2V0VG9wUGFyZW50LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglEcmV3IFJvbm5lYmVyZyA8ZHJld0Bjb2Rvbi5wcmluY2V0b24uZWR1PgoJSWdub3JlIGJyb2tlbiBmb250cyB3aGVuIGJ1aWxkaW5nIGNhY2hlIGZpbGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFsbG93IFNldFdpbmRvd0xvbmcoLi4uIEdXTF9TVFlMRSkgdG8gY2hhbmdlIHZpc2libGUgYml0LgoKCSogZG9jdW1lbnRhdGlvbi9yZWdpc3RyeToKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPkQKCVRleHQgb2YgV1dOIGFydGljbGUgIlRoZSBSZWdpc3RyeSIuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCS0gTmV3IGZ1bmN0aW9uIGluIGFzcGkuYyBTQ1NJX0ZpeF9DTURfTEVOIHdoaWNoIGRldGVybWluZXMgaWYgTGludXggaXMKCSAgZ3Vlc3NpbmcgdGhlIGNvbW1hbmQgbGVuZ3RoIGNvcnJlY3RseSwgYW5kIGlmIG5vdCwgdGVsbCdzIGl0IHdoYXQncyB1cC4KCS0gQ2hhbmdlZCBzdHJjYXQgdG8gc3RyY3B5IGluIFNlbmRBU1BJMzJDb21tYW5kIHRvIGF2b2lkIHJlcXVpcmluZyB0aGUKCSAgY2FsbGVyIHRvIGNsZWFyIHRoZSBmaWVsZHMuCgktIEFkZGVkIGEgbmV3IGZpZWxkIHRvIEhBX1VuaXF1ZSBjb250ZW50IHRvIGZpeCBzb21lIGFwcGxpY2F0aW9ucy4gIFdpbGwKCSAgZml4IHRoaXMgZm9yIGdvb2QgYXQgYSBsYXRlciBkYXRlLgoJLSBBZGRlZCBUUkFDRSB0byBHZXRBU1BJMzJETExWZXJzaW9uIChhbmQgRklYTUUgd2hlbiBub3QgcnVubmluZyB1bmRlcgoJICBMaW51eCkKCS0gQWRkZWQgc29tZSBjb25zdGFudHMgdG8gd2luZXNjc2kuaAoJKHdpdGggdGhlIGhlbHAgb2YgQmVybmQgQmVybmllIE1leWVyIDxibWV5ZXJAY3MubW9uYXNoLmVkdS5hdT4pCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJU3R1YnMgZm9yIENyZWF0ZURlc2t0b3BBIGFuZCBFbnVtRGVza3RvcFdpbmRvd3MuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHdzMl8zMiBsb2Fkb3JkZXIuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJVHJ5IHRvIHVubGluayBvdXRwdXQgZmlsZSBiZWZvcmUgb3BlbmluZyBpdC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgJXMgYnkgJXAgaW4gRURJVF9XTV9TZXRUZXh0LgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBXU0FXYWl0Rm9yTXVsdGlwbGVFdmVudHMgKGFsaWFzIHRvIFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGQgYSB3YXJuaW5nIHdoZW4gdGhlIG5vcm1hbCBsb2FkIGFkZHJlc3MgZm9yIGEgd2luMzIgcHJvZ3JhbSBpcyBub3QKCWF2YWlsYWJsZS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglPTEUgcGljdHVyZSBvYmplY3QgaW1wbGVtZW50YXRpb24uCgoJKiBtaXNjL2NvbW0uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgYW4gaW5jb3JyZWN0IGZvcm1hdCBzdHJpbmcuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGxvYWRvcmRlciBlbnRyeSBmb3IgdGhlIExpbnV4IGdsaWRlM3ggbGlicmFyeS4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkICJDb21tb25GaWxlc0RpciI9IkM6XFByb2dyYW0gRmlsZXNcQ29tbW9uIEZpbGVzIi4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBQZW50aXVtIFByby8yLzMvNCBjb25kaXRpb25hbCBtb3ZlIGluc3RydWN0aW9ucy4KCjIwMDAtMDctMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBtZW1vcnkvY29kZXBhZ2UuYzoKCVNldCBhbnNpL29lbS9tYWMgY29kZSBwYWdlcyBmcm9tIGN1cnJlbnQgbG9jYWxlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZSBmb3IgcmVhbGx5IGNsdWVsZXNzIG5ld2JpZXMuCgoJKiBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTdHViIGZvciB0aGUgQUNNX01FVFJJQ19NQVhfU0laRV9GT1JNQVQgY29tbWFuZCBvZiBhY21NZXRyaWNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIGZsaXBjaGFpbiBhbmQganVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3VyZmFjZSBpZiBpdAoJaGFwcGVucy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBfdnNucHJpbnRmIGJ5IGNhbGxpbmcgd3ZzbnByaW50ZkEuCgoJKiBvYmplY3RzL2RpYi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbiBDcmVhdGVESUJTZWN0aW9uIGZ1bmN0aW9uLCBpZiBoZGMgaXMgTlVMTCBpdCBub3cgdXNlcyB0aGUgZGVza3RvcCBEQwoJaW5zdGVhZCBvZiBmYWlsaW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIFRPT0xCQVJfRHJhd1N0cmluZygpIHRvIG9mZnNldCBidXR0b24gdGV4dCBpZiBpbmZvUHRyLT5oaW1sRGVmCglpcyBub24temVyby4gIEJldHRlciBmaXggdGhhbiBteSBwcmV2aW91cyBwYXRjaC4KCjIwMDAtMDctMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglMYXp5IGluaXRpYWxpc2F0aW9uIG9mIHRocmVhZCBsb2NhbGUuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgaW5jbHVkZS9kcGxvYmJ5Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNYWtlIHJlZiBjb3VudGluZyBhIGxpdHRsZSBtb3JlIGVmZmljaWVudAoJLSBDb3JyZWN0IHN1c3BlbmRlZCBwcm9jZXNzIHJlc3VtcHRpb24KCS0gRG9uJ3QgdXNlIHN5cy9xdWV1ZS5oIGFueW1vcmUKCS0gUHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHNlbWFwaG9yZSBhY3Jvc3MgcHJvY2Vzc2VzCgktIENyZWF0ZSBhIG1hcHBlZCBmaWxlIGZvciBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzCgktIENoYW5nZSBzb21lIHRyYWNlIG1lc3NhZ2VzCgktIEFsbG9jYXRlIGR5bmFtaWMgc2hhcmVkIGRhdGEgZnJvbSB0aGUgbWFwcGVkIGZpbGUKCS0gUmV3b3JrIHNldHRpbmcgYW5kIHJldHJpZXZpbmcgbG9iYnkgc2V0dGluZ3MgZnJvbSBzaGFyZWQgbWVtb3J5CgktIEFkZCBpbmZyYXN0cnVjdHVyZSBmb3Igc3luY3Jvbml6YXRpb24gYWZ0ZXIgYXBwIGxhdW5jaAoJLSBTbWFsbCBkb2N1bWVudGF0aW9uIHVwZGF0ZQoJLSBJbmNsdWRlIHNvbWUgc3R1ZmYgbWlzc2luZyBmcm9tIGhlYWRlcgoJLSBTdGFydCBvbiBkcCBhbmQgZHBsIG1lc3NhZ2UgaW5mcmFzdHJ1Y3R1cmUKCS0gVW5pY29kZSB2ZXJzaW9ucyBvZiBwbGF5ZXIvZ3JvdXAgY29tbWFuZHMgYWRkZWQKCS0gQ29tYmluZWQgQ29ubmVjdC9Db25uZWN0RXggYW5kIE9wZW4vU2VjdXJlT3BlbgoJLSBNb3JlIGltcGxlbWVudGF0aW9uCgoJKiBkbGxzL2tlcm5lbC9ubHMvKiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTW92ZWQgYWxsIE5MUyBkZXBlbmRlbnQgZGF0YSB0byB0aGUgS0VSTkVMIHJlc291cmNlcy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW92ZWQgc2V0dGluZyB0aGUgbG9jYWxlIHZhbHVlIHRvIHRoZSByaWdodCBwb3NpdGlvbi4KCgkqIG1pc2MvbHN0ci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEZvcm1hdE1lc3NhZ2VbQXwxNl0gYWdhaW5zdCBzb21lIGJ1ZmZlciBvdmVyZmxvdyBjYXNlcy4KCgkqIGRlYnVnZ2VyL2luZm8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGV4dHJhbmVvdXMgdHJhY2UgbWVzc2FnZS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVW5jb25kaXRpb25uYWxseSBwcmludCBtZXNzYWdlcyBvbiBETEwgbG9hZCBicmVha3BvaW50LgoKCSogZGVidWdnZXIvYnJlYWsuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgd2luZWRiZyB3YXRjaHBvaW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVByZXZlbnQgU3lzQWxsb2NTdHJpbmcgYW5kIFN5c0FsbG9jU3RyaW5nMTYgdG8gcGVyZm9ybSBhbnkgcHJvY2Vzc2luZwoJb24gTlVMTCBzdHJpbmdzLgoKCSogdG9vbHMvZm50MmJkZi5jOgoJU3RhcyBTZXJnZWV2IDxzdGFzLm9yZWxAbWFpbGNpdHkuY29tPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIGVuY29kaW5nIG9mIGZvbnRzIGZyb20gdGhlIGNvbW1hbmQKCWxpbmUsIGV2ZW4gaWYgYXV0b2RldGVjdGVkLgoKCSogd2luZG93cy9zcHkuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBpbmNsdWRlL21kaS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5lLmluaToKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQ29udmVydCBXTkQudGV4dCBmaWVsZCB0byBVbmljb2RlLgoJQWRkIG5ldyBrZXkgdG8gd2luZS5pbmkgaW4gdGhlIHNlY3Rpb24gW3gxMWRydl0gLSBUZXh0Q1AsIHdoaWNoIG1lYW5zCgljb2RlIHBhZ2UgdXNlZCBmb3IgdGV4dHMgcGFzc2VkIHRvIFguCglBY2NvcmRpbmdseSBmaXggaGFuZGxlcnMgb2YgV01fU0VUVEVYVC9XTV9HRVRURVhULgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBCYWNrZWQgb3V0IHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIFJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uQS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRmFrZXMgYSBuZWdvdGlhdGlvbiBvZiB0aGUgd2luc29jayB2ZXJzaW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYmV0dGVyIGxvYWRpbmcgb2YgKi50bGIgZmlsZXMKCS0gc2VwZXJhdGVkIGNvZGUgZm9yIGxvYWRpbmcgdGxiIHJlc291cmNlIGludG8gbWVtb3J5IGZyb20gY29kZSBmb3IKCSAgcGFyc2luZyB0aGUgdGxiIHJlc291cmNlLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgT2xlQ3JlYXRlLgoKMjAwMC0wNy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglHZXRDbGFzc0luZm8gc2hvdWxkIHJldHVybiBnbG9iYWwgY2xhc3NlcyBldmVuIGlmIHRoZSBoSW5zdGFuY2UKCXBhcmFtZXRlciBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHBhc3NlZCB0byB0aGUgUmVnaXN0ZXJDbGFzcwoJZnVuY3Rpb24uCgoJKiBtaXNjL2NvbW0uYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglGaXhlcyB0aGUgQnVpbGRDb21tRENCQSBmdW5jdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3BvcnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIGxpYnV0aWwuaC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIHRoZSBmb2N1cyBmb2xsb3cgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbSBmb3IgbXVsdGlzZWxlY3QgbGlzdGJveGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgTEhhc2hWYWxPZk5hbWVTeXNBLgoJRG9uJ3QgY3Jhc2ggaWYgd2UgZW5jb3VudGVyIGEgQlNUUiB3aXRoIGxlbmd0aCA8PSAwLgoJRml4IHR5cG9zIGluIElUeXBlTGliOjpHZXREb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVdpdGggc29tZSBhcHBzIGEgZmF1bHQgd2FzIHBvc3NpYmxlIGluIEV4dHJhY3RBc3NvY2lhdGVkSWNvbi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglHZXRJY29uSW5mbyBkaWQgbm8gY29ycmVjdGx5IGlkZW50aWZ5IGljb25zIGZyb20gY3Vyc29ycy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6CglIYWl0aGVtIEhtaWRhIDxoYWl0aGVtQG1hY2FkYW1pYW4uY29tPgoJVW5kZXIgV2luZG93cyA5NS85OC9OVCwgbWVzc2FnZSBib3hlcyBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgaWNvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUZpeGVkIGxzdHJjcHluQXRvVyB1c2FnZSAocmVwb3J0ZWQgYnkgU3RhcyBTZXJnZWV2KS4KCVNtYWxsIGNsZWFudXBzLgoKCSogZGxscy93c29jazMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBkbGxzL2RwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvZHBsYXkuc3BlYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LnNwZWMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC93b3czMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hmb2xkZXIvLmN2c2lnbm9yZSwgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNvY2svd3NvY2szMi5zcGVjLCBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd293MzIvd293MzIuc3BlYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglDcmVhdGVkIHNlcGFyYXRlIGxpYnJhcmllcyBmb3IgZHBsYXksIHNoZm9sZGVyLCBzaGx3YXBpLCB3b3czMiBhbmQKCXdzb2NrMzIgc28gdGhhdCB3ZSBoYXZlIGF0IG1vc3Qgb25lIFdpbjMyIGRsbCBpbiBlYWNoIC5zbyBsaWJyYXJ5LgoKMjAwMC0wNy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgWDExRFJWX0RJQl9HZXRESUJpdHMgdG8gcHJvcGVybHkgaGFuZGxlIGJvdHRvbS11cCBESUJzCgltYW5pcHVsYXRpb24uCglDb3JyZWN0ZWQgWEdldFN1YkltYWdlIGFyZ3VtZW50cyBvcmRlci4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWF0dGhldyBMYWtlIDxNTGFrZUBzdW5iZWx0LXBsYi5jb20+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBTYWZlQXJyYXlHZXRWYXJUeXBlLgoJQWRkZWQgYSBWVF9SRUNPUkQgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBtaXNjL2NvbW0uYzoKCVN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb25zIEdldERlZmF1bHRDb21tQ29uZmlnQS9XLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQ29ycmVjdGVkIDI0LT4zMiBjb252ZXJzaW9uLiBTdGlsbCBvbmx5IGNvcnJlY3QgZm9yIGxpdHRsZSBlbmRpYW4uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciBXU19ESVNBQkxFRCBwYXJlbnQgaW4gV2luZG93RnJvbVBvaW50IGZvciB1bi1tYW5hZ2VkIHdpbmRvd3MuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVJlbmFtZSBNT0RVTEVfSW5pdERsbCB0byBNT0RVTEVfSW5pdERMTCBmb3IgdGhlIHNha2Ugb2YgY29uc2lzdGVuY3kuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgVE9PTEJBUl9EcmF3U3RyaW5nKCkgdG8gb2Zmc2V0IGJ1dHRvbiB0ZXh0IGlmIHRoZSBoaW1sIHBhcmFtZXRlcgoJaXMgbm9uLXplcm8gb3IgdGhlIGRlZmF1bHQgaGltbCwgaGltbERlZiwgaXMgbm9uLXplcm8uICBGaXhlcyBhIGJ1ZyBpbgoJV2luWmlwIDguMCB3aGVyZSB0ZXh0IGlzIG5vdCBzaGlmdGVkIGRvd24gYnkgdGhlIGhlaWdodCBvZiB0aGUgYnV0dG9uCglpbWFnZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglDaGVjayB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgRElBTE9HX0dldENoYXJTaXplLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzZXR1cGFwaSBzaGFyZWQgbGlicmFyeSBhbmQgU2V0dXBJdGVyYXRlQ2FiaW5ldCBzdHViLgoKCSogZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL3Zmdy5oLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbXN2aWRlby5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwgd2luZG93cy9kcml2ZXIuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJSW1wbGVtZW50ZWQgYSBsYXJnZSBudW1iZXIgb2YgdGhlIG1zdmlkZW8gZGxsIHJvdXRpbmVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFsbG93IHRoZSBzaXplIG9mIGJpdG1hcHMgdG8gYmUgY2hhbmdlZCBhZnRlciB0b29sYmFyIGJ1dHRvbnMgaGF2ZQoJYmVlbiBhZGRlZC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJT24gV2luZG93cyBwcm9wZXJ0eSBzaGVldCBoYXMgRFdMX1VTRVIgZHdvcmQgcG9pbnRpbmcgdG8gYSBzdHJ1Y3R1cmUKCXRoYXQgc3RhcnRzIHdpdGggSFdORCBhbmQgUFJPUFNIRUVUSEVBREVSIGZpZWxkcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgR2V0L1NldFRocmVhZFByaW9yaXR5Qm9vc3QuCgoJKiBkb2N1bWVudGF0aW9uL3BzZHJpdmVyOgoJU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglBZGRlZCBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBzZXR1cCB3aW5lJ3MgQnVpbGRpbiBQb3N0c2NyaXB0IERyaXZlcgoJd29ya2luZyB3aXRoIGdob3N0c2NyaXB0IChhZm1maWxlcywgcHBkZmlsZSkuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBFeHBsaWNpdCBpbml0IG9mIHJ0bi5jb29raWUgaW4gREVCVUdfRXZhbEV4cHIgdG8gYmFkIHZhbHVlIHRvCgkgIGV4cG9zZSBmdXJ0aGVyIGJhZCBjb2RlCgktIFByaW50IG9mIHBvaW50ZXIgdXNlZCBhcyBhcnJheSBub3cgd29ya3MKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU9ubHkgdXNlIHRoZSBjb2x1bW4gaGVhZGVycyB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGEKCUxEU19SRVBPUlQtdHlwZSBsaXN0Ym94IGlmIGl0IGFjdHVhbGx5IGhhcyBjb2x1bW4gaGVhZGVycy4KCShpZS4gTFZTX05PQ09MVU1OSEVBREVSIGJpdCBpcyBub3Qgc2V0LikKCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglCZWdpbkRlZmVyV2luZG93UG9zIHNob3VsZCBhbGxvdyB6ZXJvIGNvdW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzZW1pLXN0dWIuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglIYW5kbGUgbWNpU2VuZFN0cmluZygib3BlbiA8bWNpdHlwZT4iLC4uLikKCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJLSBCdWdmaXg6IE1hY3JvIGV4cGFuc2lvbiBvZiBzdHJpbmdzIHdvdWxkIGFzc2VydCBhbiBpbnRlcm5hbCBlcnJvcgoJICBvciBhIHNlZ2ZhdWx0IGR1ZSB0byBhIGxhY2tpbmcgJ1wwJyBpbiB0aGUgZXhwYW5zaW9uLgoJLSBCdWdmaXg6IFByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIHJlYWxsb2NhdGlvbiBvZiBtYWNybyBleHBhbnNpb24KCSAgYnVmZmVycy4KCS0gQnVnZml4OiBXcmMncyB2ZXJzaW9uIGluZm9ybWF0aW9uIHdhcyBub3QgcGFzc2VkIGFzIG51bWVyaWNhbCB0byB0aGUKCSAgcHJlcHJvY2Vzc29yIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbWFjcm8uCgktIFJlbGF4ZWQgdGhlIG5ld2xpbmUgY29uc3RyYWludCBpbiBnbG9iYWwgTEFOR1VBR0Ugc3RhdGVtZW50cywgd2hpY2gKCSAgd2FzIGludHJvZHVjZWQgaW4gdmVyc2lvbiAxLjEuMywgc28gdGhhdCBzb21lIGZhbmN5IHByZXByb2Nlc3NvcgoJICBjb25zdHJ1Y3RzIGNhbiB3b3JrLgoJLSBSZW1vdmVkIHRoZSBnY2Mtc3R5bGUgI2xpbmUgaGFuZGxpbmcgZnJvbSB0aGUgcmVzb3VyY2UtcGFyc2VyIHRvIHRoZQoJICByZXNvdXJjZS1zY2FubmVyIHNvIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gaW5jbHVkZSBmaWxlcyBhdCBhbnkgc3RhZ2UKCSAgb2YgdGhlIHNvdXJjZSwgaW5kZXBlbmRlbnQgb2YgdGhlIHBhcnNlci1zdGF0ZS4KCS0gQnVnZml4OiBTdHJpbmd0YWJsZXMgd2VyZSBub3QgY29ycmVjdGx5IHNlYXJjaGVkIGZvciBkdXBsaWNhdGVzCgkgIGJlY2F1c2UgdGhlIGxhbmd1YWdlIGNvbXBhcmlzb24gZGlzcmVnYXJkZWQgdGhlIHN1Ymxhbmd1YWdlLgoJLSBFbGltaW5hdGVkIGEgcmVwZXRpdGl2ZSB3YXJuaW5nIHdoZW4gd3JpdGluZyBzdHJpbmd0YWJsZXMgd2l0aCB6ZXJvCgkgIGxlbmd0aCBzdHJpbmcgZW50cmllcy4gVGhlc2UgYXJlIHBlcmZlY3RseSB2YWxpZCAoYnV0IG1ha2Ugbm8gc2Vuc2U6LSkuCgkgIFdhcm5pbmdzIGFyZSBub3cgb25seSBnZW5lcmF0ZWQgZHVyaW5nIHBhcnNlIGluIHBlZGFudGljIG1vZGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggU3lzU3RyaW5nQnl0ZUxlbiB0byByZWFsbHkgcmV0dXJuIHRoZSBsZW5ndGggaW4gYnl0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJQ2hhbmdlZCB0aGUgc2l6ZSBvZiBwcm9wZXJ0eSBzaGVldCB0ZW1wbGF0ZSB0byBiZSB0aGUgc2FtZSBhcyB0aGUKCW9yaWdpbmFsIG9uZSAod2FzIDI5MngxNTksIG5vdyAyMjB4MTQwKS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZW9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IElEYXRhQWR2aXNlSG9sZGVyLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggdHlwbyBpbiBJVHlwZUxpYjo6SXNOYW1lLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDcmVhdGVTdHJlYW1PbkhHbG9iYWwgc2hvdWxkIGFsbG9jIGEgc2hhcmVkIG1lbW9yeSBibG9jayBpZiBzdXBwbGllZAoJaGFuZGxlIGlzIDAuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBjcmFzaCBpZiB0aGVyZSB3YXMgbm8gZmlsZXMgc2VsZWN0ZWQgYW5kIE9LIGJ1dHRvbiB3YXMgcHJlc3NlZC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiBwcm9ibGVtcyB3aXRoIHVuZGVycnVucyBhbmQgc3RvcHBpbmcvcmVzdGFydGluZy4KCgkqIG1pc2MvbWFpbi5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJRml4ZWQgdGhlIGRlYnVnbXNnIGhlbHAuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglNYXAgZWFjaCBjaGFubmVsIG9uIGV2ZXJ5IGhvc3QgdG8gYW4gQVNQSSBjb250cm9sbGVyIG51bWJlci4KCVN0b3JlIG1hcCBpbiBIS0VZX0RZTl9EQVRBLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURTQV9JbnNlcnRJdGVtIHJldHVybnMgbkluZGV4LCBub3Qgbkl0ZW1Db3VudC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgYmFja2dyb3VuZCByZWRyYXdpbmcgd2hlbiBjb250cm9sIGlzIGNvdmVyZWQuICBGaXhlZCBhIHJlYWxseQoJZHVtYiBtaXN0YWtlIEkgbWFkZSB3aXRoIGJvcmRlciBkcmF3aW5nIG1hbnkgcGF0Y2hlcyBhZ28uICBGaXhlZAoJb2Zmc2V0IGJ5IDEgYWxpZ25tZW50IGlzc3Vlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlbW92ZWQgYW5vdGhlciBiYWQgYXNzZXJ0IGFuZCB0d28gbm8gbG9uZ2VyIG5lZWRlZCBvbmVzLgoKMjAwMC0wNi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJhZCBleGNlcHRpb24gaGFuZGxlciBjaGFpbiB0ZXJtaW5hdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCB3aW5kb3dzL3dpbi5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTW92ZWQgemVyby1zaXplZCB3aW5kb3cgaGFjayB0byB4MTFkcnYuCgoJKiBkbGxzL250ZGxsL250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiAibm8gZGVidWdnZXIgYXR0YWNoZWQiIGluIE50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MgdG8gc2F0aXNmeQoJc29tZSBjb3B5IHByb3RlY3Rpb24gbWVjaGFuaXNtcy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIGxwVGVtcGxhdGVOYW1lIGlzIGdvdHRlbiBmcm9tIE1BS0VJTlRSRVNPVVJDRS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0d28gYXNzZXJ0cyBpbiBCbHQoKS4KCgkqIGRsbHMvZGRyYXcvaGVscGVyLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVByb3Blcmx5IGNhc3QgYXJndW1lbnRzIHRvIHByaW50ZiB0byBtYXRjaCB0aGUgaW50ZW5kZWQgb3V0cHV0LgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU2V2ZXJhbCBmaXhlcyBzcG90dGVkIGJ5IENvcmVsIChKZWFuLUNsYXVkZSBCYXRpc3RhICYgU2VhbiBMYW5nbGV5KS4KCVNlZWtpbmcgZnJvbSBTRUVLX0VORCB3YXMgd3JvbmcuCglTZWVraW5nIG9uIGVtcHR5IGJ1ZmZlciB3YXMgd3JvbmcuCglTb21lIGluc3RhbGxlZCBpb1Byb2NzIGhhZCB1bmluaXRpYWxpemVkIGZpZWxkcy4KCUEgZmV3IG1vcmUgYml0cyBmb3IgcmVuYW1lIGZ1bmN0aW9ucy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvd2luZWRiZy5jLCBkb2N1bWVudGF0aW9uL3dpbmVkYmc6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIEJyZWFrT25EbGxMb2FkIGludGVybmFsIHZhciwgY2xlYW5lZCB1cCByZWdpc3RlciB2YWxpZGF0aW9uIG9uCglleGNlcHRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkIHdvcmthcm91bmRzIGZvciBudWxsIHN0cmluZ3MgaW4gVE9PTEJBUl9JbnNlcnRCdXR0b25BIGFuZCBjYWxsaW5nCglUT09MQkFSX1NldEJ1dHRvblNpemUgYWZ0ZXIgYnV0dG9uIGFkZGVkIHRvIHRoZSB0b29sYmFyIChsYXR0ZXIgZm9yCglXSU5aSVAzMi5FWEUpCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCB0aGUgbWluaW11bSBkcm9wcGVkIGhlaWdodCB0byB0aGUgY29tYm8gbGlzdCBoZWlnaHQgaWYgYW55IGluCglDQkRyb3BEb3duLgoKCSogZmlsZXMvZG9zX2ZzLmM6IERhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJSWYgd2hpdGVzcGFjZSBvciBkb3RzIGFyZSBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIGFueSBjb21wb25lbnQgaW4gYQoJcGF0aCB0aGVuIGl0IHNob3VsZCBiZSBpZ25vcmVkLgoKMjAwMC0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmg6CglNYWtlIHN1cmUgdGhlIGNtZGxpbmUgcGFzc2VkIHRvIENyZWF0ZVByb2Nlc3NBIGlzIHdyaXRlYWJsZSAodGhhbmtzIHRvCglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+KS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW5lZCB1cCBsb2FkaW5nL2luaXQgY29kZSBpbiBPU1MuCglDbGVhbmVkIHVwIGdldERldkNhcHMgaW4gbWlkaSBwYXJ0LgoJSW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHdhdmVJbiByZWNvcmRpbmcgdXNpbmcgYSB0aHJlYWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUEgZmV3IG1pc3NpbmcgY29uc29sZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbmltYXRpb24gbG9hZGluZyBmb3IgUkxFIGVuY29kaW5nLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gcmVtb3ZlZCBoYWNrIHRvIGZpbmQgdGhlIHJpZ2h0IHJlc291cmNlCgktIHVwZGF0ZWQgdG8gdXNlIHRoZSBJQ09NIG1hY3JvcwoJLSBjbGVhbmVkIHVwIHVzZSB0eXBlbGliIGFuZCB0eXBlbGliMiAod2FzIG1peGVkIHVwKQoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZml4ZWQgcmVwb3J0ZWQgYnVncwoJLSBmaXhlZCBkZWZhdWx0IGV4dGVuc2lvbnMKCS0gaW1wbGVtZW50ZWQgImJyb3dzZSB0byBkZXNrdG9wIiBidXR0b24KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgaW5jbHVkZS93aW5iYXNlLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJR2V0Q29tbWFuZExpbmUgc2hvdWxkIHJldHVybiBub24tY29uc3Qgc3RyaW5ncy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglDYWxsUHJvY0V4MzJXIHNob3VsZCBiZSBuYW1lZCBfQ2FsbFByb2NFeDMyVy4KCgkqIGZpbGVzL2NoYW5nZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzb21lIHN0dWZmIHNheWluZyB0aGF0IHRoaXMgaXMgTk9UIHN1cHBvcnRlZC4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQXZvaWQgY2FsbGluZyB0aGUgZXhjZXB0aW9uIGhhbmRsZXIgaW4gc29tZSBjYXNlcy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbWFueSBuZXcgUGF0aCogc3R1YnMKCS0gbWFueSBidWdmaXhlcwoJLSBjbGFzcyBmdW5jdGlvbnMgZXhwYW5kaW5nIGVudmlyb25tZW50cyB2YXJpYWJsZXMgbm93CgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBEaXJlY3RTb3VuZCBIQUwgaW4gd2lubW0ncyB3aW5lb3NzIChPcGVuIFNvdW5kIFN5c3RlbSkKCWRyaXZlciwgYW5kIHdpbm1tJ3MgaW50ZXJmYWNlIGZvciBEaXJlY3RTb3VuZCB0byBhY2Nlc3MgaXQuIEl0CglyZXF1aXJlcyB0aGUgYWJpbGl0eSB0byBtbWFwIC9kZXYvZHNwLCB0byB0cmlnZ2VyIHBsYXliYWNrLCBhbmQKCXNhbXBsZS1hY2N1cmF0ZSBwb3NpdGlvbiByZWFkb3V0cy4gKElmIHRoZSBzb3VuZGNhcmQncyBkZXZpY2UgZHJpdmVyCglkb2VzIG5vdCByZXBvcnQgdGhlc2UgY2FwYWJpbGl0aWVzLCB3aW5lb3NzIHdpbGwgcmVwb3J0IHRoZSBIQUwgYXMKCXVuYXZhaWxhYmxlIGFuZCBmb3JjZSBEaXJlY3RTb3VuZCB0byB1c2UgaXRzIEhFTCBpbnN0ZWFkLikKCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIERpcmVjdFNvdW5kIEhBTCBtb2RlIGZvciBETUEgcHJpbWFyeSBidWZmZXJzLCB3aXRoIGEKCTEwbXMgbGF0ZW5jeSAobm90IG5vdGljZWFibGUpLCBhbmQgYWJvdXQgMzAwbXMgb2YgcHJlYnVmZmVyaW5nLiBGaXhlZAoJYSBmZXcgYnVncy4gQWRkZWQgYSBXaW5lLW9ubHkgV0lOTU0gZmxhZyBmb3Igd2F2ZU91dE9wZW4gZm9yCglEaXJlY3RTb3VuZCB0byB1c2UgKHNvIGRyaXZlcnMgbGlrZSB3aW5lb3NzIGhhdmUgc29tZSB3YXkgb2Yga25vd2luZwoJd2hhdCB0byBwcmVwYXJlIGl0c2VsZiBmb3IpLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQvc3R1YmJlZCBJY29uU2l6ZSgpIGFuZCBDb250cm9sUGFuZWxJbmZvKCkgbmVlZGVkIGZvciBXaW4KCTIuMCBjb250cm9sLmV4ZSBhbmQgcGFpbnQuZXhlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgSURJX1dJTkxPR08uCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURvbid0IGJsb2NrIGVuZGxlc3NseSBhZnRlciBsYXN0IGRlYnVnZ2VkIHByb2Nlc3MgaGFzIGV4aXRlZC4KCgkqIG1lbW9yeS9zdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAoYmFjaykgY29ycmVjdCBiZWhhdmlvciBmb3IgTlVMTCBwdHJzIGluIENoYXJUb09lbSBmdW5jcy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIE9PTSBjb25kaXRpb25zIGluIEdsb2JhbEFsbG9jLgoKCSogZGxscy9udGRsbC9taXNjLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIG1pc3NpbmcgI2luY2x1ZGUgPG1hdGguaD4uCgoJKiBpbmNsdWRlL3dpbnJlc3JjLmg6IFJlbW92ZWQgTUlNRSBnYXJiYWdlLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIHhsaWIgZGRzdXJmYWNlcyB3aXRoIGNvcnJlY3QgcmVmZXJlbmNlIGNvdW50cy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9iaWRpMTYuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvYmlkaTE2LmMsIG1pc2MvbmV0d29yay5jOgoJU3BsaXQgYmlkaTE2LmMgYW5kIG5ldHdvcmsuYyBvdXQgb2YgbWlzYy8gaW50byB0aGVpciByZXNwZWN0aXZlIGRsbHMuCgoyMDAwLTA2LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCB0b29scy93aW5lYnVpbGQvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluOgoJU3BsaXQgdGhlIGJ1aWxkIHByb2dyYW0gaW4gc2V2ZXJhbCBmaWxlcy4KCVJlbmFtZWQgaXQgJ3dpbmVidWlsZCcgdG8gYXZvaWQgcG9zc2libGUgY29uZmxpY3RzLgoJQ2xlYW5lZCB1cCBjb21tYW5kLWxpbmUgcGFyc2luZy4KCU1ha2UgaXQgdW5kZXJzdGFuZCAtZlBJQyBpbnN0ZWFkIG9mIC1waWMuCglNZXJnZWQgY2FsbDE2LnMgYW5kIGNhbGwzMi5zIGdlbmVyYXRlZCBmaWxlcy4KCgkqIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwvc3lzdGVtLnNwZWMsIGRsbHMvc291bmQvc291bmQuc3BlYywgZGxscy91c2VyL3VzZXIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgbW9yZSBvcmRpbmFscyB0byBLRVJORUwsIEdESSwgVVNFUiBhbmQgc3lzdGVtIGRyaXZlcnMKCShXaW5kb3dzIDEuMSwgMi4wKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglfY29tbW9uX2RlcHRoX3RvX3BpeGVsZm9ybWF0KCkgcmV0dXJucyAtMSBhbmQgbm90IHplcm8sIGlmIGEgbW9kZSBpcwoJc3VwcG9ydGVkLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUF2b2lkIGdyYXR1aXRvdXNseSBjaGFuZ2luZyB0aGUgWk9SREVSLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBjb3JyZWN0IGJwcCBmb3IgdGhlIFggc2lkZSBvZiB0aGUgc3VyZmFjZSBYSW1hZ2VzLgoJQ2xlYW5lZCB1cCBYbGliX1N1cmZhY2VfUmVsZWFzZSBzbyBpdCBpcyBhIGJpdCBtb3JlIHJlYWRhYmxlLgoJdXNlIFZpcnR1YWxBbGxvYyBmb3IgY29udmVyc2lvbi1wcm9ncmFtc2lkZSBidWZmZXIgdG8gc2ltcGxpZnkKCWhhbmRsaW5nLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUdsb2JhbEZyZWUxNiByZXR1cm5zIE5VTEwgb24gc3VjY2VzcywgYnV0IERlc3Ryb3lBY2NlbGVyYXRvclRhYmxlCglzaG91bGQgcmV0dXJuIFRSVUUgb24gc3VjY2Vzcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEdW1wIEZvdXJDQyBjb3JyZWN0bHksIHByaW50IGNvbnZlcnNpb24gbWVzc2FnZXMsIGFkZCByZWZlcmVuY2UgdG8KCWRkcmF3IGluIEREU3VyZmFjZTo6R2V0RERJbnRlcmZhY2UuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXN0cmljdCBuVGltZW91dCB0byAwLTMyNzY3LCBzaW5jZSBpdCBpcyBhIDE2Yml0IHZhbHVlIGluIFguCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgU0lHRlBFIG11c3QgYWx3YXlzIGNsZWFyIHRoZSBGUFUgaW50ZXJydXB0CglzdGF0dXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBpbmNsdWRlL2NydGRsbC5oLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCU1vdmVkIHNoYXJlZCBjcnRkbGwvbnRkbGwgZnVuY3Rpb25zIGludG8gbnRkbGwuCglNYWRlIGNydGRsbCBhIHNlcGFyYXRlIGRsbC4KCgkqIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIG1pc2MvbHN0ci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQ2xlYW5lZCB1cCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlY2xpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb3BlbmdsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzLgoJLSBNaW5vciBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGluY2x1ZGUvZHNkcml2ZXIuaCwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZXN0cnVjdHVyZSBEaXJlY3RTb3VuZC4gUmVtb3ZlIGRzb3VuZCB0aHJlYWQsIHVzZSBNTSB0aW1lcnMKCWluc3RlYWQuIEltcGxlbWVudGVkIHRoZSBEaXJlY3RTb3VuZCBIRUwsIHdpdGggdGhlIGFiaWxpdHkgdG8KCXByZWJ1ZmZlciAzMDBtcyBvZiBzb3VuZCwgd2hpbGUgbWFpbnRhaW5pbmcgcGxheSBsYXRlbmN5IG9mIDQwbXMsIGFuZAoJdGhlIGV4YWN0IHBsYXlwb3NpdGlvbiAoU3RhcmNyYWZ0IGNpbmVtYXRpY3MgYXJlIGxpcC1zeW5jaGVkKS4gIFNvbWUKCWluaXRpYWwgSEFMIHN1cHBvcnQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVwbGFjZWQgdGhlIEJVSUxUSU4zMl9kbG9wZW4oKSBFUlIoKSBieSBhIFdBUk4oKS4KCgkqIGluY2x1ZGUvd2lucmVzcmMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBpbmNsdWRlL3dpbnJlc3JjLmggZm9yIHBvcnRpbmcgd2l0aCB3aW5lbGliLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1lcmdlZCBEZXZpY2VDYXBhYmlsaXRpZXMgYW5kIERldmljZUNhcGFiaWxpdGllc0EuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvdmZ3Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1lcmdlZCBNQ0lXbmRDcmVhdGUgYW5kIE1DSVduZENyZWF0ZUEuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNMU0lERnJvbVN0cmluZyBhcHBhcmVudGx5IGFsc28gYWNjZXB0cyBQcm9nSURzIGFzIGFuIGlucHV0IHN0cmluZy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIFNDX0lDT04vU0NfWk9PTSAob2Jzb2xldGUgbWFjcm9zKS4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIGZvciBuZXcgSW50ZXJuZXRDaGVja0Nvbm5lY3Rpb24qLgoKMjAwMC0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCUNsZWFuZWQgdXAgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglGaXhlZCBwcm9ibGVtcyB3aXRoIGNvbXBpbGF0aW9uL2luc3RhbGwgb3V0IG9mIHNvdXJjZSB0cmVlLgoKCSogaW5jbHVkZS93aW5lcnJvci5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJT2xlQ29udmVydE9MRVNUUkVBTVRvSVN0b3JhZ2UgZmFpbHMgKHJldHVybnMgUkVHREJfRV9DTEFTU05PVFJFRykgd2hlbgoJdGhlIENMU0lEIG9mIHRoZSBPTEUgb2JqZWN0IGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuIEZpeGVkLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvbkEgY2FyZSBmb3IgIiIgYW5kIE5VTEwgYXMgdGhlCglzdHJpbmcgYXJndW1lbnQuIE5ldyBmdW5jdGlvbiBQUk9GSUxFX0RlbGV0ZUFsbEtleXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBmb3JtYXQgc3RyaW5ncy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBhIGNyYXNoIGluIHdpbmhlbHAgY2F1c2VkIGJ5IGhtZW1jcHkxNiB3aXRob3V0IHByb3RvdHlwZS4KCUZpeCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy8qL01ha2VmaWxlLmluOgoJRm9yIGRsbHMsIGRlcml2ZSBTUEVDX1NSQ1MgZnJvbSBNT0RVTEUgYW5kIEFMVE5BTUVTLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIFdIRFJfRE9ORSByYWNlIGNvbmRpdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgU3RyQ2F0QnVmZi4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgdHlwZWRlZiBvZiBEUk9QRklMRVMuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgUmVzdWx0RnJvbVNjb2RlL0dldFNjb2RlIChvYnNvbGV0ZSBtYWNyb3MpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJTW92ZVRvRXg6IHJldHVybiBUUlVFIGV2ZW4gaWYgdGhlcmUgaXMgbm8gZHJpdmVyIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUHJvdGVjdCBhZ2FpbnN0IHByb2dyYW1zIGNyZWF0aW5nIHBhcnRzIHdpdGggbmVnYXRpdmUgd2lkdGguCgoyMDAwLTA2LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3Jlc291cmNlLmMsIG1zZG9zL2ludDIxLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVVzZSBHZXRTeXN0ZW1EZWZhdWx0TGFuZ0lEKCkgaW5zdGVhZCBvZiBXSU5FX0xhbmd1YWdlSWQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkYmcsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIGNsZWFuZWQtdXAgYnJlYWsgaGFuZGxpbmcKCS0gYmV0dGVyIGludGVncmF0aW9uIG9mIGRlYnVnZ2VyIGlubmVyIGxvb3BzIChwYXJzZXIgJiBldmVudHMpCgktIGFkZGVkIGF0dGFjaCBjb21tYW5kCgktIGltcHJvdmVkIHBhcnNlciBzbyB0aGF0IGl0IGNhbiBiZSBlbnRlcmVkIHdpdGhvdXQgYW55IHByb2Nlc3MgbG9hZGVkCgktIGFkZGVkIEJyZWFrT25GaXJzdENoYW5jZSBpbnRlcm5hbCB2YXJpYWJsZQoJLSBkaXNhYmxlZCBORSBtb2R1bGUgc3ltYm9sIG1vZHVsZSAod2hpY2ggaXMgYnJva2VuIHdpdGggQVNTKQoJLSBtaXNjIHBvcnRhYmlsaXR5IGNsZWFudXBzCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIEZpeGVkIGEgbWVtb3J5IGNvcnJ1cHRpb24gaW4gc2FmZSBhcnJheXMgd2hlbiB1c2luZyBTYWZlQXJyYXlDb3B5KCkKCSAgZnVuY3Rpb24gd2l0aCBhIFNhZmVBcnJheSBjcmVhdGVkIHdpdGggRkFERl9GSVhFRFNJWkUuCgktIEFkZGVkIG1vcmUgRkFERiBmbGFncyBpbiB0aGUgLmggZmlsZS4KCS0gRkFERiBmbGFncyB3ZXJlIGRlZmluZWQgdHdpY2UsIGNvcnJlY3RlZCB0aGUgc2l0dWF0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGFzc3VtZSB0aGF0IGRvdWJsZSBieXRlIGZvbnQgPT0gdW5pY29kZSBmb250LgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgd2luZG93cy91c2VyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLgoJRGVmaW5lIHRoZSBIRFJBV0RJQiBoYW5kbGUgdHlwZS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglobWVtY3B5MTYgaXMgYSBXaW4xNiBBUEksIHRoZSBtYWNybyBpcyBobWVtY3B5LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlZCBhbiBpbml0aWFsIFdpbnNvY2sgMiAod3MyXzMyKSBETEwuIE1ha2VzIHVzZSBvZiB0aGUgV2luc29jayAxCglmdW5jdGlvbnMgYWxyZWFkeSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcG9ydCBzdGF0dXMgcXVlcnkuCgoJKiBpbmNsdWRlL2RzZHJpdmVyLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgRGlyZWN0U291bmQgZGV2aWNlIGRyaXZlciBoZWFkZXIgZmlsZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgdGhlIGJhc2UgcmVsb2NhdGlvbiBtZXNzYWdlIGEgV0FSTiwgbm90IGEgRklYTUUuCgoJKiB0b29scy9NYWtlZmlsZS5pbjoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRGlzdGluZ3Vpc2ggYmV0d2VlbiBTVUJESVJTIGFuZCBJTlNUQUxMU1VCRElSUy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ0JfU0VUQ1VSU0VMIHNob3VsZCBub3QgZ2VuZXJhdGUgYW5vdGhlciBsaXN0Ym94IGV2ZW50IGFmdGVyIHVwZGF0aW5nCgl0aGUgZWRpdCBib3guCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVdNX1BBSU5UIHNob3VsZCBiZSBwcm9jZXNzZWQgb25seSBieSB0aGUgVFJFRVZJRVdfUGFpbnQgZnVuY3Rpb24sIHNvCgl3ZSBkb24ndCBuZWVkIHRvIGNhbGwgRGVmV2luZG93UHJvY0EgZnVuY3Rpb24gd2l0aGluIFRSRUVWSUVXX1BhaW50LgoKCSogd2luZG93cy9jbGFzcy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJV2UgbXVzdCByZXR1cm4gdGhlIGF0b20gb2YgdGhlIGNsYXNzIGluIEdldENsYXNzSW5mb0V4IGluc3RlYWQgb2YganVzdAoJVFJVRS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIHN0dWIgZm9yIENvQ3JlYXRlRnJlZVRocmVhZGVkTWFyc2hhbGVyKCkuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVpbXBsZW1lbnQgQ2hhclRvT2VtQS9XLCBDaGFyVG9PZW1CdWZmQS9XLCBPZW1Ub0NoYXJBL1csCglPZW1Ub0NoYXJCdWZmQS9XIHVzaW5nIE11bHRpQnl0ZVRvV2lkZUNoYXIvV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUdldFN5c3RlbU1lbnUgY2FsbGVkIHdpdGggYlJldmVydCBhcmd1bWVudCBzZXQgdG8gVFJVRSBub3cgcmV0dXJucwoJTlVMTCBhcyBzcGVjaWZpZWQgaW4gUGxhdGZvcm0gU0RLLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBtZW1vcnkgYWNjZXNzIG91dHNpZGUgb2YgdGhlIHJhbmdlIGZvciBzb3VyY2UgYml0cyBpbiAyNC1iaXQgYml0bWFwcy4KCjIwMDAtMDYtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglNYWtlIElJREZyb21TdHJpbmcgcG9pbnQgdG8gQ0xTSURGcm9tU3RyaW5nLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGJldHRlciBlcnJvciBjaGVjayB3aGVuIGltcG9ydGluZyBmdW5jdGlvbnMgdmlhIEdldFByb2NBZHJlc3MKCS0gcmVwbGFjZWQgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aCAobm90IGF2aWFibGUgaW4gYWxsIHNoZWxsMzIgdmVyc2lvbnMpCgktIGNoYW5nZWQgY2FsbCBvcmRlciB3aGVuIGJyb3dzaW5nIHRvIGRpZmZlcmVudCBmb2xkZXIgKGNyYXNoIHdpdGggbmF0aXZlIHNoZWxsKQoJLSByZW1vdmVkIE1vdmUgY2FsbCBzaW5jZSBJU2hlbGx2aWV3X0NyZWF0ZVZpZXdXaW5kb3cgY3JlYXRlcyBpdCBhbHJlYWR5IGluCgkgIHRoZSByaWdodCByZWN0CgoJKiBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZml4ZWQgbnVsbC1waWRsIGZyb20gX0lMQ3JlYXRlQ29udHJvbAoJLSBzb21lIG1vcmUgbm8tbmFtZSBmdW5jdGlvbnMgaW4gc2hsd2FwaQoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUtlZXAgYW4gaW50ZXJuYWwgY29weSBvZiB0aGUgaWNvbi4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlb3JkZXIgdGhlIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlIGluIHRoZSBsZWdhY3kgbWFjcm9zIGZvcgoJY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBnKysgY29tcGlsZXJzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJS2VuIENvbGVtYW4gPGtlbl9jb2xlbWFuQGluYW1lLmNvbT4KCUZpeGVzIHRvIENyZWF0ZURJQlNlY3Rpb24gYW5kIG90aGVyIGFyZWFzIHdoZXJlIGJpU2l6ZUltYWdlIGlzCglpbmNvcnJlY3RseSBhc3N1bWVkIHRvIGJlIGNvcnJlY3QgaWYgaXQgbm9uLXplcm8uICBUaGlzIGZpeGVzIGEKCWNyYXNoaW5nIHByb2JsZW0gaW4gU2lkIE1laWVyJ3MgQWxwaGEgQ2VudGF1cmkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDYtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21kaS5jLCBpbmNsdWRlL21kaS5oLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjLCByZXNvdXJjZXMvdXNlcjMyLnJjOgoJRGF2aWQgTGFzc29uZGUgPGRhdmlkbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBNb3JlIFdpbmRvd3MuLi4gbWVudSBpdGVtIGZvciBNREkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglDaGVjayBhZ2FpbiBmb3IgR2V0TmV4dERsZ1RhYkl0ZW0gYWZ0ZXIgcmV0dXJuIGZyb20gV01fSU5JVERJQUxPRwoJbWVzc2FnZSBpbiBkaWFsb2cgY3JlYXRpb24uCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IGNsaXBwaW5nIHJlZ2lvbiB0byBjbGllbnQgd2luZG93IGluIExJU1RCT1hfUGFpbnQuCgoJKiBzZXJ2ZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNb3JlIHZlcmJvc2UgZXJyb3IgbWVzc2FnZS4KCgkqIHVuaWNvZGUvbWJ0b3djLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgljcF9tYnN0b3djczogY2hlY2sgZnVuY3Rpb25zIHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldEZ1bGxQYXRoTmFtZTogZ2V0ICJkcml2ZSIgdmFsdWUgdG9vIGZvciBhYnNvbHV0ZSBwYXRocy4KCgkqIG1pc2MvcHJpbnRkcnYuYzoKCUZyZWRlcmljIEJvdWxhbmdlciA8ZnJlZGVyaWNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVTcG9vbEZpbGUgaXMgY2FsbGVkIHdpdGggYSBkb3MgbmFtZSwgd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdAoJd2hlbiB3ZSBjcmVhdGUgdGhlIHNwb29sZmlsZSB3ZSB1c2UgdGhlIHVuaXggbmFtZSBhc3NvY2lhdGVkIHRvIHRoZQoJZG9zIGZpbGUgbmFtZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJLSBhZGQgcHJvdG90eXBlcyBmb3Igc2VyaWFsIEFQSSBmdW5jdGlvbnMKCS0gY29ycmVjdCBleGlzdGluZyBzZXJpYWwgQVBJIHByb3RvdHlwZXMgaW5jb3JyZWN0bHkgdXNpbmcgRFdPUkQKCSAgaW5zdGVhZCBvZiBIQU5ETEUKCS0gZGVmaW5lIG1vcmUgc3RydWN0dXJlcyBhbmQgdmFsdWVzIGluIHNlcmlhbCBBUEkKCgkqIHdpbmRvd3MvZGNlLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBOVUxMIHBvaW50ZXIgY2hlY2sgd2l0aGluIERDRV9BZGRDbGlwUmVjdHMgZnVuY3Rpb24uCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJT3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIExvYWRTdHJpbmdBLgoKCSogZG9jdW1lbnRhdGlvbi94MTFkcnY6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGV4dCBvZiBXV04gYXJ0aWNsZSAiVGhlIFgxMSBkcml2ZXIiLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJV2luZUxpYiBkb2VzIG5vdCBzdXBwb3J0IFdpbjE2LiBSZW1vdmVkIHJlZmVyZW5jZXMgdG8gV2luMTYgYW5kIFdpbgoJMy54IGluIHRoZSBpbnRyb2R1Y3Rpb24uIFN0YW5kYXJkaXplZCBjYXBpdGFsaXphdGlvbiBvZiBXaW5lIGFuZAoJV2luZUxpYi4gQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgY29tcGlsaW5nIGEgc2ltcGxlICJIZWxsbyBXb3JsZCIKCVdpbmVMaWIgcHJvZ3JhbS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzZXR0aW5nIG9mIGN1cnNvciBwb3N0aXRpb24gdG8gTVNHX1Bvc3RUb1F1ZXVlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVdNX1NFVFJFRFJBVyBzaG91bGQgcmVwYWludCB0aGUgbGlzdGJveCB3aGVuIHNldCB0byBvbiBpZiBzb21ldGhpbmcKCWhhcyBiZWVuIGNoYW5nZWQuCgoyMDAwLTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvY3ZkdW1wL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCVJlbW92ZWQgQFBST0dFWFRAIChpdCB3YXMgYnJva2VuIGFueXdheSkuCglJbXByb3ZlZCAnbWFrZSBpbnN0YWxsJy4KCUNsZWFuZWQgdXAgdGhlIG1haW4gTWFrZWZpbGUuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNvbnZlcnRUb0dsb2JhbEhhbmRsZTogZml4ZWQgaGFuZGxlIGxlYWsuCgoJKiBpbmNsdWRlL29wdGlvbnMuaDoKCUZpeGVkIG9wdGlvbnMgc3RydWN0dXJlIGRlZmluaXRpb24uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglNYWRlIFNldFdpbmRvd1BvcyBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBpbnNlcnRpbmcgYSB3aW5kb3cgYWZ0ZXIgaXRzZWxmCgkoZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIFpvcmRlcikuCgoJKiBkb2N1bWVudGF0aW9uL29wZW5nbDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGRhdGVkIE9wZW5HTCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgdGhlIGJhc2UgZm9yIHRoZSBvcmRpbmFscyBvZiBvbGVwcm8zMiB0byAyNDguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglNYXR0aGV3IEouIEZyYW5jaXMgPG1mcmFuY2lzQHBsdXMubmV0LnVrPgoJQWxpYXMgTk1VUERPV04gdG8gYmUgTk1fVVBET1dOLCByYXRoZXIgdGhhbiBvdmVyd3JpdGUgTk1fVVBET1dOIHdpdGgKCU5NVVBET1dOLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglqaW1yZWdhbkBsaXRzdS5pZQoJQWRkZWQgZGlmZnRpbWUgZnVuY3Rpb24uCgoyMDAwLTA2LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy8uY3ZzaWdub3JlLCB0b29scy93bWMvQ0hBTkdFUywgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93bWMvbGFuZy5jLCB0b29scy93bWMvbGFuZy5oLCB0b29scy93bWMvbGFuZ3VhZ2UuYywgdG9vbHMvd21jL21jbC5jLCB0b29scy93bWMvbWN5LnksIHRvb2xzL3dtYy91dGlscy5jLCB0b29scy93bWMvdXRpbHMuaCwgdG9vbHMvd21jL3dtYy5jLCB0b29scy93bWMvd21jLmgsIHRvb2xzL3dtYy93bWMubWFuLCB0b29scy93bWMvd21jdHlwZXMuaCwgdG9vbHMvd21jL3dyaXRlLmMsIHRvb2xzL3dtYy93cml0ZS5oLCB1bmljb2RlL3djdG9tYi5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglJbml0aWFsIHJlbGVhc2Ugb2YgdGhlIG1lc3NhZ2UgY29tcGlsZXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGZvbGRlci5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBkbGwgc2hmb2xkZXIuZGxsCgktIHNtYWxsIGZpeGVzCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3BweS55LCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBCdWdmaXg6IENvcnJlY3RlZCAib2ZmIGJ5IG9uZSIgZXJyb3IgaW4gdGhlIGxpbmVudW1iZXIgd2hpbGUgcGFyc2luZwoJICByZXNvdXJjZS4KCS0gQnVnZml4OiBBIHNlZ2ZhdWx0IHdvdWxkIG9jY3VyIGlmIG1lc3NhZ2V0YWJsZXMgd2VyZSBwYXJzZWQgd2l0aG91dAoJICBtZW1vcnkgb3B0aW9ucyBhdHRhY2hlZC4gQWxzbyBhZGRlZCBidWZmZXItb3ZlcmZsb3cgc2FmZWd1YXJkIHdoaWxlCgkgIGNvbnZlcnRpbmcgYmV0d2VlbiBieXRlb3JkZXJzLgoJLSBGaW5pc2hlZCByZW1hcHBpbmcgdXNlcnR5cGUgcmVzb3VyY2VzIG9udG8gc3RhbmRhcnMgdHlwZXMgYnkgdHJpY2tpbmcKCSAgdGhlIHBhcnNlciBpbnRvIGFjY2VwdGluZyBhIGRpZmZlcmVudCB0b2tlbi4gVGhlIHJlbWFwcGluZyBjYW4gYmUKCSAgZGlzYWJsZWQgd2l0aCBhIG5ldyBjb21tYW5kbGluZSBvcHRpb24gJy1tJy4KCS0gUmVzb2x2ZWQgc29tZSB3YXJuaW5nIGFib3V0IGNoYXJzIHVzZWQgYXMgaW5kZXggb24gU0dJIE8yIG1hY2hpbmUKCSAgKHRoZSBjdHlwZSBpc1hYWCgpIHJvdXRpbmVzIGFyZSBtYWNyb3MgdGhlcmUpLgoKCSogb2xlL29sZTJubHMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDb21tZW50ZWQgb3V0IElzQmFkV3JpdGVQdHIgY2hlY2suIE1ha2VzIHdpbmhscDMyLmV4ZSBoYXBweSBpbgoJZXh0ZW5kZWQgc2VhcmNoLgoKCSogZG9jdW1lbnRhdGlvbi9vcGVuZ2w6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJT3BlbkdMIGRvY3VtZW50YXRpb24uCgoJKiBmaWxlcy9kcml2ZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEUklWRV9HZXRGcmVlU3BhY2UoKSBpcyBzdXBwb3NlZCB0byAqYWx3YXlzKiByZXR1cm4gMCBmb3IgImF2YWlsIgoJb24gQ0QtUk9NcywgZXZlbiBpZiBDRC1ST00gaXMgKm5vdCogbW91bnRlZCBhbmQgdGh1cyB0aGUgbW91bnQgcG9pbnQKCW5vcm1hbGx5IHJldHVybnMgdGhlICJhdmFpbCIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGFydGl0aW9uLgoJQ2xlYW5lZCB1cCBHZXREaXNrRnJlZVNwYWNlQS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEbyBub3QgY2hhbmdlIHRoZSBXU19DSElMRCBzdHlsZSBpbiBTZXRQYXJlbnQuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYywgb2xlL29sZTJubHMuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVc2UgdGhlIFVuaWNvZGUgc3RyaW5nIGZ1bmN0aW9ucyBmcm9tIHdpbmUvdW5pY29kZS5oIGluc3RlYWQgb2YgdGhlCgljcnRkbGwgb25lcy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvc3RyaW5nLmM6CglBZGRlZCBhIGNvdXBsZSBvZiBVbmljb2RlIHN0cmluZyByb3V0aW5lcy4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgMjQtPjMyIHBhY2tlZCBwaXhlbCBtYXBwaW5nIHN1cHBvcnQgdG8gY29udmVydC4KCVNsaWdodGx5IHJld3JvdGUgdGhlIGNvbnZlcnNpb24gaW5pdGlhbGlzYXRpb24uCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0cmlwIHdoaXRlc3BhY2UgZnJvbSBmcm9udCBvZiBwcm9maWxlIHZhbHVlcy4KCjIwMDAtMDYtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9leHRpY29uLmMsIHdpbjMyL29yZGluYWxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGF0aW9uIGZvciBQcml2YXRlRXh0cmFjdEljb25zLCBQcml2YXRlRXh0cmFjdEljb25FeC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbXBsZW1lbnRlZCBHZXQvU2V0VGhyZWFkTG9jYWxlCgktIGFkZGVkIGNvbW1lbnQgYWJvdXQgT2xlRXJyb3JJbmZvIGZpZWxkIGluIFRFQgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHJ1Y3Qgb2Zmc2V0cyBzbyB1bmRlcnN0YW5kaW5nIGdhbWUgZGlzYXNzZW1ibHkgaXMgZWFzaWVyLgoKCSogZGxscy93aW5lcHMvYnJ1c2guYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUlmIHByaW50ZXIgb25seSBzdXBwb3J0cyBsZXZlbCAxIFBvc3RTY3JpcHQgdGhlbiBjb21wbGFpbiByYXRoZXIgdGhhbgoJdHJ5aW5nIHRvIHVzZSBhIHBhdHRlcm4gY29sb3Igc3BhY2UuICBUaGFua3MgdG8gRGF2aWQgR29vZGVub3VnaC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgSXNFcXVhbEdVSUQgcHJvdG90eXBlLgoKCSogZGxscy9kZHJhdy9kZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJcmVwbGFjZWQgYSBEUFJJTlRGIGJ5IGEgVFJBQ0UKCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG1vdmVkIHRoZSAnY29uc3RydWN0b3InIGludG8gYSByZWFsIERMTCBpbml0IGZ1bmN0aW9uCgktIG1ha2UgT3BlbkdMMzIgZGVwZW5kYW50IG9uIHRoZSBYMTEgZHJpdmVyCgoJKiBvYmplY3RzL2RjLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJaG9va1RodW5rIHdhcyBub3QgaW5pdGlhbGl6ZWQgaW4gR2V0RGNTdGF0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglVc2UgdGhlIGZvbnQgZGVmYXVsdCBjaGFyIGZvciB1bmRlZmluZWQgY2hhcmFjdGVycyB3aGVuIG1hcHBpbmcgZnJvbQoJVW5pY29kZS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfZXh0LCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX25vcm0sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU5ldyBPcGVuR0wgdGh1bmsgZ2VuZXJhdGlvbiBzY3JpcHQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZWQgdGhlIFJlbGVhc2UgaW4gY2FzZSBvZiBlcnJvciBhcyB3ZSBkbyBub3QgQWRkUmVmIGFueW1vcmUuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTWFkZSB0aGUgRExMIHZlcnNpb24gY2xhc2ggZXJyb3IgbWVzc2FnZSBtb3JlIHZlcmJvc2UuCgoJKiB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY2FzZW1hcC5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jLCB1bmljb2RlL2NfMDQyLmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jLCB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL2Nhc2VtYXAuaCwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbWVtb3J5L3N0cmluZy5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDM3LmM6CglSZWltcGxlbWVudGVkIFVuaWNvZGUgY2FzZSBtYXBwaW5nIGluIGEgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgd2F5LgoJTW92ZWQgY2FzZSBtYXBwaW5nIHN1cHBvcnQgdG8gdGhlIHVuaWNvZGUgZGlyZWN0b3J5LgoJU29tZSBjbGVhbnVwcyBpbiBjcG1hcC5wbCwgdXNlIFdDSEFSIGluc3RlYWQgb2YgdW5zaWduZWQgc2hvcnQuCgoyMDAwLTA2LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSB3ZXJlIG5vdCBwcm9wZXJseSBtYXNraW5nIHRoZSBpdGVtIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQoJYW5kIGFsc28gd2Ugd2hlcmUgbm90IHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiBhdCB0aGUgcHJvcGVyIHRpbWVzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJSmFzb24gTWF3ZHNsZXkgPGphc29uQG1hY2FkYW1pYW4uY29tPgoJVGFrZSBmb2N1cyBiZWZvcmUgc2V0dGluZyB0aGUgY2FyZXQgcG9zaXRpb24gYW5kIHNlbGVjdGlvbnMuCgoJKiByZWxheTMyL3Nub29wLmM6IEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4IGZvciBjb21waWxlciB3YXJuaW5nIChkdWUgdG8gc2V0am1wL2xvbmdqbXAgYmVpbmcgdXNlZCBmb3IKCWV4Y2VwdGlvbiBoYW5kbGluZykuCgoJKiBjb250cm9scy9idXR0b24uYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2F2ZSBhbmQgcmVzZXQgb2YgU2V0QktNb2RlIHZhbHVlcyBpbiBXTV9QQUlOVC4KCUFkZGVkIGhhbmRsaW5nIG9mIGxQYXJhbSB2YWx1ZSBpbiBCTV9TRVRTVFlMRS4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL25ldHNwaS5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3JpY2hlZGl0LmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvdGFwaS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbmluZXQuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL2FuaW1hdGUuaCwgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2NydGRsbC5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZGNhcHMuaCwgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2RkZW1sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlb3JkZXJlZCB0aGUgQ0FMTEJBQ0sgYW5kIFdJTkFQSSBkaXJlY3RpdmVzIHNvIHRoYXQgaXQgY29tcGlsZXMgd2l0aAoJb2xkIGcrKyB2ZXJzaW9ucy4KCgkqIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gRGVmaW5lIEhJQyBpbiB0aGlzIGhlYWRlciByYXRoZXIgdGhhbiBpbiB3aW5kZWYuaCAodGhpcyBpcyB0aGUKCSAgY29ycmVjdCB0aGluZyB0byBkbyBhbHRob3VnaCBpdCBpcyB1bnJlbGF0ZWQgdG8gdGhlIEMrKyBpc3N1ZXMpLgoJLSBXSU5FX0hJQyBpcyBhbiBpbnRlcm5hbCBzdHJ1Y3R1cmUgYW5kIGl0IHdvbid0IGNvbXBpbGUgaW4gQysrIGJlY2F1c2UKCSAgaXQgY29udGFpbnMgYSBmaWVsZCBjYWxsZWQgJ3ByaXZhdGUnLiBFbmNsb3NlZCBpbiBhIF9fV0lORV9fIGlmZGVmLgoJLSBSZW9yZGVyZWQgdGhlIENBTExCQUNLIGFuZCBXSU5BUEkgZGlyZWN0aXZlcyBzbyB0aGF0IGl0IGNvbXBpbGVzIHdpdGgKCSAgb2xkIGcrKyB2ZXJzaW9ucy4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIHR5cG8gaW4gdGhlIG5hbWUgb2YgRnJlZVByaW50ZXJOb3RpZnlJbmZvLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUhUVFAgcHJvdG9jb2wgbm93IHN1cHBvcnRlZCwgSW50ZXJuZXRDcmFja1VybCBmaXhlZCwgbG90cyBvZiBvdGhlcgoJZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCB0b29scy9idWlsZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzCgktIFVzZSBvdXRwdXQgcHJlZml4IGluc3RlYWQgb2YgaGlnaCBvcmRlciBmdW5jdGlvbnMgdGhhdCwgZm9yIHNvbWUKCSAgcmVhc29uLCBsZWFrcyBtZW1vcnkuIFRoZSBtZW1vcnkgdXNhZ2Ugb2Ygd2luYXBpX2NoZWNrIGlzIG5vdyBncmVhdGx5CgkgIHJlZHVjZWQuIDotKQoJLSBUdXJuZWQgb24gYXJndW1lbnQga2luZCBjaGVja2luZyBvZiBkb3VibGVzIGJ5IGRlZmF1bHQKCgkqIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmVtb3ZlIHNlY29uZCBpbXBvcnQgb2Ygd2luc3Bvb2wuZHJ2LgoKCSogY29udHJvbHMvc3RhdGljLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgc3VwcG9ydCBmb3IgaWNvbnMgc2V0IGJ5IFNUTV9TRVRJTUFHRS4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVGVybWluYXRlIGltYWdlIGRhdGEgd2l0aCBhICc+JyBbVGhlIFBTTFJNIGlzIHJhdGhlciB2YWd1ZSBhYm91dCB0aGlzXS4KCVRoYW5rcyB0byBCZXJuZCBIZXJkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglKb2huIEVsbGlvdCA8amNlQHNlYXNpcC5kZW1vbi5jby51az4KCVNvbWUgZm9udHMgbWF5IGhhdmUgbm8gY2hhcmFjdGVycyBhdCBhbGwgZm9yIHNvbWUgcmVhc29uLCBhdm9pZCBjcmFzaGVzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkIGEgZmV3IG1vcmUgZmxhZ3MgdG8gdGhvc2UgcmVjb2duaXplZCB3aGVuIGRvaW5nIHRyYWNlK2Rzb3VuZC4KCgkqIG9iamVjdHMvdGV4dC5jOiBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURvbid0IHByaW50IHVpTGVuZ3RoRHJhd24gaW4gdGhlIEZJWE1FIGluIERyYXdUZXh0RXhBLiAgSXRzIGFuIG91dHB1dAoJdmFyaWFibGUsIG5vdCBhbiBpbnB1dCB2YXJpYWJsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJVXNlIFhDcmVhdGVJbWFnZS9YR2V0U3ViSW1hZ2UgaW5zdGVhZCBvZiBYR2V0SW1hZ2UgZm9yCglYMTFEUlZfRElCX0dldEltYWdlQml0cy4KCjIwMDAtMDYtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDQyLmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfODU2LmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igc3ltYm9sIGNvZGVwYWdlLgoJSW1wcm92ZWQgaGFuZGxpbmcgb2YgdW5kZWZpbmVkIGNvZGVwYWdlIGNoYXJhY3RlcnMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglNYWtlIHN1cmUgR2V0TW9kdWxlRmlsZU5hbWUxNiBkb2VzIG5vdCByZXR1cm4gZ2FyYmFnZSBldmVuIGlmIHRoZSBwYXRoCglpcyBub3QgdmFsaWQgKHRoYW5rcyB0byBBbmRyZWFzIE1vaHIpLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBc3NpZ24gY29kZXBhZ2UgZm9yIGV2ZXJ5IFgxMSBmb250IHN1ZmZpeCwgYW5kIHVzZSBpdCBmb3IgY29udmVydGluZwoJdGV4dCB0byBkaXNwbGF5LgoKCSogd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2NvZGVfcGFnZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvY29kZXBhZ2UuYywgbWVtb3J5L3N0cmluZy5jOgoJUmV3cm90ZSBjb2RlcGFnZSBzdXBwb3J0IHRvIHVzZSB0aGUgbmV3IGNvZGVwYWdlIHRhYmxlcy4KCgkqIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLCB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIHVuaWNvZGUvY185NTAuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgaW5jbHVkZS93aW5ubHMuaCwgdW5pY29kZS9jXzAzNy5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLCB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLCB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYywgdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFdDX05PX0JFU1RfRklUX0NIQVIgYW5kIGRlZmF1bHQgY2hhciBwYXJhbWV0ZXJzIGluCgljcF93Y3N0b21icy4KCU1pbm9yIGNvc21ldGljIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ2FsbCBUU1hGbHVzaCBhZnRlciBzZXR0aW5nIERHQSBwYWxldHRlLCBzbyBpdCB1cGRhdGVzIGltbWVkaWF0ZWx5LgoKMjAwMC0wNi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLCB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLCB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmMsIHVuaWNvZGUvZGVmYXVsdHMsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgdW5pY29kZS8uY3ZzaWdub3JlLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMDM3LmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jOgoJQWRkZWQgYSBidW5jaCBvZiBjb2RlIHBhZ2UgdGFibGVzIGZvciBtdWx0aWJ5dGU8LT53aWRlIGNoYXIKCWNvbnZlcnNpb25zICh3aXRoIHRoZSBoZWxwIG9mIERtaXRyeSBUaW1vc2hrb3YpLgoKMjAwMC0wNi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2lubmxzLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9sc3RyLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglJbXBsZW1lbnQgTlRETEwudG93dXBwZXIgYW5kIE5URExMLnRvd2xvd2VyIHVzaW5nIGFscmVhZHkgZXhpc3RpbmcKCWNhc2UgY29udmVyc2lvbiB0YWJsZXMuIFJlcGxhY2UgYWxsIGRpcmVjdCBjYWxscyB0byB0b3d1cHBlci90b3dsb3dlcgoJZWl0aGVyIHRvIE5URExMIGZvciBjb3JlIG9yIHRvIENSVERMTCBpZiBsYXR0ZXIgYWxyZWFkeSB1c2VkIGluIHRoZQoJbm9uIGNvcmUgZGxsLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBTaGkgUXVhbiBIZSAob2YgQ29yZWwpCglUaGUgaW1wbGVtZW50YXRpb24gb2YgU3RyZXRjaEJsdCBpbiBXSU5FIGRvZXMgbm90IHVzZSB0aGUgZm9yZWdyb3VuZCBhbmQKCWJhY2tncm91bmQgY29sb3Igd2hlbiBhIGJpdG1hcCBpcyBjb3BpZWQgZnJvbSBtb25vIHRvIG1vbm8uICBUaGlzIGlzCglub3QgdGhlIGNhc2UgaW4gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB1bmRlciBXaW5kb3dzIGJ1dCBNU0ROIGRpZAoJbm90IGRvY3VtZW50IGl0LgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIG11c3QgdXBkYXRlIHRoZSByaWdodCBlZGdlICgtMSkgb2YgdGhlIGxhc3QgcGFuZWwgdXBvbiBkcmF3aW5nCglpbnN0ZWFkIG9mIHJlbHlpbmcgb24gV01fU0laRS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSBoYW5kbGUgSW5zZXJ0SXRlbSB3aXRoIGFuIGludmFsaWQgSFRSRUVJVEVNLiBXaW5kb3dzIGhhbmRsZXMKCXRoZXNlIGxpa2UgYSBUVklfTEFTVC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglUdXJjaGFub3YgU2VyZ2VpIDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4KCURHQSBjb21waWxlIGZpeC4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEFkZGVkIG1pc3NpbmcgZGVwZW5kZW5jeS4KCgkqIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglSZW1vdmVkIHRoZSAueGNubG5rIHNlY3Rpb24gaGFjaywgYW5kIHJlcGxhY2VkIGl0IGJ5IGFub3RoZXIgaGFjayBpbgoJdGhlIGRlYnVnZ2VyIENSRUFURV9QUk9DRVNTIGV2ZW50IGhhbmRsaW5nLgoKCSogZGxscy9NYWtlZmlsZS5pbjogTWVyZ2VkIG1vdXNlIGRsbCBpbnRvIFVTRVIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6IENvbXBpbGUgZml4LgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIva2VybmVsMzIuYzoKCVJlbW92ZWQgYSBmZXcgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci9tb3VzZXJjLnJjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjOgoJTWVyZ2VkIG1vdXNlIGRsbCBpbnRvIFVTRVIuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJU2ltcGxpZmllZCB3cmMgZmxhZ3MgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL3dpbi5jOgoJWWV0IGFub3RoZXIgYXR0ZW1wdCBhdCBmaXhpbmcgQ1dfVVNFREVGQVVMVCBoYW5kbGluZy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVzZSBGSUxFX1NIQVJFX1JFQUQgdG8gb3BlbiB0aGUgZmlsZSBpbiBHZXRCaW5hcnlUeXBlQS4KCgkqIGRlYnVnZ2VyL21vZHVsZS5jOgoJU3RyaXAgcGF0aCBuYW1lIGZyb20gZGxsIHdoZW4gYWRkaW5nIHN5bWJvbHMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVNlbmQgZnVsbCBwYXRoIG5hbWUgYW5kIGRlYnVnIGluZm9ybWF0aW9uIGluIGxvYWRfZGxsIGV2ZW50LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL21vZHVsZS5oOgoJUGFzcyB0aGUgbWFpbiBleGUgbmFtZSBpbiB0aGUgQ1JFQVRFX1BST0NFU1MgZGVidWcgZXZlbnQuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWtlIGEgYmV0dGVyIGd1ZXNzIHRvIGZpbmQgdGhlIHRvcCBvZiB0aGUgaW5pdGlhbCBzdGFjay4KCUZpeGVkIEZyZWVCU0QgY29tcGlsZSBwcm9ibGVtICh0aGFua3MgdG8gR2VyYWxkIFBmZWlmZmVyKS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTG91aXMtUGhpbGlwcGUgR2Fnbm9uIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCVNlYXJjaCBmb3IgYWxyZWFkeSBsb2FkZWQgQ3Vyc29ySWNvbiB3YXMgZG9uZSB3aXRoIHRoZSB3cm9uZyBoYW5kbGUsCglzbyBpdCB3YXMgbGVha2luZyBpY29ucy4gRml4ZWQuCgoJKiB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBNRVNTQUdFVEFCTEUgcmVzb3VyY2UgdHlwZS4KCS0gVXNlcnR5cGUgcmVzb3VyY2VzIHRoYXQgY2F1c2UgYSB0eXBlLWNsYXNoIHdpdGggZGVmaW5lZCByZXNvdXJjZXMKCSAgYXJlIG5vdyBkZXRlY3RlZCBhbmQgYSB3YXJuaW5nIGlzIGdlbmVyYXRlZC4gU29tZSB0eXBlcyBzaG91bGQgYmUKCSAgcmVyb3V0ZWQgdGhyb3VnaCBvdGhlciBjb2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIChyZS0paW50ZXJwcmV0ZWQuCgktIEJ1Z2ZpeDogTGluZS1jb250aW51YXRpb24gaW4gc3RyaW5ncyBpbiByZXNvdXJjZXMgaW5jbHVkZSBhIG5ld2xpbmUuCgkgIFRoaXMgYGZlYXR1cmUnIGdvdCBkZWxldGVkIHdpdGggdGhlIGJ1aWx0aW4gcHJlcHJvY2Vzc29yLCBidXQgaGFzIGJlZW4KCSAgcHV0IGJhY2sgaW50byBwbGFjZSAoc2VlIGxhc3QgY2hhbmdlcyBjb21tZW50IGZyb20gdmVyc2lvbiAxLjEuMCkuCgktIEJ1Z2ZpeDogVGhlIHByZXByb2Nlc3NvciBub3cgY29ycmVjdGx5IHdpbGwgc2VlICJcXFxyXG4iIGFzIGEgbGluZS0KCSAgY29udGludWF0aW9uLgoJLSBCdWdmaXg6IEFzc2VtYmxlcnMgb24gc29tZSBwbGF0Zm9ybXMgZG8gbm90IHVzZSAxNmJpdCBxdWFudGl0aWVzCgkgIGZvciBgLndvcmQnLiBUaGlzIGRpcmVjdGl2ZSBpcyBub3cgY2hhbmdlZCBpbnRvIGAuc2hvcnQnLgoJLSBBbGwgdHlwZXMgdGhhdCBhY2NlcHQgaW5saW5lIGRhdGEgZGVmaW5pdGlvbnMgKGEgbGEgUkNEQVRBKSBub3cKCSAgYWxzbyBhY2NlcHQgYSBmaWxlIHNwZWNpZmljYXRpb24uIFRoaXMgdW5pZmllcyB0aGUgc3RydWN0dXJlIGEgYml0LgoKMjAwMC0wNi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZGxsLW92ZXJyaWRlczoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGV4dCBvZiBXV04gYXJ0aWNsZSAiRExMIG92ZXJyaWRlcyIuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglBZGRlZCB0byBwcm9qZWN0LiBDdXJyZW50bHkgaW5jb21wbGV0ZSBidXQgd2lsbCB1cGRhdGUgd2Vla2x5LgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglTZXR1cCBzaWduYWwgaGFuZGxpbmcgYW5kIGV4Y2VwdGlvbnMgb25seSBhZnRlciBSRVFfSU5JVF9QUk9DRVNTX0RPTkUKCWhhcyBiZWVuIHNlbnQsIHRvIGF2b2lkIGRlYWRsb2NraW5nIHRoZSBkZWJ1Z2dlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGluY2x1ZGUvY29tYm8uaDoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJLSBDb21ib0xCb3ggaXMgYWx3YXlzIGNyZWF0ZWQgYXMgY2hpbGQgb2YgQ29tYm9Cb3guIElmIENvbWJvQm94IGhhcyBzdHlsZQoJICBvdGhlciB0aGFuIENCU19TSU1QTEUsIHBhcmVudCBvZiBsaXN0Ym94IGlzIHNldCB0byBkZXNrdG9wLgoJLSBJbiBDQkRyb3BEb3duLiBDb21ib0JveCB1c2VzIG9ubHkgZmlyc3QgaXRlbSB0byBjYWxjdWxhdGUgaGVpZ2h0IG9mCgkgIGRyb3BwZWQgbGlzdGJveC4gQWxzbyBpZiBsaXN0Ym94IGlzIGVtcHR5IGl0cyBoZWlnaHQgaXMgdW5tb2RpZmllZAoJICAocHJldmlvdXNseSBpdCB3YXMgc2V0IHRvIDApLgoJLSBBZGRlZCBjb3JyZWN0IGhhbmRsaW5nIG9mIFdNX0dFVERMR0NPREUgYW5kIFdNXyhTWVMpS0VZRE9XTiBtZXNzYWdlcy4KCS0gR2VuZXJhbCBjbGVhbi11cC4gTWVzc2FnZSBvcmRlciBpcyBub3cgbW9yZSBwcmVjaXNlIChhdCBsZWFzdAoJICBub3RpZmljYXRpb25zIHRvIGNsaWVudCk7IGxpc3Rib3ggLSBjb21ib2JveCBpbnRlcmFjdGlvbiBoYXMgc2xpZ2h0CgkgIGRpZmZlcmVuY2VzIGNvbXBhcmluZyB0byBXaW5kb3dzLgoKCSogY29udHJvbHMvZWRpdC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCS0gUmVtb3ZlZCBkZXBlbmRlbmN5IG9mIGVkaXQgY29udHJvbCBmcm9tIGNvbWJvYm94IGltcGxlbWVudGF0aW9uLgoJLSBFZGl0IGNvbnRyb2wgdXNlcyB1bmRvY3VtZW50ZWQgd2luZG93IHN0eWxlIDB4MDIwMCB0byBkZXRlY3QgaXMgaXQgYSBwYXJ0CgkgIG9mIGNvbWJvYm94LiBJZiBzbyBpdCBjYWxscyBHZXREbGdJdGVtKGh3bmRDb21ibywgMTAwMCkgdG8gZ2V0IENvbWJvTEJveAoJICB3aW5kb3cgaGFuZGxlIChzZWUgY29tbWVudHMgZm9yIGNvbWJvLmMgYmVsb3cpLgoJLSBFRElUX0NoZWNrQ29tYm8gLSBtb2RpZmllZCBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiBrZXlib2FyZCBtZXNzYWdlcy4KCS0gUHJvY2Vzc2luZyBvZiBXTV9HRVRETEdDT0RFIGFuZCBXTV9DSEFSIGZvciBWS19SRVRVUk4gYW5kIFZLX0VTQ0FQRQoJICBkZXBlbmRzIG9uIHdoZXRoZXIgbGlzdGJveCBpcyBkcm9wcGVkIGRvd24uIFRoaXMgcHJldmVudHMgY2xvc2luZyBvZiBkaWFsb2cKCSAgaWYgbGlzdGJveCBpcyBkcm9wcGVkIGRvd24gYW5kIGFsbG93cyBjb21ib2JveCB0byBwcm9jZXNzIHRoZXNlIGtleWJvYXJkCgkgIG1lc3NhZ2VzIHByb3Blcmx5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCS0gV2UgY2FuIHVzZSB3bmQtPndJRG1lbnUgZm9yIENvbWJvTEJveCAoaXQgaXMgbm90IHJlc2V0IGFueW1vcmUgaW4gU2V0UGFyZW50KQoJLSBXaGVuIHVzZXIgY2xpY2tzIG91dHNpZGUgb2YgZHJvcHBlZCBsaXN0Ym94LCBvcmlnaW5hbCBzZWxlY3Rpb24gbXVzdCBiZQoJICByZXN0b3JlZC4KCS0gQ29tYm9MQm94IGhhcyBjYXJldF9vbiA9IEZBTFNFIG9uIGNyZWF0aW9uLCB0aGF0J3Mgd2h5IGNvbWJvYm94IHNlbmRzCgkgIExCX0NBUkVUT04gbWVzc2FnZSBiZWZvcmUgZHJvcHBpbmcgbGlzdGJveCBkb3duIChidXQgb25seSBmb3IKCSAgQ0JTX0RST1BET1dOTElTVCAtIEkgZG9uJ3Qgbm93IHdoeSkuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglXZWxsLCBTZXRQYXJlbnQgZG9lc24ndCB3b3JrIHByb3Blcmx5IGF0IGFsbCwgYnV0IGF0IGxlYXN0IGl0IG11c3QgcHJlc2VydmUKCXdpbmRvdyBJRC4gIEluIGZhY3QgaXQgYWxzbyBtdXN0IHByZXNlcnZlIHdpbmRvdyBzdHlsZXMsIGRlc3Ryb3kgWAoJY291bnRlcnBhcnQgaWYgcGFyZW50IG9mIHBvcHVwIG9yIG92ZXJsYXBwZWQgd2luZG93IGlzIHNldCB0byBzb21ldGluZwoJZGlmZmVyZW50IGZyb20gRGVza3RvcCwgYW5kIGxvdCBvZiBvdGhlciBzdHVmZiB0aGF0IGl0IG11c3QgYW5kIG11c3RuJ3QgZG8uCglCdXQgcHJlc2VydmluZyBJRCBpcyBnb29kIGVub3VnaCBmb3Igbm93LgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJQWRkZWQgdW5kb2N1bWVudGVkIHdpbmRvdyBzdHlsZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gU21hbGwgdXBkYXRlIHRvIGRvY3VtZW50YXRpb24KCS0gTW9yZSBwbGF5ZXIvZ3JvdXAgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIChub3QgdGVzdGVkKQoKCSogd2luMzIvZXhjZXB0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNhbGwgTWVzc2FnZUJveEEgYmVmb3JlIFVTRVIgaXMgaW5pdGlhbGl6ZWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFN0ZXBoYW5lIEx1c3NpZXIKCVNoZXJpIFN0ZWV2ZXMKCUhhaXRoZW0gSG1pZGEKCS0gSGVpZ2h0IG9mIHRoZSBsaXN0Ym94IHNob3VsZCBiZSBhZGp1c3Qgd2hlbiBMQlNfT1dORVJEUkFXRklYRUQgaXMgc2V0CgkgIGFuZCBub3QgaWYgTEJTX09XTkVSRFJBV1ZBUklBQkxFIGlzIHNldCwgcHJldmlvdXNseSBpdCB3YXMgbm90IGFkanVzdGluZwoJICB0aGUgc2l6ZSBpbiBib3RoIGNhc2VzLgoJLSBXaGVuIHRoZSBjYXJldCBpbmRleCBjaGFuZ2UsIGl0ZW1zIHJlcGFpbnRpbmcgbmVlZCB0cCBiZSBpbiB0aGlzCgkgIG9yZGVyCgkgIGEpIFBhaW50IG9sZCBjYXJldCBpdGVtIHdpdGhvdXQgdGhlIGZvY3VzCgkgIGIpIFBhaW50IG9sZCBjYXJldCBpdGVtIHdpdGhvdXQgdGhlIHNlbGVjdGlvbgoJICBjKSBQYWludCBuZXcgY2FyZXQgaXRlbSB3aXRoIHRoZSBzZWxlY3Rpb24KCSAgZCkgUGFpbnQgbmV3IGNhcmV0IGl0ZW0gd2l0aCB0aGUgZm9jdXMuCgktIFdoZW4gcmVwYWludGluZyB0aGUgbGlzdGJveCwgd2Ugc2hvdWxkIHBhaW50IGFsbCBpdGVtcyByZWdhcmRpbmcgaWYKCSAgdGhleSBhcmUgc2xlY3RlZCBvciBub3QgYW5kIHRoZW4gcGFpbnQgYWZ0ZXIgdGhlIGZvY3VzIGl0ZW0uIFNvIGZvY3VzCgkgIGl0ZW0gd2lsbCBlbmQgb3V0IGJlaW5nIHBhaW50ZWQgdHdpY2UuIChUaGF0J3Mgd2hhdCBXaW5kb3dzIGRvZXMpLgoKCSogZmlsZXMvZmlsZS5jOiBTdGFzIFNlcmdlZXYgPHN0YXMub3JlbEBtYWlsY2l0eS5jb20+CgltbWFwKCkgZmFpbHMgd2l0aCBFTk9ERVYgb24gTlRGUyB1bmRlciBMaW51eC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGF0aEZpbmROZXh0Q29tcG9uZW50OiByZXR1cm4gcG9pbnRlciB0byBOVUxMIGFuZCBub3QgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIG9mIFRCU1RZTEVfQVVUT1NJWkUuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL2NydGRsbC5oLCBtc2Rvcy9pb3BvcnRzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWRsZzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29kYmMzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIFR1cm5lZCBvbiBjYWxsaW5nIGNvbnZlbnRpb24gY2hlY2tpbmcgZm9yIFdpbjMyIGZ1bmN0aW9ucyBieQoJICBkZWZhdWx0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUT09MQkFSX0RyYXdTdHJpbmc6IGNhdGNoIGluZGV4PT0gLTEgKGJ1dCBub3QgeWV0IGhhbmRsZWQpLgoKCSogbWlzYy9vcHRpb25zLmM6CglGaXhlZCBvZmYtYnktb25lIGVycm9yIGluIHN0cmluZyBhbGxvY2F0aW9uLgoKCSogd2luZG93cy93aW4uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiBmb3IgQ29yZWwKCVRoZSB3aW5kb3cgZGltZW5zaW9ucyBoYXZlIHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSBzZW5kaW5nIHRoZQoJV01fR0VUTUlOTUFYSU5GTyBtZXNzYWdlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBtaXMtYWxpZ25lZCBhY2Nlc3NlcyBkdXJpbmcgQklPUy9ET1MgZGF0YSBpbml0aWFsaXphdGlvbi4KCgkqIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNpemUgb2YgcGVfaGVhZGVyIG9uIG1hY2hpbmVzIHdpdGggbm9uLTRLIHBhZ2VzLgoKCSogaWYxNjMyL3Nub29wLmMsIHJlbGF5MzIvc25vb3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSAiQ0FMTCIgYW5kICJSRVQiIGluIGNhcGl0YWwgbGV0dGVycyBmb3IgZGlzdGluY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglUaGUgYWN0aXZlIHBhZ2Ugc2hvdWxkIGJlIHVuY2hhbmdlZCB3aGVuIHJlbW92aW5nIGFuIGFjdGl2ZSBmaXJzdCBwYWdlCglmcm9tIGEgcHJvcGVydHkgc2hlZXRzLgoKMjAwMC0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVcGRhdGVkIHN1cHBvcnQgZm9yIFNvbGFyaXMvU3BhcmMgYXJjaGl0ZWN0dXJlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsX2NhcmRlbmFzQGRlbmViYS5jb20+CglDb3JyZWN0ZWQgYSBwb3RlbnRpYWwgY3Jhc2guCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIHN0YWNrIHN3aXRjaCBoYW5kbGluZyAobGFyZ2Ugc3RhY2spIHRvIHN5c2RlcHMuYwoJRW5hYmxlIGV4Y2VwdGlvbiBkaXNwYXRjaCB3aGlsZSBvbiBsYXJnZSBzdGFjay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRmluaXNoZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIExJU1RWSUVXX1NldENvbHVtbldpZHRoLiAgVGVzdGVkCglhZ2FpbnN0IHdpbmRvd3MgdGhvcm91Z2hseS4gIEZpeGVkIGJ1ZyByZXN1bHRpbmcgaW4gdW5zaWduZWQgdmFsdWVzCgliZWluZyBwYXNzZWQgaW50byBMSVNUVklFV19TZXRDb2x1bW5XaWR0aCBmcm9tIHRoZSBsaXN0dmlldyB3aW5kb3cKCXByb2NlZHVyZS4gIEZpeGVkIExJU1RWSUVXX0dldEl0ZW1IZWlnaHQgdG8gZGlzcmVnYXJkIHRoZSBoZWlnaHQgb2YKCWljb25zIGlmIG5vIGljb25zIGV4aXN0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFkZGVkIGRlZmluZXMgZm9yIExWU0NXX0FVVE9TSVpFL19VU0VIRUFERVIuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZXBsYWNlZCBjYWxscyB0byBIRUFERVJfUmVmcmVzaCB3aXRoIEludmFsaWRhdGVSZWN0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCVN0YXJ0ZWQgc3VwcG9ydCBmb3IgbWVudWJhci1saWtlIHRvb2xiYXJzLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29tcGlsZSBmaXhlcyBmb3Igbm9uLWkzODYgYXJjaHMuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvdWl0b29scy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF0dGVtcHQgdG8gcGFpbnQgdGhlIGNoZWNrYm94IGFuZCByYWRpbyBidXR0b25zIGJldHRlci4KCjIwMDAtMDYtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jOiBGaXhlZCB3YXJuaW5nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCVVwZGF0ZWQgdG8gZGxsIHZlcnNpb24gNS44MSAoSUUgNS4wMSkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglFcmljIEtvaGwgPGVrb2hsQHJ6LW9ubGluZS5kZT4KCUltcGxlbWVudGVkIFRWTV9HRVRJVEVNVy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJSmFzb24gTWF3ZHNsZXkgPGphc29uQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdHlwaW5nIHRoZSBmaWxlbmFtZSBpbiB0aGUgbGlzdHZpZXcgY29udHJvbCBhbmQKCWhhdmluZyB0aGUgY29udHJvbCBzZWxlY3QgaXQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgaW5jbHVkZS9tZXNzYWdlLmgsIG1pc2MvbWFpbi5jOgoJUmVtb3ZlZCBNU0dfV2luZVN0YXJ0VGlja3MgKGRvZXMgbm90IHdvcmsgZm9yIG11bHRpcGxlIGFkZHJlc3Mgc3BhY2VzCglhbnl3YXkpLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJUmVwbGFjZWQgR2V0REMgYnkgQ3JlYXRlREMuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2RpYi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1vdmVkIERJQl9GaXhDb2xvcnNUb0xvYWRmbGFncyB0byBjdXJzb3JpY29uLmMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRG9jdW1lbnRlZCB0aGUgbmV3IHdpbmUgY29tbWFuZCBsaW5lIGFuZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKCVdJTkVQUkVGSVguCgoJKiBtc2Rvcy9kcG1pLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luZXBzMTYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tZGxnMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZHNvdW5kLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5lcHMuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogbWVtb3J5L2luc3RyLmMsIG1zZG9zL2ludGVycnVwdHMuYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2Lmg6CglEZWxheSBsb2FkaW5nIG9mIGludGVycnVwdCB0YWJsZSBmdW5jdGlvbnMgdW50aWwgdGhleSBhcmUgbmVlZGVkLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2lvcG9ydHMuYzoKCURlbGF5IGluaXRpYWxpemF0aW9uIG9mIEkvTyBwZXJtaXNzaW9ucyB1bnRpbCB0aGV5IGFyZSBmaXJzdCB1c2VkLgoKCSogbG9hZGVyL21haW4uYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGlmMTYzMi9yZWxheS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQga2VybmVsIGluaXRpYWxpemF0aW9uIHRvIGtlcm5lbF9tYWluLmMKCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwLnJjLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvZGlzcGxheS5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCU1lcmdlZCBkaXNwbGF5LmRsbCBpbnRvIFVTRVIuCgoJKiBtaXNjL3dzcHJpbnRmLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGNyYXNoLgoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvd293MzIuc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb21tLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeXN0ZW0uc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYywgZGxscy9rZXJuZWwvd293MzIuc3BlYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9jb21tLnNwZWMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdG9vbGhlbHAuc3BlYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTdGFydCB0byBzZXBhcmF0ZSBLRVJORUwgb3V0IG9mIGxpYndpbmUuCgoyMDAwLTA2LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90c194dXRpbC5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3h1dGlsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXNlcnZlIFdNIGhpbnRzIHRoYXQgd2VyZSBzZXQgZHVyaW5nIHdpbmRvdyBjcmVhdGlvbiBieSBjYWxsaW5nCglYR2V0V01IaW50cyBwcmlvciB0byBYU2V0V01IaW50cy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbF9jYXJkZW5hc0BkZW5lYmEuY29tPgoJQWRkZWQgYSBmZXcgbWVzc2FnZSBjcmFja2Vycy4KCgkqIHRvb2xzL3dpbmVjb25mOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZCAiVW5peCBkcml2ZXMiIC90bXAgYW5kICR7SE9NRX0sIGFuZCBEZXZpY2UgYW5kIEZpbGVzeXN0ZW0KCXN0YXRlbWVudHMsIHRvIGF1dG9nZW5lcmF0ZWQgd2luZS5jb25mLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBSZXdyaXRlIG9mIHRoZSBzaGVsbCByZWxhdGVkIHBhcnRzIG9mIHRoZSBkaWFsb2cgdG8gdXNlIHRoZSBhbHJlYWR5CgkgIGluIHNoZWxsMzJpbXBsZW1lbnRlZCBmdW5jdGlvbnMgKFNoZWxsRm9sZGVyL1BhdGgqKS4gRWxpbWluYXRlZCBkaXJlY3QKCSAgZmlsZSBhY2Nlc3MuCgktIFJlcGxhY2VkIExvYWRMaWJyYXJ5QSB3aXRoIEdldE1vZHVsZUhhbmRsZUEgc2luY2UgY29tZGxnMzIgaXMgaW1wb3J0cwoJICBzb21lIGRsbHMgcGVyICouc3BlYyBmaWxlCgktIE1vc3QgT3BlbkZpbGUgRmxhZ3MgKE9GTl8qKSBzaG91bGQgd29yayBwcm9wZXJseSBub3cKCS0gVGhlIGVkaXQgYm94IHNob3VsZCB3b3JrIHJpZ2h0IHdpdGggYWxsIHN0dWZmIGVudGVyZWQgaW4gaXQgbGlrZQoJICAuLlx0ZW1wXGZpbGUudHh0IG9yIGp1c3QgYzogdG8gY2hhbmdlIGEgZHJpdmUKCS0gT3B0aW1pemVkIERhdGFPYmplY3QgaGFuZGxpbmcKCS0gU29tZSBidWdzIGZpeGVkLCBzaG91bGQgd29yayB3aXRoIG5hdGl2ZSBzaGVsbDMyIGFnYWluLgoJLSBTdHVicyBmb3IgUHJpbnREbGdFeAoKMjAwMC0wNi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkb2N1bWVudGF0aW9uL2NvbmZpZywgZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnMsIGRvY3VtZW50YXRpb24vZm9udHMsIGRvY3VtZW50YXRpb24vbm8td2luZG93cywgbWlzYy9yZWdpc3RyeS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21lc3NhZ2UuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTG90cyBvZiBzcGVsbGluZyBmaXhlcyB0aGF0IGFjY3VtdWxhdGVkIGluIG15IHRyZWUgYWdhaW4sIG1hZGUgc2V2ZXJhbAoJZXJyb3IgbXNncyBtb3JlIHZlcmJvc2UsIGRvYyB1cGRhdGVzLgoKCSogZG9jdW1lbnRhdGlvbi9zaGVsbDMyLCBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gTmV3IChzb21lIHN0dWJzKTogU0hHZXRGb2xkZXJMb2NhdGlvbiwgUGF0aEFkZEV4dGVuc2lvbiwKCSAgUGF0aElzVU5DU2VydmVyLCBQYXRoSXNVTkNTZXJ2ZXJTaGFyZSwgUGF0aE1ha2VQcmV0dHksCgkgIFNIQ3JlYXRlU2hlbGxQYWxldHRlLCBTSE9wZW5SZWdTdHJlYW0sIFNIT3BlblJlZ1N0cmVhbTIKCS0gTWFueSBzdHJpbmcgZnVuY3Rpb25zIGltcGxlbWVudGVkCgktIFNvbWUgc3R1YnMgZm9yIGV4cG9ydHMgYnkgb3JkaW5hbAoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUdpdmUgYSBlcnJvciBtZXNzYWdlIGlmIGEgZm9yd2FyZGVkIGV4cG9ydCBpcyBub3QgcmVzb2x2ZWQuCgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgRmluZEZpcnN0RmlsZUV4LCBjbGVhbmVkIG9sZCBpbXBsZW1lbnRhdGlvbiB1cC4KCgkqIGNvbnRyb2xzL3dpZGdldHMuYzoKCUxvdWlzLVBoaWxpcHBlIEdhZ25vbiAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglTdGF0aWMgY29udHJvbHMgd2VyZW4ndCByZWNlaXZpbmcgV01fTEJVVFRPTkRCTENMSyBtZXNzYWdlcyBiZWNhdXNlIHRoZQoJU3RhdGljIHdpbmRvdyBjbGFzcyB3YXMgcmVnaXN0ZXJlZCB3aXRob3V0IHRoZSBDU19EQkxDTEtTIHN0eWxlICh3aGljaCBpdAoJaGFzIGluIFdpbmRvd3MpLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1ha2Ugc3VyZSBtYWluX2V4ZV9uYW1lIGlzIGEgRE9TIGZpbGVuYW1lICh0aGFua3MgdG8gVXdlIEJvbm5lcykuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2RwbGF5Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBEaXJlY3RTb3VuZENhcHR1cmUgYW5kIERpcmVjdFNvdW5kQ2FwdHVyZUJ1ZmZlciBpbnRlcmZhY2VzCgktIEFkZGVkIHNvbWUgU291bmRDYXB0dXJlIHN0dWJzCgktIENoYW5nZWQgUkVGSUlEIHRvIExQQ0dVSUQgaW4gYSBmZXcgcGxhY2VzIGFzIHBlciBNUyBoZWFkZXIgZmlsZQoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHViIGZvciBSdGxDb252ZXJ0U2lkVG9Vbmljb2RlU3RyaW5nLgoKCSogY29udHJvbHMvc3RhdGljLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJTVNETjogIldNX05DSElUVEVTVCAtIFJldHVybnMgSFRDTElFTlQgaWYgdGhlIGNvbnRyb2wgc3R5bGUgaXMKCVNTX05PVElGWTsgb3RoZXJ3aXNlLCByZXR1cm5zIEhUVFJBTlNQQVJFTlQuICIKCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgd2FybmluZy4KCjIwMDAtMDUtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCBhIGRlZmF1bHQgc2l6ZSBmb3Igd2luZG93cyB3aGVuIENXX1VTRURFRkFVTFQgaXMgdXNlZC4KCjIwMDAtMDUtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvbmxzL2hydi5ubHMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6Cglab3JhbiBEemVsYWpsaWphIDxqZWxseUBzcmsuZmVyLmhyPgoJQmFzaWMgQ3JvYXRpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2VyZ2UgSXZhbm92CglSZXR1cm5pbmcgRExHQ19XQU5UQUxMS0VZUyBmb3IgbXVsdGlsaW5lIGVkaXQgY29udHJvbCB3YXMgbm90IGdvb2QgYmVjYXVzZQoJaXQgYnJlYWtzIG5hdmlnYXRpb24gaW4gZGlhbG9ncy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBGaXhlZCBzb21lIGluaXRpYWxpemF0aW9uL2Rlc3RydWN0aW9uIGFuZCByZWZlcmVuY2UgY291bnRpbmcKCS0gQWRkZWQgYSBsaXR0bGUgbW9yZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KCgkqIHRvb2xzL2ZvbnRfY29udmVydC5zaDoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUFkZGVkIGEgc2hlbGwtc2NyaXB0IGZvciBlYXNpZXIgZm9udC1pbnN0YWxsYXRpb24uCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvY29sb3IuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwczE2LnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi93aW5lcHMuc3BlYywgaW5jbHVkZS9wc2Rydi5oLCBsb2FkZXIvbWFpbi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYml0Ymx0LmMsIE1ha2UucnVsZXMuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU2VwYXJhdGUgd2luZXBzIG91dCBvZiBXaW5lJ3MgY29yZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBhIGxpdHRsZSBtb3JlIGRsbCBsZXZlbCBkZWJ1Z2dpbmcgYW5kIHNtYWxsIGNoYW5nZXMKCS0gU3RhcnQgb24gZ3JvdXAgYW5kIHBsYXllciBpbnRlcmZhY2VzCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kc291bmQuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZCBhbm90aGVyIHdheSB0byBjcmVhdGUgYSAzZCBsaXN0ZW5lciBpbnRlcmZhY2UuCgktIEZpeCB1cCBzb21lIHJlZmVyZW5jZSBjb3VudGluZyBidWdzIGFuZCBpbnRlcmZhY2UgY3JlYXRpb24gYnVncwoJLSBBZGQgRGlyZWN0U291bmRFbnVtZXJhdGVXIHN0dWIKCS0gQWRkIERpcmVjdFNvdW5kQ2FwdHVyZUVudW1lcmF0ZXtBLFd9IHN0dWJzCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGluY2x1ZGUvZGF0ZXRpbWUuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQWRkZWQgM0QgYm9yZGVyIGFyb3VuZCBjb250cm9sLiAgRml4ZWQgbW9udGhjYWwgY29udHJvbCBwb3B1cC4gIEFkZGVkCglXTV9TSVpFIHN1cHBvcnQuICBPcHRpbWl6ZWQgZHJhd2luZy4gIEFkZGVkIFdNX0xCVVRUT05VUCBoYW5kbGluZy4KCUhhbmRsZSBEVFNfUklHSFRBTElHTiBzdHlsZS4gIEZpeGVkIGhhbmRsaW5nIG9mIGZvcm1hdHRpbmcgc3R5bGVzLAoJZGF0ZSBpcyBub3cgZGlzcGxheWVkIHByb3Blcmx5IGZvciBEVFNfU0hPUlREQVRFRk9STUFULgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZW1vdmVkIGFsbCBkaXJlY3QgY2FsbHMgdG8gTU9OVEhDQUxfUmVmcmVzaCgpIGFuZCByZXBsYWNlZCB3aXRoCgllaXRoZXIgUmVkcmF3V2luZG93IG9yIEludmFsaWRhdGVSZWN0LiBPcHRpbWl6ZWQgZHJhd2luZyB1c2luZwoJUmVkcmFXaW5kb3cgYW5kIHVwZGF0ZSByZWdpb25zLiAgRml4ZWQgIlRvZGF5IiBkYXRlIGJ1ZyB3aGVyZSB5ZWFyIHdhcwoJb25seSBvbmUgZGlnaXQuICBGaXhlZCBkcmF3aW5nIG9mIGNpcmNsZSBkcmF3biBuZXh0IHRvICJUb2RheSIuICBGaXhlZAoJbW92aW5nIHRvIHByZXZpb3VzIG9yIG5leHQgbW9udGggYnkgY2xpY2tpbmcgb24gZGF5cyBiZWxvbmdpbmcgdG8KCXByZXZpb3VzIG9yIG5leHQgbW9udGhzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJQWRkIHN0dWIgZm9yIFNldENvbnNvbGVPdXRwdXRDUC4KCgkqIHRvb2xzL3dyYy9wcHkueToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIGEgOyBuZWVkZWQgYnkgc29tZSBZQUNDcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW5zdGFsbCB0aGUgY29sb3JtYXAgb25seSBpZiBpdCB3YXMgY3JlYXRlZC4KCgkqIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIGludCAweDIxIGxvbmcgZmlsZSBuYW1lIGZ1bmN0aW9uIDB4NzFhMDogR2V0IFZvbHVtZSBJbmZvLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRlZCB3Z2xTaGFyZUxpc3RzIGFuZCB3Z2xHZXRDdXJyZW50REMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglNb3ZlZCBpZGxlIGV2ZW50IGhhbmRsaW5nIHRvIHRoZSBzZXJ2ZXIuCgoJKiB3aW5kb3dzL3dpbi5jOgoJVXNlIEdldFN0YXJ0dXBJbmZvQSgpIGluc3RlYWQgb2YgYWNjZXNzaW5nIHByb2Nlc3Mgc3RydWN0dXJlCglkaXJlY3RseS4KCgkqIGxvYWRlci90YXNrLmM6CglNYWtlIHN1cmUgaW5pdGlhbCB0YXNrIGlzIG5vdCBtYXJrZWQgYXMgMzItYml0LgoKCSogbWlzYy9vcHRpb25zLmM6CglNYWtlIGNoaWxkIHByb2Nlc3NlcyBpbmhlcml0IGNvbW1hbmQtbGluZSBvcHRpb25zIHRocm91Z2ggdGhlCglXSU5FT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCgkqIHdpbmRvd3Mvd2luLmM6IFNlcmdlIEl2YW5vdgoJU2V0UGFyZW50OiBjYWxsIFNldFdpbmRvd1BvcyB3aXRoIFNXUF9OT0FDVElWQVRFIGZsYWcgc2V0LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2Rpc3BkaWIuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZGlzcGRpYi5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vdmVkIERJU1BESUIgb3V0IG9mIHRoZSBrZXJuZWwgaW50byBHREkuCgoJKiBjb250cm9scy9jb21iby5jLCBpbmNsdWRlL2NvbWJvLmg6CglEYXZpZCBHcmFudCA8ZGF2aWRncmFAY29yZWwuY2E+CgktIENyZWF0aW5nIGNvbWJvYm94IHdpdGggQ0JTX1NJTVBMRSBzdHlsZSBzaGFsbCBzZXQgaW50ZXJuYWwgZmxhZyBDQkZfRURJVC4KCS0gRWRpdCB0ZXh0IG11c3QgYmUgc2VsZWN0ZWQgb25seSBpZiBDQiBpcyBpbiBmb2N1cy4KCS0gSWYgQ0IgaGFzIGVkaXQgY29udHJvbCB3ZSBoYXZlIHRvIGNhbGwgQ0JVcGRhdGVFZGl0IHRvIHVwZGF0ZSBpdHMKCSAgY29udGVudHMuIEludmFsaWRhdGluZyB0ZXh0UmVjdCB3aWxsIG5vdCBmb3JjZSB1cGRhdGluZyBvZiBjaGlsZAoJICBlZGl0IGNvbnRyb2wsIG9idmlvdXNseS4KCS0gV2UgaGF2ZSB0byBwcm90ZWN0IG91cnNlbHZlcyBmcm9tIGNoYW5naW5nIHNlbGVjdGlvbiBpbiBsaXN0Ym94IHdoZW4KCSAgd2UgcmVjZWl2ZSBsaXN0Ym94IG5vdGlmaWNhdGlvbi4gU28gTEJOX1NFTENIQU5HRSAtPiBDQlVwZGF0ZUVkaXQgLT4KCSAgRU5fQ0hBTkdFIHdpbGwgbm90IHJlc2VsZWN0IGl0ZW0gaW4gdGhlIGxpc2JveC4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQWRkIGluY2x1ZGUgZm9yIExvYWRMaWJyYXJ5LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L2F0b20uYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVR1cmNoYW5vdiBTZXJnZWkgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PgoJSW1wbGVtZW50ZWQgbG9jYWwgYXRvbXMgaW4gdGhlIHNlcnZlci4KCgkqIGlmMTYzMi9idWlsdGluLmM6IERvIG5vdCBsb2FkIHdpbmVwcyBvbiBzdGFydHVwLgoKCSogbWlzYy9jb21tLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHdhcm5pbmcuCgoJKiBjb250cm9scy9jb21iby5jOiBPd2VuIFdhbmcKCVdoZW4geW91IGNsaWNrIG9uIGFuIGljb24gdG8gb3BlbiBhIGNvbWJvIGJveCwgeW91IHdvdWxkIGV4cGVjdCBpdCB0bwoJYmUgZW5hYmxlZCBzbyB5b3UgY2FuIGNob29zZSBzb21ldGhpbmcgaW4gaXQuIEluIFdpbmUgdGhpcyB3YXMgbm90CglndWFyYW50ZWVkIHNpbmNlIHlvdXIgZGVmYXVsdCBmbGFncyBjb3VsZCBnZXQgbG9zdCBpbiB0aGUgcHJvY2Vzcy1oZWFwCglvZiB0aGUgYXBwbGljYXRpb24uCgoyMDAwLTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MjEuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9pbnQyMC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jOgoJRXhlYyBhIHNlcGFyYXRlIHdpbmUgYmluYXJ5IGZvciBldmVyeSB3aW4zMiBwcm9jZXNzIHNvIHRoYXQgdGhleSBydW4KCWluIHNlcGFyYXRlIGFkZHJlc3Mgc3BhY2VzLgoJUnVuIDE2LWJpdCB0YXNrcyBhcyBXaW4zMiB0aHJlYWRzLCBub3QgcHJvY2Vzc2VzLgoKMjAwMC0wNS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMDUyNi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92CgktIEFkZGVkIGhhbmRsaW5nIG9mIFdNX01PVVNFQUNUSVZBVEUgbWVzc2FnZQoJLSBBZGRlZCBpbl9mb2N1cyBmaWVsZCB0byBpbnRlcm5hbCBsaXN0Ym94J3Mgc3RydWN0dXJlLiBUaGlzIGZsYWcgaXMgc2V0IG9uCgkgIHJlY2VpdmluZyBXTV9TRVRGT0NVUyBtZXNzYWdlIGFuZCBpcyByZXNldGVkIG9uIFdNX0tJTExGT0NVUy4gQWxsIGNhbGxzIHRvCgkgIEdldEZvY3VzIGZ1bmN0aW9uIHdlcmUgcmVwbGFjZWQgd2l0aCBjaGVja3Mgb2YgdGhpcyBmbGFnLgoJLSBJbiBMSVNUQk9YX0hhbmRsZUxCdXR0b25Eb3duOiBmb2N1cyBpcyBzZXQgb25seSBpZiAnaW5fZm9jdXMnIGZsYWcgaXMKCSAgY2xlYXIKCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVN0YXJ0ZWQgbG9jYWwgbmFtZSBzZXJ2ZXIgZnJhbWV3b3JrLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgUHJpbnRTZXR1cCBkaWFsb2cgYW5kIHN1cHBvcnQgZm9yIGhvb2tzIGFuZCB0ZW1wbGF0ZXMuCglNb3ZlIDE2IGJpdCBhcGkgZGVmaW5pdGlvbnMgb3V0IG9mIGNvbW1kbGcuaCB0byBjZGxnLmgKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92CgktIEFkZGVkIGhhbmRsaW5nIG9mIFdNX01PVVNFQUNUSVZBVEUgbWVzc2FnZQoJLSBBZGRlZCBpbl9mb2N1cyBmaWVsZCB0byBpbnRlcm5hbCBsaXN0Ym94J3Mgc3RydWN0dXJlLiBUaGlzIGZsYWcgaXMgc2V0IG9uCgkgIHJlY2VpdmluZyBXTV9TRVRGT0NVUyBtZXNzYWdlIGFuZCBpcyByZXNldGVkIG9uIFdNX0tJTExGT0NVUy4gQWxsIGNhbGxzIHRvCgkgIEdldEZvY3VzIGZ1bmN0aW9uIHdlcmUgcmVwbGFjZWQgd2l0aCBjaGVja3Mgb2YgdGhpcyBmbGFnLgoJLSBJbiBMSVNUQk9YX0hhbmRsZUxCdXR0b25Eb3duOiBmb2N1cyBpcyBzZXQgb25seSBpZiAnaW5fZm9jdXMnIGZsYWcgaXMKCSAgY2xlYXIKCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVN0YXJ0ZWQgbG9jYWwgbmFtZSBzZXJ2ZXIgZnJhbWV3b3JrLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgUHJpbnRTZXR1cCBkaWFsb2cgYW5kIHN1cHBvcnQgZm9yIGhvb2tzIGFuZCB0ZW1wbGF0ZXMuCglNb3ZlIDE2IGJpdCBhcGkgZGVmaW5pdGlvbnMgb3V0IG9mIGNvbW1kbGcuaCB0byBjZGxnLmgKCgkqIGNvbnRyb2xzL2VkaXQuYzogSGVubmluZyBIb2ZmbWFubgoJRG9uJ3Qgc2VuZCBFTl9DSEFOR0UgYWZ0ZXIgcGFpbnRpbmcgdGhlIGVkaXQuCglTZW5kIGl0IHdoZXJldmVyIHRleHQgaXMgY2hhbmdlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCU1vdmVkIHRoZSBFTl9VUERBVEUgbm90aWZpY2F0aW9uIG91dCBvZiB0aGUgcGFpbnQgaGFuZGxlci4gSW5zdGVhZCwKCXRoZSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFuIEludmFsaWRhdGVSZWN0IGlzIG1hZGUgYWZ0ZXIKCW1vZGlmeWluZyB0aGUgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUZyYW5jb2lzIE1ldGhvdCAoTWFjYWRhbWlhbikKCUZpeGVkIHRoZSBibGFuayBjb2xvciBwYWxldHRlIHRvb2x0aXAgYnVnIGJ5IHRyaWdnZXJpbmcgYSByZWZyZXNoIG9mCgl0aGUgdG9vbHRpcCB3aXRoIFVwZGF0ZVdpbmRvdyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgZGlyZWN0bHkgdGhlCglyZWZyZXNoIGZ1bmN0aW9uLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2V4dGVybmFsLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZXh0X2RlYnVnZ2VyLmM6CglKYW1lcyBKdXJhbiA8anVyYW5AY3NlLnBzdS5lZHU+CglERUJVR19FeHRlcm5hbERlYnVnZ2VyKCkgbmVlZHMgdG8gYmUgYSBwYXJ0IG9mIHdpbmUsIG5vdCB3aW5lZGJnLgoKMjAwMC0wNS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW46CglEbyBub3QgY2xlYXIgc3VmZml4ZXMgbGlzdCAoYnJlYWtzIEJTRCBtYWtlKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIHdpbnNwb29sIHRvIHVuaWNvZGUuCglNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrZWQgdGhlIHRodW1iIGRyYXdpbmcgY29kZSwgdGh1bWIgY2FsY3VsYXRpb24gY29kZSwgY2hhbm5lbAoJY2FsY3VsYXRpb24gY29kZSwgYW5kIGNvcnJlY3RlZCBzb21lIGJ1Z3MgaW4gaG93IHRpY3MgYXJlIGRyYXduIGFuZAoJaG93IGNsaWNrcyBhcmUgaGFuZGxlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUxvdWlzLVBoaWxpcHBlIEdhZ25vbiAob2YgTWFjYWRhbWlhbiBUZWNobm9sb2dpZXMgZm9yIENvcmVsKQoJQWRkZWQgZXZlbnQgaGFuZGxlciBmb3IgV01fTUJVVFRPTkRPV04gKHNlbmRzIFdNX1BBU1RFIG1lc3NhZ2UpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVVzZSBjbGlwcGluZyByZWdpb25zIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHByb2Nlc3NpbmcgcGVyZm9ybWVkIHdoZW4gdGhlCgl0b29sYmFyIGlzIHJlcGFpbnRpbmcuICBSZWR1Y2VzIHByb2Nlc3NpbmcgYnkgYXBwcm94aW1hdGVseSA4NS05NSUgaW4gbW9zdAoJY2FzZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVzIGNyYXNoIHdoZW4gY2FsbGluZyBUcmVldmlld19FbmRFZGl0TGFiZWxOb3cgYW5kIG5vIG5vZGUgaXMKCWN1cnJlbnRseSBlZGl0ZWQuCgoyMDAwLTA1LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9mbGF0c2IuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEZWZlciB0byBzdGFuZGFyZCBzY3JvbGxpbmcgQVBJcyBmb3Igbm9uLWZsYXRTQiBzcGVjaWZpYyBmdW5jdGlvbnMgc28KCXRoYXQgZmxhdFNCcyBzaG93IHVwIGFuZCBiZWhhdmUgcHJvcGVybHksIGp1c3Qgbm90IHdpdGggZmxhdCBwcm9wZXJ0aWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJUm9iIEZhcm51bSA8cm9iZkBjb2Rld2VhdmVycy5jb20+CglTZXBhcmF0ZSBvdXQgdGhlIDMyYml0IGNhc2UgZnJvbSB0aGUgMjRiaXQgY2FzZSwgYW5kIGNvcHkgM2J5dGVzIG9mCglzb3VyY2UgZm9yIGV2ZXJ5IDRieXRlcyBvZiBpbnB1dCwgaW50byB0aGUgZGVzdGluYXRpb24gZm9yIHRoZSAyNGJpdAoJY2FzZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU29ydGVkIG91dCBhIGZldyBtaXNwbGFjZWQgZGVmaW5pdGlvbnMuCglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBmaWxlIGhhbmRsaW5nIGFuZCB2aXJ0dWFsCgltZW1vcnkgbWFuaXB1bGF0aW9uLgoJQWRkZWQgSXNUZXh0VW5pY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBmb3IgVFZTX1NJTkdMRUVYUEFORC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGVkIHRoZSBwcm9ibGVtIHdoZXJlIGEgdGFiIGNvbnRyb2wgbWFya2VkIG11bHRpbGluZSBidXQgaGFzCglvbmx5IG9uZSB0YWIgd2FzIGJlaW5nIGp1c3RpZmllZCB0byBmaWxsIHRoZSB3aG9sZSB0YWIgc3BhY2UuCgoJKiBtc2Rvcy9kcG1pLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29tbWVudGVkIG91dCBicm9rZW4gX19hc21fXywgYWRkZWQgY29tbWVudHMgd2hlcmUgaXQgaXMgYnJva2VuLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUluc2VydGVkIGEgbWlzc2luZyBjYWxsIHRvIFNldFdpbmRvd1BvcygpLiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBoZWFkZXIKCWNvbnRyb2wgaXMgdmlzaWJsZSBhZ2FpbiBpbiBsaXN0IHZpZXdzIHdpdGggcmVwb3J0IHN0eWxlLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJUmV2aXZlZCB0aGUgR0VOX0NfU1JDUyB2YXJpYWJsZSB0byBzdXBwb3J0IHdyYyBsZXgveWFjYyBzb3VyY2VzLgoKMjAwMC0wNS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglTZW5kIGEgbm9ybWFsIG1vdXNlIG1lc3NhZ2UgY29kZSBpbiBXTV9QQVJFTlROT1RJRlksIGV2ZW4gaWYgdGhlCglhY3R1YWwgbWVzc2FnZSB3YXMgYSBub24tY2xpZW50IG9uZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb3BlbmdsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBBUEkgZmlsZXMKCS0gQmV0dGVyIGhlYWRlcnMgYW5kIHByb3RvdHlwZSBjaGVja2luZwoJLSBQcm90b3R5cGUgY2hlY2tpbmcgbm93IGNhbGxlZCAtLXByb3RvdHlwZSBpbnN0ZWFkIG9mIC0taGVhZGVycwoJLSBOZXcgb3B0aW9ucyAtLWhlYWRlcnMte2R1cGxpY2F0ZWQsbWlzcGxhY2VkfSBmb3IKCSAgZHVwbGljYXRlZC9taXNwbGFjZWQgZnVuY3Rpb25zIGNoZWNraW5nIG9mIHRoZSBoZWFkZXJzLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJZiBzeXN0ZW0gZG9lc24ndCBoYXZlIE9wZW5HTCwgZG9uJ3QgcmVmZXIgdG8gbGlib3BlbmdsMzIuc28uCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6CglBYmV5IEdlb3JnZSAob2YgTWFjYWRhbWlhbi9Db3JlbCkKCVdoZW4geW91IG9wZW4gZmlsZXMgd2l0aCBFbWJlZGRlZCBvYmplY3RzLCB0aGV5IHdlcmUgbm90IGdldHRpbmcgZHJhd24KCWNvcnJlY3RseS4gIFdoZW4geW91IHBhc3RlIE9MRSBvYmplY3RzIHdpdGggcHJlc2VudGF0aW9uIGRhdGEsIHRoZXkKCXdlcmUgbm90IGdldHRpbmcgZHJhd24gY29ycmVjdGx5LgoKCSogY29udHJvbHMvbWVudS5jOiBSb2IgRmFybnVtIDxyb2JmQGNvZGV3ZWF2ZXJzLmNvbT4KCVBvc3QgYSBXTV9DQU5DRUxNT0RFIG1lc3NhZ2UgdG8gd2FrZSB1cCB0aGUgaW50ZXJuYWwgbWVudSBoYW5kbGluZwoJY29kZS4gVGhpcyBmaXhlcyB0aGUgcHJvYmxlbSBvZiBhIG1lbnUgYmVpbmcgb3JwaGFuZWQgd2hlbiB0aGUgcGFyZW50Cgl3aW5kb3cgZGlzYXBwZWFycywgb3IgaWYgdGhlIHBhcmVudCBsb3NlcyBmb2N1cy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IGEgbWlzbWF0Y2ggYmV0d2VlbiBmb3JtYXQgc3RyaW5nIGFuZCBwYXJhbWV0ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldEJ1ZGR5IG5vIGxvbmdlciBvdmVyd3JpdGVzIGl0cyBzdXBlcmNsYXNzJyBXbmRQcm9jIHByb3BlcnR5IHdoZW4KCXRoZSBidWRkeSBoYXMgYWxyZWFkeSBiZWVuIHN1YmNsYXNzZWQsIGVsaW1pbmF0aW5nIHRoZSBpbmZpbml0ZSBsb29wCgl0aGF0IHJlc3VsdGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbmVkIHVwIFgxMSBleHRlbnNpb24gdGVzdHMuCgoJKiBjb250cm9scy9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglDYXB0dXJlIF5WLF5YLF5DIGFuZCB0cmFuc2xhdGUgaXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSBmb3IKCXBhc3RlLCBjdXQsIGNvcHkuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeGVkIHRoZSBPcGVuR0wzMiBzcGVjIGZpbGUgKGFuZCB0aGUgbWFrZV9vcGVuZ2xfc3BlYyB0b29sKQoJLSBwcmV2ZW50IEhhbGZMaWZlIGZyb20gY3Jhc2hpbmcgd2hlbiBpdCBmcmVlcyB0aHJlZSB0aW1lcyB0aGUgc2FtZQoJICByZW5kZXJpbmcgY29udGV4dAoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIERpcmVjdERyYXdQYWxldHRlIGhhbmRsaW5nIChzZXQgaXQgb24gaW5pdCwgbm90IGV2ZXJ5IHRpbWUgaXQKCWNoYW5nZXMpLiBBZGRlZCBWR0FfV3JpdGVDaGFycygpIGZ1bmN0aW9uLgoKCSogbXNkb3MvaW50MzMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTY2FsZSBtb3VzZSBjb29yZGluYXRlcyB0byBkZWZhdWx0IHdpZHRoIDY0MC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFdJTkVfRGlyZWN0RHJhdyBhIGRlY29yYXRpb25sZXNzIHBvcHVwIHdpbmRvdy4gRml4ZXMgbW91c2UKCWNvb3JkaW5hdGVzIHByZXZpb3VzbHkgb2Zmc2V0IGJ5IHRoZSBpbnZpc2libGUgZGVjb3JhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSN1bmRlZiBERUxFVEUgYmVmb3JlIChyZSlkZWZpbmluZyBpdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgdG9vbHRpcHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVkdWNlIHRvb2xiYXIgcmVkcmF3aW5nIGFuZCBmbGlja2VyIGJ5IGNhbGxpbmcgUmVkcmF3V2luZG93KCkgaW4KCVRPT0xCQVJfTW91c2VNb3ZlKCkgb25seSBpZiBob3QgZWZmZWN0IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgaG90CglidXR0b24uICBSZXN0b3JlIGJIb3QgZmxhZyBvZiBob3QgYnV0dG9uIGluIFRPT0xCQVJfTEJ1dHRvblVwKCkgdG8KCXJlc3RvcmUgaG90IGVmZmVjdCBwcm9wZXJseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92CglGaXhlZCBXTV9MQlVUVE9OREJMQ0xLIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU2V0IGFuZCByZXRyaWV2ZSB0aGUgd2luZG93IGljb24gdGhhdCBpcyBkcmF3biB1bmRlciBtYW5hZ2VkIG1vZGUKCShiYXNlZCBvbiB0aGUgd29yayBvZiBBbmRyZXcgTGV3eWNreSBmb3IgQ29yZWwpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGVkIGEgcHJvYmxlbSBvZiB3aGVuIG9sZEhpdCBpcyBuZWdhdGl2ZSBhbmQgd2UgdHJ5IHRvIHVzZSBpdCBhcwoJYW4gaW5kZXggaW50byB0aGUgYnV0dG9ucyBhcnJheS4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNob3VsZCBpbmNsdWRlIGNvbW1kbGcuaC4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRGVmaW5lIHRoZSBfWDg2XyBtYWNybyBvbiBJbnRlbCBwcm9jZXNzb3JzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTb21lIHBhcnQgb2YgRURJVF9FTV9MaW5lTGVuZ3RoIGNvZGUgd2FzIGNvbW1lbnRlZCAoYnJva2VuKS4gUmVzdG9yZWQKCXRoZSBjYXBhYmlsaXR5IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluaW5nIG5vbi1zZWxlY3RlZCBjaGFycyBvZiBhCglzZWxlY3Rpb24gYXJlYS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBQUklNQVJZU1VSRkFDRSBhdHRyaWJ1dGUgZnJvbSBiYWNrIGJ1ZmZlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSWYgYSBsaXN0dmlldyBpcyBjcmVhdGVkIHdpdGggTFZTX05PQ09MVU1ORUhFQURFUiB0aGVuIHdpbmUgY3JlYXRlcyB0aGUKCWhlYWRlciBsaWtlIG5vcm1hbCBidXQganVzdCBzZXRzIGl0IG5vdCB2aXNpYmxlLiBUaGlzIGZpeCBsYXlzIG91dAoJdGhvc2Ugc3VwcG9zZWRseSBub25leGlzdGVudCBoZWFkZXJzIHRvIHNpemUgMCwwLiBTbyB0aGF0IGV2ZW4gaWYgdGhleQoJYmVjb21lIHZpc2libGUgdGhleSBhcmUgbm90IGRyYXduLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHRoZSBkaXJlY3QgY2FsbCBpbnRvIGNvcmUgKERJQUxPR19Eb0RpYWxvZ0JveCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUluaXRpYWxpemUgdGhlIGJhY2stYnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgVlRhYmxlLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIHdpbmUuaW5pOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgb3B0aW9uIHRvIGdldCBkb3VibGUtYnVmZmVyZWQgZGVza3RvcAoJLSBpbXBsZW1lbnRlZCB3Z2xVc2VGb250Qml0bWFwc0EgYW5kIHdnbERlbGV0ZUNvbnRleHQKCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2R1bXByZXMuaCwgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgYW5pbWF0ZWQgY3Vyc29ycyBhbmQgaWNvbnMgcmVzb3VyY2UgdHlwZXMuCgktIEFkZGVkIHBhcnRpYWwgc3VwcG9ydCBmb3IgZm9udCByZXNvdXJjZXMgKHVzZXIgc3VwcGxpZWQgZm9udGRpciBpcwoJICByZXF1aXJlZCkuCgktIEFsbCByZXNvdXJjZXMgd2l0aCBpbmxpbmUgZGF0YSAoYSBsYSBSQ0RBVEEpIG5vdyBzdXBwb3J0IGxhbmd1YWdlLAoJICB2ZXJzaW9uIGFuZCBjaGFyYWN0ZXJpc3RpY3MgZGF0YS4KCS0gSW1wbGVtZW50ZWQgcmVzb3VyY2UgbmFtZSBkdXBsaWNhdGUgY2hlY2tzLiBJdCBpcyBub3cgYW4gZXJyb3IgaWYKCSAgdHdvIHJlc291cmNlcyBvZiB0aGUgc2FtZSB0eXBlIGhhdmUgdGhlIHNhbWUgbmFtZS4KCS0gQnVnZml4OiBMYW5ndWFnZSBwcm9wYWdhdGlvbiB3YXMgbm90IGNvcnJlY3Qgd2hlbiAucmVzIGZpbGVzIHdlcmUKCSAgZ2VuZXJhdGVkLgoJLSBCdWdmaXg6IFZFUlNJT05JTkZPIG5vdyBoYW5kbGVzIG1lbW9yeSBvcHRpb25zLgoJLSBCdWdmaXg6IHJlc291cmNlIG5hbWVzIGFuZCB0aGUgcmVzb3VyY2UgdHlwZSBtYXkgYmUgZXF1YWwgKGUuZy4gTUVOVQoJICBNRU5VIHsuLi59KS4gVGhpcyBzdXBwb3J0IHdhcyBtaXN0YWtpbmdseSBkZWxldGVkIGluIHRoZSB1cGdyYWRlIHRvCgkgIHRoZSBidWlsdGluIHByZXByb2Nlc3Nvci4KCSAgVGhlIHN0YW5kYWxvbmUgTEFOR1VBR0Ugc2V0dGluZyBiZWNhbWUgY29udGV4dCBzZW5zaXRpdmUgYXMgYSBjb25zZXF1ZW5jZQoJICBvZiB0aGlzLiBOb3cgaXQgKm11c3QqIGVuZCB3aXRoIGEgbmV3bGluZSAqYWZ0ZXIqIGJvdGggZXhwcmVzc2lvbnMgYW5kCgkgIG5vIG5ld2xpbmVzIGFyZSBhbGxvd2VkIHdpdGhpbiB0aGUgbGluZSAodGhlIHN0YXRlbWVudCBtdXN0IGZpdCBvbiBvbmUKCSAgbGluZSkuIFRoaXMgaXMgbm8gcHJhY3RpY2FsIHByb2JsZW0gdGhvdWdoLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU2VuZCByZWd1bGFyIG1lc3NhZ2VzIHRvIHN0ZG91dCBzbyB0aGF0IHRoZXkgYXJlIHNlcGFyYXRlIGZyb20KCXByb2dyZXNzIG1lc3NhZ2VzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZWdyZXNzaW9uIHRlc3RpbmcgdXNpbmcgQ1ZTLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gU21hbGwgZml4ZXMvdXBkYXRlcwoJLSBBZGQgc3VwcG9ydCBmb3IgdGhlIERQQ09OTkVDVElPTl9ESVJFQ1RQTEFZTE9CQlkgZmxhZwoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGJnOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBIGJpdCBvZiBkb2N1bWVudGF0aW9uIG9uIG5ldyBkZWJ1Z2dpbmcgZmVhdHVyZXMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogSmFtZXMgSnVyYW4gPGp1cmFuQGNzZS5wc3UuZWR1PgoJU2VhcmNoUGF0aEEgbmVlZHMgdG8gc2V0IHRoZSBsYXN0IGVycm9yIHRvIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIHdoZW4KCWl0IGRvZXMgbm90IGZpbmQgdGhlIGZpbGUuCgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJVXNlIFdBUk4oKSBpbnN0ZWFkIG9mIFRSQUNFKCkgaW4gRGVidWdPdXRwdXRBKCkuCgoJKiBtZW1vcnkvaGVhcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSGVhcEZyZWUgb24gYSBOVUxMIHB0ciBzaG91bGQgcmV0dXJuIFRSVUUuCgoyMDAwLTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglVcGRhdGUgbkl0ZW1XaWR0aCBpbiBMSVNUVklFV19TZXRJdGVtKCkgaWYgTFZTX0xJU1Qgb3IgTFZTX1NNQUxMSUNPTgoJbW9kZSBhbmQgaXRlbSB0ZXh0IGlzIHdpZGVyIHRoYW4gdGhlIGN1cnJlbnQgbkl0ZW1XaWR0aC4KCgkqIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT5VCglGaXhlZCBpbml0aWFsaXphdGlvbiBvZiBJTlNUQU5DRURBVEEgaW4gSW5pdFRhc2soKS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3RnT3BlblN0b3JhZ2UxNjogY29ycmVjdCBhcmd1bWVudHMgdG8gdGhlIENyZWF0ZUZpbGUgY2FsbC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRE9TRlNfRG9HZXRGdWxsUGF0aE5hbWU6IHRlcm1pbmF0ZSBzdHJpbmcgd2VoIGNhbGxlZCBsaWtlIC5cXGZpbGUKCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVwbGFjZSB0aGUgY2FsbHMgdG8gbWFsbG9jIGJ5IGNhbGxzIHRvIEhlYXBBbGxvYyBhbmQgZnJpZW5kcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVzIHRoZSBsaW5lIG9mIGdhcmJhZ2UgYXQgdGhlIGJvdHRvbSBvZiBpbWFnZXMgYW5kIHRoZSBmYWN0IHRoYXQKCXRoZSBidXR0b25zIGluIHRoZSBvcGVuIGRpYWxvZyBib3ggd2hlcmUgdG9vIHRhbGwuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTJjb252LnNwZWMsIGRsbHMvb2xlMzIvb2xlMnByb3guc3BlYywgZGxscy9vbGUzMi9vbGUydGhrLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9vbGUyY29udi5zcGVjLCBpZjE2MzIvb2xlMnByb3guc3BlYywgaWYxNjMyL29sZTJ0aGsuc3BlYywgZGxscy9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb3ZlZCBpZjE2MzIvb2xlMntjb252LHByb3gsdGhrfS5zcGVjIGludG8gZGxscy9vbGUzMi4KCjIwMDAtMDUtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZGNhcHMuaCwgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgcmVtYWluaW5nIERpcmVjdFggM0QzIDYmNyAzRCBpbnRlcmZhY2VzLgoJLSBBZGRlZCBkM2RjYXBzLmgsIGQzZHR5cGVzLmggYW5kIHJlYXJyYW5nZWQgY29udGVudHMgYWNjb3JkaW5nIHRvCgkgIERpcmVjdFggNyBoZWFkZXJzLgoJLSBGaXhlZCBkc291bmQuaCBpbmNsdWRlIGxpc3QgKGQzZC5oLT5kM2R0eXBlcy5oKS4KCgkqIHByb2dyYW1zL3JlZ2FwaS9SRUFETUU6CglKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglNaW5vciB1cGRhdGUuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV90ZXN0LgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUdldFJlbEFicyBmb3Igc29tZSByZWFzb24gdGFrZXMgMiBwYXJhbWV0ZXJzLCBldmVuIHRob3VnaCB0aGUgc2Vjb25kCglvbmUgaXMgaWdub3JlZCBhdCBsZWFzdCBvbiBXaW5kb3dzIE5UIDMuNTEgYWNjb3JkaW5nIHRvIE1hcmN1cyBNZWlzc25lci4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2hlcmkgU3RlZXZlcwoJVGhlIGVkaXQgaXMgbm93IGRldGVjdGVkIGNvcnJlY3RseSBpZiB0aGUgcGFyZW50IGlzIGEgY29tYm8gYm94LiBJdAoJd2Fzbid0IHdvcmtpbmcgd2hlbiB0aGUgY29tYm9ib3ggd2FzIHN1cGVyY2xhc3NlZC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0CglTeXN0ZW0gaWNvbnMgaW4gdGhlIHNtYWxsIGNhcHRpb24gYmFycyBhcmUgZGlzcGxheWVkIHdpdGggdGhlIHJpZ2h0IHNpemUuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX25vcm0sIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29wZW5nbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ29udmVydCBDKysgY29tbWVudHMgdG8gcmVndWxhciBDIGNvbW1lbnRzLgoKCSogZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIElEaXJlY3REcmF3U3VyZmFjZTo6U2V0UGFsZXR0ZSBzZXQgdGhlIHN1cmZhY2UncyBESUJTZWN0aW9uIGNvbG9yCgltYXAgdG8gcG9pbnQgdG8gdGhlIElEaXJlY3REcmF3UGFsZXR0ZSdzIG93biBkZXB0aCBjb252ZXJzaW9uIGNvbG9yIG1hcC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5pdGlhbGl6ZSBhbiBpZGVudGl0eSBtYXBwaW5nIGluIENyZWF0ZVBhbGV0dGUgaWYgbm8gZGVwdGggY29udmVyc2lvbgoJaXMgbmVjZXNzYXJ5LiBBbHNvIGZpeGVkIGEgd2FybmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFgxMURSVl9ESUJfTWFwQ29sb3IgbWFwIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvbG9yIGluZGV4IGlmIHRoZQoJWEltYWdlIHBpeGVsJ3MgcGh5c2ljYWwgY29sb3IgaXMgc3RpbGwgdGhlIHNhbWUuCgoyMDAwLTA1LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVc2UgdGhlIGNvcnJlY3QgZGlzcGxheSBmb3IgY2FjaGVkIG1ldHJpY3MgZmlsZSBuYW1lLgoJU3RvcmUgbWV0cmljcyBpbiBzcGVjaWZpZWQgY29uZmlnIGRpci4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCB3aW5lLmluaToKCU1ha2Ugc3VyZSBhbGwgV2luZSBwcm9jZXNzZXMgc2hhcmUgdGhlIHNhbWUgWCBkaXNwbGF5LgoJSW5oZXJpdCAtLW1hbmFnZWQgb3B0aW9uIGFjcm9zcyBwcm9jZXNzZXMuCglBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBkaXNwbGF5IGFuZCBtYW5hZ2VkIG1vZGUgaW4gY29uZmlnIGZpbGUuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgdW5zaWduZWQgaW50IGluc3RlYWQgb2YgdW5zaWduZWQgc2hvcnQgaW4gRGlyZWN0RHJhdwoJZGVwdGgtY29udmVyc2lvbiBjb2xvciBtYXAuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgY2FsbHMgdG8gU2V0Rm9jdXMgd2hlbiB0aGV5IGFyZSB1bm5lY2Vzc2FyeS4KCjIwMDAtMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglEYXZpZCBCbGFjayA8ZGJsYWNrQGJ0aW50ZXJuZXQuY29tPgoJSW1wbGVtZW50ZWQgVFZNX0VESVRMQUJFTEEsIHBsdXMgc29tZSBpbXByb3ZlbWVudHMgdG8gRW5kTGFiZWxFZGl0Tm93LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTW9yZSB2ZXJib3NlIGVycm9ycy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgYm9yZGVycyBvZiB3aW5kb3dzIHdoaWxlIGRyYWdnaW5nIG9yIHNpemluZyB0byBtYXRjaAoJVFdFQUtfV2luZUxvb2sgc2V0dGluZy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gYmVmb3JlIDxzeXMvbW1hbi5oPi4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZGRlbWwuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2RkZW1sLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9kZGVtbC5zcGVjLCBpZjE2MzIvb2xlMm5scy5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vdmVkIERERU1MIGludG8gZGxscy91c2VyLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHJlZ2lzdHJ5IHZhbHVlcyBsYXJnZXIgdGhhbiB0aGUgc2VydmVyIGJ1ZmZlci4KCVdoZW4gbG9hZGluZyBhIHJlZ2lzdHJ5IGZpbGUsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIG92ZXJsYXAgYmV0d2VlbgoJa2V5IG5hbWUgYW5kIGZpbGUgY29udGVudHMgYmFzZWQgb24gdGhlIGZpcnN0IGtleSBuYW1lLgoJUmVtb3ZlZCB2MSBzYXZpbmcgY29kZS4KCVNhdmUgVVNFUlwuRGVmYXVsdCBzZXBhcmF0ZWx5IGludG8gfi8ud2luZS91c2VyZGVmLnJlZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBESUJTZWN0aW9uIHN1cHBvcnQgZm9yIElEaXJlY3REcmF3U3VyZmFjZTo6R2V0REMuCgoJKiBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzZXQgZGVidWcgbWVzc2FnZXMgYWZ0ZXIgYSBUUkFDRV9PTiB0ZXN0CgktIHByZXZlbnQgY3Jhc2ggd2hlbiBtYWtpbmcgdGhlIE5VTEwgY29udGV4dCBjdXJyZW50CgoJKiBjb250cm9scy9tZW51LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJV2hlbiBuZXcgbWVudSBJZCBpcyBub3QgZm91bmQgb3IgaW5kZXggPiBuaXRlbXMsIGluc2VydCB0aGUgbmV3IG1lbnUKCWF0IGVuZCBvZiBjdXJyZW50IG1lbnUuCgoyMDAwLTA1LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgaW5jbHVkZS9kZHJhdy5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgYWJpbGl0eSB0byBjcmVhdGUgM0QzIGludGVyZmFjZXMgZm9yIFhsaWIKCS0gQ2hhbmdlZCBERF9PSyB0byBEM0RfT0sgaW4gc29tZSBwbGFjZXMgZm9yIGNvbnNpc3RlbmN5CgktIENsZWFuZWQgdXAgc29tZSBjb21waWxlciB3YXJuaW5ncyBwcmVzZW50IHdpdGhvdXQgREdBMgoJLSBDaGFuZ2VkIG9yZGVyIGZvciBEaXJlY3REcmF3RW51bWVyYXRlRXhBIHRvIGVudW1lcmF0ZSBhdCBsZWFzdAoJICB3aGF0IGFiaWxpdGllcyBhcmUga25vd24gcmF0aGVyIHRoYW4gYmFpbGluZyBvbiB1bnN1cHBvcnRlZCBmbGFncwoJLSBBZGRlZCBEaXJlY3REcmF3Q3JlYXRlRXggc3R1YgoKMjAwMC0wNS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEaXN0aW5ndWlzaCBSQURJT0NIRUNLIHN0eWxlIG1lbnUgaXRlbXMgZnJvbSBzdGFuZGFyZCBjaGVja21hcmsgbWVudQoJaXRlbXMuCgoJKiBjb250cm9scy9idXR0b24uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglMaWtlIHRoZSBBVVRPUkFESU9CVVRUT04sIHRoZSBwYXJlbnQgb2YgYSBSQURJT0JVVFRPTiBzdHlsZSBidXR0b24KCXNob3VsZCBiZSBzZW50IGEgQk5fQ0xJQ0tFRCB3aGVuIGl0IHJlY2VpdmVzIHRoZSBmb2N1cy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RnVsbFBhdGhuYW1lOiBhZGQgbWlzc2luZyB0ZXJtaW5hdGlvbiB0byB0aGUgc3RyaW5nLgoKCSogdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGJ5dGUgb3JkZXIgb24gU29sYXJpcyBhbmQgRnJlZUJTRC4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZV9nbC5oLCBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX2V4dCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9ub3JtLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmgsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgT3BlbkdMLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhYnNvbHV0ZSBwYXRoIHRvIHBpZGwgZ2VuZXJhdGlvbi4KCjIwMDAtMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywgd2luZG93cy9kcml2ZXIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBkZWJ1ZyBtZXNzYWdlcy4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgaW5jbHVkZS9yaWNoZWRpdC5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9vbGUyZGlzcC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1hZ2VobHAuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmljaGVkMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIENoZWNrIGZvciBtaXNzaW5nIG1vZHVsZXMgaW4gbW9kdWxlcy5kYXQuCgktIE5ldyBvcHRpb25zIC0tZGVidWctbWVzc2FnZXMgZm9yIGRlYnVnIG1lc3NhZ2UgY2hlY2tpbmcgKHR1cm5lZCBvZmYKCSAgYnkgZGVmYXVsdCkKCS0gRG8gbm90IGRpc2NhcmQgdGhlIGFyZ3VtZW50IG5hbWUgKHVzZSBpbiBkZWJ1ZyBtZXNzYWdlIGNoZWNraW5nKQoJLSBJbXByb3ZlZCBwYXJzaW5nCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUZpeGVkIGFzbSgpIGNvbnN0cmFpbnRzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgJXAgaW4gcHJpbnRmIChub3cgdXNpbmcgd3NwcmludGYgd2hpY2ggZG9lc24ndCBzdXBwb3J0IGl0KS4KCUFkZGVkIFRocmVhZElkIGFuZCBQcm9jZXNzSWQgaW50ZXJuYWwgdmFycy4KCUFsbG93IGF0IHN0YXJ0dXAgdG8gcGljayB1cCBhIHByb2Nlc3MgdG8gZGVidWcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZGl2aXNpb24gYnkgemVyby4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBxdWlya3MgKHJhbmdlIGlzIDMyIGJpdCwgcGFnZSB1cC9kbiBtaXNtYXRjaCBvbiBIWiB0cmFja2JhcnMpLgoKCSogd2luZG93cy9zY3JvbGwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTY3JvbGwgb2ZmLXNjcmVlbiBjb250cm9scyB3aGVuIHNjcm9sbCByZWN0YW5nbGUgaXMgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6CglLZW4gVGhvbWFzZXMgPGtlbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0YWIgY29udHJvbCBzdHlsZSBUQ1NfSE9UVFJBQ0sgKHRhYnMgYXJlIGhpZ2hsaWdodGVkIG9uCgltb3VzZS1vdmVyKS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSBiYWNrZ3JvdW5kIGZyb20gdGhlIG5ldyBpbWFnZSB3aGVuIGl0IGlzIGJlaW5nIHJlcGxhY2VkCgl3aXRoIGEgUmVwbGFjZUltYWdlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jOgoJQmVybmQgSGVyZCA8aW5mb0BoZXJkc29mdC5jb20+CglNYWtlIHN1cmUgaEluc3RhbmNlIGlzIGEgcHJvcGVyIGdsb2JhbCBoYW5kbGUgYW5kIG5vdCBhIHNlbGVjdG9yCgl2YWx1ZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBKZWFuLUNsYXVkZSBCYXRpc3RhCglQcmludERpYWxvZyBub3cgY3JlYXRlcyBhIERDIHdoZW4gcmVjZWl2aW5nIGEgUERfUkVUVVJOREMgZmxhZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCB0aGUgZHJhd2luZyBjb2RlIGFmdGVyIGEgbGFiZWwgdXBkYXRlLiBUaGVyZSB3ZXJlIHByb2JsZW1zIGlmCgl0aGUgbmV3IGxhYmVsIGlzIHNob3J0ZXIgdGhhdCB0aGUgb2xkIGxhYmVsIGZyYWdtZW50cyBvZiB0aGUgb2xkIGxhYmVsCgl3ZXJlIGxlZnQgZHJhd24uCgoJKiB3aW5kb3dzL3dpbi5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ2xlYXIgbWVudSBoYW5kbGUgYWZ0ZXIgZGVzdHJveWluZyBtZW51LgoKCSogY29udHJvbHMvbWVudS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJldmFsaWRhdGUgbWVudSBoYW5kbGUgaW4gbXQuaFRvcE1lbnUgYWZ0ZXIgRGlzcGF0Y2hNZXNzYWdlLgoKCSogd2luZG93cy9kaWFsb2cuYzogQmVybmQgSGVyZCA8aW5mb0BoZXJkc29mdC5jb20+CglQYXNzIENUTERBVEEgYXMgU0VHUFRSIGZvciAxNi1iaXQgcHJvZ3JhbXMuCgoJKiBkbGxzL3ZlcnNpb24vdmVyMTYuYzoKCUFsZXhhbmRlciBGcmluayA8QWxleGFuZGVyLkZyaW5rQFVuaS1NYWluei5ERT4KCVByZXZlbnQgcG9zc2libGUgTlVMTCBwb2ludGVyIGFjY2Vzcy4KCjIwMDAtMDUtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFdpbmUgd2FzIHBhc3NpbmcgdGhlIHdyb25nIGh3bmQgYXMgdGhlIG93bmVyIHdoZW4gcHJvY2Vzc2luZyBvd25lcgoJICBkcmF3biBtZW51YmFycy4KCS0gV2hlbiBkb2luZyBNRU5VX0NhbGNJdGVtU2l6ZSBmb3IgdGhlIG1lbnUgYmFyIHdlIHdlcmUgbm90IHByb3Blcmx5CgkgIHBhZGRpbmcgdGhlIHJldHVybmVkIHJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgdGhlIHVzZXIgdG8gY2FuY2VsIGxhYmVsIGVkaXRpbmcgd2l0aCBlc2MgYW5kIGNvbmZpcm0gd2l0aCByZXR1cm4uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJS2VuIFRob21hc2VzIDxrZW5AY29kZXdlYXZlcnMuY29tPgoJUmVzdG9yZSBhY2NpZGVudGFsbHkgdW5kb25lIGNoYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBXaW5lIHdhcyBub3QgcHJvcGVybHkgcmVwb3J0aW5nIGJhY2sgdGhlIGVkaXRlZCBsYWJlbCB0byB0aGUKCSAgYXBwbGljYXRpb24gaW4gYSB0cmVldmlldyB3aGVuIHRoZSBsYWJlbCBpcyBhIGNhbGxiYWNrLgoJLSBCZWNhdXNlIHdpbmRvd3MgYXBwbGljYXRpb25zIGFzc3VtZSB0aGV5IGdldCBhIG5ldyBlZGl0IGNvbnRyb2wKCSAgZXZlcnkgdGltZSB0aGV5IG9mdGVuIHN1YmNsYXNzIHRoYXQgZWRpdCBib3ggd2lsbHktbmlsbHkgYW5kIGRvIG5vdAoJICBjbGVhbiB1cC4gU28gaXQgaXMgbmVjZXNzYXJ5IHRvIGFjdHVhbGx5IGdpdmUgdGhlbSBhIG5ldyBlZGl0IGNvbnRyb2wKCSAgZWFjaCB0aW1lLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBDbGVhbmVkIHVwIHNvbWUgb2YgdGhlIGRyYXdpbmcgY29kZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aAoJICBhdm9pZGluZyB0cnlpbmcgdG8gZHJhdyBpbnZhbGlkIGJpdG1hcHMuCgktIEF2b2lkIGRpcmVjdGx5IGNhbGxpbmcgZHJhd2luZyBmdW5jdGlvbnMgaW5zdGVhZCBpbnZhbGlkYXRpbmcgcmVjdHMKCSAgYW5kIHJlbHlpbmcgb24gV01fUEFJTlQuCgktIEZvciB0aGUgZHJvcGRvd24gZXZlbnQgY2hlY2sgdGhlIGJ1dHRvbiBzdHlsZSBhcyBvcHBvc2VkIHRvIHRoZQoJICB0b29sYmFyIHN0eWxlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSBpbnRlcm5hbCBidWZmZXJzIHNpemUgbXVsdGlwbGUgb2YgNC4KCgkqIHdpbmRvd3MvbWRpLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVmVyaWZ5IHRoZSBtZW51IGhhbmRsZSBpcyBub24temVybyBwcmlvciB0byB1c2UuCgoJKiBjb250cm9scy9tZW51LmM6IEtlbiBUaG9tYXNlcyA8a2VuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRvIGRpc3BsYXkgcG9wdXAtbWVudSBhcnJvdyBvbiBvd25lci1kcmF3biBwb3B1cCBtZW51cy4KCUZpeGVkIHBvc2l0aW9uaW5nIG9mIHN1Ym1lbnVzIHJlbGF0aXZlIHRvIHBhcmVudCBtZW51cy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZ3JhcGhpY3MvdmdhLmMsIG1pc2Mvc3lzdGVtLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jLCB3aW5kb3dzL3RpbWVyLmM6CglTcGVjaWZ5IHRoZSBzZXJ2aWNlIHRocmVhZCB0aW1lcnMgaW4gbXMgaW5zdGVhZCBvZiB1cy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL21haW4uYzoKCVJlc2VydmUgc3BhY2UgZm9yIHRoZSBQRSBoZWFkZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSAuc28gZmlsZS4KCVN0b3JlIHRoZSBleHBvcnQgdGFibGUgaW5zaWRlIHRoZSBkYXRhIHNlY3Rpb24gc28gdGhhdCBzZWN0aW9ucyBjYW4gYmUKCXByb3Blcmx5IGFsaWduZWQuCglCdWlsZCB0aGUgcmVsYXkgZnVuY3Rpb24gdGFibGUgZGlyZWN0bHkgaW4gdGhlIC5zcGVjLmMgZmlsZS4KCU1vdmVkIHJlbGF5IGRlYnVnZ2luZyBmdW5jdGlvbnMgdG8gcmVsYXkzODYuYy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglQcm90ZWN0IGFnYWluc3QgdXNlIG9mIGNvbWN0bDMyIHByaXZhdGUgY29udHJvbCBtZW1vcnkgYWZ0ZXIgaXQgaGFzCgliZWVuIGZyZWVkLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTb21lIHByb2dyYW1zIHN3aXRjaCB0aGVpciBzdGF0dXMgYmFyIGJhY2sgYW5kIGZvcnRoIGZyb20gc2ltcGxlIG1vZGUKCXdoaWxlIHJ1bm5pbmcuIFRoaXMgZml4IGNvcnJlY3RzIGRyYXdpbmcgYW5kIHRleHQgc2V0dGluZyBwcm9ibGVtcyB0aGF0CglyZXN1bHQgZnJvbSB0aGlzIGJlaGF2aW9yLgoKMjAwMC0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUZpeGVkIEhlYXBBbGxvYyhIRUFQX1pFUk9fTUVNT1JZKSB0byBjbGVhciB0aGUgd2hvbGUgYWxsb2NhdGVkIGJsb2NrLgoJVmFyaW91cyBvcHRpbWl6YXRpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgV0FWRUhEUiBub3RpZmljYXRpb24gaGV1cmlzdGljLgoJQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgbG9vcHMgaW4gV0FWRUhEUnMuCglGaXhlZCBpc3N1ZXMgd2hlbiBtaXhpbmcgb3BlbiBhbmQgZ2V0Q2FwcyBjYWxscy4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEJ1Z2ZpeDogQ29ycmVjdGVkIGEgU0VHViBpbiB0aGUgcmF3ZGF0YSBoYW5kbGluZy4gTWlzdGFraW5nbHkgdG9vayB0aGUKCSAgYWRkcmVzcyBvZiBhIHBvaW50ZXIgaW5zdGVhZCBvZiBpdHMgdmFsdWUuIFRoaXMgcHJvYmFibHkgc2xpcHBlZCBpbgoJICBkdXJpbmcgdGhlIG1lcmdlIG9mIG15IHRyZWUgaW50byB0aGUgd2luZXRyZWUuCgkgIExlc3NvbiBsZWFybmVkOiBhbHdheXMgZG91YmxlIGNoZWNrLgoJLSBWZXJpZmllZCBtb3N0IHJlc291cmNlcyBzbyB0aGF0IHdpbjE2IGNvbXBpbGUgYWxzbyBnZW5lcmF0ZXMgY29ycmVjdAoJICBvdXRwdXQgZm9yIHJldmVyc2VkIGVuZGlhbi4KCS0gSW1wbGVtZW50ZWQgYnl0ZS1vcmRlcmluZyBmb3IgcmVzb3VyY2VzLiBBbGwgcmVzb3VyY2VzIGNhbiBiZSBmb3JjZWQKCSAgdG8gYmUgbGl0dGxlLSwgYmlnLSBvciBuYXRpdmUgZW5kaWFuIHdpdGggY29tbWFuZC1saW5lIG9wdGlvbiAtQi4KCS0gUmVhZGluZyByZXNvdXJjZXMgZnJvbSAucmVzLWZpbGVzIGFyZSBvbmx5IGFjY2VwdGVkIGluIG5hdGl2ZSBieXRlLQoJICBvcmRlcmluZyBzbyB0aGF0IG5vIGFkZGl0aW9uYWwgc2VtYW50aWMgYW5hbHlzaXMgaXMgcmVxdWlyZWQuCgktIFJlc291cmNlIGRpcmVjdG9yeSBpcyBzdGlsbCB3cml0dGVuIGluIG5hdGl2ZS1vbmx5IGZvcm1hdCwgaW5jbHVkaW5nCgkgIHRoZSBzdHJpbmdzLgoJLSBXcmMgaXMgbm93IGluc3RhbGxlZCB0aHJvdWdoIHRoZSBtYWtlZmlsZSB3aXRoICdtYWtlIGluc3RhbGwnIGFuZCBhbHNvCgkgIHVuaW5zdGFsbGVkIHdpdGggJ21ha2UgdW5pbnN0YWxsJy4KCS0gV3JvdGUgYSBtYW4tcGFnZSBmb3IgYmV0dGVyIHJlZmVyZW5jZS4gVGhlIG1hbnBhZ2UgYWxzbyBnZXRzIGluc3RhbGxlZAoJICBhbmQgdW5pbnN0YWxsZWQuCgktIENsZWFuZWQgdXAgdGhlIG5hbWVzcGFjZSBhIGJpdCBieSBtb3JlIGFncmVzc2l2ZSB1c2Ugb2Ygc3RhdGljLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgYWJpbGl0eSB0byB1c2UgbXVsdGlsaW5lIHRhYiBjb250cm9scyB0byB3aW5lLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU51bWJlciBvZiBzdXJmYWNlIExvY2svVW5sb2NrcyBtdXN0IE5PVCBtYXRjaCwgc28gZG8gTk9UIHVzZSBpdCBmb3IKCXJlZmVyZW5jZSBjb3VudGluZy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVwZGF0ZSBmb3IgbmV3IFdpbmUgZmVhdHVyZXM7IHVzZSB0dHlkcnYgaW5zdGVhZCBvZiB4MTFkcnYgd2hlbgoJcnVubmluZyByZWdhcGksIGFuZCBzZXQgY29ycmVjdCB3aW5lZGJnIHBhdGggaW4gdGhlIHJlZ2lzdHJ5LgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBqdW1wX2FsaWFzIGZvciBub24tUElDLCBhbmQgZGlzYWJsZWQgaXQgZm9yIFBJQywgc2luY2UgaXQKCWRvZXNuJ3Qgd29yayBmb3IgUElDIHJpZ2h0IG5vdy4gVGhpcyBmaXhlcyBjdXJyZW50IGNyYXNoaW5nIHNpZ2FjdGlvbgoJY2FsbHMuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgeCAvcyBjb21tYW5kLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzb21lIHJlZyB0ZW1wIGZpbGUgY2x1dHRlciBjaGVjayAobW9yZSB0aGFuIDEwMCB0ZW1wIGZpbGVzIGluCgl+Ly53aW5lKS4KCjIwMDAtMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldEltYWdlQml0c184OiBhZGRlZCAtPjE1IGNvbnZlcnNpb24gaW4gb3B0aW1pemVkIGFzc2VtYmxlci4KCgkqIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvYW5zaV9nZW4uaCwgZGxscy9yaWNoZWRpdC9hbnNpX3N5bS5oLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaCwgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5oLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzJfbWFpbi5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvcmljaGVkaXQvcnRmMnRleHQuaCwgZGxscy9yaWNoZWRpdC9zdGRjaGFybmFtZXMuaCwgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jLCBkbGxzL3JpY2hlZGl0L3RleHRfbWFwLmgsIGluY2x1ZGUvcmljaGVkaXQuaDoKCUplYW4tQ2xhdWRlIEJhdGlzdGEKCVdyYXBzIHNvbWUgUmljaEVkaXQgY29udHJvbCBmdW5jdGlvbmFsaXR5IG9uIGFuIEVkaXQgY29udHJvbC4gSXQgdXNlcwoJYSBmcmVlIGltcGxlbWVudGF0aW9uIG9mIGFuIFJURiBwYXJzZXIgd3JpdHRlbiBieSBQYXVsIER1Qm9pcwoJaHR0cDovL3d3dy5wcmltYXRlLndpc2MuZWR1L3NvZnR3YXJlL1JURi8gd2hpY2ggSSBtb2RpZmllZCBhIGJpdCB0bwoJd29yayB3aXRoIHRoZSBjb250cm9sLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbyBub3Qgc2VuZCBXTV9TSVpJTkcgdG8gMTYtYml0IHdpbmRvd3MuCgoJKiBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglDbGVhbmVkIHVwIGxvY2FsIGhlYXAgaW5pdGlhbGlzYXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZG93cy9kcml2ZXIuYzoKCU1vdmVkIExvYWQvRnJlZUxpYnJhcnkxNiBkZWZpbml0aW9uIHRvIHdpbmJhc2UxNi5oLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIG9sZS9vbGUybmxzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU2VwYXJhdGUgT0xFMk5MUyBvdXQgb2YgS0VSTkVMLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBDaGVjayBmb3IgbWlzc2luZyBtb2R1bGVzIGluIG1vZHVsZXMuZGF0LgoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgKE1hY2FkYW1pYW4vQ29yZWwpCglUb3AtZG93biBpbWFnZXMgaGF2ZSBhIG5lZ2F0aXZlIGJpSGVpZ2h0LCB0aGUgc2NhbmxpbmVzIG9mIHRoZXNlcwoJaW1hZ2VzIHdlcmUgaW52ZXJ0ZWQgaW4gWDExRFJWX0RJQl9HZXRJbWFnZUJpdHNfeHguIFRvIHByZXZlbnQgdGhpcyBJCglzaW1wbHkgY2hhbmdlZCB0aGUgc2lnbiBvZiBsaW5lcywgdGhlIHNjYW5saW5lcyB3ZXJlIGNvcnJlY3RseSBoYW5kbGVkCglhZnRlcndhcmRzCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbGQgdmVyc2lvbnMgb2YgZ2xpYmMgbWlnaHQgbm90IGhhdmUgU1ROX1VOREVGIGRlZmluZWQuCgoJKiBmaWxlcy9maWxlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV2ZXJ0IHRoZSB0ZXN0IGZvciBWaXJ0dWFsX0hhbmRsZUZhdWx0IGluIFJlYWRGaWxlL1dyaXRlRmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCB0aGUgaXRlbUlEIG1lbWJlciBvZiB0aGUgRFJBV0lURU1TVFJVQ1QgdG8gdGhlIG51bWJlciBvZiB0aGUKCXN0YXR1cyBwYXJ0IHBhaW50ZWQuCgoJKiB3aW5kb3dzL21kaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFsd2F5cyBjYWxscyBTZXRNZW51IGluIE1ESVNldE1lbnUuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU21hbGwgZGVidWcgY2hhbm5lbCBjbGVhbnVwLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIHNjcm9sbGluZyBidWcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgTGlzdFZpZXdfU2V0SG92ZXJUaW1lKCksIExpc3RWaWV3X0dldEhvdmVyVGltZSgpLCBpbml0aWFsCglzdXBwb3J0IGZvciB0aGUgTFZTX0VYX1RSQUNLU0VMRUNUIGZsYWcuICBBZGRlZCBjb2RlIHRvIGRlbGV0ZSBpdGVtcwoJaW4gTElTVFZJRVdfU2V0SXRlbUNvdW50KCkuCgoyMDAwLTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgV01fU0laSU5HIG1lc3NhZ2Ugc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3BhdGguYzogUm9iIEZhcm51bSA8cm9iZkB0d2ludXguY29tPgoJUmVtb3ZlZCB3YXJuaW5ncyBmcm9tIGZyZWVpbmcgcGF0aCBpbiBEZWxldGVEQy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBidWcgd2l0aCB0aGUgcHJvY2Vzc2luZyBvZiBIaXRUZXN0LgoKCSogY29udHJvbHMvZWRpdC5jOiBTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBeQywgXlYgYW5kIF5YIGluIGFuIGVkaXQgY29udHJvbCBwcm9wZXJseS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0cmlwIHRoZSAkJCRQUk9UTy5ISVYgYml0IGZyb20gd2luMmsgU1lTVEVNIGFuZCBTT0ZUV0FSRSBoaXZlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIERDIGxlYWsuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSWYgd2UgZG8gbm90IGZpbmQgYSByZXNvdXJjZSBmb3IgYm90aCAocHJpbWFyeSBsYW5nfHN1YiBsYW5nKSwgd2UgdHJ5CglqdXN0IChwcmltYXJ5IGxhbmcpIGJlZm9yZSB1c2luZyB0aGUgZGVmYXVsdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJV29ya2VkIGFyb3VuZCBzb21lIHRvb2x0aXBzIGhpZGUgcHJvYmxlbXMgYnkgY2hlY2tpbmcgdGhlIGN1cnJlbnQgdG9vbHRpcC4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBjb25maWd1cmF0aW9uIGhpbnQgZm9yIHRoZSBDRC1ST00gInVuaGlkZSIgb3B0aW9uLgoKCSogb2xlL29sZTJubHMuYzoKCUhlbm5pbmcgSG9mZm1hbm4gKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJSW1wbGVtZW50ZWQgU2V0TG9jYWxlSW5mbygpLiBJdCByZXF1aXJlZCBhIGNoYW5nZSB0byBHZXRMb2NhbGVJbmZvKCkKCWFzIHdlbGwsIGJlY2F1c2UgR2V0TG9jYWxlSW5mbygpIGhhcyB0byBnZXQgYW55IHZhbHVlcyBzYXZlZCBieQoJU2V0TG9jYWxlSW5mbygpIGluIHRoZSByZWdpc3RyeS4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWZmZXIgb3ZlcmZsb3dzLgoJTWFkZSBzdGFiIHBhcnNpbmcgbW9yZSByb2J1c3QgKG5vdyBpZ25vcmVzIEMrKyBzdGFicykuCglEaXNwbGF5IGNvcnJlY3QgYmFja3RyYWNlIGF0IGZpcnN0IHdoZW4gaW52b2tlZCBvbiB1bmhhbmRsZWQgZXhjZXB0aW9uLgoJTG9hZHMgc3RhYnMgZnJvbSAuc28gZmlsZXMgd2hlbiB0aG9zZSBhcmUgbG9hZGVkLgoKMjAwMC0wNS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmg6IEdlbmVyYXRlZCBhZ2Fpbi4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglQRV9Mb2FkSW1hZ2U6IHJlbW92ZWQgdmVyc2lvbiBwYXJhbWV0ZXIsIHNldCBsYXN0IGVycm9yIGNvcnJlY3RseS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaDoKCVN0b3JlIHByb2Nlc3MgZmlsZSBuYW1lIGluIHN0YXJ0dXAgaW5mby4KCUZpeGVkIGV4ZV9maWxlIGhhbmRsaW5nLgoKCSogZGxscy9NYWtlZmlsZS5pbjogRml4ZWQgdHlwby4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMl9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMgZm9yIHJpY2hlZDMyLmRsbC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2FsbCBYT3BlbklNIG9uIHRoZSBsYXJnZSBzdGFjay4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJQmFuZyBKdW4tWW91bmcgPGJhbmdqeUBkcmVhbXdpei5jb20+CglGcmVlQlNEIDMuNCBjb21waWxlIGZpeC4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNlcnZlci9jb25zb2xlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUZpeGVkIENPT1JEIHN0cnVjdHVyZSBkZWZpbml0aW9uLgoJRml4ZWQgR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplIHRvIG5vdCByZXR1cm4gYSBzdHJ1Y3R1cmUgd2hlbgoJY2FsbGVkIGZyb20gdGhlIFdpbmRvdyBiaW5hcnkuCgoJKiBzZXJ2ZXIvb2JqZWN0LmM6IFNtYWxsIG9wdGltaXphdGlvbi4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzogRml4ZWQgZGVmYXVsdCB0aHJlYWQgc3RhY2sgc2l6ZS4KCgkqIG9iamVjdHMvdGV4dC5jOiBGaXhlZCBEcmF3VGV4dFcgbGVuZ3RoIGhhbmRsaW5nLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBhc3NlcnRpb24gd2hlbiB0aGVyZSBpcyBubyBzb3VyY2Ugc3VyZmFjZS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIERvc0RhdGVUaW1lVG9WYXJpYW50VGltZSBwcm90b3R5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTWFwIFN0ckNockEgdG8gc3RyY2hyLiAgRml4IFN0ckNoclcgYXJnIGxpc3QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIEhXTkRfTUVTU0FHRS4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWxsb3cgSVNlcXVlbnRpYWxTdHJlYW1fV3JpdGUgdG8gd29yayBpZiBhY2Nlc3MgbW9kZSBpcyBTVEdNX1JFQURXUklURS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglNbWFwIGRvZXMgbm90IGZhaWwgb24gemVyby1sZW5ndGggZmlsZXMuCgoyMDAwLTA1LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVVzZSBleGNlcHRpb24gaGFuZGxpbmcgdG8gaW1wbGVtZW50IHRoZSBJc0JhZCogZnVuY3Rpb25zLgoJUmVtb3ZlZCAvcHJvYy9zZWxmL21hcHMgcGFyc2luZyBhcyBpdCBpcyBub3QgdmVyeSB1c2VmdWwgd2l0aCAuc28gbGlicy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJU2V0dXAgdGhlIGluaXRpYWwgdGhyZWFkICVmcyBmcm9tIGEgY29uc3RydWN0b3IuCgoJKiBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy94MTEuYywgaW5jbHVkZS93aW5udC5oOgoJQWRkZWQgREVDTF9HTE9CQUxfQ09OU1RSVUNUT1IgbWFjcm8uCgoJKiByZXNvdXJjZXMvdXNlcjMyLnJjLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjLy5jdnNpZ25vcmUsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvcHB5LnksIHRvb2xzL3dyYy9wcmVwcm9jLmMsIHRvb2xzL3dyYy9wcmVwcm9jLmgsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgZGxscy9kaXNwbGF5L2Rpc3AucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBhIG5ldyBwcmVwcm9jZXNzb3IgdGhhdCBpcyAobmVhcmx5KSBBTlNJLUMgY29tcGxpYW50LiBUaGUKCSAgb2xkIHBhcnNlciBoYXMgYmVlbiBzdHJpcHBlZCBmcm9tIHRoZSBvbGQgcHJlcHJvY2Vzc29yLWNvZGUgd2hpY2gKCSAgY2xlYW5lZCB1cCBib3RoIHJlc291cmNlLXNjYW5uZXIgYW5kIC1wYXJzZXIuCgktIFN0YW5kYXJkIGRlZmluZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgKHNlZSBSRUFETUUud3JjKQoJLSBCb3RoIHByZXByb2Nlc3Nvci0gYW5kIHJlc291cmNlLXNjYW5uZXIgaGF2ZSBiZWVuIG9wdGltaXplZCBzbGlnaHRseQoJICBzbyB0aGF0IG5vIGJhY2tpbmcgdXAgaXMgcmVxdWlyZWQgKG9uZSBjaGFyIGxvb2thaGVhZCBpcyBlbm91Z2gpLgoJLSBGaWxlbmFtZS1zY2FubmluZyBoYXMgYmVlbiBjbGVhbmVkIHVwLCB0aG91Z2ggbm90IHBlcmZlY3QgeWV0LgoJLSBVc2VyLXR5cGUgcmVzb3VyY2VzIGFyZSBjb21wYXRpYmxlIG5vdy4KCS0gTGluZS1jb250aW51YXRpb24gaW4gc3RyaW5ncyBpcyBjb3JyZWN0ZWQgc28gdGhhdCBpdCBkb2VzIG5vdAoJICBpbnRyb2R1Y2UgYSBuZXdsaW5lIGluIHRoZSBvdXRwdXQuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9xdWV1ZS5jLCBsb2FkZXIvbW9kdWxlLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21haW4uYzoKCVJld3JvdGUgVW5peCBwcm9jZXNzIGxhdW5jaGluZyB0byBhbGxvdyBwYXNzaW5nIHN0YXJ0dXAgaW5mb3JtYXRpb24gdG8KCVdpbmVsaWIgYXBwcy4gSW1wcm92ZWQgaGFuZGxpbmcgb2YgZXhlY3ZlKCkgZmFpbHVyZXMuCgoJKiBmaWxlcy9maWxlLmM6IEFkZGVkIEVOT0VYRUMgZXJyb3IgY29kZS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IEFkZGVkIGF0Zm9yayBzdXBwb3J0LgoKCSogY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhMl9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGNvbmZpZ3VyZToKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBER0EyIGRyaXZlciB0byBEaXJlY3REcmF3LgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ09NRExHMzJfRGxsRW50cnlQb2ludCxDT01ETEczMl9TZXRDb21tRGxnRXh0ZW5kZWRFcnJvcjogZGVsYXkKCWFsbG9jYXRpb24gb2YgVGxzIGZvciBDb21tRGxnRXh0ZW5kZWRFcnJvciB1bnRpbCBpdCBpcyBuZWVkZWQuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ3Ygd2hlbiBkZWJ1Z2dlciByZWdpc3RyeSBrZXkgZG9lc24ndCBleGlzdC4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVXNlIDxzdGRsaWIuaD4gaW5zdGVhZCBvZiB0aGUgZGVwcmVjYXRlZCBhbmQgbm9uLXBvcnRhYmxlIDxtYWxsb2MuaD4uCgoyMDAwLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAwNDMwLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVgxMURSVl9TZXRGb2N1czogcmVhbGx5IGRvbid0IG1lc3Mgd2l0aCBmb2N1cyBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBIRUFQX3hhbGxvYy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gRW5oYW5jZWQgaW50ZXJuYWwgdmFyaWFibGVzIGZyYW1ld29yayAoaW5jbHVkaW5nIHJlYWQvc2F2ZSB0bwoJICByZWdpc3RyeSBhbmQgdHlwaW5nKQoJLSBGaW5hbGl6ZWQgdXNlIG9mIFdpbmRvd3MnIENvbnNvbGUgSS9PIGludGVyZmFjZSAoaW5zdGVhZCBvZiBVbml4IHN0ZAoJICBzdHJlYW1zKQoJLSBOb3cgaGFuZGxpbmcgcmVnaXN0ZXJzIGFzIGludGVybmFsIHZhcmlhYmxlcyAodGhleSBhcmUgbm8gbG9uZ2VyCgkgIHNlZW4gYXMgYSBzcGVjaWZpYyB0eXBlKQoKCSogd2luMzIvZXhjZXB0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW5zdXJlIHdlIGFsd2F5cyB0cnkgdG8gbGF1bmNoIGEgZGVidWdnZXIuCgoJKiByZWxheTMyL3dvd3RodW5rLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgVGhyZWFkIHBzZXVkbyBoYW5kbGUgYW5kIG5vdCBUaHJlYWQgSWQgYXMgYXJndW1lbnQgZm9yIHRoZSBjYWxsIHRvCglHZXRUaHJlYWRTZWxlY3RvckVudHJ5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVgxMURSVl9TZXRGb2N1czogcmVhbGx5IGRvbid0IG1lc3Mgd2l0aCBmb2N1cyBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBIRUFQX3hhbGxvYy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gRW5oYW5jZWQgaW50ZXJuYWwgdmFyaWFibGVzIGZyYW1ld29yayAoaW5jbHVkaW5nIHJlYWQvc2F2ZSB0bwoJICByZWdpc3RyeSBhbmQgdHlwaW5nKQoJLSBGaW5hbGl6ZWQgdXNlIG9mIFdpbmRvd3MnIENvbnNvbGUgSS9PIGludGVyZmFjZSAoaW5zdGVhZCBvZiBVbml4IHN0ZAoJICBzdHJlYW1zKQoJLSBOb3cgaGFuZGxpbmcgcmVnaXN0ZXJzIGFzIGludGVybmFsIHZhcmlhYmxlcyAodGhleSBhcmUgbm8gbG9uZ2VyCgkgIHNlZW4gYXMgYSBzcGVjaWZpYyB0eXBlKQoKCSogd2luMzIvZXhjZXB0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW5zdXJlIHdlIGFsd2F5cyB0cnkgdG8gbGF1bmNoIGEgZGVidWdnZXIuCgoJKiByZWxheTMyL3dvd3RodW5rLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgVGhyZWFkIHBzZXVkbyBoYW5kbGUgYW5kIG5vdCBUaHJlYWQgSWQgYXMgYXJndW1lbnQgZm9yIHRoZSBjYWxsIHRvCglHZXRUaHJlYWRTZWxlY3RvckVudHJ5LgoKMjAwMC0wNC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQ2xlYXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgcGFnZSB3aGVuIG1hcHBpbmcgYSBzZWN0aW9uIHdob3NlIHNpemUgb24KCWRpc2sgaXMgbm90IGEgZnVsbCBwYWdlIG11bHRpcGxlLgoJVGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCB0aGUgVmlydHVhbEZyZWUgY2FsbCBpbiBQRV9VbmxvYWRMaWJyYXJ5LgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYywgaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgdGhyZWFkLXNhZmV0eSBwcm90ZWN0aW9uIHRvIFhMaXN0UGl4bWFwRm9ybWF0cwoJLSBtb3ZlZCBwaXhtYXAgLyBpbWFnZSBmb3JtYXQgbWF0Y2hpbmcgRVJScyB0byBXQVJOcwoKCSogd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplIHByb3RvdHlwZS4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRnJlZUJTRCBjb21waWxlIGZpeC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgRElCX0NyZWF0ZURJQlNlY3Rpb24gd2l0aCBleHRyYSBwYXJhbWV0ZXIgb3ZyX3BpdGNoLCBhZGRlZAoJb3ZyX3BpdGNoIHRvIHBDcmVhdGVESUJTZWN0aW9uIGluIERDX0ZVTkNTLiBJZiBvdnJfcGl0Y2ggaXMgbm9uemVybywKCWl0IGlzIGEgcGl0Y2ggb3ZlcnJpZGUgKHNwZWNpZmllcyBieXRlcyBwZXIgbGluZSksIGFuZCB0ZWxscyB0byB0cmVhdAoJdGhlIG9mZnNldCBwYXJhbWV0ZXIgYXMgYW4gYWxyZWFkeS1tYXBwZWQgdmlydHVhbCBtZW1vcnkgYWRkcmVzcyAoaWYKCXRoZSBzZWN0aW9uIHBhcmFtZXRlciBpcyB6ZXJvKS4gRml4ZWQgYSBESUIgc3RhdHVzIGluaXQgYnVnIGluCgljcmVhdGluZyBESUIgc2VjdGlvbnMgZnJvbSBmaWxlIG1hcHBpbmdzIChpZiBjcmVhdGVkIGZyb20gbWFwcGluZywgdGhlCglESUIgaXMgKm5vdCogcmVhbGx5IEluU3luYykuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkIFdpbmUtaW50ZXJuYWwgYWxsb2NhdGlvbiB0eXBlIE1FTV9TWVNURU0gZm9yIFZpcnR1YWxBbGxvYyB0bwoJcmVnaXN0ZXIgZXh0ZXJuYWwgbWFwcGluZ3MgKGxpa2UgdmlkZW8gZnJhbWUgYnVmZmVycykuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9wdGhyZWFkLmMsIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgbGliYydzIHB0aHJlYWQgY29uZmlndXJhdGlvbiBkZXRlY3Rpb24uCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIG1zZG9zL2Rvc2FzcGkuYywgd2luZG93cy9tdWx0aW1vbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBjb21waWxhdGlvbiB3YXJuaW5ncy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBtaXNjL2NvbW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUKCS0gTWlub3IgYnVnIGZpeGVzLgoJLSBBZGRlZCBuZXcgb3B0aW9uIC0tY3Jvc3MtY2FsbC11bmljb2RlLWFzY2lpIGZvciBjaGVja2luZyBpbGxlZ2FsCgkgIFVuaWNvZGUgdG8gQVNDSUkgY2FsbHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCAnLS1lbmFibGUtb3BlbmdsJyBmbGFnIHRvIGJ5cGFzcyB0aGUgdGhyZWFkLXNhZmV0eSBjaGVjay4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgc29tZSBIRUFQX3hhbGxvYyBjYWxscy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyB3aGVuIGZpbGUgZG9lc24ndCBleGlzdCBpbiBNQ0lfT1BFTiBoYW5kbGluZy4KCVJlZHVjZWQgdGltZSBzcGVudCB3aXRoIGNyaXQgc2VjdCBsb2NrZWQuCgoJKiB0b29scy9idWlsZC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFyZ3YgaGFuZGxpbmcgZm9yIGN1aWV4ZSB3aW5lbGliIHByb2dyYW1zLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHB0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wIGFuZCBwdGhyZWFkX2F0Zm9yayBmaXhtZXMgbGVzcwoJb2J0cnVzaXZlLgoKCSogd2luZG93cy93aW5oZWxwLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglXaW5IZWxwIG11c3QgYWNjZXB0IGEgTlVMTCBwb2ludGVyIHRvIHRoZSBoZWxwIGtleSBzdHJpbmcuCgoyMDAwLTA0LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBjaGVjayBmb3IgbWluaW11bSBidWZmZXIgbGVuZ3RoLgoJLSBDb3JyZWN0IGNhc2VzIHdoZXJlIFNob3dXaW5kb3cgaXMgZG9uZS9ub3QgZG9uZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PiwgSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBUTUVfUVVFUlkgYW5kIFRNRV9IT1ZFUiBmbGFncyBpbiBfVHJhY2tNb3VzZUV2ZW50IGFuZAoJVHJhY2tNb3VzZUV2ZW50UHJvYy4gIEFkZGVkIGNvZGUgdG8gYWxsb3cgYWRkaXRpb24vY2FuY2VsYXRpb24gb2YKCXRyYWNraW5nIGZsYWdzIG9uIGV4aXN0aW5nIGVudHJpZXMgcmF0aGVyIHRoYW4gY3JlYXRlIGV4dHJhIGVudHJpZXMuCglGaXhlZCB0aW1lci4gIEFkZGVkIGNoZWNrIHRvIF9UcmFja01vdXNlRXZlbnQgdG8gc3RvcCB0aW1lciBpZiB0aGUKCXRyYWNraW5nIGxpc3QgaXMgZW1wdHkuICBGaXhlZCBUTUVfQ0FOQ0VMLiAgRml4ZWQgVE1FX0xFQVZFL1RNRV9IT1ZFUgoJd2hlbiBod25kVHJhY2sgaXNuJ3QgdGhlIGN1cnJlbnQgaHduZC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRE9TRlNfRG9HZXRGdWxsUGF0aE5hbWU6IHJld3JpdGUgdG8gcmV0dXJuIHJlc3VsdHMgbGlrZSBPU1IyLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4sIFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBtZW1vcnkgbWFwcGluZyBvZiA0ayBhbGlnbmVkIFBFIGJpbmFyaWVzLiAgVGhpcyBjYW4KCXNwZWVkIHVwIGxvYWQgdGltZXMgc2lnbmlmaWNhbnRseSBmb3Igc29tZSBhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb21wbGV0ZSBjbGVhbnVwLCBidWdmaXhlcy4KCU5ldzogUGF0aFN0cmlwUGF0aCwgUGF0aE1ha2VVbmlxdWVOYW1lLCBQYXRoU3RyaXBUb1Jvb3QsCglQYXRoR2V0U2hvcnRQYXRoLCBQYXRoUGFyc2VJY29uTG9jYXRpb24sIFBhdGhSZW1vdmVFeHRlbnNpb24sCglQYXRoUmVtb3ZlQXJncywgUGF0aEFwcGVuZCwgUGF0aEJ1aWxkUm9vdCwgUGF0aENhbm9uaWNhbGl6ZSwKCVBhdGhGaW5kTmV4dENvbXBvbmVudCwgUGF0aFJlbW92ZUZpbGVTcGVjLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgaW5jbHVkZS93aW5lL29ial9xdWVyeWFzc29jaWF0aW9ucy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHVicyBmb3IgSVF1ZXJ5QXNzb2NpYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vdmVkIHBvbGljeSByZWxhdGVkIGZ1bmN0aW9ucyB0byBzaHBvbGljeS5jCglNb3ZlZCBkaWFsb2cgcmVsYXRlZCBmdW5jdGlvbnMgdG8gZGlhbG9ncy5jCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglFeHBsaWNpdCBpbXBvcnQgdXNlcjMyLmRsbC4KCU1hbnkgY29ycmVjdGlvbnMsIGV4cG9ydGVkIHNvbWUgZnVuY3Rpb25zIGJ5IG5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNlcGFyYXRlZCAzMiBiaXQgZnVuY3Rpb25zIHRvIHNoZWxsb2xlLmMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQ6IGV4dHJhY3QgdGhlIGljb24gYnkgcmVzb3VyY2UgaWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlcy4KCVVzZSBHZXRNb2R1bGVIYW5kbGVBIGluc3RlYWQgb2YgTG9hZExpYnJhcnkgZm9yIGRsbHMgaW1wb3J0ZWQgYnkKCXRoZSBzcGVjIGZpbGUuCgoJKiB3aW5lLmluaTogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIFdpbmVMb29rPVdpbjk1IHRoZSBkZWZhdWx0IHNldHRpbmcuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGxlYXZpbmcgb2YgY3JpdGljYWwgc2VjdGlvbiBvbiBhbGwgcmV0dXJuIGNhc2VzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIGluaXRfc2VjdC4gVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW5zdGVhZC4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMsIHJlbW92ZWQgYXNzZXJ0cy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbjoKCUNoYW5nZWQgaW1wb3J0cyBvZiB3aW5zcG9vbCB0byB3aW5zcG9vbC5kcnYuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglBZGRlZCBsaWJrZXlib2FyZC5zbyBjcmVhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGluY2x1ZGUvaGVhZGVyLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBSZXR1cm4gbW9kaWZpZWQgcmVjdGFuZ2xlIGFmdGVyIGxheW91dGluZyBoZWFkZXIgY29udHJvbAoJLSBPdXRwdXQgdGV4dCBpbiBoZWFkZXIgY29udHJvbCB3aGVuIG5vIG90aGVyIEZsYWcgc3BlY2lmaWVkCgktIERlbGF5IGJvdW5kaW5nIHJlY3RhbmdsZSBjYWxjdWxhdGlvbiBmb3IgaGVhZGVyIGNvbnRyb2wgaXRlbXMKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBUT09MQkFSX01vdXNlTGVhdmUgdG8gaGFuZGxlIFdNX01PVVNFTEVBVkUgbWVzc2FnZXMuCglBZGRlZCBUcmFja01vdXNlRXZlbnQgY2FsbHMgdG8gVE9PTEJBUl9Nb3VzZU1vdmUuICBIb3QgYnV0dG9ucyBub3cKCWxvb2svYmVoYXZlIGFsbW9zdCBleGFjdGx5IHRoZSBzYW1lIGFzIG5hdGl2ZSB3aW5kb3dzLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBZGRlZCBkZWZhdWx0IHZhbHVlcyBmb3IgU1BJX0dFVE1PVVNFSE9WRVJIRUlHSFQsIFNQSV9HRVRNT1VTRUhPVkVSV0lEVEggYW5kCglTUElfR0VUTU9VU0VIT1ZFUlRJTUUgdG8gU3lzdGVtUGFyYW1ldGVyc0luZm8xNigpLgoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbXBsZW1lbnQgbWFyayBhbmQgc3BhY2UgcGFyaXR5IGdlbmVyYXRpb24uIEFjY2VwdCBvbmUtYW5kLSBhLWhhbGYKCXN0b3BiaXRzOiB0aGUgbW9zdCBjb21tb24gdWFydHMgd2lsbCBnZW5lcmF0ZSB0aGlzIGF1dG9tYXRpY2FsbHkgd2hlbgoJdGhlcmUgYXJlIDUgZGF0YWJpdHMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU92ZXJyaWRlIGZvcmsoKS4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUdldCByaWQgb2YgSEVBUF94cmVhbGxvYy4KCjIwMDAtMDQtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIC0td2l0aG91dC14LgoKCSogbG9hZGVyL21haW4uYywgd2luZS5pbmk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG5ldyBjb25maWd1cmF0aW9uIGZpbGUgb3B0aW9uIGZvciBzZWxlY3RpbmcgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZGxscy90dHlkcnYvTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUxpbmsgdGhlIFRUWSBkcml2ZXIgd2l0aCB0aGUgc3RhbmRhcmQgbGlicy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB3aW5zcG9vbCguZHJ2KSBsb2FkaW5nLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIGluY2x1ZGUveDExZHJ2LmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NmRnYTIuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgWF9ESVNQTEFZX01JU1NJTkcuCgoJKiBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci9tc2MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wcm92ZWQgQ29kZVZpZXcgdHlwZSBpbmZvcm1hdGlvbiBsb2FkZXIuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG9uJ3QgdXNlIHRoZSB0ZW1wbGF0ZSBtZW1iZXIgdW5sZXNzIHRoZSBjb3JyZXNwb25kaW5nIGZsYWcgaXMgc2V0LgoKMjAwMC0wNC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIExJQ0VOU0UsIFdBUlJBTlRZOgoJU3dpdGNoZWQgdG8gdGhlIFgxMSBsaWNlbnNlLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIGlmMTYzMi9yZWxheS5jLCBtaXNjL2RkZW1sLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2luaW5ldC93aW5pbmV0X21haW4uYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd3Byb2NzLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2RpbnB1dC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIEFQSSBmaWxlcy4KCS0gSW1wcm92ZWQgbWlzcGxhY2VkIGZ1bmN0aW9uIGNoZWNraW5nLgoJLSBGaXhlZCBtaW5vciBidWdzLgoKCSogaW5jbHVkZS93aW5udC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUluY2x1ZGUgc3RyaW5nLmggdG8gbWFrZSB3aW5udC5oIHNlbGYtc3VmZmljaWVudC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogUGF0cmljayBZYW5nIChDb3JlbCkKCWluZm9QdHIgc29tZXRpbWVzIGNhbiBiZSBOVUxMLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CgkzMiBiaXRzIG1lc3NhZ2UgcHJvY2Vzc2luZyBmb3IgY29sb3IgZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCB0b29sYmFyIGJpdG1hcCBzaXplIGhhbmRsaW5nLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCB0ZXN0IGZvciBsaW51eCAyLjIgam95c3RpY2sgQVBJLCB3aGljaCByZXR1cm5lZCB0cnVlIGluIGV2ZXJ5CgljYXNlLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL3htYWxsb2MuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy94bWFsbG9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCB0aGUgbGFzdCB4bWFsbG9jIGNhbGxzLgoKCSogcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvaGVsbG8zcmVzLnJjLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgd2luZS5pbmksIC5jdnNpZ25vcmUsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglJbXBsZW1lbnRlZCBvbi1kZW1hbmQgbG9hZGluZyBvZiBidWlsdGluIGRsbHMgdXNpbmcgZGxvcGVuKCkuCgoyMDAwLTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJQnVpbGQgd2luZWNsaXBzcnYgYXMgcGFydCBvZiB0aGUgeDExZHJ2IGRsbC4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUmVtb3ZlZCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogd2luZG93cy9wYWludGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFrZSBSRFdfVmFsaWRhdGVQYXJlbnQoKSBtb2RpZnkgdGhlIHVwZGF0ZSByZWdpb24gb2YgYWxsIHBhcmVudHMsIG5vdAoJanVzdCB0aGUgZGlyZWN0IHBhcmVudC4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNOT09QX1ByaW50QXJnOiByZXBsYWNlZCBJc0JhZCogZnVuY3Rpb25zIGJ5IGV4Y2VwdGlvbiBoYW5kbGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIC0td2l0aG91dC1jdXJzZXMgY29tcGlsZSBvcHRpb24uCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgbW9yZSBwdGhyZWFkIG92ZXJyaWRlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBkZWJ1Z2dlciByZWdpc3RyeSBrZXkgbG9jYXRpb24uCgoJKiBpbmNsdWRlL2RkZW1sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIERFQ0xBUkVfSEFORExFIHRvIGRlY2xhcmUgaGFuZGxlcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJREVDTEFSRV9IQU5ETEUgc2hvdWxkIG5vdCBiZSB1bmRlZidlZCBhZnRlciB1c2UuCgoJKiBjb250cm9scy9lZGl0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGVkaXQgY29udHJvbCdzIFdNX0dFVFRFWFQgYmVoYXZpb3VyLgoKCSogbWlzYy9jb21tLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG8gbm90IGluaXRpYWxpemUgZGNiIGluIEJ1aWxkQ29tbURDQltBbmRUaW1lb3V0c10uCgoJKiBpbmNsdWRlL2Nhc2VtYXAuaCwgdG9vbHMvdW5pbWFwLnBsOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGFwdGVkIHVuaW1hcC5wbCBzY3JpcHQgYW5kIGdlbmVyYXRlZCBieSBpdCBjYXNlbWFwLmggdG8gdGhlIFVuaWNvZGUKCVN0YW5kYXJkLCBWZXJzaW9uIDMuMC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hlY2sgaWYgZGlhbG9nIGlzIHZpc2libGUgYmVmb3JlIHNldHRpbmcgdGhlIGZvY3VzLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVtb3ZlZCB0aGUgbG9uZ3N0YW5kaW5nIGhhY2sgaW4gcmVzcG9uc2UgdG8gV01fQUNUSVZBVEUgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIEdldE51bWJlckZvcm1hdCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVJlZHJhdyB0b29sYmFyIGJ1dHRvbiBpbnNpZGUgVE9PTEJBUl9FbmFibGVCdXR0b24oKSBvbmx5IGlmIHRoZSBzdGF0ZQoJb2YgdGhlIGJ1dHRvbiBjaGFuZ2VzLiAgU3RvcHMgZmxpY2tlcmluZyBpbiB0b29sYmFycyBjYXVzZWQgYnkKCWV4Y2Vzc2l2ZSByZWRyYXdpbmcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU3R1YiBmb3IgSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIEdldFByb2Nlc3NIZWFwKCkgZm9yIHRoZSBTVFJJQ1QgbW9kZS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbHNvIGNoZWNrIGZvciBlbXB0eSBHVUlEIGluIERpcmVjdERyYXdDcmVhdGUuCgoyMDAwLTA0LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5zcGVjLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuc3BlYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLnNwZWMsIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5zcGVjLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5zcGVjLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uc3BlYywgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3Muc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUFkZGVkIHNvbWUgbWlzc2luZyBpbXBvcnQgZGlyZWN0aXZlcy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluOgoJUmVtb3ZlZCB3aW5tbSBmcm9tIGltcG9ydCBsaXN0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGluY2x1ZGUvYW5pbWF0ZS5oOgoJVXNlIEdldFByb2NBZGRyZXNzIGZvciBtbWlvKiBmdW5jdGlvbnMgdG8gYXZvaWQgaW1wb3J0aW5nIHdpbm1tLmRsbC4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWM6CglGaXhlZCByZXNvdXJjZSBsb2FkaW5nLgoKCSogdG9vbHMvY3ZkdW1wL2N2Y3J1bmNoLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuYywgdG9vbHMvY3ZkdW1wL2N2aW5jbHVkZS5oLCB0b29scy9jdmR1bXAvY3Zsb2FkLmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglNaW5vciBjbGVhbnVwcywgcGx1cyBmaXhlZCBhIGNvdXBsZSBidWdzIGluIC5EQkcgcGFyc2luZyBjb2RlLgoJQWRkZWQgZHVtcCBmb3IgTUlTQyBzZWN0aW9uLgoKCSogd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBEaXJlY3RQbGF5IHJlZ2lzdHJ5IGtleXMgdG8gd2luZWRlZmF1bHQucmVnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglNb3VzZXdoZWVsIHN1cHBvcnQuCgoyMDAwLTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvY3ZkdW1wL2N2Y3J1bmNoLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuaCwgdG9vbHMvZm50MmJkZi5jLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJTW92ZWQgUEUgaGVhZGVyIGRlZmluaXRpb25zIHRvIHdpbm50Lmggd2hlcmUgdGhleSBiZWxvbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvc3B5LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIE1vdXNld2hlZWwgc3VwcG9ydC4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvbnZlcnQgc2VydmljZSBhbmQgcHJvdG9jb2wgbmFtZXMgdG8gbG93ZXJjYXNlIGJlZm9yZSBjYWxsaW5nCglnZXRzZXJ2Ynl7bmFtZXxwb3J0fSBhbmQgZ2V0cHJvdG9ieXtuYW1lfHBvcnR9LgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCByZXR1cm4gdmFsdWUgZm9yIE9mZnNldFJnbiBpZiB4IGFuZCB5IGFyZSAwLgoKCSogZ3JhcGhpY3MvcGF0aC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IFN0cm9rZUFuZEZpbGxQYXRoLgoJQ2FsbCBEZWxldGVPYmplY3Qgd2hlbiBmaW5pc2hlZCB3aXRoIGhyZ24gaW4gUEFUSF9GaWxsUGF0aC4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgdHlwby4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJRU1SX1NFTEVDVE9CSkVDVCByZWNvcmRzIHN0b2NrIG9iamVjdHMgd2l0aCB0aGVpciBpZCBhcyB0aGUgb2JqZWN0CgloYW5kbGUgYW5kIHRoZSBoaWdoIGJpdCBzZXQuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglUaWR5IHVwIG9mIFBsYXlFbmhNZXRhRmlsZVJlY29yZCAtIGZpeGVzIFBvbHlQb2x5KiBmdW5jdGlvbnMuCgoyMDAwLTA0LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglSZW1vdmVkIHBlcm1pc3Npb24gY2hlY2tzIGluIGNyZWF0ZV9rZXkgYW5kIGRlbGV0ZV9rZXkuIEl0IHNlZW1zCglXaW5kb3dzIGRvZXNuJ3QgY2hlY2sgYW55dGhpbmcuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJV3JhcCBhbiBleGNlcHRpb24gaGFuZGxlciBhcm91bmQgRmluZFJlc291cmNlLgoKCSogcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDb3JyZWN0ZWQgV2luTWFpbi4KCUFkZGVkIHRlc3QgY2FzZSBmb3IgUmVnQ3JlYXRlS2V5RXggc2hvd2luZyB3aW45NSBiZWhhdmlvdXIuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jOgoJSW1wbGVtZW50ZWQgJ3dhbGsgcHJvY2VzcycgYW5kICd3YWxrIHRocmVhZHMnIGNvbW1hbmRzIHVzaW5nIHRvb2xoZWxwCglzbmFwc2hvdHMuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RsaGVscDMyLmgsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWlzYy90b29saGVscC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgdGhyZWFkIGFuZCAocGFydGlhbCkgbW9kdWxlIHNuYXBzaG90cywgYmFzZWQgb24gdGhlIHdvcmsKCW9mIEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPi4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NoZWxsLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglTYXZlIHRoZSByZWdpc3RyeSBvbiBzZXJ2ZXIgZXhpdCB3aXRob3V0IGNsaWVudCBpbnRlcnZlbnRpb24uCglSZW1vdmVkICJhbHQiIHJlZ2lzdHJ5IGZpbGVzIHNpbmNlIHdlIG5vdyBoYXZlIHN5bWxpbmtzIGFuZAoJV0lORVBSRUZJWCB0byByZXBsYWNlIHRoZW0uCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVN1cHBvcnQgc3dpdGNoaW5nIHRoZSBrZXlib2FyZCBsYXlvdXQgd2l0aCBXSU5FIHJ1bm5pbmcuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZmdldHM6IERvbid0IHN3YWxsb3cgXG4sIHRyZWF0IEVPRgoJZmVvZjogQ3J1ZGUgaW1wbGVtZW50YXRpb24KCXNpZ25hbDogUmV0dXJuIGVycm9yCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgbWlzc2luZyBiYWNrc2xhc2ggaW4gdGhlIGRlYnVnZ2VyIGRlZmluaXRpb24uCgoJKiB3aW4zMi90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTZXRMb2NhbFRpbWUoKSBhbmQgU2V0U3lzdGVtVGltZSgpIGJ1Z2ZpeGVzLiBBZGRlZCBhIG1heGltdW0gY2xvY2sKCWFkanVzdG1lbnQgb2YgMiBtaW51dGVzIGp1c3QgaW4gY2FzZS4uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRFNPVU5EX01peGVyTm9ybTogZG8gbm90IGNvbXBhcmUgdW5yZWxhdGVkIHBvaW50ZXJzLgoKMjAwMC0wNC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVJld3JvdGUgY29tbWFuZC1saW5lIHBhcnNpbmcgb2YgQ3JlYXRlUHJvY2Vzc0EgdG8gYmUgbW9yZSBjb21wYXRpYmxlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL2J1aWxkLmMsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2Mvb3B0aW9ucy5jLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglJbXByb3ZlZCBXaW5lbGliIGFwcHMgaW5pdGlhbGlzYXRpb24gY29kZS4gTm8gbG9uZ2VyIG5lZWQgdG8gbGluawoJd2luZXN0dWIubyB3aXRoIFdpbmVsaWIgYXBwcy4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgcmVsYXkzMi91dHRodW5rLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy93aW44N2VtL2VtdWxhdGUuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcveDExLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIEFkZCBuZXcgb3B0aW9ucyAtLWFsbCBhbmQgLS1ub25lIHRoYXQgZW5hYmxlL2Rpc2FibGVzIGFsbCBjaGVjawoJICByZXNwZWN0aXZlbHkuCgktIEZpeGVkIGFuZCBpbXByb3ZlZCBzdHViIHN0YXRpc3RpY3MuCgktIEZpeGVkIGJ1ZyB0aGF0IHByZXZlbnRlZCBjaGVja2luZyBvZiB0aGUgZmlyc3QgZnVuY3Rpb24gaW4gdGhlIC5zcGVjIGZpbGVzLgoJLSBQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIGEgbW9yZSBhZHZhbmNlZCBtaXNwbGFjZWQgZnVuY3Rpb24gY2hlY2tpbmcuCgktIE1pbm9yIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IENDU19OT01PVkVZIGZvciB0b29sIGJhcnMuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTeW1saW5rIHJvb3QncyByZWdpc3RyeSB0byBnbG9iYWwgcmVnaXN0cnkuIE1pbm9yIGNsZWFudXBzLgoKCSogb2xlL29sZTJubHMuYzogT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCUFkZGVkIGZ1cnRoZXIgaW1wbGVtZW50YXRpb24gb2YgV0lOQVBJIEVudW1EYXRlRm9ybWF0cygpIHRvIHN1cHBvcnQKCXRocmVlIG1vcmUgbG9jYWxlczogR2VybWFuKHN0YW5kYXJkKSwgRnJlbmNoKHN0YW5kYXJkKSBhbmQgRnJlbmNoCgkoY2FuYWRpYW4pLiBBbGwgZGF0ZSBmb3JtYXRzIGZvbGxvdyBjb252ZW50aW9ucyBmcm9tIFdpbmRvd3MgTlQgNC4wCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUFkZGVkIHByb3BlciBoYW5kbGluZyBUVklTX09WRVJMQVlNQVNLIGZsYWcgYW5kIGFsbG93cyB0byBkaXNwbGF5CglvdmVybGF5IGltYWdlcy4gRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciB3aXRoIGxpc3RpdGVtIGluCglUUkVFVklFV19JbnNlcnRJdGVtQSAodU51bUl0ZW1zIGlzIDAgYmFzZWQsIGNDaGlsZHJlbiBpcyBhIGNvdW50KS4KCjIwMDAtMDQtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9wdGhyZWFkLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVBPU0lYIHRocmVhZHMgZW11bGF0aW9uLCB0cmlja3MgZ2xpYmMgaW50byBiZWluZyB0aHJlYWRzYWZlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFkZSBzZXJ2ZXIgbGF1bmNoaW5nIHNvbWV3aGF0IGNsZWFuZXIgYW5kIGZhc3Rlci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRGV0eXBvZWQgWDExRFJWX0VWRU5UX1NldElucHV0TWV0aG9kLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBkZWFsaW5nIHdpdGggWEtCIGV4dGVuc2lvbnMsIGZvcmNlIHRoZSBBbHRHciBrZXkgbWFzayB0byB1c2UgdGhlCglncm91cCBpbmRleCBpbnN0ZWFkIG9mIHRoZSBtb2RpZmllci4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEZWZpbmUgX19mYXN0Y2FsbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIGEgZmV3IHRvb2xiYXIgZGVmaW5lcy4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUEgZmV3IGNvcnJlY3Rpb25zIHRvIGJvdW5kaW5nIGJveGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEb24ndCBjbG9zZSBncm91cHMgb2YgcG9seWxpbmVzLgoKCSogbWlzYy9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGRlcmVmZXJlbmNlIGEgcHRyIHdlIGp1c3QgY2hlY2tlZCBiZWluZyBOVUxMLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNoYW5nZWQgdGhlIHBsYWNlbWVudCBvZiBXSU5FX1VOVVNFRCB0byBtYWtlIGdjYyAyLjcuMiBoYXBweS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGb2xsb3cgc3ltbGlua3Mgd2hlbiBzYXZpbmcgcmVnaXN0cnkuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbjoKCUFkZGVkIG1pc3Npbmcgd2luZXN0dWIgZGVwZW5kZW5jeS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglMb2FkIGRvbmUgZXZlbnQgbm93IGNyZWF0ZWQgYnkgdGhlIHNlcnZlci4KCjIwMDAtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci8uY3ZzaWdub3JlLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdGhlIHdpbmVkYmcgYW4gZXh0ZXJuYWwgYW5kIFdpbmVMaWIgcHJvZ3JhbS4KCUNlbnRyYWxpemVkIG91dHB1dCBoYW5kbGluZyAocHJlcGFyYXRpb24gZm9yIGNvbnNvbGUgdXNhZ2UpLgoJRml4ZWQgYSBmZXcgZGVidWcgaW5mb3JtYXRpb24gcmVhZGluZyBvcHRpb25zIChzdGFicyBhbmQgc3ltKS4KCVN0YXJ0ZWQgYSBmcmFtZXdvcmsgdG8gaG9sZCBkZWJ1Z2dlcidzIGludGVybmFsIHZhcmlhYmxlcy4KCgkqIG1pc2NlbXUvbWFpbi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIC1kZWJ1ZyB3aW5lJ3Mgb3B0aW9uICh3aW5lIG5vdyByZXF1aXJlcyBhbiBleHRlcm5hbCBkZWJ1Z2dlcikuCgoJKiB3aW4zMi9leGNlcHQuYywgd2luZWRlZmF1bHQucmVnOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBsYXVuY2hpbmcgb2YgYSBkZWJ1Z2dlciB3aGVuIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSAueGNubG5rIHNlY3Rpb24gdG8gYnVpbHRpbiBLRVJORUwzMiBQRSBoZWFkZXIuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTGV0IENyZWF0ZVByb2Nlc3MgbGF1bmNoIHVuaXggZXhlY3V0YWJsZSB3aXRob3V0IGEgLmV4ZSBleHRlbnNpb24uCglGaXhlZCBhcmd1bWVudHMgcGFzc2VkIHdoZW4gY3JlYXRpbmcgYSB1bml4IHByb2Nlc3MuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglGaXhlZCBzaWduYWwgc3RhY2sgaGFuZGxpbmcgb24gTGludXggd2hlbiBzaWdhbHRzdGFjayBpcyBhdmFpbGFibGUuCglBZGRlZCBhIGRpcmVjdCBzaWdhbHRzdGFjayBzeXNjYWxsIHRvIHdvcmstYXJvdW5kIHRoZSBnbGliYyBidWcuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglJbXBsZW1lbnRlZCBndWFyZCBwYWdlcyBhbmQgc3RhY2sgb3ZlcmZsb3cgZXhjZXB0aW9ucy4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUNsZWFudXAgdGhyZWFkIHN0YWNrIGFsbG9jYXRpb24uIFVzZSBhIHNpbmdsZSBWaXJ0dWFsQWxsb2MgZm9yIFRFQiBhbmQKCXRoZSB2YXJpb3VzIHN0YWNrcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1ha2Ugc3VyZSBIS0xNXFNvZnR3YXJlXFdpbmVcV2luZSBpcyBhIG5vbi12b2xhdGlsZSBrZXkuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBBbHRHciBrZXkgaGFuZGxpbmcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTWFrZSBEaXJlY3REcmF3IGNvbXBpbGUgd2l0aCBER0EyIHByZXNlbnQuCgoJKiBmaWxlcy9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZJTEVfQ3JlYXRlRmlsZSgpJ3MgcmVhZC93cml0ZS1jaGVjayB3YXMgYnJva2VuIGR1ZSB0byBjaGVja2luZyBvZgoJRVJST1JfeHh4IGluc3RlYWQgb2YgU1RBVFVTX3h4eC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGFuZCBjbGVhbnMgdXAgc29tZSBvZiB0aGUgR2V0RW5oTWV0YUZpbGUqIGZ1bmN0aW9ucy4KCUZpeGVzIHNjYWxpbmcgb2YgRU1GcyBpbiBwbGF5YmFjay4gIFdpbGwgcHJvYmFibHkgYmUgcmlnaHQKCXdoZW4gV29ybGQgVHJhbnNmb3JtcyB3b3JrIHByb3Blcmx5Li4uCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglHbG9iYWxSZUFsbG9jIHJldHVybnMgMCBvbiBmYWlsdXJlLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVN0dWIgZm9yIE50QWxsb2NhdGVVdWlkcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNsZWFyIFRvcFJvb3RJdGVtIHdoZW4gd2hvbGUgdHJlZSBpcyBkZWxldGVkLgoJRml4IG9mZiBieSBvbmUgbHN0cmNweW4uCglDbGVhbiB1cCBhbmQgZml4IEdldE5leHRJdGVtLgoKMjAwMC0wNC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZTogSWdub3JlIGFsbCBvdXRwdXQgZmlsZXMuCgoJKiBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS93aW5pbmV0LmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCU1lcmdlZCB1cmxtb24uZGxsIGFuZCB3aW5pbmV0LmRsbCBmcm9tIHRoZSBDb3JlbCB0cmVlIChpbXBsZW1lbnRhdGlvbgoJYnkgVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPikKCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvcXVldWUuYzoKCU1hZGUgR2V0UHJvY2Vzc0hlYXAoKSwgR2V0Q3VycmVudFByb2Nlc3NJZCgpLCBHZXRDdXJyZW50VGhyZWFkKCkgYW5kCglHZXRDdXJyZW50UHJvY2VzcygpIGlubGluZS4KCgkqIEFVVEhPUlMsIGluY2x1ZGUvYXV0aG9ycy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXJnZWQgaW4gQ29yZWwncyBBVVRIT1JzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbmx5IGNvcHkgZHN0d2lkdGgqMyBieXRlcyBpbiB0aGUgMjRiaXQgY2FzZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZyZWUgcHJpdmF0ZSBzdHJ1Y3R1cmUgaW4gWGxpYl9ERFNfUmVsZWFzZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglNU0dfUHJvY2Vzc0tiZE1zZyBjYW4gYmUgY2FsbGVkIGZyb20gcGVlaywgc28gb25seSBwcm9jZXNzIHdoZW4gcmVtb3ZlIGlzIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJVHJlZVZpZXcgLSBtaW5vciBidWdmaXggYW5kIG9wdGltaXphdGlvbjoKCSAgIC0gR2V0REMgY2FsbCBtb3ZlZCBkb3duIHRvIGF2b2lkIHBvc3NpYmxlIHJlc291cmNlIGxlYWsuCgkgICAtIEludmFyaWFudCBjb2RlIGlzIG1vdmVkIG91dCBvZiBsb29wLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCV9JTEdldEZpbGVEYXRlIHNob3VsZCBjb252ZXJ0IHRoZSBkYXRlIHRvIGxvY2FsIHRpbWUgYmVmb3JlIGdlbmVyYXRpbmcKCXRoZSBzdHJpbmcgKF9JTEdldEZpbGVEYXRlVGltZSBkb2VzIG5vdCkuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgb3RoZXIgYnVncyB3aXRoaW4gTU1JTyBpbXBsZW1lbnRhdGlvbi4gTm93LCBpdCdzIHBvc3NpYmxlIHRvCgljb3B5L2N1dCBmcm9tIFBob3RvUGFpbnQgYW5kIHBhc3RlIHRvIENvcmVsRHJhdy4KCjIwMDAtMDQtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglVc2UgZDNkZXhlY3V0ZWJ1ZmZlcl9jcmVhdGUgb25seSB3aGVuIGNvbXBpbGluZyB3aXRoIE1FU0EuCgoyMDAwLTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlcGxhY2VkIHhtYWxsb2MgY2FsbHMgd2l0aCBtYWxsb2MvSGVhcEFsbG9jIGNhbGxzLgoKCSogY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3h0ZXJtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljcy4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIEhlYXBXYWxrKCkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gbGVmdCBvdmVyIEhlYXBWYWxpZGF0ZSBhc3NlcnRpb25zIHJlbW92ZWQuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYXIgc3RhdHVzIGZvciBzZW5kaW5nIGV4Y2VwdGlvbiBldmVudC4KCgkqIHRvb2xzL2dlbnBhdGNoOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gcHV0IG5ldy1saW5lcyBpbiBjaGFuZ2Vsb2cgZW50cnkuCglBZGRlZCAtcCB0byBsb2NhdGUgZGVzdGluYXRpb24gZGlyZWN0b3J5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglHZXRJdGVtIHdhcyByZXR1cm5pbmcgdGhlIGl0ZW0gaW5zdGVhZCBvZiBzdWJpdGVtIGluZm8uCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCVJlZ2lzdHJ5IGtleSB1c2VkIGluIExvYWRCb2FyZCgpIHdhcyBub3QgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGluCglTYXZlQm9hcmQoKS4gQWxzbyBmaXhlZCBhIHR5cG8gaW4gdGhlIHBvc2l0aW9uIHNhdmluZyBjb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglDcmVhdGUgZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBjb250YWluIGEgTWFrZWZpbGUuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbjoKCUltcHJvdmVkIHN1cHBvcnQgZm9yIE1ha2VmaWxlcyB0aGF0IG5lZWQgdG8gcmVjdXJzZSBpbiBzdWJkaXJlY3Rvcmllcy4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZXMuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlc3RydWN0dXJlZCBEaXJlY3REcmF3LiBTcGxpdCBpbnRvIFgxMSBhbmQgREdBIGRyaXZlciwgYW5kIG11bHRpcGxlCglmaWxlcy9kaXJzIGZvciBlYXNpZXIgbWFpbnRlbmFuY2UuIENsZWFuZWQgdXAgc3RydWN0cyBhbmQgaW5jbHVkZQoJZmlsZXMuIFJlaW5kZW50ZWQgdGhlIGNvZGUuIFN0YXJ0ZWQgdGhlIHNhbWUgZm9yIERpcmVjdDNELiAgRHJpdmVyCglpbmNsdXNpb24gbm93IGRvbmUgYnkgdXNpbmcgY29uZmlndXJlL01ha2VmaWxlL0VMRiBjb25zdHJ1Y3RvciB0cmlja3MuCgoyMDAwLTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9oZWFwLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy90aW1lci5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJUmVtb3ZlZCBhIG51bWJlciBvZiBnbG9iYWwgaGFuZGxlIGFsbG9jYXRpb25zIGFuZCBjcml0aWNhbCBzZWN0aW9uCglpbml0aWFsaXphdGlvbnMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVGVtcG9yYXJ5IGhhY2sgdG8gc2hhcmUgaGFuZGxlcyBiZXR3ZWVuIHByb2Nlc3NlcyBzaGFyaW5nIHRoZSBzYW1lCglhZGRyZXNzIHNwYWNlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJQWRkZWQgbGF6eSBpbml0aWFsaXphdGlvbiBvZiBjcml0aWNhbCBzZWN0aW9ucywgYmFzZWQgb24gYSBwYXRjaCBieQoJQW5kcmV3IExld3lja3kuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBZdXhpIFpoYW5nIDx5dXhpQGNvcmVsLmNhPgoJU3RlcGhlbiBNZXJldQoJVGFiQ3RybCBsZWZ0bW9zdFZpc2libGUgaXMgbm90IHVwZGF0ZWQgcHJvcGVybHkuIEl0IGNhdXNlZCB0aGUgUVAKCWFwcGxpY2F0aW9uIGJhciBvbiB0aGUgYm90dG9tIGZhaWwgdG8gYnJpbmcgYmFjayB0aGUgaXRlbXMgd2hlbiB0aGVyZQoJaXMgbm8gbmVlZCB0byBzY3JvbGxpbmcuIEFsc28gZml4ZWQgYSBidWcgdGhhdCB3aGVuIGFuIGl0ZW0gaXMgaW5zZXJ0ZWQsCglzZXRJdGVtQm91bmRzIHNob3VsZCBiZSBjYWxsZWQgZmlyc3QsIHRoZW4gaXQncyB0aW1lIHRvIGludmFsaWRhdGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBQZWVrTmFtZWRQaXBlIHN0dWIuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBwaXhtYXAgbGVhayB3aXRoIHRoZSAxeDEgYml0bWFwIGluIG1lbW9yeSBEQ3MuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cgl3aW5laW5zdGFsbCBub3cgcHJvcGVybHkgY29uZmlndXJlcyBuby13aW5kb3dzIGluc3RhbGxzLCBhbmQgc2hvdWxkIG5vdwoJYmUgZWFzaWVyIHRvIGFkYXB0IGZvciBiaW5hcnkgcGFja2FnZXMgdG9vLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZmF1bHQgc3lzdGVtLmluaSAoZnJvbSBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhKS4KCjIwMDAtMDQtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglEbyBub3Qgc2VuZCBhIGRlYnVnIGV2ZW50IGZvciBhIHRocmVhZCB1bnRpbCB0aGUgcHJldmlvdXMgZXZlbnQgZm9yCgl0aGUgc2FtZSB0aHJlYWQgaGFzIGJlZW4gY29udGludWVkLgoKCSogbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCU1vdmVkIFNhdmVPbmx5VXBkYXRlZEtleXMgdG8gd2luZS5pbmkuCglVc2UgZ2V0X2NvbmZpZ19kaXIoKSBpbnN0ZWFkIG9mIGhhcmRjb2Rpbmcgfi8ud2luZQoJU2ltcGxpZmllZCBsb2FkaW5nIGFuZCBzYXZpbmcgcm91dGluZXMuCgoJKiBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglBZGRlZCBzdXBwb3J0IGZvciBXSU5FUFJFRklYIGVudmlyb25tZW50IHZhcmlhYmxlLgoKCSogd2luZG93cy93aW5wb3MuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9sc3RyLmMsIG1pc2MvbmV0d29yay5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2ZvbnQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy93aW44N2VtL2VtdWxhdGUuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBsb2FkZXIvbW9kdWxlLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgQVBJIEVudW1UaW1lRm9ybWF0c0EoKS4gSXQgc3VwcG9ydHMgbm93IGFsbCBkaWZmZXJlbnQKCUVuZ2xpc2ggbG9jYWxlcywgYXMgd2VsbCBhcyBHZXJtYW4oc3RhbmRhcmQpLCBGcmVuY2goc3RhbmRhcmQpIGFuZAoJRnJlbmNoKENhbmFkaWFuKS4gIEFsbCB0aW1lIGZvcm1hdHMgZm9sbG93IGNvbnZlbnRpb25zIGluIFdpbmRvd3MgTlQgNC4wCgoJSGFpdGhlbSBIbWlkYSAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglJbXBsZW1lbnRlZCBHZXRDdXJyZW5jeUZvcm1hdEEoKSBBUEk6CgktIEdldEN1cnJlbmN5Rm9ybWF0QSgpIGNhbGxzIEdldE51bWJlckZvcm1hdEEoKSB0byBmb3JtYXQgdGhlIG51bWJlcgoJICAoYXMgYSBwb3NpdGl2ZSBvbmUpLCB0aGVuIGZvcm1hdHMgdGhlIG51bWJlciBkZXBlbmRpbmcgb24KCSAgTmVnYXRpdmVPcmRlci9Qb3NpdGl2ZU9yZGVyIGZpZWxkcy4KCS0gR2V0TnVtYmVyRm9ybWF0QSgpIGhhcyBiZWVuIHNsaWdodGx5IG1vZGlmaWVkLgoKCSogb2JqZWN0cy90ZXh0LmM6CglKdW5pY2hpIEt1Y2hpbmlzaGkgPGprdWNoaUBtYWhvcm9iYS5uZS5qcD4KCUFkZGVkIGNvbnZlcnNpb24gZnJvbSBEQkNTIGxwRHggdG8gV0NIQVIgbHBEeC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEltcGxlbWVudGVkIHN0dWIgc3RhdGlzdGljcy4gVHVybmVkIG9mZiBieSBkZWZhdWx0LiAoUmVxdWVzdGVkIGJ5IEZyYW5jb2lzCglHb3VnZXQpLgoJLSBJbXBsZW1lbnRlZCBtaXNzaW5nIHByb3RvdHlwZSBjaGVja2luZy4gVHVybmVkIG9mZiBieSBkZWZhdWx0IChSZXF1ZXN0ZWQKCWJ5IERpbWl0cnkgVGltb3Noa292KS4KCS0gSW1wbGVtZW50ZWQgLnNwZWMgZmlsZSBuYW1lIHNhbml0eSBjaGVja2luZy4gVHVybmVkIG9mZiBieSBkZWZhdWx0LgoJLSBJbXBsZW1lbnRlZCBkb2N1bWVudGF0aW9uIHdpZHRoIGNoZWNraW5nLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY2E+CglGaXggU3RyaW5nRnJvbUdVSTIgcmV0dXJuIHZhbHVlIGFzIHBlciBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNYWtlIGF1ZGlvZGV2aWNlIGJsb2NraW5nIGRpcmVjdGx5IGFmdGVyIHRoZSBub24tYmxvY2tpbmcgb3Blbiwgc2luY2UKCXdlIHVzZSB0aGUgd3JpdGUoMikgYWxzbyBmb3Igc3luY2hyb25pemF0aW9uLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgZXJyb3IgaGFuZGxpbmcgZm9yIHdzX2dldHByb3RvYnluYW1lL251bWJlci4KCU1hZGUgdGhlIEFzeW5jIGVycm9yIHJldHVybnMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbCBmdW5jdGlvbnMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldFNob3J0UGF0aE5hbWU6IGFsd2F5cyBlcmFzZSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQgb2YgdGhlIG5ldwoJc3RyaW5nLCBhbmQgcmV0dXJuIG9ubHkgc2luZ2xlIGJhY2tzbGFzaGVzLgoKMjAwMC0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvcmVnaXN0cnkuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQWRkZWQgYSBwZXItZHJpdmUgRmFpbFJlYWRPbmx5IGZsYWcsIGFuZCByZW1vdmVkIHRoZSBnbG9iYWwKCS0tZmFpbHJlYWRvbmx5IG9wdGlvbi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGZpbGVzL2ZpbGUuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJRml4ZWQgZmlsZSBkZXNjcmlwdG9yIGxlYWtzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQ2FsbCBQUk9GSUxFX0dldFdpbmVJbmlCb29sIGJlZm9yZSBzdGFydGluZyB0byBmaWxsIHRoZSByZXF1ZXN0CglidWZmZXIuIE1hZGUgbmV3IHJlZ2lzdHJ5IGZvcm1hdCB0aGUgZGVmYXVsdC4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUluY3JlbWVudCBzdXNwZW5kIGNvdW50IGJlZm9yZSBhdHRlbXB0aW5nIGF0dGFjaCBpbiBzdXNwZW5kX2Zvcl9wdHJhY2UuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZXZlbnQuYzoKCU1hZGUgcmVxdWVzdCB0cmFjaW5nIG1vcmUgcm9idXN0IGFnYWluc3QgYm9ndXMgbGVuZ3Rocy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUFkYXB0ZWQgdGhlIG1hbnVhbCBwYWdlcyB0byB0aGUgbmV3IGxvbmcgb3B0aW9ucywgdXBkYXRlZCB0aGUKCS1kZWJ1Z21zZyBjaGFubmVscyBhbmQgYWRkZWQgYSBzbWFsbCBoYWNrIHRvIGdldCB0aGUgQHN5c2NvbmZkaXJACglzdHVmZiBpbiB0aGUgbWFudWFsIHBhZ2VzIHJpZ2h0LgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHR3byBzbWFsbCBidWdzIHdpdGhpbiBNTUlPX0luc3RhbGxJT1Byb2MgYW5kIE1NSU9fRGVzdHJveS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oOgoJSm9zaHVhIFRoaWVsZW4gPGZvemV5QG5ldHplcm8uY29tPgoJQWRkZWQgRGVzdHJveUJvYXJkIGZ1bmN0aW9uIHRvIGRlbGV0ZSBiaXRtYXAgaGFuZGxlcy4KCU1vdmVkIFNlbGVjdE9iamVjdCBvdXRzaWRlIG9mIERyYXdNaW5lLgoJU2VsZWN0ZWQgb2xkIG9iamVjdCdzIGJhY2sgaW50byBoTWVtREMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGVkIEZBVDMyIGZ1bmN0aW9uIDczMDIgKEdldCBFeHRlbmRlZCBEUEIpLgoKCSogd2luMzIvZGV2aWNlLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50ZWQgRGV2aWNlSW9Db250cm9sIFZXSU4zMl9ESU9DX0RPU19EUklWRUlORk8sIG5lZWRlZCBieQoJSW50ZXJuZXQgRXhwbG9yZXIuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jYT4KCVRoaXMgcGF0Y2ggYWRkcyB0aGUgYWJpbGl0eSBmb3IgcmVnYXBpIHRvIGNhbGwgdGhlIERsbFJlZ2lzdGVyU2VydmVyIG9yCglEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBhIGxpc3Qgb2YgRExMcy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jYT4KCU9sZVJlZ0dldFVzZXJUeXBlIGRpZCByZXR1cm4gYW4gdW50ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZyBpbnN0ZWFkIG9mIGFuCglPTEVTVFIgKHdpZGUgY2hhcmFjdGVycykuCgoJKiBtaXNjL21haW4uYywgb2xlL25scy9lbmEubmxzLCBvbGUvbmxzL2VuYi5ubHMsIG9sZS9ubHMvZW5jLm5scywgb2xlL25scy9lbmcubmxzLCBvbGUvbmxzL2VuaS5ubHMsIG9sZS9ubHMvZW5qLm5scywgb2xlL25scy9lbmwubmxzLCBvbGUvbmxzL2Vucy5ubHMsIG9sZS9ubHMvZW50Lm5scywgb2xlL25scy9lbnUubmxzLCBvbGUvbmxzL2Vuei5ubHMsIG9sZS9ubHMvaXJsLm5scywgb2xlL29sZTJubHMuYzoKCU1pY2hhZWwgQWJkLUVsLU1hbGVrIChDb3JlbCkKCUNoYW5nZWQgaXJsLm5scyB0byBlbmkubmxzLiBSZXZpZXdlZCBhbmQgZml4ZWQgYSBsb3Qgb2YgdGhlIE5MUyBmaWxlcwoJdG8gYmUgbW9yZSBjb21wYXRpYmxlIHRvIFdpbmRvd3MuCglBZGRlZCBlbl9HQiAodXNlZCBieSBDb3JlbCBMaW51eCAxLjAsMS4xKSBhcyBhbGlhcyBmb3IgZW5fVUsuCgoJSmVmZiBUcmFudGVyIDxqZWZmdEBjb3JlbC5jYT4KCVRoZSBtZWFzdXJlbWVudCB1bml0IGZvciBDYW5hZGlhbiBFbmdsaXNoIHNob3VsZCBiZSBtZXRyaWMuCglMQU5HX1NVQl9FTlRSWSBkaWQgYWx3YXlzIHJldHVybiB0aGUgZmlyc3QgbGFuZ3VhZ2UgZHVlIHRvIG1pc3Npbmcge30uCgoyMDAwLTAzLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnMgaW4gcmVnYXJkcyB0byBzaGFyZWQgbGlicmFyaWVzIGFuZAoJc29tZSBtb3JlIHdpbmRvd3Mgc3BlY2lmaWMgZGlycy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1JFQURNRSwgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBGaXggcGFpbnRpbmcgYnVnIHdpdGggbWlkZGxlIGJ1dHRvbiBkb3duIHdoZW4gZHJhZ2dpbmcgbW91c2UKCS0gU3BlZWQgdXAgZHJhd2luZyBhbmQgaGVuY2Ugb3ZlcmFsbCBzcGVlZAoJLSBGaXggY29tcGlsZXIgd2FybmluZ3MKCS0gQWRkZWQgc29tZSBvcHRpb25hbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KCS0gQWRkZWQgYSBuZXcga25vd24gYnVnIHRvIHRoZSBsaXN0CgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIENUUywgRFNSIGFuZCBSaW5nSW5kaWNhdG9yIHN0YXRlcyB0byBXaW5kb3cncyBzZW1pLWRvY3VtZW50ZWQKCW1vZGVtIGxpbmUgc3RhdHVzIHJlZ2lzdGVyLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRGVsZXRlIG9iamVjdHMgYWZ0ZXIgdXNlIGluIEVudW1FbmhNZXRhRmlsZS4KCU1ha2UgUGxheUVuaE1ldGFGaWxlIGNhbGwgRW51bUVuaE1ldGFGaWxlLgoJTW92ZSBFbnVtRW5oTWV0YUZpbGUgcHJvdG90eXBlIHRvIHdpbmdkaS5oLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJb3BlbigpIHRoZSBPU1Mgc291bmRkZXZpY2Ugbm9uLWJsb2NraW5nIGluIGNhc2UgYW5vdGhlciBwcm9jZXNzIGhhcyBpdAoJb3BlbiBhbHJlYWR5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNvbW1lbnRlZCBvdXQgZXhpdCgpIGNhbGwgb24gRXhpdFByb2Nlc3MgZm9yIG5vdy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglTZXQgdGhyZWFkIHN0YXJ0IGFkZHJlc3MgdG8gMCBvbiBldmVudHMgZ2VuZXJhdGVkIGJ5CglEZWJ1Z0FjdGl2ZVByb2Nlc3MuCglSZXR1cm4gYSBjb3JyZWN0IGFkZHJlc3MgaW4gdGhlIHNpbXVsYXRlZCBleGNlcHRpb24gZXZlbnQuCgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJRml4ZWQgdHR5ZHJ2IGNvbXBpbGUgd2hlbiB1c2luZyBjdXJzZXMuIENsZWFuZWQgdXAgYSBmZXcgI2lmZGVmcy4KCjIwMDAtMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGdyYXBoaWNzL3BhdGguYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby55YWNjLnk6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCS0gRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgktIFJlbW92ZSBzdXBlcmZsdW91cyAjaW5jbHVkZSBzdGF0ZW1lbnQuCgoJKiBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgbWlzYy9uZXR3b3JrLmM6CglSb24gR2FnZSA8cm9uZ2FnZUBhdHQubmV0PgoJRml4ZWQgYnVnIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqICovKi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9maXhlZCBzb21lIGRvY3VtZW50YXRpb24gcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgb2JqZWN0cy9wYWxldHRlLmM6CglGaXhlZCBtZW1vcnkgYWxsb2NhdGlvbnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkL2ZpeGVkIHNvbWUgZG9jdW1lbnRhdGlvbiByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2sKCS0gUmVuYW1lZCBNYXBWaXJ0dWFsS2V5RXgzMkEgdG8gTWFwVmlydHVhbEtleUV4QQoJLSBSZW5hbWVkIENSVERMTF9fZGxsb25leGl0IHRvIENSVERMTF9fX2RsbGluaXQKCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIG1pc2MvcHJpbnRkcnYuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIHRoZSBBUEkgZmlsZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURvIGEgTG9hZExpYnJhcnlBIG9mIFdJTk1NIHVwb24gQU5JTUFURV9DcmVhdGUgYW5kIGEgRnJlZUxpYnJhcnkgdXBvbgoJQU5JTUFURV9EZXN0cm95LgoKCSogdG9vbHMvd3JjL3BhcnNlci5sOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeCBpbiB3cmMgdG8gc3VwcG9ydCB0aGUgU29sYXJpcyBwcmVwcm9jZXNzb3IuCgoJKiBkZWJ1Z2dlci9tc2MuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGQgc3RhcnQgbWVudSBkaXJlY3Rvcmllcy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVB1dCBDTE9ORV9GSUxFUyBiYWNrIGluLCBpdCBpcyBzdGlsbCBicmVha2luZyB0b28gbWFueSB0aGluZ3MuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3gxMWRydi5oOgoJTWVyZ2VkIEREQml0bWFwIGFuZCBwaHlzQml0bWFwIGludG8gdGhlIGdlbmVyaWMgYml0bWFwIHN0cnVjdHVyZQoJKHN1Z2dlc3RlZCBieSBBbmRyZXcgTGV3eWNreSkuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUlnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gRE9TRlNfVG9Eb3NGQ0JGb3JtYXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGaXhlZCBzbWFsbCBidWcgaW4gV1NPQ0szMl9hY2NlcHQKCjIwMDAtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDAzMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglET1NGU19Ub0Rvc0ZDQkZvcm1hdDogZmFpbCBpZiBleHRlbnNpb24gbG9uZ2VyIHRoYW4gMyBjaGFyYWN0ZXJzLgoKCSogdG9vbHMvY3ZkdW1wLy5jdnNpZ25vcmUsIHRvb2xzL2N2ZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvY3ZkdW1wL2N2Y3J1bmNoLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5oLCB0b29scy9jdmR1bXAvY3ZpbmNsdWRlLmgsIHRvb2xzL2N2ZHVtcC9jdmxvYWQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgY3ZkdW1wIHRvb2wgdG8gZHVtcCBDb2RlVmlldyBzeW1ib2wgaW5mb3JtYXRpb24uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgUE9MTEhVUCBiZXR0ZXIgKGRlbGF5IEZEX0NMT1NFIG5vdGlmaWNhdGlvbiB1bnRpbCBhbGwgZGF0YSBoYXMKCWJlZW4gcmVhZCkuIE1hZGUgV1NBRW51bU5ldHdvcmtFdmVudHMgYXRvbWljLiBDb252ZXJ0IHNvY2tldCBldmVudAoJZXJyb3IgY29kZXMgcHJvcGVybHkuIE1hZGUgYWNjZXB0KCktZWQgc29ja2V0cyBpbmhlcml0IHRoZSBsaXN0ZW5pbmcKCXNvY2tldCdzIFdTQUFzeW5jU2VsZWN0KCkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBkZWJ1ZyBmb3JtYXR0aW5nLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBGaXhlZCBlcnJvciBjaGVja2luZyBpbiByZWdpc3RyeSBzYXZpbmcuCgoJKiBtaXNjL2Nkcm9tLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBzdHJlcnJvciBpbiBkZWJ1ZyBvdXRwdXQuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTSENoYW5nZU5vdGlmeVtBfFddOiBmcmVlIG9ubHkgaXRlbXMgd2UgYWxsb2NhdGVkLgoKCSogbG9hZGVyL3Jlc291cmNlLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jLCB3aW4zMi9jb25zb2xlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZXMgZm9yIGkxOG4uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyByZWFkIC5zbyBsaXN0IGZyb20gZGVidWdnZWUncyBhZGRyZXNzIHNwYWNlLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIG1pc3NpbmcgbWFjcm9zLgoKCSogaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTW92ZWQgc29tZSByZWdpc3RyeSBkZWZpbml0aW9ucyB0byB3aW5udC5oLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBpbXBvcnQgb2YgY29tZGxnMzIuZGxsIGluIHNwZWMgZmlsZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWN0aXZhdGUgYSBoaWRkZW4gd2luZG93IG9ubHkgd2hlbiBleHBsaWNpdGVseSBhc2tlZCBieSB0aGUKCWFwcGxpY2F0aW9uLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWltcHJvdmVkIGV4Y2VwdGlvbiBoYW5kbGluZwoJbWVyZ2VkIGFsbCBtb2R1bGUgaGFuZGxpbmcgY29kZSBpbiBuZXcgbW9kdWxlLmMgZmlsZQoJcmVlbmFibGVkICd3YWxrIG1vZHVsZScgYW5kICdpbmZvIG1vZHVsZScgY29tbWFuZHMKCWFkZGVkIGFiaWxpdHkgdG8gZHJpdmUgYnJlYWsgb24gdGhyZWFkIHN0YXJ0dXAKCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YnMgZm9yIERsbFJlZ2lzdGVyU2VydmVyL0RsbFVucmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgcmV0dXJuIHZhbHVlIGZvciBTQ19HRVRfREVWX1RZUEUuCgoyMDAwLTAzLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9idWlsZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sb2NhbC5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5kZWYuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgbWluL21heCBpbnN0ZWFkIG9mIE1JTi9NQVguCgoJKiBzZXJ2ZXIvc29jay5jOiBPdmUgS2FhdmVuIDxvdmVoa0BwaW5nLnVpby5ubz4KCUhhbmRsZSBzb2NrZXQgUE9MTEVSUi9QT0xMSFVQIGNvbmRpdGlvbnMgcHJvcGVybHkuCglDbGVhciBlcnJvciBmaWVsZCBmb3IgT09CIG5vdGlmaWNhdGlvbnMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNlbmQgdGhlIGNvcnJlY3QgT0RBXyBjb2RlIHdoZW4gZGVzZWxlY3RpbmcgYW4gaXRlbS4KCgkqIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBmaWxlIGRlc2NyaXB0b3IgbGVha3MuCglBbHdheXMgY2FsbCBVU0VSIHNpZ25hbCBwcm9jIGluIHRoZSByaWdodCBjb250ZXh0LgoJQ2xlYW5lZCB1cCBUSFJFQURfQ3JlYXRlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjoKCURvIG5vdCBlcmFzZSBsb2NhbCBmaWxlcyBvbiB1bmluc3RhbGwgaWYgaW5zdGFsbCBkaXIgZG9lcyBub3QgZXhpc3QuCgoJKiB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUvbW9uaXRvci5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MvZGNlLmM6CglTdG9yZSBtb25pdG9yIHNpemUgYW5kIGRlcHRoIGluIHRoZSBnZW5lcmljIHN0cnVjdHVyZS4KCU1lcmdlZCBtb25pdG9yIGRyaXZlciBpbnRvIFVTRVIgZHJpdmVyLgoKCSogd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2Rlc2t0b3AuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQSBmZXcgc2ltcGxpZmljYXRpb25zIGFuZCBvcHRpbWl6YXRpb25zIGluIHRoZSB4MTEgZHJpdmVyLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCUxpbmsgdHR5ZHJ2IGFuZCB4MTFkcnYgb2JqZWN0cyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxsLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOiBBZGRlZCBtaXNzaW5nIGtleWJvYXJkLnNwZWMuCgoyMDAwLTAzLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tc2dib3guYywgbWlzYy9jb21tLmMsIG1pc2MvcHJpbnRkcnYuYywgd2luMzIvZXhjZXB0LmM6CglNb3ZlZCBGYXRhbEFwcEV4aXQgZnVuY3Rpb25zIHRvIHdpbjMyL2V4Y2VwdC5jLgoJQWRkZWQgYSBmZXcgdXNlcyBvZiBDYWxsb3V0IGluc3RlYWQgb2YgcmVmZXJlbmNpbmcgVVNFUiBmdW5jdGlvbnMKCWRpcmVjdGx5LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglNb3ZlZCBMb2FkSW1hZ2UgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGN1cnNvcmljb24uYy4KCgkqIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9nZGkvdGh1bmsuYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2tleWJvYXJkLnNwZWMsIGRsbHMvdXNlci90aHVuay5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgb2JqZWN0cy9saW5lZGRhLmMsIHdpbmRvd3Mvd2luLmM6CglNb3ZlZCBnZGkvdXNlciB0aHVua2luZyBmdW5jdGlvbnMgaW50byB0aGVpciByZXNwZWN0aXZlIGRsbHMuCglNb3ZlZCBrZXlib2FyZC5zcGVjIGludG8gdXNlciBkbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURpc2FibGUgT3BlbkdMIHN1cHBvcnQgaWYgdGhlIGxhdHRlciBpcyB0aHJlYWQgc2FmZS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9tZW1vcnkuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBncmFwaGljcy9kaXNwZGliLmMsIGluY2x1ZGUvYW5pbWF0ZS5oLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL2NydGRsbC5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2Rpc3BkaWIuaCwgaW5jbHVkZS9lbmhtZXRhZmlsZS5oLCBpbmNsdWRlL2ltYWdlbGlzdC5oLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvcmVnaW9uLmgsIGluY2x1ZGUvc3FsdHlwZXMuaCwgaW5jbHVkZS93aW5lL2ljbXBhcGkuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbnBvcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHRoZSBpbmNsdWRlIGZpbGVzIHNlbGYgc3VmZmljaWVudC4KCgkqIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93c29jazMyLnNwZWMsIG1pc2MvZGRlbWwuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL2ZpeGVkIHNvbWUgZG9jdW1lbnRhdGlvbiByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCB3aW4zMi9uZXdmbnMuYywgd2luZG93cy9wYWludGluZy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvd2lubnQuaCwgb2xlL29sZTJubHMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYywgcHJvZ3JhbXMvdmlldy92aWV3LmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIEMgcmVsYXRlZCBjb21waWxlIHByb2JsZW1zLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dkaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5tbS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9kZGVtbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBBUEkgZmlsZXMKCS0gRG9uJ3QgY2hlY2sgdGhlICouc3BlYy5jIGZpbGVzCgktIEJldHRlciBwYXJzaW5nIG9mIHN0cmluZ3MKCS0gQmV0dGVyIGRvY3VtZW50YXRpb24gY2hlY2tpbmcKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzb21lIGRlYnVnIGNvZGUgYW5kIGNsZWFuZWQtdXAgdGhlIG1vdXNlIHdhcnBpbmcgY29kZQoJLSBiZSByZWFkeSBvbmNlIG1vdXNlIHdpbGwgYmUgcmVwb3J0ZWQgcmVsYXRpdmVseQoKCSogd2luZG93cy9tZGkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgY29weWluZyBvZiB0aGUgTURJICdXaW5kb3dzJyBtZW51IGl0ZW1zIGlmIHRoZSBpdGVtcyBhcmUgbm90IG9mCgl0eXBlIE1GVF9TVFJJTkcuCgoJKiBjb250cm9scy9tZW51LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNldCB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIGNjaCBlbGVtZW50IG9mIE1FTlVJVEVNSU5GTyBpbgoJR2V0TWVudUl0ZW1JbmZvLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHNwZWMgZmlsZSBlbnRyaWVzIGZvciBFbnVtRm9udEZhbWlsaWVzRXgqLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGdXJ0aGVyIGNvZGUgc2ltcGxpZmljYXRpb25zIGFuZCBpbnRlcmZhY2UgKGNvbnNpc3RlbmN5KSBpbXByb3ZlbWVudHMuCglGaXggc2VsZWN0aW9uIG9mIHRoZSBXaW5lIGJpbmFyeSB3aGljaCB3YXMgYnJva2VuIGJ5IGEgcmVjZW50IGNoYW5nZS4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgcHJvcGVyIHRlcm1pbmF0aW9uIHVwb24gZmFpbHVyZS4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmFzaWMgdHlwZSBldmFsdWF0aW9uLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUVuc3VyZSB0aGF0IG5vbi1OVUxMIHRlcm1pbmF0ZWQgc3RpbmdzIGFyZSBzYXZlZCBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHRoZSBOb3RpZnlDb2RlIGluIHRoZSBXTV9DT01NQU5EIG1lc3NhZ2Ugc2VudCBieQoJS0JEX3RyYW5zbGF0ZV9hY2NlbGVyYXRvcigpLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNsaWdodGx5IGJldHRlciBSRVFVRVNUIFNFTlNFIGR1bXBpbmcsIGZpeGVkIEdFVF9ERVZfVFlQRSByZXR1cm5zLAoJd29yayBhcm91bmQgRVhFQyBTQ1NJIGNvbW1hbmRzIHdoaWNoIGRvIG5vdCBzZXQgdGhlIGhvc3Q8LT50YXJnZXQgZGF0YQoJZmxhZ3MsIGlnbm9yZSBlcnJvcnMgb24gRFZEIFJFUE9SVCBLRVkvRFZEIFNFTkQgS0VZLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQ2hhbmdlZCBQVFJBQ0VfUEVFS1VTRVIgdG8gUFRSQUNFX1BFRUtVU1IgYW5kIFBUUkFDRV9QT0tFVVNFUiB0bwoJUFRSQUNFX1BPS0VVU1IgZm9yIGxpYmM1KD8pIGNvbXBpbGUuCgoJKiBjb250cm9scy9jb21iby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdG9wIGEgV01fU0VUVEVYVCBtZXNzYWdlIChhbmQgZnJpZW5kcykgdG8gYSBjb21ibyBzZW5kaW5nIENCTl9FRElUKgoJbWVzc2FnZXMgdG8gdGhlIHBhcmVudC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvaGVhcC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIChjb3JyZWN0KSBwcm90b3R5cGUgZm9yIEhlYXBXYWxrLgoKCSogZGxscy9vbGUzMi9pZnMuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gVGhlIElDT01fQ01FVEhPRHh4eCBjYXVzZSBwcm9ibGVtcyBiZWNhdXNlIHRoZSAnY29uc3QnIGNoYW5nZXMgdGhlCgkgIHNpZ25hdHVyZS4gVGhlcmUncyBubyBzdWNoIHRoaW5nIG9uIFdpbmRvd3MgYW55d2F5IChpdCdzIGEgc2hhbWUpIHNvCgkgIGp1c3QgcmVtb3ZlIHRoZW0gYWx0b2dldGhlci4KCS0gSGVhcE1pbmltaXplIHJldHVybnMgYSB2b2lkLCBub3QgYSAndm9pZConCgoyMDAwLTAzLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2Rlc2t0b3AuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3Mvd2luLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaXNwbGF5L2Rpc3BsYXlfbWFpbi5jLCBkbGxzL21vdXNlL21vdXNlX21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9tb25pdG9yLmgsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglNb3ZlZCBncmFwaGljcyBpbml0aWFsaXNhdGlvbiB0byB0aGUgeDExZHJ2L3R0eWRydiBkbGwgaW5pdCBjb2RlLgoJTWVyZ2VkIGV2ZW50LCBrZXlib2FyZCBhbmQgbW91c2UgZHJpdmVycyBpbnRvIFVTRVIgZHJpdmVyLgoKMjAwMC0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCUltcHJvdmVkIENvbXBhcmVTdHJpbmdBIHBlcmZvcm1hbmNlLgoKCSogbGlicmFyeS93aW5lc3R1Yi5jOiBBZGRlZCBtaXNzaW5nIGRlYnVndG9vbHMuaCBpbmNsdWRlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmMsIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jLCBwcm9ncmFtcy92aWV3L2luaXQuYywgcHJvZ3JhbXMvdmlldy92aWV3LmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCUZpeGVkIHNvbWUgY29tcGlsZXIgZXJyb3JzIGFuZCB3YXJuaW5ncy4KCgkqIG9sZS9vbGUybmxzLmM6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCVRlbXBvcmFyaWx5IGltcGxlbWVudGVkIHRoZSBMQ01BUF9TT1JUS0VZIGZsYWcgaW4gdGhlIExDTWFwU3RyaW5nVygpCglmdW5jdGlvbiBwZW5kaW5nIGEgbW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBsb2NhbGVzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJSGFjazogYWx3YXlzIHRyeSBidWlsdGluIG1vZHVsZSBiZWZvcmUgZWxmIG9yIGVsZmRsbCB0byBhdm9pZCBsb2FkaW5nCglhIGJ1aWx0aW4gZGxsIC5zbyBmaWxlIGluIHRoZSB3cm9uZyBtb2RlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jOgoJTW92ZWQgZm9udCByZXNvdXJjZSBmdW5jdGlvbnMgb3V0IG9mIHRoZSBYMTEgZHJpdmVyLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igc291cmNlIGZpbGVzIHN0b3JlZCBpbiBzdWJkaXJlY3Rvcmllcy4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYzoKCUFkZGVkIEdldERDT3JnRXggaW4gZ3JhcGhpY3MgZGV2aWNlIGludGVyZmFjZSBhbmQgcmVtb3ZlZCBYMTEgY29kZQoJZnJvbSBkYy5jLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ21lbnRlZC9saW5lYXIgYnVmZmVycyBtYW5pcHVsYXRpb24uCglCZXR0ZXIgSU8gYnVmZmVyaW5nLgoJQWRkZWQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRXhwbGljaXRseSB1c2UgdGhlIFRWTl94eHhBIHZlcnNpb24gb2YgdGhlIG1hY3Jvcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIEFkZGVkIHRoZSBUVk5feHh4QSBtYWNyb3MKCS0gQWRkZWQgbWlzc2luZyBUQk5PVElGWSBtYWNyb3MgYW5kIHR5cGVzCgktIEFkZGVkIFNORE1TRwoKCSogaW5jbHVkZS93aW51c2VyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgV01fQVBQLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3gxMWRydi5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvbWFpbi5jLCBtaXNjL3ByaW50ZHJ2LmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy94bWFsbG9jLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIG1vc3QgY2FsbHMgdG8geG1hbGxvYy94cmVhbGxvYy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBBZGRlZCBtaXNzaW5nIGRlZmluaXRpb24gZm9yIEdMT0JBTEhBTkRMRSBhbmQgTE9DQUxIQU5ETEUKCS0gRml4ZWQgdGhlIHByb3RvdHlwZSBvZiBXTkRFTlVNUFJPQwoKCSogaW5jbHVkZS9kZGVtbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogd2luZG93cy9kaWFsb2cuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJUHJvcGFnYXRlIElzRGlhbG9nTWVzc2FnZSB0byB0aGUgcGFyZW50IGlmIHRoZSBkaWFsb2cgaGFzIHRoZQoJRFNfQ09OVFJPTCBmbGFnLgoKCSogbWVtb3J5L3N0cmluZy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGFuIGV4Y2VwdGlvbiBmcmFtZSBmb3IgbHN0cmNweTE2LgoKCSogbG9hZGVyL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgYXR0YWNoaW5nIGltcG9ydGVkIERMTHMgb2YgYSB3aW5lbGliIGV4ZWN1dGFibGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJT2xlSXRlbUNvbnRhaW5lciBoYXMgT0xFR1VJRCgweDExYyksIG5vdCAweDExYS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG1lbW9yeSBjb3JydXB0aW9uIHdpdGggQ29UYXNrTWVtUmVhbGxvYy4KCgkqIHRvb2xzL2dlbnBhdGNoOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglNYWRlIHZhcmlvdXMgY2hhbmdlcyB0byB0b29scy9nZW5wYXRjaCBpbmNsdWRpbmcgc3VnZ2VzdGlvbnMgZnJvbSBPdmUKCUthYXZlbiAoUGxhY2UgYWRkZWQgZmlsZXMgbGFzdCBpbiB0aGUgcGF0Y2guICBBZGQgYSBzd2l0Y2ggdGhhdAoJc3BlY2lmaWVzIG1vZGlmaWVkIGZpbGVzLikKCgkqIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5udC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vdmVkIHRoZSBkZWZpbml0aW9uIG9mIFBUU1RSIGFuZCBMUFRTVFIgZnJvbSB0Y2hhci5oIHRvIHdpbm50LmguCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTaG91bGQgaW5jbHVkZSAnd2luc3Bvb2wuaCcuCgoJKiB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBBbiBleHRlcm4gc3RhdGVtZW50IGZpbmlzaGVzIHdpdGggdGhlIGZpcnN0IGNsb3NpbmcgJ30nIG9yIHRoZSBmaXJzdAoJICBvdXRlciAnOycKCS0gSGFuZGxlICcjZXJyb3InLCAnI2xpbmUnIGFuZCAnI3ByYWdtYScgZXZlbiB3aGVuIGluIHRoZSAncHBfc3RyaXBzJywKCSAgJ3BwX3N0cmlwZScsICdwcF9zdHJpcHAnIG9yICdwcF9mYWxzZScgY29udGV4dHMgKGp1c3QgbGlrZSAnI2lmJyBhbmQKCSAgY28pLiAgQnV0IHN0aWxsIGRvbid0IGlzc3VlIGFuIGVycm9yIGlmICcjZXJyb3InIGlzIGZvdW5kIHdoZW4gaW4gdGhlCgkgICdwcF9mYWxzZScgc3RhdGUuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWFrZSB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIGNvbnRyb2wncyBkZWZpbml0aW9uIG9wdGlvbmFsLgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJU3VwcG9ydCBsb2FkaW5nIGFueSBwcmVzZW50YXRpb24gYXNwZWN0LgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCBhIGxpbmsgZXJyb3IgZnJvbSBhbm90aGVyIERMTCBvbiBGcmVlQlNELgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGpveXN0aWNrIElEL2RldmljZUlEL2RyaXZlciBoYW5kbGUvaW5zdGFuY2UgSUQgbWl4dXAuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCURlbGV0ZSB0aGUgc2htIHNlZ21lbnQgYXMgc29vbiBhcyB3aW5lIGFuZCBYIGhhdmUgYXR0YWNoZWQgaXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IExhcnMgSGVldGUgPGhlbEBhZG1pbi5kZT4KCUNvcnJlY3RlZCBoYW5kbGluZyBvZiBwcm90bz09TlVMTCBpbiBXSU5TT0NLX2dldHNlcnZieW5hbWUgYW5kCglXSU5TT0NLX2dldHNlcnZieXBvcnQuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvLmN2c2lnbm9yZSwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCUNyZWF0ZWQgc2VwYXJhdGUgZGxscyBmb3IgdXNlcixnZGksdHR5ZHJ2LHgxMWRydi4KCUZpeGVkIFdpbmVsaWIgYXJnYyBoYW5kbGluZyAodGhhbmtzIHRvIEVyaWMgUG91ZWNoKS4KCjIwMDAtMDMtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3R3ZWFrLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL3R3ZWFrLmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21haW4uYzoKCU1pc2Mgc21hbGwgY2xlYW51cHMuCgoJKiB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9tYWluLmMsIG1pc2Mvc3B5LmMsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9tZXNzYWdlLmM6CglBdm9pZCBjYWxsaW5nIHRoZSAqUmVjdCBVU0VSIGZ1bmN0aW9ucyBmcm9tIGluc2lkZSBHREkuCglNb3ZlZCBhIGZldyBVU0VSIGZ1bmN0aW9ucyB0byBhIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb24uCgoJKiBsb2FkZXIvbWFpbi5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy92ZXJzaW9uLmMsIG1pc2NlbXUvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3NoZWxsLmgsIHdpbmUuaW5pOgoJTW92ZWQgY29tbWFuZC1saW5lIG9wdGlvbiBoYW5kbGluZyBvdXQgb2YgdGhlIFgxMSBkcml2ZXIuCglBZGRlZCBzdXBwb3J0IGZvciAiLS0iIHByZWZpeCBvbiBvcHRpb25zLgoJUmVwbGFjZWQgYSBmZXcgWDExIGNvbW1hbmQtbGluZSBvcHRpb25zIGJ5IHdpbmUuY29uZiBwYXJhbWV0ZXJzLgoKMjAwMC0wMy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy92Z2EuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9kZHJhdy5zcGVjLCByZWxheTMyL2RpbnB1dC5zcGVjLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2RpbnB1dC5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlcy5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglNYWRlIGRkcmF3IGFuZCBkaW5wdXQgc2VwYXJhdGUgZGxscy4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUhhdmUgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGV4aXQgbW9yZSBjbGVhbmx5IHdoZW5ldmVyIHBvc3NpYmxlLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUluY2x1ZGUgc3BhY2UgZm9yIHJlc291cmNlcyBpbiB0aGUgbW9kdWxlIGhlYWRlciBpbnN0ZWFkIG9mIGRvaW5nIGEKCXNlcGFyYXRlIGFsbG9jYXRpb24uCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIG1pc2MvbmV0d29yay5jOgoJTWFkZSBNUFIgYSBzZXBhcmF0ZSBkbGwuCgoJKiBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCVJld3JpdGUgdGhlIEJJR0JMT0NLRklMRSBpbXBsZW1lbnRhdGlvbiBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCByZW1vdmUgc29tZSByZWR1bmRhbnQgY29kZS4KCU1ha2UgdGhlIHVzZXIgaW50ZXJmYWNlIG1vcmUgY29uc2lzdGVudCBhbmQgYXBwZWFsaW5nLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglBdm9pZCBhIHJlZmNvdW50IGxlYWsgaW4gUXVlcnlJbnRlcmZhY2Ugd2hlbiBkZWxlZ2F0aW5nLgoJQW5kIGEgY291cGxlIG9mIG1pbm9yIGJ1Z3MuCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnRyb2R1Y2VkIERCR19WQUxVRSBzdHJ1Y3QgdG8gbWFuaXB1bGF0ZSBkZWJ1Z2dlci9kZWJ1Z2dlZSBhZGRyZXNzIHNwYWNlLgoJQWRkZWQgd2F0Y2ggKGhhcmR3YXJlIGFzc2lzdGVkIGRlYnVnZ2luZykgYW5kIHdoYXRpcyAodHlwZSBvZiBleHByKSBjb21tYW5kcy4KCUZpeGVkIHNvbWUgaXNzdWVzIGluIGxvY2FsIHZhcnMgaGFuZGxpbmcgKHN0YWJzIHBhcnNpbmcgJiByZWdpc3RlcnMgb3B0aW1pemF0aW9uKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jYT4KCVVwZGF0ZSBESUIgc2VjdGlvbnMgaW4gdGV4dCBvdXRwdXQgYW5kIGZvciBncmFwaGljcyBwcmltaXRpdmVzLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU1pY2hhZWwgQWJkLUVsLU1hbGVrIChvbiBiZWhhbGYgb2YgQ29yZWwpCglXaGVuIHdlIHdlcmUgc3dpdGNoaW5nIHRvIGFub3RoZXIgZGVza3RvcCwgdGhlIHBvcHVwIHdpbmRvd3MgbG9zdAoJdGhlaXIgV1NfVklTSUJMRSBmbGFnLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJQXZvaWQgU0lHU1RPUC9TSUdDT05UIHJhY2Ugd2hlbiBwdHJhY2UgaXMgZGlzYWJsZWQuCglGaXhlZCBjb250ZXh0IGZsYWdzIGhhbmRsaW5nICh0aGFua3MgdG8gRXJpYyBQb3VlY2gpLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUF2b2lkIFNJR1NUT1AvU0lHQ09OVCByYWNlIHdoZW4gcHRyYWNlIGlzIGRpc2FibGVkLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6IEZpeGVkIGJ1ZyBpbiBnZW5lcmF0ZV9zdGFydHVwX2RlYnVnX2V2ZW50cygpLgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9SRUFETUUsIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuaCwgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmgsIHByb2dyYW1zL3dpbmVtaW5lL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9zaHVhIFRoaWVsZW4gPGZvemV5QG5ldHplcm8uY29tPgoJQWRkZWQgd2luZW1pbmUgYXBwLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbXByb3ZlZCB0aGUgdmlzdWFsIGFwcGVhcmVuY2Ugb2YgdGhlIHVzZXIgaW50ZXJmYWNlLiBNYWRlIHRoZSBjb2RlCglzb21ld2hhdCBzaW1wbGVyLgoKMjAwMC0wMy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjOgoJV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCUltcGxlbWVudGVkIF9yZWFkIGFuZCBfbHNlZWsuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IGNvbnZlcnNpb24gb2YgbGV2ZWwgcGFyYW1ldGVyIGlmIFdJTlNPQ0tfc2V0c29ja29wdCBpcyBjYWxsZWQKCWZvciBvcHRpb24gV1NfU09fRE9OVExJTkdFUi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHJvdW5kaW5nIG9mIHRoZSByZXN1bHQgaW4gTXVsRGl2MTYoKS4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBGcmVlQlNEIGNvbXBpbGF0aW9uLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaCwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1ha2UgcmVnaXN0cnkgdXNhZ2UgYSBsaXR0bGUgbW9yZSBjb3JyZWN0IGFuZCBtb2Rlcm4KCS0gQ3JlYXRlIGhvbWUgZm9yIGFsbCBkcGxheSBuYW1lIHNlcnZlciBmdW5jdGlvbmFsaXR5CgktIEFkZCB0aGUgZnJhbWV3b3JrIGZvciBFbnVtU2Vzc2lvbnMKCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGUKCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglEaW1pdHJpZSBQYXVuIDxkaW1pQGJpZ2Zvb3QuY29tPgoJQ2xlYW5lZCB1cCBkZWJ1ZyBjaGFubmVscyBhIGJpdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglJbXBsZW1lbnRlZCBzdHJldGNoZWQgYmx0cyBmb3IgZGVwdGggMjQgKHVub3B0aW1pemVkKS4KCjIwMDAtMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEZpeGVkIE9VVFBVVF9ERUJVR19TVFJJTkcgcG9pbnRlciBoYW5kbGluZy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUmVtb3ZlZCBQUk9DRVNTX0lzQ3VycmVudCgpLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUFkZGVkIHNwZWNpZmljIHJvdXRpbmVzIGZvciBPVVRQVVRfREVCVUdfU1RSSU5HIGFuZCBFWENFUFRJT04gZGVidWcgZXZlbnRzLgoJR2VuZXJhdGUgYSBicmVha3BvaW50IGV2ZW50IG9uIHByb2Nlc3MgYXR0YWNoLgoJTWlzYyBjbGVhbnVwcyBpbiByZXF1ZXN0IGhhbmRsaW5nLgoKMjAwMC0wMy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcmVseWluZyBvbiBleGNlcHRpb24gY29kZXMgdG8ga25vdyB3aGVuIGRlYnVnZ2VyIGlzIGVudGVyZWQgZm9yIGEKCXNpbmdsZSBzdGVwIHRyYXAuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIG1pc2NlbXUvbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBwcm9jIHRvIHN0YXJ0IGRlYnVnZ2luZyBwcm9jZXNzIGZyb20gaXRzIGNvbW1hbmQgbGluZSAoYnkgbGF1bmNoaW5nIGl0KS4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbnVwLgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBCbGFjayBhcyBhIHZhbGlkIGZvbnQgd2VpZ2h0LgoJQ29wZSB3aXRoIGFmbSBmaWxlcyB0aGF0IGRvIG5vdCBjb250YWluIHtGYW1pbHl8RnVsbH1OYW1lIGVudHJpZXMuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6IERhdmlkIEVsbGlvdHQgPGRmZUBuZXRuaXRjby5uZXQ+CgktIEdvdCByaWQgb2YgUFJPRklMRSBmdW5jdGlvbnMuCgktIFVzZSBmdW5jdGlvbmFsaXR5IG9mIGFzcGkuYy4KCS0gQXV0b21hZ2ljYWxseSByZWFkIC9wcm9jL3Njc2kvc2NzaSAocGFydCBvZiBhc3BpLmMgd2hpY2ggaXMgYWxyZWFkeQoJICBpbiB0cmVlKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJSGFuZGxlIDI0IGJpdCBESUJzIDwtPiAyNCBiaXQgZGVlcC8yNCBiaXRzIHBlciBwaXhlbCBYSW1hZ2VzLgoKCSogcHJvZ3JhbXMvdmlldy9nbG9iYWxzLmg6IE1pa2UgQ2FzdGxlIDxkYWxnb2RhQGl4Lm5ldGNvbS5uZXQ+CglBZGRlZCByZXNvdXJjZS5oIGluY2x1ZGUuCgoJKiB3aW5kb3dzL3JlY3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJc1JlY3RFbXB0eSBhbHNvIHJldHVybnMgdHJ1ZSBmb3IgbmVnYXRpdmUgd2lkdGgvaGVpZ2h0cyAodmVyaWZpZWQKCWFnYWluc3QgV2luZG93cyksIGZvdW5kIGJ5IEJyYWQgT2xpdmVyIDxicmFkbWFuQHBvYm94LmNvbT4uCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJVGFrZSB0eXBlIGZyb20gcmVmZXJlbmNlZCB2YXJpYW50IGZvciBWVF9CWVJFRiAmJiBWVF9WQVJJQU5ULgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVN0b3JlIHRoZSBsaXN0IG9mIGxvYWRlZCBkbGxzIGluIHRoZSBzZXJ2ZXIsIGFuZCBnZW5lcmF0ZSBkZWJ1ZyBldmVudHMKCWludGVybmFsbHkuCgoyMDAwLTAzLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJQWRkZWQgc2VydmVyIHByb3RvY29sIHZlcnNpb24gY2hlY2suCgoJKiBpbmNsdWRlL2FzcGkuaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2Rvc2FzcGkuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmgsIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjOgoJRGF2aWQgRWxsaW90dCA8ZGZlQG5ldG5pdGNvLm5ldD4KCS0gU2xpZ2h0bHkgcmV3b3JrZWQgaW5jbHVkZSBmaWxlcyAobGVzcyBtZXNzeSwgbW9yZSBzdHJhaWdodGZvcndhcmQpLgoJLSBNb3ZlZCBET1MgQVNQSSBmdW5jdGlvbmFsaXR5IHRvIG1zZG9zL2Rvc2FzcGkuYy4KCS0gR290IHJpZCB1c2luZyBQUk9GSUxFIHRvIGdldCBTQ1NJIGluZm8gZnJvbSB3aW5lLmNvbmYuCgktIFJlYWQgc2NzaSBpbmZvIGZyb20gL3Byb2Mvc2NzaS9zY3NpLgoJLSBBZGRlZCBzZXR0aW5nIG9mIGEgcmVhc29uYWJsZSB0aW1lb3V0IHdoZW4gb3BlbmluZyBhIFNDU0kgZGV2aWNlICg1CgkgIG1pbnV0ZXMsIGRlZmluZWQgaW4gd2luZXNjc2kuaCkuCgktIEV4ZWNTY3NpQ29tbWFuZCBub3cgQUxXQVlTIHBvc3RzLCBldmVuIG9uIGVycm9yICh3aGljaCBpcyB0aGUgY29ycmVjdAoJICBiZWhhdmlvcikuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgcmVzb3VyY2VzL3N5c3Jlc19Tay5yYywgcmVzb3VyY2VzL3VzZXIzMi5yYzoKCVNpbWVuIFphbWVjbmlrIDxzaW1lbkBuZXh0cmEuc2s+CglBZGRlZCBTbG92YWsgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgcmVzb3VyY2VzLy5jdnNpZ25vcmUsIHJlc291cmNlcy9zeXNyZXNfSmEucmMsIHJlc291cmNlcy91c2VyMzIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYzoKCUp1bmljaGkgS3VjaGluaXNoaSA8amt1Y2hpQG1haG9yb2JhLm5lLmpwPgoJQWRkZWQgc29tZSBKYXBhbmVzZSByZXNvdXJjZXMuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlc3RkLmgsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmVycm9yLmg6CglBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIE9MRSBjbGlwYm9hcmQgZnVuY3Rpb25hbGl0eSBmb3IgRW1iZWQgU291cmNlIGZvcm1hdC4KCUl0IGhlbHBzIHlvdSBjdXQgYW5kIHBhc3RlIGRhdGEgd2l0aCBFbWJlZCBTb3VyY2UgZm9ybWF0IGJldHdlZW4KCWFwcGxpY2F0aW9ucy4gIEl0IGFsc28gaW1wbGVtZW50cyBPbGVDcmVhdGVGcm9tRGF0YSBhbmQKCU9sZVF1ZXJ5Q3JlYXRlRnJvbURhdGEgYW5kIGZpeGVzIHNvbWUgYnVncyBpbiBkYXRhY2FjaGUuYy4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJd20tPm1vZG5hbWUgbWlnaHQgYmUgaW52YWxpZCBhdCB0aGUgZW5kIG9mIEZyZWVMaWJyYXJ5LgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2RlYnVnc3RyLmMsIG1pc2MvZXJyb3IuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGVidWdnZXIvc3RhY2suYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbm9uY2xpZW50LmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvc3RydWN0MzIuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5wb3MuaCwgbG9hZGVyL21vZHVsZS5jLCBjb250cm9scy9idXR0b24uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBpbmNsdWRlcyBhbmQgZml4ZWQgdGhlIGNvbXBpbGUgZXJyb3JzLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3NoZWxsLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3dzcHJpbnRmLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUNvcnJlY3RlZCB2YWx1ZSBmb3IgREFZU19JTl9PTkVfWUVBUi4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNsZWFuZWQgdXAgQ1JURExMX191bmxpbmsuCgoJKiBjb250cm9scy9zdGF0aWMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJVGhlIHN0YXRpYyBjb250cm9sIG9ubHkgbmVlZHMgdG8gaW52YWxpZGF0ZSBpdHMgcmVjdCB3aGVuIHdlIFNldFRleHQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9zcHkuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIGZldyBtZXNzYWdlcyBmb3IgSU1FLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWdnZXIuaCwgbWlzY2VtdS9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBkaXJlY3RseSBhY2Nlc3NpbmcgZGVidWdnZWUgbWVtb3J5LgoJRXhlY3V0aW9uIGNvbnRleHQgKG1vZGUsIHN0ZXBzLi4uKSBhcmUgbm93IGxpbmtlZCB0byBhIHRocmVhZC4KCVJlbW92ZWQgc29tZSBYMTEgY3JzdCBoYWNrcy4KCVJld3JvdGUgaW5mby93YWxrIGNvbW1hbmRzLgoJUmVtb3ZlZCBkaXJlY3QgZGVidWdnZXIgaW52b2NhdGlvbiBjb2RlIChhbmQgbW92ZWQgdGhlIHJlc3QgdG8gdGhlIG5ldwoJd2luZWRiZy5jIGZpbGUpLgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvbmV3Zm5zLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9tb2R1bGUuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCVJlbW92ZWQgUERCMzJfREVCVUdHRUQgZmxhZyBhbmQgc2VuZCBhbGwgZGVidWcgZXZlbnRzIHVuY29uZGl0aW9uYWxseS4KCUltcGxlbWVudGVkIElzRGVidWdnZXJQcmVzZW50KCkuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglHZW5lcmF0ZSBDUkVBVEVfUFJPQ0VTUy9USFJFQUQgZGVidWcgZXZlbnRzIGludGVybmFsbHkgaW4gdGhlIHNlcnZlci4KCjIwMDAtMDMtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIGlubGluZSBmdW5jdGlvbnMgU2V0TGFzdEVycm9yIGFuZAoJR2V0Q3VycmVudFRocmVhZElkLiAgQWRkZWQgYXNtIGlubGluZXMgZm9yIEludGVybG9ja2VkKiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvbnRkZGsuaCwgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQWRkZWQgRGJnQnJlYWtQb2ludC4gRml4ZWQgZXhjZXB0aW9uIHJlY29yZCBjb250ZW50cyBvbiBTSUdUUkFQLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBzZWNvbmQgaW5zdGFuY2UgREdST1VQIGxvYWRpbmcuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9tYWluLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU1BJX0dFVElDT05NRVRSSUNTLgoJQ2hhbmdlIFdBUk4gLT4gRklYTUUgZm9yIHVuaW1wbGVtZW50ZWQgU1BJX3MgYW5kIHNldCBhcHByb3ByaWF0ZSBlcnJvci4KCgkqIG1lbW9yeS9nbG9iYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWwgd3JpdGUgdGhlIGNhY2hlZCBzdHJ1Y3QgaW4gR2xvYmFsTWVtb3J5U3RhdHVzLgoKCSogZG9jdW1lbnRhdGlvbi9mb250cywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW5jbHVkZSBpbiB0aGUgQWRkRm9udFJlc291cmNlQS9XIGZpeG1lIG1lc3NhZ2UgYSBwb2ludGVyIHRvIHRoZSBmb250cwoJZG9jdW1lbnQuIEluIHRoaXMgZG9jdW1lbnQgdGVsbCB0aGUgdXNlciBob3cgdG8gZmluZCB0aGUgbmVlZGVkIHRvb2xzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkIGEgbWVzc2FnZSBhbmQgZml4IGVycm9yIGNvZGUgaWYgX193c19nZXRzZXJ2YnluYW1lKCkgYW5kCglfX3dzX2dldHNlcnZieXBvcnQoKSBjYW5ub3QgZmluZCB0aGUgcmVxdWVzdGVkIHNlcnZpY2UuCglGaXggV0lOU09DS19zZXRzb2Nrb3B0KCkgd2hlbiBjYWxsZWQgd2l0aCBvcHR2YWwgcG9pbnRpbmcgdG8gMTYgYml0IGludC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglDaGVjayBmb3IgZXhpc3RlbmNlIGlmIE1NSU9fRVhJU1QgaXMgcGFzc2VkIHRvIE1NSU9fT3Blbi4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYzogSmVmZiBUcmFudGVyIDxqZWZmdEBjb3JlbC5jYT4KCVRoZSBwYXRobmFtZSB3YXMgc3RvcmVkIGluIGEgc3RyaW5nIG9mIHNpemUgMTAwLCB3aGljaCB3YXMgbm90IGFsd2F5cwoJbGFyZ2UgZW5vdWdoLiBJdCBzaG91bGQgYmUgc2V0IHRvIE1BWF9QQVRIICgyNTUpLgoKCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTZXZlcmFsIGZpeGVzIHRvIE1ha2VQcm9jSW5zdGFuY2UuCgoyMDAwLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglBZGRlZCBzdXBwb3J0IGZvciBjcmVhdGluZyBleHRyYSBzeW1saW5rcyBmb3IgLnNvIGZpbGVzIHRoYXQgY29udGFpbgoJbXVsdGlwbGUgZGxscy4KCjIwMDAtMDMtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvLmN2c2lnbm9yZSwgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJTW92ZWQgZGxsLXNwZWNpZmljIG1ha2UgcnVsZXMgdG8gYSBzZXBhcmF0ZSBNYWtlZGxsLnJ1bGVzIGZpbGUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEZpeGVkIGVycm9yIGNoZWNraW5nIGluIHJlZ2lzdHJ5IHNhdmluZy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXU0FDbGVhbnVwIHNob3VsZCBzZXQgbGFzdCBlcnJvciB0byBXU0FOT1RJTklUSUFMSVNFRCBpZiBmYWlsaW5nCgliZWNhdXNlIFdpbnNvY2sgd2FzIG5vdCBpbml0aWFsaXplZC4uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb0xvYWRMaWJyYXJ5IGdldHMgVU5JQ09ERSwgbm90IEFTQ0lJIHN0cmluZ3MuIChzcG90dGVkIGJ5IExhd3NvbgoJV2hpdG5leSksIHJlbW92ZWQgdGhlIGRsbE5hbWUgY29tcG9uZW50IG9mIHRoZSBvcGVuRGxscy4gIEFkZGVkIHNvbWUKCWRlYnVnc3RyX2d1aWQoKS4KCgkqIGRsbHMvbnRkbGwvbnQuYzogRGFuIFNjb3R0IDxkYW4uc2NvdHRAaG9tZS5jb20+CglGaXhlZCB0eXBvcyBpbiBfYWxsZGl2KCkgYW5kIF9hbGxtdWwoKS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1lc3NhZ2UgZm9yIG1pc3NpbmcgeHBtIGRldmVsIGxpYnMgZm9yIGRlYmlhbi9jb3JlbC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglPbGVSZWdHZXRVc2VyVHlwZSBkaWQgcXVlcnkgd3JvbmcgcmVnaXN0cnkga2V5LgoKCSogbWVtb3J5L2dsb2JhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgYXBwbGljYXRpb25zIGNhbGwgR2xvYmFsTWVtb3J5U3RhdHVzKCkgdmVyeSBvZnRlbi4gQ2FjaGUgdGhlCglyZXN1bHRzIG9mIHRoZSBjYWxsIGZvciAxIHNlY29uZCAoc3BvdHRlZCBieSBDb3JlbCkuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldENsaXBib2FyZERhdGExNiBtaWdodCByZXR1cm4gYW4gaW52YWxpZCBnbG9iYWwgaGFuZGxlIChzcG90dGVkIGJ5CglDb3JlbCkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IExpbGlhIFJvdW1pYW50c2V2YQoJY2JDb3VudFNpemVPZkVuaE1ldGFmaWxlIGNhbGxiYWNrIGZ1bmN0aW9uIGluc3RlYWQgb2YgaW5jcmVhc2luZyBhCgljb250ZW50cyBvZiB0aGUgcG9pbnRlciB0byB0aGUgc2l6ZSBpbmNyZWFzZWQgdGhlIHBvaW50ZXIgaXRzZWxmLgoKCSogZG9jdW1lbnRhdGlvbi9wc2RyaXZlcjogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IGRvY3MgdG8gcmVmbGVjdCBjaGFuZ2UgdG8gLndpbmVyYyBwcm9jZXNzaW5nLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgY29uZmlnLmNhY2hlIHByb2JsZW1zLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBWYWhpZCBQb3VybG90ZmFsaQoJVHJhY2tiYXIgY29udG9sIGRpZCBub3QgaGF2ZSBwcm9wZXIgcG9zaXRpb24gdmFsdWUgaW4gY2FzZSBvZgoJU0JfVEhVTUJUUkFDSyBub3RpZmljYXRpb24gbWVzc2FnZTogaXQgd2FzIGFsd2F5cyBzZW5kaW5nIDAuCgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJTWFkZSB0aGUgc2xpZGVyIGNvbnRyb2wgYSByZWN0LiAgSXQgaGFkIGJlZW4gdHJ5aW5nIHRvIGRyYXcgYSBub3RjaGVkCglzbGlkZXIsIGJ1dCB0aGUgcmVzdWx0IGRpZG4ndCBsb29rIHJpZ2h0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFkZSBXSU5TT0NLX3NldHNvY2tvcHQgaGFuZGxlIG9wdGlvbiBTT19ET05UTElOR0VSIGNvcnJlY3RseS4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUNVUlNPUklDT05fSWNvblRvQ3Vyc29yOiBpbmNvbnNpc3RlbnQgTG9jay9VbmxvY2sKCgkqIGZpbGVzL3Byb2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUFJPRklMRV9HZXRTdHJpbmc6IG9ubHkgYWNjZXB0IE5VTEwgZm9yIGtleW5hbWUgdG8gcmV0dXJuIHRoZSBsaXN0IG9mCglrZXlzIGFzIFdpbjk1IGRvZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCUZpeCBhIHNpZ24gYnVnIHdoZXJlIG1lbWNweSB3YXMgY2FsbGVkIHdpdGggbmVnYXRpdmUgbGVuZ3RoLgoKMjAwMC0wMi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogTWFrZSBwcm9maWxlIGtleSBhIGdsb2JhbCBoYW5kbGUuCgoJKiBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93MzJza3JubC5jLCBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluOgoJUmVuYW1lZCBsaWJ3aW4zMnMgdG8gdXNlIHRoZSBwcm9wZXIgZGxsIG5hbWUgKGxpYnczMnNrcm5sKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBtc2Rvcy9pbnQyMS5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJUmVtb3ZlZCBzdXBlcmZsdW91cyAjaW5jbHVkZSBzdGF0ZW1lbnRzIGZvciBoZWFkZXIgZmlsZXMgaW5jbHVkZWQgdHdpY2UuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCU1ha2UgdXBkb3duIGNvbnRyb2wgd29yay4gVXBEb3duIGNvbnRyb2wgYWx3YXlzIHNlbmRzIFdNXypTQ1JPTEwKCW1lc3NhZ2UgYW5kIHVzZXMgU0JfVEhVTUJQT1NJVElPTiBjb2RlIChub3QgU0JfTElORVtVUHxET1dOXSkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGJlaGF2aW9yIG9mIHNlbmRpbmcgV01fQ09OVEVYVE1FTlUgd2hlbiByZWNlaXZpbmcgYQoJV01fUkJVVFRPTlVQLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogTXVyYWxpIFBhdHRhdGhlCgoJVGhpcyBpcyB0aGUgcGF0Y2ggZm9yIHRoZSBPbGVDb252ZXJ0T0xFU1RSRUFNVG9JU3RvcmFnZSB3aW5lIEFQSS4KCVRoaXMgQVBJIGNhbGxzIGFub3RoZXIgZnVuY3Rpb24gY2FsbGVkIE9MRUNPTlZFUlRfTG9hZE9MRTEwIHdoaWNoCgliYXNpY2FsbHkgcmVhZCB0aGUgT0xFIHN0cmVhbSBmcm9tIHRoZSBmaWxlIHRocm91Z2ggdGhlIGNhbGxiYWNrCglmdW5jdGlvbiAodGhpcyBpcyBwYXNzZWQgYnkgdGhlIGFwcGxpY2F0aW9uKS4KCglUaGUgcmVhZGluZyBmb3JtYXQgd2FzIHdyb25nLiBTdGlsbCBJIGFtIG5vdCB2ZXJ5IHN1cmUgdGhpcyBpcyAxMDAgJQoJY29ycmVjdCBmb3JtYXQuIEkgZGlkIHNvbWUgcmV2ZXJzZSBlbmdpbmVlcmluZyBhbmQgZm91bmQgdGhlIGZvcm1hdC4gSQoJaGF2ZSB0cmllZCB3aXRoIGRpZmZlcmVudCBPTEUgb2JqZWN0IGFuZCBpdHMgd29ya2VkIGluIHBhcmFkb3guIEkKCWhhdmVuJ3QgdGVzdGVkIHdpdGggYW55IG90aGVyIGFwcHMuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBzdHVicyBhbmQgYWRkZWQgZm9yd2FyZHMgaW4gb3JkZXIgdG8gbWFrZSBib3RoIHdpbmFwaV9jaGVjawoJYW5kIGNoZWNrbGluayBoYXBweS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCB0aGUgcmVzdCBvZiB0aGUgQVBJIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgZ2xvYmFsIGZpbGUgdG8gdGhlCglsb2NhbCBmaWxlcy4KCjIwMDAtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDogUmVsZWFzZSAyMDAwMDIyNy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2luaXQuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0Q29tcHV0ZXJOYW1lQSgpOiBhZGRlZCBwYXJhbWV0ZXIgY2hlY2sgbGlrZSBXaW45NSBkb2VzLgoKCSogdG9vbHMvYnVpbGQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIHNvbWUgU29sYXJpcyBzcGVjaWZpYyBhc3NlbWJsZXIgcHJvYmxlbXMKCS0gRml4ZWQgc29tZSBtaXNzaW5nIC50eXBlIEBmdW5jdGlvbiAoaGVscHMgZGVidWdnaW5nIHdpdGggZGJ4KQoJLSBGaXhlZCBjb2RlIG5lZWRpbmcgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKV9fIGZvciBub24tR0NDIEVMRiBjb21waWxlcnMKCS0gRml4ZWQgdXNlIG9mIHplcm8gd2lkdGggYXJyYXlzIChBTlNJIEMgdmlvbGF0aW9uKQoJLSBAR09UT0ZGIG9uIFNvbGFyaXMgZG9lc24ndCB3b3JrIC0gdXNlIEBHT1QgYW5kIHJlZGlyZWN0aW9uIGluc3RlYWQKCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBpbmNsdWRlL3NlbGVjdG9ycy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIFNvbGFyaXMgc3BlY2lmaWMgYXNzZW1ibGVyIHByb2JsZW1zLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL2dlbnBhdGNoOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglBZGRlZCB1dGlsaXR5IHRoYXQgZ2VuZXJhdGVzIHBhdGNoZXMgZm9yIHN1Ym1pc3Npb24gdG8KCXdpbmUtcGF0Y2hlc0B3aW5laHEuY29tLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJb2xlYXV0MzIgc2hvdWxkIG5vdCBpbXBvcnQgZnVuY3Rpb25zIGZyb20gb2xlcHJvMzIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IGRpc3BsYXkgdGhlIGNvbnRleHQgbWVudSBvbiBhIGRvdWJsZSBjbGljay4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglTZXQgdGhlIGZvbnQgb24gdGhlIGVkaXQgbGFiZWwgY29udHJvbCB0byB0aGF0IHVzZWQgYnkgdGhlIGxpc3R2aWV3Cgljb250cm9sLiBJdCBhbHNvIHVzZXMgdGV4dCBtZXRyaWNzIHRvIHNldCBhIG1vcmUgcmVhc29uYWJsZSBpbml0aWFsCgllZGl0IGNvbnRyb2wgc2l6ZS4KCglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglIYW5kbGUgTV9TRVRSRURSQVcgaW4gTGlzdFZpZXcuCglGaXggdG8gRW5zdXJlVmlzaWJsZSB0byBoYW5kbGUgc21hbGwgYW5kIGxhcmdlIGljb24gY29ycmVjdGx5LgoJQWRkIGVkaXQgbGFiZWwgZnVuY3Rpb25uYWxpdHkgdG8gdGhlIGxpc3R2aWV3IGFuZCB0aGUgZmlsZSBvcGVuIGRpYWxvZy4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglSZWxhc2VEQyBpbiBDcmVhdGVFZGl0TGFiZWwuCgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQWRkIGZ1bmN0aW9ubmFsaXR5IHRvIGNyZWF0ZSBuZXcgZm9sZGVyIGluIHRoZSBvcGVuIGRpYWxvZy4KCUFkZCBzdXBwb3J0IGZvciByaWdodCBjbGljayBtZW51IGluIGNvbW1vbiBmaWxlIGRpYWxvZy4KCUxJU1RWSUVXX0VuZEVkaXRsYWJlbCBpcyBub3cgaGFuZGxpbmcgTk9OTFBTVFJfVEVYVENBTExCQUNLIGxpc3R2aWV3IGl0ZW1zLgoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJTElTVFZJRVdfR2V0Q29sdW1uQSBmaXggKGRvIG5vdCBjb3B5IHN0cmluZywgcGFzcyBwb2ludGVycykuCgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVByZXZlbnRpbmcgYSBkaXZpZGUgYnkgemVybyB3aGVuIGhhbmRsaW5nIExWV19FTlNVUkVWSVNJQkxFIG1lc3NhZ2UuCgoJRG9uIEtlbGx5CgktSW1wbGVtZW50ZWQgdGhlIHNvcnRpbmcgb24gaW5zZXJ0IG9mIGl0ZW1zIGludG8gYSBMaXN0VmlldyBjb250cm9sCgkgd2l0aCBlaXRoZXIgTFZTX1NPUlRBU0NFTkRJTkcgb3IgTFZTX1NPUlRERVNDRU5ESU5HIHNldC4KCS0oaGVscGluZyBldmlsIGFwcGxpY2F0aW9ucyk6IHNvbWV0aW1lcyBub3Qgc28gd2VsbCBzdHJ1Y3R1cmVkIGFwcHMKCSAoUEZQSTkwLCBpbiB0aGlzIGNhc2UpIHdpbGwgbm90IGZ1bGx5IGluaXRpYWxpemUgc3RydWN0cy4gIEluIHRoZSBjYXNlCgkgb2YgdGhlIExWTV9HRVRJVEVNIG1lc3NhZ2UgdGhlIGFwcCBtYXkgaGF2ZSBvbmx5IGluaXRpYWxpemVkIHRoZSBtYXNrCgkgYW5kIGlJdGVtIG1lbWJlcnMgb2YgdGhlIHN0cnVjdC4gIEFkZGVkIHByb2Nlc3Npbmcgb2YgdGhlIExWSUZfUEFSQU0KCSBtYXNrIGluIHRoZSBjYXNlIHRoYXQgaVN1Ykl0ZW0gd2FzIHNldCBidXQgaXMgaW52YWxpZC91bmluaXRpYWxpemVkLgoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBmb3IgaGFuZGxpbmcgY29ycmVjdGx5IHRoZSBjYW5jZWxsaW5nIG1vZGUgb2YgdGhlIEVkaXQgbGFiZWwuCglGaXggd2lkdGggY2FsY3VsYXRpb24gb2YgdGhlIGVkaXQgbGFiZWwuCgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBiZWhhdmlvciBvZiBzZW5kaW5nIFdNX0NPTlRFWFRNRU5VIHdoZW4gcmVjZWl2aW5nIGEKCVdNX1JCVVRUT05VUC4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBhIHBhaW50aW5nIHByb2JsZW0gd2l0aCBsaXN0dmlldyB3aGVuIHRoZSB2aWV3IGNoYW5nZXMgYW5kIGFuCgllZGl0IGxhYmVsIGlzIGFjdGl2ZS4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBhIG5vdGlmaWNhdGlvbiBwcm9ibGVtIHdpdGggbGlzdHZpZXcuIE9uIGNyZWF0aW9uIGlmIHRoZSB1c2VyCglzcGVjaWZpZXMgYW4gaXRlbSB3aXRoIGZvY3VzIGFuZC9vciBzZWxlY3Rpb24gd2Ugc2hvdWxkIHNlbmQgdGhlCglwcm9wZXIgbm90aWZpY2F0aW9uLiBJbnNlcnQgd2FzIHByZXZlbnRpbmcgTElTVFZJRVdfU2V0SXRlbSBmcm9tCglzZWVpbmcgdGhlIGNoYW5nZXMgYW5kIHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbi4KCglNYWtlIHRoZSBkcmF3IGl0ZW0gcmVjdGFuZ2xlIGNvbnNpc3RlbnQgd2l0aCB0aGUgc2VsZWN0aW9uCglyZWN0YW5nbGUuIFRoaXMgYWxsb3dzIHVzIHRvIGNsaWNrIG9uIHRoZSBmb2xkZXJzIGFuZCBpY29ucyBpbiB0aGUKCWZpbGUgb3BlbiBkaWFsb2cgYm94IGFuZCB0aGUgaXRlbSBhY3R1YWxseSBnZXRzIHNlbGVjdGVkLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0ciBUb21hc2VrIDx0b21hc2VrQGV0Zi5jdW5pLmN6PgoJLSBXcml0ZSBzZXJpYWwgbnVtYmVycyB0byB0aGUgZGV2aWNlIChGQVQpCgktIERSSVZFX1JlYWRTdXBlcmJsb2NrOiBiZXR0ZXIgY2hlY2tpbmcgZm9yIHRoZSBGQVQgZnMuCgoJKiBmaWxlcy9kb3NfZnMuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RnVsbFBhdGhOYW1lIGZpeGVzLgoKMjAwMC0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9zdHJpbmcuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBkZWZpbml0aW9uIG9mIHRoZSBSdGxNZW1vcnkgZnVuY3Rpb25zLiBVc2UgbWFjcm9zIGludGVybmFsbHkgYW5kCglmb3IgV2luZWxpYiwgdXNlIHJlYWwgZnVuY3Rpb25zIGZvciBleHBvcnRzIGZyb20gbnRkbGwuCgoJKiBpbmNsdWRlL29sZTIuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglQcm90b3R5cGVzIE9sZUluaXRpYWxpemUsIE9sZVVuaW5pdGlhbGl6ZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBcnJhbmdlQ3RybFBvc2l0aW9uczogZml4IGZvciB1c2VyLWRlZmluZWQgdGVtcGxhdGUgd2l0aCBubyBzdGMzMi4KCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51LmgsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCVNlbmQgV01fSEVMUCBtZXNzYWdlIHdoZW4gRjEgaXMgcHJlc3NlZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogWXV4aSBaaGFuZyA8eXV4aUBjb3JlbC5jYT4KCUluIHRoZSBsaXN0Ym94LCB3aGVuIHRoZSBsYXN0IGl0ZW0gaXMgc2VsZWN0ZWQgYW5kIGRlbGV0ZWQsIGl0IHN0aWxsCglhcHBlYXJlZCBpbiB0aGUgd2luZG93LgoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJSW4gTElTVEJPWF9VcGRhdGVTY3JvbGwoKSwgaWYgdGhlIGxpc3Rib3ggZGlkIG5vdCBoYXZlIHRoZSBXU19TQ1JPTEwKCXN0eWxlIGl0IHdvdWxkIGp1c3QgcmV0dXJuLiAgVGhpcyBsZWZ0IHRoZSBob3Jpem9udGFsIHNjcm9sbCBiYXIKCXVuaW5pdGlhbGl6ZWQgYW5kIGl0IHdhcyBhcHBlYXJpbmcgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdGJveCB3aGVuCglpdCBkaWQgbm90IGhhdmUgdG8uCgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJTElTVEJPWF9TZXRDb2x1bW5XaWR0aCBhZGRzIGV4dHJhIDIgcGl4ZWxzIHRvIHRoZSBwYXNzZWQgY29sdW1uIHdpZHRoCgkoaXQgc2F5cyBpdCBpcyBmb3IgY29sdW1uIG1hcmdpbnMpLiBPYnZpb3VzbHkgaXQgaXMgd3JvbmcsIGJlY2F1c2UKCW1hcmdpbnMgbXVzdCBiZSBpbnRlcm5hbC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZXJyb3JpbmZvLmM6CglFcnJvckluZm8gZnVuY3Rpb25zIG5lZWQgdG8gYmUgaW4gb2xlMzIsIG5vdCBvbGVhdXQzMi4KCgkqIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6IE1vcmUgcG9ydGFibGUgQ1JURExMX2lzd2N0eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vdmVkIGZpbGUgZnVuY3Rpb25zIHRvIHNobGZpbGVvcC5jCglOZXcgU0hFTExfRGVsZXRlRGlyZWN0b3J5QQoJVXNlIHNoZWxsIG5vdGlmaWNhdGlvbnMuCglFbmFibGVkIGZpbGUgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4IGZvciBPcGVuSWNvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YiBQYXRoSXNEaXJlY3RvcnkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZXMgZm9yIFNoZWxsRXhlY3V0ZUV4LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmFzaWMgaW1wbGVtZW50YXRpb24gb2Ygc2hlbGwgbm90aWZpY2F0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vc2hlbGwzMjogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglVcGRhdGVkLgoKCSogaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgV2luZWxpYiB0eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBpY29uIG5vIDQgKG9wZW4gZm9sZGVyKS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9lcnJvcmluZm8uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL29sZWF1dG8uaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3R1YnMgZm9yIHtDcmVhdGUsR2V0LFNldH1FcnJvckluZm8uCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgc3VjY2VzcyBjb2RlIGluIE9sZUNyZWF0ZSBzdHViIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDogRG9uIEtlbGx5CglJbiBXaW5kb3dzIFByb3BlcnR5IFNoZWV0IGNhbiBoYXZlIGFueSBtaXggb2YgaWNvbi1sZXNzIHRhYnMgYW5kIHRhYnMKCXdpdGggaWNvbnMuICBBZGRzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBpY29uIHdlJ3JlIGFkZGluZyBpcyBub24tTlVMTAoJKG90aGVyd2lzZSByYW5kb20ganVuayBmcm9tIG1lbW9yeSBjYW4gYmUgcmVuZGVyZWQpIHdoZW4gdGhlIGFwcGxpY2F0aW9uCgloYXMgc3BlY2lmaWVkIHRoZSBQU1BfVVNFSUNPTklEIGZsYWcgaXMgc2V0LiAgQ2hhbmdlcyB0byB0aGUgVGFiIGNvbnRyb2wKCXRvIG9ubHkgcmVuZGVyIGljb25zIGZvciB0YWJzIHRoYXQgaGF2ZSB0aGUgVENJRl9JTUFHRSBmbGFnIHNldAoJKHByZXZpb3VzbHksIGlmIHRoZSBmbGFnIHdhcyBzZXQgdGhlIGVudGlyZSBpbWFnZSBsaXN0IG9mIGljb25zIHdhcwoJcmVuZGVyZWQpLgoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZXMgZm9yIHNvbWUgdGFiIGNvbnRyb2wgYnVncwoKCUhlbm5pbmcgSG9mZm1hbm4KCUZpeGVkIHNvbWUgd2lkdGggcHJvYmxlbSB3aXRoIE9XTkVSRFJBVyB0YWIuCgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVRDTV9BREpVU1RSRUNUIGlzIG5vdyByZXR1cm5pbmcgY29uc2lzdGFudCBjb21wYXJlIHRvIFdpbmRvd3MuCgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglGaXhlZCBwcm9ibGVtIHdpdGggdGFiIHNlbGVjdGlvbi4gV2hlbiB5b3Ugc2VsZWN0IHRhYiBpdCBiZWNhbWVzIGZpcnN0Cgl2aXNpYmxlIHRhYi4gTm93IGxlZnRtb3N0IHZpc2libGUgdGFiIGlzIGNhbGN1bGF0ZWQgcHJvcGVybHkuCgktIEFkZGVkIGNvZGUgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdXBkb3duIGNvbnRyb2wuCgktIEZvcmNlZCByZWNhbGN1bGF0aW9uIG9mIHRhYnMnIGNvb3JkaW5hdGVzIHdoZW46CglhKSBhbGwgaXRlbXMgYXJlIGRlbGV0ZWQsCgliKSB3aW5kb3cgc3R5bGUgaXMgY2FuZ2VkCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgbmVjZXNzYXJ5IGRlZmluZXMgYW5kIHN0cnVjdHVyZXMgdG8gY29tcGlsZSBXaW5lTGliIGFwcHMgdXNpbmcKCU1GQyA2LjAgaGVhZGVycy4KCUZpeGVkIHR5cG8gaW4gVENNX1NFVE1JTlRBQldJRFRIIGNvbnN0YW50LgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEJpbGwgSmluIDxiaWxsakBjb3JlbC5jYT4KCUJpdG1hcCBidXR0b25zIHdlcmUgbm90IHJlZnJlc2hlZCBjb3JyZWN0bHkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglUaGlzIHJldmVydHMgTWF0dHMgcGF0Y2guICBUaGUgbWVzc2FnaW5nIG5lZWRzIGRvdWJsZSBjaGVja2luZy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnByb2MuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvdzMyc2NvbWIuYywgbXNkb3MvZHBtaS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3NlbGVjdG9ycy5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9tYWluLmM6CglJbXByb3ZlZCB0aGUgc2VsZWN0b3IgZ2V0L3NldCBmdW5jdGlvbnMuCglTdXBwb3J0IEFOU0ktY29tcGF0aWJsZSBpbmxpbmUgYXNtICh3aXRoIHRoZSBoZWxwIG9mIFBhdHJpayBTdHJpZHZhbGwpLgoKCSogZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCU1hZGUgd2lubW0gYSBzZXBhcmF0ZSBzaGFyZWQgbGlicmFyeS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHRvb2xzL2JpbjJyZXMuYywgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvZGliLmMsIG9sZS9vbGUybmxzLmMsIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgU29sYXJpcyBzcGVjaWZpYyBjb21waWxlciBpc3N1ZS4KCgkqIGZpbGVzL2Rvc19mcy5jLCB3aW4zMi9pbml0LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBkZWJ1ZyBtZXNzYWdlIGNyYXNoZXMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaW1wbGVtZW50IEVudW1PYmplY3RzIGFuZCBHZXRQcm9wZXJ0eSBmb3IgTW91c2UgYW5kIEpveXN0aWNrIGRyaXZlcnMKCS0gaW1wbGVtZW50IFNldERhdGFGb3JtYXQgZm9yIHRoZSBNb3VzZSBkcml2ZXIKCgkqIGRsbHMvd2lubW0vam95c3RpY2svLmN2c2lnbm9yZSwgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21tZGRrLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBoYXJkd2FyZSByZWxhdGVkIGhhbmRsaW5nIHRvIGRsbHMvd2lubW0vam95c3RpY2sgZHJpdmVyLgoJR290IHJpZCBvZiBqb3lTZW5kTWVzc2FnZXMoKSBoYWNrIChub3cgaW1wbGVtZW50YXRpb24gd2l0aCBhIHRpbWVyKS4KCjIwMDAtMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2RlYnVnc3RyLmM6CglSZWxlYXNlIHVudXNlZCBzcGFjZSBpbiBkZWJ1ZyBzdHJpbmdzIHRvIGF2b2lkIHRvbyBmcmVxdWVudAoJd3JhcC1hcm91bmRzIGluIHRoZSBjaXJjdWxhciBidWZmZXIuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluOiBBZGRlZCBpbXBvcnQgb2Ygb2xlcHJvMzIuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgT0xFIGVudHJpZXMgYW5kIGNvbW1lbnRzLgoKCSogb2xlL25scy9qcG4ubmxzOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSmFwYW5lc2Ugc3VwcG9ydCBpbXBsZW1lbnRlZC4KCgkqIG9sZS9vbGUybmxzLmM6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCVN0dWJiZWQgb3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMQ01BUF9TT1JUS0VZIGluIExDTWFwU3RyaW5nVygpIGluCglvcmRlciB0byBhbGxvdyBXaW5kb3dzIDl4IFBlcmwgdG8gc3RhcnQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJVGhpcyBwYXRjaCBpbml0aWFsaXplcyB0aGUgcmV0dXJuIGJ1ZmZlciB1c2VkIGluIEdldFByaW50ZXJEcml2ZXJBIHRvCgl6ZXJvcy4gVGhpcyBwcmV2ZW50cyBidWZmZXIgb3ZlcnJ1bnMgY2F1c2VkIGJ5IGFjY2Vzc2luZyBnYXJiYWdlIGRhdGEuCglTb21lIGltcHJvdmVtZW50cyB0byB0aGUgTlVMTCBjaGVjayBwYXRjaC4KCglHYXV0YW0gSmFpbgoJRW51bVByaW50ZXJzIGlzIG5vdCByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBwcmludGVycyBmb3VuZCBpbiBjYXNlIHRoZQoJcGFyYW1ldGVyIGR3TGV2ZWwgaXMgMS4KCgkqIGRsbHMvbnRkbGwvcmVnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IG92ZXJ3cml0ZSB0aGUgdmFsaWQgT2JqZWN0QXR0cmlidXRlcy0+Um9vdERpcmVjdG9yeS4KCVBlcmZvcm0gY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIGZvciB0aGUgcmVnaXN0cnkgcGF0aHMuCgoJKiBpbmNsdWRlL250ZGRrLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgcmVnaXN0cnkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubmxzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1vdmUgZGVmaW5pdGlvbiBvZiBDUElORk8gc3RydWN0dXJlIGZyb20gd2luYmFzZS5oIHRvIHdpbm5scy5oCglBZGQgZGVmaW5pdGlvbiBvZiBDUElORk9FWCBzdHJ1Y3R1cmUgdG8gd2lubmxzLmgKCgkqIGluY2x1ZGUvY3J0ZGxsLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIHByb3RvdHlwZSBmb3IgQ1JURExMX3djc3RvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciB0b29sYmFyIGJ1dHRvbiBzaXplLgoKCSogbWlzYy9sc3RyLmM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBDaGFyTmV4dEEvQ2hhck5leHRFeEEgZm9yIERCQ1MuCgoJKiB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBtaXNjL2NvbW0uYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9zbm9vcC5jLCB0b29scy9idWlsZC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBncmFwaGljcy9kZHJhdy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQFdQSS5FRFU+CglNaXNjLiBmaXhlcyBmb3IgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmVycm9yLmg6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBPbGVDb252ZXJ0IHJvdXRpbmVzLgoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRG9uJ3QgYWxsb3cgdG8gcmVzaXplIHN0cmVhbSBvcGVuIGluIHJlYWQgb25seSBtb2RlCglBbGxvdyB3cml0ZSBhY2Nlc3MgZm9yIHN0cmVhbS9zdG9yYWdlIG9wZW4gd2l0aCBTVEdNX1JFQURXUklURS4KCVN0Z09wZW5TdG9yYWdlIHJldHVybiB2YWx1ZXMgYXJlIG5vdyBtb3JlIGRldGFpbGVkLgoJRG9uJ3QgcmVseSBvbiBTVEdNX0NSRUFURSBmbGFnIGluIHRoZSBTdG9yYWdlIGNvbnN0cnVjdG9yLgoJUHJldmVudGluZyB0byB3cml0ZSBvdXQgb2YgZGF0ZSBwcm9wZXJ0eS4KCglPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJQWxsb3cgYm90aCBwb3NpdGl2ZSAmIG5lZ2F0aXZlIDMyLWJpdCBpbnRlZ2VycyBhcyB3aXRoIE1GQyBhc3N1bXB0aW9uLgoJVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgMzJiaXQgbGltaXQgb24gSVN0cmVhbTo6Kl9TZWVrIG9wZXJhdGlvbnMuCgoJSm9obiBMaSA8am9obmxAY29yZWwuY2E+CglXaGVuIFdQIG9wZW5zIGEgbGlua2VkIGZpbGUsIHRoZSBtYWxsb2MgZnVuY3Rpb24gaW4KCU9MRUNPTlZFUlRfTG9hZE9MRTEwKC4uLikgcmV0dXJucyBhIE5VTEwuIFRoaXMgY2F1c2VzIGEgbGF0ZXIgV2luZQoJY3Jhc2guIFRoZSBhY3R1YWwgcHJvYmxlbSBpcyB0aGUgZnVuY3Rpb24gcmVhZGluZyBhIGxhcmdlIGRhdGEgbGVuZ3RoLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHNvbWUgbG9jYWwgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBvZiB0aGUgQVBJIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgZ2xvYmFsIGZpbGUgdG8gdGhlIGxvY2FsCglmaWxlcy4KCgkqIGRsbHMvbW91c2UvbW91c2VfbWFpbi5jLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAV1BJLkVEVT4KCUJldHRlciB0aHJlYWQgc2FmZXR5IGZvciBXYXJwUG9pbnRlciBoYWNrLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIEFkZEFjY2Vzc0FsbG93ZWRBY2UuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU29tZSBtb3JlIExpc3RWaWV3XyBtYWNyb3MsIHdpbmVsaWIgZml4ZXMuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBhbGxvY2F0aW9uIG9mIDE2eDE2IGljb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGb3IgdW5pY29kZTogZ2l2ZSB0aGUgc2VsZWN0ZWQgZmlsZW5hbWUgYmFjay4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoZWNrIGZvciBYcG0gaGVhZGVycyBhbmQgYWRkIC91c3IvbG9jYWwvbGliIHRvIC9ldGMvbGQuc28uY29uZiBpZgoJbmVjZXNzYXJ5LgoKCSogd2luZG93cy9wYWludGluZy5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCVdlIGRvbid0IG5lZWQgdG8gY2FsbCBMUHRvRFAgaW4gaGVyZSBhcyBmYXIgYXMgUGF0Qmx0IGRvZXMgaXQgaW50ZXJuYWxseS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJSW4gV2luZG93cywgaWYgUHJvcGVydHlTaGVldCBjYW4ndCBjcmVhdGUgc29tZSBwYWdlIGl0IGp1c3Qgc2tpcHMgaXQuIFRoaXMKCXBhdGNoIGFkZHMgc2ltaWxhciBiZWhhdmlvdXIgdG8gV2luZS4gSXQgYWxzbyBhZGRzIHNvbWUgTlVMTCBjaGVja3MuCgoJPHl1eGlAY29yZWwuY29tPgoJRml4IHByb3BlcnR5IHNoZWV0IGluaXRpYWxpemF0aW9uIGJ1Z3MuCgoJTWF0dGhldyBSb2JlcnRzb24KCVRoZSB0ZW1wbGF0ZSB3YXMgY2FsbGluZyBHZXRBY3RpdmVJbmRleCB3aGljaCB3YXMgbm90IGJlaW5nIHNldCBpbiB0aGUKCXByb3BzaGVldCBjb2RlLCBhbmQgdGhlIGNhbGwgd2FzIG1vdmVkIGJlZm9yZSB3ZSBjYWxsIFNldEFjdGl2ZSAtCgliZWNhdXNlIHRoYXQncyB3aGVyZSB3ZSBxdWVyeSBmb3IgdGhlIEFjdGl2ZSBJbmRleC4KCglOb29tZW4gSGFtemEKCVJlc2l6ZSBwcm9wZXJ0eSBzaGVldCB0byB0aGUgbGFyZ2VzdCBkaWFsb2cgc2l6ZS4KCglEb24gS2VsbHkKCUluIHRoZSBXTV9JTklURElBTE9HIGhhbmRsZXIgZm9yIHRoZSBwcm9wIHNoZWV0LCB0aGVyZSBpcyBhIGNhbGwgdG8KCVBST1BTSEVFVF9Jc1Rvb1NtYWxsKCkgd2hpY2gsIGlmIGl0IHJldHVybnMgVFJVRSwgY2FsbHMKCVBST1BTSEVFVF9BZGp1c3RTaXplKCkuICBDb250cmFyeSB0byBpdHMgY29tbWVudCwgLi5fQWRqdXN0U2l6ZSgpIGFjdHVhbGx5CglhbGlnbnMgdGhlIHNpemVzIG9mIHRoZSAibGFyZ2VzdCIgcHJvcC4gc2hlZXQgZGlhbG9nIHRlbXBsYXRlIGFuZCB0aGUgdGFiCgljb250cm9sLiAgVGhlIElzVG9vU21hbGwoKSBjYWxsIGRvZXNuJ3QgcHJvcGVybHkgY2F0Y2ggdGhpcyBtaXNtYXRjaC4KCU1vZGlmaWVkIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gVFJVRSBpZiB0aGUgc2l6ZXMgbWlzbWF0Y2ggYW5kIHJlbmFtZWQgaXQgdG8KCVBST1BTSEVFVF9TaXplTWlzbWF0Y2goKSB0byByZWZsZWN0IGl0cyBwcm9wZXIgdXNlLgoKCSogZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXZSBkZWZpbmUgUGF0aElTVVJMQSwgc28gdXNlIGl0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglJbiBmdW5jdGlvbiBJTUFHRUxJU1RfSW50ZXJuYWxEcmF3TWFzayB3ZSBoYXZlIHRvIG1hc2sgb3V0IG92ZXJsYXkgbWFzayBpbgoJZlN0eWxlLiBPdGhlcndpc2UgY29tcGFyaXNvbiBmU3R5bGUgPT0gSUxEX05PUk1BTCB3aWxsIG5vdCB3b3JrLCB3aGljaCBsZWFkcwoJdG8gaW1wcm9wZXIgZGlzcGxheSBvZiBvdmVybGF5IGltYWdlcy4KCgkqIHdpbmRvd3Mvd2luLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUFUT01zIGFyZSBjb25zaWRlcmVkIHVuaXF1ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBjbGFzcwoJcG9pbnRlcnMgaW4gRmluZFdpbmRvdy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCU5vdCBhbGwgcmVnaW9uIGZ1bmN0aW9ucyB1cGRhdGVkICd0eXBlJyBmaWVsZCB0byByZWZsZWN0IGN1cnJlbnQKCXJlZ2lvbiBzdGF0ZS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCUVyaWMgV2lsbGlhbXMgPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJTWlub3IgZml4dXBzIGFuZCB0d2Vha2luZywgYW5kIGEgZHVtbXkgaG9vay4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgaGFuZGxpbmcgb2YgZmlsZWRsZyBmbGFncy4KCjIwMDAtMDItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIEZJWE1FIGNvbW1lbnQgZm9yIGVudHJ5IHBvaW50IHBhcmFtZXRlci4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gc3R1YiBmb3IgT0xFMzIuTWtQYXJzZURpc3BsYXlOYW1lCgktIHNwZWxsaW5nIGZpeGVzCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGZpeGVkIG15IHNsaWdodGx5IGluY29ycmVjdCBFbmREaWFsb2cgcGF0Y2gKCS0gY2xlYW5lZCB1cCB3aW4uYwoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSB0aGUgYnVmZmVyIGxpc3QgaW4gdGhlIGRpcmVjdHNvdW5kIG9iamVjdCB0aHJlYWQtc2FmZS4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJdCBzZWVtcyB0byBiZSBHZXRNb2R1bGVGaWxlTmFtZTE2IHRoYXQgY2hlY2tzIGV4ZSB2ZXJzaW9uIG9uIHdoZXRoZXIKCXRvIHJldHVybiBsb25nIG9yIHNob3J0IHBhdGhzLCBub3QgR2V0TW9kdWxlRmlsZU5hbWVBLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZCB0b28gbXVjaCByZWZyZXNoaW5nIHdoZW4gY2hhbmdpbmcgdGhlIGRyaXZlIGluIHRoZSAxNiBiaXRzIGZpbGUKCWRpYWxvZy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRyIFRvbWFzZWsgPHRvbWFzZWtAZXRmLmN1bmkuY3o+CglHZXRMb25nUGF0aE5hbWUgcmV3cml0ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jOgoJQ29yZWwgbWVyZ2U6CgoJUGllcnJlIE1hZ2VhdQoJRG9uJ3QgdXBkYXRlIHRoZSBjb21ibyBib3ggc2VsZWN0aW9uIHdoZW4gY2xvc2luZyB0aGUgZGlhbG9nIG9ubHkgd2hlbgoJY2xpY2tpbmcgb24gT0sgYnV0dG9uLiAgQWRqdXN0IGZpbGUgZGlhbG9nIHNpemUgd2hlbiBoZWxwIGJ1dHRvbiBpc24ndAoJcHJlc2VudC4KCglEb24gS2VsbHkuCglGaXhlcyBwcm9ibGVtcyB3aXRoIG9wZW4gZGlhbG9nIGJveCBmaWx0ZXJzLgoKCVVscmljaCBDemVrYWxsYQoJUHJldmVudHMgdGhlIGhlbHAgYnV0dG9uIGZyb20gZGlzcGxheWluZyBvbiBPcGVuRmlsZSBkaWFsb2dzIHVubGVzcwoJdGhlIHByb3BlciBmbGFnIGlzIHNldCBpbiB0aGUgT1BFTkZJTEVOQU1FIHN0cnVjdC4KCglZdXhpIFpoYW5nCglGaXhlZCBtZW1vcnkgbGVhay4KCglKZWFuLUNsYXVkZSBCYXRpc3RhCglBZGQgdG9vbHRpcHMgdG8gdGhlIGZpbGUgRGlhbG9nIHRvb2xiYXIuCgoJU3lsdmFpbiBCb3VjaGFyZCwgQmlsbCBKaW4KCVRocmVlIG5ldyBmdW5jdGlvbnMKCUVudW1TZWxlY3RlZFBpZGxzLCBHZXROdW1TZWxlY3RlZCwgRklMRURMRzk1X09uT3BlblVzaW5nVmlldzogY29ycmVjdGlvbnMKCUluc3RlYWQgb2YgcGFzc2luZyBpbiBhIGNvcHkgb2Ygb2ZuLCBwYXNzaW5nIGluIHRoZSBwb2ludGVyIG9mIG9mbi4KCglEYXZpZCBHb2xkaW5nCglBICIhIiB3YXMgbWlzc2luZyBpbiBhIGNoZWNrIGFnYWluc3QgbHBzdHJJbml0aWFsRGlyLgoKCVJpY2sgTXV0emtlCglGaXhlZCBjcmFzaDogaWYgZGlhbG9nIGhhcyBubyBmaWxldHlwZXMgYXBwZWFyaW5nIGluIHRoZSBkcm9wZG93biBsaXN0LgoKCU1hdHQgUm9iZXJ0c29uLCBVbHJpY2ggQ3pla2FsbGEKCUZpeGVkIHByb2JsZW1zIG9jY3VycmluZyB3aXRoIHNlbGVjdGlvbiBvZiBmaWxlcyBpbnNpZGUgb3BlbmZpbGVkbGcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYWN0aXZhdGVkIHVzZSBvZiB0ZW1wbGF0ZXMKCS0gbW92ZWQgdGhlIGNyZWF0aW5nIG9mIG5ldyBmb2xkZXJzIHRvIHRoZSBzaGVsbHZpZXcKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdGFydGVkIHdpdGggc2hlbGwtY2xpcGJvYXJkIGhhbmRsaW5nIChjb250ZXh0IG1lbnUgY3V0JnBhc3RlLAoJZHJhZyZkcm9wKS4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVJlbW92ZWQgSXRlbUlETGlzdExpc3QsIHJlb3JnYW5pc2F0aW9uLCBtb3JlIGZvcm1hdHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW1wbGVtZW50ZWQgcmVuYW1lLCBjb3B5IGFuZCBkZWxldGUgZmlsZQoJLSAibmV3IGZpbGUiIGlzIGFjdGl2YXRpbmcgbGFiZWwgZWRpdCBmb3IgcmVuYW1lCgktIGltcGxlbWVudGVkIElTaGVsbFZpZXdfU2VsZWN0SXRlbQoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgY29udGV4dCBtZW51cy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgZmlsZXMgcmVsYXRlZCB0byBjb250ZXh0IG1lbnUgYW5kIGRyYWcgZHJvcCBmaWxlIG9wZXJhdGlvbnMKCS0gcmVuZGVyIGZ1bmN0aW9ucyBmb3IgY2xpcGJvYXJkZm9ybWF0cwoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogU3RlcGhhbmUgTHVzc2llcgoJSW1wbGVtZW50ZWQgUGF0aElzVVJMQSBhbmQgbW9kaWZpZWQgU2hlbGxFeGVjdXRlMTYgdG8gYmUgYWJsZSB0byBsb2FkIFVSTAoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2Ygc2hlbGwgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IGZpbGUgKFNIRmlsZU9wZXJhdGlvbikuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgaW50ZXJuYWwgaW50ZXJmYWNlIGZvciBpdGVtIG1hbmlwdWxhdGlvbiAoY3V0L3Bhc3RlL25ldyBmb2xkZXIvZGVsZXRlL3JlbmFtZSkKCS0gaW1wbGVtZW50ZWQgSVBlcnNpc3RGb2xkZXIyIGludGVyZmFjZQoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IGFQaWRsIGhhbmRsaW5nIGZ1bmN0aW9ucy4KCgkqIG1pc2MvbWFpbi5jOiBBdm9pZCBjcmFzaCBvbiB1c2FnZSBtZXNzYWdlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBBdm9pZCBjcmFzaCBvbiBOVUxMIGRhdGEgcG9pbnRlci4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc3R1YiBmb3IgUnRsQXNzZXJ0KCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIEphcGFuZXNlIGpwMTA2IGFuZCBwYzk4eDEga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIFBST0ZJTEVfIGZ1bmN0aW9ucywgbm93IGFjY2Vzc2luZyBXaW5lIGNvbmZpZyBvcHRpb25zCgl0aHJvdWdoIHRoZSByZWdpc3RyeS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXaGlsZSBjcmVhdGluZyB0aGUgd2luZSBjb25maWcga2V5LCBtYWtlIHN1cmUgdGhhdCBvbmx5IFdpbmUncyBzdWJrZXlzCglhcmUgdm9sYXRpbGUuCgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBwdHIgaW4gUFNEUlZfR2V0RGV2aWNlQ2FwYWJpbGl0aWVzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGEgYml0IG1hZ2ljIHRvIENPTlNPTEVfZ2V0X2lucHV0IHNvIHdlIGRvbid0IGdldCBzaW5nbGUgRXNjYXBlcwoJZnJvbSBmdW5jdGlvbiBrZXkgZXNjYXBlIHNlcXVlbmNlcy4KCjIwMDAtMDItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvYXRvbS5jOiBCdWcgZml4IGZvciBuYXRpdmUgVVNFUi4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgd2luZS5pbmk6CglIYXJkLWNvZGVkIERsbFBhaXJzIGNvbmZpZ3VyYXRpb247IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSB1c2VyIHRvCgljaGFuZ2UgaXQuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL3ZlcnNpb24uYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29uc29sZS9pbnRlcmZhY2UuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZmlsZXMvcHJvZmlsZS5jOgoJU3RvcmUgY29uZmlnIGZpbGUgY29udGVudHMgaW4gdGhlIHJlZ2lzdHJ5IHNvIHdlIG9ubHkgaGF2ZSB0byBsb2FkIGl0CglvbmNlIHBlciBzZXNzaW9uLgoJUmVwbGFjZWQgUFJPRklMRV9FbnVtZXJhdGVXaW5lSW5pU2VjdGlvbiBieSBQUk9GSUxFX0VudW1XaW5lSW5pU3RyaW5nLgoJUmVtb3ZlZCBhIGZldyB1bm5lY2Vzc2FyeS91bnVzZWQgY29tbWFuZC1saW5lIG9wdGlvbnMuCgoyMDAwLTAyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oOgoJU3RvcmUgdGhlIGhhbmRsZSBvZiB0aGUgcHJvY2VzcyBleGUgZmlsZSBpbiB0aGUgc2VydmVyLgoJUmVtb3ZlZCBQUk9DRVNTX0luaXRpYWwoKS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNvbT4KCVNldCB0aGUgdHlwZSBvZiBWYXJCc3RyRnJvbURhdGUgdG8gZHdGbGFncywgaW5zdGVhZCBvZiBsY2lkLgoKCVVscmljaCBDemVrYWxsYSAgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCB0aGUgcHJvYmxlbSB3aXRoIHRoZSBkYXRlIGJlaW5nIG9mZiBieSBvbmUuCgoJUGV0YXIgRGp1a2ljCglWYXJpYW50Q29weSB3YXMgaWdub3JpbmcgVlRfRElTUEFUQ0gsVlRfVU5LTk9XTiwgYW5kIFZUX1ZBUklBTlQuIFNhbWUKCXdpdGggVmFyaWFudENsZWFyLgoJQ29lcmNlIGZ1bmN0aW9uIGRvZXNuJ3QgaW1wbGVtZW50IGNvZXJjaW9uIGZvciBWVF9ESVNQQVRDSCB0eXBlLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi91c2VyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkL2NvcnJlY3RlZCBvcmRpbmFscyBvZiBrZXJuZWwsIGdkaSwgdXNlci4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUG9wdXAgd2luZG93cyB3aWxsIGJlIGhpZGRlbiB3aGVuIG1pbmltaXppbmcgdGhlIG1haW4gZnJhbWUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNoYW5nZWQgdGhlIGxvYWRpbmcgb2YgdHlwZWxpYiBmaWxlcyB0byB1c2UgYSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkCglvZiByZWFkaW5nIHRoZSBmaWxlIGJpdCBieSBiaXQuCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURSSVZFX0ZpbmREcml2ZVJvb3QoKSBhbHdheXMgY2hlY2tlZCBmcm9tIGRyaXZlIEE6IHRvIFo6IGZvciBlYWNoCglwYXRoIGNvbXBvbmVudCBldmVuIGlmIGEgbWF0Y2ggYWxyZWFkeSBvY2N1cnJlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwcm90b3R5cGUgZm9yIE9sZVRyYW5zbGF0ZUNvbG9yLgoKCSogZmlsZXMvZmlsZS5jOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUFkZGVkIFdBUk4gbWVzc2FnZXMgb24gb3BlbiBlcnJvcnMuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgaXMgMTAyNCBieXRlcyBpbiBXaW4zMi4KCjIwMDAtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3Nub29wLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3JlZ2lvbi5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9kZGVtbC5jLCBtaXNjL3Rvb2xoZWxwLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZHJpdmVyLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGZpbGVzL2Rvc19mcy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNb3ZlZCBTeXN0ZW1IZWFwIGFsbG9jYXRpb25zIHRvIHRoZSBwcm9jZXNzIGhlYXAuCgoJKiB3aW5kb3dzL3dpbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvIG5vdCB1c2UgR2xvYmFsRmluZEF0b20gd2l0aCBhdG9tIGhhbmRsZXMgaW4gQ3JlYXRlV2luZG93KiBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglTZW5kIFdNX0hFTFAgbWVzc2FnZSB3aGVuIEYxIGlzIHByZXNzZWQuCgoJKiBvbGUvbmxzL2JyZi5ubHMsIG9sZS9ubHMvY29yLm5scywgb2xlL25scy9jeW0ubmxzLCBvbGUvbmxzL2dhZS5ubHMsIG9sZS9ubHMvZ2RoLm5scywgb2xlL25scy9nZHYubmxzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglBbGFzdGFpciBNY0tpbnN0cnkgPEFsYXN0YWlyLk1jS2luc3RyeUBkaWdpdGFsLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgY2VsdGljIGxhbmd1YWdlczogSXJpc2ggR2FlbGljLCBTY290cwoJR2FlbGljLCBNYW54IEdhZWxpYywgQnJldG9uLCBXZWxzaCwgQ29ybmlzaC4KCjIwMDAtMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBzdHViIGZvciBDb1Jlc3VtZUNsYXNzT2JqZWN0cy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIGFyZ3VtZW50IHByaW50aW5nIHRvIHN0dWJzCgktIHJlcGxhY2VkIG1lbWNtcCBieSBJc0VxdWFsR1VJRAoJLSBpbXBsZW1lbnRlZCBHZXRDYXBhYmlsaXRpZXMgZm9yIE1vdXNlIGFuZCBLZXlib2FyZAoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCWlvY3Rsc29ja2V0KCkgbm93IHJldHVybnMgc3VjY2VzcyBpZiB0aGUgYXBwIHNldHMgbm9uYmxvY2tpbmcgbW9kZSBmb3IKCVdTQUFzeW5jU2VsZWN0KCktZWQgc29ja2V0cy4KCgkqIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgRnJlZUJTRCBjb21waWxlLgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIGNyYXNoIG9uIG1jaSBjaGFubmVsIHRyYWNpbmcKCS0gZml4ZWQgMTYgdG8gMzIgYml0IHRyYW5zbGF0aW9uIGZvciBNQ0lfQlJFQUsgYW5kIE1DSV9TWVNJTkZPIG1lc3NhZ2VzCgoyMDAwLTAyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU1vdmVkIENMSVBQSU5HX1VwZGF0ZUdDQ2xpcHBpbmcgY2FsbCBvdXRzaWRlIG9mIHRoZSBYMTEgc2VjdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgU1RJTExfQUNUSVZFLgoKCSogc2VydmVyL3JlcXVlc3QuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9jbGllbnQuYzoKCUp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgdGhlIHVuaXggZG9tYWluIHNvY2thZGRyIGxlbmd0aC4KCgkqIG1pc2MvY2Ryb20uYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4ZWQgQ0RST01fQXVkaW9fU2VlayBmb3Igbm9uLWxpbnV4IHN5c3RlbXMuCgoJKiBvYmplY3RzL2dkaW9iai5jLCBpbmNsdWRlL2dkaS5oOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUdldE9iamVjdEEoKSBub3cgcmVqZWN0cyBHREkgaGFuZGxlcyB3aGljaCBhcmUgaW52YWxpZC4KCgkqIG1pc2MvdmVyc2lvbi5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglWRVJTSU9OX0dldFN5c3RlbURMTFZlcnNpb24gY3Jhc2hlZCB3aGVuIGJlaW5nIGNhbGxlZCBvbiBhIC5zby4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEaXNwbGF5IHRoZSBzeXN0ZW0gcG9wdXAgbWVudSB3aGVuIGNsaWNraW5nIHdpdGggdGhlIHJpZ2h0IG1vdXNlCglidXR0b24gaW4gdGhlIHdpbmRvdyBjYXB0aW9uLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYzogUmVtb3ZlZCBjaGVjayBmb3IgY2xhc3MgZXhpc3RlbmNlLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHN1cGVyZmx1b3VzIEdsb2JhbEZpbmRBdG9tIGNhbGxzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVJlYWRpbmcgb2YgcmkgYmxvY2tzLgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nLgoKCSogd2luZG93cy9tZGkuYzogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglDaGVjayB0aGF0IGNpLT5oV2luZG93TWVudSBpcyBub3QgemVybyBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJRGF2aWQgSG93ZWxscyA8RGF2aWQuSG93ZWxsc0BuZXhvci5jby51az4KCUltcGxlbWVudGVkIGlzdyooKSB3Y3R5cGUuaCBmdW5jdGlvbnMuCgoJKiBtaXNjZW11L21haW4uYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXhlZCBvZmYtYnktb25lIGVycm9yLgoKCSogbWVtb3J5L2F0b20uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJTW92ZWQgZ2xvYmFsIGF0b21zIHRvIHRoZSBzZXJ2ZXIgKGJhc2VkIG9uIHRoZSB3b3JrIG9mIFNlcmdlaQoJVHVyY2hhbm92IDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4pLgoKMjAwMC0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQWRkZWQgYSBQVEVYVE1FVFJJQ1tBfFddIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUFkZGVkIHR5cGVkZWZzIGZvciBQU0hPUlQgYW5kIFBVU0hPUlQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVByb3RlY3QgRW5kRGlhbG9nKCkgZnJvbSBpbnZhbGlkIHdpbmRvdyBoYW5kbGVzLgoKCSogZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlcGxhY2VkIGZwcmludGZzIGJ5IHByb3BlciBkZWJ1ZyBtYWNyb3MgYW5kIGZpeGVkIHNvbWUgY29tcGlsYXRpb24gd2FybmluZ3MuCgoyMDAwLTAyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZHJhdy5oOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIEdVSURzLCBkZWZpbmVzLCBhbmQgc3RydWN0dXJlcyBmb3IgRGlyZWN0WDcuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX1J1LnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCU9sZWcgS29yZGEgPG9sZWdAaXNwLm5zYy5ydT4KCUFkZGVkIFJ1c3NpYW4gdHJhbnNsYXRpb24uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IFBoaWxsaXAgRXpvbHQgPGV6b2x0QHBlcmYuemtvLmRlYy5jb20+CglBZGRlZCBtaXNzaW5nIGdvdG8gaW4gc3dpdGNoIHN0YXRlbWVudC4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluaXRpYWxpemUgdGhlIE5PTkNMSUVOVE1FVFJJQ1Mgd2l0aCAwIChoZWxwcyBtb29yaHVobi5leGUpLgoKCSogd2luMzIva2VybmVsMzIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBncmFwaGljcy9wc2Rydi9hZm0uYywgZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbGR0LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIG1pc2MvZGVidWdzdHIuYywgbWlzYy9lcnJvci5jLCBtaXNjL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludDNkLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL2ludDRiLmMsIG1zZG9zL2lvcG9ydHMuYywgcmVsYXkzMi9zbm9vcC5jLCB0b29scy9tYWtlX2RlYnVnLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvZGRyYXcuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglPcHRpbWl6ZWQgZGVidWdnaW5nIEFQSSB0byByZWR1Y2UgY29kZSBzaXplLgoKCSogbGlicmFyeS93aW5lc3R1Yi5jLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIG9iamVjdHMvbGluZWRkYS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZ3JhcGhpY3MvY2FjaGUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglSZW1vdmVkIGV4dHJhIGluY2x1ZGVzIGZyb20gb2xlLmggYW5kIHdpbmdkaS5oLgoKCSogKi8qOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCAjaW5jbHVkZSBvZiB3aW5nZGkuaCBhbmQgd2luZGVmLmggZnJvbSB3aW51c2VyLmggKGFuZCByZXNvbHZlZAoJdGhlIHJlc3VsdGluZyBjb21waWxhdGlvbiBmYWlsdXJlcykuCgoyMDAwLTAyLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglNYWtlIENMU0lERnJvbVN0cmluZyByZXR1cm4gYSBDTFNJRCBvZiB6ZXJvcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIHdoZW4KCXBhc3NlZCBhIG51bGwgcG9pbnRlci4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB1bmNvbmRpdGlvbmFsIHVzZSBvZiBKT1lERVYuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5kb3dzeC5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxfY2FyZGVuYXNAZGVuZWJhLmNvbT4KCUFkZGVkIGEgYnVuY2ggb2YgbWFjcm9zIG5lZWRlZCBmb3IgY29tcGlsaW5nIFdpbmVsaWIgYXBwcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBMaXN0Vmlld19FZGl0TGFiZWwgbWFjcm9zLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNoYW5nZWQgaW1wb3J0IHRvIG9yZGluYWwuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIElQZXJzaXN0Rm9sZGVyMiBpbnRlcmZhY2UuCgoJKiBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuc3BlYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGltcGxlbWVudGVkIHNlcmlhbCBudW1iZXJzIGZvciBhdWRpbyBDRHMgYW5kIGRhdGEgQ0RzCgktIGJpZyBjbGVhbiB1cCBvZiBtaXNjL2Nkcm9tLmMgYW5kIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jIGZ1bmN0aW9uCgkgIG5hbWluZyBhbmQgc3VjaAoJLSBzcGxpdCBkZWJ1ZyBjaGFubmVsIGNkYXVkaW8gaW50byBjZHJvbSBhbmQgbWNpY2RhCgktIGZpeGVkIHNvbWUgdHlwb3MKCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBpbmNsdWRlL29sZWN0bC5oOgoJU2VhbiBMYW5nbGV5IDxzZWFubEBjb3JlbC5jYT4KCU1hZGUgT2xlQ3JlYXRlRm9udEluZGlyZWN0IGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJlIChleGFjdGx5KSBhcyB0aGUKCWhlYWRlciBmaWxlLiBBZGRlZCBvbGVwcm8zMiBkbGwgc3R1YnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyL1JFQURNRSwgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYzoKCVNlYW4gTGFuZ2xleSA8c2VhbmxAY29yZWwuY2E+CglPTEVQUk8zMiBzdHVicy4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgQ0ZfSERST1AuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmM6IFdvbGZnYW5nIFNjaHdvdHplciA8d29zY2h3b3RAZ214Lm5ldD4KCUV4dGVuZGVkIHRoZSB3aW5tbSBqb3lzdGljayBBUEkgY2FsbHMgdG8gc3VwcG9ydCB0aGUgbmV3IExpbnV4Cglqb3lzdGljayBkcml2ZXIuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUFkZGVkIGNvbnRleHQgZnVuY3Rpb25zIGZvciBGcmVlQlNELgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzogU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglGaXggZm9yIHRoZSBzeXN0ZW0gdHJheSwgSWNvbiBhbmQgcG9wdXAgbWVudSdzIG5vdyB3b3JrLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugd2luZG93IHByb3BlcnRpZXMgaW5zdGVhZCBvZiB3aW5kb3cgbG9uZywgYWxzbyB1c2UgdGhlbSB0bwoJZGV0ZXJtaW5lIGlmIHdlIHJlYWxseSBvd24gYSB3aW5kb3cgYW5kIGNhbiBkZXN0cm95IGl0LgoJVGhlIHBpeGVsZm9ybWF0IGZvciAyNTYgY29sb3JzIGhhcyBQQUxFVFRFfFJHQiBmbGFncyAoVG9tYiBSYWlkZXIgMikKCVNldCBwYWludGFibGUgZmxhZyBmb3IgYXBwbGljYXRpb24gcGFzc2VkIGNvb3BlcmF0aXZlL2RyYXdpbmcgd2luZG93LgoJR2V0RGlzcGxheU1vZGU6IFdlIG1pZ2h0IGhhdmUgYW5kIGRvIHN1cHBvcnQgMiBiYWNrYnVmZmVycy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVJ1bm5pbmcgb2JqZWN0IHRhYmxlIGFyZSBub3QgdXNpbmcgMCBhcyBhIHZhbGlkIGluZGV4IGFueW1vcmUuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFN0YXRpYyBPd25lckRyYXcuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhlaWdodCBjYWxjdWxhdGlvbiB3YXMgMSBvZmYgaW4gSW1hZ2VMaXN0X1JlYWQuCgoyMDAwLTAyLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdmlldy9pbml0LmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jLCB0b29scy93cmMvd3JjLmMsIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgaW5jbHVkZS9yZXNvdXJjZS5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCVJlbW92ZWQgcmVzb3VyY2UuaC4KCgkqIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5zcGVjLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvdmlldy5zcGVjLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy93aW52ZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLnNwZWMsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvY29udHJvbC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsIHByb2dyYW1zL3JlZ2FwaS8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuc3BlYywgcHJvZ3JhbXMvcmVndGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvZXhwYW5kLnNwZWMsIGxpYnRlc3QvaGVsbG8uc3BlYywgbGlidGVzdC9oZWxsbzIuc3BlYywgbGlidGVzdC9oZWxsbzMuc3BlYywgbGlidGVzdC9oZWxsbzQuc3BlYywgbGlidGVzdC9oZWxsbzUuc3BlYywgbGlidGVzdC9uZXcuc3BlYywgbGlidGVzdC9yb2xleC5zcGVjLCBsaWJ0ZXN0L3ZhcnRlc3Quc3BlYywgbGlidGVzdC92b2xpbmZvLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIC5zcGVjIGZpbGVzIGZvciBhbGwgbGlidGVzdC8gYW5kIHByb2dyYW1zLyBXaW5lTGliIGFwcHMuCglVcGRhdGVkIGFsbCBNYWtlZmlsZXMgdG8gdXNlIC5zcGVjIGZpbGVzIGFuZCBuZXcgcmVzb3VyY2UgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbGlicmVzLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVzb3VyY2VzL3N5c3Jlcy5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL2xpYnJlcy5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcmVzb3VyY2UuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIC5zcGVjIGtleXdvcmQgJ21vZGUnIHRvIGFsbG93IGNyZWF0aW5nIGJ1aWx0LWluIEVYRSBtb2R1bGVzLgoJVXNlIGJ1aWx0LWluIEVYRSBtb2R1bGVzIGZvciBXaW5lTGliIGFwcHMgKGluc3RlYWQgb2YgRUxGIG1vZHVsZXMpLgoJUmVtb3ZlZCBkdW1teSBFTEYgbW9kdWxlIGNyZWF0aW9uLgoJUmVtb3ZlZCBMSUJSRVMgaGFuZGxpbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgbWVtb3J5IG92ZXJ3cml0ZSBidWcuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIGRlZmluaXRpb25zIHN1Y2ggYXMgQk9PTDE2IGFuZCBJTlQxNiBmcm9tIHdpbmRlZi5oIGludG8KCXdpbmUvd2luZGVmMTYuaC4KCgkqIG9sZS9vbGUybmxzLmM6IEp1bGlvIEPpc2FyIEfhenF1ZXogPGpnYXpxdWV6QGRsZC5uZXQ+CglHZXROdW1iZXJGb3JtYXRBIGltcGxlbWVudGF0aW9uIGFkZGVkLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU2F2ZSBhbmQgcmVzdG9yZSBjdXJzb3IgaW4gV3JpdGVDb25zb2xlT3V0cHV0QS4KCgkqIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9tb250aGNhbC5oLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIEltcGxlbWVudGF0aW9uIG9mIFdNX1NFVEZPUk1BVAoJLSBSZXdvcmtlZCBkcmF3aW5nL3NlbGVjdGlvbgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBXTV9LRVlET1dOCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgSU5UX0ludDE2UmVhZENoYXIgYW5kIG1hZGUgaW50MDkgaGFuZGxlIHNwZWNpYWwga2V5cy4KCgkqIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGFscGhhbnVtZXJpYyBtb2RlIHRvIHRoZSBWR0EgZW11bGF0aW9uLgoJVXNlIHNlcnZpY2UgdGhyZWFkIGZvciB0aGUgcGVyaW9kaWMgcmVmcmVzaC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYW51cCBWR0EgcmVmcmVzaCB3aGVuIHRlcm1pbmF0aW5nLgoKCSogd2luMzIvY29uc29sZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBiYWNrc3BhY2UgY29ycmVjdGx5LgoKMjAwMC0wMS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgTWFrZS5ydWxlcy5pbiwgKi9NYWtlZmlsZS5pbjoKCUJ1aWxkIG1vc3QgZGxscyBhcyBzZXBhcmF0ZSBzaGFyZWQgbGlicmFyaWVzLgoKMjAwMC0wMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBjb25maWd1cmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3lzL3JlZy5oLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9pbWFnZWxpc3QuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3ZlcmxheSBpbmRpY2VzIGFyZSBzaWduZWQgc2hvcnRzICgtMSBtZWFucyBubyBvdmVybGF5KQoJKEltYWdlTGlzdF9TZXRPdmVybGF5SW5kZXgpIHNob3VsZCBhY2NlcHQgLTEgYXMgb3ZlcmxheWluZGV4LgoJKEltYWdlTGlzdF9SZWFkKSBXZSBjYW4gcmVhZCBhIE54TSBiaXRtYXAgZnJvbSB0aGUgc3RyZWFtIGFuZCBoYXZlCgl0byBjb252ZXJ0IGl0IGludG8gYSAxeChNKk4pIGJpdG1hcCwgc2V0IGNDdXJJbWFnZSxjTWF4SW1hZ2UuIEFkZGVkCglkb2N1bWVudGF0aW9uLgoJKG90aGVycykgcmVtb3ZlZCBzb21lIHBvdGVudGlhbCBvcGVyYXRvciBwcmVjZW5kZW5jZSBwcm9ibGVtcy4KCgkqIG9iamVjdHMvZGMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXREZXZpY2VDYXBzOiBzcG90IHlldCB1bnN1cHBvcnRlZCBhY2Nlc3NlcyB0byB0aGUgRGV2aWNlQ2FwcyBzdHJ1Y3QuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIG1pc2NlbXUvbWFpbi5jLCB3aW4zMi9leGNlcHQuYywgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHRlcm5hbC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGRlYnVnZ2VyIHRvIGxpYndpbmUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gV2luZUxpYiBhcHBzLgoJVHJ5IHRvIGludm9rZSBleHRlcm5hbCBkZWJ1Z2dlciBpZiBpbnRlcm5hbCBkZWJ1Z2dlciBjcmFzaGVzLgoJVHJ5IHRvIGhhbmRsZSBlYXJseSBpbnZvY2F0aW9uIG9mIGRlYnVnZ2VyIG1vcmUgZ3JhY2VmdWxseS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFyayBpbml0aWFsIHByb2Nlc3MgYXMgMzItYml0IGZvciBXaW5lTGliIGFwcHMuCglVc2UgdGViLT50aWJmbGFncyBpbnN0ZWFkIG9mIHRlYi0+ZmxhZ3MgKGZvciBXaW45NSBVU0VSMzIgY29tcGF0aWJpbGl0eSkuCglSZW1vdmVkIHVudXNlZCB0aHJlYWQgZXZlbnQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBXaW5kb3dzIHNraXBzIHRoZSAnXHQnIGFuZCAnICcgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHNlY3Rpb24KCSAga2V5IG5hbWVzIG9mIC5JTkkgZmlsZXMuCgktIEZpeGVkIEdldC9Xcml0ZVByaXZhdGVQcm9maWxlU3RydWN0QSgpOgoJICAtIChyZS0pdHJhbnNsYXRlIHRoZSBiaW5hcnkgZGF0YSBpbnRvIEFTQ0lJIGhleCBjaGFycwoJICAtIGFkZCBjaGVja3N1bSAvIGNoZWNraW5nIG9mIGl0CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgY29uZmlndXJlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHN5cy9yZWcuaC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvaW1hZ2VsaXN0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU92ZXJsYXkgaW5kaWNlcyBhcmUgc2lnbmVkIHNob3J0cyAoLTEgbWVhbnMgbm8gb3ZlcmxheSkKCShJbWFnZUxpc3RfU2V0T3ZlcmxheUluZGV4KSBzaG91bGQgYWNjZXB0IC0xIGFzIG92ZXJsYXlpbmRleC4KCShJbWFnZUxpc3RfUmVhZCkgV2UgY2FuIHJlYWQgYSBOeE0gYml0bWFwIGZyb20gdGhlIHN0cmVhbSBhbmQgaGF2ZQoJdG8gY29udmVydCBpdCBpbnRvIGEgMXgoTSpOKSBiaXRtYXAsIHNldCBjQ3VySW1hZ2UsY01heEltYWdlLiBBZGRlZAoJZG9jdW1lbnRhdGlvbi4KCShvdGhlcnMpIHJlbW92ZWQgc29tZSBwb3RlbnRpYWwgb3BlcmF0b3IgcHJlY2VuZGVuY2UgcHJvYmxlbXMuCgoJKiBvYmplY3RzL2RjLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0RGV2aWNlQ2Fwczogc3BvdCB5ZXQgdW5zdXBwb3J0ZWQgYWNjZXNzZXMgdG8gdGhlIERldmljZUNhcHMgc3RydWN0LgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBtaXNjZW11L21haW4uYywgd2luMzIvZXhjZXB0LmMsIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXh0ZXJuYWwuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL3RocmVhZC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBkZWJ1Z2dlciB0byBsaWJ3aW5lIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIFdpbmVMaWIgYXBwcy4KCVRyeSB0byBpbnZva2UgZXh0ZXJuYWwgZGVidWdnZXIgaWYgaW50ZXJuYWwgZGVidWdnZXIgY3Jhc2hlcy4KCVRyeSB0byBoYW5kbGUgZWFybHkgaW52b2NhdGlvbiBvZiBkZWJ1Z2dlciBtb3JlIGdyYWNlZnVsbHkuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hcmsgaW5pdGlhbCBwcm9jZXNzIGFzIDMyLWJpdCBmb3IgV2luZUxpYiBhcHBzLgoJVXNlIHRlYi0+dGliZmxhZ3MgaW5zdGVhZCBvZiB0ZWItPmZsYWdzIChmb3IgV2luOTUgVVNFUjMyIGNvbXBhdGliaWxpdHkpLgoJUmVtb3ZlZCB1bnVzZWQgdGhyZWFkIGV2ZW50LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gV2luZG93cyBza2lwcyB0aGUgJ1x0JyBhbmQgJyAnIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBzZWN0aW9uCgkgIGtleSBuYW1lcyBvZiAuSU5JIGZpbGVzLgoJLSBGaXhlZCBHZXQvV3JpdGVQcml2YXRlUHJvZmlsZVN0cnVjdEEoKToKCSAgLSAocmUtKXRyYW5zbGF0ZSB0aGUgYmluYXJ5IGRhdGEgaW50byBBU0NJSSBoZXggY2hhcnMKCSAgLSBhZGQgY2hlY2tzdW0gLyBjaGVja2luZyBvZiBpdAoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIG1pc2MvcmVnaXN0cnkuYywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCB3aW5lLmluaToKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBmaXhlcywgbG9hZGluZyBvZiBzZXR0aW5ncyBwZXIgdXNlcgoJLSBhdXRvZGV0ZWN0aW5nIG9mIHdpbmRvd3MgcmVnaXN0cnkgdmVyc2lvbgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVGhlIENPTSB2aXJ0dWFsIHRhYmxlcyBtdXN0IHVzZSB0aGUKCSdJQ09NX01TVlRBQkxFX0NPTVBBVF9EdW1teVJUVElWQUxVRScgbWFjcm8gdG8gcHJvdmlkZSBwYWRkaW5nIGluIEMrKy4KCgkqIG1zZG9zL2ludDA5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBpbnQ5IGhhbmRsZXIgYWRkIGtleXN0cm9rZSB0byBCSU9TIGtleWJvYXJkIGJ1ZmZlci4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zbW9kLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCWRvc21vZCBwcm90b2NvbCByZXZpc2lvbiAzLCBmZWF0dXJpbmcgTVBST1RFQ1QgYW5kIEVOVEVSSURMRS4KCgkqIGluY2x1ZGUvd2luY29uLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBjb3VwbGUgb2YgcHJvdG90eXBlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgaW5mb3JtYXRpb24gYWJvdXQgY29kZSBwYWdlcyB0byBkZWZhdWx0IHJlZ2lzdHJ5LgoKCSogY29uZmlndXJlLmluLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVW5peHdhcmUgKFNvbGFyaXMpIGxpbmtlciB0eXBvIGZpeGVkCgktIFNvbGFyaXMgKGFuZCBwb3NzaWJseSBVbml4d2FyZSkgc3BlY2lmaWMgbGlua2VyIHN1cHBvcnQgZm9yIHRoZQoJICBHTlU6aXNtIC0tW25vLV13aG9sZS1hcmNoaXZlCgktIFNvbGFyaXMgbWFrZSBzcGVjaWZpYyBtYWtlZmlsZSBmaXgKCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIHN1cHBvcnQgZm9yIHtzZXQsZ2V0fV90aHJlYWRfY29udGV4dCBhZGRlZC4KCjIwMDAtMDEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglBZGRlZCBvdXIgb3duIHVzZXJfcmVnc19zdHJ1Y3QgZGVmaW5pdGlvbiBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkuCgoJKiBjb250cm9scy9idXR0b24uYywgd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQ29ycmVjdCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBhY2NlbGVyYXRvciBrZXlzIGluIGRpYWxvZ3MgYWNjb3JkaW5nIHRvCgl0aGUgV2luZG93cycgb25lLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vWHgucmMsIHByb2dyYW1zL3Byb2dtYW4vYWNjZWwucmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9QdC5yYywgcHJvZ3JhbXMvd2luaGVscC9YeC5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnJjLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxpbmsgb25seSBhIHNpbmdsZSAucmMgZmlsZSB3aXRoIGFwcGxpY2F0aW9uLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGlmMTYzMi9zbm9vcC5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIEJVR1MsIFJFQURNRSwgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGFkZCBzb21lIGRvY3VtZW50YXRpb24gaXRlbXMKCS0gZml4IHNvbWUgc3BlbGxpbmcKCS0gZml4IHNvbWUgd2FybmluZ3MKCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVscywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RyaXZlLmgsIGxpYnRlc3Qvdm9saW5mby5jLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIHdpbmUuaW5pOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHN1cHBvcnQgZm9yIHJlYWRpbmcgbGFiZWxzIGFuZCBzZXJpYWwgbnVtcyBmcm9tIGRldmljZQoJLSAicmVhc29uYWJsZSIgbWlzYy9jZHJvbS5jIGRldmljZSBoYW5kbGluZwoJLSBtdWNoIGltcHJvdmVkIGF1ZGlvIENEIHN1cHBvcnQKCS0gc2VyaWFsIG51bWJlciBvdmVyd3JpdGUgYnVnIGZpeAoJLSBzcGVsbGluZyBmaXhlcwoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NldHVweC8uY3ZzaWdub3JlLCBkbGxzL3NldHVweC9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cHgvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXB4L3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFNFVFVQWCBkbGwuCgoJKiBkbGxzL29sZTMyL29sZTIuc3BlYywgc2VydmVyL3Byb2Nlc3MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlub3IgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIGZpeGVzLgoJLSBNb3ZlZCBzb21lIG9mIHRoZSBBUEkgc3BlY2lmaWNhdGlvbnMgZnJvbSB0aGUgZ2xvYmFsIGZpbGUgdG8gdGhlCgkgIGxvY2FsIGZpbGVzLgoKCSogaW5jbHVkZS9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgSW1hZ2VMaXN0X1JlYWQgKG5vdCAxMDAlIGNvcnJlY3QgaW4gcmVnYXJkaW5nIHRvIHNldHRpbmcKCXRoZSBiaXRtYXApLgoJRmlsbGVkIG91dCB1bmtub3duIG1lbWJlcnMgb2YgSUxIRUFELgoJU3RhcnRlZCByZW9yZGVyaW5nIElNQUdFTElTVCB0byBtYWtlIGl0IFdpbmRvd3MgYmluYXJ5IGNvbXBhdGlibGUuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbkljb25JbmRleCA9PSAtMSBzaG91bGQgcmV0dXJuIG5yIG9mIGF2YWlsYWJsZSBpY29ucywgbm90IDAuCgoJKiBNYWtlZmlsZS5pbjogRml4ZWQgYnVpbGRpbmcgb2YgZG9zbW9kIGFuZCB3aW5lY2xpcHNydi4KCgkqIG1pc2MvZGVidWdzdHIuYzoKCUJ1ZyBmaXg6IGFkZGVkIHRlbXAgc3RydWN0dXJlIHRvIGNvcGUgd2l0aCBkZWJ1ZyB0cmFjZXMgZHVyaW5nIHRocmVhZAoJc3RhcnR1cC4KCgkqIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL21zZ2JveC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2RlYnVnc3RyLmgsIGxpYnRlc3QvdmFydGVzdC5jLCBsb2FkZXIvcmVzb3VyY2UuYywgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCByZWxheTMyL3V0dGh1bmsuYzoKCVJlbW92ZWQgZGVidWdzdHIuaC4KCgkqIG1pc2MvZGVidWdzdHIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglVc2UgYSBwZXItdGhyZWFkIGJ1ZmZlciBhbmQgd3JpdGUoMikgZm9yIGRlYnVnIHRyYWNlcy4KCVJlbW92ZWQgZGVidWdfZHVtcHN0ci4KCjIwMDAtMDEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUdldCBIQ1UgbmFtZSBmcm9tIHVuaXggdXNlciBuYW1lLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3NlbGVjdG9yLmM6CglJbXBsZW1lbnRlZCBHZXRUaHJlYWRTZWxlY3RvckVudHJ5IHRocm91Z2ggdGhlIHNlcnZlci4KCjIwMDAtMDEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglEeW5hbWljYWxseSBsb2FkIHZlcnNpb24uZGxsIGluIE1NRFJWX0dldERlc2NyaXB0aW9uMzIuCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCVVzZSBhIGxpbmtlZCBsaXN0IGluc3RlYWQgb2YgYSBEUEEgZm9yIHRoZSBob29rIGxpc3QuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCVVzZSBhIGxpbmtlZCBsaXN0IGluc3RlYWQgb2YgYSBEUEEgdG8gbWFuYWdlIHBpeG1hcHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV0dXJucyBhbiBlcnJvciBpZiB0cnlpbmcgdG8gd3JpdGUgdG8gYSBzdHJlYW0gb3BlbmVkIGZvciByZWFkLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkIGEgbmV3YmllIHdhcm5pbmcgZm9yIHNsYXNoZXMgaW4gdGhlIHNlYXJjaCBQYXRoPSBvZiB3aW5lLmNvbmYuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdhaXQgZm9yIFNobUNvbXBsZXRpb24gZHVyaW5nIEZsaXAuCgoJKiBjb25maWd1cmUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglNYWRlIC0tZW5hYmxlLWRsbCB0aGUgZGVmYXVsdC4KCVVzZSAkKE1BS0UpIGluc3RlYWQgb2YgJChTVUJNQUtFKSBmb3IgcmVjdXJzaXZlIG1ha2VzLgoJQ2xlYW5lZCB1cCBpbnN0YWxsIHRhcmdldHMgaW4gbWFpbiBNYWtlZmlsZS4KCgkqIGRsbHMvbnRkbGwvc3luYy5jOiBEb24ndCBjcmFzaCB3aGVuIE9iamVjdEF0dHJpYnV0ZXMgaXMgTlVMTC4KCjIwMDAtMDEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJVXNlIGFyZ3ZbMF0gdG8gbG9jYXRlIHRoZSBzZXJ2ZXIgZXhlY3V0YWJsZS4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCVNoYXJlIHRoZSBzeXN0ZW0gaGVhcCBiZXR3ZWVuIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlcy4gTWFkZSBwcm9jZXNzCgloZWFwIHBlci1hZGRyZXNzIHNwYWNlIGluc3RlYWQgb2YgcGVyLXByb2Nlc3MuCgoJKiBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBNYWtlZmlsZS5pbiwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hZGUgdGhlIHNlcnZlciBsaXN0ZW4gZm9yIG5ldyBjbGllbnRzIG9uIGEgVW5peCBzb2NrZXQgaW4KCSRIT01FLy53aW5lLiBOZXdseSBzdGFydGVkIHdpbmUgcHJvY2Vzc2VzIG5vdyBhdHRhY2ggdG8gYW4gZXhpc3RpbmcKCXNlcnZlciBpZiBvbmUgaXMgcnVubmluZy4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9vcHRpb25zLmg6CglBZGRlZCBQUk9GSUxFX0dldENvbmZpZ0RpciBmdW5jdGlvbi4KCjIwMDAtMDEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyLyouYzoKCUNoYW5nZWQgdGhlIHNlcnZlciB0byByZXR1cm4gU1RBVFVTXyogZXJyb3IgY29kZXMuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvcnRsLmM6CglCdWlsdCBhIGNvbXBsZXRlIHRyYW5zbGF0aW9uIHRhYmxlIGZvciBSdGxOdFN0YXR1c1RvRG9zRXJyb3IuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2lubnQuaDogQWRkZWQgc29tZSBlcnJvciBjb2Rlcy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglVc2UgR2V0UHJvY0FkZHJlc3MgaW5zdGVhZCBvZiBjYWxsaW5nIFNoZWxsQWJvdXRBIGRpcmVjdGx5LgoKMjAwMC0wMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vdmVyLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jOgoJTWVyZ2VkIGRsbHMvdmVyIGludG8gZGxscy92ZXJzaW9uLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBSdGxSZWcqIChyZWFkIGFjY2VzcyksIFJ0bEV2ZW50KiwgUnRsU2VtYXBob3JlKiwKCSAgTnRBbGxvY2F0ZUxvY2FsbHlVbmlxdWVJZAoJLSBpbXBsZW1lbnRhdGlvbiBvciBzdHVicyBmb3IgTnRBY2Nlc3NDaGVjaywgTnRTZXRTZWN1cml0eU9iamVjdCwKCSAgUnRsQ2xlYXJCaXRzLCBSdGxFcXVhbFByZWZpeFNpZCwgUnRsRmluZENsZWFyQml0cywKCSAgUnRsRm9ybWF0Q3VycmVudFVzZXJLZXlQYXRoLCBSdGxHZXRDb250cm9sU2VjdXJpdHlEZXNjcmlwdG9yLAoJICBSdGxJZGVudGlmaWVyQXV0aG9yaXR5U2lkLCBSdGxJbXBlcnNvbmF0ZVNlbGYsIFJ0bEluaXRpYWxpemVCaXRNYXAsCgkgIFJ0bEluaXRpYWxpemVHZW5lcmljVGFibGUsIFJ0bE1ha2VTZWxmUmVsYXRpdmVTRCwKCSAgUnRsUHJlZml4VW5pY29kZVN0cmluZywgUnRsU2V0Qml0cywgUnRsVW5pY29kZVRvTXVsdGlCeXRlTiwKCSAgUnRsVXBjYXNlVW5pY29kZVN0cmluZ1RvT2VtU3RyaW5nLCBSdGxVcGNhc2VVbmljb2RlVG9PZW1OLAoJICBSdGxWYWxpZFNpZCwgUnRseFVuaWNvZGVTdHJpbmdUb09lbVNpemUKCS0gY29ycmVjdGVkIG1vc3QgUnRsU3RyaW5nKiBmdW5jdGlvbnMsIGFkZGVkIGRvY3VtZW50YXRpb24KCS0gbW9yZSBmaXhlcyBhbmQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbnMKCgkqIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCAtZHhncmFiIGNvbW1hbmQgbGluZSBvcHRpb24sIHdoaWNoIGNvbmZpbmVzIGN1cnNvciBtb3Rpb24gdG8gdGhlCglEaXJlY3RYIHByaW1hcnkgc3VyZmFjZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBzb21lIHdlaXJkIEMgY29uc3RydWN0cyAoY2hhcltdPSIiICkgd2l0aCBtb3JlIGNvbXBhdGlibGUgb25lcy4KCUFkZGVkIGFub3RoZXIgTlVMTCBwdHIgY2hlY2sgaW4gX09uT3Blbi4KCgkqIG1pc2Mvd2luc29ja19hc3luYy5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL3dzb2NrMzIuc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLCBkbGxzL3dpbnNvY2svd3NvY2szMi5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi93aW5zb2NrLnNwZWMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvd2luc29jay5jOgoJTW92ZWQgd2luc29jayBpbXBsZW1lbnRhdGlvbiB0byBkbGxzL3dpbnNvY2suCgoJKiBkbGxzLyovLmN2c2lnbm9yZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgKi5zcGVjLmMsICouc3BlYy5nbHVlLnMsICouZ2x1ZS5jIHRvIC5jdnNpZ25vcmUgdGhhdCBuZWVkIHRoZW0uCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIGFyZ3VtZW50cyB0byBWaXJ0dWFsRnJlZSgpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtZW1vcnkvc3RyaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlcGxhY2VkIExvY2FsVG9XaWRlQ2hhcigpIGJ5IGxzdHJjcHluQXRvVygpLCBXaWRlQ2hhclRvTG9jYWwoKSBieQoJbHN0cmNweW5XdG9BKCkuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYXAgV01fTUVOVVNFTEVDVCAzMi0+MTYgYml0cyBmb3IgY2xvc2luZyBtZW51LgoKCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggcGFyYW1ldGVycyBmb3IgTURJX1Jlc3RvcmVGcmFtZU1lbnUgaW4gV01fREVTVFJPWSBtc2cuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIChSZWdpc3RlcnxHZXR8UmV2b2tlKUFjdGl2ZU9iamVjdCBmcm9tIHRoZSBkb2NzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU3VwZXJjaGFyZ2VkIFhTaG0gaW1wbGVtZW50YXRpb24gZm9yIERpcmVjdERyYXcuCgoJKiBkZWJ1Z2dlci9tc2MuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1pc3NpbmcgTlVMTCBwb2ludGVyIGNoZWNrcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgZm9yIE1aIGhlYWRlciBiZWZvcmUgdHJ5aW5nIHRvIGRlY2lwaGVyIHRoZSBQRSBoZWFkZXIuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglFeHBvcnQgR2V0TG9uZ1BhdGhOYW1lW0F8V10uCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHByb2JsZW1zIHdpdGggR2xvYmFsSGFuZGxlIGFuZCBHbG9iYWxGcmVlIHNvIHJlc3VsdHMgbWF0Y2ggV2luOTguCglSZXN0cnVjdHVyZSBIRUFQX1ZhbGlkYXRlSW5Vc2VBcmVuYSwgSGVhcFZhbGlkYXRlLCBhbmQgYWRkCglIRUFQX0lzUmVhbEFyZW5hIHRvIGVsaW1pbmF0ZSAqYm9ndXMqIGVycm9yIG1lc3NhZ2VzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFjdHVhbGx5IHByaW50IHJldHVybiB2YWx1ZSBvZiBtZXNzYWdlLgoKCSogb2JqZWN0cy9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgYXJndW1lbnRzIGluIERJQl9EZWxldGVESUJTZWN0aW9uLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBcXC5cPGRvc2RldmljZT4gbGlrZSA8ZG9zZGV2aWNlPiBpbiBDcmVhdGVGaWxlLiBUZXN0ZWQgd2l0aAoJaGVscCBvZiBKYW1lcyBGZWVuZXkgPGphbWVzQG51cmVhbG0ubmV0Pi4KCjIwMDAtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdldC9TZXRUaHJlYWRDb250ZXh0IHN1cHBvcnQgdGhyb3VnaCB0aGUgc2VydmVyLgoKMjAwMC0wMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGVidWdzdHIuaCwgbWlzYy9kZWJ1Z3N0ci5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJQWRkZWQgZGVidWdzdHJfZ3VpZCBmdW5jdGlvbiBhbmQgdXNlZCBpdCB0byByZXBsYWNlCglXSU5FX1N0cmluZ0Zyb21DTFNJRCBpbiBhbGwgZGVidWdnaW5nIG1lc3NhZ2VzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbHdheXMgaW5pdGlhbGl6ZSBscFdhdmVIZHItPmxwTmV4dCB0byBOVUxMLgoJRG9uJ3QgZmFpbCBvbiBzdHJhbmdlIGZyYWdtZW50IHNpemVzLgoKMjAwMC0wMS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2lubmxzLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIHNvbWUgZGVmaW5lcyBuZWVkZWQgZm9yIFVuaWNvZGUgdG8gQXNjaWkgY29udmVyc2lvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nLCBsZXNzIGtleXMgaGVsZCBvcGVuLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtRGlzcGxheU1vZGVzIG11c3QgcGFzcyBsUGl0Y2guCgoJKiBjb250cm9scy9tZW51LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVmFsaWRhdGUgdGhlIG1lbnUgaGFuZGxlcy4KCgkqIGRsbHMvd2luODdlbS9lbXVsYXRlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUm91bmRzIHRvIHRoZSBsb3dlc3QgaW50ZWdlciwgbm90IHRoZSBuZWFyZXN0LgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCByYWNlIGJldHdlZW4gV2luMTYgcGFyZW50IGFuZCBjaGlsZCBmb3IgZmlyc3QgcmVzY2hlZHVsaW5nCglvZiBjaGlsZCBwcm9jZXNzLiBUaGlzIGZpeGVzIFdpbkV4ZWMgcmV0dXJuaW5nIHRvbyBlYXJseS4KCjIwMDAtMDEtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVc2UgLS13aG9sZS1hcmNoaXZlIHRvIGZvcmNlIGxpbmtpbmcgYWxsIG9mIGxpYndpbmUuYS4gaW50byB3aW5lLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9idWlsdGluMzIuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQuYzoKCUFkZGVkIGF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgYnVpbHQtaW4gRExMcy4KCjIwMDAtMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZTogQWFyb24gSG9wZSA8ZWRoQG1haWwuYnJpb2ZvcmdlLmNvbT4KCUZpeGVkIElQWCBkZXRlY3Rpb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IGltcGxlbWVudGF0aW9uIG9mIHRoZSB3aW45NSByZWdpc3RyeSBsb2FkZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUlmIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpbiB0aGUgYnVmZmVyIGFuZCB0aGUgdHlwZSBpcyBSRUdfU1ogYW5kIHRoZQoJc3RyaW5nIGlzIG5vdCAwLXRlcm1pbmF0ZWQgUmVnUXVlcnlWYWx1ZSBhbmQgUmVnRW51bVZhbHVlIGFyZSBhcHBlbmRpbmcgYSAwLgoKCSogZGVidWdnZXIvaGFzaC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURpc3BsYXkgdGhlIGV4dGVybmFsIG1vZHVsZXMgYWZ0ZXIgdGhlIGludGVybmFsIG1vZHVsZXMgaW4gY3Jhc2ggcmVwb3J0LgoKCSogZmlsZXMvZHJpdmUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFNldFZvbHVtZUxhYmVsIHJlcG9ydCBmYWlsdXJlIG9uIENELVJPTSBkcml2ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgaW5jbHVkZS9kcml2ZXIuaCwgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgV2luZSBzcGVjaWZpYyBEUklWRVJfR2V0VHlwZSBieSBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YKCUdldERyaXZlckZsYWcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSAodWdseSkgZml4IGZvciB0aGUgJ1htZC5oJyBwcm9ibGVtCgktIGZpeCB0aGUgZGV0ZWN0aW9uIG9mIERHQSAyIGluIGNvbmZpZ3VyZSBzY3JpcHQKCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBhZGRlZCBOVCBmaWVsZHMgdG8gVEVCCgktIG1vdmVkIHRscy1maWVsZHMgYW5kIHNvbWUgd2luZSBzcGVjaWZpYyBmaWVsZHMgdG8gYSBoaWdoZXIgb2Zmc2V0CgktIGFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbgoJLSBpbml0aWFsaXNhdGlvbiBvZiB0aGUgVW5pY29kZVN0cmluZwoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogVG9kZCBULiBGcmllcyA8dG9kZEBmcmllcy5uZXQ+CglBZGQgSEFWRV9TT1VORENBUkRfSCB0byBzdXBwb3J0IE9wZW5CU0QuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHNvbWUgbWlzc2luZyBFTVIgcmVjb3JkIHR5cGVzIGFuZCB1cGRhdGVkIGFuZCBmaXhlZCBvdGhlcnMKCS0gQWRkZWQgc3R1YnMgYW5kIGhlYWRlcnMgZm9yIENyZWF0ZUNvbG9yU3BhY2UsRGVsZXRlQ29sb3JTcGFjZSBhbmQgU2V0Q29sb3JTcGFjZQoJLSBBZGRlZCBoZWFkZXIgZm9yIFNldElDTU1vZGUKCS0gQWRkZWQgYWJpbGl0eSB0byBwbGF5IG1vcmUgZW5oYW5jZWQgbWV0YWZpbGUgcmVjb3JkcwoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVN0b3JlIHJlZmVyZW5jZSBoZGMgc2l6ZSBpbnRvIGVuaGFuY2VkIG1ldGFmaWxlIGhlYWRlciB3aGVuIGNyZWF0aW5nLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE9sZVJ1bi4KCgkqIG9iamVjdHMvZGMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmVkIERlbGV0ZU9iamVjdCBjYWxsIGxlZnQgb3ZlciBmcm9tIHByZXZpb3VzIHBhdGNoLgoKCSogd2luMzIvdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYmFkIHJlZ2lzdGVyIGNvbnN0cmFpbnQgaW4gSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBwcm90b3R5cGVzIGZvciB0aGUgTlQgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9ucwoJSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UgYW5kIEludGVybG9ja2VkRXhjaGFuZ2VBZGQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgYWNjZXNzICd3bS0+bW9kbmFtZScgYWZ0ZXIgdGhlIG1vZHJlZiBoYXMgYmVlbiBmbHVzaGVkLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgbnVsbCBjaGVjayBpbiBHbG9iYWxIYW5kbGUuCgoyMDAwLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglSZW1vdmVkIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIG9sZWF1dDMyIGFuZCBjb21jdGwzMi4KCgkqIGluY2x1ZGUvd2lubnQuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3JlIFNUQVRVU18gY29kZXMuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6IFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJRml4ZWQgbWFjcm8gZGVmaW5pdGlvbiBvZiBJRGlyZWN0RHJhd1N1cmZhY2VfUmVzdG9yZS4KCUFkZGVkIGRlZmluZXMgZm9yIERkcmF3J3MgV2FpdEZvclZlcnRpY2FsRGlzcGxheSgpLgoKCSogaW5jbHVkZS9kc291bmQuaDogU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglGaXhlZCB0eXBvcyBpbiBtYWNybyBkZWZpbml0aW9ucyBmb3IgSURpcmVjdFNvdW5kQnVmZmVyX0dldFN0YXR1cywKCUlEaXJlY3RTb3VuZEJ1ZmZlcl9VbmxvY2suCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJTWlzc2luZyBXaW5lbGliIGRlY2xhcmF0aW9ucyBmb3IgQVVYQ0FQUy4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IChoYXJtbGVzcykgYXNzZW1ibGVyIHdhcm5pbmdzLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUZpeCBwcm9ibGVtIHdpdGggaW5pdGlhbGl6YXRpb24gKHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglJbmZvUHRyIGNoZWNraW5nIG1peGVkIHVwIFdNX0RFU1RST1kgYW5kIFdNX0NSRUFURS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAgOSAyMTo0Mjo0MiAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOb24tTGludXggY29tcGlsZSBmaXguCgoJKiBmaWxlcy9kb3NfZnMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglET1NGU19Eb0dldEZ1bGxQYXRoTmFtZSB3b3VsZCB1bmRlcmZsb3cgKHAgd291bGQgZ2V0IHBhc3QgdGhlCgliZWdpbm5pbmcgb2YgYnVmZmVyKSBpZiBnaXZlbiB0aGUgbmFtZSAiLy8uLiIuCglSZWdyb3VwZWQgdGhlIGhhbmRsaW5nIG9mIHRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9ycy4KCURpcmVjdG9yeSBzZXBhcmF0b3JzIGluIHRoZSByZXR1cm5lZCBwYXRoIGFyZSBub3cgYWx3YXkgYSBzaW5nbGUgIlwiCgl3aGljaCBzaW1wbGlmaWVzIHRoZSBoYW5kbGluZyBvZiAiLi4iIGluIHRoZSBuYW1lLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb3JyZWN0ZWQgYmVoYXZpb3VyIG9mIFJlZ09wZW5LZXkgaW4gY2FzZSBvZiBmYWlsdXJlLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gcmVtb3ZlZCBjb3B5aW5nIG9mIEhLRVlfVVNFUlMgdG8gSEtFWV9DVVJSRU5UX1VTRVIKCS0gSEtFWV9DVVJSRU5UX1VTRVIgaXMgbm93IHN1YmtleSBvZiBIS0VZX1VTRVJTCgktIGNoYW5nZWQgcXVlcnlfa2V5X2luZm9fcmVxdWVzdCB0byByZXR1cm4gdGhlIGtleSBuYW1lIHRvbyAoTnRRdWVyeUtleSBuZWVkcyB0aGlzKQoJLSB0aGUgcm9vdGtleXMgKE1BQ0hJTkUgYW5kIFVTRVIpIGRvIGhhdmUgbmFtZXMKCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWQgZGVsZXRpbmcgb2YgdGhlIGRlZmF1bHQgMXgxIGJpdG1hcCBmb3IgbWVtb3J5IERDcy4KCgkqIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgdG9vbHMvYnVpbGQuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9kaXNwbGF5L2Rpc3BsYXkuc3BlYywgZGxscy9tb3VzZS9tb3VzZS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGlmMTYzMi9idWlsdGluLmM6CglCdWlsdC1pbiBETExzIHJlc291cmNlcyBhcmUgbm93IHNwZWNpZmllZCBpbiBzcGVjIGZpbGUuCglSZW1vdmVkIHVubmVjZXNzYXJ5IGZsYWdzIGluIGJ1aWx0LWluIERMTHMgdGFibGVzLgoKCSogaWYxNjMyL2R1bW15LmMsIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9iaWRpMTYuYzoKCUVyZXogVm9sayA8ZXJlekBnbXgubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHNvbWUgQmlEaSBBUEkgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJRml4ZWQgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBhcHAgYW5kIHdpbmUgaW4gV0FWRV9tY2lQbGF5LgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJU3RvcCBtZW51IHRyYWNraW5nIHdoZW4gY2xpY2tpbmcgb24gdGhlIG1lbnUgYmFyIHdoZXJlIHRoZXJlIGlzIG5vCgltZW51IGl0ZW0uCgoJKiB3aW4zMi9uZXdmbnMuYzogRXJleiBWb2xrIDxlcmV6QGdteC5uZXQ+CglCZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLgoKU2F0IEphbiAgOCAyMjoyNzozMSAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglCYWNrZWQgb3V0IHNjYWxhYmxlIGJpdG1hcCBjaGFuZ2UgKGdpdmVzIHVnbHkgcmVzdWx0cykuCgoJKiBjb250cm9scy9tZW51LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0TWVudVN0cmluZyBzaG91bGQgcmV0dXJuIGl0ZW1sZW5ndGggb24gMCBuTWF4IG9yIE5VTEwgc3RyCglJbnNlcnRJdGVtIHBvcz0tMSwgZmxhZ3MgPSAwIHNob3VsZCBhcHBlbmQgaXRlbQoJKHRoYW5rcyB0byBTYW5kZXIgdmFuIExlZXV3ZW4pCgoJKiBpbmNsdWRlL2FzcGkuaCwgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZGxscy93bmFzcGkzMi93bmFzcGkzMi5zcGVjOgoJRGF2aWQgRWxsaW90dCA8ZGZlQG5ldG5pdGNvLm5ldD4KCVJlbW92ZWQgbWFsbG9jL2ZyZWUgaGFjayBhbmQgcmVwbGFjZWQgd2l0aCBIZWFwQWxsb2MvSGVhcEZyZWUgdGhyb3VnaG91dCBjb2RlLgoJQWRkZWQgY3JpdGljYWwgc2VjdGlvbiBhcm91bmQgY29kZSBkZWFsaW5nIHdpdGggZ2xvYmFsIHZhcmlhYmxlcy4KCUFkZGVkIGEgZmV3IGNvbW1lbnRzIGFib3V0IGhvdyBBU1BJIGlzIHN1cHBvc2VkIHRvIHdvcmsuCglDb3B5IHNlbnNlIGluZm8gaW50byB0aGUgY29ycmVjdCBwbGFjZSAocmlnaHQgYWZ0ZXIgdGhlIGZpeGVkIDE2LWJ5dGUgQ0RCKS4KCU5vdyByZXR1cm5zIHRhcmdldCBzdGF0dXMgKG1hbnkgV2luZG93cyBhcHBzIHdvbid0IGV2ZW4gbG9vayBhdCB0aGUKCXNlbnNlIGFyZSB1bmxlc3MgdGhleSBnZXQgYW4gZXJyb3IgY29kZSkuCglBZGRlZCBTQ19BQk9SVF9TUkIgRklYTUUuCglBZGRlZCBTQ19HRVRfRElTS19JTkZPIHBsYWNlIGhvbGRlciBmb3IgY2xhcml0eS4KCVVwZGF0ZWQgTGludXggU0cgaW50ZXJmYWNlIHN0cnVjdHVyZSB0byBpbmNsdWRlIG5ldyBrZXJuZWwgMi4yCglzdGF0dXMgZmllbGRzLgoKCSogTWFrZS5ydWxlcy5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb29rIGZvciBvdXIgaGVhZGVyIGZpbGVzIGZpcnN0LCB0aGVuIGZvciBzeXN0ZW1zIGhlYWRlcnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRoZSBuZXcgZmlsZWRpYWxvZyBzdHVmZiBkb2VzIG5vdCBoYW5kbGUgdGVtcGxhdGUuIFNvIGRvIG5vdCBjYWxsIGlmCgl0aGVyZSBhcmUgYW55LgoKCSogd2luZG93cy93aW5wb3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUF2b2lkIHByb2JsZW1zIGR1cmluZyBjaGFuZ2luZyB0aGUgWi1vcmRlciBpZiB0aGUgd2luZG93IGFuZCB0aGUKCXdpbmRvdyB0byBpbnNlcnQgYWZ0ZXIgYXJlIHRoZSBzYW1lLgoKCSogbGlidGVzdC9leHBhbmQuYywgbGlidGVzdC9oZWxsbzUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZW1vdmVkIEdVSSBqdW5rIGZyb20gZXhwYW5kLmMsIHNvIHlvdSBjYW4gdXNlIGl0IGluIGNvbW1hbmRsaW5lIG1vZGUuCglGaXhlZCBoZWxsbzUuYy4KCgkqIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgYXV0byBhbGxvY2F0ZWQgb3JkaW5hbHMKCS0gRml4ZWQgdmFyYXJncyAoMTYgYml0KSBidWcKCS0gTWlub3IgZml4ZXMKCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGFsaWdubWVudCBwcm9ibGVtIHdpdGggVkVSU0lPTl9JTkZPIG1lbWJlcnMuCgpXZWQgSmFuICA1IDAzOjI0OjUyIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgJFhfRVhUUkFfTElCUyB0byBhbnkgWCBkZXBlbmRlbmQgY2hlY2tzIG9yIHRoZXkgd2lsbCBmYWlsIGlmIHNvbWUKCW9mIHRoZSAkWF9FWFRSQV9MSUJTIGFyZSByZXF1aXJlZC4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIEZpbGxSZWN0IGJlaGF2ZSBsaWtlIGl0IGRvZXMgb24gV2luZG93cwoJLSBDbGVhbmVkIHVwIFdNX3ssSUNPTn1FUkFTRUJBQ0tHUk9VTkQgZGVmYXVsdCBoYW5kbGluZwoJLSBBZGRlZCBzb21lIGNvbW1lbnRzIG9uIGhvdyBXaW5kb3dzIGJlaGF2ZXMKCgkqIHdpbmRvd3Mvd2luaGVscC5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglDaGVjayBpZiB3aW5oZWxwIGlzIGFscmVhZHkgcnVubmluZzsgdXNlIHdpbmhscDMyLmV4ZSBvciB3aW5oZWxwLmV4ZQoJZGVwZW5kaW5nIG9uIHRoZSBlbXVsYXRlZCB2ZXJzaW9uLCByZWxhc2Ugd2luMTZsb2NrIGJlZm9yZSBjYWxsaW5nCglXaW5IZWxwQS4KCgkqIEFVVEhPUlMsIGluY2x1ZGUvYXV0aG9ycy5oOgoJVXBkYXRlZCBhdXRob3JzIGxpc3QgZnJvbSB0aGUgQ2hhbmdlbG9nLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91CgloYXZlIGJlZW4gbGVmdCBvdXQuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRydWVUeXBlIGNsYXJpZmljYXRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRldGVjdCBpZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uIGRlZmluZXMgdGhlIHBhbGV0dGVkIHRleHR1cmUgYW5kCgkgIGNvbG9yIHRhYmxlIGV4dGVuc2lvbnMKCS0gc21hbGwgd2FybmluZyBmaXhlcwoJLSBmaXggdGhlIGRvdWJsZSAnLWxYeGY4NmRnYScgd2hlbiBoYXZpbmcgREdBIDIuMAoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBjb21tIGNsZWFuIHVwLCBtdWNoIG1vcmUgZXJyb3IgbWVzc2FnZXMsIG9ubHkgdXNlIFRJT0NPVVRRIGlmCglkZWZpbmVkIFt3aW5lLWJ1Z3MvMTA0XSwgdHJpZWQgaW1wbGVtZW50aW5nIFNldENvbW1UaW1lb3V0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gV2hlbiBwcm9jZXNzaW5nIFdNX1BBSU5UIG1lc3NhZ2VzLCB0aGUgdHJlZXZpZXcgbWlnaHQgc29tZXRpbWVzIHVzZQoJICB0aGUgd3JvbmcgaGRjLiBGaXhlZC4KCS0gQmV0dGVyIGNoZWNraW5nIGZvciBUUkVFVklFV19JTkZPICppbmZvUHRyPU5VTEwuCgkgIFNpbWlsYXIgdG8gY29kZSBpbiB0b29sYmFyLmMKCS0gT3RoZXIgc21hbGwgZml4ZXMgKHN1YmNsYXNzZWQgZWRpdCBjb250cm9sKS4KCgkqIGRlYnVnZ2VyL21zYy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogdW5pbml0aWFsaXplZCBwb2ludGVyIGNhdXNlZCBjcmFzaGVzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSB2aXJ1cyB3YXJuaW5nIGEgYml0IG1vcmUgZHJhc3RpYywgc2luY2Ugc29tZSBwZW9wbGUgZG9uJ3QgYmVsaWV2ZSB1cy4KCgkqIG1pc2MvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgY29tbSBjbGVhbiB1cCwgbXVjaCBtb3JlIGVycm9yIG1lc3NhZ2VzLCBvbmx5IHVzZSBUSU9DT1VUUSBpZgoJZGVmaW5lZCBbd2luZS1idWdzLzEwNF0sIHRyaWVkIGltcGxlbWVudGluZyBTZXRDb21tVGltZW91dHMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbXBsZW1lbnQgV3JpdGVQcml2YXRlUHJvZmlsZVNlY3Rpb25BKCkuCgoJKiBkbGxzL250ZGxsL3J0bC5jOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJRml4IGZvciBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0ICdsb25nIGxvbmcnIChGcm9tIE92ZSBLYWF2ZW4pLgoKVHVlIEphbiAgNCAwMjo0MDoyMiAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglNb3ZlZCBhbGxvY2F0aW9uIG9mIHRoZSBzb2NrZXQgcGFpciBmb3IgYSBuZXcgdGhyZWFkIHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzogTWFkZSBkZWJ1ZyBldmVudHMgYW5kIGNvbnRleHRzIHN0YW5kYXJkIG9iamVjdHMuCglVc2Ugc2xlZXBfb24gdG8gd2FpdCBvbiBkZWJ1ZyBldmVudHMuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglNYWRlIHNsZWVwX29uIHVzYWJsZSBmcm9tIGFsbCByZXF1ZXN0cy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1vcmUgTUlESSBtZXNzYWdlcyAxNjw9PjMyIG1hcHBpbmcuCglGaXhlcyBzb21lIGJ1Z3MgaW4gYnVmZmVycyBoYW5kbGluZyBhbmQgaW5kZXggZm9yIE1BUFBFUi4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaWYxNjMyL3RodW5rLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgdGhlIG9ic29sZXRlZCBDYWxsVGltZUZ1bmNQcm9jLCBDYWxsRHJpdmVyUHJvYywKCUNhbGxEcml2ZXJDYWxsYmFjay4KCgkqIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS90aW1lLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVB1dCBiYWNrIHZpc2libGUgbWluaW11bSB0aW1lciByZXNvbHV0aW9uIHRvIDEgbXMuCglEZWNvcnJlbGF0ZSB0aGUgc2VydmljZSB0aHJlYWQgcmVzb2x1dGlvbiBmcm9tIHRoZSB1c2VyIHJlcXVpcmVkIHRpbWVyCgkmIHZpc2libGUgbWluaW11bSByZXNvbHV0aW9ucy4KCVJlbW92ZWQgdGhlIENhbGxiYWNrLlRpbWVGdW5jUHJvYyBlbnRyeS4KCgkqIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUdpdmUgKzArMCBhcyBhIGRlZmF1bHQgcG9zaXRpb24gZm9yIHRoZSBkZXNrdG9wIHdpbmRvdy4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUNvbnZlcnQgbW1pbyB0byBhbGxvdyB0aGUgdXNlIG9mIDMyIGJpdCBtbWlvIHByb2NlZHVyZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgbWlzYy9yZWdpc3RyeS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jdGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vZGJjMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHdpbmFwaV9jaGVjayB0byBoYW5kbGUgdGhlIG5ldyBhZGRpdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBXTV9TSVpFIG1lc3NhZ2Ugc3VwcG9ydC4gT3B0aW1pemVkIGRyYXdpbmcgdG8gdXNlCglwcmVjYWxjdWxhdGVkIHNpemUgdmFsdWVzIHJhdGhlciB0aGFuIHJlY2FsY3VsYXRpbmcgZHVyaW5nIGVhY2ggY2FsbAoJb2YgTU9OVEhDQUxfUmVmcmVzaC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvZGlhbG9nLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvcnJlY3RlZCBwYXJhbWV0ZXIgY291bnQgZm9yIERpYWxvZ0JveEluZGlyZWN0UGFyYW1Bb3JXLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEb24ndCBzaG93IHRoZSBzY3JvbGxiYXIgaWYgU2V0U2Nyb2xsaW5mbygpIGlzIGNhbGxlZCB3aXRoIG9ubHkgdGhlCglTSUZfRElTQUJMRU5PU0NST0xMIGZsYWcuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGV4dHJhIFVTIGtleW1hcCB3aXRoIHRoZSBpbmZhbW91cyBwaGFudG9tIGtleS4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVzZSBhIHVuaWZvcm0gbmFtaW5nIHNjaGVtZSBmb3IgZHJpdmVyIG1vZHVsZXMuCgoJKiBpbmNsdWRlL2RyaXZlci5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuY2Fwc3VsYXRlZCBXaW5lIGludGVybmFsIGRhdGEgaW50byBhbiBpZmRlZiBfX1dJTkVfXy4KCgkqIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvLmN2c2lnbm9yZToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgdGhlIDE2IGJpdCBkcml2ZXIgZnVuY3Rpb25zIGNhbGxvdXQgaW50byB0aGUgZGlyLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBXT0RNX0JSRUFLTE9PUCBtZXNzYWdlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBleHRyYW5lb3VzIEVSUiBtZXNzYWdlLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSV9JTkZPX0NPUFlSSUdIVCBhbmQgTUNJX0lORk9fTkFNRS4KCgkqIGRlYnVnZ2VyL2hhc2guYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVc2UgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHdoaWxlIHNlYXJjaGluZyBmb3IgbmV3IG1vZHVsZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNwZWMgZW50cnkgZm9yIF9pdG9hLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJR2VuZXJhdGVkIGxhYmVscyBvZiByZXNvdXJjZSBuYW1lcyBtdXN0IGJlIHVuaXF1ZSB0aHJvdWdob3V0IHRoZQoJZ2VuZXJhdGVkIGNvZGUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgkicmVzdWx0cCIgY2FuIGJlIE5VTEwgaW4gU2VuZE1lc3NhZ2VUaW1lb3V0KigpLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gcHJldmVudCBtZW0gbGVhayBvZiBDUlRETExfYWNtZGxuX2RsbAoJLSBiZXR0ZXIgYXJndW1lbnQgcGFyc2luZwoJLSBsYXN0IHhhcmd2IGVudHJ5IGhhcyB0byBiZSBOVUxMCgktIHJldHVybiB2YWx1ZSBpcyBlbnZpcm9ubWVudCBwb2ludGVyIGluc3RlYWQgb2YgTlVMTAoJLSBhZGRlZCBhIHNwZWMgZW50cnkgZm9yIGJzZWFyY2goKQoKU2F0IEphbiAgMSAyMjozODoyMSAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9wcm9jZXNzLmg6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglJbXBsZW1lbnRlZCBXYWl0Rm9ySW5wdXRJZGxlLgoKCSogbWlzYy9kZGVtbC5jLCB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MgKHNwb3R0ZWQgYnkgRnJhbmNvaXMgR291Z2V0KS4KCgkqIHJlbGF5MzIvd293MzIuc3BlYywgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIHJlbGF5MzIvZGRyYXcuc3BlYywgcmVsYXkzMi9kaW5wdXQuc3BlYywgcmVsYXkzMi9nZGkzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5LnNwZWMsIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWFrZSB1c2Ugb2YgYXV0b21hdGljIG9yZGluYWwgYWxsb2NhdGlvbi4KCgkqIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jOgoJTW92ZWQgcG9sbCBoYW5kbGluZyB0byB0aGUgZ2VuZXJpYyBwYXJ0IG9mIHRoZSBzZXJ2ZXIgb2JqZWN0cy4KCUZpeGVkIGJ1c3kgd2FpdGluZyBvbiBQT0xMRVJSIGV2ZW50cy4KCU1lcmdlZCBzdHJ1Y3QgY2xpZW50IGludG8gc3RydWN0IHRocmVhZC4KCk1vbiBEZWMgMjcgMDU6MjY6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL3Byb2Nlc3MuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgbWlzYy9kZGVtbC5jLCBtaXNjL3ZlcnNpb24uYzoKCUNvc21ldGljcy4KCgkqIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvbHN0ci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvd2luc29jay5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUJ1ZmZlciBvdmVyZmxvd3MgYW5kIHN0cm5jcHkgZml4ZXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBFX0ZpbmRFeHBvcnRlZEZ1bmN0aW9uOiB1c2UgYSBiaW5hcnkgc2VhcmNoIGZvciBmdW5jdGlvbiBuYW1lcy4KClN1biBEZWMgMjYgMjM6MTI6MzggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWM6CglGaXhlZC9jb21tZW50ZWQgb3V0IGR1cGxpY2F0ZSBlbnRyeSBwb2ludCBuYW1lcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgYXV0b21hdGljIG9yZGluYWwgYWxsb2NhdGlvbi4KCU91dHB1dCBsaXN0IG9mIGZ1bmN0aW9uIG5hbWVzIGluIHNvcnRlZCBvcmRlci4KCUFkZGVkIHN1cHBvcnQgZm9yIG5hbWVsZXNzIChvcmRpbmFsLW9ubHkpIGVudHJ5IHBvaW50cy4KCUNsZWFuZWQgdXAgZXJyb3IgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSBEQ0Z1bmNzIEV4dFRleHRPdXQgYW5kIEdldFRleHRFeHRlbnRQb2ludCB0byBVbmljb2RlLgoJTWFwIGEgZmV3IFVuaWNvZGUgY2hhcnMgdG8gdGhlIGZpcnN0IDB4ZmYgaW4gcHNkcnYuCglEb24ndCBleHBlY3QgeDExZHJ2IHRvIGRpc3BsYXkgVW5pY29kZSBjaGFycyB5ZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgbWVtb3J5L3N0cmluZy5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJV3JhcHBlZCBzb21lIHN0cmluZ3MgaW4gYSBkZWJ1Z3N0cl8qIGNhbGwuCglSZXBsYWNlZCBzb21lIGNhbGxzIHRvIGRlYnVnc3RyX3thLHd9IGJ5IGRlYnVnc3RyX3thLHd9bi4KCVJlbW92ZWQgcmVkdW5kYW50ICdMJ3MgZm9yIFVuaWNvZGUgc3RyaW5ncy4KCVRyaWVkIHRvIGhhcm1vbml6ZSB0aGUgdHJhY2VzIGEgbGl0dGxlIGJpdC4KCgkqIG1pc2MvZGVidWdzdHIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglkZWJ1Z3N0cl93IG5vdyByZXR1cm5zIHNvbWV0aGluZyBsb29raW5nIGxpa2UgJ0wieHh4eCIuLi4nCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRklMRURMRzk1X0hhbmRsZUN1c3RvbURpYWxvZ01lc3NhZ2VzOgoJLSBmb3IgdGhlIHRocmVlIGhhbmRsZWQgbWVzc2FnZXMgd2UgbXVzdCByZXR1cm4gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplCgktIGZvciBDRE1fR0VURklMRVBBVEggcGF0aHMgbGlrZSAiZGlyXGZpbGUiIHdlcmUgaGFuZGxlZCBpbmNvcnJlY3RseQoJLSBmaXhlZCBtdWx0aXBsZSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cy4KCUZJTEVETEc5NV9Pbk9wZW46IGZpeGVkIGEgdXNlIG9mIHN0cm5jcHkgd2l0aG91dCAnXDAnLgoJRklMRURMRzk1X1NIRUxMX05ld0ZvbGRlcjogdGhlIHNpemUgb2YgbHBzdHJDYXB0aW9uIHdhcyBpbmNvcnJlY3QKCWxlYWRpbmcgdG8gYSBidWZmZXIgb3ZlcmZsb3cuCgpTYXQgRGVjIDI1IDIyOjU4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBwbGF5aW5nIG1vcmUgcmVjb3JkIHR5cGVzIChzdGlsbCBtb3JlIHRvIGNvbWUpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUJldHRlciBzdXBwb3J0IHZlcnkgbG9uZyBzdHJpbmdzIGJ5IGF2b2lkaW5nIHRvIGNvcHkgdGhlbSBpbiBhIGZpeGVkCglzaXplIGJ1ZmZlciAob25lIGV4Y2VwdGlvbiBwYXJ0bHkgcmVtYWluczogY2FsbGJhY2sgc3RyaW5ncykuCglSYWlzZSB0aGUgYnVmZmVyIHNpemUgdG8gNTEyIGNoYXJhY3RlcnMuCglNZXJnZSB0aGUgaGFuZGxpbmcgb2YgaXRlbSAwIGFuZCBvdGhlciBpdGVtcyB0b2dldGhlciBpbiBHZXRJdGVtQSB0bwoJcmVkdWNlIGNvZGUgZHVwbGljYXRpb24uCgoJKiBncmFwaGljcy9wc2Rydi9iaXRtYXAuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IFBTRFJWX1N0cmV0Y2hESUJpdHMgZm9yIG5vbi1pbnRlZ2VyIGJ5dGUgc3JjIHdpZHRocyAoMSAmIDRicHApLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2FzdCB0aGUgdW5zaWduZWQgaW50IHRvIHNpZ25lZCwgb3IgTkVBUl9NQVRDSCB3aWxsIG5vdCB3b3JrLgoKCSogbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCBpbmNsdWRlL2Nkcm9tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZpcnN0L2xhc3QgcGxheWFibGUgZnJhbWUgcmVmZXJlbmNpbmcuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJvZ3VzIHZhbHVlcyBpbiBNQ0lfU1RBVFVTIGhhbmRsaW5nIChwb3NpdGlvbiAmIGxlbmd0aCBvZiB0cmFja3MpLgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJX0lORk8gb24gTUVESUFfVVBDICYgTUVESUFfSURFTlRJVFkgY29tbWFuZHMuCgoJKiB3aW5kb3dzL3JlY3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUZXN0IHBvaW50ZXJzIHBhc3NlZCB0byBjb3B5cmVjdCBmb3IgTlVMTC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVzdG9yZSBlcnJvbmVvdXNseSBkZWxldGVkIGxpbmVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEUEFfRGVsZXRlUHRyIHdhcyByZXNpemluZyB0aGUgYXJyYXkgdG8gYSB0b28gc21hbGwgc2l6ZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUF2b2lkIGluZmluaXRlIGxvb3AgaW4gV0lOUE9TX0ZpbmRJY29uUG9zIGlmIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50CgljbGllbnQgYXJlYSBpcyBsZXNzIHRoYW4gdGhlIGljb24gc3BhY2luZy4KCgkqIGRvY3VtZW50YXRpb24vbGludXgtZmF0LXBlcm1pc3Npb25zOgoJU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJQWRkZWQgYSBkb2N1bWVudCB0aGF0IGRlc2NyaWJlcyBjb25maWd1cmluZyBGQVQgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucwoJZm9yIFdpbmUuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTlQgYWxsb2NhdGVzIG9uZSBwYWdlIGFzIFRFQi4gU29tZSBuYXRpdmUgTlQtZGxscyBhcmUgdXNpbmcgdGhpcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvbid0IHNraXAgdXNhYmxlIFggZm9udHMuIEFkZCBzdXBwb3J0IGZvciBrb2k4IGZvbnRzLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vZGlmaWVkIEljbXBDbG9zZUhhbmRsZSBhbmQgSWNtcFNlbmRFY2hvUmVxdWVzdCBzbyB0aGF0IHdlIGRvbid0CgljcmFzaCBpZiB0aGUgaGFuZGxlIGlzIElOVkFMSURfSEFORExFX1ZBTFVFLgoKCSogaW5jbHVkZS93aW5kZWYuaDogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJQ2hhbmdlZCB0aGUgInRoaXNfaXNfYV9zeW50YXhfZXJyb3IiIGVycm9yIG1lc3NhZ2UgdG8gYSBtb3JlIHNwZWNpZmljCgllcnJvciBtZXNzYWdlLgoKTW9uIERlYyAyMCAwNDoxNDo0OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgQmV6aWVyIGNvZGUgb3V0IG9mIHgxMWRydiBpbnRvIGNvbW1tb24gR0RJIGNvZGU7IGlmIGFueSBkcml2ZXIKCWRvZXMgbm90IGltcGxlbWVudCBQb2x5QmV6aWVyW1RvXSB0aGUgY3VydmUgaXMgYXBwcm94aW1hdGVkIHRvIGxpbmVzCglhbmQgZHJhd24gd2l0aCBQb2x5bGluZS4KCUltcGxlbWVudCBtYW55IEdESS1QYXRoIHJlY29yZGluZyBmdW5jdGlvbnMgKGF0IGxlYXN0IHRoZSB3aW45eCBzdWJzZXQpLgoJSW1wbGVtZW50IEZsYXR0ZW5QYXRoIGFuZCBGaWxsUGF0aC4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJRml4ZWQgb3JkaW5hbCBudW1iZXJpbmcgYW5kIGFkZGVkIG5ldyBzcGVjIHN0dWIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkZGVkIFhwbSBhdXRvY29uZiBjaGVja3MuCgoJKiBvbGUvb2xlMm5scy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRW51bVN5c3RlbUxvY2FsZXNBIHNob3VsZCBsb29rIGZvciByZWdpc3RyeSB2YWx1ZXMsIG5vdCBzdWJrZXlzLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBmaXggdG8gZ2V0IEdFVF9ERVZJQ0VfVFlQRSB3b3JraW5nICh2ZXJpZmllZCBieSBEYW4gS2VnZWwpLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUNvcnJlY3RlZCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBmaXhlZCBsZWFraW5nIEdESSBicnVzaC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOVCBsb2FkZXI6IGRvbid0IHN0b3AgbG9hZGluZyBhIGhpdmUgd2hlbiBhbiBlcnJvciBvY2N1cnMuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBsYXlNZXRhRmlsZSBhbmQgRW51bU1ldGFGaWxlIHNob3VsZCB3b3JrIGlmIHRoZSBoZGMgaXMgYQoJKGVuaCltZXRhZmlsZSBEQy4KCgkqIFJFQURNRTogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJVXBkYXRlZCB0aGUgRnJlZUJTRCBub3RlcywgdGhlIExEVCBwYXRjaCBmaW5hbGx5IG1hZGUgaXQgaW50byAtY3VycmVudC4KCgkqIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJZiBscFRpdGxlPT1OVUxMIGFuZCBjYkJ1Zj09MCB0aGVuIHdlIG11c3QgcmV0dXJuIHRoZSByZXF1aXJlZCBidWZmZXIKCXNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJU2hhdW4gTW9ycmlzIDxzaGF1bkBibHVlbmVwdHVuZS5jb20+CglJbXBsZW1lbnRlZCBfVHJhY2tNb3VzZUV2ZW50IGZvciB0aGUgVE1FX0xFQVZFIGZsYWcuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkcyByZXNvbHV0aW9uIC8gZGVwdGggc3dpdGNoaW5nIHdpdGggREdBIDIuMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIERlYyAxMiAyMToyODo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIGhhbmRsaW5nIG9mIERHQTIuMCBrZXlib2FyZCBldmVudHMuCgoJKiBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIG9wZW4gc2V2ZXJhbCBzdHJlYW1zIG9uIHRoZSBzYW1lIGRyaXZlci4KCUFkZGVkIGEgZmV3IGFjbU1ldHJpY3Mgb3B0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTeXNTdHJpbmdMZW4gY2FuIGdldCBhIE5VTEwgcG9pbnRlciAoYW5kIHNoYWxsIHJldHVybiAwKS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgbm90aWZpY2F0aW9uIGZvciBkZXRlY3Rpbmcgd2hlbiBhIFdBVkVIRFIgaGFzIGJlZW4gcGxheWVkCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHBsYXliYWNrIHRocmVhZCBhbmQgc3RvcC9jbG9zZSBjb21tYW5kcwoJTm93IHVzaW5nIG5vdGlmaWNhdGlvbiBmb3IgZGV0ZWN0aW5nIHdoZW4gYSBXQVZFSERSIGhhcyBiZWVuIHBsYXllZAoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglDb21ib0JveCBzaG91bGQgbm90IHNlbmQgYm9ndXMgbWVzc2FnZXMgdG8gZWRpdCBidWRkeSBhbmQgdG8gaXRzZWxmLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUZpeGVkIEdldFNob3J0UGF0aE5hbWVBLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTW9zZXMgRGVKb25nIDxkZWpvbmdAY3MudW1uLmVkdT4KCUZpeGVkIG1pc3NpbmcgbGlid2luZS5zbyBzeW1saW5rIGR1cmluZyBpbnN0YWxsLiBTZXQgdGhlIHJ1bnRpbWUKCWxpbmtlciBwYXRoLgoKCSogd2luZG93cy9kaWFsb2cuYzogTXVyYWxpIFBhdHRhdGhlCglHZXROZXh0RGxnR3JvdXBJdGVtOiBuZWVkcyB0byBjaGVjayB0aGUgY29udHJvbCBwYXJlbnQgaXMgdGhlIG1haW4gZGlhbG9nLgoJR2V0TmV4dFRhYkl0ZW06IG1ha2Ugc3VyZSB0aGlzIGNvbnRyb2wgaXMgdmlzaWJsZSBhbmQgbm90IGRpc2FibGVkLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgY21kIGxpbmUgbGVuZ3RoIGNhbGN1bGF0aW9uLgoKCSogaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHN1cHBvcnQgb2YgREdBLTIuMCBldmVudHMKCS0gZml4ZWQgdGhlIGxlYXZpbmcgb2YgREdBLTIuMCBtb2RlCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbiB3aW4zMiBhIFdNX01FTlVTRUxFQ1QgbWVzc2FnZSBzaG91bGQgY29udGFpbiB0aGUgcG9zaXRpb24gd2hlbiB0aGUKCWl0ZW0gcmVmZXJzIHRvIGEgc3VibWVudSwgbm90IHRoZSBzdWJtZW51J3MgaGFuZGxlIGFzIGluIHdpbjE2LgoKCSogZmlsZXMvdGFwZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhcmcgdHlwZXMgb2YgRklYTUVzLgoKCSogd2luZG93cy9tZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgcGFzc2VkIGludmFsaWQgd2luZG93IGhhbmRsZSBpbiBEZWZNRElDaGlsZFByb2MqLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggbm8uIG9mIGFyZ3VtZW50cyBpbiBhIFdBUk4gc3RhdGVtZW50LgoKCSogb2JqZWN0cy90ZXh0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3dzIERyYXdUZXh0KDE2fEF8VykgdG8gZ2V0IGEgTlVMTCBzdHJpbmcgYXMgcGFyYW1ldGVyLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZ3JhcGhpY3MvdHR5ZHJ2L29iamVjdHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MvdmVyc2lvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIDIgdXNlbGVzcyBpbmNsdWRlIHdpbnZlcnNpb24uaAoJRG8gbm90IG1ha2UgYXV0b2RldGVjdGVkIHZlcnNpb24gZml4IG9uIGZpcnN0IGNhbGxzIGlmIGl0IGlzIFdpbjMxLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgU3RyTkNweUEsIFN0ck5DcHlXLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTWVzc2FnZSB0cmFuc2xhdGlvbiBXTV9DUkVBVEUgZml4ZWQuCgpTYXQgRGVjIDExIDIzOjU2OjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3NxbC5oLCBpbmNsdWRlL3NxbGV4dC5oLCBpbmNsdWRlL3NxbHR5cGVzLmgsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVhpYW5nIExpCglJbXBsZW1lbnRhdGlvbiBvZiBhIHByb3h5IE9EQkMzMiBkbGwuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJS2FpIE1vcmljaCA8a2FpLm1vcmljaEBiaWdmb290LmRlPgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzeXN0cmF5IHN1cHBvcnQuCglTd2FsbG93IHRoZSB3aW5kb3dzIHN5c3RyYXkgaWNvbnMgaW50byBrcGFuZWwgc3lzdHJheSBpZiBLREUvS1dNIGlzCglydW5uaW5nLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBsb2FkZXIgZm9yIE5UIHJlZ2lzdHJ5IGZpbGVzLgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2lubnQuaCwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWJzIGZvciBMc2FGcmVlTWVtb3J5LCBMc2FRdWVyeUluZm9ybWF0aW9uUG9saWN5LCBMc2FDbG9zZS4KCVNtYWxsIGZpeGVzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBJbXBsZW1lbnRlZCBHZXRFbmhNZXRhRmlsZVBhbGV0dGVFbnRyaWVzCgktIEFkZGVkIGZpeG1lIHN0dWJzIGZvciBTZXRNZXRhUmduIGFuZCBHZXRNZXRhUmduCgktIEFkZGVkIHN1cHBvcnQgZm9yIHBsYXlpbmcgc2V2ZXJhbCBlbmhhbmNlZCBtZXRhZmlsZSByZWNvcmRzCgktIEFkZGVkIGJlZ2lubmluZ3Mgb2YgaW1wbGVtZW50YXRpb24gZm9yIHBsYXlpbmcgdGhlIHJlc3Qgb2YgdGhlCgkgIGVuaGFuY2VkIG1ldGFmaWxlIHJlY29yZHMKCgkqIGdyYXBoaWNzL3R0eWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvYnJ1c2guYywgZ3JhcGhpY3MvdHR5ZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBncmFwaGljcy90dHlkcnYvZGliLmMsIGdyYXBoaWNzL3R0eWRydi9mb250LmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvb2JqZWN0cy5jLCBncmFwaGljcy90dHlkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3R0eWRydi9wZW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXByb3ZlZCB0aGUgVFRZIGRyaXZlci4KCgkqIGZpbGVzL2ZpbGUuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJUmV0dXJuIGFuIGVycm9yIGlmIGxwT3ZlcmxhcHBlZCBpcyBwcm92aWRlZCB0byBSZWFkRmlsZSAvIFdyaXRlRmlsZS4KCgkqIG1pc2Mvd3NwcmludGYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY29uZnVzZSB0aGUgMCBmaWxsIG1hZ2ljIG9mIHdzcHJpbnRmIHdpdGggdGhlICIweCIgaGV4IHByZWZpeC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJVGhlIHdhdmVtYXAgZHJpdmVyIHdhc24ndCBwYXNzaW5nIHRoZSBjYWxsYmFjayB0eXBlIHRvIHRoZQoJRHJpdmVyQ2FsbGJhY2sgcm91dGluZSBjb3JyZWN0bHkuCgoJKiBmaWxlcy90YXBlLmM6IEFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBoYXZlIHJlZ2lzdHJ5IGVudHJpZXMsIHVzZSB0aGVtLiBOZXZlciBtaW5kIHdoaWNoIHZlcnNpb24gd2UKCWF1dG9kZXRlY3RlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgbWlzYy9wb3J0LmMsIHRvb2xzL2JpbjJyZXMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2Rpc3BsYXkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTZhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEFkZGVkIG1pc3NpbmcgJ3JldHVybicgc3RhdGVtZW50LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCkZyaSBEZWMgMTAgMDM6NDc6MTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lc3NhZ2UuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGVyZm9ybSAxNi8zMkEvMzJXIG1lc3NhZ2UgbWFwcGluZyBmb3IgcG9zdGVkIG1lc3NhZ2VzLgoKCSogZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL3RhcGUuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZGVkIHN0dWJzIGZvciB0aGUgV2luTlQgdGFwZSBiYWNrdXAgZnVuY3Rpb25zLgoKCSogZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQYXJzZSBDb2RlVmlldyB0eXBlL3N5bWJvbCBpbmZvIHdpdGggMzItYml0IHR5cGUgaW5kaWNlcy4KCUFkZGVkIChwYXJ0aWFsKSBzdXBwb3J0IGZvciBWQyA1LzYgLlBEQiBmaWxlcy4KCUZpeGVkIHRyZWF0bWVudCBvZiBzb3VyY2UgZmlsZSBuYW1lcyBjb250YWluaW5nIHBhdGguCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvci4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogU2hvdyBtYWluIHdpbmRvdyBpZiBDcmVhdGVQcm9jZXNzIHdhcyBjYWxsZWQgd2l0aG91dCB0aGUKCVNUQVJURl9VU0VTSE9XV0lORE9XIGZsYWcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgUEVfVW5sb2FkTGlicmFyeSgpLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRvIG5vdCBsb29zZSBpbml0aWFsIGF1dG8tcmVwZWF0IHN0YXR1cyB3aGVuIGFjcXVpcmluZyB0aGUga2V5Ym9hcmQgbW9yZQoJICB0aGFuIG9uZSB0aW1lCgktIHN1cHBvcnQgb2YgRGlyZWN0WCA3J3MgRElNT1VTRVNUQVRFMiBzdHJ1Y3R1cmUKCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJQWRkZWQgTnRQb3dlckluZm9ybWF0aW9uIHN0dWIuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglUcmFuc2ZlciBvbmx5IGNiU3RydWN0IHNpemUgaW4gQmluZEN0eEltcGxfUyhHKWV0T3B0aW9ucy4KCldlZCBEZWMgIDggMDM6NTY6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9uZXdmbnMuYywgbXNkb3MvZG9zbWVtLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9mb250LmMsIG9sZS9vbGUybmxzLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvbG9jYWwuYywgbWlzYy9yZWdpc3RyeS5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGlmMTYzMi90aHVuay5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgY29udHJvbHMvZWRpdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1ha2UgdXNlIG9mIHRoZSBERUZBVUxUX0RFQlVHX0NIQU5ORUwgd2hlcmUgYXBwcm9wcmlhdGUuCglVc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiBGSVhNRSwgRVJSLCBXQVJOLCBUUkFDRSBmb3IgdGhlIGRlZmF1bHQKCWNoYW5uZWwuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlbGF5IHNlbmRpbmcgZGVidWcgZXZlbnRzIHVudGlsIHByb2Nlc3MgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQsIGFkZGVkIGNoYXB0ZXIgb24gY29uZmlndXJhdGlvbiBhbmQgYXJjaGl0ZWN0dXJlLgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJLSBGaXggTU1JT197T3BlbixSZW5hbWV9IHRvIGNoZWNrIHRoZSBmaWxlbmFtZSAob2YgdGhlIGZvcm0KCSAgZmlsZS5leHQrQUJDKSBmb3IgdGhlIGNvcnJlY3QgbW1pbyBwcm9jZWR1cmUgdG8gdXNlLgoJLSBtbWlvU3RyaW5nVG9GT1VSQ0Mgbm93IGNvbnZlcnRzIHRvIHVwcGVyY2FzZSBpZiBhc2tlZCB0bywgYW5kIGhhbmRsZXMKCSAgc3RyaW5ncyBvZiBsZW5ndGggPCA0LgoKCSogY29udHJvbHMvZWRpdC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUZpeCBwcm9ibGVtIHdpdGggRU5fVVBEQVRFIG5vdGlmaWNhdGlvbiBzZW50IGJ5IGVkaXQgY29udHJvbC4KCk1vbiBEZWMgIDYgMDE6MjA6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbW91c2UvLmN2c2lnbm9yZSwgZGxscy9tb3VzZS9NYWtlZmlsZS5pbiwgZGxscy9tb3VzZS9tb3VzZS5zcGVjLCBkbGxzL21vdXNlL21vdXNlX21haW4uYywgZGxscy9tb3VzZS9tb3VzZXJjLnJjLCBkb2N1bWVudGF0aW9uL3Jlc291cmNlcywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9kaXNwbGF5LnNwZWMsIGlmMTYzMi9tb3VzZS5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGlzcGxheS8uY3ZzaWdub3JlLCBkbGxzL2Rpc3BsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZGlzcGxheS9kaXNwLnJjLCBkbGxzL2Rpc3BsYXkvZGlzcGxheS5zcGVjLCBkbGxzL2Rpc3BsYXkvZGlzcGxheV9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIC5yYyBmaWxlIHN1cHBvcnQgZm9yIFdpbjE2IE5FIG1vZHVsZXMuCglNb3ZlZCBkaXNwbGF5LmMgYW5kIG1vdXNlLmMgdG8gc2VwYXJhdGUgZGxsIGRpcmVjdG9yaWVzLgoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBbGxvdyB0byBkZXNlbGVjdCBhbGwgaXRlbXMgYnkgc2VuZGluZyBDQl9TRVRDVVJTRUwoLTEpIHRvIHRoZSBjb21iby4KClN1biBEZWMgIDUgMjM6NTQ6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBzZXZlcmFsIGJ1Z3MgaW4gZ2RpIHBhdGggaGFuZGxpbmcuCglBZGRzICpQYXRoIGZ1bmN0aW9ucyB0byBkYyBmdW5jcyB0YWJsZSArIGFkZCBFbmhNZXRhRmlsZSByZWNvcmRpbmcuCglTZXBhcmF0ZSBvdXQgUG9seWxuZS9Qb2x5bGluZVRvIGFuZCBQb2x5QmV6aWVyL1BvbHlCZXppZXJUbyBpbiBkYwoJZnVuY3MgdGFibGUgdG8gZW5hYmxlIHByb3BlciBlbmhtZXRhZmlsZSByZWNvcmRpbmcuCglUaGUgY3VycmVudCBwb3NpdGlvbiB1cGRhdGUgaW4gKlRvIGZ1bmN0aW9ucyBpcyBub3cgaGFuZGxlZCBieSB0aGUKCW1haW4gZnVuY3Rpb24gYW5kIG5vdCBpbiB0aGUgZHJpdmVycy4KCU1vdmUgVVNFUiBmdW5jdGlvbnMgZnJvbSBncmFwaGljcy9wYWludGluZy5jIC0+IHdpbmRvd3MvcGFpbnRpbmcuYwoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLnNwZWMsIGluY2x1ZGUvb2xlMnZlci5oLCBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSB0aGUgT0xFIHZlcnNpb24gcmV0dXJuZWQgd2FzIHRvbyBsb3cKCS0gcmVuYW1lZCBPQUJ1aWxkVmVyc2lvbjE2IHRvIE9hQnVpbGRWZXJzaW9uMTYKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGZpbGVzL2RyaXZlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUZpeCBHZXRDdXJyZW50RGlyZWN0b3J5QSBhbmQgVyB0byByZXR1cm4gdGhlIG5lZWRlZCBzcGFjZSBmb3IgdGhlIENXRCwKCWlmIHRoZSBidWZmZXIgc2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlbW92ZSBoYWNrIGZvciBrZXlib2FyZCBtZXNzYWdlcyBpbiBkaWFsb2dzLgoKCSogd2luMzIvZGV2aWNlLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJU3R1YnMgZm9yIFZNTSBHZXREZW1hbmRQYWdlSW5mbyBmdW5jdGlvbiBhbmQgVldpbjMyICJHZXQgVk1DUEQgVmVyc2lvbiIuCglJbXBsZW1lbnRhdGlvbiBmb3IgVldpbjMyIEludDMxL0RQTUkgZGlzcGF0Y2ggY2FsbC4KCUZpeGVkICJkYW5nbGluZyBlbHNlIiBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVdoZW5ldmVyIHdlIGRvIGFuIHN0cm5jcHkgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB3ZSBwdXQgYSAnXDAnIGF0IHRoZSBlbmQKCW9mIHRoZSBidWZmZXIuCgoJKiBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1pc2MvdG9vbGhlbHAuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBUaHJlYWQzMkZpcnN0L05leHQgc3R1YnMuCgoJKiBpbmNsdWRlL3RocmVhZC5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHdpbmVzZXJ2ZXIncyBidWZmZXIgJiBidWZmZXJfc2l6ZSBhdCB0aGUgZW5kIG9mIFRFQiBzbyB0aGF0IElFCglkb2Vzbid0IG92ZXJ3cml0ZSB0aGVtLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtY2lJbmZvLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBXQVZFX0ZPUk1BVF9RVUVSWSBmbGFnIGluIHdvZE9wZW4uCgoJKiBkbGxzL21zYWNtMzIvc3RyZWFtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29ycmVjdGx5IGltcGxlbWVudCBBQ01fU1RSRUFNT1BFTkZfUVVFUlkgZmxhZyBpbiBhY21PcGVuU3RyZWFtLgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBNQ0lfT1BFTiBjb21tYW5kIGZvciB0eXBlcyBsaWtlICJDREFVRElPIUg6Ii4KCgkqIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIF9hbGxfIGxwQ2xpcHBlciBpbnRvIGNvbW1vbl9zdXJmYWNlLgoJQWRkIE5VTEwgcHRyIGNoZWNrIHRvIFNldENsaXBwZXIuCglTb21lIG1vcmUgZGVidWcgb3V0cHV0LgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgdGhlIHJlYWwgZ2xpYmMgb3BlbnB0eSBpZiBwcmVzZW50LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0eXBlZGVmIHRvIGluc3VyZSBjb21waWxhdGlvbiBvbiBhbGwgZ2NjJmVnY3MgdmVyc2lvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgX2NvcHlfcmVnaXN0cnkoKS4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvZXNhLm5scywgb2xlL25scy9lc2MubmxzLCBvbGUvbmxzL2VzZC5ubHMsIG9sZS9ubHMvZXNnLm5scywgb2xlL25scy9lc20ubmxzLCBvbGUvbmxzL2Vzbi5ubHMsIG9sZS9ubHMvZXNwLm5sczoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgc29tZSBjb25zdGFudHMgZm9yIFNwYW5pc2guCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ2FsbCBEbGxFbnRyeVBvaW50IGZvciAqZXZlcnkqIHByb2Nlc3MgdGhhdCBsb2FkcyB0aGUgRExMLCBub3QKCWp1c3QgZm9yIHRoZSBmaXJzdCBvbmUuCglCeXBhc3MgMzItPjE2LT4zMiB0cmFuc2l0aW9uIHdoZW4gY2FsbGluZyBEbGxFbnRyeVBvaW50IG9mIGJ1aWx0LWluLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgd2luZG93cy91c2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVTRVIuRGxsRW50cnlQb2ludCgpLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgMTYtYml0IGluc3RlYWQgb2YgMzItYml0IFVzZXJTaWduYWxQcm9jIGVudHJ5IHBvaW50LgoJRG9uJ3QgbG9hZCBVU0VSMzIuRExMIHVubGVzcyByZXF1ZXN0ZWQgYnkgdGhlIHByb2dyYW0uCglCdWdmaXg6IFBhc3MgdGhlIGNvcnJlY3QgdGhyZWFkIElEIHRvIFVzZXJTaWduYWxQcm9jLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBtYXAgZmFpbHMuCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVNob3cgdXNlIG9mIHVuZG9jdW1lbnRlZCBtZXNzYWdlcy4KCgkqIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmVkIGtleWJvYXJkIGF1dG8tcmVwZWF0IHdoZW4gRElucHV0IGFjcXVpcmVzIGl0CgktIHJlbW92ZWQgc29tZSAobm93KSBvYnNvbGV0ZSBmaXhtZSdzCgoJKiBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmVkIGxwQ2xpcHBlciBpbnRvIGNvbW1vbl9kaXJlY3RkcmF3c3VyZmFjZSBzdHJ1Y3QKCVJlbGVhc2Ugb2xkIGNsaXBwZXIgb24gbmV3IHNldAoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGYWtlIE1JRElfSU9fU1RBVFVTIHN1cHBvcnQgaW4gbWlkaSBpbiBvcGVuCglGaXhlZCBidWcgaW4gbWlkaSBpbiB3aGlsZSByZWFkaW5nIGRhdGEKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGluZmluaXRlIGxvb3AgZm9yIDAtbGVuZ3RoIHdhdmVoZHJzLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdneSBwbGF5YmFjayBmb3Igbm9uIFBDTSBmaWxlcwoJQWRkZWQgc3VwcG9ydCBmb3IgZnJvbSAmIHRvIGluZGV4ZXMgZm9yIHBsYXliYWNrCglOb3cgdXNpbmcgZG91YmxlIHdhdmVoZHIgZm9yIGJldHRlciBvdXRwdXQKCUNsZWFuZWQtdXAgaW50ZXJuYWwgc3RydWN0cyBhbmQgcmVtb3ZlZCBsYXN0IDE2IGJpdCBBUEkgYWRoZXJlbmNlCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVHJpZWQgdG8gcmVkdWNlIGVjaG8gaW4gcGxheVNvdW5kIEFQSSAodXNpbmcgdHdvIHdhdmVoZHIgaW5zdGVhZCBvZgoJb25lKS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjYWxsYmFjayBtZWNoYW5pc21zIGZvciBNSURJIElOLgoKCSogZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtMzIvd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbXByb3BlciBhY20gc3RyZWFtcyBjbG9zaW5nLgoKCSogZGxscy9tc2FjbTMyL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURlYnVnIHRyYWNlcyBjb3NtZXRpYyBmaXhlcy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBlcnJvcnMgKHRoYW5rcyB0byBGIEdvdWdldCBmb3IgcmVwb3J0aW5nIHRoZW0pLgoJQWRkZWQgc29tZSBiaXRzIG9uIHRodW5raW5nIGFuZCByZXNvdXJjZXMgZm9yIERMTHMuCgpTYXQgRGVjICA0IDA0OjIyOjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXJzdCBzdXBwb3J0IG9mIERHQSAyLjAgZm9yIERpcmVjdERyYXcuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglFcmV6IFZvbGsgPGVyZXpAZ214Lm5ldD4KCVN0dWJzIGZvciBHZXQvU2V0UHJvY2Vzc0RlZmF1bHRMYXlvdXQuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgQ2xvc2VQcm9maWxlVXNlck1hcHBpbmcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXNlIERJbnB1dCdzIGludGVybmFsIG1vdXNlIGV2ZW50IGhhbmRsZXIgdG8gaGFuZGxlIHRoZSBHZXREZXZpY2VTdGF0ZQoJZnVuY3Rpb24uCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCXdhdmVIZHIubHBEYXRhIHdhcyBldmVudHVhbGx5IEhlYXBGcmVlKCllZCB1bmluaXRpYWxpemVkLgoKCSogbG9hZGVyL21vZHVsZS5jOiBTZXJnZWkgVHVyY2hhbm92IDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4KCUZpeCBmb3IgR2V0QmluYXJ5VHlwZSB0byByZXR1cm4gU0NTX0RPU19CSU5BUlkgaWYgZXh0ZW5kZWQgc2lnbmF0dXJlCglpcyB1bmtub3duLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCAzMi1iaXQgbW9kdWxlIG5hbWUgaGFuZGxpbmcgdG8gY29uZm9ybSBiZXR0ZXIgdG8gV2luOXguCglSZW1vdmVkIE9GU1RSVUNUIHBhc3NpbmcgZHVyaW5nIHByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2UuCglCdWdmaXg6IGRvbid0IHNldCBleGVfbW9kcmVmIHdoZW4gTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIGlzIHNldC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBpbmNsdWRlL3dpbnN2Yy5oLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJQWRkZWQgY29kZSB0byBzb21lIHNlcnZpY2UgZnVuY3Rpb25zIChzb21lIHVudGVzdGVkKSwgZml4ZWQKCWRlY2xhcmF0aW9uIG9mIHNlcnZpY2UgbWFpbiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglQaWVycmUgTWFnZWF1CglNdXJhbGkgUGF0dGF0aGUKCUZyYW5jb2lzIEJvaXN2ZXJ0CglGcmFuY2lzIEJhdWRldAoJSGVubmluZyBIb2ZmbWFubgoJTWFueSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBzdHVicyBmb3Igc2V2ZXJhbCBNUlUgbGlzdCBmdW5jdGlvbnMgYW5kIGRvY3VtZW50ZWQgc29tZSBvdGhlcnMuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZsdXNoIGhhbmRsZSBpbiBhbnkgYWNjZXNzIG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBvZmYgYnkgb25lIGVycm9yIGluIGl0ZW0gaW5zZXJ0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb3cgMSUgZGV2aWF0aW9uIGZyb20gc3BlY2lmaWVkIHNhbXBsaW5nIHJhdGUgZm9yIHNvbWUgc291bmRjYXJkcy4KCgkqIGluY2x1ZGUvZDNkLmg6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwcmVzc2VkIHRoZSBpbmNsdXNpb24gb2YgT3BlbkdMIGhlYWRlcnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHN0dWIgZm9yIGNvbnZlcnNpb24gZnJvbSBtZXRhIHRvIGVuaGFuY2UgbWV0YSBmaWxlcy4KCS0gSW1wbGVtZW50ZWQgR2V0RW5oTWV0YUZpbGVCaXRzIGZvciBlbmhhbmNlZCBtZXRhIGZpbGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUltcHJvdmVkIHN0dWJzIGZvciB0aGUgZGRyYXcgY2xpcHBlciByb3V0aW5lcy4KCk1vbiBOb3YgMjkgMDI6NDg6NDMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL3RpbWUuYzogTWFkZSBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSByZXR1cm4gdmFsdWUgbW9yZSBwcmVjaXNlLgoKCSogc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmM6CglGaXhlZCBnZXRfZXZlbnRfb2JqL2dldF9maWxlX29iaiB0byB1c2UgdGhlIHByb2Nlc3MgcGFyYW1ldGVyICh0aGFua3MKCXRvIEVyaWMgUG91ZWNoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmM6CglGaXhlZCBERUJVR19PTkxZX1RISVNfUFJPQ0VTUyBhZ2FpbiAodGhhbmtzIHRvIFVscmljaCBXZWlnYW5kKS4KCgkqIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW46CglJbXBsZW1lbnRlZCB3YWl0YWJsZSB0aW1lcnMuCgpTdW4gTm92IDI4IDIxOjAzOjQ2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9iaW4ycmVzLmM6IEJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBpbmNsdWRlL3Byc2h0Lmg6CglTZXJnZSBJdmFub3YKCVBpZXJyZSBNYWdlYXUKCVRoeSBOZ3V5ZW4KCURvbiBLZWxseQoJTm9vbWVuIEhhbXphCglMb3RzIG9mIGJ1ZyBmaXhlcyBhbmQgbmV3IGZlYXR1cmVzIGluIHByb3BlcnR5IHNoZWV0cy4KCgkqIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCUNvbXBpbGVyIHdhcm5pbmdzIGZpeGVkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJR2l2ZSB0aGUgYXBwIGJhY2sgdGhlIGV4YWN0IGZvbnQgbmFtZSBpdCBhc2tlZCBmb3IuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglQcmV2ZW50IGEgY3Jhc2ggaWYgbWVzc2FnZXMgYXJlIHNlbnQgdG8gYSB0b29sYmFyIHdpbmRvdyBiZWZvcmUKCVdNX05DQ1JFQVRFIG9yIGFmdGVyIFdNX0RFU1RST1kuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjOiBKdWxpbyBDZXNhciBHYXpxdWV6IDxqZ2F6cXVlekBkbGQubmV0PgoJVXBkYXRlZCBTcGFuaXNoIE1NIGVycm9yIHN0cmluZyB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gKGZpbmFsPykgdXBkYXRlIG9mIFRyZWVWaWV3XyogbWFjcm8ncy4KCS0gaW1wbGVtZW50YXRpb24gb2YgVFZNX1NFVElOU0VSVE1BUksgJiBUVk1fU0VUSU5TRVJUTUFSS0NPTE9SCgktIGZpeGVkIHNvbWUgdHlwbydzCgktIGN1c3RvbSBkcmF3IGVuaGFuY2VtZW50cwoJLSBpbXBsZW1lbnRhdGlvbiBvZiBzdGF0ZSBpbWFnZXMKCS0gaW1wbGVtZW50YXRpb24gb2YgVFZTX0NIRUNLQk9YRVMKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB2aXN1YWwgdG9vbGJhciBidWdzLgoKCSogUkVBRE1FOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglBZGRlZCBub3RlcyBhYm91dCBXaW5lLXJlbGF0ZWQgRnJlZUJTRCBrZXJuZWwgcGF0Y2hlcy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglVc2UgUmVnUXVlcnlJbmZvS2V5IHRvIGNvdW50IG51bWJlciBvZiBwcmludGVycy4KCgkqIHNlcnZlci91bmljb2RlLmg6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCURvbid0IHRyeSB0byBjYWxsIHRvd3VwcGVyKCkgd2hlbiB0aGVyZSdzIG5vIHdjdHlwZS5oLgoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglXaGVuIGNvbWJvYm94IHNlbGVjdGlvbiBjaGFuZ2VzLCB1cGRhdGUgaXRzIGVkaXQgYm94IGFjY29yZGluZ2x5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU5vdGlmeSBwYXJlbnQgb2YgbGlzdGJveCBpZiByZXF1ZXN0ZWQuCgpUaHUgTm92IDI1IDIzOjQyOjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHRyYWNlLmM6IE1vcmUgcG9ydGFiaWxpdHkgZml4ZXMgKHRoYW5rcyB0byBKdWVyZ2VuIExvY2spLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglTZXQvdXNlIGZzL2dzIGZyb20gdGhlIHNpZ2NvbnRleHQgc3RydWN0LCB0aGUgY29ycmVzcG9uZGluZyBrZXJuZWwKCWNoYW5nZSBub3cgZmluYWxseSBoYXMgYmVlbiBNRkMnZCB0byAtc3RhYmxlLgoKCSogZG9jdW1lbnRhdGlvbi9mb250czogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJTWVudGlvbiBmcmVlIFRydWV0eXBlIGZvbnQgc2VydmVycyAoWGZzdHQgYW5kIHhmc2Z0KS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJTm90ZSB3aGF0IHRvIGRvIHdpdGggdGhlIHdpbmVkZWZhdWx0LnJlZyBpbiB0aGUgZmlsZS4KCgkqIHdpbjMyL2RldmljZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglJbXBsZW1lbnRlZCBwYXJ0cyBvZiBfUGFnZVJlc2VydmUoKSBfUGFnZUNvbW1pdCgpIF9QYWdlRGVjb21taXQoKQoJX1BhZ2VDaGFuZ2VQZXJtaXNzaW9ucygpIGFuZCBfUGFnZUZyZWUoKSB1c2luZyB0aGUKCVZpcnR1YWwqKCktRnVuY3Rpb25zICh3aXRoIHRoZSBncmVhdCBoZWxwIG9mIFVscmljaCBXZWlnYW5kKS4KCgkqIG1lbW9yeS9hdG9tLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUmVtb3ZlZCBmaXhtZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogU2V2ZXJhbCBidWcgZml4ZXMgaW4gc2F2ZV9rZXkoKS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJvZ3VzIGVycm9yIGRldGVjdGlvbiBmb3IgUmVnRW51bVZhbHVlW0FXXSBhbmQKCVJlZ1F1ZXJ5VmFsdWVFeFtBV10uCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgZ2xvYmFsIGRhdGEgbXV0dWFsIGV4Y2x1c2lvbgoJLSBSZW1vdmVkIGhhY2sgZm9yIGNyZWF0aW5nIHByb2Nlc3NlcyBzdXNwZW5kZWQgbm93IHRoYXQgaXQncyBpbXBsZW1lbnRlZAoJLSBGaXhlZCBvcmRpbmFsIG51bWJlcmluZyBhbmQgYWRkZWQgc3BlYyBzdHVicwoJLSBGaXhlZCBFbnVtQ29ubmVjdGlvbnMgY2FsbGJhY2sgdG8gZmlsbCBpbiBhbGwgcGFyYW1ldGVycyB3aXRoIHZhbGlkIGRhdGEKCS0gTWFkZSBkaXJlY3QgcGxheSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBmb2xsb3cgdGhlIHNhbWUgcGF0dGVybiBhcwoJICBkaXJlY3QgcGxheSBsb2JieQoKCSogZGxscy93aW44N2VtL2VtdWxhdGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNldmVyYWwgaW1wcm92ZW1lbnRzLgoKCSogb2xlL29sZTJubHMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGludmFsaWQgTENNYXBTdHJpbmcgZml4bWUgZm9yIE5PUk1fSUdOT1JFS0FOQVRZUEUgY2FzZS4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHdpbjE2IHNlcmlhbCBjb21tcyBsZXNzIG9mIGEgQ1BVIGhvZy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuYywgc2VydmVyL3VuaWNvZGUuaDoKCVN0b3JlIGFsbCBvYmplY3QgbmFtZXMgYXMgVW5pY29kZSBpbiB0aGUgc2VydmVyLgoKV2VkIE5vdiAyNCAxOTozNDozMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIHdpbmUuaW5pOgoJQWRkZWQgd2luZS5jb25mIG9wdGlvbiBmb3IgbmV3IGZvcm1hdCByZWdpc3RyeSBmaWxlcy4KCUFkZGVkIG9wdGlvbmFsIHBlcmlvZGljIHNhdmluZyBvZiB0aGUgcmVnaXN0cnkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJQWRkZWQgc3VwcG9ydCB0byB0aGUgc2VydmVyIGZvciBsb2FkaW5nIG5ldyBmb3JtYXQgKHZlcnNpb24gMikgZmlsZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEJ1ZyBmaXhlcyAodGhhbmtzIHRvIEp1ZXJnZW4gU2NobWllZCkuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglBZGRlZCBjdXJyZW50IGNvbnRleHQgdG8gdGhlIGV4Y2VwdGlvbiBkZWJ1ZyBldmVudCBzZW50IHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglGaXhlZCBoYW5kbGluZyBvZiBkZWJ1ZyBldmVudHMgb24gdGhyZWFkL3Byb2Nlc3MgZXhpdC4KCgkqIGRlYnVnZ2VyL2RiZy55LCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglSYWlzZSBhbiBleGNlcHRpb24gd2hlbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2FpdCBmYWlsZWQuCgpUdWUgTm92IDIzIDIzOjQzOjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy90dHlkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3R0eWRydi9iaXRibHQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvYnJ1c2guYywgZ3JhcGhpY3MvdHR5ZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3R0eWRydi9mb250LmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvb2JqZWN0cy5jLCBncmFwaGljcy90dHlkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3R0eWRydi9wZW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcHJvdmVkIHRoZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvaW1hZ2VsaXN0Lmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBmaXJzdCAnZHVtbXknIGltcGxlbWVudGF0aW9uIG9mIEltYWdlTGlzdF9SZWFkCgoJKiBpbmNsdWRlL3JlYmFyLmgsIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGFkZGVkIHZlcnNpb24gbWVzc2FnZXMKCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gaW1wbGVtZW50ZWQgTEJJdGVtRnJvbVB0CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGltcGxlbWVudGVkIHNpbXBsZSBjb2x1bW4gb3JkZXIgYXJyYXkgZnVuY3Rpb25hbGl0eQoJLSBpbXBsZW1lbnRlZCBzb21lIHZpcnR1YWwgbGlzdHZpZXcgbm90aWZpY2F0aW9ucwoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIG1pbm9yIHVwZGF0ZSB0byBtcnUgbGlzdCBmdW5jdGlvbnMKCS0gc3R1YnMgZm9yIENPTUNUTDMyXzQxMSB0byBDT01DVEwzMl80MTMKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL3Rvb2xiYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGFkZGVkIHZlcnNpb24gbWVzc2FnZXMgYW5kIHNvbWUgc2ltcGxlIGdldC9zZXQgbWVzc2FnZXMuCgktIGFkZGVkIHVuaWNvZGUgbWVzc2FnZXMKCgkqIGluY2x1ZGUvc2hsZ3VpZC5oLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbWFkZSBJU2hlbGxGb2xkZXIgYSBhZ2dyZWdhYmxlIG9iamVjdAoJLSBTSENvQ3JlYXRlSW5zdGFuY2UgY2FuIGNyZWF0ZSBDU0lETF9GU0ZvbGRlciBub3cKCS0gYnJvd3NpbmcgaW50byBmb2xkZXJzIG9uIHRoZSBkZXNrdG9wIGltcGxlbWVudGVkCgktIGNvcnJlY3RlZCByZXR1cm52YWx1ZSBvZiBJY29fRXh0cmFjdEljb25FeAoJLSBmaXhlZCBTSEdldERhdGFGcm9tSURMaXN0IHRvIHJldHVybiBkYXRhIG9mIHNpbXBsZSBwaWRscwoKCSogcmVsYXkzMi93c29jazMyLnNwZWMsIGlmMTYzMi93aW5zb2NrLnNwZWMsIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCU1vc2VzIERlSm9uZyA8ZGVqb25nQGNzLnVtbi5lZHU+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgV1NBUmVjdkV4IGZ1bmN0aW9uLiBUaGlzIGlzIGEgTWljcm9zb2Z0CglzcGVjaWZpYyBleHRlbnNpb24gdG8gdGhlIHdpbnNvY2sgQVBJLgoKCSogZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXByL3B3Y2FjaGUuYywgaW5jbHVkZS93aW5uZXR3ay5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb3JyZWN0ZWQgd3JvbmcgcGFyYW1ldGVyIGNvdW50cyBmb3IgV05ldENhY2hlUGFzc3dvcmQgYW5kCglXTmV0RW51bUNhY2hlZFBhc3N3b3Jkcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgc3R1YiBmb3IgRGxsSW5zdGFsbCgpLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJQ2hhbmdlZCB0byB1c2UgbmV3IHNlcnZlci1zaWRlIHJlZ2lzdHJ5IHN1cHBvcnQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmg6CglBZGRlZCByZWdpc3RyeSBzdXBwb3J0IHRvIHRoZSBzZXJ2ZXIuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOgoJRGlmZmVyZW50aWF0ZSB0cmFjaW5nIGZ1bmN0aW9ucyBiZXR3ZWVuIHJlcXVlc3QgYW5kIHJlcGx5LgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gaGF2ZSBkdW1waW5nIGZ1bmN0aW9ucyBmb3Igc3BlY2lmaWMgdHlwZXMuCgpTdW4gTm92IDIxIDIxOjAyOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglBZGRlZCBzZXJ2ZXJfY2FsbF9ub2VyciBmdW5jdGlvbiB0aGF0IGF2b2lkcyB0b3VjaGluZyB0aGUgbGFzdCBlcnJvci4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogQWRkZWQgYSBmZXcgcmVnaXN0cnkgZXJyb3IgY29kZXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc29tZSB1bmFsaWduZWQgYWNjZXNzZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gdGhlIGZvZEluZm9zIHdlcmUgdXNlZCBiZWZvcmUgaW5pdGlhbGl6ZWQKCS0gbHBUZW1wbGF0ZU5hbWUgY2FuIGJlIGEgcmVzb3VyY2UgaWQKCS0gaWYgbHBUZW1wbGF0ZU5hbWUgaXMgYSBzdHJpbmcgZG9uJ3QgZnJlZSB0aGUgb3JpZ2luYWwgb25lCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2NwdS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9sZS9ndWlkLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3NvY2tldC5jLCB0b29scy93cmMvbmV3c3RydWMuYywgZGxscy93aW5tbS9tY2kuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvdHlwZXMuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZy93aW5nX21haW4uYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJUmVtb3ZlZCBleHRyYSAjaW5jbHVkZSBzdGF0ZW1lbnRzLgoKCSogZmlsZXMvZmlsZS5jOgoJRml4ZWQgTW92ZUZpbGVFeEEgYmVoYXZpb3Igd2hlbiB0YXJnZXQgZmlsZSBkb2VzIG5vdCBleGlzdC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvUHQucmM6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8dHdpbmZvQGJlc3R3YXkuY29tLmJyPgoJQWRkZWQgUG9ydHVndWVzZSBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgY3VycmVudCBkYXkgY2lyY2xpbmcuICBGaXhlZCBtYW55IGJ1Z3MgaW4gdGhlIG1vbnRoCgljYWxlbmRlciBjb250cm9sIGluY2x1ZGluZyBjb250cm9sIHNwYWNpbmcgYW5kIGFsaWdubWVudC4gIEZpeGVkCglkZWZpbmVzIG1vbnRoY2FsLmguICBPcHRpbWl6ZWQgY29udHJvbCBkcmF3aW5nIGFuZCByZW1vdmVkIG1hbnkKCWV4dHJhbmlvdXMgcmVkcmF3cy4gIEltcHJvdmVkIGNvbnRyb2wgYmVoYXZpb3IuICBGaXhlZCBpbmNvbnNpc3RlbnQKCWZvcm1hdHRpbmcgaW4gYm90aCAuYyBhbmQgLmggZmlsZXMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGbHVzaCBjdXJyZW50IHByb2ZpbGUgYmVmb3JlIHVzaW5nIGEgbmV3bHkgb3BlbmVkIG9uZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEdldFRocmVhZFNlbGVjdG9yRW50cnkoKSBzZXRzIHJlYWQtd3JpdGUgZmxhZyBpbmNvcnJlY3RseS4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBvYmplY3RzL2ZvbnQuYywgaWYxNjMyL2dkaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBmb3IgR2V0Rm9udERhdGExNi4KCgkqIHdpbmRvd3MvZGlzcGxheS5jLCBpZjE2MzIvZGlzcGxheS5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBvcmRpbmFscyBhbmQgR2V0RHJpdmVyUmVzb3VyY2VJRCgpLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3B0cmFjZS5jOiBQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEZpeGVkIG1lYW5pbmcgb2YgREVCVUdfT05MWV9USElTX1BST0NFU1MgZmxhZy4KCgkqIHRvb2xzL2JpbjJyZXMuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUZpeGVkIGNvbXBpbGUgZXJyb3IuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogUGV0ZXIgU2NobGFpbGUgPHVkYnpAcnoudW5pLWthcmxzcnVoZS5kZT4KCUltcGxlbWVudGVkIFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyQSBhY2NvcmRpbmcgdG8gRGlzcGF0Y2hlclcuCgoJKiBNYWtlZmlsZS5pbjogTWFrZSBzdXJlIHdlIGNsZWFuIGRsbHMvIHRvby4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCUltcGxlbWVudGVkIE9wZW5TQ01hbmFnZXJXLCBDbG9zZVNlcnZpY2VIYW5kbGUsIE9wZW5TZXJ2aWNlVywgYW5kIHNvbWUKCW9mIFF1ZXJ5U2VydmljZVN0YXR1cy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nICc7Jy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFcnJvciByZXBvcnRpbmcgZml4LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoYW5nZWQgZGVmYXVsdCByZWxheSBsaW5lIG51bWJlciBmcm9tIDEwMCB0byAyMDAuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB1bmRvY3VtZW50ZWQgZmVhdHVyZSB0byBJbnNlcnRCdXR0b25BLgoJQWRkZWQgZHJvcGRvd24gYnV0dG9uIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwbGF5IGJhY2sgb2YgdW5jb21wcmVzc2VkIEFWSSBmaWxlLgoJRml4ZWQgZXhpdGluZyBjb25kaXRpb25zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGNyYXNoIGluIElEaXJlY3REcmF3U3VyZmFjZTpCbHRGYXN0LgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmb3J3YXJkaW5nIGFuZCBoYW5kbGluZyBtZXNzYWdlcyBkaXJlY3RlZCB0byB0aGUgbWFwcGVycy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgaW5jbHVkZS9tb2R1bGUuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2ltcGxpZmllZCBoSW5zdGFuY2UgY3JlYXRpb24vaGFuZGxpbmcuCglGaXhlcyBwcm9ibGVtcyB3aXRoIHNlbGYtbG9hZGVycyBjcmVhdGluZyBER1JPVVAgdGhlbXNlbHZlcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIHN0dWJzIGZvciBHZXQvU2V0TGF5b3V0KCkuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBzdHViIGZvciBTdGdTZXRUaW1lcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTSEZpbmRfSW5pdE1lbnVQb3B1cCBpcyBzdXBwb3NlZCB0byByZXR1cm4gYSBwb2ludGVyLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+Cgl1X2ludFsxNnwzMl1fdCBtaWdodCBub3QgYmUgZGVmaW5lZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gZml4ZWQgY3Jhc2ggd2hlbiBhZGRpbmcgaXRlbXMgd2l0aCBUVklfU09SVCBhbmQgd2luZUl0ZW0tPnBzelRleHQgaXMKCSAgc2V0IHRvIExQU1RSX1RFWFRDQUxMQkFDSy4KCS0gZGl0dG8gZm9yIFRSRUVWSUVXX0RlbGV0ZUl0ZW0sIFRSRUVWSUVXX0NyZWF0ZURyYWdJbWFnZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTW9uIE5vdiAxNSAwMDo0NjozMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogRml4ZWQgYWxsb2NhdGlvbiByb3VuZGluZyBmb3IgTUVNX1JFU0VSVkUuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGhhc2ggZnVuY3Rpb24uCgpTdW4gTm92IDE0IDIzOjU5OjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUaGUgYWR3SW5mb1swXSBmaWVsZCB3YXMgbm8gbG9uZ2VyIHVzZWQgb24gbW1pb09wZW4gKG1heSBjb250YWluIGZpbGUKCWhhbmRsZSkuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWJzIGZvciBTZXRFcnJvckluZm8sIFByb3BWYXJpYW50Q2xlYXIsIFByb3BWYXJpYW50Q29weSwKCUZyZWVQcm9wVmFyaWFudEFycmF5LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHN1aWNpZGUgY29kZSB3aGVuIHBsYXliYWNrIHRocmVhZCdzIGZhdGhlciBkaWVzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gdGhlIGNvbHVtcyBpbiB0aGUgc2hlbGx2aWV3IGFyZSBub3cgY3JlYXRlZCBkZXBlbmRpbmcgb24gdGhlCgkgIGF0dHJpYnV0ZXMgb2YgdGhlIGZvbGRlciBvYmplY3Qgc2hvd24KCS0gZ2V0IGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlIHNoZWxsZm9sZGVyIGluc3RlYWQgZGlyZWN0bHkgZnJvbSB0aGUgaWRsaXN0CgktIGhlYWRlciBmaWVsZHMgbG9jYWxpemVkIChvbmx5IGVuZ2wuIGFuZCBnZXJtYW4gdGlsbCBub3cpCgktIHNtYWxsIGZpeGVzCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGNvcnJlY3RlZCBjb250cm9sIHBvc2l0aW9ucwoJLSB1c2UgdGhlIGljb25zIGZyb20gY29tY3RsMzIgZm9yIHRoZSBidXR0b25zCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlbGF5L3Nub29wIGRlYnVnZ2luZyB3YXMgYnJva2VuIGJ5IGxhc3QgcGF0Y2ggLi4uCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglNb3ZlZCBwdHJhY2Ugc3VwcG9ydCB0byBwdHJhY2UuYy4gVHJpZWQgdG8gaW1wcm92ZSBwb3J0YWJpbGl0eS4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOiBCdWcgZml4ZXMuCgoJKiBpZjE2MzIvcmVsYXkuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzb21lIHVucmVzb2x2ZWQgZXh0ZXJuYWxzIG9uIG5vbi1JbnRlbCBhcmNocy4KCgkqIHJlbGF5MzIvc25vb3AuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIGF0dHJpYnV0ZSB0byB0d28gZm9yd2FyZCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBsZWZ0b3ZlciAjdW5kZWZzLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJZ25vcmUgTUNJX09QRU5fRUxFTUVOVCBpbiBDREFVRElPX21jaU9wZW4uCgoJKiBkbGxzL2NydGRsbC93Y3N0cmluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdvcmsgYXJvdW5kIGdsaWJjIGJ1ZywgdGhhdCBkb2VzIG5vdCBoYW5kbGUgbGF0aW4tMSB1bWxhdXRzLgoKU2F0IE5vdiAxMyAyMzo1NDowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3IHJlZ2lzdGVyIGZ1bmN0aW9uIGhhbmRsaW5nLgoKCSogdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgV2luMzIgcmVnaXN0ZXIgZnVuY3Rpb24gaGFuZGxpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL2ljbXAvaXAuaCwgZGxscy9pY21wL2lwX2ljbXAuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIEJTRCBoZWFkZXJzIGZvciBJQ01QIHBvcnRhYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGluc2VydGVkIG1hcmtlcnMgZm9yIHRoZSBiaW4ycmVzIHRvb2wKCS0gcmVmb3JtYXRlZCBoZXhkdW1wIGluIHNocmVzLnJjCgoJKiBkb2N1bWVudGF0aW9uL3Jlc291cmNlcywgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2JpbjJyZXMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTmV3IHRvb2wgdG8gY29udmVydCB0aGUgYmluYXJ5IHJlc291cmNlcyBpbiAqLnJjIGZpbGVzIChoZXhkdW1wcykgZnJvbQoJYW5kIHRvIGEgYmluYXJ5LgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbWlzYy9wb3J0LmMsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfYXN5bmMuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGJldHRlciBtaXNzaW5nIGZ1bmN0aW9uIGVtdWxhdGlvbi4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaCwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFkZSBkZWJ1Z2dlciBjb21waWxlIGFuZCBtYXJnaW5hbGx5IHdvcmsgb24gbm9uLUludGVsIGFyY2hzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBHRVRfSVAgbWFjcm8gdG8gd2lubnQuaAoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZywgZG9jdW1lbnRhdGlvbi9wc2RyaXZlciwgZG9jdW1lbnRhdGlvbi9wc2Rydi5yZWcsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRToKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgUG9zdFNjcmlwdCBkcml2ZXIgZG9jcyB0byBkb2N1bWVudGF0aW9uLyAuICBBZGQgaW5zdHJ1Y3Rpb25zIG9uCglob3cgdG8gdXNlIHJlZ2FwaSB0byBnZXQgaW5mb3JtYXRpb24gaW50byB0aGUgcmVnaXN0cnkuICBTdXBwbHkgc2FtcGxlCglpbnB1dCB0byByZWdhcGkuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUltcGxlbWVudGVkIHRoZSBQcmludFNldHVwIGRpYWxvZyBib3ggZm9yIHRoZSBQcmludERsZ0EuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJQWRkZWQgdmFsaWRhdGlvbnMgZm9yIHBhZ2UgaW5kZXggYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJLSBmaXhlZCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gY2hvc2VuIGluIHRoZSBmaWx0ZXIgY29tYm8gYm94CgktIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBPRk5fT1ZFUldSSVRFUFJPTVBUIGZsYWcKCS0gZml4ZWQgcG9zaXRpb25pbmcgb2YgY29udHJvbHMgaW4gdGhlIHVzZXItZGVmaW5lZCB0ZW1wbGF0ZXMKCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgV3JpdGVQcm9jZXNzTWVtb3J5IHRocm91Z2ggdGhlIHNlcnZlci4KCgkqIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuaDogQWRkZWQgZ2V0X3BhZ2Vfc2l6ZSBmdW5jdGlvbi4KCkZyaSBOb3YgMTIgMjE6Mzk6MTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFJlYWRQcm9jZXNzTWVtb3J5IHRocm91Z2ggdGhlIHNlcnZlci4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIENSRUFURV9TVVNQRU5ERUQgZmxhZyBpbiBDcmVhdGVQcm9jZXNzLgoKCSogd2luMzIvZGV2aWNlLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50ZWQgVldpbjMyIFZ4RENhbGwgbWVjaGFuaXNtIGFuZCAyIGNhbGxzLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jOiA8am9kYW1hbkBjZWd0MjAxLmJyYWRsZXkuZWR1PgoJRml4ZWQgam95c3RpY2sgc2NhbGluZy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmM6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8dHdpbmZvQGJlc3R3YXkuY29tLmJyPgoJVXNlIGNvbnN0YW50cyBJRE9LIGFuZCBJRENBTkNFTCBpbiAucmMgZmlsZXMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUG9ydGFiaWxpdHkgZml4OiByZW5hbWVkIFBUUkFDRV8qIGludG8gUFRfKi4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvZGV2aWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IGZvciBidWdneSBhcHBzIHRoYXQgY2FsbCB0aGUgd3JvbmcgVnhEQ2FsbCByb3V0aW5lLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDb21wbGV0ZSBzdHViIGZvciBSYXNFbnVtRW50cmllcyBieSBzYXlpbmcgd2UgaGF2ZSAwIGVudHJpZXMuCgoJKiBpbmNsdWRlL2RlYnVnc3RyLmgsIG1pc2MvZGVidWdzdHIuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWJ1Z3N0cl9oZXhfZHVtcCB0byBhbGxvdyBkaXNwbGF5IGhleCBkdW1wcyBvZiBkYXRhIGluIGFueQoJZGVidWdnaW5nIG1lc3NhZ2UuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglBZGRlZCB1c2VfcHRyYWNlIGZsYWcgdG8gZGlzYWJsZSBwdHJhY2UgdXNhZ2UuIFNob3VsZCBldmVudHVhbGx5IGJlCgltYWRlIGludG8gYW4gb3B0aW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2RsZ3MuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTWFkZSB0aGUgYnV0dG9ucyBpbiB0aGUgZmlsZWRsZyBjaGFuZ2Ugd2hlbiBzZWxlY3RpbmcgYSBkaWZmZXJlbnQKCXZpZXcgdHlwZSBieSB0aGUgY29udGV4dCBtZW51LCBjbGVhbnVwLgoKCSogZGxscy93aW5tbS93aW5tbV9Fcy5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglKdWxpbyBDZXNhciBHYXpxdWV6IDxqZ2F6cXVlekBkbGQubmV0PgoJQWRkZWQgU3BhbmlzaCAocHVyZSBDYXN0aWxsYW4pIE1NIGVycm9yIHN0cmluZyB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHNpZ25hbCBoYW5kbGluZyBmb3IgU1BBUkMgLyBTb2xhcmlzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDb21tZW50IG91dCBleHBsaWNpdCBjYWxsIHRvIFNIRUxMX1NhdmVSZWdpc3RyeSBzaW5jZSB3aW5lbGliIHByb2dyYW1zCglub3cgZXhpdCBwcm9wZXJseS4gIENoYW5nZSBzZXZlcmFsIE5VTExzIHRvICdcMCdzLiAgRml4IHNvbWUgc3BlbGxpbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIFhTaG0gY29tcGxldGlvbiBldmVudCBsZWFrLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlY3Vyc2lvbiBjb3VudCB3aGlsZSBjYWxsaW5nIG1pZGlTdHJlYW0oUGF1c2V8UmVzdGFydCkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBzYXZlX2NoZWNrX3RhaW50ZWQgdG8gcHJvcGVybHkgc2NhbiB0aGUgdHJlZSBzbyB0aGF0IGFsbCB0YWludGVkCglicmFuY2hlcyBnZXQgc2F2ZWQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUJlcm5kIFBheXNhbiA8YmVybmQucGF5c2FuQGdteC5kZT4KCUFkZGVkIGEgc3R1YiBmb3Igc2V0am1wLgoKV2VkIE5vdiAxMCAyMDoyNToxOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jOgoJRG9uJ3QgY3Jhc2ggd2hlbiB3ZSBnZXQgYSBTSUdDSExEIGZvciBhIHJlbW92ZWQgdGhyZWFkLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgY29tcGlsZSBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJKFByZWxpbWluYXJ5KSBDT05URVhUIHN0cnVjdHVyZSBmb3IgU1BBUkMgYWRkZWQuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMT0FEX0RMTF9ERUJVR19FVkVOVCBscEltYWdlTmFtZSBwYXJhbWV0ZXIgd2FzIGluY29ycmVjdC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2hlbiBkZWNvbW1pdHRpbmcsIHJlbWFwIHplcm8gcGFnZXMgdXNpbmcgTUFQX0ZJWEVELgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb0dldENsYXNzT2JqZWN0IHNob3VsZCBjb21wbGFpbiBhYm91dCBub3QgYmVpbmcgYWJsZSB0byBkbwoJb3V0LW9mLXByb2Nlc3Mgc2VydmVycyAqb25seSogaWYgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaW5jbHVkZSB0aGUKCWluLXByb2Nlc3Mgb3B0aW9ucy4KCgkqIG1pc2MvdmVyc2lvbi5jLCBjb250cm9scy9lZGl0LmMsIGluY2x1ZGUvd2ludmVyc2lvbi5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNlbmQgV01fQ1RMQ09MT1JFRElUIG5vdCBXTV9DVExDT0xPUlNUQVRJQyBtZXNzYWdlcyB0byBwYXJlbnQgb2YgYQoJZGlzYWJsZWQgZWRpdCBjb250cm9sIGlmIHRoZSBhcHBsaWNhdGlvbiBleHBlY3RzIGEgd2luZG93cyB2ZXJzaW9uCgliZWZvcmUgV0lOOTUgYW5kIE5UNDAuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmM6CglNb3NoZSBWYWluZXIgPG1vc2hldkBlYXN5YmFzZS5jb20+CglTdHViIGZvciBHZXRPdmVybGFwcGVkUmVzdWx0LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURldGVybWluZSBleHBlY3RlZF92ZXJzaW9uIG9mIFBFIGJ1ZGRpZXMgZnJvbSB0aGUgU3Vic3lzdGVtVmVyc2lvbi4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5udC5oLCB3aW4zMi9leGNlcHQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlICpub3QqIFdJTkFQSS4KCk1vbiBOb3YgIDggMDU6MzE6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglQcmVsaW1pbmFyeSBwdHJhY2Ugc3VwcG9ydC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglSZW1hcCB6ZXJvLXBhZ2VzIHdoZW4gZGVjb21pdHRpbmcgYSBwYWdlIHJhbmdlIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglHZXJhcmQgUGF0ZWwpLgoKCSogTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvbWFpbi5jOgoJSW5zdGFsbCB0aGUgd2luZSBzZXJ2ZXIgaW4gJChiaW5kaXIpIGFuZCBleGVjIGl0IGZyb20gdGhlcmUuCgpTdW4gTm92ICA3IDIzOjU5OjA4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCURvIG5vdCBmcmVlIHRoZSBoYW5kbGVzIG9uY2UgdGhleSBoYXZlIGJlZW4gc2VudCB0byB0aGUgY2xpZW50ICh0aGFua3MKCXRvIEplcmVteSBXaGl0ZSkuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gYXNrZWQgdG8gdXNlIHN0cmluZ3MgaWRlbnRpZmllZCBieSByZXNvdXJjZSBpZAoJaW5zdGVhZCBvZiBwb2ludGVyLgoKCSogd2luZG93cy9kY2UuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJV2hlbiB3aW5kb3cgY2xhc3MgaGFzIENTX0NMQVNTREMgc3R5bGUgd2Ugc2hvdWxkIG5vdCByZW1vdmUgdGhlIERDCgl3aGVuIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdy4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4ZXMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeGVzIGFuZCByZW9yZ2FuaXphdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmgsIGluY2x1ZGUvYml0X2FycmF5LmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS9vbGVvYmouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBvYnNvbGV0ZSBmaWxlcyBubyBsb25nZXIgaW4gdXNlLgoKCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURpcmVjdFgtWFNobSBub3cgd2FpdHMgZm9yIHRoZSBYIHNlcnZlciB0byBmaW5pc2ggdGhlIHByZXZpb3VzIGZyYW1lCgliZWZvcmUgc2VuZGluZyBhbm90aGVyIGZyYW1lIGRvd24gaXRzIHBpcGUsIGF2b2lkaW5nIHRoZSBYIHNlcnZlcgoJb3ZlcmxvYWQgYW5kIHJlc3VsdGluZyBzbG93bmVzcyB0aGF0IHVzZWQgdG8gYmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBpbmNsdWRlL2RsZ3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSB1bmlmaWVkIHRlbXBsYXRlcyBmb3IgdGhlIG9wZW4gYW5kIHRoZSBzYXZlIGRsZwoJLSByZXBsYWNlZCBidXR0b25zIHdpdGggYSB0b29sYmFyCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgaW50ZXJmYWNlIGRlY2xhcmF0aW9uIGZvciBJU2hlbGxmb2xkZXIyCgktIGFkZGVkIHRoaXMgaW50ZXJmYWNlIHRvIGFsbCBzaGVsbCBmb2xkZXJzCgktIHNtYWxsIGZpeGVzIHRvIHNoZWxsdmlldyAoY3Jhc2ggd2l0aCBuYXRpdmUgY29tZGxnMzIpCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgcmVsb2NhdGlvbiBoYWNrIGluIFBFX0luaXRUbHMuIEFkZGVkIHNvbWUgbW9yZSBmb3IgdGhlIG90aGVyCglwb2ludGVyZmllbGRzIGluIHRoZSBUTFMgZW50cnkuIChXaXRoIHRlc3RpbmcgaGVscCBmcm9tIEp1c3NpCglKdW1wcGFuZW4gPGp1c3NpakB6ZXVzZWRpdC5jb20+KS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgQ2hhbmdlRGlzcGxheVNldHRpbmdzRXhBIHN0dWIgYW5kIHNvbWUgZmxhZyBkZWZpbmVzLgoKCSogaW5jbHVkZS9jb25zb2xlLmg6IFJvYmVydCAnQWRtaXJhbCcgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJQWRkZWQgdGhlIGhleCB0cmlwbGV0cyB0byB0aGUgY29uc29sZSBjb2xvciBkZWZpbml0aW9ucy4KCgkqIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBpbmNsdWRlL2lucHV0LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBoYXZlIG1vdXNlIG1vdmVtZW50cyByZXBvcnRlZCByZWxhdGl2ZSB0bwoJV2luZSdzIG1vdXNlIGRyaXZlci4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3dpbmUvaWNtcGFwaS5oLCBpbmNsdWRlL3dpbmUvaXBleHBvcnQuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5lLmluaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgSUNNUCBETEwgaW1wbGVtZW50YXRpb24uCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvQ0hBTkdFUzoKCUp1ZXJnZW4uU2NobWllZEBkZWJpdGVsLm5ldAoJLSBCdWdmaXg6IFN0eWxlcyB3ZXJlIGV2YWx1YXRlZCBhcyBleHByZXNzaW9ucy4gVGhlIE5PVCBpbiBjb21iaW5hdGlvbgoJICB3aXRoIHN0eWxlIGZsYWdzIHdhcyBub3Qgb3ZlcndyaXRpbmcgdGhlIGRlZmF1bHQgc3R5bGVzIGxpa2UgV1NfVklTSUJMRS4KCSAgU29sdmVkIGJ5IGludHJvZHVjaW5nIG93biBydWxlcyBmb3IgcGFyc2luZyBzdHlsZXMuCgoJKiBjb250cm9scy9jb21iby5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglGaXhlZCB0aGUgaGVpZ2h0IG9mIHRoZSBDb21ib0JveCBkcm9wIGxpc3QuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEYXZpZCBHcmFudCA8ZGF2aWRncmFAY29yZWwuY2E+CglXaW5kb3dzIHNlbmRzIFdNX0dFVERMR0NPREUgb25seSBpbiByZXNwb25zZSB0byBrZXlib2FyZCBtZXNzYWdlcwoJKFdNX0tFWURPV04sIFdNX0NIQVIsIFdNX1NZU0NIQVIpLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIG1pc3NpbmcgX19hdHRyaWJ1dGVfXyAoKGNvbV9pbnRlcmZhY2UpKSBmb3IgSVVua25vd24gd2l0aC4KCSAgSUNPTV9VU0VfQ09NX0lOVEVSRkFDRV9BVFRSSUJVVEUKCS0gU21hbGwgYWRkaXRpb24gdG8gY29tbWVudHMgc3Vycm91bmRpbmcKCSAgSUNPTV9VU0VfQ09NX0lOVEVSRkFDRV9BVFRSSUJVVEUgIm9wdGlvbiIuCgoJKiBvbGUvb2xlMm5scy5jLCBpZjE2MzIvb2xlMm5scy5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50YXRpb24gb2YgUmVnaXN0ZXJOTFNJbmZvQ2hhbmdlZC4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCB3aW5kb3dzL3F1ZXVlLmMsIG1lbW9yeS9oZWFwLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZHJlc3NlcyBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMgYWNjZXNzaW5nIG5vbi1nbG9iYWwgY3JpdGljYWwKCXNlY3Rpb25zLgoKCSogc2VydmVyL3NvY2suYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYnVnIGluIFdJTlNPQ0tfYWNjZXB0IHdoZW4gbm8gZXZlbnQgaXMgcHJlc2VudC4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGluY2x1ZGUvbG1jb25zLmgsIGluY2x1ZGUvcmFzLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgc3R1YnMgZm9yIFJhc0VudW1FbnRyaWVzQSBhbmQgUmFzR2V0RW50cnlEaWFsUGFyYW1zQS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50YXRpb24gb2YgY3VzdG9tIGRpYWxvZyBtZXNzYWdlcyBhbmQgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGF2aWQgR3JhbnQgPGRhdmlkZ3JhQGNvcmVsLmNhPgoJLSBQcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgY2NoVGV4dE1heCBmaWVsZCB3YXMgYWRkZWQgZm9yCgkgIFRWTl9HRVRESVNQSU5GTyBub3RpZmljYXRpb24gbWVzc2FnZS4KCS0gVFZNX1NFVElURU0gc2hvdWxkIHVwZGF0ZSAnbWFzaycgZmllbGQgdG8gc3luY2hyb25pemUgaXQgd2l0aAoJICBjdXJyZW50IGl0ZW0gc3RhdGUuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSWYgUGFnZVNpemUvSW5wdXRTbG90IGVudHJ5IGRvZXNuJ3QgY29udGFpbiBhbiBvcHRpb25zIHRyYW5zbGF0aW9uCglzdHJpbmcgdXNlIHRoZSBvcHRpb24gbmFtZSBpbnN0ZWFkLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBTZXRUaXRsZUEgd2hlbiBzdHJpbmcgcmVzb3VyY2VzIHdlcmUgdG8gYmUgbG9hZGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CgktIEZpeGVkIGFuIGVycm9yIGZvciBzY3JvbGxpbmcgaW4gTGlzdHZpZXcgKHNvbWV0aW1lcyBhIGNvbHVtbiB3b3VsZAoJICBub3QgYmUgdmlzaWJsZSkgZHVlIHRvIG15IGxhc3QgY2hlY2tpbi4KCS0gRml4ZWQgYW4gZXJyb3IgZm9yIHRoZSBoZWFkZXIgY29udHJvbCB3aGVuIHRoZSBMaXN0dmlldyBpcyByZXNpemVkIHdpdGggV01fU0laRQoJLSBGaXhlZCB0aGUgc2Nyb2xsaW5nIGZvciBzbWFsbCBhbmQgbGFyZ2UgaWNvbiAodGhpcyBicm9rZSBiZWNhdXNlIG9mCgkgIHRoZSB1c2Ugb2YgU0JfUEFHRSBpbiBzY3JvbGxJbmZvKQoJLSBBZGRlZCBhIHBhdGNoIG1hZGUgYnkgTm9vbWVuIEhhbXphIHRvIHVwZGF0ZSB0aGUgaXRlbSB3aWR0aCB3aGVuCgkgIGFkZGluZyBhIG5ldyBpdGVtCgoJKiBzZXJ2ZXIvc29jay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBzb2NrZXQgY3JlYXRpb24gZXJyb3JzLgoKCSogY29udHJvbHMvbWVudS5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCVdoZW4gYSBwb3B1cG1lbnUgaXMgY3VycmVudGx5IGFjdGl2ZSBvbiB0aGUgc2NyZWVuLCBpdCBzaG91bGRuJ3QKCXJlbW92ZSBtb3VzZSBjbGljayBtZXNzYWdlcyB0aGF0IGRvbid0IGJlbG9uZyB0byBpdCBmcm9tIHRoZSBxdWV1ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglFeGVjIGB3aW5lY2xpcHNydicgbm90IGB3aW5lY2xpcHN2cicsIGFuZCBkb24ndCBpbmhlcml0IHdpbmUncyBYCglzb2NrZXRzIHRvIGl0IChvdGhlcndpc2Ugd2luZG93cyBzdGF5IGFyb3VuZCB3aGVuIHdpbmUgaGFuZ3MpLgoKVGh1IE5vdiAgNCAwMjo1MToyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21haW4uYzogRml4ZWQgLWRlYnVnbXNnICtzZXJ2ZXIuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglBZGRlZCBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUgc3RkaW8gaGFuZGxlcyBpbiBDbG9zZUhhbmRsZS4KCgkqIHNlcnZlci9oYW5kbGUuYzoKCU1hZGUgYWxsIGhhbmRsZXMgbXVsdGlwbGUgb2YgNC4gRml4ZWQgc2VtYW50aWNzIGZvciBwc2V1ZG8taGFuZGxlcy4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJRnJlZSB0aGUgaGFuZGxlcyBvZiB0aGUgZXZlbnQgc3RydWN0dXJlIGluIHRoZSByaWdodCBwcm9jZXNzICh0aGFua3MKCXRvIEplcmVteSBXaGl0ZSkuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBkcGxheXggTGliTWFpbiBmb3IgaW5pdGlhbGl6YXRpb24gb2YgYWxsIGRwbGF5eCAnZ2xvYmFsJyBkYXRhCgktIEFkZGVkIHN0YXJ0IGZvciBnbG9iYWwgZGF0YSBtYW5pcHVsYXRpb24KCS0gVE9ETyBsaXN0IHVwZGF0ZWQKCS0gQWRkZWQgc29tZSBtaXNzaW5nIGhlYWRlciBmaWxlIGRlZmluaXRpb25zCgktIEFkZGVkIHRoZSBhbnNpIHZlcnNpb25zIG9mIGRwbGF5IGFuZCBkcGxvYmJ5CgktIEZpeGVkIGludmFsaWQgbWFjcm8gZm9yIElEaXJlY3RQbGF5NAoJLSBDbGVhbmVkIHVwIGNvbXBpbGVyIHdhcm5pbmdzCgktIE1vcmUgaW1wbGVtZW50YXRpb24sIGJ1ZyBmaXhlcyBhbmQgY3JpdGljYWwgcmVnaW9uIHByb3RlY3Rpb24KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJTmV2ZXIgc2VuZCBhIFdNX0NMT1NFIG1lc3NhZ2UgIHRvIGEgcG9wdXAgd2luZG93LgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJQ2hlY2sgaWYgdGhlIHdpbmRvdyBpcyBtYW5hZ2VkIGJlZm9yZSB0cnlpbmcgdG8gZ2l2ZSBpdCBmb2N1cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuaGFuY2VkIGxpbnV4IGpveXN0aWNrIGFwaSBkZXRlY3Rpb24gc2xpZ2h0bHkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSmFyb3NsYXcgUGlvdHIgU29iaWVzemVrIDxqc29iaWVzekBlbGthLnB3LmVkdS5wbD4KCUFkZGVkIFBvbGlzaCBrZXlib2FyZCBzdXBwb3J0LgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgRENfVkVSU0lPTiBhbmQgRENfVFJVRVRZUEUgdG8gd2luMTZkcnYgRGV2aWNlQ2FwYWJpbGl0aWVzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBgQ2Fzc2V0dGUnIHRvIFBQRCAtPiB3aW5kb3dzIHByaW50ZXItYmluIG1hcHBpbmcuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IE1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglNb2RpZmllZCBsc3RyY3B5bld0b0EgdG8gcHV0IHRlcm1pbmF0aW5nIG51bGwgYXQgZW5kIG9mIHN0cmluZywgbm90CgllbmQgb2YgYnVmZmVyLgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBkdXBsaWNhdGUgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRoZSBJU3RvcmFnZSBhbmQgSVN0cmVhbSBDT00KCWludGVyZmFjZXMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUZpeGVkIENPTE9SX01BWCBkZWZpbml0aW9uIGZvciBuZXcgV2luMzIgdmFsdWVzLgoKCSogb2JqZWN0cy9nZGlvYmouYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglSZW1vdmVkIHVubmVjZXNzYXJ5IFVTRVIgY2FsbCBmcm9tIEdldEZvbnRNZXRyaWNzLiBGaXhlcyBuYXRpdmUgVVNFUi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJU2V0IHByb3BlciBpdGVtIGZvY3VzIG9uIERlbGV0ZUl0ZW0uCglDbGVhbiB1cCBlZGl0IGxhYmVsIGltcGxlbWVudGF0aW9uLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0ZXIgU2NobGFpbGUgPHVkYnpAcnoudW5pLWthcmxzcnVoZS5kZT4KCUZpeGVkIGEgbG9uZyBzdGFuZGluZyAoYW5kIGFubm95aW5nKSB0eXBvLCB0aGF0IHByZXZlbnRlZAoJR2V0RGlza0ZyZWVTcGFjZUEgZnJvbSB3b3JraW5nLi4uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5hYmxlIHNhZmUgcmVhZGluZyBvZiByZWdpc3RyeSBmaWxlLCBldmVuIGlmIGZpbGUgaXMgYnJva2VuLgoKCSogd2luMzIvbmV3Zm5zLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQ2hhbmdlZCBPcGVuRGVza3RvcCBzdHViIHRvIFdpbjl4IGJlaGF2aW9yIGZvciBRdWlja1RpbWUgNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAzMSAyMjoyNjozNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBTZXQgY2xvc2Utb24tZXhlYyBmbGFnIG9uIHNlcnZlciBzb2NrZXQuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGV4cGxhbmF0aW9uIG9uIGNyZWF0aW5nIGEgbmV3IERMTC4KCgkqIG1pc2MvdmVyc2lvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciB2ZXJzaW9uIGF1dG9kZXRlY3Rpb24uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRlZCBzdXBwb3J0IG9mIERTX0NPTlRST0wgYW5kIFdTX0VYX0NPTlRST0xQQVJFTlQgc3R5bGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogSXZhbiBkZSBTYWVkZWxlZXIgPEl2YW5kc0BzeW1wYXRpY28uY2E+CglGYWlsIHdoZW4gTFBSRUNUIGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCU9uIENvbmZpZ3VyZU5vdGlmeSwgZmluZCB0aGUgZmlyc3QgdmlzaWJsZSB3aW5kb3cgYWJvdmUgdGhlIGN1cnJlbnQgb25lLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgb3BlcmFuZCBzaXplcyBmb3IgdGhlICJlbnRlciIgaW5zdHJ1Y3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVBTTV9BRERQQUdFIHJldHVybnMgVFJVRSBvciBGQUxTRS4KCgkqIGRsbHMvbXNhY20zMi9idWlsdGluLmMsIGRsbHMvbXNhY20zMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20zMi93aW5lYWNtLmgsIGluY2x1ZGUvbXNhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSBtc2FjbTMyIHJlYWxseSBsb2FkIEFDTSBkcml2ZXJzLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJUHJldmVudCBGaWxsUmduIGZyb20gdXNpbmcgYSBOVUxMIHBvaW50ZXIuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgZmV3IHByb2JsZW1zIHdpdGggUmVnRW51bUtleSouCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGF0aW9uIG9mIHVzZXIgZGVmaW5lZCB0ZW1wbGF0ZXMuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlNYWxsb2MxNl9Db25zdHJ1Y3RvcjogbW92ZWQgSUNPTV9WVEJMKFRoaXMpIHdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY2xlYXIgdGhlIGRyYXdpbmcgYXJlYSBmb3IgZXRjaGVkIHN0YXRpYyBjb250cm9scy4KCVJlcGxhY2VkIG91ciBvd24gZHJhd2luZyBzdHVmZiBpbiBldGNoZWQgc3RhdGljIGNvbnRyb2xzIGJ5IERyYXdFZGdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglJbiByZXBvcnQgdmlldyBtb2RlIG9mIHRoZSBsaXN0dmlldyBjb250cm9sLCBpbXBsZW1lbnRlZCB0aGUKCWhvcml6b250YWwgc2Nyb2xsYmFyIGZ1bmN0aW9uYWxpdHkuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiB0aGUgYmVoYXZpb3Igb2YgbWF4aW1pemVkIE1ESSBjaGlsZHJlbi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZXdyaXRlIG9mIEVudW1QcmludGVycy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRmlsbCBpbiB0aGUgaHduZEZyb20gZmllbGQgb2YgdGhlIE5NSERSIHN0cnVjdHVyZSB3aGVuIHNlbmRpbmcKCW5vdGlmaWNhdGlvbnMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2hlbiByZWFkaW5nIGEgcHJvZmlsZSBlbnRyeSByZW1vdmUgdHJhaWxpbmcgcXVvdGUgd2hlbiB0aGVyZSdzIGFuCglvcGVuaW5nIG9uZS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBjb3JyZWN0IGhlaWdodCBhbmQgd2lkdGggZm9yIHN0b2NrIGZvbnRzIGluIEdldE9iamVjdC4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzogQ29tcGlsZSBmaXguCgoJKiBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmU6IEFkZGVkIHdtY2RyYy5oCgoJKiBkbGxzL3dpbm1tL21taW8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIGN1c3RvbSBJL08gcHJlb2NlZHVyZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJQWJleSBHZW9yZ2U8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFByb2dJREZyb21DTFNJRC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJV2l6YXJkIG1vZGUgcHJvcGVydHkgc2hlZXRzIGhhdmUgYSB0YWIgY29udHJvbC4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uc3BlYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgd2luZS5pbmk6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGJ1aWx0LWluIG1zYWNtLmRydiBhbmQgbWlkaW1hcC5kcnYgZHJpdmVycy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIGZpeGVzIGFuZCByZW9yZ2FuaXphdGlvbnMuCgktIEFkZGVkIGNoZWNrcyBmb3IgZG9jdW1lbnRhdGlvbiBpbmNvbnNpc3RlbmNpZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBtaXNjL3BvcnQuYywgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19hc3luYy5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG1pc3NpbmcgY29uZmlndXJhdGlvbiAjaWY6cyBhbmQgI2luY2x1ZGVzOnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBmaWxlcy9kb3NfZnMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBtYWtlIGRvZXNuJ3QgbGlrZSB1bm5lY2Vzc2FyeSBcLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglHZW5lcmFsaXplZCB0aGUgdXNlIG9mIHRoZSBuZXcgSUNPTV9WRklFTEQgYW5kIElDT01fVlRCTCBtYWNyb3MuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBjb3VwbGUgb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglBIGNyYXNoIHdvdWxkIG9jY3VyIGlmIHRoZSBmaWxlIHR5cGUgaW4gcmVwb3J0IG1vZGUgd2FzIGVtcHR5LgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlZCB0aGUgaW5pdGlhbGlzYXRpb24gb2YgdGhlIEtleVN0YXRlIGFycmF5LgoKCSogbWlzYy9sc3RyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUJldHRlciBoYW5kbGluZyBvZiBuZXdsaW5lcyBpbiBGb3JtYXRNZXNzYWdlKi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeCAoc29tZSkgYmFkIGJlaGF2aW9yIHdpdGggYnVmZmVyIHVuZGVycnVuLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFBsYXlTb3VuZCBwcm9jIGZvciBub24gUENNIGNvbnRlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCS0gVHJlZXZpZXcgdXNlcyBDT0xPUl9XSU5ET1cgY29sb3IgaW5zdGVhZCBvZiBjbHJCayB0byBmaWxsIGJhY2tncm91bmQuCgktIFRyZWV2aWV3OiBjb2xvcnMgcmV0dXJuZWQgYnkgVFZNX0dFVCoqQ09MT1IgYXJlIG1peGVkIHVwLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglDbGlja2luZyB0aGUgY29tYm8gYm94IHdvdWxkIGNhdXNlIGEgY3Jhc2ggaWYgaXQgd2FzIGVtcHR5LgoKCSogZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG1pc2MvcHJpbnRkcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUl0IGFwcGVhcnMgdGhhdCBTdGFydERvYyBzZW5kcyB0aGUgU1RBUlRET0MgZXNjYXBlIHdpdGggdGhlIERPQ0lORk8KCXN0cnVjdHVyZSBwb2ludGVkIHRvIHdpdGggdGhlIG91dHB1dCBkYXRhIHBhcmFtZXRlci4KCgkqIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywgaWYxNjMyL2dkaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBmb3IgRW5naW5lUmVhbGl6ZUZvbnRFeHQgKHVzZWQgYnkgdGhlIHdpbjk4IHBzY3JpcHQgZHJpdmVyKS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2VsZWN0ZWQgYnV0dG9uIHdpdGhpbiB0YWIgY29udHJvbCB3aWxsIGJlIHBhaW50ZWQgd2l0aCB0aGUgcmlnaHQKCWNvbG9yIGJydXNoLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRG8gbm90IHNlbmQgdHdvIFBTTl9LSUxMQUNUSVZFIG1lc3NhZ2VzLgoKCSogd2luZS5pbmk6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJaW5pIHZhcmlhYmxlcyBkbyBub3QgbGlrZSA7IGNvbW1lbnRzIGFmdGVyIHRoZW0gKHRoZXkgYXJlIG5vdCBzaGVsbAoJc2NyaXB0cykuIEZpeGVkIGEgdHlwbyBpbiBvbmUgb2YgdGhlIG5hbWVzLgoKTW9uIE9jdCAyNSAxNTo0MzozNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHR3byBtYWNyb3MsIElDT01fVkZJRUxEIGFuZCBJQ09NX1ZUQkwsIHNvIHRoYXQgd2hlbiBpbXBsZW1lbnRpbmcKCWEgQ09NIGludGVyZmFjZSBvbmUgbmV2ZXIgaGFzIHRvIG5hbWUgdGhlIGxwVnRibCBmaWVsZCBleHBsaWNpdGx5LgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3lzQWxsb2NTdHJpbmdMZW4xNiBuZWVkcyB0byBoYW5kbGUgTlVMTCBwb2ludGVycywgdG9vLgoKCSogbWVtb3J5L2xvY2FsLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglCdWcgZml4LgoKCSogdG9vbHMvZmluZF9kZWJ1Z19jaGFubmVsczogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBzbWFsbCB0eXBvcyBhbmQgc2xpZ2h0bHkgb3V0ZGF0ZWQgY29tbWVudHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2hlbGwzMiBjYWxsIFdpbjMyRGVsZXRlRmlsZSgpLCByZXF1aXJlZAoJYnkgSUU1J3MgRXhwbG9yZXIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbjoKCUFkZGVkIGRlcGVuZGVuY3kgb24gd2luZXN0dWIubwoKU3VuIE9jdCAyNCAyMjoxMzo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaW5wdXQuYywgdG9vbHMvYnVpbGQuYywgdG9vbHMvZm50MmJkZi5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL3Byb2Nlc3MuYywgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3NvY2tldC5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2dkaW9iai5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvbGR0LmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgY29uZmlndXJlLmluLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgbWlzc2luZyBjb25maWd1cmF0aW9uICNpZjpzIGFuZCAjaW5jbHVkZXM6cy4KCS0gTWlub3IgY29uZmlndXJhdGlvbiByZWxhdGVkIGNoYW5nZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBMb2FkSG9tZVJlZ2lzdHJ5RmlsZXMgZGVmYXVsdCB0byBUUlVFLgoKCSogaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvY29tbS5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaCwgaW5jbHVkZS9uZXRzcGkuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgaW5jbHVkZS94bWFsbG9jLmgsIHRvb2xzL21ha2VfYXV0aG9yczoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB0aGUgaW5jbHVkZSBmaWxlcyBzZWxmLXN1ZmZpY2llbnQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCB0aGUgbG9uZyBsb25nIHByb2JsZW0uCgktIEFkZGVkIGNvbmZpZ3VyZSBpbmNsdWRlIGNvbnNpc3RhbmN5IGNoZWNraW5nLgoJLSBBZGRlZCBwcm9ncmVzcyBpbmRpY2F0b3IuCgktIEJlZ2FuIHNwbGl0dGluZyB1cCB0aGUgd2luMTZhcGkuZGF0IGFuZCB3aW4zMmFwaS5kYXQgZmlsZXMuCgktIEFkZGVkIHZhcmlvdXMgbWlub3IgY2hlY2tzLgoJLSBNaW5vciBmaXhlcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5zcGVjLCBkbGxzL3duYXNwaTMyL3duYXNwaTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9yZWcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3BlYyBmaWxlIGRlY2xhcmF0aW9ucyBmb3IgYWxyZWFkeSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoJKiBncmFwaGljcy9wYXRoLmMsIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9jbGlwcGluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBXaW4xNiB2YXJpYW50cyBvZiBleGlzdGluZyBXaW4zMiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBjb21waWxlIGZpeC4KCgkqIGZpbGVzL2ZpbGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgcHJlZml4aW5nIGJ5IGEgdGlsZGUgZm9yIEdldFRlbXBGaWxlTmFtZSAzMmJpdHMuCgoJKiBkZWJ1Z2dlci9leHByLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlLgoKCSogd2luZG93cy93aW4uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV2FybiB1c2VycyB0byB1c2UgLXRoZSAtZGVza3RvcCBvcHRpb24gdG9nZXRoZXIgd2l0aCB0aGUgbmF0aXZlIHVzZXIgRExMcy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBuZWVkZWQgcmVzb3VyY2Ugd2hlbiBidWZmZXIgaXMgTlVMTCBmb3IgTG9hZFN0cmluZygpLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgd2luZS5pbmk6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglFbmFibGVkIHRoZSBwZXJzaXN0ZW50IGNsaXBib2FyZCBzZXJ2ZXIuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOiBOYXRoYW5pZWwgPHdmaWxhcmRvQGZ1c2UubmV0PgoJSW1wcm92ZWQgcmVnaXN0cnkgaXNvbGF0aW9uIHBvc3NpYmlsaXRpZXMuCgoJKiBtdWx0aW1lZGlhLyouYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3BsaXQgdGhlIG11bHRpbWVkaWEvIGRpcmVjdG9yeSBpbnRvIGRsbHMvIHN1YmRpcmVjdG9yaWVzLgoKCSogbXVsdGltZWRpYS93aW5tbS5yYywgbXVsdGltZWRpYS93aW5tbV9QdC5yYywgcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvRnIucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9DaGFuZ2VMb2csIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZToKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDxhbHZlc0Bjb3JyZWlvbmV0LmNvbS5icj4KCU1vcmUgUG9ydHVndWVzZSBsYW5ndWFnZSBzdXBwb3J0LgoKCSogb2JqZWN0cy9kaWIuYzogTWF0dGhldyBKLiBGcmFuY2lzIDxhc2JlbEBkaWFsLnBpcGV4LmNvbT4KCUZpeGVkIHRvcC1kb3duIERJQiBoYW5kbGluZyBpbiBTdHJldGNoRElCaXRzMzIoKS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIG1hY3JvIGRlZmluaXRpb25zIGZvciBtZW1vcnkgYWxsb2NhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgb2JqZWN0cy9mb250LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglNYWtlIHN1cmUgdGhhdCBhbGwgY2FsbHMgdXNlIHRoZSBleHRlbmRlZCBzdHJ1Y3R1cmVzIHdoaWNoIGFyZSBhCglzdXBlcnNldCBvZiB0aGUgcmVndWxhciBzdHJ1Y3R1cmVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglBZGRlZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGh1bWIgdHJhY2suCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglEbyBub3Qgc2V0IGZvY3VzIHRvIGEgZGlzYWJsZWQgd2luZG93LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gZW50cnkgaW4gdGhlIGtleWJvYXJkIHRyYW5zbGF0aW9uIHRhYmxlIGZvciBDdHJsLUJyZWFrLgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglOZXcgY2hhbm5lbCAnZGVidWdzdHInIHVzZWQgdG8gcHJpbnQgT3V0cHV0RGVidWdTdHJpbmcgQVBJIGNhbGxzLgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUG9wdXAgd2luZG93cyB3aWxsIGJlIGhpZGRlbiB3aGVuIHdlIG1pbmltaXplIGEgbWFpbiBmcmFtZSBvciBzaG93bgoJd2hlbiB3ZSBtYXhpbWl6ZSBvciByZXN0b3JlIGEgbWluaW1pemVkIG1haW4gZnJhbWUuCgpTYXQgT2N0IDIzIDIzOjU5OjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglQcm9wZXJ0eVNoZWV0IGRpZG4ndCBkZXN0cm95IHBhZ2UgZGlhbG9nJ3Mgd2luZG93IHdoaWxlIHJlbW92aW5nIHBhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZSB0aGUgaXRlbSB3aWR0aCB1cG9uIGEgbmV3IGNvbHVtbiBpbiB0aGUgaGVhZGVyIGNvbnRyb2wuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlb3JkZXIgcGFyYW1ldGVycyB0byBmaXggcG9zaXRpb24gb2YgYmFzZSByZWcgcmVsYXRpdmUgdG8gZXhjZXB0aW9uCglmcmFtZS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IEZpeGVkIHR5cG8uCgoJKiBpbmNsdWRlLyouaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRGVmaW5lIHRoZSBDT00gbWFjcm9zIGV2ZW4gaW4gQysrLgoKCSogY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL21kaS5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBsb29wIHdpdGggV01fU1lTQ0hBUi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUZpeGVkIHRvb2x0aXBzIHBvc2l0aW9uaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBSZS1hcHBsaWVkIGxvc3QgY2hhbmdlLgoKCSogbG9hZGVyL3Rhc2suYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSWdub3JlIHdyb25nIGhJbnN0YW5jZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglSb2JlcnQgJ0FkbWlyYWwnIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCVJlcG9ydCBub24taGVyY3VsZXMgdmlkZW8uIFR1cm5lZCBvbiBpbnQgMmEuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9tb2R1bGUuYywgZmlsZXMvZmlsZS5jOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJRml4ZWQgY29tcGlsaW5nIHdpdGggU1RSSUNULgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCVByb3BlciByZXNvdXJjZSBzdXBwb3J0IGZvciBkaWFsb2cgdGl0bGUuCgoJKiBpbmNsdWRlL2RsZ3MuaDogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgc29tZSB3cm9uZyBkZWZpbmVzLgoKCSogb2JqZWN0cy9icnVzaC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglDb3B5IGJpdG1hcHMgcHJvcGVybHkuCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGxvdyBsb2FkaW5nIG9mIG1vZHVsZXMgZGVidWcgaW5mb3JtYXRpb24gYWZ0ZXIgZmlyc3QgaW52b2NhdGlvbiBvZgoJZGVidWdnZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBhIGZldyBzdHVicy4KCgkqIGluY2x1ZGUvbGlzdHZpZXcuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50YXRpb24gb2YgZWRpdCBsYWJlbHMuCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgc29tZSBhbm9ueW1vdXMgdW5pb24gYWNjZXNzZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRHJhdyB0aGUgaXRlbSB0ZXh0IGZyb20gdGhlIHRvcCBvZiB0aGUgaXRlbSByZWN0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIHNvcnQgb3JkZXIgZm9yIHRoZSBGaWxlIERpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCS0gYWRkcyBjYWxsaW5nIGFwcGxpY2F0aW9uIGRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb24gb25jZSBQcm9wZXJ0U2hlZXQKCSAgRGlhbG9nYm94IGhhcyBiZWVuIGluaXRpYWxpemVkIGp1c3QgYWZ0ZXIgY3JlYXRpbmcgdGhlIHRhYiBjb250cm9sCgktIGhhbmRsZSB0aGUgY2FzZSB3aGVuIHBzekNhcHRpb24gc3BlY2lmaWVzIGEgcmVzb3VyY2UgaW5zdGVhZCBvZiBhIHN0cmluZwoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gcmVtb3ZlZCBhbGwgdW5uZWNlc3NhcnkgIndpbmFwaSIgZnJvbSBpbnRlcm5hbCBfSUwqIGZ1bmN0aW9ucwoJLSBiZXR0ZXIgcGFyYW1ldGVyIGNoZWNraW5nIGZvciBzaGVsbGZvbGRlcgoJLSByZW1vdmVkIGRlYWQgY29kZSBmcm9tIHNodl9iZ19jb250ZXh0bWVudQoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvZGRyYXcuaDoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIGFub3RoZXIgYW5vbnltb3VzIHVuaW9uIHVzaW5nIHRoZSBEVU1NWVVOSU9OTkFNRSBzdHlsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUHJvcGVybHkgY29weSB0ZXh0IGludG8gdXNlciBzdXBwbGllZCBidWZmZXIuCgoJKiBtaXNjL3dpbnNvY2suYywgcmVsYXkzMi93c29jazMyLnNwZWMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3NvY2suYywgaWYxNjMyL3dpbnNvY2suc3BlYywgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvd2luc29jay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luc29jayByZXdyaXRlLiBTb2NrZXRzIGFyZSBub3cgcHJvcGVyIHdpbjMyIGhhbmRsZXMuCglJbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZSBub3cgcmVhbGx5IGludGVybmFsLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJVGFiIGNvbnRyb2wgZG9lc24ndCByZWZyZXNoIHRhYiBhcmVhIG9uIFRDTV9TRVRDVVJTRUwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGVkIFN0clJDaHJBLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2V4cHIuYywgaW5jbHVkZS9kZWJ1Z2dlci5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFBlcmZvcm0gcHJvcGVyIHByb2Nlc3Mgc2h1dGRvd24gb24gJ3F1aXQnIGFuZCBlcnJvci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTdHViIE9wZW5UaHJlYWRUb2tlbiAmIE9wZW5Qcm9jZXNzVG9rZW4gZm9yIGZhaWx1cmUgaW4gV2luOXggbW9kZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglGaXhlZCBhIHNtYWxsIHR5cG8uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJUHJvdGVjdCBhZ2FpbnN0IHdyb25nIHJldHVybiB2YWx1ZSBmcm9tIFdNX0lOSVRESUFMT0cuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgYW4gaWxsZWdhbCBjaGFyYWN0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJTm93IGluaXRzIHRoZSBwb2xpY3kgY2FjaGUgd2hlbiBzaGVsbDMyIGlzIGZpcnN0IGluc3RhbnRpYXRlZC4KCU1hdGNoZXMgV2luZG96ZSBiZWhhdmlvci4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuaDoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJUmVhbCBpbXBsZW1lbnRhdGlvbiBvZiBTSFJlc3RyaWN0ZWQoKSwgY2xhcmlmaWVkIFNISW5pdFJlc3RyaWN0ZWQoKSdzCglyb2xlIGEgbGl0dGxlLCBhZGRlZCBwb2xpY3kgZGF0YSB0YWJsZS4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHNlZ21lbnRlZCBscHZ0YmwgcG9pbnRlciBmb3IgSU1hbGxvYzE2IGludGVyZmFjZSwgbm90IGxpbmVhciBvbmUuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZXBsYWNlZCBhIFggY2FsbCB3aXRoIGEgVFNYIGNhbGwgaW4gWERSVl9NT1VTRV9TZXRDdXJzb3IoKS4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYzogVWxyaWNoIEN6ZWthbGxhIDx5YmljdWJ1a0B1bWFpbC5jb3JlbC5jb20+CglUaGUgcHJvcGVydHkgc2hlZXQgZGlhbG9nIG5lZWRzIGZsYWcgV1NfVklTSUJMRS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJU2V0IHRoZSBkZWZhdWx0IHZpZXcgYnV0dG9uIHRvIExpc3QgaW4gdGhlIEZpbGVEaWFsb2cuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZG9uJ3QgdXNlIEdldE1vZHVsZUhhbmRsZTE2IGluIExvYWRNb2R1bGUxNi9ORV9DcmVhdGVQcm9jZXNzLgoKCSogZGVidWdnZXIvdHlwZXMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gc3RyaW5nIHZhcmlhYmxlIHByaW50aW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgV01fR0VURk9OVCBzdXBwb3J0LgoKCSogaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGRvbid0IGNhbGwgRXhpdFByb2Nlc3MoKSBiZWZvcmUgU1lTTEVWRUxfSW5pdCgpLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIChtbWlvT3BlbiB3aXRoIDE2LzMyIGJpdCBzdHJhbmdlbmVzcywgbW1pb0FzY2VuZCAmCgltbWlvRGVzY2VuZCBvZmZzZXQgYW5kIGFsaWdubWVudCBpc3N1ZXMpLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJV2UgYXJlIHN1cHBvc2VkIHRvIGRlbGV0ZSB0aGUgcGFsZXR0ZSBvYmplY3Qgd2l0aCB0aGUgRGVsZXRlT2JqZWN0CglmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglMaXN0dmlldyBpdGVtcyB3aWxsIGJlIGRyYXduIHdpdGggdGhlIHJpZ2h0IGl0ZW0gZGltZW5zaW9ucy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3RleHQuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVNvbWUgc21hbGwgY29ycmVjdGlvbnMgdG8gdGhlIEV4dFRleHRPdXQgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL29sZTIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoYXQgdGhlIGRyb3AgZWZmZWN0IG9mIGEgRG5EIG9wZXJhdGlvbiBpcyBzZXQgdG8KCURST1BFRkZFQ1RfTk9ORSBpZiB0aGUgdXNlciBjYW5jZWxsZWQgdGhlIG9wZXJhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBpbmNsdWRlL2FuaW1hdGUuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRmlyc3Qgd29ya2luZyB2ZXJzaW9uLgoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBtdXRlIGNhcGFiaWxpdHkgdG8gbW9zdCBjb250cm9sIGxpbmVzLgoKCSogd2luZG93cy93aW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVzZSB0aGUgbW9kdWxlIGhhbmRsZSwgaWYgQ3JlYXRlV2luZG93RXggaXMgY2FsbGVkIHdpdGgKCWhJbnN0YW5jZT09TlVMTC4KCgkqIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGVzIGZvciBTdHJSZXRUb0J1ZihBfFcpLgoKV2VkIE9jdCAxMyAxNjoxNzoyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmU6CglBZGRlZCBQdC5zLgoKCSogb2JqZWN0cy9kaWIuYzogQmFja2VkIG91dCBwcmV2aW91cyBjaGFuZ2UgKGJyZWFrcyB3aXRoIG1ldGFmaWxlcykuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29ja2V0IGludGVyZmFjZSB0byB3aW5lc2VydmVyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjZW11L21haW4uYywgd2luZS5pbmk6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvcnJlY3QgZmlsZW5hbWUgZm9yIGtlcm5lbCBtb2R1bGUgaXMgS1JOTDM4Ni5FWEUuCgoJKiBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnNwZWMsIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgKGFuZCBub3cgcmVxdWlyZWQpIGZpbGVuYW1lIGRpcmVjdGl2ZS4KCgkqIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGZpbGVuYW1lIHRvIDMyIGJpdCBidWlsdGluIG1vZHVsZSBkZXNjcmlwdG9ycy4KCgkqIGlmMTYzMi9idWlsdGluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBsb2FkaW5nIG9mIG1vZHVsZXM6IG5vdyBzZWFyY2gga2V5IGlzIG1vZHVsZSdzIGZpbGVuYW1lLCBub3QKCW1vZHVsZSdzIG5hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBhbiBlcnJvciBvY2N1cnJlZCBpbiBhIHByb3BlcnR5IHNoZWV0IGJlY2F1c2Ugb2YgaW52YWxpZCBkYXRhLAoJY2xpY2tpbmcgb24gYW5vdGhlciB0YWIsIHdvdWxkIGFjdGl2YXRlIHRoZSBuZXcgdGFiIGJ1dCBrZWVwIHRoZQoJb3JpZ2luYWwgcHJvcGVydHkgc2hlZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGltcGxlbWVudGVkIHNvcnRpbmcgdGhlIGxpc3R2aWV3IGJ5IGNsaWNraW5nIG9uIHRoZSBjb2x1bW4gaGVhZGVyCgktIGltcGxlbWVudGVkIHRoZSBjb250ZXh0IG1lbnUgZW50cnlzIGZvciBzb3J0aW5nCgktIHNvbWUgbW9yZSBmdW5jdGlvbnMgdG8gZ2F0aGVyIGRhdGEgZm9ybSBwaWRscwoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZW1vdmVkIGxpbmtpbmcgYnkgR2V0UHJvY0FkZHJlc3MgZm9yIFN0clJldFRvQnVmIHNpbmMgbm90IGFsbAoJdmVyc2lvbnMgb2Ygc2hsd2FwaSBleHBvcnRpbmcgdGhpcyBmdW5jdGlvbi4KCgkqIGxvYWRlci9tb2R1bGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVJlbW92ZXMgZXh0cmFuZW91cyBjb21wYXJpc29uIG9mIGRhdGEgcG9pbnRlZCB0byBieSB0aGUgcmVsb2NhdGlvbgoJb2Zmc2V0IHdoZW4gbm8gcmVsb2NhdGlvbiBlbnRyaWVzIGV4aXN0LgoKCSogaWYxNjMyL3dwcm9jcy5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglXUFJPQ1MuRU5UUllBRERSUFJPQyBuZWVkcyB0byByZXR1cm4gc29tZXRoaW5nIGluIENYIHRvbyAoZml4ZXMKCUJMSU5LRVIgc2VsZmV4dHJhY3RpbmcgZXhlY3V0YWJsZXMpLgoKCSogd2luZG93cy9kaWFsb2cuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIEVuZERpYWxvZyB0byBiZWhhdmUgbGlrZSBhcyBpbiBXaW5kb3dzLgoJQ2FsbCBTZXRXaW5kb3dQb3MgaW5zdGVhZCBvZiBTaG93V2luZG93IGluIEVuZERpYWxvZy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBXSU5QT1NfQ2FuQWN0aXZhdGUgdG8gbm90IHRvIGNvbnNpZGVyIFdTX1ZJU0lCTEUgc3R5bGUuCglDb2RlIGZvciBhY3RpdmF0aW5nIGFuZCBzZXR0aW5nIGZvY3VzIHRvIG90aGVyIHdpbmRvd3Mgd2hlbiBhIHdpbmRvdwoJaXMgaGlkZGVuLCBpcyBtb3ZlZCB0byBTaG93V2luZG93IGZyb20gU2V0V2luZG93UG9zLgoJQWN0aXZhdGUgdGhlIHRvcCBsZXZlbCB3aW5kb3cgaWYgaXQncyBub3QgYWN0aXZlIGluIFNob3dXaW5kb3coU1dfU0hPVykuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgWDExRFJWX0RJQl9TZXRJbWFnZUJpdHMgd2hlbiBjYWxsZWQgZm9yIFJMRSBlbmNvZGVkIGRpYnMuCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU9wdGltaXplZCBTdHJldGNoRElCaXRzIHRvIGNhbGwgU2V0RElCaXRzVG9EZXZpY2UgKHdoZW4gc3JjICYgZHN0CglkaW1lbnNpb25zIGFyZSBlcXVhbCkuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svUHQucmM6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8YWx2ZXNAY29ycmVpb25ldC5jb20uYnI+CglBZGRlZCBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIHRoZSBDT00gbWFjcm9zIHJhdGhlciB0aGFuIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgbHB2dGJsIGZpZWxkLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL2xzdHIuYywgaWYxNjMyL3VzZXIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBMb2FkU3RyaW5nMTYgZm9yIEZvcm1hdE1lc3NhZ2UxNiBhbmQgaGFuZGxlCglGT1JNQVRfTUVTU0FHRV9BTExPQ0FURV9CVUZGRVIgZmxhZy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3RleHQuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVNvbWUgYWRqdXN0bWVudHMgdG8gRXh0VGV4dE91dC4KCgkqIGluY2x1ZGUvcHNkcnYuaCwgZ3JhcGhpY3MvcHNkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgY2xpcHBpbmcgZm9yIHRoZSBwb3N0c2NyaXB0IGRyaXZlciBhbmQgdHVybmVkIGl0IG9uIChieSBzZXR0aW5nCglQU0RSVl9TZXREZXZpY2VDbGlwcGluZyBpbiB0aGUgZnVuY3Rpb24gdGFibGUpLgoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWNjb3VudCBmb3IgdGhlIHRyYWlsaW5nIE5VTEwgaW4gR2V0TG9naWNhbERyaXZlU3RyaW5nc0EuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgdHlwbyBpbiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogWm9sdGFuIEtvdmFjcyA8b3JpdGVsZUBhbGFybWl4Lm5ldD4KCUFkZGVkIEh1bmdhcmlhbiBrZXlib2FyZCBzdXBwb3J0LgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy93aW5wb3MuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglXZSBoYXZlIHRvIGFjdGl2YXRlIE1ESSBjaGlsZCB3aW5kb3dzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBHZXR8U2V0UHJvcEEgdG8gc3RvcmUgbFBhcmFtIHRvIHJldHJpZXZlIHRoZSBPUEVORklMRU5BTUUxNiBmb3IgYQoJaFduZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCB1c2FnZSBvZiBhIHNjcmF0Y2ggYXJyYXkgaW4gWDExRFJWX1BvbHlCZXppZXIuCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgV01fR0VUVEVYVExFTkdUSCByZXR1cm4gbGVuZ3RoIGZvciBkcm9wZG93bmxpc3QgY29tYm9zLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgRmlsbFJlY3QgaW4gdGhlIG93bmVyZHJhd24gYnV0dG9uIHByb2NlZHVyZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoZSBGb2N1cyBPdXQgd2luZG93IGlzIHN0aWxsIHRoZSBGb3JlZ3JvdW5kIHdpbmRvdyBiZWZvcmUKCWRvaW5nIFNldEZvcmVncm91bmRXaW5kb3coMCkgaW4gRXZlbnRfRm9jdXNPdXQuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZXMgcHJvYmxlbXMgd2l0aCBjb2xvciBkcmlmdCB3aGVuIHN3aXRjaGluZyB0by9mcm9tCglsb2dpY2FsL3BoeXNpY2FsIGNvbG9ycy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJTW91c2UgcG9zaXRpb24gaXMgc2lnbmVkLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNldCB0aGUgQ09MT1JfM0RMSUdIVCBzeXN0ZW0gY29sb3IgdG8gdGhlIHJpZ2h0IHdpbmRvdyBkZWZhdWx0IHZhbHVlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTbWFsbCBoYWNrIHRvIGNoZWNrIGlmIHdlIG5lZWQgdG8gcmVsb2NhdGUgdGhlIFRMUyBkaXJlY3Rvcnkgb3Igbm90Cgkoc29tZSBzZWVtIHRvIG5lZWQgdGhpcyBwb2ludGVyIHJlbG9jYXRlYWJsZSwgc29tZSBhbHJlYWR5IGRvIHJlbG9jYXRlCglpdCBieSB0aGVtc2VsdmVzKS4KCgkqIE1ha2UucnVsZXMuaW46IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZWxpbmsgc3ViZGlyZWN0b3J5IG9iamVjdHMgb24gTWFrZWZpbGUuaW4vTWFrZS5ydWxlcy5pbiBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglDaGVjayBmb3IgTlVMTCBwdHIgaW4gUHJvcHNoZWV0X1JlbW92ZVBhZ2UgKFhpbmcgRFZEIFBsYXllcikuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglEb24ndCByZWYgTlVMTCBwdHJzIGluIGRlYnVnLgoKCSogd2luZG93cy9kaW5wdXQuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJSWYgdGhlIGpveWRldmljZSBpcyBub3QgcHJlc2VudCwgZG8gbm90IGNyZWF0ZSBhIERpcmVjdElucHV0RGV2aWNlLgoKCSogZGxscy9jb21tZGxnL2NvbW1kbGcuc3BlYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTWFwIFByaW50RGxnMTYgdG8gUHJpbnREbGdBLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWRlIFRyYWNrUG9wdXBNZW51IHdpdGggVFBNX1JFVFVSTkNNRCByZXR1cm5pbmcgdGhlIGlkIGluc3RlYWQgb2YKCXRydWUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVByZXZlbnQgc2VsZiByZWZlcmVuY2luZyBuZXh0IHBvaW50ZXIgZHVyaW5nIGluc2VydC4KCgkqIG9sZS9ubHMvZnJhLm5sczogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBtdWx0aW1lZGlhL3dpbm1tLnJjLCBtdWx0aW1lZGlhL3dpbm1tX05sLnJjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBEdXRjaCB0byB0aGUgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBNQ0kuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbjoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJVXBkYXRlZCBzdGF0dXMgb2YgaW50ZXJuYXRpb25hbGlzYXRpb24uCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAqRG9uJ3QqIHJlc29sdmUgUEUgaW1wb3J0cyBpZiBhc2tlZCBub3QgdG8gLi4uCgoJKiBtaXNjL2RkZW1sLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEZGVOYW1lU2VydmljZSB3YXMgYnJva2VuLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFdoZW4gbG9hZGluZyBhbiBleGVjdXRhYmxlIG1vZHVsZSBmYWlscywgZG9uJ3QgcGVyZm9ybSBtb2R1bGUKCWNsZWFudXAgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIHRhc2sgaXMgZGVzdHJveWVkLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglNb3ZlZCBiaXRtYXAgcmVzb3VyY2UgdG8gbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgcmVzb3VyY2UgZmlsZS4KCgkqIG1pc2MvdmVyc2lvbi5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHdhcm5pbmcgZm9yIGZ1dHVyZSBWRVJTSU9OX0dldFZlcnNpb24oKSAobWlzLSl1c2VycyBhbmQgbWFkZQoJT1NWRVJTSU9OSU5GTyB3YXJuaW5nIG1vcmUgZGV0YWlsZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgc3R1YnMgZm9yIFJldm9rZUFjdGl2ZU9iamVjdCwgR2V0QWN0aXZlT2JqZWN0LCBmaXhlZAoJUmVnaXN0ZXJBY3RpdmVPYmplY3Qgc3R1YiBhcmd0eXBlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgZ2VybWFuIGtleWJvYXJkIGxheW91dCB3aXRoICJub2RlYWRrZXlzIiBvcHRpb24gZW5hYmxlZCAoanVzdCB0bwoJYXBvc3Ryb3BoZXMgYXJlIHN3aXRjaGVkKS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTdHViIGZvciBWaWRlb0NhcERyaXZlckRlc2NBbmRWZXIuCgoJKiBtc2Rvcy9pbnQyMS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGljYXRlIENyZWF0ZURpcmVjdG9yeSgpIExhc3RFcnJvciB3b3JrYXJvdW5kIGZvciB0aGUgTEZOIHBhcnQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBbHNvIGVzY2FwZSBjaGFyYWN0ZXJzID49MHg4MCB3aXRoaW4gdGhlIHdpbmVyZWdpc3RyeSBzYXZlZmlsZS4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRG9uJ3QgdXNlIG1hbGxvYy9mcmVlIGluIHdpbmFzcGkzMi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglVc2UgMSBtYWNybyBmb3IgcmdiYml0ZGVwdGggLT4gYnl0ZSBkZXRlcm1pbmF0aW9uLgoJeHNobS9pbWFnZSBjcmVhdGlvbiBub3cgdXNlcyAxLzggb2YgdGhlIHNwYWNlIGZvciBldmVyeSBpbWFnZS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsYWNlZCBkb3VibGUgQ2hhbmdlRGlzcGxheVNldHRpbmdzQSBieSAoRXgpW0FXXS4KCldlZCBTZXAgMjkgMTI6MTY6MTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERvbid0IGNhbGwgR2V0VmVyc2lvbkV4QSB0b28gZWFybHksIHRvIGF2b2lkIGJyZWFraW5nCglhdXRvbWF0aWMgZW11bGF0ZWQgV2luZG93cyB2ZXJzaW9uIGRldGVjdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL29sZWF1dG8uaCwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpcnN0IGltcGxlbWVudGF0aW9uIG9mIExvYWRUeXBlTGliRXgoKS4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFdNTU1JRElSVU5PTkNFIGNhbGxlZCBieSBtaWRpbWFwLmRydi4KCgkqIG1pc2Mvd2luc29jay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCByZWZjb3VudGVyIHRvIDEgb24gaW5pdGlhbCBpbml0IG9yIFdTQVN0YXJ0dXAvV1NBU3RhcnR1cCB3aXRoCglmb2xsb3dpbmcgV1NBQ2xlYW51cCB3aWxsIGFscmVhZHkgZnJlZSB0aGUgc3RydWN0dXJlcy4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIERpcmVjdFNvdW5kIG9iamVjdCBldmVuIHdpdGhvdXQgc291bmRkZXZpY2UuIEdhbWVzIGNhbiBiZQoJcGxheWVkIHdpdGhvdXQgc291bmQsIGJ1dCBub3Qgd2l0aG91dCBEaXJlY3RTb3VuZCBvYmplY3QgKHRlc3RlZCB3aXRoCglNb25rZXkgSXNsYW5kIDMpLgoKCSogZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGluY2x1ZGUvbnRkZGsuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCB0b29scy9idWlsZC5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpLWNoZWNrLCBieSBhZGRpbmcgYXJndW1lbnRzCgl0byB2YXJhcmdzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYWJpbGl0eSB0byBjYWxsIHdpbmFwaV9jaGVjayBmcm9tIHRoZSBNYWtlZmlsZXMuCgoJKiBtc2Rvcy9kcG1pLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9kaWZpY2F0aW9uIGR1ZSB0byBwcm9ibGVtcyB3aXRoIHdpbmFwaS1jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRhcHRlZCB0byBjaGFuZ2VzIGluIFdpbmUuCgktIE1pbm9yIGltcHJvdmVtZW50cy4KClR1ZSBTZXAgMjggMTY6NDA6MDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglNYWRlIGV2ZW50IG1hbmlwdWxhdGlvbiByb3V0aW5lcyBwdWJsaWMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBpbml0LmgsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvZHBsYXkuYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL2RwbGF5LnNwZWMsIHJlbGF5MzIvZHBsYXl4LnNwZWMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1vdmVkIGRwbGF5IGFuZCBkcGxheXggdG8gYSBwcm9wZXIgaG9tZSBpbiB0aGUgZGxscyBkaXJlY3RvcnkuCgktIEltcGxlbWVudGVkIG5ldyBEaXJlY3RQbGF5NCBhbmQgRGlyZWN0UGxheUxvYmJ5MyBpbnRlcmZhY2VzLgoJLSBJbXBsZW1lbnRlZCBhIGNsYXNzIGZhY3RvcnkgZm9yIGRwbGF5IGFuZCBkcGxvYmJ5LiBDT00gaW50ZXJmYWNlcwoJICBub3cgd29yayBmb3IgZHAgYW5kIGRwbC4KCS0gQWRkZWQgYSBmZXcgbW9yZSBlbnRyaWVzIHRvIGRwbGF5eC5zcGVjIGZpbGVzLiBIb3cgZG8geW91IGZpbmQgdGhlCgkgIG9yZGluYWxzPyBJIGp1c3QgZ3Vlc3NlZCA6KAoJLSBTZXBlcmF0ZWQgRGlyZWN0UGxheSBhbmQgRGlyZWN0UGxheUxvYmJ5IGltcGxlbWVudGF0aW9uIGludG8gc2VwYXJhdGUgZmlsZXMuCgktIEluY2x1ZGVkIHNvbWUgbWlzc2luZyBoZWFkZXIgZmlsZSBkZWZpbml0aW9ucy4KCS0gSW1wbGVtZW50ZWQgdGhlIGRwbGF5IGRsbCBpbiB0ZXJtcyBvZiB0aGUgZHBsYXl4IGRsbC4gSSBoYXZlbid0CgkgIHRlc3RlZCBpdCBzbyBpdCBtYXkgbm90IHdvcmsuLi4KCS0gQSBmZXcgYnVnIGZpeGVzIGFuZCBhIGxpdHRsZSBuZXcgaW1wbGVtZW50YXRpb2UubgoJLSBVcGRhdGVkIGRvY3VtZW50IHdpdGggYSBtb3JlIGRldGFpbGVkIGltcGxlbWVudGF0aW9uIHBsYW4uCgoJKiB3aW5kb3dzL3dpbi5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVJld3JpdGUgdGhlIFNob3dPd25lZFBvcHVwcyBmdW5jdGlvbiB3aXRoIGEgc2FmZXR5IGFsZ29yaXRobS4KCgkqIGNvbnRyb2xzL21lbnUuYzogS2FybCBMZXNzYXJkIDx5YmljdWJ1a0B1bWFpbC5jb3JlbC5jb20+CglNYWtlIEV4ZWNGb2N1c2VkSXRlbSByZXR1cm4gLTEgb24gZmFpbHVyZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBDaGFuZ2VkIHJldHVybiBjb2RlIGZvciBmYWlsdXJlIG9uICpfRGxsR2V0Q2xhc3NPYmplY3QgdG8KCSAgQ0xBU1NfRV9DTEFTU05PVEFWQUlMQUJMRSBmcm9tIEVfTk9UQVZBSUxBQkxFIGFzIGRvY3VtZW50ZWQuCgktIFJlcGxhY2VkIG1lbWNtcHMgd2l0aCBlcXVpdmFsZW50IElzRXF1YWxDTFNJRCBvciBJc0VxdWFsR1VJRCBtYWNyb3MuCgktIENoYW5nZWQgInJldHVybiAwOyIgd2l0aCBTX09LIG9yIERTX09LIGFzIGFwcHJvcHJpYXRlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJU3VwcG9ydCBUUkFQX3NpZyBmb3IgRnJlZUJTRCAod2l0aCB0aGUgaGVscCBvZiBKdWVyZ2VuIExvY2spLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW1lbWJlciB0aGUgYWxsb2NhdGVkIHN0cmluZyB0byBmcmVlIGl0LgoKCSogY29udHJvbHMvbWVudS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZvcmNlIHJlY2FsY3VsYXRpb24gb2YgbWVudSB3aGVuIGNhbGxpbmcgSW5zZXJ0TWVudUl0ZW0uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgMiBXaW45OCBieS1vcmRpbmFsIFNIRUxMMzIgcm91dGluZXMuICBIZWxwcyBXaW45OAoJRXhwbG9yZXIgd29yayBiZXR0ZXIuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gaERydiBmb3Igc2VuZGluZyBtZXNzYWdlLgoKTW9uIFNlcCAyNyAxMzozODo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tbWRkay5oLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGxhc3QgZGVwZW5kYW5jaWVzIGJldHdlZW4gTUNJIGRyaXZlcnMgYW5kIFdJTk1NL01NU1lTVEVNCglETExzLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgaGFjayBvbiBXQVZFSERSJ3MgJiBNSURJSERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCglGaXhlZCBhIGZldyBzZWdwdHIvbGluZWFyIGFkZHJlc3MgYnVncyBpbiBXQVZFSERSL01JRElIRFIgaGFuZGxpbmcuCgoJKiBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgZm9yIE9TUyBkcml2ZXIgcHJlc2VuY2UgYW5kIHJldHVybiBlcnJvciBhY2NvcmRpbmdseS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgaGFjayBvbiBNSURIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCgkqIG11bHRpbWVkaWEvbG9sdmxkcnYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aXRoIG1hcHBlciBsb2FkaW5nLgoJR290IHJpZCBvZiBoYWNrIG9uIFdBVkVIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIGhhY2sgb24gV0FWRUhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVHlwbyBjb3JyZWN0aW9uLgoKCSogbG9hZGVyL2xpYnJlcy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXggaW50ZWdlciBiYXNlZCByZXNvdXJjZSBpZCBhc3N1bXB0aW9uLgoJQWRkIHN1cHBvcnQgZm9yIHN0cmluZyBiYXNlZCB0eXBlIGlkcy4KCgkqIGluY2x1ZGUvd2luc29jazIuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIGJhc2ljIFdpbnNvY2syIGRlZmluaXRpb25zLgoKCSogc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvc2VsZWN0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgRVhDRVBUX0VWRU5UIHRvIHdpbmVzZXJ2ZXIgc2VsZWN0IGxvb3AuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUZpeCBmb3IgVkZBVF9JT0NUTF9SRUFERElSX0JPVEguCgoJKiBkbGxzL3dpbmcvd2luZ19tYWluLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglTbWFsbCB3aW5nIGVuaGFuY2VtZW50LgoKCSogY29udHJvbHMvZWRpdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBrZXkgc2hvdWxkIG5vdCBiZSBpZ25vcmVkIGluIG11bHRpbGluZSBlZGl0IGV2ZW4gaWYKCUVTX1dBTlRSRVRVUk4gZmxhZyBpc24ndCBzZXQuCgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2dkaW9iai5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRFB0b0xQIG5lZWRzIHRvIHJvdW5kIHRoZSByZXN1bHQuCglGaXhlZCBNdWxEaXYgdG8gZGVhbCBiZXR0ZXIgd2l0aCBuZWdhdGl2ZSBudW1iZXJzLgoKCSogd2luZG93cy9wYWludGluZy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglyY1BhaW50IGhhcyB0byBiZSByZXR1cm5lZCBpbiBsb2dpY2FsIGNvb3JkaW5hdGVzIGJ1dCB3YXMgaW50ZXJzZWN0ZWQKCXdpdGggYSBjbGllbnQgcmVjdGFuZ2xlIGluIGRldmljZSBjb29yZGluYXRlcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJRml4ZWQgR2V0UmFuZG9tUmduLgoKCSogZmlsZXMvZHJpdmUuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglNYWRlIEdldEN1cnJlbnREaXJlY3RvcnkgcmV0dXJuIGxvbmcgbmFtZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBpbmNsdWRlL2J1dHRvbi5oLCBjb250cm9scy9idXR0b24uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVzZSBhbiBleHRyYSBiaXQgaW4gdGhlIGJ1dHRvbiBzdGF0dXMgYnl0ZSB0byBmbGFnIHdoZXRoZXIgdGhlCglEZWZCdXR0b25XbmRQcm9jIHNob3VsZCBwcm9jZXNzIHRoZSBXTV9MQlVUVE9OVVAgbWVzc2FnZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGxvYWRlci9zaWduYWwuYywgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvbWFpbi5jOgoJTW92ZWQgYWxsIHNpZ25hbCBzdXBwb3J0IHRvIGEgbmV3IHBsYXRmb3JtLXNwZWNpZmljIGZpbGUuCglNYWtlIHVzZSBvZiB0aGUgcGVyLXRocmVhZCBzaWduYWwgc3RhY2sgKEp1ZXJnZW4gTG9jaykuCglGaXhlZCAlZnMgaW4gc2lnbmFsIGhhbmRsZXIgZm9yIG5vbiBGU19zaWcgY2FzZSAoVWxyaWNoIFdlaWdhbmQpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaHUgU2VwIDIzIDE2OjE0OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvLmN2c2lnbm9yZSwgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGNsaXBib2FyZCBzZXJ2ZXIuCgoJKiB0b29scy9BdHRpYy93aW5hcGktY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svcGFyc2VyLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMTZhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBhIG5ldyBpbXByb3ZlZCB2ZXJzaW9uIG9mIHdpbmFwaS1jaGVjayBpbiBwZXJsLgoKCSogbXNkb3MvaW50MjEuYzoKCUltcGxlbWVudGVkIHVwcGVyY2FzaW5nIGZ1bmN0aW9ucyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2JlcnQKCSdBZG1pcmFsJyBDb2V5bWFuKS4KCgkqIHdpbmRvd3MvdXNlci5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc3RyZXNzL3N0cmVzc19tYWluLmMsIGlmMTYzMi9kdW1teS5jLCBpbmNsdWRlL3N0cmVzcy5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgbWlzYy9wcmludGRydi5jLCB3aW5kb3dzL2lucHV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGktY2hlY2suCgoJKiBtaXNjL2NvbW0uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb2RpZmljYXRpb24gZHVlIHRvIHByb2JsZW1zIHdpdGggd2luYXBpLWNoZWNrLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglXU19QT1BVUCB3aW5kb3dzIChleGNsdWRpbmcgdGhlIFdTX1BPUFVQV0lORE9XIHdpbmRvd3MpIHNob3VsZCBiZQoJY2xvc2VkIGFmdGVyIGxvb3NpbmcgdGhlIGZvY3VzLgoKCSogb2JqZWN0cy9kaWIuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlRElCaXRtYXAgY3JlYXRlcyBhIG1vbm9jaHJvbWUgYml0bWFwIG9ubHkgd2hlbiB0aGUgZmlyc3QgY29sb3Igb2YgdGhlCgljb2xvcm1hcCBpcyBibGFjayBmb2xsb3dlZCBieSB3aGl0ZS4gT3RoZXJ3aXNlIGl0IGNyZWF0ZXMgYSBjb2xvciBiaXRtYXAuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglOb24gYWN0aXZlIHdpbmRvdyBzaG91bGQgYmUgYWN0aXZhdGVkIHdoZW4gaXQgZ2V0cyBhbnkKCWNsaWVudC9ub24tY2xpZW50IGRvdWJsZS9zaW5nbGUgbGVmdC9tZWRpdW0vcmlnaHQgbW91c2UgY2xpY2socykuCgpXZWQgU2VwIDIyIDE2OjUzOjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFdJTkVPU1MgZGVzY3JpcHRvci4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNTVNZU1RFTV9HZXRJRGF0YSgpIG5vdyBkaWVzIHdoZW4gbm8gaURhdGEgaXMgcHJlc2VudAoJQmV0dGVyIGVycm9yIHJlY292ZXJ5IHdoZW4gdGhlIHByb2Nlc3MgYXR0YWNobWVudCBmYWlscwoJUGxheVNvdW5kIChhbmQgaGVscGVyIGZ1bmN0aW9ucykgbm93IHVzZSB0aGUgcmVndWxhciB3YXZlT3V0WFhYIChpbnN0ZWFkIG9mIHdvZE1lc3NhZ2UpCglNb3ZlZCBoYW5kbGluZyBvZiBoYWNrIGZvciBkaWZmZXJlbmNpYXRpbmcgYmV0d2VlbiAxNiBhbmQgMzIgYml0IGNhbGxiYWNrIHRvIGxvbHZsZHJ2LmMKCU1ha2VzIHVzZSBvZiBuZXcgbG9sdmxkcnYuYyBpbnRlcmZhY2VzCgoJKiBtdWx0aW1lZGlhLy5jdnNpZ25vcmUsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvbG9sdmxkcnYuYywgbXVsdGltZWRpYS9vc3MuYywgbXVsdGltZWRpYS9vc3MuaCwgbXVsdGltZWRpYS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbG9sdmxkcnYuYyBhbmQgb3NzLmMuCglUaHVua3MgdG8gMTYgYml0IGFyZSBub3cgZ2VuZXJhdGVkIGZvciB0aGUgTU1TWVNURU0gbW9kdWxlLgoKCSogY29uZmlndXJlLmluLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGRsbHMvd2lubW0gYW5kIGRsbHMvd2lubW0vd2luZW9zcyBkaXJlY3Rvcmllcy4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjaGVja2luZyBmb3IgY29ycmVjdCBpRGF0YSBpbiBjb2RlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgRHJpdmVyQ2FsbEJhY2sgZnVuY3Rpb24uCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGwgaGVhZGVycyAod2F2ZSBhbmQgbWlkaSBmdW5jdGlvbnMpIGFyZSBub3cgc2VlbiBhcyBzZWdwdHIuCglBZGRlZCBzdHViIGZvciBqb3lHZXRQb3NFeDE2KCkuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBpbmNsdWRlL21tZGRrLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIHRoZSBzYW1lIHN0cnVjdHMgZm9yIGxvdy1sZXZlbCBkcml2ZXJzIGFzIFdpbmRvd3MgZG8uCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIGl0IChhbG1vc3QpIDMyIGJpdCBvbmx5LgoJUmVmbGVjdGVkIGNyZWF0aW9uIG9mIFdJTkVPU1MgbW9kdWxlLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSBpdCAoYWxtb3N0KSAzMiBiaXQgb25seS4KCVJlZmxlY3RlZCBjcmVhdGlvbiBvZiBXSU5FT1NTIG1vZHVsZS4KCU5vIGxvbmdlciB1c2luZyBFUlIgd2hlbiBubyBNSURJIGNhcmQgaXMgcHJlc2VudC4KCgkqIG11bHRpbWVkaWEvam95c3RpY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdHViIGZvciBqb3lHZXRQb3NFeDE2KCkuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjaGVja2luZyBmb3IgY29ycmVjdCBpRGF0YSBpbiBjb2RlLgoJQWRkZWQgbG9vay11cCB0YWJsZXMgdG8gY29tbWFuZCB0YWJsZXMgKHNwZWVkcyB1cCBxdWVyaWVzKS4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBXQVZFRk9STUFURVggaW5zdGVhZCBvZiBQQ01XQVZFRk9STUFULgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIG1vZFJlc2V0KCkgaW5zdGVhZCBvZiB0d2Vha2luZyBNSURJIGNvbnRyb2xzLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm5lZCB0eXBlIHVwb24gb3Blbi4KCUZpeGVkIHNvbWUgYm9ndXMgZXJyb3IgY2hlY2tpbmcuCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuZWQgdHlwZSB1cG9uIG9wZW4uCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURvIG5vdCBzZXQgRUhfTk9OQ09OVElOVUFCTEUuCgoJKiBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9DaGFuZ2VMb2csIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW46CglNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglBZGRlZCBzaW1wbGUgY29uc29sZSBtb2RlIGV4YW1wbGUgcHJvZ3JhbSB3aGljaCBsaXN0cyBpbmZvcm1hdGlvbgoJYWJvdXQgdGhlIHZlcnNpb24gb2YgV2luZG93cyB3ZSdyZSBjdXJyZW50bHkgcnVubmluZyBvbi4KCgkqIGxvYWRlci9tb2R1bGUuYzogRml4ZWQgbWVtb3J5IGFsbG9jYXRpb24gYnVnLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggaW5maW5pdGUgbG9vcCB3aXRoIGdsYXN0WEZvY3VzV2luZG93LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBbGxvdyBjcmVhdGlvbiBvZiBlbXB0eSBpbWFnZWxpc3QuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldElDTVByb2ZpbGVBLCByZXF1aXJlZCBieSBQYWludCBTaG9wCglQcm8gNS4KCgkqIGNvbnRyb2xzL21lbnUuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglEb24ndCBzZW5kIFdNX0VOVEVSTUVOVUxPT1AsIFdNX0lOSVRNRU5VICYgV01fSU5JVE1FTlVQT1BVUCBtZXNzYWdlcwoJd2hlbiBUUE1fTk9OT1RJRlkgZmxhZyBpcyBzZXQgaW4gVHJhY2tQb3B1cE1lbnUuCgoJKiBtaXNjL3dpbnNvY2suYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJZ2V0cGVlcm5hbWUoKSBhbmQgZ2V0c29ja25hbWUoKSByZXR1cm4gZXJyb3JzIGluIGVycm5vIG5vdCBoX2Vycm5vLgoKTW9uIFNlcCAyMCAxODo1MjowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB0b29scy9idWlsZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tb3VzZS5jLCBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaWYxNjMyL21vdXNlLnNwZWMsIHdpbmRvd3MvaW5wdXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJS2V5Ym9hcmQvbW91c2UgZXZlbnQgcHJvYyB0aHVuayBjcmVhdGlvbiBtb3ZlZCBvdXQgb2YgaWYxNjMyL3RodW5rLmMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNyZWF0ZSB0aHVuayBmb3IgdGFzayBzaWduYWwgcHJvYywgY2FsbCBpdCBkaXJlY3RseS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy8uY3ZzaWdub3JlLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJREMgaG9vayBwcm9jIHRodW5rIG1hbmFnZW1lbnQgc2ltcGxpZmllZC4KCgkqIG1pc2Mvc3lzdGVtLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3lzdGVtIHRpbWVyIHByb2MgdGh1bmsgY3JlYXRpb24gbW92ZWQgb3V0IG9mIGlmMTYzMi90aHVuay5jLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjcmVhdGUgdGh1bmsgZm9yIENyZWF0ZVRocmVhZDE2IHByb2MsIGNhbGwgaXQgZGlyZWN0bHkuCgoJKiB3aW5kb3dzLy5jdnNpZ25vcmUsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvaG9vay5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9ob29rLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdpbmRvd3MgaG9vayBwcm9jIHRodW5rIG1hbmFnZW1lbnQgc2ltcGxpZmllZC4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIFRIVU5LX0FsbG9jIHNvIGFzIHRvIGF2b2lkIDMyLT4xNi0+MzIgY2FsbGluZyBzZXF1ZW5jZXMuCglSZW1vdmVkIHBlcnNpc3RlbnQgdGh1bmsgY3JlYXRpb24gcm91dGluZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZkZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSBER0EgMi4wLgoKCSogd2luZWRlZmF1bHQucmVnOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEhLRVlfTE9DQUxfTUFDSElORVwuLi5cUHJvZ3JhbUZpbGVzRGlyIHJlZ2lzdHJ5IGtleS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRGVubmlzIEJvcmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJSXQncyBubyBlcnJvciB0byBzZW5kIGEgV01fQ09NTUFORCB0byBNZW51SGVscC4KCgkqIGZpbGVzL2ZpbGUuYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVGaWxlQSByZXR1cm5zIEhGSUxFX0VSUk9SIHdoZW4gdGhlIGZpbGVuYW1lIGNvbnRhaW5zIGEgd2lsZCBjYXJkLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGRpc3BsYXkgYnVnIGluIHRoZSBzdGF0aWMgY29udHJvbC4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCU1lc3NhZ2UgcmVtb3ZlZCB3aGVuIG1lbnUgdHJhY2tpbmcgZmluaXNoIG9uIGEgV01fTEJVVFRPTkRPV04uCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJLSBBZGQgY2xpcGJvYXJkIHN1cHBvcnQgZm9yIGNvcHlpbmcvcGFzdGluZyBiaXRtYXBzIG9yIFBpeG1hcHMgYmV0d2VlbiBXaW5lCgkgIGFuZCBuYXRpdmUgTGludXggYXBwbGljYXRpb25zLgoJLSBSZXNwb25kIHRvIHRoZSBNVUxUSVBMRSBzZWxlY3Rpb24gcmVxdWVzdCB0YXJnZXQgd2hlbiBXaW5lIGlzIHRoZQoJICBzZWxlY3Rpb24gb3duZXIuCgktIFJlbGF4IHR5cGUgY2hlY2tpbmcgZm9yIFRBUkdFVFMgc2VsZWN0aW9uLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXQgJ2V4cGVjdGVkX3ZlcnNpb24nIG9mIGJ1aWx0LWluIGFuZCBkdW1teSBtb2R1bGVzIGFjY29yZGluZyB0bwoJZW11bGF0ZWQgV2luZG93cyB2ZXJzaW9uLgoKCSogaWYxNjMyL3JlbGF5LmMsIGxvYWRlci9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1ha2UgQ2FsbFRvMTYgcmV0dXJuIHN0dWIgc2VnbWVudCBvd25lZCBieSBLRVJORUwuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogSW1wcm92ZWQgR2V0Q29kZUhhbmRsZTE2IC8gR2V0Q29kZUluZm8xNi4KCgkqIG9sZS9ubHMvc3ZlLm5sczogRGVubmlzIEJqb3JrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCUFkZGVkIHNvbWUgdmFsdWVzIHRoYXQgd2VyZSBtaXNzaW5nIGluIHRoZSBTd2VkaXNoIG5scyBmaWxlLgoKU3VuIFNlcCAxOSAxODo1ODoxNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGNyZWF0ZSBEREIgaW4gWDExRFJWX0RJQl9HZXRESUJpdHMgaWYgbmVjZXNzYXJ5LgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIG1pc3NpbmcgZXhwb3J0LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggd2hlbiBsb2FkaW5nICouYW5pIGZpbGVzLgoKCSogb2xlLyosIGRsbHMvb2xlMzIvKiwgZGxscy9vbGVhdXQzMi8qLCBkbGxzL29sZWNsaS8qLCBkbGxzL29sZWRsZy8qOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBidWxrIG9mIE9MRSBpbXBsZW1lbnRhdGlvbiB0byBkbGxzLyBzdWJkaXJlY3Rvcmllcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogRGVubmlzIEJq9nJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVNlbmQgY29ycmVjdCBXTV9NRU5VU0VMRUNUIHdoZW4gbWVudSBjbG9zZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzbWFsbCBmZWF0dXJlIGluIHRoZSBmaWxlIGRpYWxvZy4KCgkqIHdpbjMyL25ld2Zucy5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmgsIG1zZG9zL3Z4ZC5jLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tZW1sb2NrYnl0ZXMuYywgb2xlL29sZWZvbnQuYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvdmFyaWFudC5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGFub255bW91cyBzdHJ1Y3RzL3VuaW9ucyBvbiBjb21waWxlcnMgdGhhdCBpbXBsZW1lbnQgaXQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCVN0dWJzIGZvciBQb2x5VGV4dE91dEEvVy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgb2JqZWN0cy9kaWIuYzoKCUthcmwgTGVzc2FyZCA8eWJpY3VidWtAdW1haWwuY29yZWwuY29tPgoJU29tZSBtb3JlIG1pbm9yIEdESSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW4gSW1hZ2VMaXN0X0RyYXcgd2hlbiBkcmF3aW5nIHRoZSBiaXRtYXAgd2l0aCB0aGUgdHJhbnNwYXJlbnQgZmxhZwoJc2V0LCBiYWNrZ3JvdW5kIGNvbG9yL2ZvcmVncm91bmQgY29sb3Igc2hvdWxkIGJlIHNldCB0byB3aGl0ZS9ibGFjaywKCXdoZW4gZG9pbmcgYml0Ymx0IG9wZXJhdGlvbiB3aXRoIHRoZSBiaXRtYXAgbWFzay4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvd2luMTZkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUV4dGVuZCBEUkFXTU9ERSBzdHJ1Y3QgdG8gd2luOTUgc3BlYy4KCUFkZCBzb21lIG1vcmUgRXNjYXBlIC0+IEVzY2FwZTE2IGNvbnZlcnNpb25zLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdG9wIHRyYXNoaW5nIGRldm1vZGUgaWYgaW4gYW5kIG91dCBkZXZtb2RlcyBhcmUgdGhlIHNhbWUuCgoJKiBjb250cm9scy93aWRnZXRzLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJVGhlIE1ESUNsaWVudCBjbGFzcyBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgSURDX0FSUk9XIGN1cnNvci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tYm9ib3guCgoJKiBjb250cm9scy9tZW51LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJUHJvdGVjdCBTZXRNZW51IGZyb20gcm9ndWUgbWVudSBoYW5kbGUuCglHZXRNZW51MTYgY2FuIGp1c3QgY2FsbCBHZXRNZW51LgoKCSogd2luZG93cy9tZGkuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglQcm90ZWN0IE1ESVNldE1lbnUgZnJvbSByb2d1ZSBtZW51IGhhbmRsZXMuCgoJKiBtZW1vcnkvbG9jYWwuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglUaWR5IHVwIFRSQUNFIGV0YyB0byB1c2UgZGVmYXVsdCBjaGFubmVsLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludmVyLmgsIG9sZS9vbGUybmxzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmUgVmVyTGFuZ3VhZ2VOYW1lW0FXXSBiYWNrIHRvIGJhc2UgKGV4cG9ydGVkIGZyb20gS0VSTkVMMzIgLi4uKS4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB3aXphcmQgcHJvcGVydHkgc2hlZXRzLgoKCSogbWlzYy9sc3RyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBGb3JtYXRNZXNzYWdlMTYgYXQgbGVhc3QgZW5vdWdoIHRvIGdldCB3aW45NSAxNmJpdCBwcmludGRsZyB3b3JraW5nLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJLSBpU2VsZWN0ZWQgc2hvdWxkIGJlIC0xIGlmIG5vIGl0ZW0gc2VsZWN0ZWQgKEdlcmFyZCBQYXRlbCkKCS0gc29tZSBvZiB0aGUgY2hlY2tzIGZvciBpbnZhbGlkIGl0ZW1zIHdoZXJlID4gd2hlbiB0aGV5IHNob3VsZCBoYXZlIGJlZW4gPj0KCSAgKE1hcmN1cyBNZWlzc25lcikKCS0gbWFkZSBJbnNlcnRJdGVtIGJlaGF2ZSBzaW1pbGFybHkgdG8gRGVsZXRlSXRlbSwgaWUsIGlmIHRoZSBjdXJyZW50IGl0ZW0gaXMKCSAgYWZ0ZXIgd2hlcmUgdGhlIGl0ZW0gaXMgaW5zZXJ0ZWQsIGluY3JlbWVudCB0aGUgc2VsZWN0ZWQgaXRlbSAoRGF2aWQgTHV5ZXIpCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERlY2xhcmUgQ0FMTDMyX0NCQ2xpZW50W0V4XSB3aXRob3V0IFdJTkFQSS4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IChFKUlQLXJlbGF0aXZlIG9mZnNldHMgZGVwZW5kIG9uIG9wZXJhbmQsIG5vdCBhZGRyZXNzLCBzaXplLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBFbnVtRGlzcGxheURldmljZXMqLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBTQ19HRVRfREVWVFlQRS4KCgkqIG9sZS9jb21wb2JqLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgc3R1YiBmb3IgT0xFMzIuRGxsR2V0Q2xhc3NPYmplY3QuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hsZ3VpZC5oLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHN1cHBvcnQgZm9yIHNwZWNpYWwgcGlkbHMgaW4gU0hHZXRTcGVjaWFsRm9sZGVyTG9jYXRpb24uCgoJKiBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9wZW4uYywgaW5jbHVkZS9wc2Rydi5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGludmlzaWJsZSBwZW5zLgoKCSogb2JqZWN0cy9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgRElCIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjYXNlIGZvciBtZW51IGhhbmRsaW5nIGluIHdpbjMxLgoKVHVlIFNlcCAxNCAxMTo1MTowMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglGaXhlZCBHZXRESUJpdHMgcHJvYmxlbXMuCgoJKiBtaXNjL2NwdS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgc3VwcG9ydCBmb3IgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMgb24gY29tcGlsZXJzIHRoYXQgaW1wbGVtZW50IGl0LgoKTW9uIFNlcCAxMyAxNjowNjoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCURlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglGaXhlZCB3aW45eCBsb29rIG9uIGNoZWNrYm94ZXMgYW5kIHJhZGlvYnV0dG9ucy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL3dpbjE2ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2dkaS5oLCBtaXNjLy5jdnNpZ25vcmUsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9kYy5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDaGFuZ2UgaW50ZXJmYWNlcyB0byBUSFVOS19BbGxvYy9GcmVlIHNsaWdodGx5IGFuZCBtYWtlIHRoZW0gbm9uLXN0YXRpYy4KCVJlbW92ZSByZWxheXMgZm9yIHdpbjE2ZHJ2IGZyb20gQ2FsbEJhY2sgdGFibGUsIGluc3RlYWQgdXNlIGJ1aWxkIHRvCglnZW5lcmF0ZSB0aGVtIGRpcmVjdGx5IGluIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLgoJSWYgUHJpbnRlciBBYm9ydFByb2MgaXMgMTZiaXQgdGhlbiBhbGxvY2F0ZSB0aHVuayBhbmQgc3RvcmUgdGhhdCBhcyBhCgkzMmJpdCBwcm9jIGluIERDLiAgU2V0dGluZyBvZiBhYm9ydHByb2NzIG5vdyBkb25lIGluIHRoZSBjb3JyZWN0IHBsYWNlCgkoaS5lLiBub3QgaW4gdGhlIGRyaXZlcikuCgoJKiBvYmplY3RzL2RpYi5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGJpZ2Zvb3QuZGU+CglSZWxheGVkIHBhcmFtZXRlciBjaGVja2luZyBmb3IgR2V0RElCaXRzLgoKCSogd2luMzIvZGV2aWNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgbGFzdCBlcnJvciBjb2RlIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdW5rbm93biBWeEQgd2l0aCBDcmVhdGVGaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglQcmV0ZW5kIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIFNIRUxMX05vdGlmeUljb24qKCkuCgoJKiBjb250cm9scy9tZW51LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIE1lbnVJdGVtRnJvbVBvaW50IHN0dWIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvZmYgYnkgb25lIGFsbG9jYXRpb24gZXJyb3IgKERQQSBhbmQgRFNBKS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCBpbiBQbGF5U291bmQgdGhyZWFkLgoKU2F0IFNlcCAxMSAxNjoyOTowMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBOaWNrIEhvbGxvd2F5IDxOaWNrLkhvbGxvd2F5QGFsZmllLmRlbW9uLmNvLnVrPgoJRm9yIFdpbiAzLnggYXBwbGljYXRpb25zLCBpZiB0aGV5IGhhdmUgZWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwKCXNjcm9sbGJhcnMsIGVuYWJsZSBib3RoLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbWVtb3J5L3N0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglFbGltaW5hdGVkIHdhcm5pbmdzLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJU2V0IHRoZSBtb3VzZSBjYXB0dXJlIG9uIHRoZSBjb21ibyBsaXN0Ym94LgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ZWQgdGhlIGNyZWF0aW9uIG9mIGJhY2stYnVmZmVycyBpbiBER0EgbW9kZQoJLSBhZGRlZCBhIGNoZWNrIG9uIHRoZSB2YWxpZGl0eSBvZiB0aGUgTG9ja2luZyByZWN0YW5nbGUKCS0gZml4ZWQgdGhlIGVudW1lcmF0aW9uIGZvciBEWC02LjAKCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBSR0JRVUFEL0NPTE9SUkVGIG1peHVwIGluIENyZWF0ZU1hcHBlZEJpdG1hcCgpLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRHJhdyB0aGUgZm9jdXMgcmVjdGFuZ2xlIGZvciBidXR0b25zIHdpdGggQlNfM1NUQVRFLCBCU19SQURJT0JVVFRPTiwKCUJTX0NIRUNLQk9YLCBCU19BVVRPKiBzdHlsZXMuCgpGcmkgU2VwIDEwIDE0OjM4OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGdyYXBoaWNzL2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJV2luc3Bvb2wgRG9jdW1lbnRQcm9wZXJ0aWVzIGFuZCBEZXZpY2VDYXBhYmlsaXRpZXMgc2hvdWxkIG5vdyB3b3JrIG9uCgluYXRpdmUgMTYgYml0IGRyaXZlcnMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgRGV2aWNlQ2FwYWJpbGl0aWVzIGZvciBEQ19QQVBFUlNJWkUuCglWYXJpb3VzIGZpeGVzIGZvciBPcGVuUHJpbnRlciBhbmQgRW51bVByaW50ZXJzLgoJU2VwYXJhdGlvbiBvZiBHZXRQcmludGVyIGluIHByZXBhcmF0aW9uIGZvciB1bmlmaWNhdGlvbiB3aXRoIEVudW1QcmludGVycy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIHN1cHBvcnQgZm9yIGEgbGFyZ2UgbnVtYmVyIG9mIGRpZmZlcmVudCBwYXBlciBzaXplcyB0byBQb3N0U2NyaXB0Cglkcml2ZXIuCgoJKiBpbmNsdWRlL2QzZC5oOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgZGVmaW5pdGlvbnMgb2YgQ09NIG9iamVjdHMgZm9yIEQzRCA2Lnggc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYzogTmljayBIb2xsb3dheSA8YWxmaWVAYWxmaWUuZGVtb24uY28udWs+CglJZiB0aGVyZSBpcyBub3QgYW4gZXhhY3QgbWF0Y2ggZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgZm9udCBuYW1lLAoJaW5zdGVhZCBvZiB1c2luZyB0aGUgZmlyc3QgZm9udCBkZWZpbmVkIGZvciB0aGUgcHJpbnRlciwgbWFwIHNvbWUKCWNvbW1vbiBmb250IGZhbWlsaWVzIChlLmcuIEFyaWFsIC0+IEhlbHZldGljYSksIGFuZCBzZWFyY2ggYWdhaW4uCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBidWcgaW4gQ0JDbGllbnQgcm91dGluZXMgYnkgc3RvcmluZyB0aGUgU0VHUFRSIGluIHRoZSBnbG9iYWwKCXRhYmxlIGFuZCB0cmFuc2xhdGluZyBpdCBvbiBldmVyeSB1c2UuCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2ljX3NhbXBsZTogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSBwaXhtYXAgdG8gbG9vayBsaWtlIHRoZSB3aW5kb3dzIGRlZmF1bHQgYXBwbGljYXRpb24gaWNvbi4KCgkqIGZpbGVzL2RyaXZlLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJU3RvcCBjcmFzaCBpbiBHZXREaXNrRnJlZVNwYWNlRXguCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWRlIHN1cmUgdGhhdCB0aGUgd2luZG93cyB3aXRoIHRoZSBXU19FWF9UT09MV0lORE9XIHN0eWxlIGRpZG4ndCBnZXQKCWhhbmRsZWQgYnkgdGhlIHdpbmRvdyBtYW5hZ2VyLgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGJlaGF2aW9yIGFyb3VuZCB0aGUgRVNfV0FOVFJFVFVSTiBzdHlsZSBpbiB0aGUgZWRpdAoJY29udHJvbC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJUHJlc3NpbmcgdGhlIGRlbGV0ZSBrZXkgdXNpbmcgYW4gZXh0ZW5kZWQga2V5Ym9hcmQgd2l0aCBudW1sb2NrIG9uIGlzCglub3QgZ2VuZXJhdGluZyBhbnltb3JlIGEgV01fQ0hBUiBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBOaWNsYXMgS2FybHNzb24gPG5rYXJsc3NvQHJhLmFiby5maT4KCUZpeGVkIHBhdHRlcm4gbWF0Y2hpbmcgaW4gUGF0aE1hdGNoU3BlY0EvVwoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJVGFiYmluZyBpbiB0aGUgbGlzdHZpZXcgb2YgdGhlIHNoZWxsdmlldy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIExJU1RWSUVXX0dldEl0ZW1SZWN0OiB0aGUgY2FsY3VsYXRpb25zIHdlcmUgb2ZmIGZvciBMVklSX0JPVU5EUywKCUxWSVJfU0VMQ1RCT1VORFMsIExWSVJfTEFCRUwgd2hlbiB0aGUgaXRlbSB3aWR0aCBpcyBncmVhdGVyIHRoYW4gdGhlCgljb2x1bW4gd2lkdGguCglGaXhlZCBXTV9HRVRETEdDT0RFIGJ5IHJlbW92aW5nIHRoZSBETEdDX1dBTlRSVEFCIGFuZCBhZGRpbmcgRExHQ19XQU5UQ0hBUlMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGluIGRldGFjaCBzZXF1ZW5jZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgcmV0dXJuIHZhbHVlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUHJldmVudCBlbmRsZXNzIGxvb3AgaW4gZXhjZXB0Mi4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglOb3cgd29ya3MgYXJvdW5kIHdpbmUgbmV2ZXIgZXhpdGluZyB0aGUgZGVidWdnZXIuCglTaG91bGQgcHV0IGJ1ZyByZXBvcnRzIGluIHRoZSByaWdodCBwbGFjZSBub3cuCgoJKiBvbGUvb2xlYXV0MzIuYywgb2xlL01ha2VmaWxlLmluLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgc3R1YiBmb3IgUmVnaXN0ZXJBY3RpdmVPYmplY3QoKS4KCgkqIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbjMycy93MzJzeXMuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgV0lOMzJTMTYuRVhQMSAobW9zdCBsaWtlbHkgTG9hZFBlUmVzb3VyY2UxNikuCgpTdW4gU2VwICA1IDE2OjQ4OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBpbmNsdWRlL3dpbmRlZi5oOgoJUmVtb3ZlZCBfX3dpbmVsaWIgZmxhZy4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgbXVsdGltZWRpYS93aW5tbS5yYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byBuZXcgTU0gaGVhZGVyIG9yZ2FuaXphdGlvbi4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9vc3MuaCwgbXVsdGltZWRpYS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgRERLIGxldmVsIG1hdGVyaWFsIHRvIG5ldyBpbmNsdWRlL21tZGRrLmggZmlsZS4KCUNvcGllZCBzb21lIFNESyBsZXZlbCBtYXRlcmlhbCBmcm9tIGluY2x1ZGUvbXVsdGltZWRpYS5oIGZpbGUuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tY2ltaWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gbmV3IE1NIGhlYWRlciBvcmdhbml6YXRpb24uCglDbGVhbmVkLXVwIGludGVybmFsIHN0cnVjdHVyZXMgKG5vdyAzMiBiaXQgb25seSkuCglOb3cgdXNpbmcgdGhlIE1NU1lTVEVNIGVudHJ5IHBvaW50cyByYXRoZXIgdGhhbiB0aGUgbG93IGxldmVsIGRyaXZlcgoJb25lcyBkaXJlY3RseS4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4ICVmcyBmb3Igc2lnbmFsIGhhbmRsZXJzIGluIHRoZSBGU19zaWcgdW5kZWZpbmVkIGNhc2UgKHRoaXMgcGF0Y2gKCWFjdHVhbGx5IGZyb20gVWxyaWNoIFdlaWdhbmQsIEkgb25seSB0ZXN0ZWQgaXQpLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJvbiBSZWNvcmQgPHJyQHNjby5jb20+CglBZGRlZCBzdXBwb3J0IG9mIF9fdGhyX2Vycm5vIGZvciByZWVudHJhbmNlIG9uIFVuaXhXYXJlLgoKCSogd2luZG93cy9kaWFsb2cuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglObyBsb25nZXIgbmVlZHMgdG8gY2FsY3VsYXRlIGl0cyBvd24gY2hhcmFjdGVyIHNpemUuCgoJKiBtaXNjL21haW4uYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglDb25zZXF1ZW50aWFsIGNoYW5nZXMgdG8gZGVmYXVsdCBzeXN0ZW0gZm9udCBzaXplcwoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglWYXJpb3VzIGZpeGVzIGZvciB0aGUgWDExIGZvbnQgbWFwcGVyLCBwYXJ0aWN1bGFybHk6CgktIHNpemUgZm9udHMgd2l0aCBuZWdhdGl2ZSBoZWlnaHRzIGNvcnJlY3RseQoJLSBjYWxjdWxhdGUgYXZlcmFnZSB3aWR0aCBjb3JyZWN0bHkuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVXNlIGEgc3BlY2lhbCB2YWx1ZSBpbiB0aGUgaG90c3BvdCBjb29yZGluYXRlIHRvIGlkZW50aWZ5IHdoaWNoIEhJQ09OCglhcmUgY3Vyc29ycyBhbmQgd2hpY2ggYXJlIGljb25zLgoKCSogY29udHJvbHMvY29tYm8uYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJTW9kaWZpZWQgQ0JEcm9wRG93biB0byBmaW5kIHRoZSBiZXN0IGhlaWdodCBvZiB0aGUgbGlzdGJveC4KClNhdCBTZXAgIDQgMTQ6MzY6MDMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbWVtb3J5L3N0cmluZy5jLCBtaXNjL3BvcnQuYywgY29uZmlndXJlOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzdHJbbl1jYXNlY21wLgoKCSogd2luZG93cy90aW1lci5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbGxvdyB0aW1lb3V0IG9mIDAuIENhcCB0aW1lciByYXRlIHRvIFNZU19USU1FUl9SQVRFLgoKCSogaW5jbHVkZS93aW5kZWYuaDogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgdHlwZSBQV09SRC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBsb2FkcyBvZiB0eXBlcywgZGVmaW5lcyBhbmQgZGVjbGFyYXRpb25zIHRvIHdpbnNwb29sLmguCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgaGVpZ2h0IG9mIGl0ZW1zIGluIHRoZSBsb29raW4gY29tYm9ib3ggb2YgdGhlIGZpbGVkbGc5NS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbml0aWFsaXplIHRoZSBlbmFibGluZyBzdGF0ZSB2YXJpYWJsZSBpbiB0aGUgZWRpdC4KCgkqIGdyYXBoaWNzL2JpdGJsdC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVRoZSBmYXN0IHdpbmRvdyBmcmFtZSBzaXplIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZnJhbWUgc2l6ZSB1c2VkCglieSBOQ19EcmF3RnJhbWUgZnVuY3Rpb24uCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJbHN0cm5jbXBpIGlzbid0IGEgd2luZG93cyBBUEksIHVzZSBzdHJuY2FzZWNtcCBpbnN0ZWFkLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJRml4ZWQgR01FTV9aRVJPSU5JVCBpbiBHbG9iYWxSZWFsbG9jICh0aGFua3MgdG8gR2VyYXJkIFBhdGVsKS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IEFkZGVkIG1pc3NpbmcgSEZPTlQgdHlwZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBsb2FkZXIvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9jbGFzcy5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBDb3B5SW1hZ2UgdG8gYWNjZXB0IGRlc2lyZWRYLCBkZXNpcmVkWSBhbmQgTFJfQ09QWUZST01SRVNPVVJDRS4KCUNVUlNPUklDT05fRmluZEJlc3RJY29uIGNoYW5nZWQgdG8gZmluZCB0aGUgY29ycmVjdCBpY29uLgoJSW1hZ2VMaXN0X1JlcGxhY2VJY29uIG5vdyBjYWxscyBDb3B5SW1hZ2UgaW50ZXJuYWxseS4KCUFzc2lnbiBhIHZhbHVlIGZvciB0aGUgaEljb25TbSBDTEFTUyBtZW1iZXIgKHVzaW5nIENvcHlJbWFnZSkuCgoJKiB3aW4zMi9jb25zb2xlLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCBXcml0ZUNvbnNvbGVPdXRwdXQgYW5kIEdldE51bWJlck9mQ29uc29sZUlucHV0RXZlbnRzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglHaXZlIGFwcGxpY2F0aW9ucyBhIGNvcHkgb2YgdGhlIHByb3BlcnR5IHNoZWV0IGRpYWxvZyB0ZW1wbGF0ZSBhcyB0aGV5CgltaWdodCBtb2RpZnkgaXQuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVsYXkgZXhjbHVkZSBsaXN0cyB3ZXJlIG5vdCB3b3JraW5nIGR1ZSB0byBzb21lIENoYXJVcHBlckEoKQoJc29tZXdoZXJlIGVsc2UuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIHdpbmUuaW5pOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJd2luc3Bvb2wgLT4gd2luc3Bvb2wuZHJ2CgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgU3RyQ21wTklBIGxpa2UgdGhlIG90aGVyIFN0ckNtcFhYIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZXNvbHZlIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gZW51bWVyYXRpbmcgdmFsdWVzLgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJVGhlIGZvcm1hdCByZWN0IGlzIHJlY2FsY3VsYXRlZCBmb3IgZWFjaCBmb250IGNoYW5nZS4gTW92ZUVuZCAmCglNb3ZlSG9tZSBpbXByb3ZlZC4KCkZyaSBTZXAgIDMgMTY6NDk6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCUthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJSWFuIFdhcmQKCURhbiBMYW5nbG9pcwoJU3BlZWQgdXAgY29udmVyc2lvbiBiZXR3ZWVuIFhJbWFnZXMgYW5kIERJQlNlY3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTb21lIDxvcGVuPiBmZWF0dXJlcyBpbiB0aGUgZmlsZSBkaWFsb2cgOTUuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgZ2xvYmFsIHZhcmlhYmxlIHBDdXJyZW50VGViLgoKCSogbWVtb3J5L2hlYXAuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIRUFQX0NvbW1pdC9EZWNvbW1pdCB3ZXJlIGFzc3VtaW5nIGEgcGFnZSBzaXplIG9mIDRLQgoJdW5jb25kaXRpb25hbGx5LgoKCSogaW5jbHVkZS93aW5nZGkuaDogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQSBmZXcgbW9yZSBEQ18gZGVmaW5lcyBmcm9tIFdpbjIwMDAuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDaGVjayB0aGF0IGxwQ3JlYXRlLT5scHN6TmFtZSBpcyBub24tTlVMTC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNb3JlIHJlc3RyaWN0aXZlIGNoZWNrcywgc28gRElBTE9HX0lzQWNjZWxlcmF0b3IgZG9uJ3QgbG9vcAoJZW5kbGVzc2x5LgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJTWVudSBoaWRlcyB3aGVuIGNsaWNrZWQgZm9yIGEgc2Vjb25kIHRpbWUuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCS0gc2VsZWN0IHRoZSBmb250IGludG8gdGhlIGRjIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgZXh0ZW50CgktIG1ha2UgYnV0dG9uaGVpZ2h0IGNvcnJlc3BvbmQgdG8gdGV4dCBoZWlnaHQgKyB3aWR0aCB0byBjYXB0aW9uCgktIGJ1dHRvbiB3YXMgImZsYXNoaW5nIiBvbiBFbmREaWFsb2cgKG11c3QgZGVsZXRlIGZvbnQgQUZURVIgRW5kRGlhbG9nKQoJLSAjZGVmaW5lcyBmb3IgRGxnSXRlbUlkcwoJLSBpbXBsZW1lbnQgTUJfUkVUUllDQU5DRUwKCgkqIGNvbnRyb2xzL2VkaXQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglLZWVwIHRoZSBlbmFibGUgc3RhdGUgaW4gdGhlIGVkaXQgc3RydWN0dXJlIGluc3RlYWQgb2YgY2FsbGluZwoJSXNXaW5kb3dFbmFibGVkKCkuCgoJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvbGUvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CgktIEltcGxlbWVudCBpbnRlcnByb2Nlc3MgY2xpcGJvYXJkIGNvbW11bmljYXRpb24uCgktIFN1cHBvcnQgZm9yIHRoZSBQUklNQVJZIGFuZCBDTElQQk9BUkQgc2VsZWN0aW9uIGF0b21zLgoJLSBTdXBwb3J0IGZvciB0aGUgVEFSR0VUUyBzZWxlY3Rpb24gZm9ybWF0LgoJLSBFeHBvc2UgbmF0aXZlIFdpbmRvd3MgY2xpcGJvYXJkIGZvcm1hdHMgdGhyb3VnaCBYIHNlbGVjdGlvbiB0YXJnZXRzLgoKCSogb2JqZWN0cy9nZGlvYmouYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglNYWtlIHN0b2NrIGZvbnRzIGluZGVwZW5kZW50IG9mIG1hcHBpbmcgbW9kZS4KCVN5c3RlbSBmb250IHNob3VsZCBvbmx5IGJlIGJvbGQgZm9yIFdpbjMxLgoKCSogd2luZG93cy9kaWFsb2cuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCB0cnVuY2F0aW5nIGVycm9ycyB0aGF0IGhhcHBlbiB3aGVuIGNvbnZlcnRpbmcgZm9tIGRpYWxvZyB1bml0cwoJdG8gcGl4ZWxzLgoKCSogd2luZG93cy93aW5wb3MuYzogQWJleSBHZW9yZ2U8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIG5ldyBjb29yZGluYXRlcyByZWNlaXZlZCBpbiBXTV9OQ0NBTENTSVpFIG1lc3NhZ2UuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJU2xpZ2h0IDEgcGl4ZWwgYWRqdXN0bWVudCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIHJhZGlvIGJ1dHRvbiBiaXRtYXAuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb2ZmIGJ5IG9uZSBhbGxvY2F0aW9uIGVycm9ycy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVRoZSBiYWNrc3BhY2UgaXMgbm93IGhhbmRsZWQgaW4gdGhlIFdNX0NIQVIgbWVzc2FnZS4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhhdCBhbGwgTURJIGNoaWxkcmVuIGhhdmUgdGhlIFdTX0VYX01ESUNISUxEIHN0eWxlIHNldC4KCgkqIG1lbW9yeS9zdHJpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBwcm90b3R5cGUgb3JkZXIuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXggRVhDX3NlZ3YgZm9yIHRoZSBUUkFQX3NpZyB1bmRlZmluZWQgY2FzZSAoZWcgRnJlZUJTRCkuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgc3VwcG9ydCBmb3IgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgU2hlbGxBYm91dCBkaWFsb2dzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfTmwucmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgRHV0Y2ggcmVzb3VyY2VzIGZvciBQcmludERsZzMyLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglDb21wbGV0ZWQgUHJpbnREbGczMiByZXNvdXJjZSBzdHJpbmd0YWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2FuaXR5IGNoZWNrcyBpbiB0aGUgY2xlYW51cCBjb2RlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvbXBsZXRlZCBHZXRLZXlOYW1lVGV4dCBmb3Igbm9uLWNoYXJhY3RlciBrZXlzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIGRpcmVjdG9yaWVzIG5hbWUgYXBwZWFyIGluIHRoZSBCcm93c2VGb3JGb2xkZXIgZGlhbG9nLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURvIG5vdCByZW1vdmUgLmRydiBmcm9tIGZpbGVuYW1lcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGxpdHRsZSBwb3NpdGlvbmluZyBidWcgd2l0aCB0aGUgY2hlY2tib3guCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgcmVzaXppbmcgYnVncyBmb3Igd2luZG93cyB3aXRoIFdTX1RISUNLRlJBTUUgYW5kIFdTX0RMR0ZSQU1FCglzdHlsZXMuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJQ2hhbmdlZCBzbnByaW50ZiB0byB3c25wcmludGZBIHRvIHJlbW92ZSB1bnJlc29sdmVkIGV4dGVybmFsIHdoZW4KCWNvbXBpbGluZyBvbiBTb2xhcmlzL1N1bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBMVk1fSU5TRVJUQ09MVU1OVyBhbmQgTFZNX0lOU0VSVElURU1XIGJ5IHVzaW5nIHRoZSBhc2NpaQoJZXF1aXZhbGVudHMuIChXaW5Xb3JkIDk3LCBGaWxlIE9wZW4gZGlhbG9nKQoKCSogd2luZG93cy9jbGFzcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBpbiBHZXRDbGFzc0luZm9XIHRoZSBzYW1lIGhhY2sgZm9yIHN5c3RlbWNsYXNzZXMgYXMgaW4KCUdldENsYXNzSW5mb0EgKHdpbndvcmQgOTcgd2l0aCBuYXRpdmUgY29tY3RsMzIpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgU0hHREZJTF9GSU5EREFUQSBjb3JyZWN0bHkgaW4gU0hHZXREYXRhRnJvbUlETGlzdFcuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgd1BhcmFtIG9mIFdNX1BBSU5UIG1zZyBmb3IgZWRpdCBjb250cm9sLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBvZmYgYnkgb25lIGVycm9yIGluIFdJTlNQT09MX0dldE9wZW5lZFByaW50ZXJBLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXN1YmtleV9mb3VuZCBkaWQgbm90IHNlYXJjaCBmb3IgX2FsbF8gc3ViIGtleXMuCgpTYXQgQXVnIDIxIDE0OjQ3OjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBiYXNpYyBicm93c2luZyBpbiB0aGUgZmlsZSBuYW1lIGVkaXQgb2YgdGhlIGZpbGVkbGcgOTUuCgoJKiBjb250cm9scy9tZW51LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQXZvaWQgY2hhbmdpbmcgdGhlIGFjdGl2YXRpb24gc3RhdGUgaW4gRW5hYmxlTWVudUl0ZW0uCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEZpeGVkICNpZmRlZiBzeW1ib2wgZm9yIFBvd2VyUEMuCgoJKiBvbGUvcGFyc2VkdC5jLCBvbGUvcGFyc2VkdC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglPbmx5IGRlY2xhcmUgRGF0ZVN0eWxlIGluIGEgc2luZ2xlIGNvbXBpbGF0aW9uIHVuaXQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgdGhlIGNhc2Ugb2YgYSB1c2VyIGRlZmluZWQgaWNvbiBmb3IgdGhlIHN5c2J1dHRvbiBoaXR0ZXN0LgoKCSogb2xlL3R5cGVsaWIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIHR5cGVsaWIgcmVhZGluZyB0byBjb3JyZWN0bHkgdXNlIHRoZSBvZmZzZXQgb2YgdGhlIHR5cGVsaWIgdGhhdAoJaXMgZW1iZWRkZWQgaW4gZm9yIGV4YW1wbGUgYSBkbGwgZmlsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogS3Jpc3RpYW4gTmllbHNlbiA8a3Jpc3RpYW4ubmllbHNlbkByaXNvZS5kaz4KCUZpeGVkIENyZWF0ZURJQlNlY3Rpb24oKSBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBoZWlnaHQgdG8gc2V0IHRoZSBoZWlnaHQKCXBvc2l0aXZlIGluIHRoZSBjcmVhdGVkIERJQlNFQ1RJT04sIGFzIHBlciBNUyBrbm93bGVkZ2ViYXNlIFExODY1ODYuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJVGhlIHBhaW50IHJlY3RhbmdsZSByZXR1cm4gaW4gdGhlIFBBSU5UU1RSVUNUIGluIEJlZ2luUGFpbnQgc2hvdWxkCgluZXZlciBiZSBiaWdnZXIgdGhhbiB0aGUgY2xpZW50IGFyZWEgb2YgdGhlIHdpbmRvdy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ha2Ugc3VyZSB0aGF0IGFuIGVtcHR5IHN0cmluZyBuZXZlciBtYXRjaGVzIGEgbGlzdGJveCBlbnRyeSBpbgoJTElTVEJPWF9GaW5kU3RyaW5nKCkuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxpZ25tZW50IGZpeC4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIGFjY2Vzc2luZyBzeXNtZW51LgoKCSogZGVidWdnZXIvc3RhY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZWFsbHkgZG8gYSBzaWxlbnQgYmFja3RyYWNlIHdoZW4gcmVxdWVzdGVkLgoKCSogZGVidWdnZXIvaGFzaC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCURvIG5vdCBzZXQgdGhlIGFkZHJlc3MgaWYgdGhlIHN5bWJvbCBpcyBzdGlsbCB0YWdnZWQgSU5WQUxJRC4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTl9CSU5DTCBhbmQgTl9FSU5DTCBpbnN0cnVjdGlvbnMuCglGaXhlZCB0eXBlIHBhcnNpbmcgKGFzIGdlbmVyYXRlZCBieSBlZ2NzKS4KCldlZCBBdWcgMTggMTg6NDA6NTIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHR5cGVkZWYgdG8gd29yayBhcm91bmQgZWdjcyBwcm9ibGVtLgoKCSogb2xlLyouYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZXMgZnJvbSBvbGUgcmVsYXRlZCBmaWxlcy4KCgkqIG9sZS9jb21wb2JqLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBXT1cgY2hhbmdlcy4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93b3dudDMyLmgsIGxvYWRlci9tb2R1bGUuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3dvdzMyLnNwZWMsIHJlbGF5MzIvd293dGh1bmsuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIFdPVyByb3V0aW5lcyB0byBzaW5nbGUgZmlsZS4KCUFkZGVkIGFsbCBtaXNzaW5nIFdPVyByb3V0aW5lcywgZml4ZWQgV09XQ2FsbGJhY2sxNkV4LgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW50ZXJuYWwgYnVmZmVyIGZvciAxNiBiaXQgbW1pbyBNRU0gZmlsZXMuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gc29tZSBlcnJvcnMgaW4gY2xlYW5pbmcgdXAgdmFsdWVzIHJldHVybmVkIGJ5IE1DSSBkcml2ZXJzOiB0aGlzCgkgIHNob3VsZCBzb2x2ZSB0aGUgaXNzdWVzIHJlcG9ydGVkIHdpdGggdGhlIENEIHBsYXllci93cml0ZXIKCS0gY3Jhc2ggd2hlbiBjb21tYW5kIHdhcyByZXF1ZXN0ZWQgd2l0aCBhdXRvbWF0aWMgb3BlbiAobm90ZSwgdGhpcwoJICB3aWxsIG5vdyBncmFjZWZ1bGx5IHJlcG9ydCBhbiBlcnJvciwgbm90IGRvIHRoZSBjb3JyZWN0IHRoaW5nKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFBTSF9VU0VJQ09OSUQvUFNIX1VTRUhJQ09OIGFuZCB0aGUgUFNQX1VTRVRJVExFCglmbGFncy4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBFRmxhZ3Mgd2VyZSBwYXNzZWQgaW5jb3JyZWN0bHkgYnkgQ2FsbEZyb20xNlJlZ2lzdGVyLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlc3RvcmUgU1RBQ0sxNkZSQU1FIGZpZWxkcyBpbiBTd2l0Y2hTdGFja0JhY2sxNi4KCgkqIHRvb2xzL3dyYy93cmMuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvcGFyc2VyLnk6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJV3JjIGRpZCBub3QgY2hlY2sgYW55IElEcyB3aGljaCBhcmUgb25seSAxNiBiaXQuIENvbW1vbiBkaWFsb2dzIGhhZCBzb21lCglJRHMgbGFyZ2VyIGFuZCB0aGF0IGNhdXNlZCBwcm9ibGVtcy4gVGhpcyBpcyBub3cgc29sdmVkIChJIGhvcGUpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gQXVnIDE1IDE4OjUyOjMyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogU3RldmUgVGliYmV0dCA8c3RldmV0QGNvcmVsLmNvbT4KCUZpeGVkIGN1cnNvciBzdHJldGNoIGNvZGUuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUluaGliaXQgd3JhcGFyb3VuZCBpbiBjb21wYXJpc29uLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGxvYWRlci9sb2Fkb3JkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGludGVybmFsIGRsbCwgZXhwb3J0aW5nIGFscmVhZHkgZXhpc3RpbmcgcGF0aCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUVuc3VyZSB0aGF0IHRoZSBXTV9FTlRFUklETEUgbWVzc2FnZSBpcyBub3Qgc2VudCBpZiB0aGUgd2FrZS11cCBldmVudAoJZm9yIHRoZSBNU0dfSW50ZXJuYWxHZXRNZXNzYWdlKCkgY2FsbCBpcyBhIFdNX1RJTUVSLgoKCSogcmMvd2luZXJjLmMsIGluY2x1ZGUvcmVzb3VyY2UuaCwgaW5jbHVkZS93aW5kZWYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJR0NDIDMuMCBoYXMgbm90IGJlZW4gcmVsZWFzZWQgeWV0LCBidXQgaXQgaXMgZ29vZCB0byBiZSBwcmVwYXJlZC4KCgkqIG1pc2Mvc3B5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgcmVzb2x1dGlvbiBvZiBMVk0gbWVzc2FnZXMuCgoJKiBvYmplY3RzL2RpYi5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZGVkIHByb3RlY3Rpb24gYWdhaW5zdCBwb3NzaWJsZSBtZW1vcnkgY29ycnVwdGlvbi4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBTdGV2ZSBUaWJiZXR0IDxzdGV2ZXRAY29yZWwuY29tPgoJRml4ZWQgY3Vyc29yIHNlbGVjdGlvbiB0byBmaW5kIHRoZSBjb3JyZWN0IGN1cnNvciB3aGVuIG1vcmUgdGhhbiBvbmUKCWF2YWlsYWJsZS4KCgkqIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnNwZWMsIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJlcGxhY2VkIGEgc3RhdGljIHRlbiBlbGVtZW50IGFycmF5IHdpdGggYSBkeW5hbWljIHBvaW50ZXIgYXJyYXkuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggc3BlY2lhbCBjYXNlIHdoZW4gbm8gcHJpbnRlciBpbnN0YWxsZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWM6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglOZXcgcm91dGluZSBEbGxFbnRyeVBvaW50IGZvciBzaGVsbC5kbGwuICBMb2FkcyBzaGVsbDMyLmRsbCwKCXNpbmNlIG1vc3Qgc2hlbGwuZGxsIGZ1bmN0aW9ucyBjYWxsIHRoZWlyIDMyLWJpdCBjb3VudGVycGFydHMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYWxpZ25tZW50LgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJRU1fU0VUU0VMIHNjcm9sbHMgaWYgb3V0c2lkZSBvZiB0aGUgdmlzaWJsZSByYW5nZS4KCSJzaGlmdCtob21lIiBzZWxlY3Rpb24gaW1wcm92ZWQgaW4gdGhlIGVkaXQgY29udHJvbC4KCgkqIG9sZS9wYXJzZWR0LmM6IFJlbW92ZWQgUkNTIGtleXdvcmQuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHVzZSBvZiByYyBmaWxlcyBmb3Igc3RyaW5ncyBhbmQgbWVudXMsIGZpeGVzLiBGaXJzdCBpbnRlcm5hbAoJaWNvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBpbnRlcmZhY2U6IERyb3BTb3VyY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJldHRlciBEcm9wVGFyZ2V0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSEdldEZpbGVJbmZvIGJldHRlci4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUHJvdGVjdCBjYWNoZSB3aXRoIGNyaXRpY2FsIHNlY3Rpb24uCglSZW1vdmVkIGhhY2sgdG8gbG9hZCBpY29ucyBmcm9tIGV4dGVybmFsIHNoZWxsMzIuZGxsLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUXVlcnlHZXREYXRhLCBFbnVtRm9ybWF0RXRjIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBtYXBwaW5nIG9mIGZpbGUgZXh0ZW5zaW9ucyB0byB0ZXh0LgoKCSogbWlzYy9kZGVtbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGFzY2lpL3VuaWNvZGUgaXNzdWUgZm9yIG5hbWluZyBvZiB0aGUgbXV0ZXhlcy4KCU1hZGUgbXV0ZXggaGFuZGxlcyBnbG9iYWwuCglGaXhlZCBpbmNvcnJlY3QgaW50ZXJwcmV0YXRpb24gb2YgcmV0dXJuIHZhbHVlcyBvZiBXYWl0Rm9yU2luZ2xlT2JqZWN0LgoKCSogb2JqZWN0cy9mb250LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRmlyc3QgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2hhcmFjdGVyUGxhY2VtZW50QS4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV01fU0VUSUNPTiBhbmQgV01fR0VUSUNPTiBtZXNzYWdlcy4KCgkqIGZpbGVzL2RyaXZlLmM6IE1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCUZJWE1FIG9uIHVuaW1wbGVtZW50ZWQgZmVhdHVyZSBtYWRlIGxlc3Mgb2J0cnVzaXZlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJTm93IHRoZSBjb252ZXJzaW9uIGluIHRoZSBibHQgZnVuY3Rpb25zIHJvdW5kIHVwIHRoZSByZXN1bHQuCgoJKiB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRG9jdW1lbnQgdXNlIG9mICJpbml0IiBpbiBidWlsZC1zcGVjLnR4dCwgYW5kIG1ha2UgYnVpbGQuYyBwcmludCBhCgl3YXJuaW5nIGlmIHNvbWVvbmUgdHJpZXMgdG8gdXNlICJpbml0IiBpbiBhIFdpbjE2IHNwZWMgZmlsZS4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6IE1pY2hhZWwgS2FyY2hlciA8a2FyY2hlckBkcGsuYmVybGluLmZpZG8uZGU+CglNYWtlIHN1cmUgd2UgaGF2ZSBhIGRncm91cCBiZWZvcmUgcGF0Y2hpbmcgcHJvbG9ncy4KCgkqICovTWFrZWZpbGUuaW4sICovLmN2c2lnbm9yZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBnbHVlIGNvZGUgZ2VuZXJhdGlvbiBjaGFuZ2VzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCB3aW5kb3dzL3dpbnByb2MuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Nub29wLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXctc3R5bGUgV2luZSB0aHVua3MuCglSZW1vdmVkIHNvbWUgbm93IHVubmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzLgoKCSogaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGxUbzE2Li4uIC8gQ2FsbEZyb20xNi4uLiBXaW5lIHRodW5rcyByZW9yZ2FuaXplZDoKCS0gQ2xlYW5lciBzZXBhcmF0aW9uIGJldHdlZW4gY29yZSBhbmQgZ2x1ZSBjb2RlLgoJLSBBcmd1bWVudCBjb252ZXJzaW9uIGdsdWUgY29kZSBub3cgaW4gQy4KCS0gR2x1ZSBjb2RlIG5lZWRlZCBmb3IgMTYtYml0IC5zcGVjIGZpbGVzIGlubGluZWQuCgpTYXQgQXVnIDE0IDE1OjUzOjUwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW0uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBpbXBsZW1lbnRlZCBHZXRDb21tTW9kZW1TdGF0dXMKCS0gZml4ZWQgdGhlIERUUiwgQ1RTIGFuZCBDT01NQlJFQUsgcmVsYXRlZCBzdWJmdW5jdGlvbnMgb2YgRXNjYXBlQ29tbUZ1bmN0aW9uCgktIGFkZGVkIG1vcmUgdmVyYm9zZSBUUkFDRWluZwoKCSogbWlzYy92ZXJzaW9uLmM6IE1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCU1hZGUgR2V0VmVyc2lvbkV4KCkgYmVoYXZlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiB3aXRoCglyZWdhcmQgdG8gZXJyb3IgaGFuZGxpbmcuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJrIEcuIEFkYW1zIDxtYWRhbXNAbGl2ZXBhZ2UuY29tPgoJQWRkZWQgc3R1YiBmb3IgRHJhd0RpYkNsb3NlLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGxvb2sgb2YgdGhlIGNvbWJvYm94J3MgZHJvcCBkb3duIGJ1dHRvbiB3aGVuIGluIFdpbjk1IGxvb2suCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGljb25zIGluIHByb3BlcnR5IHNoZWV0IHRhYnMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3dyYy5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVZlcnNpb24gMS4wLjE0IG9mIHdyYy4KClN1biBBdWcgIDggMTg6NTY6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCB3aW4zMi90aW1lLmM6IEZpeGVkIFNldExvY2FsVGltZSBwcm90b3R5cGUuCgoJKiBvbGUvb2xlMm5scy5jLCB3aW4zMi9rZXJuZWwzMi5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGZpbGVzL2Rvc19mcy5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbG9hZGVyL2xpYnJlcy5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglSZXBsYWNlZCBhIGZldyBjYWxscyB0byBsc3RyKiBmdW5jdGlvbnMgYnkgdGhlaXIgQ1JURExMIG9yIGxpYmMKCWVxdWl2YWxlbnQuCgoJKiBtZW1vcnkvc3RyaW5nLmM6CglBZGRlZCBhbiBleGNlcHRpb24gaGFuZGxlciBhcm91bmQgYSBmZXcgbHN0ciogZnVuY3Rpb25zLgoKCSogZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvY3J0ZGxsLmg6CglSZWltcGxlbWVudGVkIG11bHRpLWJ5dGUgYW5kIHdpZGUtY2hhcnMgZnVuY3Rpb25zIHRvIG5vdCBkZXBlbmQgb24KCWxzdHIqIGZ1bmN0aW9uczsgYWRkZWQgYSBmZXcgbWlzc2luZyBvbmVzOyBmaXhlZCBhIGNvdXBsZSBvZiBidWdzLgoKU2F0IEF1ZyAgNyAxNDozMjozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9BdHRpYy93bmV0LmgsIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW51c2VyLmgsIG1pc2MvbmV0d29yay5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvQXR0aWMvbXByLnNwZWMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL2F1dGguYywgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXByL211bHRpbmV0LmMsIGRsbHMvbXByL25wcy5jLCBkbGxzL21wci9wd2NhY2hlLmMsIGRsbHMvbXByL3duZXQuYywgaW5jbHVkZS9uZXRzcGkuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2VwYXJhdGVkIFdpbjE2IChVU0VSKSBhbmQgV2luMzIgKE1QUikgbmV0d29yayByb3V0aW5lcy4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIE1QUiB0byBkbGxzL21wci8uCglBZGRlZCBwcm9wZXIgaGVhZGVycyBhbmQgc3R1YnMgZm9yIG1pc3NpbmcgTVBSIHJvdXRpbmVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wcm92ZWQgKHNvcnQgb2YpIFJlZ0ZsdXNoS2V5LgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSWYgdGhlIHdpbmRvdyBpcyBhbHJlYWR5IHRoZSB0b3Btb3N0IHdpbmRvdyBpbiBTaG93V2luZG93KFNXX1NIT1cpLCBpdAoJbXVzdCBub3QgYmUgYWN0aXZhdGVkLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglXTV9TWVNDT01NQU5EIG1lc3NhZ2UgKGZvciBTQ19DTE9TRSkgc2hvdWxkIGJlIHBvc3RlZCBub3Qgc2VudC4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglYMTFkcnYgU2V0RHJhd2FibGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIERDIG9yaWdpbiwgdGhpcyB0cmFuc2xhdGlvbgoJc2hvdWxkIGJlIHJlZmxlY3RlZCBmb3IgdGhlIGRjIGNsaXBwaW5nIHJlZ2lvbiBmb3IgQ1NfT1dOREMgYW5kIENTX0NMQVNTREMuCgoJKiB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RpYWxvZy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNldCBmb2N1cyB0byB0aGUgZGlhbG9nIGluIEVuZERpYWxvZy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU1ha2Ugc3VyZSB3ZSBjb21waWxlIHdpbmVzdHViLm8gYmVmb3JlIHRyeWluZyB0byBidWlsZCBhIFdpbmVsaWIgdGVzdAoJcHJvZ3JhbS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGNhc2Ugc2Vuc2l0aXZpdHkgZmxhZy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJSW1wbGVtZW50ZWQgdGhlIHJldHVybiBvZiBoRGV2TW9kZXMgYW5kIGhEZXZOYW1lcyBpbiB0aGUgUFJJTlRETEcKCXN0cnVjdHVyZSBvZiBQcmludERsZ0EoKS4KCgkqIHdpbmRvd3MvcXVldWUuYywgaW5jbHVkZS9xdWV1ZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgaGFyZHdhcmVfZXZlbnQgdXNlIHdpbjMyLWNvbmZvcm1hbnQgcGFyYW1ldGVycy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglFeHBsaWNpdGx5IGxvYWQgc2hlbGwzMi5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVRha2UgaW50byBhY2NvdW50IGljb25zIHdoZW4gZGV0ZXJtaW5pbmcgdGFiIHNpemUuCgoJKiBmaWxlcy9kcml2ZS5jOiBNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglJbXByb3ZlZCBHZXREaXNrRnJlZVNwYWNlRXgoKSBpbXBsZW1lbnRhdGlvbiBhIGxpdHRsZSBiaXQuCgoJKiBtaXNjL2NvbW0uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRlZCBzb21lIG1vcmUgQmF1ZHJhdGVzCgktIGZpeGVkIGEgaGFuZyBpbiB0Y3NldGF0dHIgd2hlbiB0aGUgaW5wdXQgYnVmZmVyIGlzbid0IGVtcHR5CgktIGFkZGVkIG1vcmUgdmVyYm9zaXR5IGZvciBkZWJ1Z2dpbmcKCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIGJ1dHRvbiBpcyByZWFsbHkgc21hbGwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVdTX0VYX0RMR01PREFMRlJBTUUgYWxvbmUgZG9lcyBub3QgbWVhbiB0aXRsZSBiYXIsIHlvdSBzdGlsbCBoYXZlIHRvCglzcGVjaWZ5IFdTX0NBUFRJT04uCgpXZWQgQXVnICA0IDE1OjA3OjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYywgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBEaXJlY3RJbnB1dCBKb3lzdGljayBzdXBwb3J0ICh0ZXN0ZWQgd2l0aCBXQzpQcm9waGVjeSkuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RpbWUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgU2V0TG9jYWxUaW1lLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogSXZhbiBEZSBTYWVkZWxlZXIgPEl2YW5kc0BzeW1wYXRpY28uY2E+CglNaW5vciBmaXggdG8gdGhlIEZyZW5jaCBDYW5hZGlhbiBrZXlib2FyZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2hlbiBmbGlwcGluZyBiYWNrYnVmZmVyIC0+IGZyb250YnVmZmVyLCBmaXJzdCBleGNoYW5nZSBzdXJmYWNlcywgdGhlbgoJY29weSBYSW1hZ2UsIHNpbmNlIHRoZSBwYWxldHRlIG1pZ2h0IG9ubHkgYmUgZGVmaW5lZCBpbiB0aGUgZnJvbnRidWZmZXIuCgoJKiB0b29scy93aW5laW5zdGFsbDogSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJQ3JlYXRlIHN5c2NvbmZkaXIgb24gaW5zdGFsbC4KCgkqIGRsbHMvc3RyZXNzLy5jdnNpZ25vcmU6IEZpeGVkIHR5cG8uCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGxvYWRlci9wZV9pbWFnZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUdvdCByaWQgb2YgZHNwcmludGYgYW5kIHJlbGF0ZWQgbWFjcm9zLgoKCSogc2VydmVyL211dGV4LmM6CglSZW1vdmUgdGhlIG11dGV4IGZyb20gdGhlIHRocmVhZCBsaXN0IHdoZW4gZGVzdHJveWluZyBpdC4KCgkqICovKjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgdmFyaW91cyBETExzIHRvIGRsbHMvCgpTdW4gQXVnICAxIDE0OjU4OjAyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2MvZXJyb3IuYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDMzLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zdGFjay5jOgoJUmVtb3ZlZCBJUF9yZWcsIFNQX3JlZyBhbmQgRkxfcmVnIGRlZmluaXRpb25zIHRvIGF2b2lkIHBvdGVudGlhbAoJYWxpYXNpbmcgb3B0aW1pemF0aW9uIHByb2JsZW1zLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9taXNjZW11LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9zaWduYWwuYzoKCVJlbW92ZWQgU0lHTkFMX01hc2tBc3luY0V2ZW50cyBhbmQgY2xlYW5lZCB1cCBzaWduYWwgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL0F0dGljL2FzeW5jLmgsIHdpbjMyL2NvbnNvbGUuYywgZmlsZXMvQXR0aWMvYXN5bmMuYywgZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL2ZpbGUuYzoKCVJlbW92ZWQgYXN5bmMgSS9PIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6CglVc2UgdGhlIHNlcnZpY2UgdGhyZWFkIGZvciBjb21tIG5vdGlmaWNhdGlvbnMuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBsb2FkZXIvdGFzay5jLCBtc2Rvcy9kcG1pLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgd2luMzIva2VybmVsMzIuYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJTWFkZSBzdGFjayBtYW5pcHVsYXRpb24gbWFjcm9zIGludG8gaW5saW5lIGZ1bmN0aW9ucy4KCUNoYW5nZWQgYSBmZXcgYWNjZXNzZXMgdG8gY29udGV4dCByZWdpc3RlcnMgdG8gYXZvaWQgcG90ZW50aWFsCglhbGlhc2luZyBvcHRpbWl6YXRpb24gcHJvYmxlbXMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1lbW9yeS9pbnN0ci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJQ2hhbmdlZCBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gdG8gdXNlIGEgQ09OVEVYVDg2IGluc3RlYWQgb2YgYQoJU0lHQ09OVEVYVC4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgd2luZS5jb25mLm1hbiBvbiBkaXN0Y2xlYW4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU2F0IEp1bCAzMSAxOTozNTo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglDbG9zZSB0aGUgcmlnaHQgd2luZG93IHdoZW4gY2xpY2tpbmcgb24gYSBub24gYWN0aXZlIHdpbmRvdyBjbG9zZQoJYnV0dG9uLgoKCSogTWFrZWZpbGUuaW46IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglSZW1vdmVkIHRoZSBkZXBlbmRlbmN5IG9uICJkdW1teSIgZm9yIHdpbmUgYW5kIHdpbmUuc3ltLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJUmVtb3ZlIGZpbGUgZnJvbSBjYWNoZSB3aGVuIGZsdXNoaW5nIGl0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IElhbgoJU2NobWlkdCkuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgQ09OVEVYVCBmb3IgQUxQSEEgYW5kIE1JUFMuCgoJKiBjb25maWd1cmUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN1cHBvcnQgZm9yIFNvbGFyaXMgTGludC4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgdG9vbHMvbWFrZV9kZWJ1Zywgd2luMzIvY29uc29sZS5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS94dGVybS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS94bWFsbG9jLmgsIG1pc2MveG1hbGxvYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgU29sYXJpcyBMaW50LgoKCSogaW5jbHVkZS9wc2hwYWNrNC5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgQy9DKysgY29tcGlsZSBmaXguCgoJKiBtc2Rvcy9kb3NtZW0uYywgb2xlL3N0b3JhZ2UzMi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglWYXJpb3VzIEFOU0kgQyBjb21wYWJpbGl0eSBmaXhlcy4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2MvbmV0d29yay5jLCBtaXNjL3N5c3RlbS5jLCBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvbGUvb2xlZm9udC5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaS1jaGVjay4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsbHkgY3JlYXRlIHRoZSBtYW4vIHN1YmRpcmVjdG9yaWVzIGJlZm9yZSBpbnN0YWxsaW5nLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjQ0NyAoV0lOMzJfT2xkWWllbGQxNikuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3VzcGVuZCBXTkQgbG9jayBiZWZvcmUgRVZFTlRfU3luY2hyb25pemUuCgoJKiB3aW4zMi9kZXZpY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDcmVhdGUgVnhEIGhhbmRsZSBvbmx5IGZvciBrbm93biBWeERzLgoKCSogTWFrZS5ydWxlcy5pbiwgcmVsYXkzMi9NYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIGNvbXBpbGF0aW9uIG9mICouc3BlYy5jIGZpbGVzIHVzZSAtZm5vLWJ1aWx0aW4gcmVnYXJkbGVzcyBvZgoJd2hlcmUgdGhleSBhcmUuCgoJKiBpbmNsdWRlL3RhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkL2FkZGVkIG1pc3Npbmcvd3JvbmcgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgbWFkZSBpbnRlcm5hbAoJZnVuY3Rpb25zIHN0YXRpYy4KCgkqIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYywgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc3NpbmcgcHJvdG90eXBlcyBhbmQgbWFkZSBpdCB3b3JrIHdpdGggU29sYXJpcyBYMTEuCgoJKiBkZWJ1Z2dlci9leHRlcm5hbC5jLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgb2xlL2FudGltb25pa2VyLmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9kYXRhY2FjaGUuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvb2xlZm9udC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRWxpbWluYXRlZCB3YXJuaW5ncy4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCB0aGUgRFNFRyB2YWx1ZSBpbiB0aGUgU0VHVEFCTEVFTlRSWSBzdHJ1Y3QuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgYnVpbHRpbiB0b29sYmFyIGJpdG1hcHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtb3JlIG1lc3NhZ2VzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRTZXRLZXlQYXJhbXMoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWJzIGZvciBEQURfU2V0RHJhZ0ltYWdlKCkgYW5kIFBhdGhDbGVhbnVwU3BlYygpLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBfZXhjZXB0X2hhbmRsZXIyKCkuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgR2V0UmFuZG9tUmVnaW9uKCkuCgoJKiBjb250cm9scy9tZW51LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHN5c3RlbSBidXR0b24gYmVoYXZpb3IgYW5kIGFzc29jaWF0ZWQgaXQgdG8gdGhlIHN5c3RlbQoJbWVudSBpbiB3aW45NS4gQWxzbyBwZXJtaXQgdGhlIFNDX0NMT1NFIGl0ZW0gdG8gYmUgZGlzYWJsZWQuCgoJKiBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglCdWdmaXhlcyBhbmQgYSBmYWtlIEdFVEJBU0VJUlEuCgoJKiBmaWxlcy9hc3luYy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgYXN5bmMgZmRzIG5vbmJsb2NraW5nLgoKCSogd2luZG93cy9tZGkuYzogRGFuIExhbmdsb2lzIDxkYW5pZWxsQGNvcmVsLmNvbT4KCVJlbW92ZWQgYW4gaW5hcHByb3ByaWF0ZSBpZiBzdGF0ZW1lbnQgZnJvbSBNRElfQ2hpbGRBY3RpdmF0ZSB0aGF0CglwcmV2ZW50ZWQgdGhlIGFjdGl2YXRpb24gY29kZSBmcm9tIGV4ZWN1dGluZy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUJ1Z2ZpeGVzICYgZnVydGhlciB1cGRhdGVzIGZvciB0aGUgbW9udGggY2FsZW5kYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIGRhdGUvdGltZSBjb21tb24gY29udHJvbC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQU0RSVl9Xcml0ZUFyYyBzaG91bGRuJ3Qgd3JpdGUgYSBuZXdwYXRoLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggaGFuZGxpbmcgb2YgV01fTEJVVFRPTkRDTElDSyBtZXNzYWdlIGZvciBidXR0b25zIHdpdGggY2VydGFpbgoJc3R5bGVzLgoKCSogd2luZG93cy9kY2UuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4IGZvciB1cGRhdGluZyB0aGUgY2xpcHBpbmcgcmVnaW9uIGluIG5lc3RlZCBHZXREQ0V4IGNhbGxzLgoKCSogd2luZG93cy93aW5wb3MuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglUcmllZCB0byBmaXggdGhlIGNvZGUgZm9yIFNldFdpbmRvd1BvcyB0byBlcmFzZSB0aGUgYmFja2dyb3VuZAoJcHJvcGVybHkuCgpGcmkgSnVsIDMwIDE4OjEwOjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CgktIGFkZGVkIENvbGxhdGUvTm9Db2xsYXRlIEljb25zIHRvIFByaW50MzIgZGlhbG9nICh1bmZvcnR1bmF0ZWx5IHRoZXkKCSAgZG9uJ3QgZGlzcGxheSB5ZXQpLgoJLSBhZGRlZCBzdGF0dXMgc3RyaW5ncy4KCS0gYWRkZWQgc3RyaW5nIHRhYmxlIGZvciBpbnRlcm5hdGlvbmFsaXNhdGlvbiBvZiBzZXZlcmFsIGludGVybmFsCgkgIG1lc3NhZ2UgYm94ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2ludXNlci5oOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCVJlbW92ZWQgZHVwbGljYXRlZCBkZWZpbmVzIGluIHdpbnVzZXIuaCBhbmQgY29tbWN0cmwuaC4gQWxzbyBjb3JyZWN0ZWQKCWEgdHlwbyBmb3IgU1dfTUFYIHZhbHVlLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBmaWxlIGRpYWxvZy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RyaXAgLmRydiBleHRlbnNpb25zIHRvIE1PRFVMRV9HZXRMb2FkT3JkZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBJbnN0YWxsIHRhc2stZW50cnkgYnJlYWtwb2ludCAqYWZ0ZXIqIEVYRSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQuCgoJKiBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjYWxsIHRvIHRoZSBuZXdwYXRoIG9wZXJhdG9yIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgYXJjCglvcGVyYXRvci4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlbiB0aGUgc3R5bGUgaXMgQlNfQklUTUFQIG9yIEJTX0lDT046IHRoZSBiaXRtYXAgb3IKCWljb24gbmVlZGVkIHRvIGJlIGNlbnRlcmVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBzbWFsbGVyIHRoYW4gdGhlIGJpdG1hcC4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgdGhhdCBvY2N1cnMgd2hlbiB3ZSBtYXhpbWl6ZS9taW5pbWl6ZSBhbiBNREkKCWNoaWxkLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgbW9yZSBzdXBwb3J0IGZvciBidWRkeSB3aW5kb3dzIGluIHRoZSB1cGRvd24gY29udHJvbC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgcHJvcGVyIHdpbjk1IHN1cHBvcnQgZm9yIHRoZSBXU19CT1JERVIgc3R5bGUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIFdTX0JPUkRFUiBzdHlsZSB0byBhIFdTX0VYX0NMSUVOVEVER0Ugc3R5bGUgZm9yIHRoZQoJbGlzdGJveCBjb250cm9sLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGJvcmRlciBmb3IgdGhlIGxpc3Rib3ggY3JlYXRlZCBieSB0aGUgc2ltcGxlIGNvbWJvYm94LgoKCSogb2xlL2NvbXBvYmouYywgaWYxNjMyL2NvbXBvYmouc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIENvUmV2b2tlQ2xhc3NPYmplY3Qgc3R1YiBuZWVkZWQgYnkgQWNyb2JhdCAzIDE2IGJpdC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2V0TW9kdWxlSGFuZGxlMTY6IHRyZWF0IFdpbjMyIG1vZHVsZXMgY29ycmVjdGx5LgoKV2VkIEp1bCAyOCAxNjozODo0NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB1c2Ugb2YgU3RyUmV0VG9TdHJOLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0clJldFRvU3RyTltBfFd8QVddIG5ldyBpbmRlcGVuZGVudCB1bmljb2RlL2FzY2lpL2V4cG9ydCBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RsbHM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgZXhwbGFuYXRpb24gb2YgdGhlIGN1cnJlbnQgRExMIHN1cHBvcnQuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBmaXhlZCBmcmVzaGx5IGludHJvZHVjZWQgYnVnIGluIEdsb2JhbExvY2sxNi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBJbml0TVVJTGFuZ3VhZ2UgYW5kIENPTUNUTDMyLjQxMC4KCUZpeGVkIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgpUdWUgSnVsIDI3IDE3OjEwOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL3VzZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgRmluYWxVc2VySW5pdDE2L0ZpbmFsR2RpSW5pdDE2IHN0dWJzLgoJQ2FsbCBvdXQgdG8gRmluYWxVc2VySW5pdCBpbiBNQUlOX0VtdWxhdG9yUnVuLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtZW1vcnkvc2VsZWN0b3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgSXNCYWRGbGF0UmVhZFdyaXRlUHRyMTYoKS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbmNvcnJlY3QgZWRpdCBjb250cm9sIGJlaGF2aW91ciBpbiBtb3VzZSBtZXNzYWdlIGhhbmRsaW5nLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU2VuZCBub3JtYWwgbW91c2UgbWVzc2FnZXMgdG8gV01fU0VUQ1VSU09SIHdoZW4gbm9uLWNsaWVudCBtb3VzZQoJbWVzc2FnZXMgb2NjdXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGlmIHRoZSB3aW5kb3cgaGFzIHRoZSBXU19DTElQU0lCTElOR1Mgc3R5bGUgYmVmb3JlIHVzaW5nIHRoZQoJRENYX0NMSVBTSUJMSU5HUyBmbGFnLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZGxncy5oLCBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV2luOTUgZmlsZSBvcGVuL3NhdmUgZGlhbG9ncy4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIHRvb2xzLyBiZWZvcmUgYW55IG9mIHRoZSBvdGhlciBzdWJkaXJlY3RvcmllcywgZXZlbiB3aGVuIGRvaW5nCglwYXJhbGxlbCBtYWtlcy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFJldHVybiBzZWxlY3RvciBhbHNvIGluIENYIGZyb20gR2xvYmFsTG9jazE2KCkuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3JlIGdjYyBidWcgd29ya2Fyb3VuZHMuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIG1vcmUgcGFwZXIgc2l6ZXMgYW5kIGJpbiBuYW1lcyB0byBQUEQgcGFyc2VyLgoKCSogd2luZG93cy9kaW5wdXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWxseSByZXR1cm4gdGhlIG51bWJlciBvZiBldmVudHMgaW4gTW91c2VfR2V0RGV2aWNlRGF0YSAoZml4ZXMKCVdpbmcgQ29tbWFuZGVyIFByb3BoZWN5KS4gQWRkZWQgdGltZXN0YW1wIGFuZCBzZXF1ZW5jZSBnZW5lcmF0aW9uLAoJY3JpdGljYWwgc2VjdGlvbiBmb3IgbW91c2VkYXRhLiBEaXNhYmxlZCBtb3VzZSB3YXJwaW5nIGluCglHZXREZXZpY2VEYXRhIGZvciBub3cgKGdlbmVyYXRlcyBleGNlc3MgbW91c2UgZXZlbnRzKS4KClN1biBKdWwgMjUgMTM6MTU6NDkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKi5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCAuc3BlYyBmaWxlcyB0byBjb3JyZXNwb25kaW5nIGRsbHMvIGRpcmVjdG9yeS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXZlcmFsIGZvY3VzIGFuZCBzZWxlY3Rpb24gcHJvYmxlbXMgaW4gbGlzdGJveGVzLgoKCSogd2luZG93cy9kY2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmV0cmlldmUgdGhlIGNsaXBwaW5nIHJlZ2lvbiBiZWZvcmUgc2V0dGluZyB0aGUgZHJhd2FibGUgYW5kIHJlc2V0IHRoZQoJY2xpcHBpbmcgcmVnaW9uIGFmdGVyLgoKCSogcmVsYXkzMi9BdHRpYy9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgZml4ZXMvcmVpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlbW92ZWQgZXhwZXJpbWVudGFsL3VudXNlZCBjb2RlLgoJVXNlIFNoZWxsRm9sZGVyIHRvIGdldCBWaWV3T2JqZWN0cy4KCVN0YXJ0ZWQgY2xlYW51cCBvZiB0aGUgY29udGV4dG1lbnUgY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29tcGxldGUgcmVkZXNpZ24sIHNwbGl0IGludG8gMyBpbXBsZW1lbnRhdGlvbnMgKERlc2t0b3AsIE15Q29tcHV0ZXIKCWFuZCBmaWxlc3lzdGVtIGZvbGRlcnMpLiBBbGwgcGFyc2luZyBhbmQgYmluZGluZyBpcyBkb25lIHJlY3Vyc2l2ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hDcmVhdGVTaGVsbEZvbGRlclZpZXdFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZW1vdmVkIHNwZWNpYWwgQ29DcmVhdGVDbGFzc09iamVjdCBhbmQgdXNlIG9sZSBmdW5jdGlvbnMgaW5zdGVhZC4KCVNIQ3JlYXRlRGVmQ2xhc3NPYmplY3QgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGFjY2VzcyB0byBsbmsncyB0byBhIElTdHJlYW0gaW50ZXJmYWNlLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBpY29uIGJhY2tncm91bmQgKHdhcyBibGFjaykuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGdldHRpbmcgaWNvbnMgZnJvbSBmaWxldHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBlbnVtZXJhdGlvbiBvZiBzaGVsbCBleHRlbnNpb25zLCBzZXBlcmF0ZWQgZW51bSBzdHVmZiBmb3IKCXRoZSAzIHNlcGVyYXRlIHNoZWxsZm9sZGVyIGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJld3JvdGUgR2V0RGF0YSBzbyBzdXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU2VwYXJhdGVkIHN0dWZmIGZvciBzaHYgYmFja2dyb3VuZCBjb250ZXh0bWVudSB0byBzZXBhcmF0ZSBmaWxlLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb25zIHRvIGFjY2VzcyBhdHRyaWJ1dGVzIGluIEhDUi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZS4gU2VwZXJhdGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoZWxsdmlldyBiYWNrZ3JvdW5kCgljb250ZXh0bWVudS4KCgkqIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLiBDb250YWlucyBmdW5jdGlvbnMgbm90IGluIHRoZSBvZmZpY2lhbCBoZWFkZXJzIGJ1dCB3aWRlbHkKCXVzZWQgZnJvbSBvdGhlciBkbGxzLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgWDExT0JKUyBhbmQgTElCT0JKUyB0byB3aW5lIGRlcGVuZGVuY2llcyAod2UgY2FuJ3QgYWRkIEFMVF9MSU5LKS4KCgkqIE1ha2VmaWxlLmluOiBNYWtlIHN1cmUgd2UgYnVpbGQgdG9vbHMgZmlyc3QuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvd3Byb2NzLnNwZWMsIG1lbW9yeS9nbG9iYWwuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGF5IGNvZGUgZm9yIFdpbjE2IHJlZ2lzdGVyIGZ1bmN0aW9ucyBjb252ZXJ0cyBhcmd1bWVudHMuCglOZXcgJ2ludGVycnVwdCcga2V5d29yZCBhZGRlZCAoZm9yIFdpbjE2IGludGVycnVwdCBoYW5kbGVycykuCglBZGFwdGVkIC5zcGVjIGZpbGVzIGFuZCBpbXBsZW1lbnRhdGlvbnMgb2YgcmVnaXN0ZXIgcm91dGluZXMuCgoJKiBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBtaXNjL3ByaW50ZHJ2LmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGlmMTYzMi9nZGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCXtTdGFydHxFbmR9e0RvY3xQYWdlfSBnbyB0aHJvdWdoIERDZnVuY3MuCglJbXBsZW1lbnQgdGhlc2UgaW4gdGhlIFBvc3RTY3JpcHQgZHJpdmVyLgoJQ2hhbmdlIFBTRFJWX0VzY2FwZSB0byB1c2UgdGhlbS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV29yayBhcm91bmQgJ2xvY2FsIGV4dGVybiBkZWNsYXJhdGlvbiB3aXRoIGF0dHJpYnV0ZScgZ2NjIGJ1Zy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRhdGlvbiBvZiBTZXRFdmVudE5vdGlmaWNhdGlvbiBmb3IgdGhlIG1vdXNlIGRyaXZlci4KCgkqIG9sZS9jb21wb2JqLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTGV0IENvQ3JlYXRlSW5zdGFuY2UgdXNlIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSFBBVEguCgoJKiBpbmNsdWRlL29sZTIuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBpbmNvbXBsZXRlIHByb3RvLgoKCSogd2luZWRlZmF1bHQucmVnOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBrZXlzIG5lc3Nlc2FyeSBmb3IgcnVubmluZyB0aGUgbmV3IHNoZWxsMzIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVXNlIEdESSBBUElzIHRvIGFjY2VzcyBiaXRtYXAgaW5mby4KCgkqIGdyYXBoaWNzL3BzZHJ2L2NsaXBwaW5nLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZXdyb3RlIFBTRFJWX1NldERldmljZUNsaXBwaW5nIHRvIHVzZSBHZXRSZWdpb25EYXRhIEFQSS4KClNhdCBKdWwgMjQgMTI6MjA6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2NlbXUvbWFpbi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvQXR0aWMvY2FsbGJhY2suYywgbWlzYy9NYWtlZmlsZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVW5pZnkgc3RhcnR1cCBzZXF1ZW5jZSBmb3IgV2luZSBhbmQgV2luZUxpYi4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIG1lbW9yeS9nbG9iYWwuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4IGJ1ZyB3aXRoIHBhc3RpbmcgV2luZSBjbGlwYm9hcmQgY29udGVudCB0byBleHRlcm5hbCBhcHBsaWNhdGlvbnMsCglieSBzdG9yaW5nIGNsaXBib2FyZCBkYXRhIG9uIHRoZSBzaGFyZWQgc3lzdGVtIGhlYXAuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBBY2hpbSBLYWlzZXIgPEFjaGltX0thaXNlckB0LW9ubGluZS5kZT4KCURyYXcgYW4gYWRkaXRpb25hbCB3aGl0ZSBiaXQgZm9yIGVhY2ggaW52ZXJ0IGJpdCBvZiBhIGN1cnNvci4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJV2hpbGUgaGFuZGxpbmcgdGhlIFggRm9jdXNJbiBtZXNzYWdlIGluIG1hbmFnZWQgbW9kZSwgaWYgdGhlIHdpbmRvdwoJaGFzIGJlZW4gZGlzYWJsZWQgcmV2ZXJ0IHRoZSBYIGZvY3VzIGJhY2sgdG8gdGhlIGxhc3QgZm9jdXMgd2luZG93LgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgVFJFRVZJRVdfSW5zZXJ0SXRlbVcuCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgRXh0RXNjYXBlLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ5aW5nIHRvIGZpeCBwYXJhbGxlbCBtYWtlIGJ5IGRvaW5nIGRpcmVjdCBzdWJkaXIvc3ViZGlyLm8gcnVsZXMuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGluY29uc2lzdGVuY3kgaW4gY29uZGl0aW9ucyB0aGF0IGRldGVybWluZXMgaWYgYSB3aW5kb3cgcmVxdWlyZXMKCWEgV00gYm9yZGVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRm9yIGxhcmdlIGZvbnQgc2l6ZXMgY2FsbCBYTG9hZFF1ZXJ5Rm9udCB3aXRoIGEgMTAwIHBpeGVsIGhpZ2ggZm9udAoJYW5kIHJlc2NhbGUgdGhlIG1ldHJpY3MuCgoJKiBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZGMuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBoYW5kbGluZyBvZiAzMiBiaXQgQWJvcnRQcm9jLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5udC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHByZXNzZWQgY29tcGlsZXIgd2FybmluZyBieSB1c2luZyB0aGUgJ3VudXNlZCcgYXR0cmlidXRlLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2V4dGVybmFsLmM6CglLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJQWRkZWQgdXRpbGl0eSBmdW5jdGlvbiB0byBpbnZva2UgZXh0ZXJuYWwgZGVidWdnZXIuCgoJKiBtdWx0aW1lZGlhLy5jdnNpZ25vcmUsIG11bHRpbWVkaWEvd2lubW0ucmMsIG11bHRpbWVkaWEvd2lubW1fRW4ucmMsIG11bHRpbWVkaWEvd2lubW1fRnIucmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFdJTk1NIHJlc291cmNlcy4KCgkqIG11bHRpbWVkaWEvQXR0aWMvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgb2Jzb2xldGVkIG1jaXN0cmluZy5jLgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVzb3VyY2VzLgoKCSogbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuIHZhbHVlcyBmb3Igc29tZSBtZXNzYWdlcyBpbiBEcml2ZXJQcm9jIChNQ0lfR0VUREVWQ0FQUyAmCglNQ0lfU1RBVFVTKSBmb3IgbWNpU2VuZFN0cmluZy4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNwcmVhZCB0aGUgdXNlIG9mIE1NIGNyaXQgc2VjdC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBzb21lIE1DSSBmdW5jdGlvbnMgdG8gbWNpLmMuCglOb3cgbG9hZHMgZXJyb3IgbWVzc2FnZXMgZnJvbSBzdHJpbmcgdGFibGUuCglTcHJlYWQgdGhlIHVzZSBvZiBNTSBjcml0IHNlY3QuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHBhcnNpbmcgJiBzdG9yaW5nIG9mIGNvbW1hbmQgdGFibGVzLgoJTWVyZ2VkIHNvbWUgTUNJIGZ1bmN0aW9ucyBmcm9tIG1tc3lzdGVtLmMuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgcHJvdG90eXBlcy4KCUFkZGVkIGNvbW1hbmQgdGFibGVzIHRvIE1DSSBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnZ3kgcHJvdG90eXBlLgoKCSogZGVidWdnZXIvdHlwZXMuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUF2b2lkIGNyYXNoaW5nIG9uIGEgYmFkIHN5bWJvbCBhZGRyZXNzIG9mIDB4MDAwMC4KCgkqIG1pc2MvdzMyc3lzLmM6IEZpeGVkIEdldFczMlN5c1ZlcnNpb24xNiByZXR1cm4gdHlwZS4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIHJlbGF5MzIvdXR0aHVuay5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGlmMTYzMi93cHJvY3Muc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBNT0RVTEVfR2V0V25kUHJvY0VudHJ5MTYoKS4KCVVzZSAzMi1iaXQgd2luZG93IHByb2NlZHVyZXMgaW4gQ09NTURMRyBpbnN0ZWFkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3V0JnBhc3RlIGJ1Zy4KCgkqIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkIGEgZmV3IHN0dWJzLCBzb21lIEMrKyBjb21wYXRpYmlsaXR5LCBhbmQgZml4IGEgZmV3IHR5cGVzLgoKCSogaW5jbHVkZS9pbml0Z3VpZC5oLCBvbGUvZ3VpZC5jOiBBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglEZWNsYXJlIG9ubHkgb25lIGluc3RhbmNlIG9mIEdVSURfTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHZhcmlvdXMgcHJvYmxlbSB3aXRoIEltYWdlTGlzdF9EcmF3LgoKCSogd2luZG93cy9kaWFsb2cuYzogU3RlcGhhbmUgTHVzc2llcjxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVJlLWVuYWJsZSB0aGUgb3duZXIgd2luZG93IGluIHRoZSBFbmREaWFsb2coKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgbm90aWZpY2F0aW9ucy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsd2F5cyByZXRyaWV2ZSBDYWxsb3V0IHJvdXRpbmVzIHVzaW5nIEdldFByb2NBZGRyZXNzKCkuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNlbmQgV01fQ09OVEVYVE1FTlUgb24gV01fUkJVVFRPTlVQLCBub3QgV01fUkJVVFRPTkRPV04uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglMZXQgdGhyb3VnaCBtb3JlIGZsYWdzIHRvIEVudW1QcmludGVycy4KCUZpeGVzIGZvciBHZXRQcmludGVyL0dldFByaW50ZXJEcml2ZXIuCgoJKiBncmFwaGljcy9wc2Rydi9jb2xvci5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggc3R1cGlkIGBydWJiaXNoIGF0IGVuZCBvZiAlJVRpdGxlJyBidWcuCglEb24ndCBjb21wbGFpbiBhYm91dCBwYWxldHRlIHJlbGF0aXZlIFJHQnMuCglJZiBvdXRwdXQgcGFyYW0gdG8gQ3JlYXRlREMgaXMgTlVMTCBkZWZhdWx0IHRvIGBMUFQxOicgLSBIYWNrLgoKRnJpIEp1bCAyMyAxOTozMzoyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBkZXRlY3Rpb24gb2YgT3BlbkdMLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgbWlzYy9BdHRpYy9jYWxsYmFjay5jLCB0b29scy9idWlsZC5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBSZXZlcnRlZCBDYWxsVG8xNiByb3V0aW5lcyB0byBTVERDQUxMIGNvbnZlbnRpb24uCgoJKiBvYmplY3RzL2ZvbnQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RyaW5nIHRvIEdldFRleHRFeHRlbnRQb2ludCBpcyBub3QgbmVjZXNzYXJpbHkgMCB0ZXJtaW5hdGVkLgoJRml4IGZ1bmN0aW9uIG5hbWUgYDMyJ3MgaW4gY29tbWVudHMgLSBBUEkgbmFtaW5nIG1hZG5lc3MgbWFrZXMgdGhpcwoJd29ydGh3aGlsZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLCBpbmNsdWRlL3dpbnNwb29sLmgsIHJlbGF5MzIvQXR0aWMvd2luc3Bvb2wuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUVudW1Kb2JzIHN0dWIuCglVcGRhdGUgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLgoJQWRkIHdhcm5pbmdzIHRvIERSSVZFUl9HZXREcml2ZXJOYW1lLgoKCSogd2luZG93cy9tZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJhZCBwdHIgb2NjdXJyZW5jZSBpbiB0aGlzIGNsYXNzIFduZFByb2MuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIEFkZGVkIGEgbmV3IG9wdGlvbiAnbm94c2htJwoJLSBBZGRlZCBhIDE2YnBwIC0+IDMyIGJwcCBjb252ZXJzaW9uIGZ1bmN0aW9uCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlIGNvbG9yIGdyYXkgdGV4dCB0byAxMjggMTI4IDEyOCBmb3Igd2luOXggbG9vay4KClR1ZSBKdWwgMjAgMTU6MTM6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJRG8gbm90IG91dHB1dCB0ZXh0IGluIE91dHB1dERlYnVnU3RyQVcgd2hlbiBub3QgYmVpbmcgZGVidWdnZWQKCgkqIHdpbmRvd3MvbWRpLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTURJRGVzdHJveUNoaWxkOiBNREkgd2luZG93IG1lbnUgaXRlbSB3YXMgZGVsZXRlZCBvbmx5IGlmIHRoZSBjdXJyZW50CglkZXN0cm95ZWQgY2hpbGQgd2FzIGFjdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVzZXQgZGlzYWJsZWQgc3R5bGUgZm9yIHRoZSBkaWFsb2cgYm94ZXMgc2V0IG9uIHByb3BlcnR5IHBhZ2VzLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gR2VuZXJhbGl6ZWQgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gMiBhbmQgNCBieXRlIGludGVnZXJzIHNsaWdodGx5IHRocm91Z2gKCSAgYSBuZXcgcGFyc2VyIHN0YXRlLiBUaGUgaXMgbm93IGEgd2FybmluZyB3aGVuIGEgMiBieXRlIGludGVnZXIgaXMgbGFyZ2VyCgkgIHRoYW4gMTYgYml0IChhbmQgaXMgdHJ1bmNhdGVkKS4KCS0gRml4ZWQgYSBjb3VwbGUgb2YgY29zbWV0aWMgdGhpbmdzIGluIHRoZSBETEdJTklUIHN0dWZmIHNvIHRoYXQgZHVtcGluZyBvZgoJICB0aGlzIHR5cGUgd2lsbCB3b3JrIGFzIGV4cGVjdGVkLgoJLSBBZGRlZCBnZW5lcmFsaXplZCBsYW5ndWFnZS92ZXJzaW9uL2NoYXJhY3RlcmlzdGljcyBzdXBwb3J0IHRvIHRoZSBETEdJTklUCgkgIHJlc291cmNlIHR5cGUuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBETEdJTklUIHJlc291cmNlLXR5cGUuCgktIEFkZGVkIHN0cmluZyBjb250aW51YXRpb24gYW5kIGVtYmVkZGVkIHF1b3RpbmcuCgktIEFkZGVkIG51bWVyaWMgSURzIGZvciBpY29ucyBpbiBjb250cm9scy4KCglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gQnVnZml4OiBEaXN0aW5ndWlzaCBiZXR3ZWVuIDIgYW5kIDQgYnl0ZSBpbnRlZ2VycyBpbiBSQ0RBVEEuCgpTdW4gSnVsIDE4IDE4OjQyOjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL0F0dGljL3N0cmluZy5jLCBtaXNjL01ha2VmaWxlLmluOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJUmVtb3ZlIHN0cmluZy5jIGJlY2F1c2UgYWxsIG9mIGl0cyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCB0byBjcnRkbGwuYwoJd2hlcmUgdGhleSBiZWxvbmdlZC4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3ByZXByb2MuYywgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCBHTlUgQydzIC1JLSBvcHRpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV29yayBhcm91bmQgZ2NjIHNpZzExIGZhdWx0LgoKCSogb2JqZWN0cy9nZGlvYmouYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCByb3VuZGluZyBpbiBNdWxEaXYuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBTZXREZXZpY2VDbGlwcGluZwoJLSBjb29yZGluYXRlIHN5c3RlbSBvcmlnaW4gZml4CgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdvcmstYXJvdW5kIGZvciBjb21waWxlciBidWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gSW1wbGVtZW50YXRpb24gb2Ygc2ltcGxlIGNvbWN0bDMyIHY1LjAgY2hhbmdlcy4KCS0gVFZNX1NPUlRDSElMRFJFTkNCIGFsc28gYWNjZXB0cyBUVklfUk9PVCBhcyBhIHZhbGlkIGhQYXJlbnQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHBvaW50ZXIgdmFsaWRhdGlvbiBhbmQgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2sgdG8gSXNWYWxpZFNpZCgpLgoKCSogY29udHJvbHMvdWl0b29scy5jOiBEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJU21hbGwgZml4IGluIFVJVE9PTFM5NV9EcmF3UmVjdEVkZ2UoKS4KCUFsc28gYSBmaXggdG8gZHJhdyBzY3JvbGxiYXItYnV0dG9ucyBtb3JlIGxpa2UgaW4gd2luOXguCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gV0lOX1VwZGF0ZU5DUmduLCBkbyBub3Qgc2VuZCBpbiBXTV9OQ1BBSU5UIGEgcmVnaW9uIHRoYXQgaXMgdXNlZAoJYWZ0ZXJ3YXJkcywgYnV0IGEgY29weSBvZiBpdC4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgYmV0dGVyIHRoYXQgaGFuZGxlcyBhcmUgYWN0dWFsIGhhbmRsZXMgdG8gYSByZWdpb24uCgoJKiB3aW5kb3dzL2RjZS5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglTdG9wIERDRV9HZXRWaXNSZWN0IGRlcmVmZXJlbmNpbmcgYSBudWxsIHduZFB0ci4KCgkqIGNvbmZpZ3VyZS5pbiwgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIE1ha2UucnVsZXMuaW4sIFJFQURNRSwgY29uZmlndXJlOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJVXBkYXRlZCBSRUFETUUgYW5kIG1hbiBwYWdlLgoJU3BsaXQgZG9jdW1lbnRhdGlvbiBmb3Igd2luZS5jb25mIGludG8gbmV3IHdpbmUuY29uZig1KSBtYW5wYWdlLgoKCSogaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvY2xpcGJvYXJkLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL29sZWNsaS5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT0xFIENsaXBib2FyZCBBUEkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVZhbGlkYXRlIHRoZSBwYXJlbnQgd2l0aCB0aGUgY2hpbGQgd2luZG93IGNsaWVudCByZWN0YW5nbGUgd2hlbiB0aGUKCXBhcmVudCdzIHVwZGF0ZSByZWdpb24gaXMgbm90IGVtcHR5LgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9wYWludGluZy5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRGVsYXkgV01fTkNQQUlOVCBtZXNzYWdlIHVudGlsIHRoZSAicGFpbnRlcidzIGFsZ29yaXRobSIga2lja3MgaW4uCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBmYWtlIFdNX0xCVVRUT05VUCBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciBXaW45OC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCU1hY3JvIGRlZmluaXRpb25zIHVzZWQgU05ETVNHIGluc3RlYWQgb2YgU2VuZE1lc3NhZ2VbQVddLiBCYWQuCgoJKiBtaXNjL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglkZWJ1Z18oc25vb3B8cmVsYXkpXyhleGNsdWRlfGluY2x1ZGUpbGlzdCA9PiBmaXhlZCBhbGxvY2F0aW9uLCBtb2R1bGVzCglhcmUgbm93IHN0b3JlZCB1cHBlcmNhc2UuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIEJTX0lDT04gc3R5bGUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNyZWF0ZURpYWxvZ1BhcmFtQSBzaG91bGQgbm90IGNhbGwgQ3JlYXRlRGlhbG9nUGFyYW1XLCBiZWNhdXNlCgl0aGF0J2QgY3JlYXRlIGEgZGlhbG9nIGJveCB3aXRoIGEgVW5pY29kZSBkaWFsb2cgcHJvY2VkdXJlLi4uCgoJKiBjb250cm9scy9zY3JvbGwuYzogRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVdpbjl4IGxvb2sgJiBmZWVsIG9uIHNjcm9sbGJhcnMuCgoJKiBncmFwaGljcy9wc2Rydi9SRUFETUUsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgaW5jbHVkZS9wc2Rydi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbnRyb2R1Y2VkIGEgW3BzZHJ2XSBzZWN0aW9uIGluIHdpbmUuY29uZiB3aXRoIGEgcHBkZmlsZSB2YWx1ZQoJc3BlY2lmeWluZyB0aGUgcGF0aCBhbmQgbmFtZSBvZiB0aGUgUFBEIGZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL3VwZG93bi5oOgoJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIHVwZG93biBidWRkeSB3aW5kcHJvYyBzdWJjbGFzc2luZyBmb3IgdGhlCgloYW5kbGluZyBvZiBrZXlib2FyZCB1cCBhbmQgZG93biBhcnJvdy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHJlbmFtZWQgaGVhZGVyLgoKCSogbWlzYy93aW5zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlIG5ldGluZXQvdGNwLmgsIGZvciBUQ1BfTk9ERUxBWS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglHZXRJY29uIGJ1ZyBmaXguCgpUaHUgSnVsIDE1IDE2OjA5OjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgV0lOQVBJIGZvciBFbnRyeUFkZHJQcm9jLgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJTWlub3IgYnVnIGZpeGVzIGluIERkZU5hbWVTZXJ2aWNlLCBhbHNvIGNoYW5nZXMgdG8gbW92ZSB0b3dhcmRzCglwcm9jZXNzLXNhZmUgY29kZS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJV2luOXggbG9vayAmIGZlZWwgb24gYnV0dG9ucyBhbmQgYSBmaXggZm9yIG93bmVyZHJhd24gYnV0dG9ucwoJKGJhY2tncm91bmQgc2V0IHRvIENPTE9SX0JUTkZBQ0UpLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHbG9iYWxTbWFydFBhZ2VVbmxvY2soKSBzdHViIGFkZGVkLgoKCSogbWlzY2VtdS9BdHRpYy9lbXVsYXRlLmMsIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL01ha2VmaWxlLmluLCB0b29scy9idWlsZC5jLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luODdlbS8uY3ZzaWdub3JlLCBkbGxzL3dpbjg3ZW0vTWFrZWZpbGUuaW4sIGRsbHMvd2luODdlbS9lbXVsYXRlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L01ha2VmaWxlLmluLCBpZjE2MzIvTWFrZWZpbGUuaW4sIG1lbW9yeS9pbnN0ci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgcG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSBpbiBhc3NlbWJseSBnbHVlIHdoZW4gYnVpbGRpbmcgLnNvLgoJSW5jbHVkZSBpZjE2MzIvIGFuZCBncmFwaGljcy93aW4xNmRydi8gaW50byBXaW5lTGliLgoJTW92ZSBtaXNjZW11L2VtdWxhdGUuYyBpbnRvIGRsbHMvd2luODdlbS8uCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpOyB0aGlzIGxpc3QKCWlzIG5vdyBzdG9yZWQgb24gYSBwZXIgcHJvY2VzcyBiYXNpcy4KCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGZpeGVkIHNpemUgYXJyYXkgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSAobm93IHVzaW5nCgltY2koU2V0fEdldClEcml2ZXJEYXRhIHRvIHN0b3JlIHNwZWNpZmljIGRhdGEpLgoJTWFrZSB1c2Ugb2YgZGVmYXVsdCBkZWJ1Z3Rvb2xzLmggY2hhbm5lbC4KCUFkZGVkIENBTExCQUNLIGF0dHJpYnV0ZSB0byBEcml2ZXJQcm9jLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpLgoJRmlyc3QgdmFsaWQgSUQgZm9yIG1jaSBkZXZpY2VzIGlzIG5vdyAxIChzb21lIHByb2dzIHdlcmUgdGVzdGluZyB0aGlzCgl2YWx1ZSkuCglTdGFydGVkIGltcGxlbWVudGluZyBtY2kgY29tbWFuZCB0YWJsZSByZXNvdXJjZXMuCglIYW5kbGVkIGNsb3Npbmcgb24gTUNJX0FMTC4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZml4ZWQgc2l6ZSBhcnJheSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhIChub3cgdXNpbmcKCW1jaShTZXR8R2V0KURyaXZlckRhdGEgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSkuCglEZWZlcnJlZCBvcGVuaW5nIG9mIGxvdy1sZXZlbCBkZXZpY2UgdW50aWwgcGxheSBpcyByZXF1ZXN0ZWQuCgoJKiBtdWx0aW1lZGlhL0F0dGljL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybiB2YWx1ZSBmb3IgJ29wZW4nIGNvbW1hbmQuCglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBmaXhlZCBzaXplIGFycmF5IHRvIHN0b3JlIHNwZWNpZmljIGRhdGEgKG5vdyB1c2luZwoJbWNpKFNldHxHZXQpRHJpdmVyRGF0YSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhKS4KCUZpeGVkIG1taW8gY2h1bmsgbG9va3VwIG9uIG9kZCBzaXplICdmbXQgJyBjaHVua3MuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVbmlmb3JtaXplZCB1c2Ugb2YgZmQgdG8gbWlkaSBkZXZpY2UuCglOb3cgYWxsb2NhdGluZyBtZW1vcnkgb24gc3lzdGVtIGhlYXAuCglGaXhlZCBidWcgd2hlbiBzdG9wcGluZyBhbGwgbm90ZXMuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWMgZml4ZXMuCglDaGFuZ2VkIHdheSBvZiBhbGxvY2F0aW9uIG9wZW4gbWNpIGRyaXZlcnMgKGFycmF5ID0+IGxpc3QpLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgbWNpIGNvbW1hbmQgdGFibGUgcmVzb3VyY2VzLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNhbGxpbmcgbW0gdGltZXJzIGNhbGxiYWNrcyB3aXRoIG1tIHRpbWVyIGNyaXQgc2VjdCBsb2NrZWQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRVJST1JfTU9SRV9EQVRBIHJlcXVpcmVzIHRvIHdyaXRlIHRoZSBuZWVkZWQgbnVtYmVyIG9mIGJ5dGVzIGludG8gdGhlCglscGNjaFggdmFsdWUgKHZlcmlmaWVkIGFnYWluc3QgTlQzLjUxIGFkdmFwaTMyLmRsbCkuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL2RldmljZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzb21lIENPTlRFWFQ4NiB2cy4gQ09OVEVYVCBtaXNtYXRjaGVzLgoKCSogaW5jbHVkZS9uZWV4ZS5oLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciAzMi1iaXQgTkUgY29kZSBzZWdtZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeCBhIGhhbmcgd2hlbiB3ZSBwcm9jZXNzIFdNX1NUWUxFQ0hBTkdFRC4KCVNtYWxsIG9wdGltaXphdGlvbiBpbiBUUkVFVklFV19EcmF3SXRlbS4KCUZpeCBkZWJ1Z2dpbmcgY3Jhc2ggaW4gVFJFRVZJRVdfRXhwYW5kLgoKTW9uIEp1bCAxMiAxMzo0NjozOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3BpZGwuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZSBmb3IgSUxGaW5kQ2hpbGQoKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbWlzYy9uZXR3b3JrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvbXBpbGVyIHdhcm5pbmdzIGZpeC4KCgkqIG1pc2MvY29tbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUR1bWIgZml4ZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ1Z3MgaW50cm9kdWNlZCBieSAncmVnaXN0ZXInIGFuZCAncmV0dXJuJyBmdW5jdGlvbiBjaGFuZ2VzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBEaXJlY3REcmF3U3VyZmFjZTo6RmxpcCwgZG8gbm90IGNoYW5nZSBmbGFncywgZXhjaGFuZ2UgdGhlIGxvdwoJbGV2ZWwgcGh5c2ljYWwgc3VyZmFjZXMgKHZlcmlmaWVkIGZvciBYTElCIHdpdGggV0MgUHJvcGhlY3kpLgoKU3VuIEp1bCAxMSAxNzoyMDowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgbWlzYy9zeXN0ZW0uYywgbWlzYy90b29saGVscC5jLCBtaXNjL3czMnN5cy5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpZjE2MzIvc3lzdGVtLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdG9vbGhlbHAuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgaWYxNjMyL3czMnN5cy5zcGVjLCBpZjE2MzIvZHVtbXkuYzoKCVRha2UgYWR2YW50YWdlIG9mIHRoZSBuZXcgcmVnaXN0ZXJzIHNhdmVkIGluIHRoZSBTVEFDSzE2RlJBTUUgdG8gdHVybgoJc29tZSAncmVnaXN0ZXInIGZ1bmN0aW9ucyBpbnRvIG5vcm1hbCBmdW5jdGlvbnMuCglSZW1vdmVkIHRoZSBmZXcgcmVtYWluaW5nICdyZXR1cm4nIGZ1bmN0aW9ucyB0byBzaW1wbGlmeSByZWxheQoJaGFuZGxpbmcuCgoJKiBpcGMvQXR0aWMvaGFzaF90ZXN0LmMsIGlwYy9BdHRpYy9ydW5fdGVzdHMsIGlwYy9BdHRpYy9zaG1fYmxvY2suYywgaXBjL0F0dGljL3NobV9mcmFnbWVudC5jLCBpcGMvQXR0aWMvc2htX2ZyYWdtZW50X3Rlc3QuYywgaXBjL0F0dGljL3NobV9tYWluX2Jsay5jLCBpcGMvQXR0aWMvc2htX3NlbWFwaC5jLCBpcGMvQXR0aWMvc2htX3NlbWFwaF90ZXN0LmMsIGlwYy9BdHRpYy93aW5lX3Rlc3Rfc3R1Yi5jLCBsb2FkZXIvc2lnbmFsLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL0F0dGljL2RkZV9hdG9tLmgsIGluY2x1ZGUvQXR0aWMvZGRlX21lbS5oLCBpbmNsdWRlL0F0dGljL2RkZV9wcm9jLmgsIGluY2x1ZGUvQXR0aWMvc2htX2Jsb2NrLmgsIGluY2x1ZGUvQXR0aWMvc2htX2ZyYWdtZW50LmgsIGluY2x1ZGUvQXR0aWMvc2htX21haW5fYmxrLmgsIGluY2x1ZGUvQXR0aWMvc2htX3NlbWFwaC5oLCBpbmNsdWRlL2RkZS5oLCBpcGMvQXR0aWMvLmN2c2lnbm9yZSwgaXBjL0F0dGljL01ha2VmaWxlLmluLCBpcGMvQXR0aWMvUkVBRE1FLCBpcGMvQXR0aWMvVEVTVF9GUkFHTUVOVC5zdGQsIGlwYy9BdHRpYy9iaXRfYXJyYXkuYywgaXBjL0F0dGljL2JpdF9hcnJheV90ZXN0LmMsIGlwYy9BdHRpYy9kZGUudGV4LCBpcGMvQXR0aWMvZGRlX2F0b20uYywgaXBjL0F0dGljL2RkZV9hdG9tX3Rlc3QuYywgaXBjL0F0dGljL2RkZV9tZW0uYywgaXBjL0F0dGljL2RkZV9tZW1fdGVzdC5jLCBpcGMvQXR0aWMvZGRlX3Byb2MuYywgaXBjL0F0dGljL2RkZV9wcm9jX3Rlc3QuYywgaXBjL0F0dGljL2dlbmVyaWNfaGFzaC5jLCBpcGMvQXR0aWMvZ2VuZXJpY19oYXNoLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdGhlIG9sZCwgaGlzdG9yaWNhbCBhbmQgbm8gbG9uZ2VyIHdvcmtpbmcgSVBDIHN1cHBvcnQuCgoJKiBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBtaXNjL0F0dGljL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy9idWlsZC5jLCBNYWtlLnJ1bGVzLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2R1bGFyaXplZCBDYWxsRnJvbS9UbzE2IHJvdXRpbmVzLiAgQWRhcHRlZCBkZXBlbmRlbnQgcm91dGluZXMsCgkxNi1iaXQgc25vb3AvcmVsYXkgZGVidWdnaW5nLCBhbmQgbWFrZSBydWxlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldmVydCBsYXN0IGNoYW5nZSBpbiB3aW5kb3cgYWN0aXZhdGlvbiBvbiBtb3VzZSBjbGljay4KCgkqIG1lbW9yeS9nbG9iYWwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIGEgY2FzZSB3aGVuIEdsb2JhbFNpemUgZGlkIG5vdCByZXR1cm4gemVybyBhZnRlciBhbiBlcnJvci4KClNhdCBKdWwgMTAgMTM6MTY6NTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9zb2NrZXQuYzogSG93YXJkIEFicmFtcyA8aG93YXJkQGNzLm5wcy5uYXZ5Lm1pbD4KCVJlbmFtZWQgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSAnaW92ZWMnIHRvICdteWlvdmVjJy4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJSG93YXJkIEFicmFtcyA8aG93YXJkQGNzLm5wcy5uYXZ5Lm1pbD4KCUFkZGVkIGNoZWNrcyBmb3Igc3lzL2Vycm5vLmgsIHN5cy9zaWduYWwuaCBhbmQgc3lzL21tYW4uaC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ3JlYXRlIGRpYWxvZyB3aW5kb3cgdXNpbmcgQ3JlYXRlV2luZG93RXgxNi9XIGRlcGVuZGluZyBvbiB0ZW1wbGF0ZQoJdHlwZSwgbm90IGRpYWxvZyBwcm9jZWR1cmUgdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBJU2hlbGxGb2xkZXI6OmZuUGFyc2VEaXNwbGF5TmFtZSByZXR1cm4gYSByZWxhdGl2ZSBwaWRsLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL21vbnRoY2FsLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRmlyc3QgdHJ5IGF0IHRoZSBtb250aCBjYWxlbmRhciBjb21tb24gY29udHJvbC4gTWFpbiBmZWF0dXJlcwoJYmFzaWNhbGx5IE9LLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBpbmNsdWRlL3dpbnNwb29sLmgsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgR2V0UHJpbnRlckEgYW5kIEdldFByaW50ZXJEcml2ZXJBLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBCTl9DTElDS0VEIG5vdGlmaWNhdGlvbiBpbiBXTV9TRVRGT0NVUy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGluY2x1ZGUvZG9jb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogcmVsYXkzMi9BdHRpYy9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTdHJUb09sZVN0ck4uCglGaXhlZCBjcmFzaCBpbiBTaGVsbEV4ZWN1dGVFeC4KCUltcGxlbWVudGVkIFNIUmVnT3BlbktleUEsIFNIUmVnUXVlcnlWYWx1ZUV4QSwgU3RyVG9PbGVTdHJbQXxXXS4KCVN0dWJzIGZvciBEb0Vudmlyb25tZW50U3Vic3RbQXxXXSwgUGF0aFByb2Nlc3NDb21tYW5kW0F8V10uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSVN0cmVhbSBpbnRlcmZhY2UgZm9yIGZpbGUgYWNjZXNzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggZHVyaW5nIHNlY29uZCBETExfUFJPQ0VTU19ERVRBQ0ggaWYgdGhlIGRsbAoJcmVmY291bnQgcmVhY2hlZCB6ZXJvIGFmdGVyIHRoZSBzZWNvbmQgb25lIChtZW1vcnkgZnJlZWQgdHdpY2UpLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU29tZSBtb3JlIHBpZGwtdHlwZXMuCglJbXBsZW1lbnRhdGlvbiBvZiBJTElzUGFyZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb21wbGV0ZWx5IHJld3JpdHRlbi4gSVBlcnNpc3RTdHJlYW0gaW50ZXJmYWNlIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURMTEdldENsYXNzT2JqZWN0L0NsYXNzZmFjdG9yeTogY3JlYXRlIG9iamVjdHMgYnkgQ0xTSUQgbm90IElJRC4KCgkqIG1pc2MvbWFpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZXhpdCgpIHJlcGxhY2VkIGJ5IEV4aXRQcm9jZXNzKCkuCgoJKiBtZW1vcnkvbG9jYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGNvcnJlY3RseSBjb3BlIHdpdGggZW5kID4gMHhmZmZlLgoKCSogbGlicmFyeS93aW5lc3R1Yi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIEV4aXRQcm9jZXNzKCkgYWZ0ZXIgV2luTWFpbigpIHJldHVybnMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcHJvdmVkIGJlaGF2aW91ciBvZiBHZXRNb2R1bGVIYW5kbGUxNiB3LnIudCBkdW1teSBtb2R1bGVzLgoJRG9uJ3QgdHJ5IHRvIGNhbGwgV0VQIG9mIGR1bW15IG1vZHVsZXMgaW4gRnJlZUxpYnJhcnkxNigpLgoKCSogaW5jbHVkZS93aW5yZWcuaCwgbWlzYy9yZWdpc3RyeS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgYGNvbnN0J3MgdG8gc29tZSByZWdpc3RyeSBBUEkgZnVuY3Rpb25zLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgY291cGxlIG9mIERpcmVjdFggQ0xTSUQgZW50cmllcy4gVGhpcyBtYWtlcyBVbnJlYWwgY29tcGxldGVseQoJaW5kZXBlbmRlbnQgb2YgYSB3aW5kb3dzIGluc3RhbGxhdGlvbi4KCgkqIG9sZS9vbGUybmxzLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJR2V0VGltZUZvcm1hdCgpIHNob3VsZCByZXR1cm4gTG9jYWxUaW1lIG5vdCBTeXN0ZW1UaW1lLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUZPUiBhbmQgSUYgY29tbWFuZHMgYWRkZWQuCglNT1ZFIGNvbW1hbmQgYWRkZWQsIGJ1dCBubyB3aWxkY2FyZCBzdXBwb3J0LgoJUmVkaXJlY3Rpb24gYWRkZWQuCglGaXhlZCBUSU1FICh3YXMgcmVwb3J0aW5nIGluIEdNVCkuCglNb3JlIGhlbHAgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU29tZXRpbWVzIHRoZSB0ZXh0IG9uIGEgdGFiIGNvbnRyb2wgZ290IHRydW5jYXRlZC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGhlaWdodCBvZiB0aGUgZHJvcHBlZCBsaXN0IHdoZW4gdGhlcmUgYXJlIGZldyBpdGVtcyBpbiB0aGUKCWxpc3QuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGFsbCBFVkVOVF9TeW5jaHJvbml6ZSggRkFMU0UgKSBjYWxsczsgdXNlIGEgcGVyaW9kaWMgY2FsbGJhY2sKCWNhbGxpbmcgWEZsdXNoKCkgaW5zdGVhZC4KCgkqIGluY2x1ZGUvcHNkcnYuaCwgZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3BzZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvYnJ1c2guYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgcGF0dGVybmVkIGJydXNoZXMgKGxldmVsIDIgUG9zdFNjcmlwdCBvbmx5KS4KCVNpbXBsZSBQYXRCbHQgZm9yIFBBVENPUFksIFdISVRFTkVTUyBhbmQgQkxBQ0tORVNTLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJSW1wbGVtZW50YXRpb24gb2YgVFZNX1NPUlRDSElMRFJFTi4gTWFzc2FnZWQgVFZNX1NPUlRDSElMRFJFTkNCIGEgYml0Cgl0byB1c2UgdGhlIHNhbWUgY29kZSBwYXRoLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggSW5pdFRhc2soKSB0byB3b3JrIGlmIERHUk9VUCB3YXMgbWFudWFsbHkgcmVzaXplZC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9BdHRpYy9hZHZhcGkzMi5zcGVjOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgc3R1YiBmb3IgU2V0VGhyZWFkVG9rZW4oKSwgcmVxdWlyZWQgYnkgT2ZmaWNlIDIwMDAuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDT01NRExHIGhvb2sgcHJvY2VkdXJlcyB3ZXJlIG5vdCBDQUxMQkFDSy4KCgkqIG9sZS9zdGdfc3RyZWFtLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSXQgaXMgcG9zc2libGUgZm9yIGEgc3RyZWFtIHRvIGhhdmUgYm90aCBzbWFsbCBibG9jayBhbmQgYmlnIGJsb2NrCgljaGFpbiBhcyBOVUxMLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgc3RyaW5nIGNvbXBhcmUgY2FzZSBpbnNlbnNpdGl2ZSBpbiBHZXRNb2R1bGVIYW5kbGUxNigpIGFzIGEKCXF1aWNrIGZpeCBmb3IgV2luV29yZCA2LgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIHN0dWIgZm9yIFdOZXRHZXRVbml2ZXJzYWxOYW1lW0F8V10uCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBHRElfT2JqLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGR1ZSB0byBpbnZhbGlkIHBvaW50ZXIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKdWwgIDQgMTY6MDk6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvKi5jLCBvbGUvKi5jLCBmaWxlcy8qLmMsIG11bHRpbWVkaWEvKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lucmVnLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBNYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgb24gYW4gaW1wbGVtZW50YXRpb24gb2YgV2luNjQgZm9yIHVzZSBvbiA2NCBiaXQgcGxhdGZvcm1zLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglXaW5kb3dzIHNob3VsZCBiZSBhY3RpdmF0ZWQgaW4gdGhlc2UgY2FzZXM6CgkxLSB3aGVuIHdlIGNsaWNrIG9uIG5vbiBhY3RpdmUgd2luZG93LgoJMi0gd2hlbiB3ZSBjYW5jZWwgYSBtb3Zpbmcgb3IgcmVzaXppbmcgb2YgYSBub24gYWN0aXZlIHdpbmRvdy4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHNhbXBsZSB3aW5lLmNvbmYuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Jlc291cmNlLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJRml4ZWQgRGVzdHJveUFjY2VsZXJhdG9yVGFibGUgYW5kIGltcGxlbWVudGVkIENyZWF0ZUFjY2VsZXJhdG9yVGFibGVXLgoKCSogd2luZG93cy93aW4uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV0lOX0ZpbmRXaW5kb3c6IHVzZSBHZXRFeGVwdHIocFduZC0+aEluc3RhbmNlKSBmb3IgQ0xBU1NfRmluZENsYXNzQnlBdG9tLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgY2hlY2sgZm9yIHdoZXRoZXIgdG8gY2FsbCBTZXRXaW5kb3dQb3Mgd2hlbiBzaG93aW5nIGEgd2luZG93CglzY3JvbGwgYmFyLgoKCSogb2xlL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgY29tcGxldGUgbGNpZCBvciBqdXN0IHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlkIGluIHRoZQoJcmVnaXN0cnkgbG9va3VwcyAoZml4ZXMgb25lIEZpcnN0Q2xhc3NDbGllbnQgMzIgcHJvYmxlbSkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogUGVyIMVuZ3N0cvZtIDxwYW5nQG1ib3gzMDQuc3dpcG5ldC5zZT4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIGFwcHMgdGhhdCBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb24KCVdNX01PVVNFQUNUSVZBVEUgbWVzc2FnZSAobWFpbiB3aW5kb3cgd2FzIG5vdCBhY3RpdmF0ZWQpLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2hlbiBlbnVtZXJhdGluZyByZXNvdXJjZSwgb25seSB1c2UgdGhlIGxvd2VyIDMxIGJpdCBvZiB0aGUgbmFtZSBhcwoJdGhlIG9mZnNldCAoZm9yIHRoZSBoaWdoZXN0IGJpdCBpcyAnMScpLiBTaG91bGQgZml4IHdpbmUtbmV0LzI1Ny4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIGRsbHMvbnRkbGwvcnRsLmMsIG1pc2Mvd3NwcmludGYuYywgbXVsdGltZWRpYS9tY2ltaWRpLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVzIGZvciBjb21waWxlIG9uIG5vbi1JbnRlbCBwbGF0Zm9ybXMuCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZC9tb3ZlZC9hZGRlZCBtaXNzaW5nL3dyb25nIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb24sIHByb2dyYW1zL3Byb2dtYW4vRGEucmMsIHJlc291cmNlcy9zeXNyZXNfRGEucmM6CglIZW5yaWsgT2xzZW4gPGhlbnJpa0BpYWVzdGUuZGs+CglDbGVhbnVwIG9mIHRoZSBEYW5pc2ggc3VwcG9ydC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJRml4IGEgYnVnIGluIFNldFdpbmRvd1BvcyB0byBwcmV2ZW50IHBhcmVudCBmcm9tIGVyYXNpbmcgaXRzIGNoaWxkCglwYWludGluZyBhcmVhIHdoZW4gcGFyZW50IHdpbmRvdyBhbmQgY2hpbGQgd2luZG93IGRvbid0IGhhdmUKCVdTX0NMSVBDSElMRFJFTiBhbmQgV1NfQ0xJUFNJQkxJTkdTLgoKCSogd2luZG93cy9kZWZ3bmQuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglNYWtlIGRlZnduZHByb2MgZXJhc2UgdGhlIGNvcnJlY3QgbG9jYXRpb24uCgpTYXQgSnVsICAzIDE2OjAxOjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2NydGRsbC5zcGVjLCB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS93aW4uaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9jcnRkbGwuYywgbWlzYy9zaGVsbC5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cglzb21lIHNtYWxsIGluY2x1ZGUgZml4ZXMsIHNvbWUgY2hlY2tzIGZvciBOVUxMIHB0cnMsCglsb2FkZXIvZWxmLmM6IGZpeGVkIHRoZSAibGliIiBpbnNlcnRpb24KCWNydGRsbDogYWRkZWQgZnNvcGVuKCkKCWRpbnB1dDogcmV0dXJuIHRoYXQgd2UgYXJlIGF0dGFjaGVkLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFJldmVydGVkIHByZXZpb3VzIGNoYW5nZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDYW5jZWwgcGVuZGluZyBub3RpZmljYXRpb25zIHdoZW4gRU1fU0VUTU9ESUZZIGlzIGNhbGxlZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeCBhIGNyYXNoIHdoZW4gZG9pbmcgc29ydGVkIGluc2VydHMgYXQgdG9wIGxldmVsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZXdvcmtlZCBub25jbGllbnQgZHJhd2luZyBjb2RlLiBXaW4zMSBsb29rIG5vdyB3b3JrcyBtb3JlIGxpa2UgcmVhbAoJV2luMzEsIHNvIGFwcHMgbGlrZSBEZWxwaGkgMS4wIG5vIGxvbmdlciBnbyBpbnRvIGluZmluaXRlIHJlY3Vyc2lvbgoJZXRjLiBGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIHdpbjk1IGxvb2sgdG9vLCBidXQgbm90IGFzIHRob3JvdWdobHkKCShlLmcuIFdTX0VYX1dJTkRPV0VER0UgaXMgc3RpbGwgbm90IGhhbmRsZWQpLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU01fQ1tYWV1GUkFNRSBpcyBCb3JkZXJXaWR0aCArIDEuCgoJKiBtZW1vcnkvbG9jYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IExvY2FsSW5pdCB3aXRoIHN0YXJ0ID09IDAgYWx3YXlzIHBsYWNlcyBoZWFwIGF0IGVuZCBvZiBzZWdtZW50LgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFRBU0tfQ2FsbFRvU3RhcnQgZGlkbid0IHBhc3MgY29ycmVjdCBoSW5zdGFuY2UgdG8gYXBwLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJT24gTkUgcHJvY2VzcyBjcmVhdGlvbiwgbW92ZSBtYWpvciBwYXJ0IG9mIE5FIEVYRSBtb2R1bGUgbG9hZGluZyBhbmQKCU5FIGluc3RhbmNlIGNyZWF0aW9uIGludG8gdGhlIGNoaWxkIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL2d1aTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW5kb3cgc3R5bGUgdXBkYXRlcy4KCgkqIGxpYnRlc3QvZ3VpdGVzdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNvbWUgZW5oYW5jZW1lbnRzLCBhbmQgcmVtb3ZhbCBvZiBDKysgY29uc3RydWN0cy4KCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBjaGFpbnMgb2Ygc3VyZmFjZXMuIFRoaXMgYWxsb3dzIGFuIHVubGltaXRlZCBudW1iZXIKCW9mIGJhY2tidWZmZXJzLCBhbmQgb3RoZXIgYXR0YWNoZWQgc3VyZmFjZXMgKHpidWZmZXJzLCBhbHBoYSBidWZmZXJzLAoJd2hhdGV2ZXIpLgoKCSogZmlsZXMvZmlsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBVbmxvY2tGaWxlRXggc3R1Yi4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uLCByZXNvdXJjZXMvc3lzcmVzX0NhLnJjLCByZXNvdXJjZXMvc3lzcmVzX0VzLnJjOgoJSm9zZSBNYXJjb3MgTG9wZXogQ2FyYXZhY2EgPGpvc2UubG9wZXpAdXBjbmV0LnVwYy5lcz4KCUFkZGVkIG1pc3NpbmcgNjE3NjIgZW50cnkgb24gc3lzdGVtIHJlc291cmNlcyBpbiBTcGFuaXNoIGFuZAoJQ2F0YWxvbmlhbiBsYW5ndWFnZXMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIEdldFNjcm9sbEluZm8gcmV0dXJuIHNjcm9sbCBwb3Mgd2hlbiBwcm9ncmFtIHJlcXVlc3RzIHRodW1iIHBvcwoJb3V0c2lkZSBkcmFnIG9wZXJhdGlvbi4KClN1biBKdW4gMjcgMTU6NDA6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWRDb25zb2xlQTogdXNlIGlyIGFzIHBvaW50ZXIgdG8gKHJlcSsxKS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgdGhlICB2YWxpZGF0ZWQgY2hpbGQgYXJlYSBmcm9tIHRoZSB1cGRhdGUgcmVnaW9uIG9mIHBhcmVudCBmb3IKCXdpbmRvd3Mgd2l0aG91dCBXU19DTElQQ0hJTERSRU4gc3R5bGUuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBHcnA4IGluc3RydWN0aW9ucyBoYXZlICpieXRlKiBCaXRPZmZzZXQgb3BlcmFuZC4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWlzc2luZyBXSU5BUElzIGFkZGVkLgoKCSogb2xlL29sZTIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbGVNZXRhRmlsZVBpY3RGcm9tSWNvbkFuZExhYmVsMTY6IHNsaWdodGx5IGJyb2tlbiwgdXNlIExQT0xFU1RSMTYuCgoJKiBmaWxlcy9maWxlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV0dXJuIEVSUk9SX0RJU0tfRlVMTCBmb3IgV3JpdGVGaWxlLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzogRXJpYyBXaWxsaWFtcyA8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglGaXhlZCBtaXNzaW5nIHJldHVybiBhZnRlciBhYm91dCBkaWFsb2cuCgpTYXQgSnVuIDI2IDE5OjA5OjExIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy8qLmMsIG1pc2MvKi5jLCBtaXNjZW11LyouYywgZ3JhcGhpY3MvKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvYnVpbGQuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3Mvd2luLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvY2FsbGJhY2suYywgbWlzYy9lcnJvci5jLCBtaXNjL3dpbmRlYnVnLmMsIG1pc2NlbXUvZW11bGF0ZS5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTIuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MTcuYywgbXNkb3MvaW50MTkuYywgbXNkb3MvaW50MWEuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MjkuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50M2QuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvaW50NGIuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy92eGQuYywgbXNkb3MveG1zLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci90YXNrLmM6CglDaGFuZ2VkIENPTlRFWFQgaW50byBDT05URVhUODYgZXZlcnl3aGVyZSB3ZSByZWFsbHkgd2FudCBhbiBpMzg2Cgljb250ZXh0LgoJQWRkZWQgI2lmZGVmIF9faTM4Nl9fIGFyb3VuZCBhY2Nlc3NlcyB0byAzODYgcmVnaXN0ZXJzIGluIHRoZSBnZW5lcmljCglDT05URVhUIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvd2lubnQuaDogQWRkZWQgQ09OVEVYVDg2IGRlZmluaXRpb24uCglBZGRlZCBQb3dlclBDIGNvbnRleHQgYXMgYW4gZXhhbXBsZSAobm90IHRlc3RlZCkuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJRml4ZXMgZm9yIG5vbi1pMzg2IGNvbXBpbGluZy4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQU5TSSBDIGZpeGVzLgoJUmVtb3ZlZCB3YXJuaW5ncy4KCU1hZGUgdGhlIGluY2x1ZGUgZmlsZXMgc2VsZi1zdWZmaWNpZW50LgoJU29tZSBTb2xhcmlzIGZpeGVzLgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIERQQV9Mb2FkU3RyZWFtIGFuZCBpbXByb3ZlZCBEUEFfTWVyZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBjaGVjayBmb3IgaW52YWxpZCBwYXJlbnQgaXRlbS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBTSERvRHJhZ0Ryb3AoKSBzdHViLgoKCSogb2JqZWN0cy9yZWdpb24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFJhbmRvbVJlZ2lvbigpLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgV05ldFJlbW92ZUNhY2hlZFBhc3N3b3JkKCkgc3R1Yi4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTdG9yZSBidWRkeSB3aW5kb3cuCgoJKiBpbmNsdWRlL3Rvb2x0aXBzLmgsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTdGFydGVkIFdNX05PVElGWUZPUk1BVCBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQmV0dGVyIENvbWJvQm94RXggcGxhY2VtZW50LgoKCSogbG9hZGVyL21vZHVsZS5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUVuc3VyZSB0aGF0IHRoZSBjb21tYW5kLWxpbmUgcGFzc2VkIHRvIHRoZSB2YXJpb3VzICpDcmVhdGVQcm9jZXNzCglmdW5jdGlvbnMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHByb2dyYW0gYmVpbmcgaW52b2tlZC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBMYXJzIEhlZXRlIDxoZWxAYWRtaW4uZGU+CglQcmV2ZW50IGJhZCB3aW5kb3cgWCBlcnJvci4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglUaGUgc3lzdGVtIG1lbnUgaWNvbiBvbiBhIE1ESSBjaGlsZCB3aW5kb3cgd2FzIGNvcnJ1cHRlZCB3aGVuIHRoZQoJY2hpbGQgZnJhbWUgd2luZG93IGlzIG1heGltaXplZCB3aXRoaW4gdGhlIG1haW4gZnJhbWUgd2hlbiB0aGUgd2luZQoJbG9vayBpcyBXaW5kb3dzIDk1LgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIHdpbmRvd3MvZGVmd25kLmM6CglTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJSW4gY2FzZSBpZiBzY3JvbGxiYXIgaGFzIHRoZSBzYW1lIGJhY2tncm91bmQgY29sb3IgYXMgdGhlIHdpbmRvdwoJaXQgYmVsb25ncyB0bywgaXQgbmVlZHMgdG8gYmUgZmlsbGVkIHdpdGggMHg1NWFhIGJpdG1hcCBicnVzaC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUZpeGVkIHRoZSBzdHJpbmdjb21wYXJlIGluIF9maW5kX29yX2FkZF8qKCkgKHdhcyBtaXNzaW5nIHRvbG93ZXIoKXMpLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeCAod2VsbCBrbHVkZ2UgYXJvdW5kKSBGcmVlQlNEJ3MgYEludmFsaWQgYWRkcmVzcycgZXJyb3JzLgoKCSogY29udHJvbHMvZWRpdC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRHJhdyBhIDNEIGJvcmRlciBhcm91bmQgZWRpdCBjb250cm9scyB3aGVuIG5vdCBpbiBXSU4zMV9MT09LLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglPbmx5IGRyYXcgYSBibGFjayBib3JkZXIgYXJvdW5kIG5vcm1hbCBidXR0b25zIHdoZW4gaW4gV0lOMzFfTE9PSy4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFsaWdubWVudCBhbmQgcG9zaXRpb24gd2hlbiBsb29raW5nIGZvciBtbWlvIGNodW5rcy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgZ2xvYmFsIHZhcnMgKHNoYXJlZCBkYXRhKSBmb3IgbW0gdGltZXJzLCBidXQgYQoJc3BlY2lmaWMgc3RydWN0dXJlIGZvciBlYWNoIGF0dGFjaGVkIHByb2Nlc3MuCglGaXhlZCBhbGlnbm1lbnQgYW5kIHBvc2l0aW9uIHdoZW4gbG9va2luZyBmb3IgbW1pbyBjaHVua3MuCglGaXhlZCBXQVZFIG1hcHBlciBoYW5kbGluZyBpbiB3YXZlR2V0Q2Fwcy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL3RpbWUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGdsb2JhbCB2YXJzIChzaGFyZWQgZGF0YSkgZm9yIG1tIHRpbWVycywgYnV0IGEKCXNwZWNpZmljIHN0cnVjdHVyZSBmb3IgZWFjaCBhdHRhY2hlZCBwcm9jZXNzLgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV3JvdGUgYSBzbWFsbCBkb2N1bWVudCBvbiBob3cgdG8gcGFja2FnZSBXSU5FIGZvciBkaXN0cmlidXRvcnMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNldEN1cnNvclBvcygpIGZ1bmN0aW9uIHdhcyBjYWxsZWQgd2l0aCBhIHdpbmRvdyBjb29yZGluYXRlcwoJcGFyYW1ldGVyLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBudWxsIHB0ciBkZXJlZiBpbnRyb2R1Y2VkIGluIGxhc3QgcGF0Y2guCgoJKiBpZjE2MzIvb2xlMi5zcGVjLCBvbGUvb2xlMi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJS2luZCBvZiBpbXBsZW1lbnRlZCBPbGVNZXRhRmlsZVBpY3RGcm9tSWNvbkFuZExhYmVsLgoKCSogaW5jbHVkZS90b29sYmFyLmgsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHZhcmlvdXMgcHJvYmxlbXMgcmVsYXRlZCB0byBiaXRtYXBzIGFuZCBmbGF0IHRvb2xiYXJzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgcHJvYmxlbXMgd2l0aCBkaXNhcHBlYXJpbmcgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglDb21wbGV0ZSByZXdyaXRlIG9mIG1lc3NhZ2luZyBjb2RlIHRvIGltcGxlbWVudC9maXggYWxsIGlucHV0IGJlaGF2aW9ycy4KCUZpeGVkIGEgZmV3IGZpeG1lcy4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUFkZGVkIG1vcmUgYmF0Y2ggZnVuY3Rpb25hbGl0eSwgaW5jbHVkaW5nIHRoZSBDQUxMIEdPVE8gYW5kIFNISUZUCgljb21tYW5kcyBwbHVzIGJhdGNoIGNvbW1hbmQgYXJndW1lbnRzLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIHJlZmxlY3QgY3VycmVudCBzdGF0dXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglORV9Mb2FkRmlsZU1vZHVsZTogRnJlZSBtb2R1bGUgd2hlbiBORV9Mb2FkRExMcyBmYWlscy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgaW5jbHVkZS9wc2Rydi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgdW5kZXJsaW5lIGFuZCBzdHJpa2VvdXQgdGV4dCBhdHRyaWJ1dGVzIGZvciB0aGUgV2luZQoJUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJRW5hYmxlV2luZG93IGRvZXNuJ3QgcmVsZWFzZSB0aGUgY2FwdHVyZSBvZiBhIGNoaWxkIHdpbmRvdy4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglPbmx5IHRlc3QgJChMSUJfVEFSR0VUKSA9IGxpYndpbmUuc28uMS4wIGlmICQoTElCX1RBUkdFVCkgaXMKCW5vbi1ibGFuay4KCgkqIGNvbnRyb2xzL21lbnUuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglSZW1vdmUgdGhlIFdNX0xCVVRUT05VUCBtZXNzYWdlIGZyb20gdGhlIHF1ZXVlIGFmdGVyIHNlbGVjdGluZyBhIG1vdXNlCgltZW51IGl0ZW0uCgoJKiBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY29tbS5jLCBtaXNjL3Rvb2xoZWxwLmMsIG9sZS9wYXJzZWR0LmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmM6CglGdXJ0aGVyIHNlcnZlciBvcHRpbWl6YXRpb25zOgoJLSBtZXJnZWQgcmVxdWVzdCBhbmQgcmVwbHkgc3RydWN0dXJlcwoJLSBidWlsZCByZXF1ZXN0cyBkaXJlY3RseSBpbnRvIHRoZSBidWZmZXIgdG8gYXZvaWQgYSBjb3B5CgpUdWUgSnVuIDIyIDE5OjE0OjQxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9sZS9ubHMvcnVzLm5scywgcmVzb3VyY2VzL3N5c3Jlc19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmM6CglBbGV4YW5kZXIgS2FuYXZpbiA8YWtAY2F2ZS5ob3Auc3R1Lm5ldmEucnU+CglTdGFuZGFyZCBkaWFsb2cgYm94ZXMgcmVzb3VyY2VzIGFuZCBPTEUgc3RyaW5ncyBhcmUgbm93IGluIGNwMTI1MSBlbmNvZGluZwoJRm9udCBtYXBwZXIgZG9lcyBub3QgYW55bW9yZSB1c2UgZm9udHMgaW4gLWtvaTgtciBlbmNvZGluZwoJRm9udCBtYXBwZXIgbm93IHJlY29nbmlzZXMgZm9udHMgaW4gLXdpbmRvd3MtKiBlbmNvZGluZ3MgKHRoZXNlIGFyZQoJcHJvdmlkZWQgYnkgeGZzdHQgVHJ1ZVR5cGUgc2VydmVyKQoJRm9udCBtYXBwZXIgbm93IHNlZXMgbWF4IDE2Mzg0IGZvbnRzICh3YXMgMjA0OCkKCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNoYXJlIHRoZSBITU9EVUxFIG9mIGJ1aWx0LWluIG1vZHVsZXMgb3ZlciBhbGwgcHJvY2Vzc2VzLgoJVXNlIHRoZSBjYWNoZWQgSE1PRFVMRSB0byBzcGVlZCB1cCByZWxheSBkZWJ1Z2dpbmcuCglEaXNwbGF5IHRoZSBtdWx0aS1pbnN0YW50aWF0aW9uIHdhcm5pbmcgb25seSBmb3IgJ2Rhbmdlcm91cycgRExMcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWQgVVNFUjMyLkRMTCBiZWZvcmUgY2FsbGluZyBVc2VyU2lnbmFsUHJvYy4KCgkqIHdpbmRvd3MvdGltZXIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2Ugc2VwYXJhdGUgc2VydmljZSBmb3IgZWFjaCB3aW5kb3dzIHRpbWVyLgoKCSogaWYxNjMyL2NvbXBvYmouc3BlYywgb2xlL2NvbXBvYmouYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIENPTVBPQkouRGxsRW50cnlQb2ludCAoQWNyb2JhdDMgMTZiaXQgbmVlZHMgaXQpLgoKCSogb2xlL3R5cGVsaWIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRob3Ugc2hhbHQgbm90IHVzZSBDKysgY29tbWVudHMuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlLgoJRml4ZWQgZHJpdmVyIGNsb3NpbmcuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciBoYW5kbGluZyBvZiBkb3VibGUgcXVvdGVzIGluIE1DSSBzdHJpbmcgY29tbWFuZHMuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeSBsZWFrIGluIG1jaSBzdHJ1Y3R1cmVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBER0FfSURpcmVjdERyYXcySW1wbF9HZXRDYXBzKCkuCgoJKiBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIEdESSBoZWFwIHVubG9jay4KCU1vdmVkIHRvIG5ldyBkZWJ1ZyBpbnRlcmZhY2UuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEdldE9wZW5GaWxlTmFtZSB3aGVuIGNhbGxlZCB3aXRoIGJvdGggT0ZOX0FMTE9XTVVMVElTRUxFQ1QgYW5kCglPRk5fRVhQTE9SRVIgYml0cyBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTW9kaWZpZWQgSW1hZ2VMaXN0X0xvYWRJbWFnZUEgdG8gY2hlY2sgdGhlIGNhc2Ugd2hlcmUgY3ggaXMgc2V0IHRvIHplcm8uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQaGlsaXBwZSBGcm9pZGV2YXV4IDxwZkBzcGluLmNoPgoJQWRkZWQgU3dpc3MgZnJlbmNoIGtleWJvYXJkIGxheW91dC4KCgkqIHNlcnZlci9zZWxlY3QuYzogRHVtcCBzZXJ2ZXIgb2JqZWN0cyBvbiBTSUdIVVAuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy9yZXF1ZXN0LmgsIGluY2x1ZGUvdGhyZWFkLmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY29tbS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBmaWxlcy9maWxlLmM6CglNYWRlIHNlcnZlciBjb21tdW5pY2F0aW9uIGZhc3RlciBieSB1c2luZyBhIHNoYXJlZCBtZW1vcnkgYmxvY2suCglBIGZldyBvdGhlciBvcHRpbWl6YXRpb25zIGluIHJlcXVlc3QgcHJvY2Vzc2luZyBpbiB0aGUgc2VydmVyLgoJTW92ZWQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgcmVxdWVzdCBkZWZpbml0aW9ucyB0byBzZXJ2ZXIuaCBhbmQKCXJlbW92ZWQgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kcG1pLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYywgZGVidWdnZXIvc3RhY2suYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglNZXJnZWQgVEhEQiBhbmQgVEVCIHN0cnVjdHVyZXMuCglNYWRlIFNldExhc3RFcnJvcigpLCBHZXRDdXJyZW50VGhyZWFkSWQoKSBhbmQgUFJPQ0VTU19DdXJyZW50KCkgaW5saW5lLgoKCSogcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmU6CglBZGRlZCBXYS5zCgpTdW4gSnVuIDIwIDE1OjA5OjMyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaW5zdHIuYywgbWlzY2VtdS9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9wcm9nbWFuL1dhLnJjLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjOgoJRml4ZWQgV2luZWxpYiBjb21waWxhdGlvbi4KCkZyaSBKdW4gMTggMTg6Mjk6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2luc3RyLmMsIG1pc2NlbXUvQXR0aWMvaW5zdHIuYywgbWlzY2VtdS9NYWtlZmlsZS5pbjoKCUluY2x1ZGUgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIGluIFdpbmVsaWIuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHdpbjMyL2V4Y2VwdC5jOiBBIGZldyBvcHRpbWl6YXRpb25zLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBVc2UgZXhjZXB0aW9ucyBpbnN0ZWFkIG9mIGN0eF9kZWJ1Z19jYWxsLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYzoKCUFkZGVkIERlYnVnQnJlYWsuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBtaXNjZW11L21haW4uYzoKCURlYnVnZ2VyIGlzIG5vdyBjYWxsZWQgYnkgZXhjZXB0aW9uIGhhbmRsaW5nLgoJQWRkZWQgJ3Bhc3MnIGNvbW1hbmQgdG8gcGFzcyBleGNlcHRpb25zIHRvIHRoZSBhcHAuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBsb2FkZXIvc2lnbmFsLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglNb3ZlZCBzaWduYWwgaGFuZGxpbmcgdG8gZXhjZXB0aW9uLmMsIGdlbmVyYXRlIGV4Y2VwdGlvbnMgb24gc2lnbmFscy4KCUFkZGVkIGhvb2sgZm9yIGRlYnVnZ2VyIGluIGV4Y2VwdGlvbiBoYW5kbGluZyAodGVtcG9yYXJ5KS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vV2EucmMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvV2EucmMsIHJlc291cmNlcy9zeXNyZXNfV2EucmMsIG9sZS9ubHMvd2FsLm5scywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQHBpbmcuYmU+CglXYWxsb29uIGxhbmd1YWdlIHVwZGF0ZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBEbyBub3QgY2FsbCBYQ29uZmlndXJlV2luZG93IGlmIFNldFdpbmRvd1BvcyB3YXMgY2FsbGVkIGR1ZSB0byBhCgkgIHJlY2VpdmVkIENvbmZpZ3VyZU5vdGlmeSBldmVudCAodG8gYXZvaWQgcmVjdXJzaW9uKS4KCS0gVXNlIFhUcmFuc2xhdGVDb29yZGluYXRlcyBpbiBFVkVOVF9HZXRHZW9tZXRyeSBpbnN0ZWFkIG9mIG1hbnVhbGx5CgkgIHdhbGtpbmcgdGhlIHRyZWUuCgktIFNldCBYU2l6ZUhpbnQud2luX2dyYXZpdHkgdG8gU3RhdGljR3Jhdml0eSBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglCdWcgZml4LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW46CglBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUluc3RhbGwgd2luZS5tYW4gZnJvbSBjdXJyZW50IGRpcmVjdG9yeS4KCVJlbW92ZSB3aW5lLm1hbiBvbiBkaXN0Y2xlYW4sIG5vdCBvbiBjbGVhbi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEp1biAxMyAwODo0OTo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgTElTVFZJRVdfU29ydEl0ZW1zKCkgYW5kIExJU1RWSUVXX0NhbGxCYWNrQ29tcGFyZSgpCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZXMgYSBwcm9ibGVtIHdoZW4gdXNpbmcgU1RBVFVTQkFSX1NldFRleHQoKSB0byB0b2dnbGUgU0JUX09XTkVSRFJBVwoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkcyBzb21lIHVuZG9jdW1lbnRlZCBiZWhhdmlvciB0byBUUkVFVklFV19HZXRJdGVtQSgpLgoKCSogbG9hZGVyL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFtYmlnb3VzIGVsc2UvYnJhY2UgcHJvYmxlbSwgbW92ZWQgIm5hbWUiIGNvbXB1dGF0aW9uIGluCglDcmVhdGVQcm9jZXNzIF9iZWZvcmVfIG91dHB1dHRpbmcgaXQgaW4gdGhlIEZJWE1FXygpcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHJldXNlIGEgcGFzc2VkIENPTlNUIFJFQ1QgKiBwb2ludGVyLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBESVNQTEFZX1NldEN1cnNvciBzaG91bGQgbm90IHVzZSBVU0VSLWludGVybmFscywgYXMgaXQgaXMgYWxzbwoJdXNlZCB3aXRoIG5hdGl2ZSBVU0VSIC4uLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgYnJva2VuIGhhY2sgdG8gc3VwcG9ydCBzaGFyZWQgRExMcyAoZS5nLiBVU0VSMzIuRExMKSBhbmQKCXJlcGxhY2VkIGl0IGJ5IGEgc29tZXdoYXQgbGVzcyBicm9rZW4gaGFjayA6LS8KCgkqIG11bHRpbWVkaWEvbWNpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc21hbGwgbWVtb3J5IGNvcnJ1cHRpb24uCgpTYXQgSnVuIDEyIDE4OjM2OjU1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlLyouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkIHRoZSBpbmNsdWRlIGZpbGVzIGlkZW1wb3RlbnQgdXNpbmcgYSBjb25zaXN0ZW50IG1hY3JvIG5hbWluZwoJc2NoZW1lLgoKCSogd2luZG93cy9wYWludGluZy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUF2b2lkIHBhaW50aW5nIGRlc3Ryb3llZCB3aW5kb3dzLgoKCSogZGxscy8qLmMsIGlmMTYzMi8qLmMsIGxvYWRlci8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvc3RyaW5nLmMsIG9iamVjdHMvdGV4dC5jLCB3aW4zMi90aHJlYWQuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3N5bmMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbWlzc2luZy93cm9uZyBpbmNsdWRlcy4KCgkqIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy93aWRnZXRzLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kYmdtYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9zcHkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBkaXJlY3QgcmVmZXJlbmNlcyB0byBDTEFTUyBpbnRlcm5hbHMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbWlzYy92ZXJzaW9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZWFycmFuZ2Ugd2ludmVyIGRldGVjdGlvbiBjb2RlIGFuZCBjYWNoZSB0aGUgd2ludmVyIHZhbHVlIHdlCglkZXRlcm1pbmVkIGluIHRoZSBQREIgdG8gc3BlZWQgdXAuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURyYXdzIGEgYm9yZGVyIGFyb3VuZCB3aW5kb3dzIHdpdGggb2xkIHdpbjMxIHN0eWxlIChvbmx5IHdzX2JvcmRlcikgaW4KCXdpbjk1IGxvb2suCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIENJTlRFUkZBQ0UgYW5kIE5PTkFNRUxFU1NVTklPTiBzdXBwb3J0LgoKCSogaW5jbHVkZS8qLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGV4dGVybiAiQyIgaWYgX19jcGx1c3BsdXMgaXMgZGVmaW5lZC4KCgkqIGluY2x1ZGUvY29tYm8uaCwgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBmZXcgYmVoYXZpb3JzIG9mIHRoZSBjb21ib2JveCB0aGF0IHdlcmUgYnJva2VuLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2luZm8uYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgbmV3ICJ3YWxrIiBjb21tYW5kIG9wdGlvbnMgdG8gbGlzdCBwcm9jZXNzZXMgYW5kIG1vZHJlZidzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfMjQvMzI6IEZpeCB0aGUgY2FzZSBmb3IgYml0c19wZXJfcGl4ZWwgPT0gMzIKCWFuZCBuZWdhdGl2ZSBsaW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGFuZ2VkIHh4eChWT0lEKSB0byB4eHgodm9pZCkuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIHNpbXBsaWZpZWQgaW50ZXJuYWwgZGF0YQoJLSB0aHJlYWQgc2FmZSBhY2Nlc3MgdG8gaW50ZXJuYWwgc3RydWN0dXJlcwoJLSBmaXhlZCBidWcgb24gT05FX1NIT1QgdGltZXJzCgktIGRlZmVycmVkIHNlcnZpY2UgdGhyZWFkIGNhbGwgdW50aWwgcmVhbGx5IG5lZWRlZCAobm8gbG9uZ2VyIG9uIFdJTk1NCgkgIG9yIE1NU1lTVEVNIGF0dGFjaGVtZW50KQoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB0aGUgc2VydmljZSB0aHJlYWQgaW5zdGFuY2lhYmxlIGluIGV2ZXJ5IHByb2Nlc3MuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVc2UgQXV0b2NvbmYgdG8gZmluZCBwYXRoIHRvIGxkY29uZmlnLgoKCSogb2xlL3R5cGVsaWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggdGhlIExvYWRUeXBlTGliIG1ldGhvZC4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtbUBqZXQubHN0LmRlPgoJVXNlIEBzeXNjb25mZGlyQCBmb3IgdGhlIGRlZmF1bHQgcmVnaXN0cmllcyBpbiBtaXNjL3JlZ2lzdHJ5LmMgdG9vLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtbUBqZXQubHN0LmRlPgoJQWRkZWQgZ2VuZXJpYyBwaXhlbCBjb252ZXJ0ZXIgZm9yIDgtPjI0LgoKCSogd2luZG93cy9kaWFsb2cuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCURJQUxPR19QYXJzZVRlbXBsYXRlMTYoKSBzdXBwb3J0ZWQgdXAgdG8gMTI3IGNvbnRyb2xzLiBCaWdnZXIgdmFsdWVzCgl3ZXJlIGV4cGFuZGVkIHRvIFdPUkQgaW5jb3JyZWN0bHkuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVmFyaW91cyBEUE1JIGZpeGVzIGFuZCBwcmVsaW1pbmFyeSBEUE1JIHJhdyBtb2RlIHN3aXRjaCBoYW5kbGVyLgoKCSogd2luZG93cy9tZGkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbXByZWNpc2lvbiBpbiB0aGUgTURJIHRpbGluZyBmdW5jdGlvbmFsaXR5LgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglPcGVuIGZpbGVzIHdpdGggbW9yZSBhcHByb3ByaWF0ZSBzaGFyaW5nIG1vZGUuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIGZpeGVzIGZvciBFbmhNZXRhRmlsZSBwbGF5YmFjay4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglGaXhlZCBhbiBlcnJvciBhbmQgYW4gb2ZmLWJ5LW9uZSBidWcgaW4gRFNBX1NldEl0ZW0oKS4gIFRoaXMKCWVsaW1pbmF0ZXMgc29tZSBjcmFzaGVzIHdpdGggV2luOTggbmF0aXZlIFNIRUxMMzIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBESUFCTE9fSEFDSyAoZG9lcyBub3Qgd29yayBhbnltb3JlKSwgYWRkIDEgRklYTUUsIGZpeCBHZXRDYXBzKCkKCXdpdGggY2FwczE9PU5VTEwuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IFNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+Cglkd0RhdGFTaXplIG5lZWRzIHRvIGJlIHJlc2V0IGJlZm9yZSBlYWNoIFJlZ1F1ZXJ5VmFsdWVFeCgpIGNhbGwuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGlnbm9yZSBhcHBsaWNhdGlvbi1yZXF1ZXN0ZWQgcHJpbWFyeSBidWZmZXIgZmxhZ3MuCgoJKiB0b29scy9idWlsZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFyIGhpZ2ggd29yZCBvZiAlZXNwIHdoZW4gcmV0dXJuaW5nIGZyb20gQ2FsbEZyb20xNi4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRhdGlvbiBvZiBFVl9SWEZMQUcuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgW0dTXWV0Rm9yZWdyb3VuZFdpbmRvdy4KCUZpeGVkIGZvY3VzIGhhbmRsaW5nIG9uIGludGVyLXRocmVhZCBhY3RpdmF0aW9uLgoJQWRhcHRlZCBGb2N1c0luL091dCBldmVudCBoYW5kbGluZyB0byBwZXItcXVldWUgZm9jdXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGVhc2UgV2luMTZMb2NrIGR1cmluZyBQUk9DRVNTX0NyZWF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbWFnZUxpc3RfR2V0SWNvbiBidWcgZml4LgoKCSogd2luMzIvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIGEgcHJvYmxlbSBpbiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCkgZHVlIGEgY2hhbmdlIHRvCglta3RpbWUoKSBpbiBnbGliYy0yLjEuMSB3aGVuIGRheWxpZ2h0IHNhdmluZyB0aW1lIGlzIGluIGVmZmVjdC4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoYW5nZWQgSyZSIEMgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBBTlNJIEMuCgoJKiBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgaW5jbHVkZS9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUFNEUlZfU3RyZXRjaERJQml0cyBzaG91bGQgdXNlIGxvZ2ljYWwgY28tb3Jkcy4KCVNvbWUgdmVyc2lvbnMgb2YgZ2hvc3RzY3JpcHQgc2VlbSB0byBlYXQgb25lIHRvbyBtYW55IGNoYXJhY3RlcnMgb2YKCWltYWdlIGRhdGEuIEFkZCBhICclJyB0byB0aGUgb3V0cHV0IGZpbGUgdG8gd29yayBhcm91bmQgdGhpcy4KCgkqIHJlbGF5MzIvd25hc3BpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIFdOQVNQSTMyIG9yZGluYWxzLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgb2YgR2V0U3RhcnR1cEluZm8qKCkuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kZGUsIG1pc2MvZGRlbWwuYzoKCUtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+Cgkxc3QgY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZU5hbWVTZXJ2aWNlIChvbWl0cyBtb25pdG9yIGNhbGxiYWNrKQoJMXN0IGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVLZWVwU3RyaW5nSGFuZGxlIChwcm9iYWJseSBjb21wbGV0ZSkKCURkZUluaXRpYWxpemVXIC0gbWlub3IgY2hhbmdlcyB0byBpbml0aWFsaXNlIHNlcnZpY2UgbmFtZXMgc3RydWN0dXJlCglEZGVHZXRMYXN0RXJyb3IgLSBzdGFydCBvZiBwcm9wZXIgbGFzdCBlcnJvciByZXRyaWV2YWwKCURkZUNyZWF0ZVN0cmluZ0hhbmRsZTE2IC0gYWRkZWQgY29kZSBmb3IgZGVmYXVsdCBjb2RlcGFnZSB3aGVyZSBub3QKCXN1cHBsaWVkLgoJVmFyaW91cyBkb2N1bWVudGFyeS9jb21tZW50IGNvcnJlY3Rpb25zLgoKRnJpIEp1biAxMSAxODozMzo0NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVc2UgdGhlIG5vcm1hbCBlbnZpcm9ubWVudCByb3V0aW5lcyB0byBidWlsZCB0aGUgZW52IGRiIG9mIHRoZSBpbml0aWFsCglwcm9jZXNzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jOgoJUmV0dXJuIGNvbnNvbGUgaGFuZGxlcyBpbiBhbGxvY19jb25zb2xlIHJlcXVlc3QuCglGaXhlZCByZWFkX2NvbnNvbGVfaW5wdXQgcGFyYW1ldGVycyB0byBjb25mb3JtIHRvIHRoZSByZXBseSBzdHJ1Y3R1cmUKCWRlY2xhcmF0aW9uLgoKTW9uIEp1biAgNyAxNzo0NjozOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBDcmVhdGVDb21wYXRpYmxlQml0bWFwIHdoZW4gY2FsbGVkIHdpdGggMCB3aWR0aCBvciBoZWlnaHQuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtbWlvRGVzY2VuZCB3aGVuIGNhbGxlZCB3aXRoIGEgcGFyZW50IGNodW5rLgoKCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyeWluZyB0byBmaXggc2lnYWx0c3RhY2soKSBwcm9ibGVtIHJlcG9ydGVkIGJ5IERlYmlhbiB1c2Vycy4KCVNJR1RSQVAgbWlnaHQgYmUgdW5kZWZpbmVkIChiZW9zKS4KCgkqIG9sZS90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgVExCX1JlYWQgKGNhbiBlYXNpbHkgZ2V0IGNvdW50IT1ieXRlc3JlYWQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSkuCglGaXhlZCBUTEJfRmluZFRsYiAoc3Ryc3RyIG9uIGJpbmFyeSBkYXRhIHdpbGwgbm90IHdvcmspLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkID4+IGFuZCAqIG9wZXJhdG9yIHByZWNlZGVuY2UgcHJvYmxlbS4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb3JkZXIgZm9yIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb25zIChYMTEgdnMuIFduZExvY2spIHdoZW4KCWNhbGxpbmcgWDExRFJWX01PVVNFX1NldEN1cnNvci4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb25zdWx0IG5lLm9wZXJhdGluZ19zeXN0ZW0gZmllbGQgZm9yIE5FIGZpbGVzIGluIEdldEJpbmFyeVR5cGUoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IEZpeGVkIGluaXRpYWwgcHJvY2VzcyByZWZjb3VudC4KClN1biBKdW4gIDYgMTc6Mjg6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGxvYWRlci9kb3MvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzOgoJRm9yY2VkIGNvbW1pdCB0byBnZXQgcmlkIG9mIHRoZSB2ZW5kb3IgYnJhbmNoCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlOiBBZGRlZCBjbWRsZ3IuaAoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJQXZvaWQgdXNlIG9mIHN0cm5jbXBpIChyZXBvcnRlZCBieSBSb24gQ2VtZXIpLgoKCSogaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbXVsdGltZWRpYS9qb3lzdGljay5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBpbmNsdXNpb24gb2Ygd2luZXN0cmluZy5oIHRvIHdpbmViYXNlLmguCglBZGRlZCBXaW5lbGliIG1hY3JvcyBmb3IgbHN0cm5jbXAgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFJvbiBDZW1lciA8cm9uY2VtZXJAZ3RlLm5ldD4KCUZpeGVzIGZvciBzZXZlcmFsIGJ1Z3MgaW4gd2hpY2ggcG9ydGlvbnMgb2YgdGhlIHNjcm9sbGJhciB3ZXJlIG5vdAoJYmVpbmcgcmVkcmF3biBjb3JyZWN0bHksIHRoZSBmb2N1cyByZWN0YW5nbGUgd2FzIG5vdCBiZWluZyBjb3JyZWN0bHkKCXJlbW92ZWQgZnJvbSB0aGUgdGh1bWIgYmVmb3JlIHJlZHJhd2luZywgZXRjLjsgYWRkZWQgY29tcGxldGUgV2luOXgKCWFuZCBXaW5OVCBsb29rIGFuZCBmZWVsIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogUm9uIENlbWVyIDxyb25jZW1lckBndGUubmV0PgoJRml4ZXMgZm9yIFdpbjl4IGFuZCBXaW5OVCBsb29rIGFuZCBmZWVsLgoKCSogZmlsZXMvZG9zX2ZzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCByZXNwb25zZSBvZiBHZXRGdWxsUGF0aE5hbWVBIHdoZW4gYnVmZmVyPT1OVUxMLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDcmVhdGVGaWxlQS9GSUxFX0RvT3BlbkZpbGU6IGFkZCB2ZXJib3NlIHJlcG9ydGluZyBvZiBhcmd1bWVudHMuCgoJKiBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvbWFrZWZpbGUuYmNjLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgY29uZmlndXJlOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglBZGRlZCBXaW5lIGNvbW1hbmQtbGluZSBpbnRlcnByZXRlci4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBDYWxsYmFjay5DYWxsVGFza1Jlc2NoZWR1bGVQcm9jKCkuCgoJKiBpbmNsdWRlL21haW4uaCwgbWlzY2VtdS9tYWluLmMsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN3aXRjaCBzdGFja3MgaW4gQ0FMTDMyX0luaXQoKS4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJMTYtYml0IHNjaGVkdWxlciByZW9yZ2FuaXplZDogcnVuIGFsbCB0YXNrcyBpbiB0aGVpciBvd24gdGhyZWFkLgoJUHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZSBhZGFwdGVkIHRvIG5ldyBzY2hlZHVsZXIuCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIFNFUlZJQ0VfRXhpdCgpLgoKCSogd2luZG93cy9xdWV1ZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGVhc2UgV05EIGxvY2sgYmVmb3JlIGNhbGxpbmcgUG9zdEV2ZW50MTYoKS4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBzb21lIGRlZmluZXMuCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQVNQSV9FeGVjU2NzaUNtZDogYmV0dGVyIHJldHVybiB2YWx1ZSBhbmQgdmVyYm9zZSBlcnJvciB3aGVuIG5vIGRldmljZQoJZm91bmQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglVc2UgU2VhcmNoUGF0aCB0byB0ZXN0IGZvciBleGlzdGFuY2Ugb2YgcHJvZ3JhbXMgaW4gbHBDbWRMaW5lCglwcm9jZXNzaW5nLiBGb3IgbHBBcHBsTmFtZSBkbyBub3QgYXBwZW5kICIuZXhlIiBhbmQgdXNlCglET1NGU19HZXRGdWxsTmFtZSB0byBsb2NhdGUgdGhlIHByb2dyYW0uIE1vdmUgbW9kdWxlIGZpbmQgcHJvY2VzcwoJYWZ0ZXIgZmxhZyB0ZXN0aW5nIGFuZCBwcm92aWRlIHF1aWNrIGV4aXQgaWYgbm90IGZvdW5kLgoKCSogd2luZG93cy9kaWFsb2cuYzogU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCUltcGxlbWVudGVkIGRpYWxvZyB1bml0cyAtPiBwaXhlbHMgY29udmVyc2lvbiB2ZXJ5IGNsb3NlIHRvIGhvdyBpdCdzCglhY3R1YWxseSBkb25lIGJ5IFdpbmRvd3MuCgpTYXQgSnVuICA1IDE1OjIzOjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvYmluZGN0eC5jLCBvbGUvbW9uaWtlci5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglTb21lIG5vbi10aHJlYXRlbmluZyBmaXhlcyB0byBzb21lIGhlYWRlcnMsIGFzIHdlbGwgYXMgc29tZSBjYXN0aW5nCgljaGFuZ2VzIHRoYXQgbWFrZSB3aW5lbGliIG1vcmUgd2luMzIgY29kZSBjb21wYXRpYmxlLgoKCSogZmlsZXMvZHJpdmUuYywgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCTxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglTdHViIGZvciBTZXRWb2x1bWVMYWJlbCgpLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgYmFjayBsb3N0IHRyZWF0bWVudCBvZiBIV05EX1RPUE1PU1QuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglUcnkgdG8gaW1wcm92ZSBDb25maWd1cmVOb3RpZnkgZXZlbnQgcHJvY2Vzc2luZy4KCgkqIG9iamVjdHMvcGVuLmM6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglBbGxvdyBwZW5zIHdpdGggc3R5bGVzIGdyZWF0ZXIgdGhhbiBQU19JTlNJREVGUkFNRSB0byBiZSBjcmVhdGVkIHdpdGgKCUV4dENyZWF0ZVBlbi4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgb2xlL3R5cGVsaWIuYywgb2xlL3R5cGVsaWIuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglSZWFkL2xvYWQgdHlwZSBsaWJyYXJpZXMuIEltcGxlbWVudGF0aW9uIG9mIElUeXBlTGliLCBJVFlwZUluZm8sCglJVHlwZUxpYjIgYW5kIElUeXBlSW5mbzIgbWV0aG9kcy4KCgkqIG9sZS9vbGUyZGlzcC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWxsb3cgTlVMTCBhcyBhcmd1bWVudCB0byBTeXNGcmVlU3RyaW5nIGluIGFjY29yZGFuY2Ugd2l0aCBTREsuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCS0gbW9yZSB1cC10by1kYXRlIGRlc2NyaXB0aW9uIG9mIHNvdXJjZSB0cmVlCgktIGJldHRlciBleGFtcGxlIG9mIHJlcXVpcmVkIGNvbW1lbnRzIGZvciBhbiBBUEkgaW1wbGVtZW50YXRpb24KCS0gcmVwbGFjZW1lbnQgb2YgV0lORV9QQUNLRUQgYnkgInBzaHBhY2sxLmgiLCBldGMuCgktIG5hbWluZyBjb252ZW50aW9ucyBmb3Igbm9uLWFwaSBjYWxscyBhbmQgdHlwZXMKCS0gbG9jYXRpb24gY29udmVudGlvbnMgZm9yIG5vbi1hcGkgaGVhZGVyIGZpbGVzIGFuZCBwcm90b3R5cGVzCgoJKiByZWxheTMyL21wci5zcGVjLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd25ldC5oLCBtaXNjL25ldHdvcmsuYzoKCVJvYmVydCBXIEhhbGwgPGJvYmhAbi1jYW50cmVsbC5kZW1vbi5jby51az4KCUFkZGVkIDIgc3R1YnMuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBiZWhhdmlvdXIgb2YgQWxsb2MuLlRodW5rbGV0Q2FsbGJhY2tbRXhdIGZvciBOVUxMIHRhcmdldC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaW4gRVZFTlRfUXVlcnlaT3JkZXIuCglGaXhlZCBwb3RlbnRpYWwgWCBzeW5jaHJvbml6YXRpb24gcHJvYmxlbSBpbiBYMTFEUlZfV05EX1NldEhvc3RBdHRyLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb3JyZWN0IHNlYXJjaCBvcmRlciBpbiBTZWFyY2hQYXRoIGZvciBXaW4gMy4xLzk1Lzk4LiBTdGlsbCBicm9rZW4gZm9yIE5ULgoKCSogd2luZG93cy93aW4uYzogU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCW8gY2hlY2sgZm9yIGJvdGggQ1dfVVNFREVGQVVMVCBhbmQgQ1dfVVNFREVGQVVMVDE2LgoJbyBpZiB4IGlzIENXX1VTRURFRkFVTFQgKG9yIENXX1VTRURFRkFVTFQxNikgYW5kIHkgaXMgKm5vdCoKCSAgQ1dfVVNFREVGQVVMVCAob3IgQ1dfVVNFREVGQVVMVDE2KSB0aGVuIHVzZSB5IGFzIGEgc2Vjb25kCgkgIHBhcmFtZXRlciB0byBTaG93V2luZG93KCkuIFNvbWUgYXBwcyAoQ0FMQy5FWEUgZm9yIFdpbjk4CgkgIGlzIG9uZSBvZiB0aGVtKSB1c2UgdGhpcyB1bmRvY3VtZW50ZWQgZmVhdHVyZSB0byBjcmVhdGUKCSAgaGlkZGVuIHdpbmRvdyB3aXRoIFdTX1ZJU0lCTEUgc3R5bGUgc2V0LgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIERQQV9Mb2FkU3RyZWFtIGFuZCBzdHViIGZvcgoJRFBBX1NhdmVTdHJlYW0uICBUaGFua3MgdG8gRXJpYyBLb2hsIChla29obEBhYm8ucmhlaW4temVpdHVuZy5kZSkgZm9yCgl0aGUgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBhbmQgcGFyYW1ldGVyIGluZm9ybWF0aW9uLgoKCSogZGVidWdnZXIvc3RhYnMuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1ha2UgaXQgcG9zc2libGUgdG8gbGluayBXaW5lIHN0YXRpY2FsbHkgKGF0IGxlYXN0IG9uIFJlZEhhdCA2LjApLgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdoZW4gbG9va2luZyBpbnRvIHN5cyBtZW51LCBjaGVjayBpZiBpdGVtcyBhcmUgcHJlc2VudCBiZWZvcmUKCWRlcmVmZXJlbmNpbmcuCgoJKiBkb2N1bWVudGF0aW9uL0F0dGljL3dpbmUubWFuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUF1dG9jb25maWd1cmUgdGhlIGRpcmVjdG9yaWVzIGluIHRoZSBtYW5wYWdlLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgRHVtbXlNb3Rpb25Ob3RpZnkgRVZFTlQgZHJpdmVyIHJvdXRpbmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBdXRvY29uZmlndXJlIHRoZSBkaXJlY3RvcmllcyBpbiB0aGUgbWFucGFnZS4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFkZCBzdHViIGZvciBMb2NrRmlsZUV4IChLRVJORUwzMi41MTMpLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb246CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUN1cnJlbnQgc3RhdHVzIG9mIFdpbmUgb24gaW50ZXJuYXRpb25hbGlzYXRpb24uCgoJKiBjb250cm9scy9idXR0b24uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvIG5vdCBwcm9jZXNzIFdNX0xCVVRUT05VUCBtZXNzYWdlIGluIEJ1dHRvblduZFByb2MoKQoJd2hlbiB0aGUgbW91c2UgaXMgbm90IGNhcHR1cmVkLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBvYmplY3RzL2RjLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZyb20gQ3JlYXRlQ29tcGF0aWJsZURDLCBwYXNzIHRoZSBkZXZpY2UgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlCglzb3VyY2UgREMgaW4gb3JkZXIgdG8gYWxsb3cgUFNEUlZfQ3JlYXRlREMgdG8gbG9jYXRlIHRoZSBwcmludGVyIGluZm8KCWZvciB0aGUgZGV2aWNlLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGRpZ2l0YWwgdmlkZW8gaW50ZXJmYWNlCglGaXhlZCBhIGZldyBidWdzIChkZXZpY2UgbmFtZXMgYXJlIG5vIGxvbmdlciBjb252ZXJ0ZWQgdG8gdXBwZXIgY2FzZSwKCWFkZGVkIGNhbGwgYmFjayB3aW5kb3csIGFsbCBzdHJ1Y3R1cmVzIG1vdmVkIHRvIDMyIGJpdC4uLikuCgoJKiBpZjE2MzIvdGh1bmsuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXb3JrYXJvdW5nIGdjYyAyLjcuMi54IHNpZyAxMSBpc3N1ZS4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIChzdGlsbCBpbmNvbXBsZXRlKSBoYW5kbGluZyBvZiBNQ0lfQlJFQUsgY29tbWFuZC4KCgkqIGRvY3VtZW50YXRpb24vbm8td2luZG93czogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwZWVkdXAgZW5oYW5jZW1lbnQgZm9yIHRoZSA4LT4xNiBhbmQgOC0+MzIgY29weSBsb29wIGhvdHNwb3RzLAoJdXNpbmcgYSBmYXN0ZXIgZ2VuZXJpYyByb3V0aW5lIGFuZCBzb21lIGlubGluZSBhc3NlbWJseSBmb3IgaTM4NgoJKGNsZWFudXBzIGJ5IE92ZSkuCgpGcmkgSnVuICA0IDE5OjQ5OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jOgoJTWFkZSBoYW5kbGUgdGFibGUgYSBzZXBhcmF0ZSBvYmplY3QuCglHbG9iYWwgaGFuZGxlIHRhYmxlIGlzIG5vIGxvbmdlciBib3VuZCB0byBhIHByb2Nlc3MuCglSZW1vdmVkIHNwZWNpYWwgaGFuZGxpbmcgb2YgdGhlIGluaXRpYWwgcHJvY2Vzcy4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oOgoJQWRkZWQgb3B0aW9uYWwgZGVidWdnaW5nIGNvZGUgaW4gb2JqZWN0IG1hbmFnZW1lbnQuCgpTYXQgTWF5IDI5IDE0OjI3OjI3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmM6CglHb3QgcmlkIG9mIFRIUkVBRF9Jbml0RG9uZS4KCU1hZGUgVEhSRUFEX0N1cnJlbnQoKSBpbmxpbmUuCglNb3ZlZCBzZXJ2ZXIgdGlkIGludG8gVEVCLgoKCSogd2luZG93cy9kaWFsb2cuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVJlaW1wbGVtZW50ZWQgdGhlIENoZWNrUmFkaW9CdXR0b24gZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgaW5jb3JyZWN0IGxvb2t1cCBvZiBiYWNrZ3JvdW5kIGNvbG9yLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHByb2JsZW1zIHdoZW4gdXNpbmcgbXVsdGlwbGUgc3R5bGUgZmxhZ3MgdG9nZXRoZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBhIHByb2JsZW0gd2hlbiB1c2luZyBzdHJpbmcgcmVzb3VyY2VzIGFzIHRvb2x0ZXh0LgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBiZWhhdmlvciBvZiB0aGUgZm9jdXMgd2hlbiBhIHBhcmVudCB3aW5kb3cgaXMgZGlzYWJsZWQuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUZpeGVkIGEgYnVnIHdoaWNoIGNhdXNlcyB0aGUgUG9seUJlemllciB0byBub3QgYmUgdXBkYXRlZCBvbiByZWRyYXcKCSh3aGVuIHlvdSB3YW50IHRoZW0gdG8gYmUpLgoKCSogd2luZG93cy9pbnB1dC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSB1bm5lY2Vzc2FyeSB3YXJuaW5nIGluIFRyYW5zbGF0ZUFjY2VsYXRvci4KCgkqIHNlcnZlci9oYW5kbGUuYzoKCUZpeGVkIGR1cGxpY2F0ZV9oYW5kbGUgdG8gd29yayB3aXRoIHBzZXVkby1oYW5kbGVzIChyZXBvcnRlZCBieSBNYXJjdXMKCU1laXNzbmVyKS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL3Zlci92ZXIxNi5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS92ZXIuaCwgaW5jbHVkZS93aW52ZXIuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCXZlci5oIGlzIGEgbGVnYWN5IGhlYWRlci4gd2ludmVyLmggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KCgkqIGRsbHMvdGFwaTMyL3Bob25lLmMsIG1pc2MvY3J0ZGxsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCS0gUmVpbXBsZW1lbnRlZCB0aGUgc2Nyb2xsaW5nIHVzaW5nIFNldFNjcm9sbEluZm8gYW5kIEdldFNjcm9sbEluZm8uCgktIEltcGxlbWVudGVkIExWTV9GSU5ESVRFTSBtZXNzYWdlLgoJLSBBZGRlZCBzb21lIG5ldyB3aW5kb3cgc3R5bGVzLgoJLSBGaXhlZCBzb21lIGJ1Z3MgYW5kIGV4dGVuZGVkIGEgbnVtYmVyIG9mIGV4aXN0aW5nIGZ1bmN0aW9ucy4KCS0gTW9kaWZpZWQgc2VsZWN0aW9uIGZ1bmN0aW9ucyB0byBzdXBwb3J0IGFyZWEgc2VsZWN0aW9uIChmb3IgZ3JvdXAKCSAgc2VsZWN0aW9uIGluIExWU19JQ09OIGFuZCBMVlNfU01BTExJQ09OKS4KCgkqIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIG1pc3NpbmcgZXZlbnQgbm90aWZpY2F0aW9ucy4gU29tZSBtb3JlIGRlYnVnZ2luZwoJbWVzc2FnZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSaWtoYXJkdXIgRWdpbHNzb24gPHJpa2FyZHVyQHNreS5mcj4KCUljZWxhbmRpYyBrZXlib2FyZCBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGJldHRlciBkZWJ1ZyBvdXRwdXQgZm9yIHN1cmZhY2UgY3JlYXRpb24KCS0gYWRkZWQgKGV4cGVyaW1lbnRhbCkgRElCU2VjdGlvbiBpbXBsZW1lbnRhdGlvbiBvZiBHZXREQyAvIFJlbGVhc2VEQwoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCB3YXJuaW5nLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJU3VwcG9ydCBUUE1fUkVUVVJOQ01EIGluIFRyYWNrUG9wdXBNZW51LgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCA8cmV0dXJuPiBrZXkgKHNvbWVob3cgd2UgZ2V0IGEgY29udHJvbCBrZXlzdGF0ZSkuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGNvbXBpbGF0aW9uIGVycm9zIG9uIG5vbi1MaW51eCBzeXN0ZW1zLgoKCSogaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBUUkFDRSBkZWZpbmUgd2hlbiBOT19ERUJVR19NU0dTIHdhcyBkZWZpbmVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIGZvciBTSFZhbGlkYXRlVU5DLgoKCSogZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRhcHRlZCB0byB0aGUgbmV3IGRsbCByZXNvdXJjZSBoYW5kbGluZyBieSBCZXJ0aG8gU3R1bHRpZW5zLgoKTW9uIE1heSAyNCAxNTowMjoxOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9zaGVsbC5jOiBSZWxlYXNlIHRoZSBXaW4xNkxvY2sgYmVmb3JlIGNhbGxpbmcgV2luRXhlYy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCVJlbW92ZWQgcHJvY2VzcyBhcmd1bWVudCB0byBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCByZW1haW5pbmcgaW5pdGlhbGlzYXRpb25zIHRvIHRoZSBuZXcgcHJvY2VzcyBjb250ZXh0LgoJU2h1ZmZsZWQgdGhpbmdzIGFyb3VuZCBhIGJpdCBpbiBQUk9DRVNTX1N0YXJ0IHRvIGF2b2lkIGRlYWRsb2Nrcy4KCUNoYW5nZWQgUFJPQ0VTU19DYWxsVXNlclNpZ25hbFByb2MgdG8gYXZvaWQgYWNjZXNzaW5nIGFub3RoZXIgcHJvY2VzcwoJYWRkcmVzcyBzcGFjZS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgc3VwcG9ydCBmb3IgZHVtcGluZyB2YXJpYWJsZS1zaXplIGRhdGEgb2Ygc2VydmVyIHJlcGxpZXMuCglBZGRlZCBjbWRfbGluZSBhbmQgY21kX3Nob3cgaW4gbmV3X3Byb2Nlc3MgcmVxdWVzdC4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWZpeGVkIGJ1aWx0aW4gbW1zeXN0ZW0uZGxsIGluaXQgc2VxdWVuY2UKCgkqIG11bHRpbWVkaWEvQXR0aWMvaW5pdC5jLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglyZW1vdmVkIG9ic29sZXRlZCBpbml0LmMgc291cmNlIGZpbGUKCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXJlbW92ZWQgdW5uZWNlc3NhcnkgTUNJIGRyaXZlcnMgZW50cnkgcG9pbnQKCWFkZGVkIHVuZG9jdW1lbnRlZCBtbXN5c3RlbSBmdW5jdGlvbnMKCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UKCW5vdyBjYWxsaW5nIHRpbWUgaW5pdCBmdW5jdGlvbiBmcm9tIG1tc3lzdGVtIGFuZC9vciB3aW5tbSBlbnRyeSBwb2ludAoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWluY2x1ZGVkIERMTCBpbml0IHNlcXVlbmNlIChmcm9tIG9ic29sZXRlZCBpbml0LmMpCglmaXhlZCBidWlsdGluIG1tc3lzdGVtLmRsbCBpbml0IHNlcXVlbmNlCglmaXhlZCBQbGF5U291bmQgd2hlbiB1c2VkIHdpdGggYW4gYXN5bmNocm9ub3VzIGF1ZGlvIGRyaXZlcgoJZml4ZWQgbWlkaVN0cmVhbSBmdW5jdGlvbnMgZm9yIFN0b3AvUGF1c2UvUmVzdGFydCBmdW5jdGlvbnMKCWZpeGVkIGVycm9yIGhhbmRsaW5nIGluIHdhdmVPdXRPcGVuIHdpdGggUVVFUllfRk9STUFUIGZsYWcKCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWluY2x1ZGVkIG1pZGkgaW5pdCBzZXF1ZW5jZSAoZnJvbSBvYnNvbGV0ZWQgaW5pdC5jKQoJbW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZQoJc2ltcGxpZmllZCBjb2RlIHdpdGggdXNpbmcgbmV3IGNvbmZpZ3VyYXRpb24gY29uc3RhbnQgKEhBVkVfT1NTX01JREkpCglmaXhlZCBlcnJvbmVvdXMgd2FybmluZ3MKCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW5jbHVkZWQgbWNpIGluaXQgc2VxdWVuY2UgKGZyb20gb2Jzb2xldGVkIGluaXQuYykKCW1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UKCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglvdXRwdXQ6IGJldHRlciBpbnRlcm5hbCB0aHJlYWQgaW50ZXJmYWNlIChvcnRob2dvbmFsaXphdGlvbiBvZiBzdGF0ZXMgYW5kIGV2ZW50cykKCW91dHB1dDogcmVtb3ZlZCB1c2Ugb2YgRFNQX0lPQ1RMX0dFVE9TUEFDRQoJb3V0cHV0OiBmaXhlZCBsYXRlbmN5IGluIHJlc2V0IG1lc3NhZ2VzIGhhbmRsaW5nCglvdXRwdXQ6IHJlcGxhY2VkIHNvbWUgcG9sbGluZyBtZWNoYW5pc21zIHdpdGggYmxvY2tpbmcgb25lcwoJb3V0cHV0OiBmaXhlZCBnZXQvc2V0IHZvbHVtZSBmdW5jdGlvbnMKCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1vdmVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlCglmaXhlZCBidWdzIGluIHBhdXNlL3BsYXkvc3RvcCBmdW5jdGlvbnMKCWZpeGVkIHNpZ25hdHVyZSBvZiBkcml2ZXIgZW50cnkgcG9pbnQKCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1vdmVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlCglmaXhlZCBidWdzIGluIHBhdXNlL3BsYXkgZnVuY3Rpb25zCglmaXhlZCBzaWduYXR1cmUgb2YgZHJpdmVyIGVudHJ5IHBvaW50CgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0cmFjZXMuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZSBleHRyYW5lb3VzIHdpbnVzZXIxNi5oLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgcHJpbnRmIGludG8gVFJBQ0UuCgoJKiBkZWJ1Z2dlci9leHByLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgdHlwb3MuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIHdoZW4gYmFja3RyYWNraW5nIHRoZSBzdGFjayBpZiBmcmFtZXMgYXJlIGNvcnJlY3QgKHJlYWRhYmxlKS4KCgkqIHdpbmRvd3MvZXZlbnQuYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvd2luc29jay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL3dpbnNvY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgV0lOU09DSyBuZXR3b3JrIElPIGV2ZW50IGhhbmRsaW5nIHRvIHNwZWNpYWwgdGhyZWFkLgoJUmVtb3ZlZCBFVkVOVF9XYWl0TmV0RXZlbnQsIGludHJvZHVjZWQgYSBnbG9iYWwgc2NoZWR1bGVyIGV2ZW50LgoKCSogbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdhaXQgdW50aWwgY2hpbGQgaW5pdGlhbGl6ZWQgYmVmb3JlIHJldHVybmluZyBmcm9tIFBST0NFU1NfQ3JlYXRlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgcmVnaXN0ZXIgZnVuY3Rpb25zIHdpdGggYXJndW1lbnRzIGZvciBMb2dBcGlUaGsuLi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUNsZWFuZWQgdXAgTElTVFZJRVdfS2V5RG93biBieSB1c2luZyBMSVNUVklFV19HZXROZXh0SXRlbS4gIFJlbW92ZWQgdW51c2VkCgl2YXJpYWJsZSBpbiBMSVNUVklFV19HZXROZXh0SXRlbS4KClN1biBNYXkgMjMgMjA6MDI6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJVXNlIHRoZSBuZXcgZGVidWcgZnVuY3Rpb25zIHRvIHNlbmQgZGVidWcgZXZlbnRzIGF0IGFwcHJvcHJpYXRlIHBsYWNlcy4KCVBhc3MgdGhlIHByb2Nlc3MgY3JlYXRpb24gZmxhZ3MgdG8gUFJPQ0VTU19DcmVhdGUuCgoJKiBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi9wcm9jZXNzLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2xzdHIuYzoKCUltcGxlbWVudGVkIHRoZSBXaW4zMiBkZWJ1ZyBBUEkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGRlYnVnIGV2ZW50cyBzdXBwb3J0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTWF5IDIzIDEwOjI1OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sZHQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywgbWVtb3J5L3ZpcnR1YWwuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvc2VydmljZXMuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29kZV9wYWdlLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXJyb3IuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9pbml0LmMsIHdpbjMyL3Byb2Nlc3MuYywgd2luMzIvc3RydWN0MzIuYywgd2luMzIvdGhyZWFkLmMsIHdpbjMyL3RpbWUuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIG1lbW9yeS9hdG9tLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBkd0ZsYWdzIG11c3QgZGVzY3JpYmUgdGFyZ2V0IHByb2Nlc3MgaW4gVXNlclNpZ25hbFByb2MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgdG8gU0hFTEwzMl82NTQgc3R1Yi4gIEZpeGVzIGNyYXNoIGluIFdpbjk4CglFeHBsb3Jlci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUxJU1RWSUVXX0tleURvd246IEludmFsaWRhdGUgdGhlIGxpc3R2aWV3IHdpbmRvdyBvbmx5IHdoZW4gdGhlCglzZWxlY3RlZCBpdGVtIGNoYW5nZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1pc2Mvd3NwcmludGYuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBfRGVidWdPdXRwdXQgKEtFUk5FTC4zMjgpLCBMb2dBcGlUaGsgKEtFUk5FTC40MjMpLCBMb2dBcGlUaGtMU0YKCShLRVJORUwzMi40MiksIExvZ0FwaVRoa1NMIChLRVJORUwzMi40NCksIExvZ0NCVGhrU0wgKEtFUk5FTDMyLjQ3KSwKCWFuZCBTU0NvbmZpcm1TbWFsbFN0YWNrIChLRVJORUwuNzA0KS4KCgkqIGlmMTYzMi9kaXNwbGF5LnNwZWMsIHdpbmRvd3MvZGlzcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggdHlwbyAod3JvbmcgRElTUExBWS5DaGVja0N1cnNvciBvcmRpbmFsKS4KCVN1cGVyZmx1b3VzIEZJWE1FIGNvbnZlcnRlZCB0byBUUkFDRSBpbiBDaGVja0N1cnNvci4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBzeXNsZXZlbCByZWxheSBjaGVjayB3YXMgdG9vIHN0cmljdC4KCgkqIHNlcnZlci9tYXBwaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHVzZSBwYWdlc2l6ZSBhbGlnbmVkIHNpemVfbG93IHRvIGdyb3cgbWFwcGVkIGZpbGUsIGJ1dCBvcmlnaW5hbAoJc2l6ZV9sb3cuIChmaXhlcyBIZWlzZXMgSW5kZXggUmVnaXN0ZXIpCgpTYXQgTWF5IDIyIDE5OjIyOjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgc29tZSBtb3JlIGRlYnVnIG91dHB1dAoJLSBjb3JyZWN0ZWQgYSBzbGlnaHQgYnVnIGluIERHQSBEaXJlY3REcmF3IGNyZWF0aW9uCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1ham9yIG1lbW9yeSBsZWFrIGluIHRoZSB3aW5kb3cgbWFuYWdlbWVudCBjb2RlLgoKCSogd2luZG93cy93aW5wb3MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbiBTZXRXaW5kb3dQb3MgaWYgY2hhbmdpbmcgWiBvcmRlciBhbmQgY2hpbGQgd2luZG93IG5vdCB5ZXQgaW4gaXRzCglwYXJlbnQgbGlzdCwgZG8gbm90IGxpbmsgaXQgaW4gV0lOUE9TX1Nob3dJY29uVGl0bGUsIGNoZWNrIGZvciByZXR2YWwKCW9mIFdJTl9GaW5kV25kUHRyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRGlzYWJsZSBwYXNzaW5nIGRldmljZSBjb250ZXh0IHRvIFgxMURSVl9ESUJfQnVpbGRDb2xvck1hcCB3aGVuIFJHQgoJY29sb3JtYXAgaXMgdXNlZC4KCgkqIGRlYnVnZ2VyL2RiZy55OiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGZyZWV6ZSBvdGhlciB0aHJlYWQgd2hpbGUgaXQgbWF5IGhvbGQgdGhlIFggY3JpdGljYWwgc2VjdGlvbi4KCgkqIGluY2x1ZGUvZGlzcGxheS5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVXNlclJlcGFpbnREaXNhYmxlMTYoKS4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIEVWRU5UX1dhaXROZXRFdmVudCgpIGNhbGxzLgoKCSogd2luZG93cy9pbnB1dC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIElzVXNlcklkbGUxNigpLgoKCSogaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIEVWRU5UXyBkcml2ZXIgY2hhbmdlcy4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gZXZlbnQgc3luY2hyb25pemF0aW9uIGNoYW5nZXMuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBYIGlucHV0IGV2ZW50IGhhbmRsaW5nIG91dCBvZiBFVkVOVF9XYWl0TmV0RXZlbnQgYW5kIGludG8KCXNlcnZpY2UgdGhyZWFkIGNhbGxiYWNrOyBtb3ZlZCBFVkVOVF9XYWl0TmV0RXZlbnQgb3V0IG9mIHRoZSBFVkVOVF8KCWRyaXZlci4gIENoYW5nZWQgd2luQ29udGV4dCB0byBob2xkIEhXTkQgaW5zdGVhZCBvZiBXTkQgKi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2hhbmdlIFotb3JkZXIgb2YgY2hpbGQgd2luZG93cyB3aGVuIGFjdGl2YXRpbmcuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBBZGRQcmludGVyQSwgQWRkUHJpbnRlckRyaXZlckEgYW5kIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnkKCU1vdmVkIHNvbWUgMTZiaXQgR0RJIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBmcm9tIHdpbnNwb29sLmggLT4gd2luZ2RpMTYuaAoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ3JlYXRlIGEgbmV3IGNvbmZpZ3VyYXRpb24gbWFuaWZlc3QgY29uc3RhbnQgSEFWRV9PU1NfTUlESS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgc2lsbHkgRUlOVFIgYnVnIHdpdGggc3RhcnRpbmcgZG9zbW9kLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCVNob3VsZCBjb21wYXJlIHRvIFgxMSBjb25zdGFudCAiTm9uZSIgc2luY2UgYSBjb2xvcm1hcCBpcyBhbiBYCglSZXNvdXJjZSBJRCBhbmQgbm90IGEgcG9pbnRlci4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglTdG9wIGEgbGlzdGJveCBidWcgdGhhdCBjYXVzZXMgYSBkaXYgYnkgemVybyB3aGVuIHRoZSBpdGVtIGhlaWdodAoJaXMgemVyby4gRG9lc24ndCBzb2x2ZSB0aGUgcm9vdCBvZiB0aGUgcHJvYmxlbSB0aG91Z2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYzoKCUFuZHJlIE1hbGFmYXlhIEJhcHRpc3RhIDxNYWxhZmF5YUBtaWxlbmlvMy5wdD4KCUFib3V0IGRpYWxvZyB0cmFuc2xhdGVkIHRvIFBvcnR1Z3Vlc2UuCgoJKiBpZjE2MzIvdGh1bmsuYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJdGFzay5oIHdhcyBpbmNsdWRlZCB0d2ljZS4gIFJlbW92aW5nIG9uZSBmaXhlZCBhIHNpZzExIGluIGdjYy0yLjcuMi4zLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgaWYgZGMgaGFzIGJlZW4gY3JlYXRlZCBiZWZvcmUgdXNpbmcgaXQuCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIGEgZmV3IG1vcmUgMzItPjE2IEVzY2FwZSBjb252ZXJzaW9ucy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoZWNrIGZvciBzeXNsZXZlbCB2aW9sYXRpb25zIHdoaWxlIHJlbGF5IGRlYnVnZ2luZy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS9zeXNsZXZlbC5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy93aW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wcm92ZWQgc3lzbGV2ZWwgaGFuZGxpbmcsIHN0b3JlIGN1cnJlbnRseSBoZWxkIHN5c2xldmVscyBpbiB0aHJlYWQKCWRhdGFiYXNlLCBXSU5fQ3JpdFNlY3Rpb24gY29udmVydGVkIHRvIHN5c2xldmVsLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglBZGRlZCBtbXN5c3RlbS5oIGluY2x1ZGUuCgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL3VzZXIuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBFeGl0S2VybmVsMTYgKHJlcGxhY2luZyBVU0VSX0V4aXRXaW5kb3dzKSwgRXhpdFByb2Nlc3MxNiwgYW5kCglNYXBQcm9jZXNzSGFuZGxlOyBzdHViIGZvciBCVU5OWV8zNTEuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgcHJvYyA9PSBOVUxMIGluIFRIVU5LX1NldERDSG9vayBjb3JyZWN0bHkuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgdW5kb2N1bWVudGVkIGNvbWJpbmF0aW9uCglHZXRQcml2YXRlUHJvZmlsZVN0cmluZ0Eoc2VjdGlvbiA9PSBOVUxMLCBlbnRyeSA9PSBOVUxMLCAuLi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglDbGVhbmVyIG51bGwgcG9pbnRlciBjaGVjayBpbiBIRUFERVJfSW5zZXJ0SXRlbUEgYW5kIEhFQURFUl9JbnNlcnRJdGVtVy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIEdldE5leHRJdGVtIGZvciB0aGUgTGlzdHZpZXcgY29udHJvbC4KCgkqIHNjaGVkdWxlci9zZXJ2aWNlcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUV4cGlyZSB0aW1lcnMgb24gZXhwaXJ5IHRpbWUgdG9vLCBub3QganVzdCBhZnRlci4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2JpbmRjdHguYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9pZnMuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tZW1sb2NrYnl0ZXMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZWZvbnQuYywgb2xlL29sZW9iai5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmMsIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJTWljcm9zb2Z0IGNvbSB2dGFibGUgY29tcGF0aWJpbGl0eSB3b3JrYXJvdW5kIGZvciBnKysuICBCYXNpY2FsbHkgYWRkcwoJYW4gb3B0aW9uYWwgOCBieXRlcyBwYWRkaW5nIHRvIENPTSBvYmplY3RzIHdoZXJlIHRoZSBSVFRJIHdvdWxkIGJlLgoKCSogaW5jbHVkZS9zeXNtZXRyaWNzLmgsIG1pc2Mvc2hlbGwuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIGFsbCBvY2N1cmVuY2VzIG9mIFNZU01FVFJJQ1NfeHggYW5kIHN5c01ldHJpY3NbU01feHhdIGJ5CglHZXRTeXN0ZW1NZXRyaWNzKFNNX3h4KSwgcmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGluY2x1ZGVzIG9mCglzeXNtZXRyaWNzLmguCgoJKiBtc2Rvcy9pbnQxNi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIElOVF9JbnQxNkFkZENoYXIuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUJ1Z2ZpeDogUHJldmVudCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gVFJBQ0UgYXJndW1lbnQgbGlzdCBpbgoJUkVTX0ZpbmRSZXNvdXJjZQoKCSogbG9hZGVyL2VsZmRsbC5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4ZWQgd3JvbmcgTkUgbW9kdWxlIHJlZ2lzdHJhdGlvbiBzbyB0aGF0IHJlc291cmNlcyB3b3JrLgoKCSogaWYxNjMyL3RodW5rLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNldCAlZWJ4IHRvIHBvaW50IHRvIHJlYWwgMTYtYml0IHN0YWNrIGluIENCQ2xpZW50VGh1bmtTTC4KCVBhc3MgJWVzaSBiYWNrLWFuZC1mb3J0aCBpbiBDQkNsaWVudFRodW5rU0woRXgpLgoJQ29weSBtb2RpZmllZCBidWZmZXJzIGJhY2sgYWZ0ZXIgcmV0dXJuIGZyb20gRlRfVGh1bmsuCglGaXggYnJva2VuIHJlY29nbml0aW9uIG9mIExTIHRodW5rbGV0cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVzZSBvZiB3aW4uaCwgc3lzbWV0cmljcy5oIGFuZCBhc3NvY2lhdGVkIFdJTkUgVVNFUiBpbnRlcm5hbAoJdmFyaWFibGVzLiBBZGRlZCBtaXNzaW5nIGluZm9QdHItPkJ1ZGR5ID0gaHduZEJ1ZDsgaW4gdXBkb3duLmMKCgkqIGRsbHMvY29tY3RsMzIvQXR0aWMvcHJvcHNoZWV0LmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Rvb2xiYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglUb29sYmFyIGN1c3RvbWl6YXRpb24gZGlhbG9nICh0YWtlIG9uZSkuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBHZXRUb3BXaW5kb3cgc28gaXQgd2lsbCBjb3JyZWN0bHkgaGFuZGxlIHRoZSBOVUxMIHBhcmFtZXRlci4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBzd2FwcGVkIEZyZWVMaWJhcnkgcmV0dXJuIHZhbHVlcy4gSGFuZGxlIEZyZWVMaWJyYXJ5KCAwICkgYmV0dGVyLgoJRml4IERMTF9QUk9DRVNTX0RFVEFDSCBjYWxsIHNlcXVlbmNlIGJ1Z3MgcmVzdWx0aW5nIGZyb20gbmVzdGVkCglGcmVlTGlicmFyeSBjYWxscy4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNwZWNzIGZvciBtaXhlckdldERldkNhcHMxNi9taXhlckdldElEMTYsIGZpeGVkIG1peEdldERldkNhcHMxNi4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQyMS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2VkIGdsb2JhbCBET1NfTE9MIGludG8gZnVuY3Rpb24gRE9TTUVNX0xPTCgpIGluIG9yZGVyIHRvIG9wZXJhdGUKCW9uIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuIEFkZGVkIERPU01FTV9Nb3ZlUG9pbnRlcnMoKSB0aGF0CglyZWxvY2F0ZXMgc2VsZWN0b3JzIHdoZW4gdGhlIERPUyBhZGRyZXNzIHNwYWNlIGNoYW5nZXMgKGkuZS4gd2hlbgoJZG9zbW9kIGlzIHNwYXduZWQsIHBhcnRpY3VsYXJseSBmcm9tIFdpbjE2IGFwcHMgdGhhdCB1c2VzIERQTUkgdG8KCWV4ZWN1dGUgcmVhbC1tb2RlIGNvZGUpLiBNb3JlIGNvbXBsZXRlIERPUyBkZXZpY2UgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIE1aX0N1cnJlbnQoKSAocmV0dXJucyBjdXJyZW50IExQRE9TVEFTSykgYW5kIERPU1ZNX1dhaXQoKQoJKERPU1ZNIGlkbGUgbWVzc2FnZSBsb29wKSwgYW5kIGZpZWxkcyBoQ29uSW5wdXQgYW5kIGhDb25PdXRwdXQuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQWRkIHNvbWUgbnVsbCBjaGVja2luZyBpbiB0aGUgR2V0L1NldEJpdG1hcEJpdHMgZnVuY3Rpb25zLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgaW5pdCBmdW5jdGlvbiBmb3IgQ1JURExMLCBhbGxvY2F0ZSBzdGRpby9zdGRlcnIvc3Rkb3V0IG9uCglETExfUFJPQ0VTU19BVFRBQ0gsIGluY3JlYXNlIGJ1ZmZlciBmb3IgdmZwcmludGYoKSAoV2luOTUgYXJwLmV4ZQoJbmVlZHMgMS4zS0IpLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgRnJlZUJTRCAzLjAgdG8gREVCVUdfY2hlY2ttYXBfYmFkKCkuCgoJKiBtaXNjL3dpbnNvY2suYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJUHJpbnQgYSBtb3JlIGVmZmVjdGl2ZSAoYW5kIHZpc2libGUpIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBhcHBsaWNhdGlvbgoJY2FuJ3QgY3JlYXRlIGEgc29ja2V0IHdpdGggdHlwZSA9PSBTT0NLX1JBVy4KCgkqIGluY2x1ZGUvbW1yZWcuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIG1vcmUgZGVmaW5lcyBmb3IgbXVsdGltZWRpYS4KCgkqIG1zZG9zL3Z4ZC5jLCB3aW4zMi9kZXZpY2UuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJU29tZSBzdHVicyBmb3IgcGNjYXJkIHZ4ZCB0byBkZWJ1ZyB0aGUgbmF0aXZlIHNoZWxsMzIuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2Ugc2VydmljZSB0aHJlYWQgZm9yICJ0cnVlIiBtdWx0aW1lZGlhIHRpbWVycy4KCVJlbW92ZWQgaW1wbGVtZW50YXRpb24gb2YgZmFrZSBtdWx0aW1lZGlhIHRpbWVycy4KCVNldCBtaW5pbXVtIHJlc29sdXRpb24gdG8gMTAgbXMgKHRoZSB0aW1pbmcgcmVzb2x1dGlvbiBvZiB0aGUgTGludXgKCWtlcm5lbCkuIEZpeGVkIGEgY291cGxlIG9mIGZsYXdzLgoKCSogbWlzYy9zcHkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCBwcmludGluZyBvdXQgb2Ygc29tZSBzdHJ1Y3R1cmVzLgoKVGh1IE1heSAyMCAxNjo0MDoyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc29ja2V0LmM6CglTZXQgb25seSB0aGUgY2xpZW50IHNvY2tldCBpbiBub24tYmxvY2tpbmcgbW9kZSBpbnN0ZWFkIG9mIGFsbCBmZHM7CglzaG91bGQgYXZvaWQgcHJvYmxlbXMgd2l0aCBzdGRpbyBoYW5kbGVzLgoKTW9uIE1heSAxNyAxNjoyMDo1MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL0F0dGljL3Nwb29sZXIuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2RjLmMsIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL2RyaXZlci5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2Vudi5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcGQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgRG9jdW1lbnRQcm9wZXJ0aWVzLCBEZXZpY2VDYXBhYmlsaXRpZXMsIGJlZ2lubmluZ3Mgb2YKCU9wZW4vR2V0L0Nsb3NlUHJpbnRlci4gIEFkZGl0aW9ucyB0byBQU0RSVl9EZXZpY2VDYXBhYmlsaXRpZXMuCglTcGxpdCBvZmYgV0lOU1BPT0wgaW50byBpdHMgb3duIGRpcmVjdG9yeS4KCVNldmVyYWwgZnVuY3Rpb25zIGFkZGVkIHRvIERDX0Z1bmNzLgoJQmFzZWQgbGFyZ2VseSBvbiBhIHBhdGNoIGJ5IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZ2xpZGUyeCBsb2Fkb3JkZXIgaXMgInNvLG5hdGl2ZSIuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgc2hvcnRjdXRzIC0gZm9sbG93cyBqdW1wcyBpbiB0cnlpbmcgdG8gYXZvaWQgc3dpdGNoaW5nIHRvCglyZWFsIG1vZGUgdW5uZWNlc3NhcmlseS4KCgkqIGRvY3VtZW50YXRpb24vbm8td2luZG93czogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVcGRhdGVkIGFuZCBpbXByb3ZlZCBpbnN0cnVjdGlvbnMuCgoJKiBkZWJ1Z2dlci9leHByLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSAiV2luZS1kYmc+c2V0ICpzZWc6b2ZmID0gdmFsIiB3b3JrIChwcmV2aW91c2x5IG9ubHkKCSJXaW5lLWRiZz5zZXQgKm9mZiA9IHZhbCIgd29ya2VkKS4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYzoKCUp1a2thIEthbmdhcyA8anRrYW5nYXNAbmljLmZpPgoJV2hlbiBvcGVuaW5nIHRoZSBmaWxlIHdlIGRvbid0IG5lZWQgTU1JT19FWENMVVNJVkUKCXJpZ2h0cy4gTU1JT19ERU5ZV1JJVEUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCVByZXZlbnQgY3Jhc2ggaW4gc3R1YiBvZiBTaGVHZXREaXJXLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJRnVydGhlciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRmlsZU1lbnUuCgoJKiB3aW5kb3dzL21kaS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCVNldCB0aGUgZGVmYXVsdCBtZW51IGl0ZW0gb2YgdGhlIHdpbmRvdyBtZW51CgoJKiB3aW5lLmluaTogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ2hhbmdlZCBzZXJpYWwgcG9ydHMgaW4gd2luZS5pbmkgdG8gL2Rldi90dHlTWCBmcm9tIC9kZXYvY3VhWCBpbgoJYWNjb3JkYW5jZSB3aXRoIExpbnV4IDIuMiBDaGFuZ2VzIGZpbGUuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsZWFzZSBXaW4xNkxvY2sgd2hlbiBjYWxsaW5nIExvYWRMaWJyYXJ5MzIgZnJvbSAxNi1iaXQgY29kZS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIFRIVU5LX1NldERDSG9vayB3aGVuIHVzaW5nIG5hdGl2ZSBVU0VSLgoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEZUX1Byb2xvZ1ByaW1lIHdhcyBicm9rZW4gZHVlIHRvIHJlbGF5IGNoYW5nZXMuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBzdHVicyBhZGRlZC4KCgkqIHdpbmRvd3MvaG9vay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN1c3BlbmQgd2luZG93IGxvY2tzIGJlZm9yZSBjYWxsaW5nIGhvb2sgcHJvY2VkdXJlLgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB3aW5kb3cgcmVmY291bnQgaGFuZGxpbmcgaW4gR2V0TmV4dERsZ0dyb3VwSXRlbS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIHN1cGVyZmx1b3VzIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAbXVkLmRlPgoJWGxpYl9JRGlyZWN0RHJhd1N1cmZhY2U0SW1wbF9GbGlwIHNob3VsZCBzaG93ICdmbGlwdG8nIHN1cmZhY2UsIG5vdAoJcHJldmlvdXMgb25lLiAocmVwb3J0ZWQgYnkgT3ZlKQoKU3VuIE1heSAxNiAxNzoxMTo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgZGVidWcgZXZlbnQgZGVmaW5pdGlvbnMuCgoJKiBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUFkYXB0ZWQgdG8gbmV3IHNlbGVjdCBpbnRlcmZhY2UuCglGaXhlZCBidWcgaW4gKl9zaWduYWxlZCByb3V0aW5lcyB0aGF0IGNvdWxkIGNhdXNlIGJ1c3ktd2FpdGluZyBpbiB0aGUKCXNlbGVjdCBsb29wLgoKCSogc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NvY2tldC5jOgoJQ2hhbmdlZCBzZWxlY3QgaW50ZXJmYWNlLCBzZXBhcmF0ZWQgdGltZW91dHMgZnJvbSBmaWxlIGRlc2NyaXB0b3JzLgoKCSogc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmg6CglNb3ZlZCBwcm9jZXNzIHN0cnVjdHVyZSBkZWZpbml0aW9uIHRvIHByb2Nlc3MuaC4KCUFkZGVkIHN1c3BlbmQvcmVzdW1lX3Byb2Nlc3MuCglNb3ZlZCBoYW5kbGUgdGFibGUgYmFjayBpbnRvIHRoZSBwcm9jZXNzIHN0cnVjdHVyZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglBZGRlZCBURUIgaW4gaW5pdF90aHJlYWQgcmVxdWVzdC4KClNhdCBNYXkgMTUgMTA6NTI6NTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2NlbXUvaW5zdHIuYzoKCVRyaWVkIHRvIGFkZCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gY3Jhc2hpbmcgb24gYSBzZWxlY3RvciBsb2FkIGJlY2F1c2UKCW9mIG1pc3NpbmcgTERUIHNoYXJpbmcgYmV0d2VlbiB0aHJlYWRzICh1bnRlc3RlZCkuCgoJKiBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL3RocmVhZC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIG1lbW9yeS92aXJ0dWFsLmM6CglTZXJ2ZXIgcmVvcmdhbml6YXRpb246CgktIG1vdmVkIHJlcXVlc3QgaGFuZGxlcnMgdG8gdGhlIHNwZWNpZmljIEMgZmlsZXMKCS0gbW92ZWQgaGFuZGxlIG1hbmFnZW1lbnQgdG8gaGFuZGxlLmMKCS0gbW92ZWQgc2VydmVyIHByaXZhdGUgaW5jbHVkZXMgdG8gc2VydmVyLyBpbnN0ZWFkIG9mIGluY2x1ZGUvc2VydmVyLwoKCSogTWFrZS5ydWxlcy5pbjogR2V0IGluY2x1ZGUgZmlsZXMgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkgZmlyc3QuCgpGcmkgTWF5IDE0IDE4OjM5OjM3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgV0lOX0dldFdpbmRvd0luc3RhbmNlIGJ5IEdldFdpbmRvd0xvbmdBKEdXTF9ISU5TVEFOQ0UpLAoJcmVtb3ZlZCB1bm5lY2Vzc2FyeSB3aW4uaCBpbmNsdWRlcywgYWRkZWQgc3lzbGV2ZWwuaCB0byBxdWV1ZS5jLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBDQkdldERyb3BwZWRDb250cm9sUmVjdCB0byBiZSBjb21wbGlhbnQgd2l0aCBXaW5kb3dzIEFQSS4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgd2luMzIvZXhjZXB0LmM6CglGaXhlZCBhIGZldyBidWdzLCBhbmQgaW1wcm92ZWQgdGhlIGV4Y2VwdGlvbiBtYWNyb3MgKGJhc2VkIG9uCglzdWdnZXN0aW9ucyBieSBTZXJnZWkgVHVyY2hhbm92KS4KCgkqIGRsbHMvdmVyL3ZlcjE2LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpcGMvZGRlX2F0b20uYywgaXBjL2RkZV9hdG9tX3Rlc3QuYywgaXBjL3NobV9ibG9jay5jLCBpcGMvc2htX2ZyYWdtZW50LmMsIGlwYy9zaG1fZnJhZ21lbnRfdGVzdC5jLCBpcGMvc2htX21haW5fYmxrLmMsIGlwYy9zaG1fc2VtYXBoLmMsIGlwYy9zaG1fc2VtYXBoX3Rlc3QuYywgaXBjL3dpbmVfdGVzdF9zdHViLmMsIHJlbGF5MzIvc25vb3AuYywgcmVsYXkzMi91dHRodW5rLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9pbnRlcm5hbC5jLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvZmlsdGVyLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvcGhvbmUuYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3h0ZXJtLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLgoKCSogd2luZG93cy9wYWludGluZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBpbnZhbGlkIHdpbmRvdyByZWZjb3VudCBoYW5kbGluZyBpbiBSRFdfUGFpbnQoKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeCBhIGRlYWRsb2NrIHdpdGggdGhlIHN5c3RlbSBtZXNzYWdlIHF1ZXVlIGJ5IGVuc3VyaW5nIHRoZSBzeXN0ZW0gbWVzc2FnZQoJcXVldWUgaXMgdW5sb2NrZWQgd2hpbGUgdGhlIGFjdHVhbCBtZXNzYWdlIGlzIGJlaW5nIHByb2Nlc3NlZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hlY2sgaWYgaW4gZGVwdGgtY29udmVyc2lvbiBtb2RlIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IgbWVzc2FnZQoJaW4gSURpcmVjdERyYXdQYWxldHRlSW1wbF9HZXRFbnRyaWVzLgoKVGh1IE1heSAxMyAxODo1MzowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0M0QsIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglSZXBsYWNlZCBhbGwgdGhlIE1lc2Egc3BlY2lmaWMgY29kZSBieSBHTFggY29kZS4gU2hvdWxkIHdvcmsgbm93IG9uCglhbnkgT3BlbkdMIGltcGxlbWVudGF0aW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogPFRUYXJyYW50QEV0bm90ZWFtLkl0PgoJQWRkZWQgSXRhbGlhbiBrZXlib2FyZCBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgY291cGxlIG9mIG1lbWNweSBlcnJvcnMuCgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgZml4IHRvIGhlbHAgbmF0aXZlIHdpbjk1IFByaW50RGxnIG9uIHRoZSB3YXkuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGlmMTYzMi93aW5hc3BpLnNwZWMsIGluY2x1ZGUvYXNwaS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgSW5zZXJ0SW5BU1BJQ2hhaW4gYW5kIGZpeGVkIG1pbm9yIHRoaW5ncy4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBxdWl0ZSBpbGwgd2luZG93IGxvY2tpbmcgY29kZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIGluZmluaXRlIGxvb3AgaW4gQ2hpbGRXaW5kb3dGcm9tUG9pbnRFeC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJLSBwcmV2ZW50IGNyYXNoIHdoZW4gR2V0TWVudURlZmF1bHRJdGVtIGlzIGNhbGxlZCBvbiBlbXB0eSBtZW51CgktIHNldCBkZWZhdWx0IGl0ZW0gb24gc3lzdGVtIG1lbnUKCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmg6CglBZGFwdGVkIGZvciBuZXcgcmVnaXN0ZXIgZnVuY3Rpb25zIHN1cHBvcnQgKEVTUF9yZWcgaW4gcmVnaXN0ZXIKCWZ1bmN0aW9ucyBub3cgcG9pbnRzIGFmdGVyIHRoZSBhcmd1bWVudHMpLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgdG9vbHMvYnVpbGQuYzoKCVdpbjMyIHJlZ2lzdGVyIGZ1bmN0aW9ucyBjYW4gbm93IGhhdmUgYXJndW1lbnRzLgoJU2ltcGxpZmllZCByZWxheSBkZWJ1Z2dpbmcgZm9yIHJlZ2lzdGVyIGZ1bmN0aW9ucy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvZGV2aWNlLmM6CglWeERDYWxsIGZ1bmN0aW9ucyBkbyBub3QgbmVlZCB0byBiZSAncmVnaXN0ZXInLgoKV2VkIE1heSAxMiAxNjoxMDo1MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogRml4ZWQgYnVnIEkgaW50cm9kdWNlZCBpbiByZWxheSBkZWJ1Z2dpbmcuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9BdHRpYy9leGNlcHQuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCB3aW4zMi9leGNlcHQuYzoKCUFkZGVkIG1hY3JvcyBhbmQgZGVmaW5pdGlvbnMgZm9yIHVzaW5nIGV4Y2VwdGlvbiBpbnNpZGUgV2luZSBvcgoJV2luZWxpYiBjb2RlLgoKCSogaW5jbHVkZS9BdHRpYy9leGNlcHQuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvY3J0ZGxsLmMsIHdpbjMyL2luaXQuYzoKCU1vdmVkIHNvbWUgZXhjZXB0aW9uIGRlZmluaXRpb25zIHRvIHdpbm50LmggYW5kIG50ZGRrLmguCgoJKiBtc2Rvcy9kZXZpY2VzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgZm9yIHRoZSBjYWxsYmFjayBwcm9jcy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogQWRkZWQgRVJST1Jfc2lnLgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeC4KCgkqIG1pc2Mvd2luc29jay5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV1NPQ0szMi9XSU5TT0NLIHVzZXMgU2V0TGFzdEVycm9yKCkgdG8ga2VlcCBpdHMgb3duIFdTQUxhc3RFcnJvcnMsCglyZXBsYWNlZCBhbGwgcHdzaS0+ZXJyIHJlZmVyZW5jZXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogQ2hhbmdlZCBzb21lIGVycm9yIGhhbmRsaW5nIGEgYml0LgoKCSogd2luZG93cy93aW4uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhbmVyIFN1c3BlbmQvUmVzdG9yZVduZHNMb2NrLCB3aGljaCBzaG91bGQgZml4IHNvbWUgc2xvd25lc3MuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUFkZGVkIFJ0bFVud2luZCBpbiBudGRsbCwgYW5kIG1hZGUga2VybmVsMzIgc3BlYyBlbnRyeSBhIGZvcndhcmQgdG8KCXRoZSBudGRsbCBvbmUuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaDoKCUFkZGVkIGltcG9ydCBkZWNsYXJhdGlvbiBmb3IgV2luMzIgYnVpbHQtaW5zLgoKTW9uIE1heSAxMCAxNDo0NDo0OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBmb3J3YXJkZWQgb3JkaW5hbHMgaW4gYnVpbHQtaW4gZGxscy4KClN1biBNYXkgIDkgMTY6MTU6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUZpeGVkIHJlcXVlc3Qgc2l6ZSBmb3IgYWxsb2NfY29uc29sZSBhbmQgZnJlZV9jb25zb2xlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL250ZGxsLnNwZWMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL0F0dGljL2V4Y2VwdC5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglJbXByb3ZlZCBleGNlcHRpb24gaGFuZGxpbmcuCglCYXNlZCBvbiB0aGUgd29yayBvZiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4uCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVc2UgT3BlbkZpbGUoKSB0byB0ZXN0IGZvciBmaWxlIGV4aXN0ZW5jZSwgc28gdGhhdCB0aGUgcGF0aCBnZXRzCglzZWFyY2hlZC4KCgkqIHNlcnZlci9zZWxlY3QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZXN0YXJ0IGludGVycnVwdGVkIHNlbGVjdCgpIChoYXBwZW5zIHdpdGggLXBnKS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIG9mZi1ieS1vbmUgYnVnIGluIG1lbW9yeSBhY2Nlc3MgY2hlY2suCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBkZWJ1ZyBvdXRwdXQgZm9yIFJlZ1F1ZXJ5SW5mb0tleS4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyAoc2lsZW50IGJhY2t0cmFjZSBub3QgdG90YWxseSBzaWxlbnQsIGNyYXNoZXMKCXdoZW4gdGhlIHN0YWNrIGlzIGNvcnJ1cHRlZCBvciBzaW1pbGFyKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU2F0IE1heSAgOCAxODozOTowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWNvbmYubGlicy9hdXRvY29uZi5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvYXV0b2NvbmYudGNsLCB0b29scy93aW5lY29uZi5saWJzL2Jyb3dzZXJzLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9kaXJicm93c2VyLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9nZW5lcmFsLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9nZXRmaWxlbmFtZS50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvbWVzc2FnZS50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvbWVzc2FnZTIudGNsLCB0b29scy93aW5lY29uZi5saWJzL3NhdmVSQy50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZS1oYWxmLmdpZiwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYudGNsLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mMS50Y2wsIHRvb2xzL3dpbmVjb25mLnRjbDoKCUplYW4tTG91aXMgVGhpcm90IDx0aGlyb3RAdW5pdi1icmVzdC5mcj4KCUFkZGVkIGdyYXBoaWNhbCBjb25maWd1cmF0aW9uIHRvb2wgd2luZWNvbmYudGNsLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlnbm9yZSBFU0NbJWRjIHJlcG9ydHMgZ2VuZXJhdGVkIGJ5IDhiaXQgY29udHJvbCBjb2Rlcy4KCU9wZW4gY29uc29sZSBldmVuIGlmIHdlIGFscmVhZHkgaGF2ZSBvbmUgaW4gdGhlIHByb2Nlc3MuCgoJKiBmaWxlcy9wcm9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgb2ZmIGJ5IDEgZXJyb3IgaW4gc2VjdGlvbiBjb2RlIChkaWQgbm90IHJldHVybiBsZW4tMiBvbiBidWZmZXIKCW92ZXJmbG93IGluIHNvbWUgY2FzZXMsIGJ1dCBsZW4tMSkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHdhcm5pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgcGFsZXR0ZSBoYW5kbGluZyBmb3IgdHJ1ZS9oaWdoLWNvbG9yIFgxMS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGV4dGVuc2lvbiBoYW5kbGluZyBpbiBMb2FkTGlicmFyeTE2LgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL3dpbi5oLCBvYmplY3RzL3JlZ2lvbi5jOgoJQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJUmVhcnJhbmdlZCBQQUlOVF9SZWRyYXdXaW5kb3coKSBzbyB0aGF0IGl0IGZpcnN0IHJlY3Vyc2l2ZWx5IHVwZGF0ZXMKCWludmFsaWQgcmVnaW9ucyBhbmQgb25seSB0aGVuIHN0YXJ0cyBzZW5kaW5nIG91dCBtZXNzYWdlcy4gVGhpcyBzaG91bGQKCWhlbHAgd2l0aCByZWVudHJhbmN5IGR1cmluZyBtZXNzYWdlIHByb2Nlc3NpbmcgYW5kIG5vdyBpdCBuZWVkcyBqdXN0CglvbmUgKG9yIG5vbmUpIHNjcmF0Y2ggcmVnaW9uIGZvciBhbGwgdGhlcmUgaXMgdG8gZG8uIEFsc28sIHNtYWxsIGZpeGVzCglmb3IgU2V0V2luZG93UG9zKCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogQWRkZWQgY2hlY2sgZm9yIG1pc3NpbmcgX19pMzg2X18gZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdHJhY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHRvb2xzL3dyYy9wYXJzZXIueSwgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL21lbWxvY2tieXRlcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB0b29scy9idWlsZC5jLCBtaXNjL3dzcHJpbnRmLmMsIG1pc2NlbXUvaW5zdHIuYywgbXNkb3MvaW9wb3J0cy5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGlwYy9iaXRfYXJyYXkuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRlYnVnZ2VyL2RiZy55LCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQU5TSSBDIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXNzIFBST1BTSEVFVFBBR0UgdG8gcHJvcGVydHlwYWdlIGRpYWxvZyBhcyBsUGFyYW0uCgoJKiBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9kc291bmQuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGlwYy9kZGVfYXRvbS5jLCBpcGMvZ2VuZXJpY19oYXNoLmMsIGlwYy9zaG1fYmxvY2suYywgaXBjL3NobV9tYWluX2Jsay5jLCBpcGMvc2htX3NlbWFwaC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvc2lnbmFsLmMsIG1lbW9yeS9sZHQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvd2luc29jay5oLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2Rpc3BkaWIuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGVidWdnZXIvbXNjLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFOU0kgQyBmaXhlcy4KCgkqIHdpbmRvd3MvY2FyZXQuYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9saW5lZGRhLmMsIG9iamVjdHMvcmVnaW9uLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNwbGl0IG9mZiB3aW5nZGkxNi5oIGZyb20gd2luZ2RpLmguICBBZGQgbWFueSBtb3JlICNkZWZpbmVzL3R5cGVkZWZzCgl0byBicmluZyB3aW5nZGkuaCBhbG1vc3QgdXB0byBhIGNvbXBsZXRlIE5UNC4wIGludGVyZmFjZS4KCUZpeCByZXR1cm4gdmFsdWUgb2YgU2V0UmVjdFJnbigpLgoKCSogd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW5wb3MuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkICNpbmNsdWRlICJ3aW5lL3dpbnVzZXIxNi5oIiBhbmQgdXNlICJzdHJ1Y3QgdGFnPz8/PyIgaW5zdGVhZC4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgV2luZSBkZWJ1Z2dlciBiYWNrdHJhY2UuIE5ldyBmZWF0dXJlczoKCS0gRGlzcGxheXMgZWJwLCBpbiBjYXNlIHlvdSB3YW50IHRvIGNoZWNrIHN0YWNrZnJhbWVzIG1hbnVhbGx5CgktIERldGVjdHMgZmFyIGNhbGxzIGV2ZW4gd2hlbiB3aW5kb3dzIGFwcHMgZG9uJ3QgbWFyayB0aGVtCgktIFRyYWNrcyBDYWxsRnJvbTE2L0NhbGxUbzE2IHJlbGF5aW5nICh0aHVua2luZykKCgkqIGxvYWRlci9lbGZkbGwuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQnVnZml4OiBnZXRfc29iYXNlbmFtZSB3YXMgb2ZmIGJ5IG9uZSBwb2ludGVyIGluY3JlbWVudC4KCgkqIG11bHRpbWVkaWEvaW5pdC5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJRml4ZWQgaW1wbGljaXQgdHlwZSB3YXJuaW5nLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVZhbHVlcyByZXR1cm5lZCBmcm9tIFB0SW5SZWN0IGFuZCBMQl9JVEVNRlJPTVBPSU5UIGFyZSByZXZlcnNlZC4KCgkqIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL29sZW9iai5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJU2Vjb25kIHBhcnQgb2YgdGhlIE9MRSBkYXRhY2FjaGUgaW1wbGVtZW50YXRpb24uCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MjEuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgRE9TIExpc3Qgb2YgTGlzdHMgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGRlZCB0aGUgYmVnaW5uaW5ncyBvZgoJdGhlIERPUyBkZXZpY2Ugc3RydWN0dXJlcy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgaW5jbHVkZS93aW5yZWcuaCwgbWlzYy9yZWdpc3RyeS5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglCdWcgZml4ZXMuCgoJKiBvbGUvaGdsb2JhbHN0cmVhbS5jLCByZWxheTMyL29sZTMyLnNwZWM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIEdldEhHbG9iYWxGcm9tU3RyZWFtLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIFRIUkVBRF9GcmVlVEhEQiBhcyBzZXJ2aWNlIHRocmVhZCBjYWxsYmFjay4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL3RpbWVyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgVElNRVJfU3dpdGNoUXVldWUuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZvcm1hdCBvdXRwdXQgaW4gREVCVUdfRXhhbWluZU1lbW9yeSBmb3IgImQiIGFuZCAieCIgbm90IHRvIGV4Y2VlZCA4MAoJY2hhcnMuCgoJKiBsb2FkZXIvc2lnbmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3RvcCB3aW5lbGliIHByb2dyYW1zIG9uIGZhdWx0IGluc3RlYWQgb2YgZW5kbGVzcyBmYXVsdGxvb3BpbmcuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJUnVuIGxkY29uZmlnIGluIG1ha2UgaW5zdGFsbCBpZiB1c2luZyAtLWVuYWJsZS1kbGwuCglDbGVhbmVkIHVwIHVuaW5zdGFsbF9saWIgYXMgd2VsbC4KCgkqIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oLCByZWxheTMyL29sZTMyLnNwZWMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvbWVtbG9ja2J5dGVzLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElTdG9yYWdlIHN1cHBvcnRlZCBieSBhbiBpbXBsZW1lbnRhdGlvbiBvZgoJSUxvY2tCeXRlcyBvbiB0b3Agb2YgYW4gSEdMT0JBTC4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgZnJvbSBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb25BLgoJQ29weS9jb252ZXJ0IGJhY2sgdGhlIGJ1ZmZlciBpbiBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb25XLgoJUmVwbGFjZSBzb21lIG91dHB1dCBwb2ludGVycyBzdHIvd3N0ci0+cHRyIGluIGtlcm5lbDMyLnNwZWMuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGJ1Z2ZpeGVzOgoJLSBJbml0aWFsaXplIHByb2Nlc3MgY3JzdCBmb3IgMTYtYml0IHByb2Nlc3Nlcy4KCS0gRG9uJ3QgY3Jhc2ggZHVlIHRvIHVuaW5pdGlhbGl6ZWQgc3RhY2sgZnJhbWVzIGluIFdpbmVMaWIuCgktIE1hcCBzeXN0ZW0gRExMcyBiZWZvcmUgY2FsbGluZyBVc2VyU2lnbmFsUHJvYy4KCS0gU2lnbmFsIFVTSUdfUFJPQ0VTU19DUkVBVEUgb25seSAqYWZ0ZXIqIHRoZSBlbnZfZGIgaXMgZmlsbGVkLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBDYWxsb3V0IHJvdXRpbmVzIGRpcmVjdGx5IHdoZW4gdXNpbmcgYnVpbHRpbiBVU0VSLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogYWxsIFBFIG1vZHVsZXMgd2VyZSBtYXJrZWQgJ2ludGVybmFsJy4KCgkqIGluY2x1ZGUvZGNlLmgsIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hlY2sgZm9yIGJ1c3kgRENFIG1vdmVkIHRvIERDSG9vazE2KCkuCgoJKiBpbmNsdWRlL3dpbi5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbml0aWFsaXplIFdJTl9Dcml0U2VjdGlvbiBlYXJsaWVyLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBpbmNsdWRlL3RyYWNrYmFyLmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCB0aGUgdGltZXIgdGhhdCB3YXMgdXNlZCB0byBxdWV1ZSBUUkFDS0JBUl9SZWZyZXNoIGNhbGxzLgoJUmVtb3ZlZCBhbGwgZGlyZWN0IGNhbGxzIHRvIFRSQUNLQkFSX1JlZnJlc2ggKGV4Y2VwdCBmcm9tIHdpdGhpbiB0aGUKCVdNX1BBSU5UIGhhbmRsaW5nIHNlY3Rpb24pIGFuZCByZXBsYWNlZCB0aGVtIGJ5IGNhbGxzIHRvCglJbnZhbGlkYXRlUmVjdC4KCUZpeGVkIGEgYnVnIGluIHRoZSBUUkFDS0JBUl9TZXRQb3MgZnVuY3Rpb24uCglGaXhlZCB0aGUgYmVoYXZpb3IgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBtb3VzZSBpbnB1dC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCUltcGxlbWVudGVkIHRvb2xiYXIgbXVsdGlyb3cgYnV0dG9uIGxheW91dC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgV01fR0VUVEVYVCBhbmQgV01fR0VUVEVYVExFTkdUSCBpbiB0b29sdGlwcy4KCgkqIG9sZS9vbGUyZGlzcC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIE9sZVRyYW5zbGF0ZUNvbG9yLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIHJldHVybiB2YWx1ZSBvZiBHZXRLZXlib2FyZFN0YXRlIGFuZCBTZXRLZXlib2FyZFN0YXRlIGZyb20KCVZPSUQgdG8gQk9PTC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJUHJldmVudGVkIExJU1RCT1hfUmVwYWludEl0ZW0gZnJvbSByZXBhaW50aW5nIGEgbm9uIHZpc2libGUgaXRlbS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwby4KCgkqIHdpbmRvd3MvY2xhc3MuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQnVnZml4IGZvciBUUkFDRSBpbiBVbnJlZ2lzdGVyQ2xhc3MuCgpXZWQgTWF5ICA1IDEzOjIwOjUwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL0F0dGljL3Byb3BzaGVldC5oOiBObyBsb25nZXIgbmVjZXNzYXJ5LgoKVHVlIE1heSAgNCAxNjo1NToyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jLCBpbmNsdWRlL2RjZS5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgaWYgREMgaXMgYnVzeSBiZWZvcmUgZGVsZXRpbmcgaXQuCgoJKiB3aW4zMi9uZXdmbnMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldE1haWxzbG90SW5mbyBpcyBzdXBwb3NlZCB0byBjaGVjayBmb3IgcG9pbnRlciB2YWxpZGl0eS4KCgkqIHNlcnZlci9zZWxlY3QuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQb3NzaWJsZSBjcmFzaCBpbiBzZWxlY3RfbG9vcCgpIGZpeGVkLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgdmFyaW91cyBzdHVwaWQgYnVncyBpbiBzZXJ2aWNlcyB0aHJlYWQgcm91dGluZXMuCglBZGRlZCBTRVJWSUNFX0V4aXQgcm91dGluZSB0byBraWxsIHRoZSBzZXJ2aWNlcyB0aHJlYWQuCgoJKiBtaXNjL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnZlcnRlZCBjbGFzcy9jaGFubmVsIGluIF9fKFNFVHxHRVQpX0RFQlVHR0lORyBtYWNyb3MuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQoKS4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFBsYXlTb3VuZDE2LCBzbmRQbGF5U291bmQxNi4KCgkqIGlmMTYzMi90aHVuay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVzIHdpbnByb2MgZGVhZGxvY2sgZm9yIHdpbjE2LgoKTW9uIE1heSAgMyAwOTo0NDo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgZGVhZGxvY2socykgaW4gbWVzc2FnZSBzZW5kaW5nLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWNsZWFuZWQgdXAgZGVidWcgY2hhbm5lbHMgdG8gdXNlIGRlZmF1bHQgb25lIChtbXN5cykKCW1vcmUgY29udmVyc2lvbnMgZnJvbSBtaXhlclhYWFcgYW5kIG1peGVyWFhYWDE2IHRvIG1peGVyWFhYWEEKCWZpeGVkIGNhbGxiYWNrIGJ1ZyBpbiBtaWRpU3RyZWFtIGZ1bmN0aW9ucwoJZml4ZWQgY29tcGlsYXRpb24gYnVnIHdpdGggZWdjcwoJY2hhbmdlZCB0byB0aGUgbmV3IGRlYnVnIGNoYW5uZWwgaW50ZXJmYWNlCgoJKiBtdWx0aW1lZGlhL21tYXV4LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJc21hbGwgcmFuZ2UgZml4ZXMgZm9yIE9TUyBkcml2ZXIKCWNoYW5nZWQgdG8gdGhlIG5ldyBkZWJ1ZyBjaGFubmVsIGludGVyZmFjZQoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWZpcnN0ICh3b3JraW5nKSBzaG90IGF0IE9TUyBtaXhlciBsb3cgbGV2ZWwgaW50ZXJmYWNlCgljaGFuZ2VkIHRvIHRoZSBuZXcgZGVidWcgY2hhbm5lbCBpbnRlcmZhY2UKCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBvZmYtYnktb25lIG9yZGluYWxzIGluIE1QUi4KCUFkZGVkIE1QUl9BbGxvYy9SZUFsbG9jL0ZyZWUgKE1QUi4yMi0yNCkuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlbGVhc2UgV2luMTZMb2NrIGluIFdpbkV4ZWMxNiwgQ2FsbFByb2NbRXhdMzJXXzE2LgoKCSogbG9hZGVyL21haW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkIHN5c3RlbSBETExzIGludG8gV2luZUxpYiBhcHBsaWNhdGlvbnMuCgoJKiBncmFwaGljcy9wc2Rydi9wcy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCB1cGRhdGUgdG8gdGhlIFBvc3RTY3JpcHQgZW5jb2RpbmcgdmVjdG9yLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOiBCdWcgZml4ZXMuCgpTdW4gTWF5ICAyIDE5OjEwOjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgYSBmZXcgbW9yZSBpbml0aWFsaXNhdGlvbnMgdG8gdGhlIG5ldyBwcm9jZXNzIGNvbnRleHQuCgoJKiBsb2FkZXIvdGFzay5jOiBEb24ndCBpbml0aWFsaXNlIHRoZSBzdGFja3MgZm9yIDMyLWJpdCBwcm9jZXNzZXMuCgoJKiBtaXNjZW11L21haW4uYzogT25seSBjaGVjayBudW1iZXIgb2YgdGFza3MgYWZ0ZXIgZmlyc3QgbWVzc2FnZS4KCVVzZSBhIDE2LWJpdCBtb2R1bGUgZm9yIGNyZWF0aW5nIHRoZSBpbml0aWFsIHRhc2suCgoJKiBpbmNsdWRlL2F1dGhvcnMuaCwgQVVUSE9SUzoKCVVwZGF0ZWQgYXV0aG9ycyBsaXN0IGZyb20gdGhlIENoYW5nZWxvZy4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdQoJaGF2ZSBiZWVuIGxlZnQgb3V0LgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnZ2luZyBpbnRlcmZhY2UgKGRvbmUgd2l0aCB0aGUgaGVscCBvZiB0aGUKCXNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpayBTdHJpZHZhbGwpLgoJU29tZSBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsaXNhdGlvbiBzZXF1ZW5jZSBmb3IgMzItYml0IHByb2Nlc3Nlcy4KCgkqICovKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWdnaW5nIGludGVyZmFjZSAoZG9uZSB3aXRoIHRoZSBoZWxwIG9mIHRoZQoJc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrIFN0cmlkdmFsbCkuCgoJKiB0b29scy9tYWtlX2RlYnVnLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgbWlzYy9tYWluLmM6CglNaXNjIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUFkZGVkIGNoZWNrIGZvciAtbG1tYXAgZm9yIE9TLzIuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGZldyBidWdzIGluIHRoZSBPTEUgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiwgYWRkZWQgYSBuZXcgc2V0IG9mCgl0cmFjZSBzdGF0ZW1lbnRzIGZvciB0aGUgT0xFIHN0b3JhZ2UgcmVsYXRlZCBtZXRob2RzIGFuZCBpbnRyb2R1Y2VkIGEKCW5ldyBkZWJ1ZyBjaGFubmVsIGZvciB0aGUgc3RvcmFnZSBzdWJzeXN0ZW0uCgoJKiBtdWx0aW1lZGlhL3RpbWUuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9wYWxldHRlLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9zcG9vbGVyLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCByZWR1bmRhbnQgaW5jbHVkZSBvZiB3aW5iYXNlLmggZnJvbSB3aW51c2VyMTYuaC4KCU1vdmVkIHR5cGVzIGZyb20gd2luYmFzZS5oIHRvIHdpbnVzZXIxNi5oIC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZGVmYXVsdCBpdGVtIGhhbmRsaW5nCgktIHNtYWxsIGRyYXdpbmcgZml4ZXMKCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTW9yZSBpbXBsZW1lbnRhdGlvbiBvZiBQcmludERsZ0EuCglDb252ZXJzaW9uIG9mIHJlc291cmNlIGlkZW50aWZpZXJzIG9mIFByaW50MzIgd2luZG93IHRvIGNvbXBseSB0byB0aGUKCU0kIG51bWJlcmluZy4KCgkqIHNlcnZlci90aHJlYWQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjcmFzaCBpZiBxdWV1aW5nIGFuIEFQQyBvbiBhIHRocmVhZCB0aGF0IGRvZXNuJ3Qgd2FpdC4KCgkqIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9tZXNzYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBTRVJWSUNFUyBjYWxsYmFjayB0byBpbXBsZW1lbnQgV2luZG93cyB0aW1lcnMuCglUaW1lciBleHBpcmF0aW9uIGhhbmRsaW5nIHJlbW92ZWQgZnJvbSBFVkVOVF9XYWl0TmV0RXZlbnQgbG9vcC4KCgkqIG1lbW9yeS9oZWFwLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNhbGwgU2V0TGFzdEVycm9yIGluIEhlYXBDb21wYWN0KCkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBwcm90b3R5cGUgZm9yIFRyeUVudGVyQ3JpdGljYWxTZWN0aW9uLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTWFrZSBhbGwgc3RydWN0dXJlcyBwYWNrZWQgYW5kIHJlbW92YWwgb2Ygc29tZSBXSU5FX1BBQ0tFRC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUHVzaGJ1dHRvbnMgc2hvdWxkIG9ubHkgYmUgcm91bmRlZCBpbiBXaW4zMSBsb29rLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZGVmYXVsdCBpdGVtIGhhbmRsaW5nCgktIHNtYWxsIGRyYXdpbmcgZml4ZXMKCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gdW5iYWxhbmNlZCB3aW5kb3dzIGxvY2svdW5sb2NrIHNlcXVlbmNlIGluCglXSU5QT1NfQWN0aXZhdGVPdGhlcldpbmRvdy4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmg6IGVuaG1ldGFmaWxlIGFkZGVkCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvbWNpYW5pbS5zcGVjLCByZWxheTMyL21jaWF2aS5zcGVjLCByZWxheTMyL21jaWNkYS5zcGVjLCByZWxheTMyL21jaXNlcS5zcGVjLCByZWxheTMyL21jaXdhdmUuc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbG9hZGVyL21haW4uYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgd2luZS5pbmk6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gZ290IHJpZCBvZiBhbGwgdGhlIGludGVybmFsIE1NIHR3ZWFrcyB0byBsb2FkIGJ1aWx0aW4gTUNJCgkgIGRyaXZlcnMuIFRoZXkgYXJlIGFsbCBzZWVuIGFzIGRyaXZlcnMsIGxvYWRlZCBhcyBETExzIGFuZCBzdGFuZGFyZAoJICBtb2R1bGUgbG9hZG9yZGVyIGlzIHVzZWQgdG8ga25vdyB3aGljaCB0eXBlIHRvIHVzZSAoYnVpbHRpbiB2cwoJICBuYXRpdmUpLgoJLSBmaXJzdCBmdWxsIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2YgbW1UaHJlYWQ/Pz8gZnVuY3Rpb25zICh0bwoJICBzdXBwb3J0IGdyYWNlZnVsbHkgbmF0aXZlIE1DSSBkcml2ZXJzKS4KCS0gc3VwcG9ydCBvZiBtbVNob3dNTUNQTFByb3BlcnR5U2hlZXQuCgktIGZpeCBvZiBzb21lIGhlYXAgdmFsaWRhdGUgYnVncyAodGhhbmtzIHRvIFVscmljaCBmb3IgcmVwb3J0aW5nIHRoZW0pLgoKCSogbG9hZGVyL21vZHVsZS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IENyZWF0ZVByb2Nlc3NBIHRvIGltcGxlbWVudCBjb3JyZWN0IGFjdGlvbnMgb24gYW1iaWd1b3VzIGNvbW1hbmQKCWxpbmUgbmFtZXMgKHRyeSBsb25nZXIgYW5kIGxvbmdlciBzdHJpbmdzKS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTdGFydGVkIGltcGxlbWVudGluZyBFbmhhbmNlZCBNZXRhRmlsZSBkcml2ZXIuCgoJKiBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvb2xlb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPTEUgb2JqZWN0IGRlZmF1bHQgaGFuZGxlciBhbmQgZGF0YSBjYWNoZS4KCgkqIGluY2x1ZGUvZW5obWV0YWZpbGUuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTZXZlcmFsIGltcHJvdmVtZW50cyB0byBFbmhhbmNlZCBNZXRhRmlsZSBwbGF5YmFjay4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU9ubHkgdHJ5IHRvIGFwcGVuZCAiLmRsbCIgaWYgYSBsaWJyYXJ5IGlzIGxvYWRlZCBpbXBsaWNpdGVseS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeCBUUkFDRSBmb3JtYXR0aW5nIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYSBzbWFsbCBzeW50YXggcHJvYmxlbS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBiZXR0ZXIgc3R1YnMgZm9yIEdldC9TZXQgc3BlY2lhbCAoUHJvZ21hbi9UYXNrbWFuKSB3aW5kb3cgZnVuY3Rpb25zCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBuZXcgU2VuZE1lc3NhZ2VDYWxsYmFja1cKCS0gc29tZSBmaXhtZSdzIGZvciBtaXNzaW5nIEE8LT5XIGNvbnZlcnNpb24KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gdW5iYWxhbmNlZCB3aW5kb3dzIGxvY2svdW5sb2NrIHNlcXVlbmNlIGluIEdldE5leHREbGdUYWJJdGVtLgoKCSogbWlzYy9wcmludGRydi5jOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUJ1Z2ZpeCBmb3IgRW51bVByaW50ZXJzIGxldmVsIDIuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCBsb2dpYyBpbiBHZXRLZXlOYW1lVGV4dC4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgK3Nub29wIGZyb20gZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLgoKU2F0IE1heSAgMSAxMDo0MTowMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUxvYWRJbWFnZVcgZml4ZWQgZm9yIGhpY29sb3IgZGlzcGxheXMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1DSV9BTklNX09QRU5fUEFSTVNXIHNob3VsZCBiZSBMUENXU1RSLCBNQ0lfRGVmWWllbGRQcm9jIHNob3VsZCBiZSBXSU5BUEkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgSEVBREVSX0luc2VydEl0ZW1BIGFuZCBIRUFERVJfSW5zZXJ0SXRlbVcgbnVsbCBwb2ludGVyIGNoZWNraW5nCgl0byBoYW5kbGUgd2lkZSBjaGFyYWN0ZXIgc3RyaW5ncyBwcm9wZXJseS4gIEZpeCBvZiBvdXIgcHJldmlvdXMgcGF0Y2gKCWZvciBudWxsIHBvaW50ZXIgY2hlY2tpbmcuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9tZW1sb2NrYnl0ZXMuYywgb2xlL29sZTJzdHVicy5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBDcmVhdGVJTG9ja0J5dGVzT25IR2xvYmEsIEdldEhHbG9iYWxGcm9tSUxvY2tCeXRlcyBhbmQKCXRoZSBJTG9ja0J5dGVzIGludGVyZmFjZSBiYXNlZCBvbiBhbiBIR0xPQkFMLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBidWcgaW4gQ29SZWdpc3RlckNsYXNzT2JqZWN0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHNvbWUgZmxpY2tlcmluZyB3aGVuIGluc2VydGluZyBvciBkZWxldGluZyBidXR0b25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgTElTVFZJRVdfR2V0SXRlbUNoYW5nZXMoKSB0byBwZXJmb3JtIGEgbW9yZSBjb21wbGV0ZSBjb21wYXJpc29uCgliZXR3ZWVuIGxwSXRlbSBhbmQgbHBMVkl0ZW0uICBOb3cgY29tcGFyZXMgdGhlIHBzelRleHQgc3RyaW5nIG9mIHRoZQoJbHBJdGVtIGFuZCBscExWSXRlbSBzdHJ1Y3RzLiAgRml4ZXMgYSBidWcgd2hlcmUgdGhlIG9sZCBhbmQgbmV3IGl0ZW0KCWhhdmUgdGhlIHNhbWUgYXR0cmlidXRlcyBidXQgdGhlaXIgdGV4dCBkaWZmZXJzIGFuZCBHZXRJdGVtQ2hhbmdlcygpCgljb21wYXJlcyB0aGVtIGFzIGVxdWFsLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuaCwgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIHBhZ2VzIGR5bmFtaWNhbGx5IGZyb20gYQoJcHJvcGVydHkgc2hlZXQuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9saXN0Ym94LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdGhlIGdvdG9zIGZyb20gdGhlIFduZFByb2NzLCBhbHdheXMgdXNlIGEgc21hbGwgd3JhcHBlciB0aGF0Cglsb2NrcyB0aGUgd2luZG93LCBjYWxscyB0aGUgcmVhbCB3bmRwcm9jLCB1bmxvY2tzIHRoZSB3aW5kb3cuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgZGVmYXVsdCBtZW51IGl0ZW0uCgoJKiB3aW4zMi9jb2RlX3BhZ2UuYywgbWlzYy9kZGVtbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0eXBvLgoKCSogd2luZG93cy9xdWV1ZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBtaXNzaW5nIExlYXZlQ3JpdGljYWxTZWN0aW9uLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSB3cm9uZyB1c2FnZSBvZiBXSU5fRmluZFduZFB0ci9XSU5fUmVsZWFzZVduZFB0ciBpbgoJVHJhbnNsYXRlTURJU3lzQWNjZWwxNi4KCgkqIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIG9mZi1ieS1vbmUgYnVnIGluIGFzeW5jIG91dHB1dCBidWZmZXJzLgoKCSogb2xlL29sZTIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBsaXR0bGUgRHJhZyBhbmQgRHJvcCBidWcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk1vbiBBcHIgMjYgMTQ6NTg6NTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBhdXRvY29uZiBjaGVjayBmb3IgImlubGluZSIuIFlvdSBjYW4gbm93IHVzZSBpdCwgaXQgd2lsbCBiZQoJZGVmaW5lZCB0byAoZW1wdHkpIGZvciBjb21waWxlcnMgdGhhdCBkbyBub3QgaGF2ZSBpdC4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEb24ndCBpbmNsdWRlIGFsbG9jYS5oLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVcGRhdGUgdG8gcmVmbGVjdCByZWNlbnQgY2hhbmdlcyBhbmQgZGlzY3Vzc2lvbnMuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglUaGUgbG9hZCBvcmRlciBwYXJzZXIgc2hvdWxkIG5vdCBhbHdheXMgY29tcGxhaW4gYWJvdXQgZXh0ZW5zaW9ucy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGFsaWduIG1hZ2ljIGJ1dHRvbnMgcmlnaHQKCS0gc2hvcnRjdXRzIGFsaWdubWVudCB3b3JraW5nIGFnYWluCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGluZyBvZiBuYXRpdmUgTkUgZGxscy4KClN1biBBcHIgMjUgMTk6MDQ6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6IEZpeGVkIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyBhcmcuCgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgY29tcGFiaWxsaXR5LgoKCSogKi8qOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUJ1aWx0LWluIGRsbHMgbm93IGhhdmUgcmVzb3VyY2VzIGF0dGFjaGVkIHZpYSB0aGUgUEUtaGVhZGVyIGxpa2UKCW5vcm1hbCBkbGxzLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiB0aGUgcmVzb3VyY2UgQVBJLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJVXNlICRIT01FIGluc3RlYWQgb2YgZ2V0cHd1aWQgZm9yIHVzZXIncyBob21lIGRpcmVjdG9yeS4KCUZpeGVkIG1lc3NlZCB1cCBpbmRlbnRhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVXNlICRIT01FIGluc3RlYWQgb2YgZ2V0cHd1aWQgZm9yIHVzZXIncyBob21lIGRpcmVjdG9yeS4KCgkqICovKi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgkjcHJhZ21hIHBhY2soPykgY2hhbmdlZCB0byAjaW5jbHVkZSAiKnBhY2sqLmgiCgoJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIHNvbWUgbWlzc2luZyAjZGVmaW5lcyBJJ3ZlIHJ1biBhY3Jvc3MuCgoJKiBmaWxlcy9kb3NfZnMuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSWdub3JlIHRyYWlsaW5nIGRvdHMgb24gZmlsZSBuYW1lcy4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBwb3NzaWJpbGl0eSB0byBsZXQgdGhlIGludGVybmFsIGRlYnVnZ2VyIHVzZSBhIHNlcGFyYXRlCgloZWFwLiBOb3QgZW5hYmxlZCBieSBkZWZhdWx0LCBjaGFuZ2UgI2lmIGluIGluY2x1ZGUvZGVidWdnZXIuaCB0byB1c2UKCXRoaXMgKHRoZSBoZWFwIGFsbG9jYXRvciBpcyB2ZXJ5IHNsb3cpLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXdpbmUuY29uZiBzaG91bGQgbm90IG92ZXJydWxlIGNvbnRlbnQgb2YgYnVybmVkIGluIGRhdGEgaW4KCWxvYWRvcmRlci5jLgoKCSogZ3JhcGhpY3MvbWFwcGluZy5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCVNldE1hcE1vZGUgc2hvdWxkIG5vdCByZXNldCB0aGUgd2luZG93IGFuZCB2aWV3cG9ydCBvcmlnaW5zIHRvIDAuCgoJKiB0b29scy93aW5lY29uZjogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGxvdyB0byBhdXRvbWF0aWNhbGx5IGNvcHkgcGFydCBvZiB3aW5lLmluaSBpbnRvIGdlbmVyYXRlZCBmaWxlLgoJU21hbGwgcGVybCBlbmhhbmNlbWVudCAod29yayBpbiBzdHJpY3QgbW9kZSkuCglTbWFsbCB1cGRhdGVzIGluIGhldXJpc3RpY3MuCgoJKiB3aW5lLmluaTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGdyYWRlZCB0byBoYXZlIGEgZGVjZW50IG11bHRpbWVkaWEgRExMcyBjb25maWd1cmF0aW9uLgoKCSogdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBGaXhlZCBhIGNvdW50aW5nIGJ1ZyBpbiB0aGUgd2luMzIgY291bnQgYW5kIHNvcnQgcm91dGluZS4KCS0gRml4ZWQgc29ydCBvcmRlciBvZiByZXNvdXJjZXMgKG11c3QgYmUgbmFtZSBiZWZvcmUgb3JkaW5hbCkuCgktIFNodWZmbGVkIGEgY291cGxlIG9mIGdsb2JhbCB2YXJpYWJsZXMgc28gdGhhdCBidWlsdC1pbiBkbGxzIG5vdyBjYW4KCSAgbG9hZCByZXNvdXJjZXMgdGhyb3VnaCB0aGUgcHJvcGVyIFBFIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lucmVnLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglBZGRlZCBzdXBwb3J0IGZvciBzdHJpY3QgaGFuZGxlcy4gT25seSB3b3JrcyBvbiBtYWNoaW5lcyB3aGVyZQoJc2l6ZW9mKFVJTlQpID09IHNpemVvZih2b2lkKikuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbml0aWFsaXplIHByb2Nlc3MgY3JpdGljYWwgc2VjdGlvbiBpbiB0aGUgY29ycmVjdCBwcm9jZXNzIGNvbnRleHQuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2FybiBpZiB3cm9uZyBwcm9jZXNzIHRyaWVzIHRvIGVudGVyIGNyaXRpY2FsIHNlY3Rpb24uCglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgUmVpbml0aWFsaXplL1VuaW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbgoJKHN0aWxsIG5vdCBxdWl0ZSBjb3JyZWN0KS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkZWJ1Zy5oIG11c3QgYmUgbGFzdCBpbiBsaXN0IG9mIGluY2x1ZGVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZXR1cm4gMzItYml0IG1vZHVsZSBpbiBHZXRNb2R1bGVIYW5kbGUxNigpIGlmIGFwcHJvcHJpYXRlLgoKCSogbXNkb3MvaW50MmYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIHN0YXR1cyB3YXMgcmVhZCB3aXRoIGNkLXJvbSB0cmF5IG9wZW4uCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgYnVnIGluIG1zZyBjb252ZXJzaW9uLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgY3Jhc2ggd2hlbiBuTWluUmFuZ2UgPiBuTWF4UmFuZ2UuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgbWFuaWZlc3QgY29uc3RhbnRzIGZvciBRdWV1ZSBTdGF0dXMgZnVuY3Rpb25zIChRU18/Pz8/KS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvbWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU1vcmUgYXBwcm9wcmlhdGUgZGVmYXVsdCBzaXplIGZvciBmb250cyB3aXRoIGludmFsaWQgc2l6ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBTZXRDb2x1bW5XaWR0aCBmb3IgTGlzdFZpZXcgY29udHJvbC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlnOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQWRkZWQgbmV3IGRvY3VtZW50YXRpb24gZm9yIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcHJvdmVkIFZFUlNJT05fR2V0VmVyc2lvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBldGVyIEJvcnRhcyA8cGV0ZXJAaWRvbmV4LnNlPgoJQWRkZWQgU3dlZGlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9tZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2VuZXJhbCB0aWR5IHVwIG9mIHRoZSBNZXRhRmlsZSBkcml2ZXIgLSBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nCglnb2VzIHRocm91Z2ggdGhlIERDRnVuY3MgdGFibGUuCgoJKiBtaXNjL3Rvb2xoZWxwLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBhIHN0dWIgZm9yIEdsb2JhbE1hc3RlckhhbmRsZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglNdWNoIG5pY2VyIHdheSB0byBzZWxlY3Qgd2luZSdzIGxvY2F0aW9uLgoJT3B0aW9uIHRvIGRpc2FibGUgY3JlYXRpb24gb2YgZGVidWdnaW5nIG91dHB1dC4KCURlYnVnZ2luZyBvdXRwdXQgaXMgbm93IGNyZWF0ZWQgaW4gZGlyZWN0b3J5IHNjcmlwdCB3YXMgc3RhcnRlZCBpbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIG1hbmFnZWQgbW9kZSwgd2hlcmUgcG9wdXAgd2luZG93cyB3aXRoIGEgV1NfRExHRlJBTUUKCXN0eWxlIHdlcmUgYXBwZWFyaW5nIHdpdGggYSB0aXRsZSBiYXIuIEFjY29yZGluZyB0byB0aGUgZG9jcyBmb3IKCVdTX0RMR0ZSQU1FIGEgd2luZG93IHdpdGggdGhpcyBzdHlsZSBjYW5ub3QgaGF2ZSBhIHRpdGxlIGJhci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgRGxsT3ZlcnJpZGVzIGZyb20gd2luZS5pbmkgYXMgZGVmYXVsdHMgYWxzbyBpbgoJbG9hZG9yZGVyLmMgKG1lcmdlZCBpbiBzb21lIE1NIGRsbHMgbGluZXMgZnJvbSBFcmljIFBvZXVjaCkuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBib2d1cyBpbmZpbml0ZSBleHBpcmF0aW9uIHRpbWUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CgktIGNvbnNvbGlkYXRlIGJvdGggY2FzZXMgb2YgIXBlbmRpbmcgaW4gV2FpdE5ldEV2ZW50CgktIHNlbGVjdCgpIHJldHVybnMgLTEgbm90IDAgb24gZXJyb3IgaW4gV2FpdE5ldEV2ZW50CgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL2hlYXAuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIEhlYXBWYWxpZGF0ZSB0aHJlYWRzYWZlLCBhbmQgYWRkZWQgc29tZSBtYWNyb3MgdG8gdHJhY2sgY2FsbGVyRUlQCglhIGxpdHRsZSBiZXR0ZXIuCglBZGRlZCBIRUFQX3hyZWFsbG9jLgoKU2F0IEFwciAyNCAxMjowMjoxNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJYXV0b2NvbmYgZml4ZXMgYW5kIGNsZWFudXBzIChjaGVjayBmb3IgZGxvcGVuKCkgaW4gbGliYyB0b28pLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9zdGdfc3RyZWFtLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBDcmVhdGVTdHJlYW1PbkhHTE9CQUwuCgoJKiBvbGUvY29tcG9iai5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTGV0IENvU2V0U3RhdGUoKSBhY2NlcHQgc3RhdGUgPT0gTlVMTC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hZGUgaW50ZXJuYWwgZm9ybWF0IG1vcmUgY29tcGF0aWJsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IGxvY2tpbmcgd2l0aCBwcm9wZXIgY2FsbHMgdG8gV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IG1hbGxvYy9mcmVlIGZvciBldmVyeSBtaXhpbmcgb3BlcmF0aW9uLCB1c2UgdGhlIHNhbWUgYnVmZmVyIG92ZXIKCWluc3RlYWQuLi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZWp5QHdwaS5lZHU+CglIRUFERVJfSW5zZXJ0SXRlbUEgYW5kIEhFQURFUl9JbnNlcnRJdGVtVyBub3cgdHJlYXQgbnVsbCBwb2ludGVycyB0bwoJdGV4dCBzdHJpbmdzIGFzIG51bGwgc3RyaW5ncywgYXMgV2luZG93cyBkb2VzLiAgRml4ZXMgd2luZSBjcmFzaCBvbgoJc3RhcnR1cCBvZiBDdXRlRlRQLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNldCAod2hlbiByZWdpc3RyeSBsb2FkZWQpIGRhdGEgdG8gIlwwIiBhbmQgbGVuZ3RoIHRvIDIgaW4gZW1wdHkKCXN0cmluZyB2YWx1ZSBjYXNlLCBpbiBwbGFjZSBvZiBzZXR0aW5nIGRhdGEgdG8gTlVMTCBhbmQgbGVuZ3RoIHRvIDAsCglhbmQgdGhpcyBpcyB3aXRob3V0IGluaXRpYWxpemluZyBvdXRwdXQgYnVmZmVyIHBhcmFtZXRlciBvZgoJUmVnUXVlcnlWYWx1ZSouCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIFBhbm9zZSBkZWZpbmVzIGFuZCBFWFRMT0dGT05UW0F8V10uCgpUaHUgQXByIDIyIDE2OjI3OjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgY29tcGFiaWxsaXR5LgoKCSogbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9yZWN0LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9sc3RyLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHNvbWUgaW5jbHVkZXMgb2YgMTYgYml0IEFQSS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaCwgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUlDT01pemF0aW9uIG9mIHJlbWFpbmluZyBpbnRlcmZhY2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGJ1ZyB3aXRoIHRvb2x0aXBzIHN0ZWFsaW5nIGZvY3VzIHdoZW5ldmVyIGEgdG9vbHRpcCB3YXMgY3JlYXRlZCwKCXNob3duLCBoaWRkZW4gb3IgdHJhY2tlZC4gVGhlIFNldFdpbmRvd1BvcyBjYWxscyBuZWVkZWQgdG8gaGF2ZSB0aGUKCVNXUF9OT0FDVElWQVRFIGZsYWcgc2V0IGFkZGl0aW9uYWxseS4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglGaXhlZCBjb29yZGluYXRlcyBjb252ZXJzaW9uIGluIE9mZnNldENsaXBSZ24uCgoJKiBpbmNsdWRlL29iamJhc2UuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJQ2xlYW4gdXAgb2JqYmFzZS5oLiBNYWtlcyB0aGUgU1RETUVUSE9EIHNldCBvZiBtYWNyb3MgYXZhaWxhYmxlIHRvIHRoZSB3aW5lbGliIHVzZXIuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9oYW5kbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlU29ja2V0SGFuZGxlLEdldEhhbmRsZUNvbnRleHQsU2V0SGFuZGxlQ29udGV4dCBzdHVicyBhZGRlZC4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBzdHVmZiB0byB0aGUgcmlnaHQgcGxhY2UuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgc3lzY29sb3JzIGZvciB3aW4gMy4xLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpZjE2MzIva2VybmVsLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvZmlsZSBLRVJORUwgcm91dGluZXMgKGNhbGwgMzItYml0IHZlcnNpb25zKS4KCgkqIGlmMTYzMi9idWlsdGluLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBCVUlMVElOX0dldEVudHJ5UG9pbnQxNiBkaWRuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0aGUgbmV3CgllbnRyeSB0YWJsZSBsYXlvdXQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZCBFbmhhbmNlZCBNZXRhRmlsZSByZWNvcmQgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9yZXNvdXJjZS5oLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXJzdCBwYXRjaCBpbXBsZW1lbnRpbmcgcHJvcGVydHkgc2hlZXRzLgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEdESTMyLjEwMC0xMDQgYXJlIG9yZGluYWwtb25seSByb3V0aW5lcy4KCUFkZGVkIHN0dWJzIGZvciBzb21lIFdpbjk4IEdESTMyIHJvdXRpbmUuCglSZS1udW1iZXJlZCBhbGwgbmFtZWQgZXhwb3J0cyAobGV4aWNvZ3JhcGhpY2FsbHkpLgoKCSogZ3JhcGhpY3MvZHJpdmVyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgKHN0dWJzKSBmb3IgR0RJMzIuMTAwLTEwNC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbW9yZSBjaGVja3MgZm9yIHZhbGlkIHBpZGwgZm9ybWF0cwoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGNvcnJlY3RlZCBwYXJhbWV0ZXIgY291bnQgZm9yIFNIR2V0U2V0dGluZ3MKCS0gc3R1YiBTSFZhbGlkYXRlVU5DCgoJKiBsb2FkZXIvZWxmLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2Vsc2UgYnJhbmNoIGNvbXBpbGUgZml4LgoKCSogaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ2hhbmdlIHdpbmUncyBkbG9wZW4gc2VhcmNoLXBhdGNoIHN0cmF0ZWd5IG5vdCB1c2luZyB0aGUgZW52aXJvbm1lbnQKCWFuZCBhZGRlZCAjaWY6cyB0byBzZXBlcmF0ZSB0aGUgY29kZSBvdXQgaWYgbGliZGwgaXNuJ3QgYXZhaWxibGUuCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNoZWNrIGZvciBhIE5VTEwgcG9pbnRlciBpbiBDb0ZyZWVVbnVzZWRMaWJyYXJpZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5jbHVkZSBkZWJ1Zy5oIGxhc3QgKEVSUigpIG1hY3JvIHByb2JsZW0gb24gU29sYXJpcykuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNpemluZyBidWcgaW4gdGhlIGNvbWJvYm94IGNvbnRyb2wuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogSW50ZXJuYWwgTkUgZW50cnkgcG9pbnQgdGFibGVzIHdlcmUgYmFkIChvbmUgaHVnZSBidW5kbGUpLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUluaXRpYWxpemUgdGhlIG91dHB1dCBidWZmZXIgcGFyYW1ldGVycyB0byAwIGluIFJlZ1F1ZXJ5VmFsdWUqCglmdW5jdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHNwZWNpYWxseSB3aGVuIHRoZXJlJ3Mgbm8gZGF0YSB0byByZXR1cm4uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglEbyBub3QgaW5jcmVtZW50IG1vZHVsZSByZWZDb3VudCBpZiBzZWxmIGlzIGxvYWRlZCBmcm9tIHdpdGhpbgoJRGxsRW50cnlQb2ludCBkdXJpbmcgdGhlIGF0dGFjaCBub3RpZmljYXRpb24uCgpXZWQgQXByIDIxIDE0OjI3OjM3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBwcm90ZWN0IFRSQUNFIGFnYWluc3QgTlVMTC1wdHIKCS0gcmV3cm90ZSBHZXRNZW51SXRlbUlEL0dldFN1Yk1lbnUgdG8gdXNlIE1FTlVfRmluZEl0ZW0gKGhtZW51PTB4ZmZmZiBmaXgpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHR5cG8uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZWltcGxlbWVudGF0aW9uIG9mIEdldE1vZHVsZUhhbmRsZTE2IGFjY29yZGluZyB0byBob3cgd2luOTUgaGFuZGxlcwoJaXQgKHRoYW5rcyB0byBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4pLgoKCSogaWYxNjMyL2J1aWx0aW4uYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNvcnJlY3RlZCB3cm9uZyByZXR1cm4gdmFsdWVzIG9mIGJ1aWx0LWluIGxvYWRlciB0byB3b3JrIHdpdGggdGhlCglsb2Fkb3JkZXIgc3R1ZmYuCgpNb24gQXByIDE5IDE2OjQ1OjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgcmVjb3JkaW5nIG9mIFN0cmV0Y2hESUJpdHMgYW5kIFNldERJQml0c1RvRGV2aWNlIGFuZAoJcGxheWJhY2sgb2YgU2V0RElCaXRzVG9EZXZpY2UuIENsZWFuZWQgdXAgUGxheU1ldGFGaWxlUmVjb3JkIGEgYml0LgoKCSogaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZW1vdmVkIG5vbi1wb3J0YWJsZSBoYWNrcyBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIG1vcmUgZ2VuZXJhbAoJdmVyc2lvbnMuCgoJKiB3aW5kb3dzL2RjZS5jOiBQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJQ29kZSBhZGRlZCB0byByZS1ldmFsdWF0ZSBzdGFsZSBEQyBpbmZvcm1hdGlvbiBpbiBEQ0UgY2FjaGUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglBdHRhY2ggbm90aWZpY2F0aW9ucyBtdXN0IGJlIHNlbmQgYWZ0ZXIgYWxsIHJlY3Vyc2l2ZSBkZXBlbmRlbmNpZXMgYXJlCglsb2FkZWQgYW5kIG5vdCBiZWZvcmUuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHR5cG8uCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBsYXlpbmcgcG9zaXRpb24gd2hlbiByZXF1aXJlZCBieSB0cmFjayBudW1iZXIuCgoJKiB3aW4zMi9kZXZpY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBNTURFVkxEUiBEZXZpY2VJb2N0bCg1KSBzdHViIChtc2FjbTMyIGlzIGEgYml0IGhhcHBpZXIgbm93KS4KCgkqIHdpbmUuaW5pOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5hdGl2ZSB0b29saGVscCB3aWxsIG5vdCB3b3JrIChtaXNzaW5nIEdMT0JBTE1BU1RFUkhBTkRMRSkuCgoJKiBCVUdTLCBSRUFETUU6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglUZXN0IGZvciBzdGF0aWMgd2FzIHJldmVyc2VkLgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOZXcgZGVidWcgc2NoZW1lIHdpdGggZXhwbGljaXQgZGVidWcgY2hhbm5lbHMgZGVjbGFyYXRpb24uCgpTdW4gQXByIDE4IDE0OjQ0OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IFJlbW92ZWQgZXh0cmEgY2FsbCB0byBUQVNLX1N0YXJ0VGFzay4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglSZW1vdmVkIGNoZWNrIGZvciB1bmlvbiBzZW11bjsgY2xlYW5lZCB1cCBhIGJpdC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgZW52IHB0ciB0byBuZXdfcHJvY2VzcyByZXF1ZXN0CgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSB1c2UgZm9udHMvZm9udHNpemVzIGdpdmVuIGJ5IFN5c3RlbVBhcmFtZXRlcnNJbmZvCgktIGRyYXdpbmcvYWxpZ25tZW50IGZpeGVzLCB3aW45OCBzdHlsZSBmb3IgbWVudWJhcgoJLSBvd25lcmRyYXduIG1lbnVzIGFyZSB3b3JraW5nIG5vdyBmb3IgdGhlIGZpcnN0IHRpbWUKCS0gY29tcGxldGUgY29uc3RhbnRzIG1hZ2ljIGl0ZW1zCgktIHVzZSByaWdodCBvd25lciBmb3IgcG9wdXBtZW51cwoJLSBuZXc6IEdldC9TZXRNZW51SW5mbwoJLSBpbXBsZW1lbnRlZDogR2V0L1NldE1lbnVDb250ZXh0SGVscElkCgktIG1vcmUgZmxhZ3MgZm9yIEdldC9TZXRNZW51SXRlbUluZm8KCgkqIGZpbGVzL2Rvc19mcy5jOiByb2JlcnQgdyBoYWxsIDxib2JoQG4tY2FudHJlbGwuZGVtb24uY28udWs+CglNYWtlIERPU0ZTX01hdGNoTG9uZyBtYXRjaCBhIHNlYXJjaCBzdHJpbmcgZW5kaW5nIGluICcqLicgdG8gYSB6ZXJvCglleHRlbnNpb24gZmlsZSBuYW1lLCBhbGxvd2luZyBNYXRoY2FkIHRvIHJ1bi4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkgZnJlZWluZy4KCgkqIHByb2dyYW1zL2NtZGxndHN0L0F0dGljL2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0Lmg6CglSZW5hbWVkIGNtZGxnci5oIHRvIGNtZGxndHN0LmguCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzogQWRkZWQgdGltZW91dCB0byBjcml0aWNhbCBzZWN0aW9uIHdhaXRpbmcuCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNZXJnZWQgTGludXgvRnJlZUJTRCByZWVudHJhbnQgZXJybm8gaGFuZGxlciwgYWRkZWQgU29sYXJpcy4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIFNvbGFyaXMgbG93LWxldmVsIHRocmVhZHMgKExXUHMpIGFkZGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVlbnRyYW50IGxpYmMgY2hlY2sgZm9yIFNvbGFyaXMgYWRkZWQuCglGaXhlZCByZWVudHJhbnQgWDExIGNoZWNrIGZvciBGcmVlQlNEIGFuZCBTb2xhcmlzLgoJQWRkZWQgY2hlY2sgZm9yIFNvbGFyaXMgbG93LWxldmVsIHRocmVhZCByb3V0aW5lcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUZpeGVkIHRvb2xoZWxwIHJvdXRpbmVzIHVzYWdlIGluIEdldE1vZHVsZUZyb21QYXRoIChyZXBvcnRlZCBieSBCZXJ0aG8KCVN0dWx0aWVucykuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBdXRvbWF0aWMgaW5zdGFsbCBzY3JpcHQsIHdoaWNoIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlcyBhbmQgY29tcGlsZXMKCXdpbmUgYW5kIHJlZ2FwaSwgcnVucyB0b29scy93aW5lY29uZiB0byBnZW5lcmF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQoJaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QsIGFuZCB1c2VzIHJlZ2FwaSB0byBpbnN0YWxsIHRoZSBkZWZhdWx0CglyZWdpc3RyeS4KCgkqIGRvY3VtZW50YXRpb24vZ3VpLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcm9wZXJseSBoYW5kbGluZyBjYXNlcyBsaWtlIGNhbGxpbmcgU2V0V2luZG93UG9zIHdoaWxlIHByb2Nlc3NpbmcKCVdNX05DQ1JFQVRFLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGJ1Z3MgKHR5cG9zIGZyb20gY3V0ICYgcGFzdGUgJiBpbnZhbGlkIGhlYXAgYmxvY2sKCWZyZWVpbmcpLgoKCSogbWlzYy93c3ByaW50Zi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJ1ZyBmaXggaW4gR2V0TGVuLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMzIuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVvcmdhbml6YXRpb24gb2YgdGhlIGxvYWRlciB0byBjb3JyZWN0bHkgbG9hZCBhbmQgZnJlZSBsaWJyYXJpZXMgYW5kCglpbXBsZW1lbnRhdGlvbiBvZiBsb2FkIG9yZGVyIHRvIGxvYWQgZGlmZmVyZW50IHR5cGVzIG9mIGxpYnJhcmllcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglVcGRhdGVkIGNvbW1hbmRsaW5lIGNoYW5nZXMgb2YgLWRsbCBvcHRpb24gYW5kIHdpbmUuY29uZiBlbnRyaWVzLgoKCSogd2luZS5pbmk6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglVcGRhdGVkIHRoZSBleGFtcGxlIHdpdGggdGhlIG5ldyBjb25maWd1cmF0aW9uIGVudHJpZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQnVnZml4OiBmcmVlIGxvYWRlZCBsaWJyYXJ5IG5vdCBiZWZvcmUgZXhpdC4KCgkqIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU5ldyBmaWxlcyB0byBzdXBwb3J0IGxvYWQgb3JkZXIgYW5kIHBhcnRpYWwgc3R1YnMgZm9yIGVsZmRsbHMuCgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgZm9yIHVwc2lkZS1kb3duIERJQnMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNoYW5nZWQgJ0dldERpc3BsYXlNb2RlJyB0byByZXR1cm4gdGhlIG1vZGUgcHJldmlvdXNseSBzZXQgYnkKCSdTZXREaXNwbGF5TW9kZScgKGFuZCBub3QgdGhlIGN1cnJlbnQgbW9uaXRvciBtb2RlKS4KCgkqIGluY2x1ZGUvdGFiLmgsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJLUltcGxlbWVudGVkIFRDU19CVVRUT05TLCBUQ1NfRklYRURXSURUSCwgVENNX0dFVElURU1SRUNULAoJVENNX1NFVElURU1TSVpFIGFuZCBUQ01fREVMRVRFSVRFTS4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTG9va3VwSWNvbklkRnJvbURpcmVjdG9yeUV4MTYoKSBmaXhlZDogaWYgR2V0U3lzdGVtUGFsZXR0ZUVudHJpZXMoKQoJcmV0dXJucyAwLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBpZiBpdCB3ZXJlIDI1Ni4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglGaXggYW1iaWd1b3VzIGVsc2Ugd2FybmluZy4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkaW5nIGNvbG9yIHZhbHVlcyBmcm9tIHRoZSByZWdpc3RyeSBmaXhlZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCS0gUmVtb3ZlZCBhbGwgZmxvYXRpbmcgcG9pbnQgbWF0aC4KCS0gSW1wbGVtZW50ZWQgc3RyZXRjaGluZyBpbiBYIGFuZCBZIGRpcmVjdGlvbnMgZm9yIDgsIDE2LCBhbmQgMzIgYml0IGNvbG9yLgoJLSBJbXBsZW1lbnRlZCBzb3VyY2UgYW5kIGRlc3QgY29sb3Ita2V5aW5nIGZvciA4LCAxNiwgYW5kIDMyIGJpdCBjb2xvci4KCS0gSW1wbGVtZW50ZWQgc29tZSB0cml2aWFsIHJhc3RlciBvcGVyYXRpb25zLgoJLSBNaW5pbWl6ZWQgaW5uZXIgbG9vcHMgZm9yIG1heGltdW0gc3BlZWQuCgktIFVzZSBtZW1jcHkgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVkdWNlZCBmcmFnbWVudCBzaXplLgoJUmVvcmdhbml6ZWQgd29kT3BlbiAod2l0aCBzdXBwb3J0IGZvciBXQVZFX1FVRVJZX0ZPUk1BVCkuCglGaXhlZCBidWZmZXIgdW5kZXJydW4gcmVjb3ZlcnkuCglGaXhlZCBidWcgaW4gd29kUmVzZXQoKS93b2RDbG9zZSgpLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJU2ltcGxpZnkgcHJvcGVydHlOYW1lQ21wKCkgYW5kIGZpeCBhIHdhcm5pbmcgaW4gdGhlIHdheSBieSByZW1vdmluZwoJQ1JURExMX193Y3N1cHIoKSBjYWxscy4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCURkZU5hbWVTZXJ2aWNlOiBleHBhbnNpb24gb2Ygc3R1YiB0byB0cmFwIHVudXNlZCBpbnN0YW5jZWlkcyBhdCBzdGFydCBvZiBydW4uCglEZGVHZXRMYXN0RXJyb3I6IGNhdGNoICdub3QgaW5pdGlhbGl6ZWQnIHNpdHVhdGlvbiBhbmQgcmV0dXJuIGNvcnJlY3QgcmVzcG9uc2UuCglEZGVGcmVlU3RyaW5nSGFuZGxlOiBjb21wbGV0ZSB0ZXN0IGZvciBlcnJvciBzZXQgYnkgcHJldmlvdXMgY2FsbCBvZgoJc29tZXRoaW5nIGFuZCBpZ25vcmUgaXQsIGFsc28gcmVsZWFzZSBoYW5kbGUgdGFibGUgbXV0ZXggb24gbm9ybWFsIGV4aXQuCglEZGVRdWVyeVN0cmluZ0EsIERkZVF1ZXJ5U3RyaW5nVywgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVzogUmVsZWFzZQoJaGFuZGxlIHRhYmxlIG11dGV4IG9uIG5vcm1hbCBleGl0LgoKCSogaW5jbHVkZS93bmV0LmgsIG1pc2MvbmV0d29yay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgYW5ub3VuY2UgdGhlIFdOZXREaXJlY3RvcnlOb3RpZnkgY2FwYWJpbGl0eSBXTmV0R2V0Q29ubmVjdGlvbi4KCUNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIGZvciBsb2NhbCBmaWxlcy4KCgkqIHdpbmRvd3MvbW91c2UuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZCAid2luLmgiIHRvIGZpeCBpbXBsaWNpdCBmdW5jdGlvbiBkZWNsYXJhdGlvbiB3YXJuaW5ncy4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbmx5IGRlY2xhcmUgY29uc29sZSAiZHJpdmVyIiBvbmNlLCB1c2UgZXh0ZXJuYWwgcmVmcyBlbHNld2hlcmUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglXaGVuIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgaXMgcmVtb3ZlZCwgdGhlIGJhY2tncm91bmQgd2FzIG5vdAoJcHJvcGVybHkgcmVwYWludGVkLgoKCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpc2FibGUgQUMgYml0IG9uIHJlY2VpdmluZyBhbGlnbm1lbnQgZXhjZXB0aW9ucy4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN5c3RlbVBhcmFtZXRlcnNJbmZvIFNQSV9HRVROT05DTElFTlRNRVRSSUNTOiBpbXBsZW1lbnRlZCBtZW51IHBhcnQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCVdoaWxlIGhhbmRsaW5nIHRoZSBXTV9ERUxFVEVXSU5ET1cgY2xpZW50IG1lc3NhZ2UgY2hlY2sgaWYgYSB3aW5kb3cKCWhhcyBiZWVuIGRpc2FibGVkIGFuZCBpZiBzbyBwcmV2ZW50IGFuIFNDX0NMT1NFIG1lc3NhZ2UgZnJvbSBiZWluZwoJc2VudC4KCgkqIHdpbmRvd3MvZGNlLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBhY2Nlc3MgdG8gdGhlIERDRSBsaXN0IHRocmVhZCBzYWZlIGJ5IGVuc3VyaW5nIHdlIGhhdmUgYWNxdWlyZWQKCXRoZSBXaW5kb3dzIGxvY2sgYmVmb3JlIHVzaW5nIGl0LgoKRnJpIEFwciAxNiAxNToxOToxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVzb3VyY2VzLy5jdnNpZ25vcmU6IENoYW5nZWQgZm9yIHJlbmFtZWQgZmlsZXMKCgkqIG1pc2Mvd2luc29ja19hc3luYy5jLCBtc2Rvcy9kb3Njb25mLmMsIHdpbmRvd3MvdXNlci5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeGVkIHdhcm5pbmdzLgoKCSogb2xlL25scy93YWwubmxzLCBvbGUvb2xlMm5scy5jLCByZXNvdXJjZXMvQXR0aWMvc3lzcmVzX0N6LnJjLCByZXNvdXJjZXMvQXR0aWMvc3lzcmVzX1BvLnJjLCByZXNvdXJjZXMvQXR0aWMvc3lzcmVzX1N3LnJjLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9zeXNyZXMuYywgcmVzb3VyY2VzL3N5c3Jlc19Dcy5yYywgcmVzb3VyY2VzL3N5c3Jlc19QdC5yYywgcmVzb3VyY2VzL3N5c3Jlc19Tdi5yYywgcmVzb3VyY2VzL3N5c3Jlc19XYS5yYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvd2lubmxzLmgsIG1pc2MvbWFpbi5jOgoJUGFibG8gU2FyYXR4YWdhIDxwYWJsby5zYXJhY2hhZ2FAcGluZy5iZT4KCUFkZGVkIHdhbG9uIGxhbmd1YWdlIHN1cHBvcnQgKEkgYWxzbyBtb3ZlZCBDeiAtPiBDcywgU3cgLT4gU3YsIGFuZCBQbwoJLT4gUHQ7IHRvIGNvbmZvcm0gdG8gc3RhbmRhcmQgbmFtZXMgZm9yIHRob3NlIGxhbmd1YWdlcykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcmVsYXkzMi9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIC1mbm8tYnVpbHRpbiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYyBpbiByZWxheTMyLyBzdWJkaXIuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi9idWlsdGluLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CgktIEltcGxlbWVudGVkIHByb3BlciAoInJlYWwiLCBjb21wcmVzc2VkKSBXaW4xNiBlbnRyeSB0YWJsZXMuCgktIEZpeGVkIE15QWxsb2MgKEFLQSBORV9BbGxvY2F0ZVNlZ21lbnQpLgoJLSBJbXBsZW1lbnRlZCBQYXRjaENvZGVIYW5kbGUxNi4KCgkqIHRvb2xzL0F0dGljL21ha2Vfb3MyLnNoLCB0b29scy9tYWtlX29zMi5jbWQsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUEgZmV3IHBhdGNoZXMgdG8gaGVscCBXaW5lIHRvIGNvbXBpbGUgb24gT1MvMi4KClRodSBBcHIgMTUgMTY6NDY6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUNoYW5nZSAoMzIgYml0KSBITUVUQUZJTEVzIHRvIEdESSBvYmplY3RzIChITUVUQUZJTEUxNnMgcmVtYWluIGFzCglnbG9iYWwgbWVtb3J5IGhhbmRsZXMpLiAgRml4ZWQgZGlzay1iYXNlZCBNZXRhRmlsZXMuICBCZXR0ZXIKCXNlcGFyYXRpb24gYmV0d2VlbiBNZXRhRmlsZSBwbGF5YmFjayBhbmQgdGhlIG1ldGFmaWxlZHJ2LgoKCSogbWlzYy9jcnRkbGwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglfQ0lwb3cgYXJndW1lbnQgb3JkZXIgd2FzIGNvbmZpcm1lZCB3aXRoIFN0YXJjcmFmdCB2MS4wNS4KCgkqIGRvY3VtZW50YXRpb24va2V5Ym9hcmQ6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xhcmlmaWVkIGEgZmV3IHBvaW50cy4KCgkqIG1zZG9zL2ludDIxLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglBZGRlZCBJT0NUTCBmdW5jdGlvbiAweDQ0MGQvMHg3Mi4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbiBwYXJ0aWFsIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIHByb3RvIGZvciBHZXRFeGl0Q29kZVRocmVhZC4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2Lmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkZWQgbWlzc2luZyB3aW5kZWYuaCBpbmNsdWRlcy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS93aW51c2VyLmg6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCVJlbGVhc2VDYXB0dXJlKCkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGEgQk9PTCB2YWx1ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvc2lnbmFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZyZWVCU0QgMyBtdWx0aXRocmVhZGluZyBmaW5hbCBmaXguIERvIG5vdCB1c2UgbGliY19yLCBsaWJjIGlzIGp1c3QgYXMKCXJlZW50cmFudCBjb25jZXJuaW5nIGVycm5vLiBSZXZlcnQgdW5uZWVkZWQgRnJlZUJTRCBoYWNrIHRvCglsb2FkZXIvc2lnbmFsLmMgZnJvbSBsYXN0IHBhdGNoLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJaW5kZXggPT0gMyBjb3JyZXNwb25kcyB0byBBbHQtR3IgKyBTaGlmdC4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCU1vcmUgb2YgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQSwgRGRlRnJlZVN0cmluZ0hBbmRsZSwgRGRlUXVlcnlTdHJpbmdBCglhbmQgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVyBhbmQgdGlkeSB1cCBvZiBSZW1vdmVIU1pOb2RlcywgYW5kCglEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLgoKCSogd2luZG93cy94MTFkcnYvbWFpbi5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgdWdseSBkaXNhYmxlZCBjb250cm9scyBhbmQgYmxhY2sgYmFja2dyb3VuZCBpbiBXcml0ZSBhbmQgTG90dXMKCU5vdGVzLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudCB0aGUgYnV0dG9uIHdpdGggYml0bWFwcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElTdG9yYWdlOjpDb3B5VG8gYW5kIElTdHJlYW06OkNvcHlUby4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBBbHdheXMgcmVsZWFzZSB0aGUgV2luMTZMb2NrIGluIFRBU0tfUmVzY2hlZHVsZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU29sdmVkIGEgZGVhZGxvY2sgYmV0d2VlbiBnbG9iYWwgbG9jayBhbmQgd25kIGxvY2sgaW4gZXZlbnQuYy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUeXBvIHRoYXQgYnJva2UgU29sYXJpcyBjb21waWxlIGZpeGVkLgoKCSogY29udHJvbHMvZGVza3RvcC5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUFkZCBhIFdJTl9SZWxlYXNlRGVza3RvcCBpbiBERVNLVE9QX0lzU2luZ2xlV2luZG93LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBzY2FuY29kZXMgZm9yIE51bUxvY2sgYW5kIE51bS0vLgoJRml4IE1hcFZpcnR1YWxLZXkoKSAobWFwdHlwZT0yKSB0byByZXR1cm4gcHJvcGVyIGFzY2lpIGNvZGUuCglSZXdvcmtlZCBHZXRLZXlOYW1lVGV4dCgpIGFnYWluLgoKCSogZ3JhcGhpY3MvcHNkcnYvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglMaW1pdCBsYXN0Q2hhciB0byAweGZmIGluIFBTRFJWX0dldENoYXJXaWR0aC4KCgkqIHdpbmRvd3MvdXNlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJIGZvciBSZWdpc3RlclN5c3RlbVRocmVhZC4KClN1biBBcHIgMTEgMTg6NDg6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDEwLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkICJEaXNwbGF5IENvbWJpbmF0aW9uIiBjYWxsLgoKCSogbWlzYy9jb21tLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGEgY3Jhc2ggZHVlIHRvIGludmFsaWQgT3BlbkNvbW0gcmV0dXJuIHZhbHVlIGZvciBidXN5IGNvbW0gcG9ydC4KCUNsZWFuZWQgdXAvZml4ZWQgc2V2ZXJhbCB0aGluZ3MuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUVuYWJsZWQgdGhyZWFkIHNhZmVuZXNzIGZvciB3bmQgc3RydWN0dXJlIGNvZGUuCgoJKiBkZWJ1Z2dlci9kYmcueTogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgQ0xJRU5UX0RlYnVnZ2VyUmVxdWVzdCB0byBmcmVlemUvdW5mcmVlemUgdGhyZWFkcy4KCgkqIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbmV3IENMSUVOVF9EZWJ1Z2dlclJlcXVlc3Qgcm91dGluZSwgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IKCURFQlVHR0VSX0ZSRUVaRV9BTEwvREVCVUdHRVJfVU5GUkVFWkVfQUxMIHJlcXVlc3RzLgoJUnVuIHdpbmUgc2VydmVyIGluIHRoZSBtYWluIHdpbmUgcHJvY2Vzcy4KCUJ1Z2ZpeDogbmV2ZXIgZnJlZSBpbml0aWFsIHRocmVhZCEKCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOb24tZnVuY3Rpb25hbCBQUk9DRVNTX1N1c3BlbmQvUmVzdW1lT3RoZXJUaHJlYWRzIHJlbW92ZWQuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGVhY2hlZCBUSU1FUl9HZXROZXh0RXhwaXJhdGlvbiB0aGF0IGEgdGltZXIgdGhhdCBoYXMgYWxyZWFkeSBleHBpcmVkCgkoYnV0IG5vdCBwcm9jZXNzZWQgeWV0KSBIQVMgYWxyZWFkeSBleHBpcmVkLi4uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmYXVsdCB2YWx1ZXMgZm9yIHJlZ2lzdHJ5LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNhPgoJT3B0aW1pemVkIGNvZGUgZm9yIFNldEltYWdlQml0c19YLCBtYWtpbmcgYml0bWFwIGNyZWF0aW9uIGZhc3Rlci4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglUaGUgTUVBU1VSRUlURU1TVFJVQ1QgYW5kIERSQVdJVEVNU1RSVUNUIHdlcmUgZmlsbGVkIHdyb25nLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9zaWduYWwuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgktIFN0YXJ0ZWQgbXVsdGl0aHJlYWRpbmcgZm9yIEZyZWVCU0QgKGluY29tcGxldGUsIGJ1dCBzb21lCgkgIGFwcGxpY2F0aW9ucyBub3cgYXQgbGVhc3Qgc3RhcnQgdXAgYWdhaW4pLgoJLSBVc2UgX3RocmVhZF9zeXNfc2lnYWN0aW9uL190aHJlYWRfc3lzX3NpZ2FsdHN0YWNrLgoJLSBDUjIgb24gcGFnZWZhdWx0IGdldHMgcGFzc2VkIGluIHNjX2VyciAoc29tZSBraW5kIG9mIGtsdWRnZSBpbgoJICBGcmVlQlNEIG93bnMgZmF1bHQgaGFuZGxpbmcgd2UgY2FuIHVzZSkKCgkqIGluY2x1ZGUvc2VsZWN0b3JzLmgsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmM6CglNYWRlIFNFTEVDVE9SX1JlYWxsb2NCbG9jayBwcmVzZXJ2ZSB0aGUgY3VycmVudCBzZWxlY3RvciBhY2Nlc3MgcmlnaHRzCgkocHJvYmxlbSByZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoKCSogbWlzYy9zeXN0ZW0uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2Ugc2VydmljZXMgdGhyZWFkIGluc3RlYWQgb2YgdGltZXIgc2lnbmFscy4KCgkqIHNlcnZlci90aHJlYWQuYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgdXNlciBBUENzIHdpdGggTlVMTCAnZnVuYycgKGp1c3Qgd2FrZSB1cCB0aGUgdGhyZWFkKS4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgJ2tlcm5lbCBzZXJ2aWNlcyB0aHJlYWQnLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL3ByaW50ZHJ2LmMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgc3R1YiBmb3IgUHJpbnRlclByb3BlcnRpZXMuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL250ZGRrLmgsIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBOdFRlcm1pbmF0ZVByb2Nlc3MgYW5kIE50RGlzcGxheVN0cmluZy4KCgkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZyZWVMaWJyYXJ5IHBhcnRpYWwgaW1wbGVtZW50YXRpb24uCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgX2Z0b2wgdGFrZSBhcmd1bWVudCBmcm9tIEZQVSBzdGFjay4gU3RhcmNyYWZ0IHYxLjA0ICgqbm90KiBCcm9vZAoJV2Fycykgbm93IHdvcmtzIHBlcmZlY3RseSB3aXRoIFdpbmUncyBjcnRkbGwuIFdyb3RlIGEgdGVzdAoJaW1wbGVtZW50YXRpb24gb2YgX0NJcG93IHRvbywgd2hpY2ggdGhvc2Ugd2hvIGRvIGhhdmUgQnJvb2QgV2FycyBjYW4KCXJlcG9ydCBvbiwgc28gaXQgY2FuIGJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciBHZXRLZXlOYW1lVGV4dCBmb3IgbmV3IGtleWJvYXJkIHN0cnVjdHVyZS4KCgkqIGRsbHMvdGFwaTMyL3Bob25lLmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglGaXhlZCB3YXJuaW5nLgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBSZWFkQ2xhc3NTdGcgcHJvdG90eXBlLgoKCSogbWlzYy93c3ByaW50Zi5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJLSBGaXggY29tbWVudHMgYWZ0ZXIgdGhlIGJpZyByZW5hbWluZyAoeHh4eDMyeSAtLT4geHh4eHkpLgoJLSBEZWNsYXJlIHRoZSBXUFJJTlRGX0RBVEEgdW5pb24sIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBMUENWT0lEIGFuZCBXT1JELgoJICBBdm9pZCB1Z2x5IHR5cGUgY2FzdGluZywgYW5kIGZpeCBjb21waWxhdGlvbiB3YXJuaW5ncyBvZiB3c3ByaW50Zi5jCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kZGU6CglLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJU3RhdHVzIGRvY3VtZW50IGZvciBEREUvRGRlbWwuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZXZlbnQgY2FsbGJhY2sgbWVjaGFuaXNtLgoJSW50cm9kdWN0aW9uIG9mIE1DSSB5aWVsZCBwcm9jcy4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgKHdhdmUsIG1pZGkpIHRvIGFsbG93Cgljb3JyZWN0IGNhbGxiYWNrIG1lY2hhbmlzbXMuCglNYWRlIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIHdvcmtpbmcuCglGaXJzdCB0cnkgYXQgbW1UaHJlYWRYWFggZnVuY3Rpb25zLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyB0byBhbGxvdyBjb3JyZWN0IGNhbGxiYWNrCgltZWNoYW5pc21zLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU21hbGwgZW5oYW5jZW1lbnQuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5ldyBtZXRob2QgZm9yIHN0cnVjdHVyZSBjb252ZXJzaW9uICgxNiA8LT4gMzIpLgoJTW9yZSBNQ0kgc3RydWN0dXJlcyBjb3JyZWN0bHkgbWFwcGVkLgoJSW50cm9kdWN0aW9uIG9mIE1DSSB5aWVsZCBwcm9jIGFuZCBicmVhayBmYWNpbGl0eS4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zIHRvIGFsbG93IGNvcnJlY3QgY2FsbGJhY2sKCW1lY2hhbmlzbXMuICBJbXBsZW1lbnRlZCB3YXZlT3V0IHBsYXliYWNrIGFzIGFzeW5jaHJvbm91cy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgbW1UaHJlYWRYWFggZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgZGVmaW5lcyAoTUlESSwgV0FWRSwgY2FsbGJhY2tzKS4KCVN0cnVjdHVyZXMgZm9yIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyAod2F2ZSwgbWlkaSkgdG8gYWxsb3cKCWNvcnJlY3QgY2FsbGJhY2sgbWVjaGFuaXNtcy4gQWRkZWQgd2luZSBzcGVjaWZpYyBlbnRyeSBmb3IgbW1UaHJlYWRYWFgKCWZ1bmN0aW9ucyB0aHJlYWQgc3RhcnRpbmcgcG9pbnQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglJbnRyb2R1Y2UgU1RBVFNURzE2IC0gYSAxNiBiaXQgdmFyaWFudCBvZiBTVEFUU1RHLgoKCSogb2xlL3N0b3JhZ2UuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeCBJU3RvcmFnZTE2X2ZuU3RhdCgpIHRvIHVzZSBTVEFUU1RHMTYgKGl0IGlzIGEgMTYgYml0IGludGVyZmFjZSkuCgoJKiBjb250cm9scy9tZW51LmM6IFBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglGaXhlZCBtZW51IHR5cGUgc2V0dGluZyBpbiBTZXRNZW51SXRlbUluZm8zMl9jb21tb24oKS4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2VuZCBVU0lHX1BST0NFU1NfQ1JFQVRFIHNpZ25hbC4KCUJ1Z2ZpeDogR2V0UHJvY2Vzc0R3b3JkIG9mZnNldCAtOCBzaG91bGQgcmV0dXJuIHBhcmVudCBwcm9jZXNzIElELgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQWRkZWQgUmVnaXN0ZXJTeXN0ZW1UaHJlYWQgc3R1Yi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBDb0NyZWF0ZUluc3RhbmNlRXggbWV0aG9kLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBEYXZpZCBHYXkgPGRnYXlAQ1MuQmVya2VsZXkuRURVPgoJRml4ZWQgY3Jhc2ggZHVlIHRvIGEgdmFsdWUgb2YgbmFtZSBsZW5ndGggMCwgdmFsdWUgbGVuZ3RoIDAgYXQgdGhlIGVuZAoJb2YgdGhlIHJlZ2lzdHJ5LgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgaWYgcFRlbXBBY3RpdmVXaW5kb3cgaW4gV0lOUE9TX1NldFdpbmRvd1BvcyBpcyB2YWxpZCBhZnRlciB0aGUKCVFVRVVFX0xvY2suCgoJKiBtdWx0aW1lZGlhL2RwbGF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSB1cGRhdGVkIGJlY2F1c2Ugb2YgdGhlIHNwbGl0dGluZyBvZiBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24KCS0gdXBkYXRlZCB0byB1c2UgSUNPTV9USElTCgoJKiBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBvbGUvZ3VpZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIHVzZSB0aGUgbGF0ZXN0IElDT00gbWFjcm9zCgktIG1vdmVkIHRoZSBJRGlyZWN0UGxheUxvYmJ5IGludGVyZmFjZSB0byBkcGxvYmJ5LmgKCS0gcmVtb3ZlZCBhbGwgdGhlIGltcGxlbWVudGF0aW9uIGFzcGVjdHMgc2luY2UgdGhleSBuZWVkIHRvIGJlCglzZXBhcmF0ZQoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSUNPTWlzYXRpb24gb2YgdGhlIERpcmVjdFNvdW5kIEFQSS4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gcmVvcmdhbmlzZWQgaWNvbiBleHRyYWNpbmcgZnJvbSBmaWxlcwoJLSBtYWRlIGV4dHJhY3RpbmcgZnJvbSBuZSBhbmQgaWNvIGZpbGVzIHdvcmtpbmcKCS0gSVBlcnNpc3RGaWxlIGludGVyZmFjZSBmb3IgSUV4dHJhY3RJY29uCgoJKiBtaXNjL3NoZWxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgYnVmZmVyIG92ZXJydW4uCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgcmVzc291cmNlIGRpciBzdHJ1Y3R1cmVzLgoJQWRhcHRlZCBGaW5kQmVzdEljY29uL0ZpbmRCZXN0Q3Vyc29yLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWRpbmcgdGhlIGNvbG9yIHNjaGVtYSBmb3IgcmVnaXN0cnkuCgpTYXQgQXByIDEwIDE2OjU4OjU1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy9BdHRpYy93aW5zb2NrX2Rucy5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlaW1wbGVtZW50ZWQgd2luc29jayBhc3luY2hyb25vdXMgRE5TIHNlcnZpY2VzLiBObyBsb25nZXIgdXNlIGEKCWZvcmsoKWVkIHByb2Nlc3MsIGJ1dCBlaXRoZXIgYSBzZXJ2aWNlIHRocmVhZCBvciBpbmxpbmUgYmxvY2tpbmcgY2FsbHMKCWZvciBub24tdGhyZWFkaW5nIGFyY2hpdGVjdHVyZXMuIChNYWtlcyBGcmVlIEFnZW50MTYgd29yayBhZ2Fpbi4pCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9BdHRpYy9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJLSBjb2xvciBhbmQgZm9udCBkaWFsb2dzIG5vdyBhY3R1YWxseSBkbyBzb21ldGhpbmcgaW50ZXJlc3RpbmcsCgkgIGFuZCBmb3JjZSBhIHJlZHJhdyB3aGVuIHN1Y2Nlc3NmdWwuICBCYWNrZ3JvdW5kIGNvbG9yIGlzIGFkanVzdGFibGUuCgkgIFRleHQgY29sb3IgaXMgYWxzbyBhZGp1c3RhYmxlLCBidXQgdGhlIHVzZXIgaGFzIHRvIHNldCB0aGUgQ0ZfRUZGRUNUUwoJICBmbGFnIGZpcnN0LgoJLSB0ZXh0IGlzIG91dHB1dCBsZWZ0LXJpZ2h0IGNlbnRlcmVkLCBiYXNlbGluZSwgYXQgdGhlIG1pZGRsZQoJICBvZiB0aGUgd2luZG93LCBhbmQgbW92ZXMgd2l0aCB0aGUgd2luZG93LiAgVGV4dCBmb250IGlzIGFkanVzdGFibGUuCgktIFN1Y2Nlc3MgYW5kIGZhaWx1cmUgTWVzc2FnZUJveCBjYWxscyBmb3IgQ29sb3IsIEZvbnQsIE9wZW4sCgkgIGFuZCBTYXZlIGhhdmUgYmVlbiByZW1vdmVkIG9yIHN1cHByZXNzZWQuICBUaGV5IGFubm95ZWQgbWUgYWZ0ZXIKCSAgYXdoaWxlLCBhbmQgSSBzdXNwZWN0IHRoZXkgYW5ub3llZCBvdGhlcnMsIHRvby4gIFVzZSBteSB0b29sISA6LSkKCS0gY21kbGd0c3Qgbm93IGhhcyB0aGUgZnVsbCBwYXRobmFtZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXI7IHdoaWNoIG1heQoJICBhc3Npc3QgaW4gZGVidWdnaW5nIGNlcnRhaW4gcHJvYmxlbXMgLS0gb3IgaXQgbWF5IG5vdC4gOi0pCgktIHVzYWdlIGRpYWxvZyBhZGRlZAoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgZGVidWcgb3V0cHV0LgoKCSogd2luZG93cy9kcml2ZXIuYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcgOyBhIGZldyBidWcgZml4ZXMgOyBub3cgT3BlbkRyaXZlcjE2IGNhbiBsb2FkIDMyCgliaXQgZHJpdmVycy4KCUFkZGVkIHN0dWIgZm9yIEdldERyaXZlckZsYWdzLgoKCSogd2luZG93cy91c2VyLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCVN0dWJzIGZvciBDbG9zZURlc2t0b3AgYW5kIENsb3NlV2luZG93U3RhdGlvbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUdldE1vZHVsZUZyb21QYXRoIG5vdyBjaGVja3MgZm9yIGxvYWRlZCBtb2R1bGVzIHZpYSBmaWxlbmFtZXMgd2hpY2gKCXdlcmUgc3BlY2lmaWVkIHdpdGhvdXQgYSBwYXRoLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbnJlZy5oOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSEtVIGtleSBzYXZpbmcgYW5kIGxvYWRpbmcuIEFkZCBuZXcgc3VwcG9ydGVkIGRhdGEKCXR5cGUgaW4gZGVidWdfcHJpbnRfdmFsdWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2RvY29iai5oLCBvbGUvZ3VpZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgaW50ZXJmYWNlcyBmb3IgSU9sZUNvbW1hbmRUYXJnZXQsIElEcm9wVGFyZ2V0LCBJVmlld09iamVjdC4KCVNtYWxsIGNoYW5nZSBob3cgdG8gZ2V0IGljb25zIGZvciBsaXN0dmlldy4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJTExvYWRGcm9tU3RyaW5nIGFuZCBTSEdldFNldHRpbmdzIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIR2V0U2V0dGluZ3MgaW1wbGVtZW50ZWQuCglFeGl0V2luZG93c0RpYWxvZygpIHNpbXVsYXRlZCBieSBNZXNzYWdlYm94LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJTExvYWRGcm9tU3RyaW5nIGltcGxlbWVudGVkLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYzoKCVJpY2hhcmQgTW9ydGltZXIgPHJlbWl0cm9tQG15LWRlamFuZXdzLmNvbT4KCUFkZGVkIG1pc3NpbmcgKklzRGFyayBlbnRyaWVzIGludG8gUEFMRVRURV9Ecml2ZXIgaW5zdGFuY2UKCWluaXRpYWxpc2F0aW9uLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJRml4ZWQgWDExRFJWX01PVVNFX1dhcnBQb2ludGVyIGluaXRpYWwgdmFsdWUuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJRW5zdXJlIHRoYXQgdGhlIGJpdG1hcCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB3aGVuIGNyZWF0ZWQgd2l0aCB0aGUKCUxSX0NSRUFURURJQlNFQ1RJT04gZmxhZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIG1lc3NhZ2luZyBwcm9ibGVtIG9mIHRoZSBlZGl0IGJveCBmb3Igbm9kZSBsYWJlbCBlZGl0aW9uLgoJU3Vic3RpdHV0ZWQgV01fUEFJTlQgZm9yIEludmFsaWRhdGVSZWN0LgoJU29tZSBncmFwaGljYWwgZml4ZXMuCgoJKiBtaXNjL21haW4uYzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ2hlY2sgZm9yIGRyaXZlcnM9PU5VTEwgYmVmb3JlIHRyeWluZyB0byBkZWxldGUgdGhlbSBhdCBleGl0LiAgVGhpcwoJY291bGQgaGFwcGVuIGlmIHRoZSBlbXVsYXRvciBpbml0aWFsaXphdGlvbiBmYWlsZWQgZm9yIHNvbWUgcmVhc29uIGFuZAoJdGhlIGRyaXZlcnMgaGFkbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBJbml0QXBwMTYgKHVzaW5nIENhbGxvdXQpIGZvciBpbml0aWFsIHByb2Nlc3MuCgoJKiBtaXNjZW11L2luc3RyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2xlYXIgaW52YWxpZCBzZWxlY3RvcnMgYWxzbyBpbiBDYWxsVG8xNiByZWxheSBjb2RlLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYzoKCUpvc2UgTWFyY29zIEzzcGV6IENhcmF2YWNhIDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CglSZXZpc2VkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCB3aW5kb3cgbG9ja2luZyBidWcgaW4gQ2FsY0NoaWxkU2Nyb2xsLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgZmFrZSBtdWx0aW1lZGlhIHRpbWVycy4gR3JpbSBGYW5kYW5nbyBpcyBub3cgYWJsZSB0byBzdGFydCB1cAoJd2hlbiB1bmRlciBmYXZvcmFibGUgY29uZGl0aW9ucy4gVGhlIHByZXZpZXcgbW92aWUgb24gdGhlIEJyb29kIFdhcnMKCWRpc2Mgbm93IHBsYXlzLCB0b28uCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQnVnZml4IEVudW1QcmludGVyc0E6IGxwYlByaW50ZXJzPU5VTEwgb3IgY2JCdWY9MCB3b3VsZCBjcmFzaCBXaW5lLAoJaW5zdGVhZCBvZiByZXR1cm5pbmcgdGhlIHJpZ2h0IGJ1ZmZlcnNpemUuCgpUdWUgQXByICA2IDA3OjE0OjA5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogZ2FsYmVydGUgPGdhbGJlcnRlQG5lby5yci5jb20+CglGaXhlZCBTZWFyY2hQYXRoQSByZXR1cm4gdmFsdWUuCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBjbGVhbi11cCBvZiB0ZXh0dXJlICdsb2FkaW5nJwoJLSBhZGRlZCBTZXRDb2xvcktleSBjYWxsYmFjayBmb3IgYWxyZWFkeSBsb2FkZWQgdGV4dHVyZXMKCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSBwb2ludGVkIG91dCBieSBLZXZpbiBIb2xicm9vay4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+Cgljb21tY3RybC5oIG11c3QgaW5jbHVkZSBwcnNodC5oLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglXYXJuaW5nIGZpeC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIGEgbmV3IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJQ09NIG1hY3JvcyB0aGF0IHVzZSBNaWNyb3NvZnQgc3R5bGUKCXZpcnR1YWwgbWV0aG9kcyB0byBpbXBsZW1lbnQgdGhlIENPTSBpbnRlcmZhY2VzIGluIEMrKy4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCUNvcnJlY3Rpb24gb2YgTXV0ZXggaGFuZGxpbmcgaW4gRGRlSW5pdGlhbGl6ZVcgZm9yIGNhc2VzIG90aGVyIHRoYW4KCTFzdCBjYWxsLiBBZGRpdGlvbiBvZiBpbnN0YW5jZSBoYW5kbGluZyB0byBEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLAoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVywgUmVtb3ZlSFNaTm9kZXMsIEZyZWVBbmRSZW1vdmVIU1pOb2Rlcy4gIDFzdAoJY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZVVuaXRpYWxpemUsIG1vdmUgb2YgaW50ZXJuYWwgc3RydWN0dXJlIGRlZnMKCWluIGZyb20gZGRlbWwuaC4gUmVtb3ZlZCBub24tQU5TSSBjb21tZW50LgoKCSogaW5jbHVkZS9kZGVtbC5oOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJTW92ZWQgaW50ZXJuYWwgc3RydWN0dXJlcyB0byBkZGVtbC5jLCBhbHNvIHJlbW92ZWQgbm9uLUFOU0kgY29tbWVudHMsCglhbmQgYWRkZWQgc3BlYyBmb3IgRGRlUXVlcnlDb25mSW5mbyBhbmQgRGRlUXVlcnlDb252SW5mbzE2LgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgbWVtb3J5IGxlYWtzIGluIG1peGVyT3BlbjE2L21peGVyQ2xvc2UsCgltaWRpT3V0T3BlbjE2L21pZGlPdXRDbG9zZTE2LCB3YXZlSW5PcGVuMTYvd2F2ZUluQ2xvc2UxNiwKCW1pZGlJbk9wZW4xNi9taWRpSW5DbG9zZTE2LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUFkZGVkIHNhbml0eSBjaGVjayBmb3Igd2hpdGVzcGFjZSBpbiBmaWxlIG5hbWVzLCB2YXJpb3VzIG90aGVyIGZpeHVwcy4KClN1biBBcHIgIDQgMTI6NDg6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVdNX01PVVNFTU9WRSBpbXBsZW1lbnRhdGlvbiBidWcgZml4LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUpvc+kgTWFyY29zIEzzcGV6IDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CglBZGRlZCBTcGFuaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIG1pc2MvY29tbS5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglGaXhlZCB0aGUgbW9kZW0gY29udHJvbCBwYXJ0IG9mIEVzY2FwZUNvbW1GdW5jdGlvbjE2LgoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIGdvdG8uCgoJKiBvbGUvb2xlMm5scy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2lubmxzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1DYWxlbmRhckluZm9BIHN0dWIuCgpTYXQgQXByICAzIDE2OjI3OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVN1c3BlbmQgdGhlIHdpbmRvdyBsb2NrcyBiZWZvcmUgRGVmS2V5YkV2ZW50UHJvYyBhbmQKCURlZk1vdXNlRXZlbnRQcm9jLgoKCSogaW5jbHVkZS93bmFzcGkzMi5oLCBwcm9ncmFtcy92aWV3L2dsb2JhbHMuaCwgaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvd2luaW9jdGwuaCwgaW5jbHVkZS93aW5udC5oOgoJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJTW9yZSAjcHJhZ21hIGZpeGVzIChpZGVhIE92ZSBLYWF2ZW4sIG1pc3Rha2VzIGFyZSBtaW5lKS4KCgkqIHdpbmRvd3Mvd2luLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHNlbmRpbmcgYXRvbXMgaW4gKChDUkVBVEVTVFJVQ1QqKWxQYXJhbSktPmxwc3pOYW1lIG9mCglXTV9DUkVBVEUgbWVzc2FnZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBTZXRMYXN0RXJyb3IoKXMgaW4gR2V0UHJvY0FkZHJlc3MoKSBhbmQgTG9hZExpYnJhcnkoKS4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglDaHJpc3RpYW4gU2NobGFpbGUgPHVwOW5AcnoudW5pLWthcmxzcnVoZS5kZT4KCUltcGxlbWVudGVkIG1ha2VwYXRoLCByYW5kKCkgcmV0dXJucyBjb3JyZWN0IHJhbmdlLCBmaXhlZCBmcHV0Yy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIG1zZG9zL2ludDIxLmM6CglNYXNrIG9mZiB1bnN1cHBvcnRlZCBhdHRyaWJ1dGVzIGluIF9sY3JlYXQgKGJ1ZyByZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoJTW92ZWQgX2xjcmVhdDE2X3VuaXEgdG8gaW50MjEuYwoKCSogbGlidGVzdC9oZWxsbzMuYywgbGlidGVzdC9oZWxsbzNyZXMucmMsIGxpYnRlc3QvaGVsbG80LmMsIGxpYnRlc3QvbmV3LmMsIGxpYnRlc3Qvcm9sZXguYywgbGlidGVzdC92YXJ0ZXN0LmMsIGxpYnRlc3Qvdm9saW5mby5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNhc3RzIHRvIChTRUdQVFIpIHJlbW92ZWQuIFRoZXkgZGlkIG5vdGhpbmcgYW55d2F5LgoJSW5jbHVkZXMgYWRkZWQgb3IgcmVtb3ZlZCB3aGVyZSBuZWNlc3NhcnkuCglXaW4xNiBmdW5jdGlvbnMgcmVwbGFjZWQgd2l0aCB0aGVpciBXaW4zMiBjb3VudGVycGFydHMuIENvbW1lbnRzIGFkZGVkCgl3aGVyZSBpdCB3YXMgaW1wb3NzaWJsZS4KCUNBTExCQUNLIGFkZGVkIHdoZXJlIG5lY2Vzc2FyeS4gU29tZSBkZWNsYXJhdGlvbnMgZml4ZWQuCglDb25zdHJ1Y3RzIGxpa2UgIiNpZiBXSU5ET1dTIiBjb3JyZWN0ZWQuIFVzaW5nICIjaWZkZWYgX191bml4X18iIGluc3RlYWQuCglEbGdQcm9jIGluIGhlbGxvMyB1c2VzIEVuZERpYWxvZygpIGluc3RlYWQgb2YgRGVzdHJveVdpbmRvdygpLgoJTGlzdGJveCBlbmFibGVkIGluIGhlbGxvMy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCBGcmVuY2gga2V5Ym9hcmQuCgoJKiBsaWJ0ZXN0L2hlbGxvLmM6IEFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCUZhbmNpZXIgdmVyc2lvbiBvZiBoZWxsby5jIGNvdXJ0ZXN5IG9mIEh1dyBEYXZpZXMuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIGNvbXBpbGF0aW9uIG9mIHRoZSBDb250cm9sIHBhbmVsLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CgknUmVhbGlnbmVkJyB0aGUgbGF5b3V0IHRhYmxlIGEgYml0LiBBcHBsaWVkIHRoZSBub24tbGF0aW4tMSBzdHVmZiBhbmQKCXRoZSBkZWFkIGtleSBtYXBwaW5nIHN0dWZmIHRvIHRoZSBhY3R1YWwgbWFwcGluZyBjb2RlIHRvby4gIFByZXR0aWVkCgl1cCB0aGUgZml4bWUgbWVzc2FnZS4gQWRkZWQgYSBjaGVjayB3aGVyZSBpZiB0aGUga2V5cyBvZiB0d28gbGF5b3V0cwoJbWF0Y2ggZXhhY3RseSwgdGhlIG9uZSB3aXRoIHRoZSBiZXN0LW1hdGNoaW5nIGtleWNvZGUgb3JkZXIgaXMgY2hvc2VuLAoJc28gdGhhdCB0aGUgUVdFUlRZIGFuZCBEdm9yYWsgbGF5b3V0cyBjYW4gYmUgZGlzdGluZ3Vpc2hlZC4KCgkqIHdpbjMyL2RldmljZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIChlbXB0eSkgc3R1YiBmb3IgT3BlblZ4REhhbmRsZS4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW1taW9PcGVuKCkgbm93IGhhbmRsZXMgY29ycmVjdGx5IE1NSU9fUEFSU0UgZmxhZy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUJhY2tncm91bmQgY29sb3IgZml4IHdoZW4gZGlzYWJsZWQgb3IgcmVhZCBvbmx5LgoKCSogd2luZG93cy93aW4uYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJVHJhbnNmZXJlZCB0aGUgd2luZG93IHN0cnVjdCBtZW1vcnkgcmVsZWFzZSBmcm9tIFdJTl9EZXN0cm95V2luZG93IHRvCglXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCURMR0lURU1URU1QTEFURSBzdHJ1Y3R1cmUgaGFkIG9uZSB0b28gbWFueSBtZW1iZXIuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IGNyYXNoIGluIGRlYnVnZ2VyLgoKRnJpIEFwciAgMiAxMDozNzo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBpbmNsdWRlL2NvbWJvLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV2luOTUgbG9vayBhbmQgZmVlbC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVdyb3RlIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdNX1BSSU5UIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgbWlzYy9jYWxsYmFjay5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU3VzcGVuZCBhbGwgd2luZG93cyBsb2NrcyBiZWZvcmUgdGhlIGNvbnRyb2wgaXMgcGFzc2VkIHRvIHRoZQoJYXBwbGljYXRpb24uCglBbHNvIGZpeGVkIHNvbWUgYnVncyBpbiBkY2UuYwoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CgktIFJlbW92ZSBzb21lIG9sZCByYyBtYWtlIHN0dWZmCgktICJtYWtlIGNsZWFuIiBvbWl0dGVkIHNvbWUgaW5jbHVkZSBzdWJkaXJzCgoJKiByZWxheTMyL2RkcmF3LnNwZWMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIERsbENsYXNzRmFjdG9yeSB0byBEaXJlY3REcmF3LgoKVGh1IEFwciAgMSAxMjowNTo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGxpdCBvZmYga2V5c3ltL2RlYWRjaGFyIC0+IGNoYXIgbWFwcGluZywgdXNlIGl0IGluIERldGVjdExheW91dC4KCgkqIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL21lbnUuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCUZpeGVzIGZvciBpZ25vcmVkIFdWUl9bVkhdUkVEUkFXIGZsYWdzLCBtYWRlIG1pbmltaXphdGlvbiBpbiBtYW5hZ2VkCgltb2RlIGdvIHRocm91Z2ggd2luZG93IG1hbmFnZXIsIHNtYWxsIGJ1Z2ZpeGVzIGZvciBtZW51IGFuZCB3aW5kb3cKCWNvZGUsIGV4dGVuZGVkIGNsaXBib2FyZCBkcml2ZXIgbW9kZWwgdG8gaGFuZGxlIGZvcm1hdHMgb3RoZXIgdGhhbgoJdGV4dC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUVDX1VTRUZPTlRJTkZPIG1lYW5zIGVzLT5jaGFyX3dpZHRoLzMsIG5vdCBlcy0+Y2hhcl93aWR0aC4gVGhpcyBpcwoJdHJ1ZSBmb3IgbXVsdGlsaW5lIGNvbnRyb2xzIHRvbywgYXMgbXkgdGVzdHMgc2hvdy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGljb24gYW5kIHNtYWxsaWNvbiB2aWV3cy4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIERPU1ZNX0dldFRpbWVyIHN1cnZpdmUgRUFHQUlOIGVycm9ycy4uLgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGFzeW5jIGNvbW0gYnVmZmVycyAoYnV0IHByb2JhYmx5IG5vdCBidWdmcmVlKSwgYW5kIGFsb25nCgl3aXRoIHRoZW0sIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFzeW5jIGV2ZW50IG5vdGlmaWNhdGlvbnMsIG1vbmcgdGhlbQoJRW5hYmxlQ29tbU5vdGlmaWNhdGlvbi4gUmVtb3ZlZCBhIHByZXZpb3VzIGhhY2sgdGhhdCB3YXMgZmFraW5nIHRoZQoJYnVmZmVycywgc2luY2Ugd2Ugbm93IGhhdmUgcmVhbCBidWZmZXJzLi4uCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgQ05fKiBmbGFncyB1c2VkIGluIFdNX0NPTU1OT1RJRlkuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUltcGxlbWVudCB0aGUgRW51bUF0dGFjaGVkU3VyZmFjZSBtZXRob2QuCgoJKiBvbGUvb2xlMi5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIGZvciBPbGVDcmVhdGVNZW51RGVzY3JpcHRvciwgT2xlU2V0TWVudURlc2NyaXB0b3IgYW5kCglPbGVEZXN0cm95TWVudURlc2NyaXB0b3IgYWxvbmcgd2l0aCBhIGJ1bmNoIG9mIGludGVybmFsbHkgdXNlZCBtZXRob2RzCglhbmQgZGF0YSBzdHJ1Y3R1cmVzLgoKCSogb2xlL2d1aWQuYywgaW5jbHVkZS9pbml0Z3VpZC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+Cglpbml0Z3VpZC5oIHNob3VsZCBvbmx5IGNvbnRhaW4gdGhlIG1hY3JvIHRoYXQgZGVmaW5lcyB0aGUgZ3VpZHMuCglBZGRlZCBvbGVjdGwuaCB0byBndWlkLmMgc28gc29tZSBuZWVkZWQgZ3VpZHMgZ2V0IGRlZmluZWQuCglNYWRlIEdVSURfTlVMTCBhbiBhY3R1YWwgZ3VpZCBzZXQgdG8gMCwwLDAuLi4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9nZGlvYmouYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgR2RpU2lnbmFsUHJvYygpIHN0dWIuCgoJKiBtaXNjL2NhbGxiYWNrLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS91c2VyLmgsIGxvYWRlci9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVTRVIzMi5Vc2VyU2lnbmFsUHJvYyB0byBDYWxsb3V0IHRhYmxlLgoJSW1wbGVtZW50ZWQgYnVpbHQtaW4gVXNlclNpZ25hbFByb2MoKS4KCURvbid0IGFubm91bmNlIFdpbjMuMS1zdHlsZSBVU0VSIGhhbmRsZXIgYW55IG1vcmUuCgoJKiB3aW4zMi9vcmRpbmFscy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFBST0NFU1NfQ2FsbFVzZXJTaWduYWxQcm9jKCkuCglTZW5kIFVTRVIgc2lnbmFscyBhdCB2YXJpb3VzIGFwcHJvcHJpYXRlIHBsYWNlcy4KCU1vdmVkIFtHU11ldFByb2Nlc3NEd29yZCgpIHRvIHNjaGVkdWxlci9wcm9jZXNzLmMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL3NobG9iai5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWxsIDE5IEZpbGVNZW51XyogZnVuY3Rpb25zLCBzb21lIGFzIHN0dWJzLCBzb21lIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSENMU0lERnJvbVN0cmluZywgU3RyVG9PbGVTdHIgaW1wbGVtZW50ZWQuCglSTEJ1aWxkTGlzdE9mUGF0aHMgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglEbGxHZXRWZXJzaW9uIChub3QgeWV0IGV4cG9ydGVkKS4KCVNtYWxsIGNoYW5nZSB0byBTSEFwcEJhck1lc3NhZ2UuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgRHJ2Q2xvc2UsIERydkRlZkRyaXZlclByb2MsIERydk9wZW4sIERydk9wZW5BLCBEcnZTZW5kTWVzc2FnZS4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFN0YWNrRW50ZXIoKSBhbmQgU3RhY2tMZWF2ZSgpIHN0dWJzCgoJKiBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0aW5nIGltcGxlbWVudGF0aW9uIG9mIE1DSSBjcmVhdG9yIHRhc2tzCglGaXhlZCBidWcgaW4gTUNJX09QRU4gaGFuZGxpbmcgKHRoYW5rcyB0byBBZGFtIGZvciByZXBvcnRpbmcgdGhpcyBvbmUpCglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgbW1UYXNrQ3JlYXRlMTYKCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNyZWF0b3IgdGFzayB0byBNQ0kgc3RydWN0LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVJlcGxhY2VkIDB4QzAwMCBieSBzeW1ib2xpYyBjb25zdGFudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzbWFsbCA9PSwgIT0gbWl4dXAuCgoJKiB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFdNX05PVElGWUZPUk1BVC4KCgkqIGxvYWRlci9lbGYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAbXVkLmRlPgoJImZvbyIgd2FzIG5vdCB0cmFuc2xhdGVkIHRvICJmb28uc28iIGluIGVsZiBsb2FkZXIuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkQml0bWFwMTYoKS9Mb2FkSW1hZ2UxNigpIGNhbGxpbmcgc2VxdWVuY2Ugc2ltcGxpZmllZC4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvY2FsbGJhY2suYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBOVUxMIE5FIHJlc291cmNlIGhhbmRsZXI7IGNhbGwgdGhlIGRlZmF1bHQgaGFuZGxlciBkaXJlY3RseS4KCVJlbW92ZWQgV1BST0NTIC8gQ2FsbGJhY2tzIHN1cHBvcnQgZm9yIFdpbmVMaWIgcmVzb3VyY2UgaGFuZGxlcnMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgcmVsYXkzMi91dHRodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hZGUgVW5pdmVyc2FsIFRodW5rIGxpc3QgcGVyLXByb2Nlc3MsIG5vdCBzeXN0ZW0gZ2xvYmFsLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBUQ01fQURKVVNUUkVDVC4KCgkqIG1zZG9zL2ludDA5LmMsIG1zZG9zL2lvcG9ydHMuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkICJpbXBsaWNpdCBkZWNsYXJhdGlvbiIgd2FybmluZ3MuCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUZpeGVkIE9wZW5HTCBkZXZpY2VzIGltcGxlbWVudGF0aW9uLgoKCSogd2luZG93cy9xdWV1ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluIFVzZXJZaWVsZDE2LCB3aGVuIGN1cnJlbnQgdGhyZWFkIGlzIGEgMzIgYml0IG9uZSB3aGljaCBob2xkIHRoZQoJV2luMTZMb2NrLCBtdXN0IHRha2UgY2FyZSBvZiBhIExvY2tDb3VudCA+IDEuCgoJKiAqLyouYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9yZSBjb2RlIG1vdmVkIHRvIHRoZSBYMTEgZHJpdmVyIChiaXRtYXAgYW5kIHBhbGV0dGUgYW5kIG1pc2MpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTWFyIDI4IDE1OjIwOjAwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZSBETSogZGVmaW5lcyBmcm9tIHdpbmJhc2UuaCAtPiB3aW5nZGkuaC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJRml4ZWQgUXVlcnlJbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBJRGlyZWN0M0QgMSBhbmQgMi4KCgkqIG9sZS9ubHMvQXR0aWMvZG5rLm5sczogQXBwYXJlbnRseSBubyBsb25nZXIgbmVlZGVkLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL2RkZW1sLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQ2hhbmdlZCBzb21lIGRlYnVnIG1lc3NhZ2VzIGZyb20gb25lIGNoYW5uZWwgdG8gYW5vdGhlciwgdG8gY2xlYW4gdXAgYQoJYml0IHRoZSBkZWJ1ZyBjaGFubmVsIHVzYWdlLgoKCSogbG9hZGVyL21vZHVsZS5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBDcmVhdGVQcm9jZXNzQSBzbyBpdCBjYW4gaGFuZGxlIGNvbW1hbmRsaW5lcyB3aXRoIGFyZ3VtZW50cyBhbmQKCW5vIC5leGUuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIEdldE1vZHVsZUhhbmRsZTE2LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUFkZGVkIFJ1c3NpYW4ga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3R1YiBmb3IgU2V0U3lzdGVtQ3Vyc29yLgoKCSogd2luMzIvZmlsZS5jOiBTdGVmZmVuIE1vZWxsZXIgPG1vZWxsZXJAZWJpLmFjLnVrPgoJU2V0RmlsZUF0dHJpYnV0ZXNBOiAiaW1wbGVtZW50ZWQiIHNldHRpbmcgb2YgZGlyZWN0b3J5IGZsYWcgYXMgdGVzdCBvZgoJY29tcGF0aWJpbGl0eS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDaGFuZ2VzIGluIFgxMURSVl9LRVlCT0FSRF9EZXRlY3RMYXlvdXQgaW4gb3JkZXIgdG8gaW1wbGVtZW50IFJ1c3NpYW4KCWtleWJvYXJkIHN1cHBvcnQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW51c2VyLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFhcm9uIEJhcm5lcyA8YWFyb25iQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJQnVuZGxlIG9mIG5ldyBzdHVicy4KCgkqIG1pc2MvY3J0ZGxsLmMsIG1pc2MvZGRlbWwuYywgb2xlL29sZTJkaXNwLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgQ3JlYXRlSW9Db21wbGV0aW9uUG9ydCBzdHViLgoKCSogd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBFVkVOVF9QZW5kaW5nKCkgdG8gZmx1c2ggWDExIG91dHB1dCBxdWV1ZSBiZWZvcmUgYmxvY2tpbmcgaW4KCU1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoKS4KCURvbid0IGNhbGwgRVZFTlRfV2FpdE5ldEV2ZW50IGluIE1TR19QZWVrSGFyZHdhcmVNc2cuCglQcm90ZWN0IHN5c3RlbSBxdWV1ZSBhY2Nlc3MgaW4gaGFyZHdhcmVfZXZlbnQoKS4KCgkqIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIGJ1Z3MgaW4gdGhyZWFkIHNhZmVuZXNzIGZvciB3bmQgc3RydWN0LgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9oZWxsbzMuYywgbGlidGVzdC9oZWxsbzNyZXMucmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFkZSBsaWJ0ZXN0L2hlbGxvMyB3b3JrIGFnYWluLCBub3cgd2l0aCBXaW5kb3dzLWNvbXBhdGlibGUgcmVzb3VyY2UKCWxvYWRpbmcuCgoJKiBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUppdW1pbmcgTHVvIDxqaXVtaW5nX2x1b0B5YWhvby5jb20+CglNb3ZlZCBtYWNybyBERUNMQVJFX0hBTkRMRSgpIChpbiBtc2FjbS5oIGFuZCB3dHlwZXMuaCkgdG8gd2luZGVmLmgsCgl0aGVuIGRlbGV0ZWQgdGhlIGR1cGxpY2F0ZWQgdHlwZWRlZnMgKGluIGltbS5oIGFuZCBtbXN5c3RlbS5oKS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglSZXdyb3RlIEVudW1QcmludGVyc0EsIGFkZGVkIENyaXRpY2FsU2VjdGlvbiBhcm91bmQgUmVnaXN0cnkgcmVhZHMgYW5kCglpbXBsZW1lbnRlZCBQUklOVEVSX0lORk9fMiByZXF1ZXN0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogSm9uYXRoYW4gTmF5bG9yIDxnNGtseEBwb3AuYWdyaS5jaD4KCUFkZGVkIFN3aXNzIEdlcm1hbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gYWRqdXN0ZWQgcHJpbnRpbmcgb2YgcmVmY291bnRzIHRvIGJlIGVxdWFsCgktIGNsZWFuaW5nIHVwIGljb24gY2FjaGUgb24gUFJPQ0VTU19ERVRBQ0gKCS0gZml4ZWQgYXNjaWkvdW5pY29kZSB1c2UgaW4gU0gvSUxDcmVhdGVGcm9tUGF0aAoJLSBmaXhlZCBzbWFsbCBtZW1vcnkgbGVhayBpbiBzaGVsbHZpZXcKCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbXB0eSBET1NWTV9RdWV1ZUV2ZW50IGZvciAhTVpfU1VQUE9SVEVELgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2hhbmdlZCBDSE9PU0VDT0xPUltBV10uRmxhZ3MgZnJvbSBVSU5UIHRvIERXT1JELgoKCSogd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvcmVnaW9uLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9yZWdpb24uYywgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeHV0aWwuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCU1vdmVkIGhyZ25VcGRhdGUgZnJvbSBjbGllbnQgdG8gd2luZG93IGNvb3JkaW5hdGVzLCBtYWRlIG5vbmNsaWVudAoJcGFpbnRpbmcgZGVwZW5kIG9uIHRoZSB1cGRhdGUgcmVnaW9uLCByZXdvcmtlZCBTZXRXaW5kb3dQb3MoKSBhbmQKCVJlZHJhd1dpbmRvdygpIHRvIHNwZWVkIHVwIHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24sIG1hZGUgLWRlc2t0b3AKCXdvcmsgcHJvcGVybHksIGFkZGVkIFdNX0NBTkNFTE1PREUgaGVyZSBhbmQgdGhlcmUsIGZpeGVkIHNldmVyYWwKCXdpbmRvdyBhY3RpdmF0aW9uIGJ1Z3MgdGhhdCBjcmVwdCBpbiBzaW5jZSB0aGUgbGFzdCB0aW1lLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCUZpeGVkIG9jY2FzaW9uYWwgbG9zcyBvZiBTZW5kTWVzc2FnZSgpIHJldHVybiB2YWx1ZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgaW5pdGlhbGlzYXRpb24gb2YgdGhlIHBpeG1hcF9kZXB0aCBmaWVsZCBpbgoJWGxpYl9EaXJlY3REcmF3Q3JlYXRlLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBhIHdhcm5pbmcuCgoJKiBtc2Rvcy9pbnQyZi5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglBZGRlZCBzdHViIGZvciBpbnQyZiA0Yi4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIG1lbW9yeSBsZWFrIGluIHdhdmVPdXRPcGVuL3dhdmVPdXRDbG9zZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3JlIEVzY2FwZXMgZm9yIHRoZSBQb3N0U2NyaXB0IGRyaXZlci4KClNhdCBNYXIgMjcgMTY6NTY6MTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGFwdGVkIHRvIHRoZSBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24gc2VwYXJhdGlvbi4KCU5vdyB1c2VzIElDT01fVEhJUyB0byBhY2Nlc3MgdGhlIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMuCglSZXBsYWNlZCAndGhpcycgd2l0aCAnVGhpcycgZm9yIElDT01fVEhJUy4KCURpcmVjdCBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgdGFibGUgaGFzIGJlZW4gZWxpbWluYXRlZCB0b28uCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdG8gaW5jbHVkZSBhbGwgdGhlIGltcGxlbWVudGF0aW9uIGFzcGVjdHMgdGhhdCB3ZXJlIHByZXZpb3VzbHkKCWluIHRoZSBwdWJsaWMgaW5jbHVkZXMuCgoJKiBncmFwaGljcy92Z2EuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgdGFibGUKCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGFsbCBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzLgoJTW9kaWZpZWQgdG8gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MuCglBZGRlZCB0aGUgbWFjcm9zIGZvciB1c2UgaW4gQy4KCUFkZGVkIHRoZSBtZXRob2QgcGFyYW1ldGVyIG5hbWVzICh3aGVuIEkgaGFkIHRoZW0pLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNlcXVlbmNlIG9mIERMTF9QUk9DRVNTX0RFVEFDSCBub3RpZmljYXRpb24gY2FsbHMuCglNb3ZlZCBQRV9NT0RSRUYgZmxhZ3MgdG8gV0lORV9NT0RSRUYgbGV2ZWwuCglCZXR0ZXIgaGFuZGxpbmcgb2YgTG9hZExpYnJhcnlFeCBmbGFncy4KCVBFX0luaXRUbHMoKSBjaGFuZ2VkIHRvIHdvcmsgb25seSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGNtZCBsaW5lIGluIG5ld19wcm9jZXNzIHJlcXVlc3QuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCBDcmVhdGVUaHJlYWQgYXJlIDMyLWJpdCB0aHJlYWRzLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZWFkaW5nIG9mIGJpbmFyeSBzdHJlYW1zIGltcGxlbWVudGVkIChTSE9wZW5SZWdTdHJlYW0pLgoKCSogbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGludDI1ICYgaW50MjYgZXJyb3IgY29kZS4KCgkqIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgVXNlcllpZWxkMTYgdG8gYmUgY2FsbGVkIGZyb20gMzItYml0IHRocmVhZC4KCgkqIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJQWxiZXJ0IERlbiBIYW5uIDxhbGJlcnRkQGNvcmVsLmNhPgoJQWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQge1N8R31ldEJpdG1hcEJpdHMgaW4geDExZHJ2LiAgUmVtb3ZlZCBCSVRNQVBfR2V0UGFkZGluZy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBtZXRhZmlsZSByZWNvcmRpbmcgb2YgQ3JlYXRlUGF0dGVybkJydXNoLgoKVGh1IE1hciAyNSAxNjo0MjoyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90b29sYmFyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2UgdGhlIEFkZEJpdG1hcCBmdW5jdGlvbi4gSW1wbGVtZW50IGZsYXQgdG9vbGJhci4gQ2hhbmdlCglDcmVhdGVUb29sYmFyRXguIEltcGxlbWVudCBwYXJ0aWFsbHkgdGhlIGhvdCBidXR0b25zIGZvciB0b29sYmFyLgoKCSogbXNkb3MvaW50MTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEdldCBTaGlmdCBGbGFncyBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUNoYW5nZWQgc3RkbGliLmggdG8gc3RyaW5nLmguCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQWRkZWQgc3RyaW5nLmguCgoJKiBtaXNjL2RkZW1sLmMsIG11bHRpbWVkaWEvbXN2aWRlby5jLCBvbGUvc2FmZWFycmF5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgd2luMzIvY29uc29sZS5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQ2hhbmdlZCAic3RyaW5ncy5oIiB0byAic3RyaW5nLmgiLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJUmFuZHkgV2VlbXMgPHJ3ZWVtc0Bob21lLmNvbT4KCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IgaWYgYml0Ymx0IHdpZHRoIG9yIGhlaWdodCBpcyBuZWdhdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZDoKCS0gc2hvd2luZyB0aGUgc2VsZWN0ZWQgdGFiIGFzIGhpZ2hsaWdodGVkCgktIHN1cHBvcnQgZm9yIGRyYXdpbmcgdGhlIGZvY3VzIHJlY3RhbmdsZQoJLSBiYXNpYyBrZXlib2FyZCBzdXBwb3J0CgktIHN1cHBvcnQgZm9yIGEgdGFiIHdpdGggaG9yaXpvbnRhbCBzY3JvbGxpbmcuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGhyZWFkLXNhZmUgaW1wbGVtZW50YXRpb24gb2YgcHJvZmlsZSBmdW5jdGlvbnMgKFdpbmRvd3MgYW5kIFdpbmUpLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3MvdGltZXIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTWFkZSB0aGUgdGltZXIgY29kZSB0aHJlYWQgc2FmZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHBvc3NpYmxlIGVuZGxlc3MgbG9vcC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgTEJfR0VUQ1VSU0VMIG1lc3NhZ2UgdG8gcmV0dXJuIExCX0VSUiBvbiBlbXB0eSBsaXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglVc2UgdGhlIG5ldyBoZWFkZXIgZm9yIENPTSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWIgc2hlbGxfNjU0LgoKCSogaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBUVk1fU09SVENISUxEUkVOQ0IuCglJbXBsZW1lbnRhdGlvbiBvZiBUVklfU09SVCBpbnNlcnRpb24uCglGaXggZGlzcGxheSBwcm9ibGVtIHdoZW4gVFZJRl9JTUFHRXxUVklGX1NFTEVDVEVESU1BR0Ugd2VyZSBub3Qgc2V0LgoJRml4IHByb2JsZW1zIHJlbGF0ZWQgdG8gVFZJU19FWFBBTkRFRE9OQ0UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbS5lcGZsLmNoPgoJRml4IHByb2JsZW0gaW4gRFBBX1F1aWNrU29ydCB3aGVyZSB0aGUgc29ydCBvcmRlciB3YXMgaW52ZXJ0ZWQuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbmZyYXN0cnVjdHVyZSBhbmQgZGVmaW5pdGlvbnMgZm9yIGdlbmVyYWwtcHVycG9zZSBldmVudCBhbmQgSVJRCgloYW5kbGluZyBmb3IgdGhlIFdpbmUgZG9zIGJveC4gUmVtb3ZlZCB0aGUgb2Jzb2xldGUgTVpfVGljay4gQWRkZWQKCWV2ZW50IG1lc3NhZ2UgbG9vcCwgbWVzc2FnZSBoYW5kbGluZywgQ0xJL1NUSSBoYW5kbGluZywgYW5kIG1pbmltYWwKCVBJQyBzdXBwb3J0LgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBoYW5kbGluZyBvZiBTSUdVU1IyIGZvciB0aGUgbmV3IGV2ZW50IGludGVycnVwdGlvbiBoYW5kbGluZywKCWJ1bXBpbmcgdXAgdGhlIHByb3RvY29sIHJldmlzaW9uLiBNYWRlIHNvbWUgZGVidWcgbWVzc2FnZXMgbm90IGJlCglvdXRwdXQgd2hlbiBpdCdzIG5vdCBuZWNlc3NhcnkuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcG9ydCAweDYwIGZvciBpbnQgMHgwOSwgYW5kIHBvcnQgMHgyMCBmb3IgUElDIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGludCAweDA5IGFuZCBpbnQgMHgzMy4KCgkqIG1zZG9zL2ludDMzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYSBpbnQgMHgzMyBoYW5kbGVyLCB3aXRoIGEgbWluaW1hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKCW1vdXNlIHJvdXRpbmVzLCBpbmNsdWRpbmcgY2FsbGJhY2tzLgoKCSogbXNkb3MvaW50MDkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhIGludCAweDA5IGhhbmRsZXIsIGFuZCBhIHNjYW5jb2RlIHF1ZXVlIHRoYXQgc2ltdWxhdGVzCglJUlEgMSBpbiB0aGUgZG9zIGJveC4KCgkqIGluY2x1ZGUvZG9jb2JqLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQ3JlYXRpb24gb2YgZG9jb2JqLmguCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFsbG93IGRlcHRoIG9mIERJQiB0byBkaWZmZXIgZnJvbSBkZXB0aCBvZiBiaXRtYXAgaW4gR2V0RElCaXRzLgoKV2VkIE1hciAyNCAxNTowNzoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYzogQWJvcnQgb24gaW5wdXQgZXJyb3IuCgoJKiBpbmNsdWRlL29sZWRsZy5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglQb3B1bGF0aW9uIG9mIG9sZWRsZy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkIElzV2luZG93KCkgY2hlY2tzIGFmdGVyIFNlbmRNZXNzYWdlKCkgcmV0dXJucy4KCgkqIG1zZG9zL2ludDEwLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIGEgc21hbGwgYnVnIGluIGludDEwLgoKCSogY29udHJvbHMvY29tYm8uYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUNPTUJPX1NpemU6IG1haW50YWluIHRoZSBoZWlnaHQgb2YgdGhlIFJlY3RDb21ibyB3aGVuIHRoZSB3aW5kb3cgaXMKCXJlc2l6ZWQuCgoJKiBpbmNsdWRlL2hvb2suaCwgaW5jbHVkZS93aW51c2VyLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkZWQgdmFyaW91cyBkZWZpbml0aW9ucy4KCU1vdmVkIENXUFNUUlVDVCBmcm9tIGhvb2suaCB0byB3aW51c2VyLmggdG8gY29uZm9ybSB0byB0aGUgU0RLLgoKCSogaW5jbHVkZS93aW5kZWYuaDogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgYSBmZXcgZW1wdHkgbWFjcm9zLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDVVJTT1JJQ09OX0Rlc3Ryb3k6IG1pc3NpbmcgV0lOQVBJIGFkZGVkLgoKCSogbWlzYy93aW5zb2NrLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgdHJhbnNsYXRpb24gZm9yIFNPX1JDVlRJTUVPIChhcyBzZWVuIGJ5IElFNCkuCgpUdWUgTWFyIDIzIDE3OjA0OjEwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBDcmVhdGUgc3RhcnR1cCBpbmZvIGZvciB0aGUgaW5pdGlhbCBwcm9jZXNzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc2VydmVyIHBpZCBhbmQgdGlkIGluIGluaXRfdGhyZWFkIHJlcXVlc3QsIGFuZCB1c2UgdGhlbSBpbgoJQ0xJRU5UX0luaXRUaHJlYWQuCgoJKiBpbmNsdWRlL2NvbXBvYmouaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2FudGltb25pa2VyLmMsIG9sZS9iaW5kY3R4LmMsIG9sZS9jb21wb2JqLmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21vbmlrZXIuYywgb2xlL3N0b3JhZ2UzMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkOgoJLSBJTW9uaWtlciBpbnRlcmZhY2UgZm9yIEZpbGVNb25pa2VyLEl0ZW1Nb25pa2VyLEFudGlNb25pa2VyIGFuZAoJICBHZW5lcmljQ29tcG9zaXRlTW9uaWtlcgoJLSBJUnVubmluZ09iamVjdFRhYmxlIGludGVyZmFjZSwgYW5kCgktIElCaW5kQ3R4IGludGVyZmFjZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIFN0cmV0Y2hESUJpdHMgZm9yIHRoZSBQb3N0U2NyaXB0IGRyaXZlci4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG1pc3NpbmcgZW5kaW5nIHByYWdtYSBwYWNrLgoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgc21hbGwgYnVnIGluIEdldENvbW1TdGF0ZTE2LiBQYXJpdHkgY2hlY2sgY2FuIGJlIGRpc2FibGVkCglldmVuIHdoZW4gYSBwYXJpdHkgYml0IGlzIHVzZWQuIFNldENvbW1TdGF0ZTE2KCkgY2FuIG92ZXJyaWRlIGJhdWRyYXRlCglzZXR0aW5nIGluIHdpbmUuY29uZi4KCk1vbiBNYXIgMjIgMTc6NDc6MzYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGNvcGUgd2l0aCBxdW90ZWQgYXJndW1lbnRzIGZvciBDcmVhdGVQcm9jZXNzKCkuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgdHlwbyBpbiBTaXplb2ZSZXNvdXJjZSgpLgoKCSogbWVtb3J5L3N0cmluZy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+Cglsc3RyY3B5QSBjYW4ndCB1c2Ugc3RyY3B5LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tb2R1bGUuaCwgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAtZGxsIG9wdGlvbiBmb3Igd2luZWxpYiBwcm9ncmFtcy4gKE5vdGU6IHdpbGwgbm90IHByaW50IHdhcm5pbmdzCglvbiBmYWlsdXJlIGN1cnJlbnRseSkuCgoJKiByZWxheTMyL250ZGxsLnNwZWM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHN0cmx3ci4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQ29zbWV0aWNzLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbmV3IHN0dWJzIChtbVRhc2tYWFgsIG1tVGhyZWFkWFhYLCBtY2lFeGVjdXRlKS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGNhbGxpbmcgbWl4ZXIgYXMgYSAzMiBiaXQgbG93IGxldmVsIGRyaXZlciAobm8gbG9uZ2VyIDE2IGJpdCkKCUFkZGVkIHN1cHBvcnQgZm9yIHlpZWxkIHByb2MgaW4gbWNpIHN0cnVjdAoJQWRkZWQgbW1UYXNrWFhYMTYgYW5kIG1tVGhyZWFkWFhYMTYgZnVuY3Rpb25zCglSZWZyZXNoZWQgaW1wbGVtZW50YXRpb24gb2YgMTYgYml0IG5hdGl2ZSAmIGFzeW5jaHJvbm91cyBNQ0kgZHJpdmVyCgljb21tYW5kICh0aHJvdWdoIG1tdGFzay50c2spLgoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGJ1Z3MuIFN0YXJ0ZWQgaW1wbGVtZW50aW5nIG1peGVyTWVzc2FnZSBhcyBhIDMyIGJpdAoJZnVuY3Rpb24gKG5vIGxvbmdlciAxNiBiaXQpLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBtY2lFeGVjdXRlLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHlpZWxkIHByb2MgbWVtYmVycyB0byBtY2kgc3RydWN0LgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1peGVyIHNwZWNmaWMgZXJyb3IgY29kZXMsIGZpeGVkIHR5cGUgaW4gZnVuY3Rpb24gbmFtZS4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuIGNvZGVzIGZvciBkZWZhdWx0IGRyaXZlciBwcm9jLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNYWRlIExCX0dFVENVUlNFTCByZXR1cm4gZm9jdXNfaXRlbSBpZiBubyBpdGVtIGhhcyBiZWVuIHNlbGVjdGVkLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUthbGV2aSBKIEhhdXRhbmllbWkgPG9oM2ZnQG9oM3RyLmVsZS50dXQuZmk+CglBZGRlZCBGaW5uaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZ3JhcGhpY3Mvd2luZy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaDoKCVZla3NsZXIgTWljaGFlbCA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHdpbnVzZXIxNi5oIGZyb20geDExZHJ2LmguCgoJKiBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJSW1wbGVtZW50YXRpb24gb2YgRW51bVByaW50ZXJzQSwgaW5mbyBsZXZlbCA0IGFuZCA1LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUNoZWNrIGlmIHRoZSBidWlsZCBpcyBzdHJpcHBlZCwgYW5kIGRpZSBpZiBpdCBpcy4KCUNoZWNrIGZvciBCYXNoIDIuMCwgYW5kIGlmIHNvIHVzZSBkaWZmZXJlbnQgU1RERVJSLT5TVERPVVQgcmVkaXJjdG9yCgkodGhhbmtzIFJ5YW4gQ3VtbWluZyEpLgoKCSogd2luZG93cy9tZGkuYzogVmVrc2xlciBNaWNoYWVsIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeGVkICJyZWFjaGVkIGVuZCBvZiBub24gdm9pZC4uLiIgd2FybmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXNzYWdlQm94MzJBIC0+IE1lc3NhZ2VCb3hBCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50YXRpb24gZm9yIEZyZWVMaWJyYXJ5QW5kRXhpdFRocmVhZC4KCU1hZGUgR2V0QmluYXJ5VHlwZSA9IEdldEJpbmFyeVR5cGVBLgoKCSogaW5jbHVkZS90YXNrLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUnVuIFdpbjMyIHByb2Nlc3NlcyBpbiB0aGVpciBvd24gdGhyZWFkcy4KCVByb2Nlc3MgZXhpdCBzZXF1ZW5jZSBhZGFwdGVkLgoKU3VuIE1hciAyMSAxOToyNjoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNoYW5nZWQgcHJvY2VzcyBpbml0aWFsaXNhdGlvbiB0byB1c2UgdGhlIG5ldyBzZXJ2ZXIgcmVxdWVzdHMuCglTdGFydGVkIHRvIG1vdmUgdGhlIHByb2Nlc3MgaW5pdCB0byB0aGUgcmlnaHQgY29udGV4dCwgbm90IGZpbmlzaGVkIHlldC4KCgkqIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFkZGVkIG5ld19wcm9jZXNzIGFuZCBpbml0X3Byb2Nlc3MgcmVxdWVzdC4KCVNwbGl0IG91dCBwcm9jZXNzIGNyZWF0aW9uIGZyb20gdGhyZWFkIGNyZWF0aW9uLgoJQ2hhbmdlZCBzZXJ2ZXIgaW5pdGlhbGlzYXRpb24gdG8gZW5zdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgYSBjdXJyZW50Cgl0aHJlYWQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJT25lIHNtYWxsIGVycm9yIGNvcnJlY3RlZCBhbmQgdGhlIDEwMnRoIGtleS4uLgoKCSogbWlzYy9jb21tLmMsIGluY2x1ZGUvY29tbS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgY29tbWVycm9yIGFuZCBldmVudG1hc2sgbG9jYWwgdG8gZWFjaCBwb3J0IChmb3Igd2luMTYpLCBtYWRlIHRoZQoJd2luMTYgcm91dGluZXMgdXNlIHBvcnQgaW5kaWNlcyBpbnN0ZWFkIG9mIFVOSVggZmRzICh0aGlzIHNob3VsZCBtYWtlCglzb21lIFZpc3VhbCBCYXNpYyBzdHVmZiBhbmQgc2ltaWxhciBnYXJiYWdlIHN0YXJ0IHdvcmtpbmcpLCBtb3ZlZCBzb21lCglzdHVmZiBhcm91bmQgKHdpbjE2IHJvdXRpbmVzIGF0IHRvcCBvZiBmaWxlLCB3aW4zMiByb3V0aW5lcyBhdAoJYm90dG9tKSwgbWFkZSBhIGNvdXBsZSBvZiB3aW4zMiByb3V0aW5lcyB1c2Ugd2luMzIgaGFuZGxlcywgYW5kIGFkZGVkCglhIGZldyBoaW50cyBhcyB0byBob3cgdG8gaW1wbGVtZW50IGFzeW5jaHJvbm91cyBidWZmZXJzLCBiYXNlZCBvbgoJd2hpY2ggRW5hYmxlQ29tbU5vdGlmaWNhdGlvbiBjYW4gZXZlbnR1YWxseSBiZSBpbXBsZW1lbnRlZC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHByb3RvdHlwZXMgb2YgYSBjb3VwbGUgb2YgY29tbSByb3V0aW5lcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgdHlwby4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNsZWFyIHVwZGF0ZSByZWdpb24gYmVmb3JlIFdNX05DREVTVFJPWS4KCgkqIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCByZWxheTMyL3V0dGh1bmsuYywgd2luZG93cy9xdWV1ZS5jOgoJR290IHJpZCBvZiBTWVNURU1fTE9DSyBtYWNyb3MuCgpTYXQgTWFyIDIwIDA3OjE4OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYzogTm8gbG9uZ2VyIG5lZWQgdG8gZGVsZXRlIHN5c3RlbSBoZWFwIGNyaXRpY2FsIHNlY3Rpb24uCgpGcmkgTWFyIDE5IDE3OjA0OjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2hlY2sgZm9yIGRlc2t0b3AgaW4gU0hHZXRGaWxlSW5mby4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIGluIE1DSSBtZXNzYWdlIG1hcHBpbmcgKDMyQSA9PiAxNikuCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgV0lOX1NlbmREZXN0cm95TXNnLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglSZW1vdmVkIGRlZmluaXRpb25zIGZvciBGSU9OUkVBRCBhbmQgRklPTkJJTy4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZXMgc29tZSByZXR1cm4gdmFsdWVzIGZvciBEZWZEcml2ZXJQcm9jLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCB0aGUgY2hvcCBjb21tYW5kIHRoYXQgd2FzIHRoZXJlIHRvIGdldCByaWQgb2YgZG9zIF5NLgoJVGhlIHNjcmlwdCBub3cgcHJvY2VzcyBvbmx5IHVuaXggZmlsZSBmb3JtYXQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglIaWRlIGRpYWxvZyB3aW5kb3dzIGNyZWF0ZWQgYnkgQ3JlYXRlRGlhbG9nKiBpbiBFbmREaWFsb2cganVzdCBhcwoJV2luZG93cyBkb2VzLgoKCSogb2xlL3ZhcmlhbnQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTZXQgdHlwZSBvZiBkZXN0aW5hdGlvbiB2YXJpYW50IGluIFZhcmlhbnRDaGFuZ2VUeXBlRXggZnVuY3Rpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeGVkIERhbmlzaCBrZXlib2FyZCBsYXlvdXQuCgpUaHUgTWFyIDE4IDE3OjM5OjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZWZvbnQuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywgaW5jbHVkZS93aW4uaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbHpleHBhbmQuYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9pbnQxMC5jLCBtdWx0aW1lZGlhL2luaXQuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb3RzIG9mIHdhcm5pbmcgZml4ZWQsIG9uZSBtaXNzaW5nIFdJTkFQSSBpbiBkZHJhdy5jIGFkZGVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRzICsvLSwgUGdVcC9QZ0Rvd24sIEhvbWUvRW5kLCBMZWZ0L1JpZ2h0LCBVcC9Eb3duLgoKCSogcmVsYXkzMi9tc3ZmdzMyLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbXN2ZnczMi5zcGVjIGJyb3VnaHQgdXAgdG8gZGF0ZSAoZm9yZ290IGl0IGluIGxhc3QgbXN2ZnczMiBwYXRjaCkuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIG1pc2MvdG9vbGhlbHAuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgTW9kdWxlMzIqIHN0dWJzLgoKV2VkIE1hciAxNyAxNTo1NDo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUJydW5vIEFmb25zbyA8YnJ1bm8uYWZvbnNvQGNhbW9lcy5ybmwuaXN0LnV0bC5wdD4KCUFkZGVkIFBvcnR1Z3Vlc2Uga2V5dGFibGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJQWRkZWQgQ2FuYWRpYW4gRnJlbmNoIGtleWJvYXJkIGxheW91dC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIFVLIGtleWJvYXJkIGxheW91dC4KCgkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmM6Cgk8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkL2ltcGxlbWVudGVkIHZhcmlvdXMgaW50ZXJydXB0IGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGluY2x1ZGUvd2luaW9jdGwuaCwgd2luMzIva2VybmVsMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4gcmVtb3ZlZCBzb21lIHVubmVjY2Vzc2FyeSBpbmNsdWRlcywgcmVtb3ZlZCBvbmUKCWRpcmVjdCBXTkQqIGFjY2VzcyBpbiBjb250cm9scy9tZW51LmMuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBhIG1vcmUgZGVmZW5zaXZlIHZlcnNpb24gb2YgV0lOX1NlbmREZXN0cm95TXNnLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglJbnN0YWxsIGhlYWRlcnMgZnJvbSAkKFNSQ0RJUikuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIHRoZSBvYnNvbGV0ZSBJQ09NIG1hY3Jvcy4KCgkqIGluY2x1ZGUvdmZ3Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW92ZWQgdGhlIEFQSXMgY2xvc2VyIHRvIHRoZSBjb3JyZXNwb25kaW5nIENPTSBpbnRlcmZhY2UsIHJlbW92ZWQgdHdvCglkdXBsaWNhdGVzIGFuZCBhZGRlZCAyLTMgbWFjcm9zIGZvciBBL1cgQVBJcy4KCgkqIG1zZG9zL2ludDE1LmM6IDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJQWRkZWQgc29tZSBzdHVicyBmb3IgaW50MTUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW50ZXItdGhyZWFkIFNlbmRNZXNzYWdlKCkgYnVnZml4ZXM6CgktIEluc2VydCBuZXcgbWVzc2FnZSB0byBiZSByZWNlaXZlZCBhdCB0aGUgKmVuZCogb2YgdGhlIFNNX1BFTkRJTkdfTElTVC4KCS0gRG8gKm5vdCogcHJvY2VzcyByZWNlaXZlZCBtZXNzYWdlcyBpbiBSZXBseU1lc3NhZ2UoKS4KCS0gQ2xlYXIgdGhlIFFTX1NNUkVTVUxUIGZsYWcgb25seSBpbW1lZGlhdGVkbHkgYmVmb3JlIHdhaXRpbmcuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGVycm9yIGlmIG5vdCBhIHZhbGlkIE9MRSBjb21wb3VuZCBmaWxlLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYzogRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglGaXggY3Jhc2ggaWYgbHB1Q3VyRGlyTGVuIG9yIGxwdURlc3REaXJMZW49PTAuCgoJKiBtaXNjL2Nkcm9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBjZHJvbS5jIGNvbXBpbGUgb24gRnJlZUJTRCAoRnJlZUJTRCBkb2VzIG5vdCBzZWVtIHRvIGhhdmUgKlNFRUssCglzdHJhbmdlKS4KClR1ZSBNYXIgMTYgMTY6Mjk6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQYXNzIENyZWF0ZVByb2Nlc3MoKSBTRUNVUklUWV9BVFRSSUJVVEVTIHRocm91Z2ggdG8gUFJPQ0VTU19DcmVhdGUoKS4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBhc3MgbmV3IGFyZ3VtZW50cyAoc3VzcGVuZC9pbmhlcml0KSB0byB0aGUgc2VydmVyLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIHN1c3BlbmQvcmVzdW1lX3RocmVhZCByZXF1ZXN0cyBpbiBwaGFzZSBTVEFSVElORyBjb3JyZWN0bHkuCglTZXQgaW5pdGlhbCBzdXNwZW5kIGNvdW50IGZvciB0aHJlYWRzIGNyZWF0ZWQgd2l0aCBDUkVBVEVfU1VTUEVOREVELgoJU2V0ICdpbmhlcml0YWJsZScgZmxhZyBmb3IgcHJvY2Vzcy90aHJlYWQgaGFuZGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB3aW4uaCBpbmNsdWRlLCBhZGRlZCBub3cgbmVjZXNzYXJ5IG90aGVyCglpbmNsdWRlcyAod2luLmggdXNlZCBvbmx5IGJ5IFVQRE9XTiBub3cpLgoKCSogbWlzYy9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZGVidWcuaCBtdXN0IGJlIGxhc3QsIG9yIHdlIGdldCBFUlIoKSBtYWNybyBwcm9ibGVtcyBhZ2Fpbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzbGlnaHQgYnVnIHRoYXQgd2FzIGluY2x1ZGVkIGluIHRoZSBjaGFuZ2UgZnJvbSBXTkQgcHRyIHRvCglod25kIGxhc3Qgd2Vlay4KCgkqIGxvYWRlci9tYWluLmMsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIGdyYXBoaWNhbCBwcm9ibGVtcyBvZiB0aGUgdHJlZXZpZXcgYW5kIGFkZGVkIHN1cHBvcnQgTE1CCgljbGljayBvbiArLy0gc2lnbiB0byBvcGVuIGFuZCBjbG9zZS4KCUZpeGVkIGEgYnVnIGluIGltYWdlbGlzdCB3aGVyZSB0aGUgbGFzdCBpbWFnZSBjb3VsZCBub3QgYmUgZGlzcGxheWVkLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQXZvaWQgdW5uZWNlc3NhcnkgZXJyb3IgbWVzc2FnZXMuCgoJKiB3aW5kb3dzL2hvb2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJZ25vcmUgSElXT1JEIG9mIGJvb2xlYW4gcmV0dXJuIHZhbHVlcyBvZiAxNi1iaXQgaG9vayBwcm9jZWR1cmVzLCB0bwoJbWF0Y2ggYnVnZ3kgV2luZG93cyBiZWhhdmlvdXIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gZW51bWVyYXRpb24gZnVuY3Rpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgYnVnIGludHJvZHVjZWQgaW4gV0lOX0ZpbmRXaW5kb3cuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCTAgaXMgYSB2YWxpZCBpbmRleCBmb3IgYSB0YWIgaXRlbS4KCUNyZWF0ZVNvbGlkQnJ1c2ggdGFrZXMgYSBDT0xPUlJFRiBhcyBhIHBhcmFtZXRlci4KCVRhYiBjb250cm9scyB3ZXJlIGFsd2F5cyBkaXNwbGF5ZWQgaW4gdGhlIHRvcCBsZWZ0IGNvcm5lci4KCk1vbiBNYXIgMTUgMTY6MTU6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdGhlIGludGVyZmFjZXMgdG8gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIGFsbCBNQ0kgaW50ZXJuYWwgZnVuY3Rpb25zL3ZhcmlhYmxlcy9tYWNyb3MgdG8gbWNpLmMuCglDaGFuZ2VkIHNvbWUgaW50ZXJmYWNlIG5hbWVzLgoKCSogaW5jbHVkZS9kaWdpdGFsdi5oLCBtdWx0aW1lZGlhL21jaWF2aS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIHVzZSBvZiBkaWdpdGFsdi5oIGZpbGUuCgoJKiBtdWx0aW1lZGlhL2luaXQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIGhvdyBsaXN0IG9mIGxvYWRhYmxlIE1DSSBkcml2ZXJzIGlzIG9idGFpbmVkLgoKCSogZG9jdW1lbnRhdGlvbi9rZXlib2FyZDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZXNjcmliZXMgaW4gbmV3YmllIHRlcm1zIGhvdyB0byBhZGQgbmV3IGtleWJvYXJkIGxheW91dHMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUJldHRlciBjb21tZW50cywgYW5kIGFkZGVkIEFOU0kgY29kZXBhZ2VzIGluIHRhYmxlLgoJVVMga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgVXdlIEJvbm5lcy4KCUZyZW5jaCBrZXlib2FyZCBjb250cmlidXRlZCBieSBFcmljIFBvdWVjaC4KCUdlcm1hbiBrZXlib2FyZCBjb250cmlidXRlZCBieSBVbHJpY2ggV2VpZ2FuZC4KCURhbmlzaCBrZXlib2FyZCBjb250cmlidXRlZCBieSBCZXJ0aG8gU3R1bHRpZW5zLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJLSBSZWltcGxlbWVudGF0aW9uIG9mIHRoZSBDb21tRGxnIEV4dGVuZGVkRXJyb3IgbWVjaGFuaXNtIHVzaW5nIFRMUy4KCS0gU29tZSBoZWFkZXIgaW5jbHVzaW9uIGNsZWFudXAuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbW1pby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpYyBmaXhlcy4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZXMgdXNlIG9mIG5ldyBDREFVRElPX1NlZWsoKSBmdW5jdGlvbi4KCgkqIG1zZG9zL2ludDJmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVmFyaW91cyBmaXhlcyBmb3IgTVNDREVYIHRyYXBzLgoKCSogbWlzYy9jZHJvbS5jLCBpbmNsdWRlL2Nkcm9tLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbmV3IGZ1bmN0aW9uIENEQVVESU9fU2VlaygpLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIDE2LzMyIGJpdCBkcml2ZXIgbWVzc2FnZXMgbWFwcGluZyBhbmQgaGFuZGxpbmcuCglCZXR0ZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGJhZCBoYW5kbGVzLgoKCSogaW5jbHVkZS9wZWV4ZS5oLCBsb2FkZXIvcmVzb3VyY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIE1FU1NBR0VfUkVTT1VSQ0VfKiBkZWZpbmVzIGZyb20gU0RLIGhlYWRlcnMsIHVwZGF0ZWQgTG9hZE1lc3NhZ2UqCgljb2RlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglGaXhlZCBtYWtlIGluc3RhbGwuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBNYXIgMTQgMTc6MjU6MzMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luLmgsIGlwYy9kZGVfcHJvYy5jLCBtaXNjL3NweS5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBncmFwaGljcy9kZHJhdy5jLCBpZjE2MzIvdGh1bmsuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1hZGUgYWNjZXNzIHRvIHRoZSB3bmQgc3RydWN0IHRocmVhZC1zYWZlLgoKCSogKi8qOiBKaW0gQXN0b24gPGFzdG8wMDAxQGFsZ29ucXVpbmMub24uY2E+CglSZW5hbWVkIHdpbnR5cGVzLmggdG8gd2luZGVmLmguCgoJKiBtZW1vcnkvaGVhcC5jOiBNYWtlIHRoZSBzeXN0ZW0gaGVhcCBjcml0aWNhbCBzZWN0aW9uIGdsb2JhbC4KCgkqIE1ha2UucnVsZXMuaW46CglGaXhlZCBNYWtlZmlsZSB1cC10by1kYXRlIGNoZWNrIHRvIGF2b2lkIHJlbGlua2luZyBhbGwgdGhlIG9iamVjdAoJZmlsZXMuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlaW1wbGVtZW50ZWQgc29tZSBjb2RlIHdpdGhvdXQgdXNpbmcgWDExLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgcmVsYXkzMi9kZHJhdy5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBmdW5jdGlvbnMgRGlyZWN0RHJhd0VudW1lcmF0ZVcgYW5kIERpcmVjdERyYXdFbnVtZXJhdGVFeFcuCgoJKiBpbmNsdWRlL3BlZXhlLmgsIGxvYWRlci9wZV9pbWFnZS5jOiBUaGVvZG9yZSBTLiBIZXRrZSA8dHNoQGd0ZS5uZXQ+CglBZGRlZCB0cmFjaW5nIGZvciBkZWxheWVkIGltcG9ydHMgYW5kIHJlbW92ZWQgdGhlIGZpeG1lLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgR2V0U2hvcnRQYXRoTmFtZUEvVy4KCgkqIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6IE5hdGhhbiBab3JpY2ggPHdmaWxhcmRvQGZ1c2UubmV0PgoJQWxsb3cgdGhlIGZpbGUgbmFtZXMgYW5kIHBhdGhzIGZvciB0aGUgcmVnaXN0cnkgZmlsZXMgKHVzZXIucmVnIGFuZAoJc3lzdGVtLnJlZykgdG8gYmUgc3BlY2lmaWVkIGluIGEgW1JlZ2lzdHJ5XSBzZWN0aW9uIG9mIHdpbmUuaW5pIG9yCglvdGhlciBjb25maWcgZmlsZS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggT2VtVG9BbnNpQnVmZiBmb3IgcmVhbCBXaW4zMSBiZWhhdmlvci4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlyc3QgYXR0ZW1wdCBhdCBzdXBwb3J0aW5nIGRpZmZlcmVudCBrZXlib2FyZCBsYXlvdXRzIHdpdGggdGhlaXIKCWNvcnJlY3Qgc2NhbmNvZGUgbWFwcGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL1JFQURNRSwgcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnUmVzdG9yZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdTZXQuc2gsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGNvbW1hbmQgbGluZSB0b29sIHRvIGFjY2VzcyB0aGUgcmVnaXN0cnkuCgoJKiByYy93aW5lcmMuYzogRml4ZWQgY29tcGlsYXRpb24uCgoJKiByYy8uY3ZzaWdub3JlOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUlnbm9yZSBnZW5lcmF0ZWQgZmlsZXMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2xjYy5oOiBGaXhlZCBtYWtlIGRlcGVuZC4KCgkqIG9sZS9vbGUyLmMsIG9sZS9vbGVmb250LmMsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGxpbnV4bWFzdGVyLmh1bmdyeWNhdHMub3JnPgoJTWFueSBuZXcgZGVmaW5lcywgYW5kIHN0cnVjdHMgdG8gaGVscCBjb21waWxlIE1GQy4gQXMgd2VsbCBhcyBhIGZldwoJT0xFIGNvcnJlY3Rpb25zIGZyb20gZWFybGllci4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgR2V0TW9kdWxlSGFuZGxlMTYgb25seSBsb29rIGZvciBtb2R1bGUgbmFtZXMsIG5vdCBwYXRoIG5hbWVzLgoKCSogbXNkb3MvaW50MTAuYzogSmVzcyBIYWFzIDxkZXNtb2tlQGhvdG1haWwuY29tPgoJQWRkZWQgc29tZSBtb3JlIHZnYSB2aWRlbyBtb2Rlcy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUHJldmVudCBYMTEgZXJyb3JzIHdoZW4gWENyZWF0ZVdpbmRvdyBpcyBjYWxsZWQgd2l0aCB6ZXJvIHdpZHRoIG9yCgloZWlnaHQuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IENhb2xhbiBNY05hbWFyYSA8Q2FvbGFuLk1jTmFtYXJhQHVsLmllPgoJQWRkZWQgbWV0YWZpbGUgc3VwcG9ydCBmb3IgRXh0Rmxvb2RGaWxsLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgoJUGFpbnQgZ3JheSB0ZXh0IG9uIGdyYXkgYmFja2dyb3VuZCBpbiBjaGVja2JveGVzL3JhZGlvYnV0dG9ucyBieQoJc3RpcHBsaW5nLiBBbHNvIGNoYW5nZWQgdGhlIGJydXNoIHVzZWQgaW4gdGhpcyBjYXNlIHRvIGdpdmUgYmV0dGVyCglyZWFkYWJpbGl0eSB3aXRoIFggZm9udHMuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3RhcGkuaCwgbWlzYy9BdHRpYy90YXBpMzIuYywgbWlzYy9NYWtlZmlsZS5pbiwgcmVsYXkzMi90YXBpMzIuc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCBpbmNsdWRlL2RlYnVnLmg6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCAobmVhcmx5KSBhbGwgVEFQSSBmdW5jdGlvbnMgYXMgc3R1YnMuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2MvY29tbS5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmg6CglNaWNoYWVsIE1jQ29ybWFjayA8TWljaGFlbC5NY0Nvcm1hY2tAYWxjYXRlbC5jb20uYXU+CglCYXNpYyBzdXBwb3J0IGZvciBXSU4zMiBzZXJpYWwgY29tbXVuaWNhdGlvbnMgQVBJLgoJTW9kaWZ5IERPU0ZTX09wZW5EZXZpY2UgdG8gYWxsb3cgb3BlbmluZyBvZiBDT00gcG9ydHMuCglDaGFuZ2UgV2luMzIgY29tbSBmdW5jdGlvbnMgdG8gYWNjZXB0IGZpbGUgaGFuZGxlLgoJQWRkIGRlY2xhcmF0aW9uIG9mIENPTVNUQVQzMiBzdHJ1Y3R1cmUuCgoJKiBncmFwaGljcy92Z2EuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIHNpbGx5IFZHQS1lbXVsYXRpb24gcGFsZXR0ZSBidWcuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIHVnbHkgd2FybmluZ3MgKGNhdXNlZCBieSB1Z2x5IGVycm9ycykuCgoJKiBtc2Rvcy9kb3NtZW0uYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQnVnIGZpeC4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBvbGUvZ3VpZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIElTaGVsbEZvbGRlciBhbmQgSUVudW1JRExpc3QgYXJlIHVzaW5nIHRoZSBuZXcgQ09NIGhlYWRlcnMKCS0gZml4ZWQgc29ydCBvcmRlciBmb3IgZm9sZGVycyBhbmQgZHJpdmVzCgoJKiBSRUFETUU6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ29ycmVjdGVkIGxvY2F0aW9uIG9mIEZBUS4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRnVsbHkgaW1wbGVtZW50ZWQgRGlyZWN0IENvbnNvbGUgSW5wdXQuCgpTYXQgTWFyIDEzIDE4OjIwOjI3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaWYxNjMyL3RodW5rLmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG5ld2x5IGludHJvZHVjZWQgYW5kIHNvbWUgbGVmdG92ZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgdGhlIHN0YW5kYXJkIG1hY3JvcyBmb3IgR2V0VGV4dEV4dGVudFBvaW50CglhbmQgR2V0VGV4dEV4dGVudFBvaW50MzIuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgc29tZSBTZW5kTWVzc2FnZTMyQSB0aGF0IGVzY2FwZWQgdGhlIHJlbmFtaW5nLgoKCSogaW5jbHVkZS9vbGUyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJT24gd2luZG93cyBvbGUyLmggaW5jbHVkZXMgb2xlYXV0by5oIGFuZCBzb21lIHByb2dyYW1zIGRlcGVuZCBvbiB0aGlzLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS9vbGUyZGlzcC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVzIGluIHRoZSBTeXNBbGxvY1N0cmluZyBmdW5jdGlvbnMgcHJvdG90eXBlcy4gSXQncyBtb3N0bHkgJ2NvbnN0JwoJcHJvYmxlbXMgdGhhdCBwcmV2ZW50IHJlZ3VsYXIgY29kZSBmcm9tIGNvbXBpbGluZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9jZHJvbSwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9kcml2ZSwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyMiwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9oYXJkZGlzaywgaW5jbHVkZS9iaXRtYXBzL29pY19jZHJvbSwgaW5jbHVkZS9iaXRtYXBzL29pY19mbG9wcHksIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlcjIsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGRpc2ssIGluY2x1ZGUvYml0bWFwcy9vaWNfbmV0d29yaywgaW5jbHVkZS93aW51c2VyLmg6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRmlsZSBvcGVuIGRpYWxvZyBub3cgdXNlcyBpY29ucyBpbnN0ZWFkIG9mIGJpdG1hcHMuCgoJKiBpbmNsdWRlL3Zmdy5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgQVZJKiBjbGFzcyBpbnRlcmZhY2UgdG8gbmV3IElDT01fIG1ldGhvZHMuCgoJKiBtdWx0aW1lZGlhL21zdmlkZW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIHJlbGF5MzIvYXZpZmlsMzIuc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdGFydGVkIG9uIGF2aWZpbDMyIGltcGxlbWVudGF0aW9uIChvbmx5IHN0dWJzIGN1cnJlbnRseSkuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlaW1wbGVtZW50ZWQgRHJhd0ZvY3VzUmVjdCB3aXRob3V0IHVzaW5nIFgxMS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MTAuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIG1vZGUgc2V0dGluZyB0aGluZ3MgYXMgd2VsbCBhcyBWRVNBIGFkZGl0aW9ucyBhbmQgb3RoZXIKCXRoaW5ncy4gQ2xlYW5lZCB1cCBET1NNRU1fQmlvc0RhdGEgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgb2xlL29sZWZvbnQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJUGVyc2lzdFN0cmVhbSBpbnRlcmZhY2Ugb24gdGhlIE9MRSBmb250IG9iamVjdC4KCgkqIG1pc2NlbXUvZW11bGF0ZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBmdW5jdGlvbiBCWD02IHJvdW5kIFNUMCB0byBpbnRlZ2VyLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmdkaS5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCS0gQ2hhbmdlZCBMVk1fU0VUSVRFTVBPU0lUSU9OIC0+IExWTV9TRVRJVEVNUE9TSVRJT04zMgoJICAgICAgICAgIExWTV9TRVRJVEVNUE9TSVRJT04xNiAtPiBMVk1fU0VUSVRFTVBPU0lUSU9OCgktIEFkZGVkIHNvbWUgbWlzc2luZyBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyB0byB3aW5nZGkuaAoJLSBBZGRlZCBwcm9wZXIgZGVmaW5lcyBmb3IgR2V0Q2hhcldpZHRoc1hYWAoJLSBBZGRlZCBjKysgcHJvdGVjdGlvbiB0byB3aW5nZGkuaAoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBtb3N0bHkgY2xlYW51cCBhZnRlciB0aGUgcmVuYW1pbmcKCS0gaW1wbGVtZW50ZWQgU0hJTENyZWF0ZUZyb21QYXRoCgktIHNtYWxsIGNoYW5nZWQgdG8gU0hHZXRGaWxlSW5mbwoKCSogaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDaGFuZ2VkIHRoZSBETEdURU1QTEFURSBhbmQgRExHSVRFTVRFTVBMQVRFIHR5cGVzIHRvIGFkaGVyZSB0byB0aGUgQVcKCXN0cnVjdHVyZSBmb3IgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NkZXJyLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglNb3ZlZCBlcnJvciBjb2RlcyB0byBjZGVyci5oLgoKCSogbG9hZGVyL21vZHVsZS5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJRml4IENyZWF0ZVByb2Nlc3MgdG8gaGFuZGxlIGxwQ29tbWFuZGxpbmUgYmV0dGVyLgoKCSogd2luMzIvaW5pdC5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJQ2hhbmdlIEdldFN0YXJ0dXBJbmZvQS9XIHRvIHJldHVybiB0aGUgcmVhbCBTdGFydHVwSW5mby4KCgkqIHdpbmRvd3MvbWRpLmM6IEd1eSBBbGJlcnRlbGxpICA8PGdhbGJlcnRlQG5lby5scnVuLmNvbT4+CglIYW5kbGUgbnVsbCB3bmRQdHIgZm9yIG1kaSB3aW5kb3cuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglGaXhlZCBhIGNvdXBsZSBvZiBtaXNzaW5nICNkZWZpbmVzIGZvciBXaW4zMiBBUEkgZnVuY3Rpb25zIHdpdGgKCUFTQ0lJL1VuaWNvZGUgdmVyc2lvbnMuCgoJKiB3aW4zMi9uZXdmbnMuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi91dHRodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFVUUmVnaXN0ZXIgYW5kIFVUVW5SZWdpc3Rlci4KCgkqIGlmMTYzMi9kZGVtbC5zcGVjLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9kZGVtbC5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCUFkZGVkIGNvZGVkIHN0dWJzIGZvciBEZGVRdWVyeUNvbnZJbmZvICgxNiAmIDMyIGJpdCksIERkZUFkZERhdGEgKDMyCgliaXQpLCBEZGVBYmFuZG9uVHJhbnNhY3Rpb24gKDMyIGJpdCksIERkZUltcGVyc29uYXRlQ2xpZW50ICgzMikKCURkZVNldFF1YWxpdHlPZlNlcnZpY2UsIERkZVNldFVzZXJIYW5kbGUuCglDb3JyZWN0ZWQgaGVhcCBoYW5kbGluZyBpbiBEZGVJbml0aWFsaXplVywgcmVmaW5lZCBDcmVhdGVNdXRleCBlcnJvcgoJaGFuZGxpbmcuCglHZW5lcmFsIHRpZHlpbmcuCgoJKiBpZjE2MzIvb2xlY2xpLnNwZWMsIGluY2x1ZGUvb2xlLmgsIG9sZS9vbGVjbGkuYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglBZGRlZCBwcm90b3R5cGVzIGZvciBPbGVRdWVyeUxpbmtGcm9tQ2xpcCwgT2xlUXVlcnlDcmVhdGVGcm9tQ2xpcCwKCU9sZUNyZWF0ZUxpbmtGcm9tQ2xpcCwgT2xlQ3JlYXRlRnJvbUNsaXAsIE9sZVF1ZXJ5VHlwZSwKCU9sZVJldmVydENsaWVudERvYywgT2xlRW51bU9iamVjdHMuCgoJKiByZWxheTMyL29sZWNsaTMyLnNwZWM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglEZWZpbml0aW9uIGZvciBPbGVDcmVhdGVMaW5rRnJvbUNsaXAgd2FzIGluY29ycmVjdC4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hc2sgb3V0IHRoZSB1cHBlciAxMiBiaXRzIGZyb20gdGhlIHJlc291cmNlaWQsIGp1c3QgbGlrZSB3aW45NSBkb2VzLgoKCSogQlVHUzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVcGRhdGVkIGJ1ZyBsaXN0IGJ5IG15IGtub3dsZWRnZSBvZiB0aGVtLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVN0Z0NyZWF0ZURvY2ZpbGUgYWNjZXB0cyBOVUxMIGFzIGEgZmlsZSBuYW1lLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBDYW9sYW4gTWNOYW1hcmEgPENhb2xhbi5NY05hbWFyYUB1bC5pZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGFsdGVybmF0ZSBESUJCSVRCTFQgbGF5b3V0LgoKCSogZGVidWdnZXIvbXNjLmM6IFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJQnVmZmVyIHNpemUgYnVnIGluIExvY2F0ZURlYnVnSW5mb0ZpbGUuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglJbXByb3ZlZCAiZXJyb3IiIG1lc3NhZ2UgcmVhZGFiaWxpdHkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBGaXhlZCBwcm9jZXNzX3NpZ25hbGVkICh0aGFua3MgdG8gVXdlIEJvbm5lcykuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZpeGVkIG1ha2UgZGVwZW5kCgpGcmkgTWFyIDEyIDE3OjQyOjUwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS91cGRvd24uaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglSZXBsYWNlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBXTkQgc3RydWN0dXJlIGJ5IGNvcnJlc3BvbmRpbmcgY2FsbHMgdG8KCVdpbjMyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSBidWdzIGludHJvZHVjZWQgYnkgdGhlIGF1dG9tYXRlZCByZW5hbWluZy4KCgkqIHJlc291cmNlcy8uY3ZzaWdub3JlOiBBZGRlZCBzeXNyZXNfUnUucwoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSBsaXN0dmlldyBjb250cm9sIHRvIGFkZCB0aGUgcmVwb3J0IHZpZXcgYW5kIGZpeCBzb21lIGJ1Z3MKCWZvciB0aGUgbGlzdCB2aWV3LgoKCSogbWlzYy9zaGVsbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdXNlIG9mIFdORCBzdHJ1Y3QuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkICNpZmRlZiBIQVZFX1dDVFlQRV9ILgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFdORCBzdHJ1Y3QuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNZXNzYWdlIHRyYW5zbGF0aW9uIGZvciBXTV9XSU5JTklDSEFOR0UuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJb2JtX2Nsb3NlZF85NSBzaG91bGQgbm90IGJlIGRyYXduIGludmVydGVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFdORCBzdHJ1Y3QuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wcm92ZWQgcGVyZm9ybWFuY2UuCgoJKiB3aW5kb3dzL2RjZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxTdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZSBhIG5ldyBEQyBpbiBHZXREQ0V4IHdoZW4gbm9uZSBhcmUgYXZhaWxhYmxlLgoKCSogb2xlL29sZTJkaXNwLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgRG9zRGF0ZVRpbWVUb1ZhcmlhbnQoKSBhbmQgU3lzQWxsb2NTdHJpbmdCeXRlTGVuKCkgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvY29tYm8uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNoYW5nZWQgdGhlIGJ1dHRvbiBzdGF0ZSB0byAidXAiIGFzIHNvb24gYXMgaXQgaXMga25vd24gdGhhdCB0aGUKCXNlbGVjdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQsIHNvIHRoZSBidXR0b24gaXMgcmVkcmF3biBpbiB0aGUgInVwIgoJc3RhdGUuCgoJKiBtaXNjZW11L2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW11bGF0ZSAod2VsbCwgaWdub3JlKSBtb3YgY3IwLGVheCBhbmQgbW92IGVheCxjcjAuCgpXZWQgTWFyIDEwIDE4OjAzOjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBvbGUvY29tcG9iai5jLCBvbGUvZ3VpZC5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlZGxnLmMsIG9sZS9vbGVvYmouYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL0F0dGljL3dpbnR5cGVzLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMnZlci5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkZWQgYSBsb3Qgb2YgbmV3IE9MRSBpbnRlcmZhY2VzLgoKCSogZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYywgcmVzb3VyY2VzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvc3lzcmVzLmMsIHJlc291cmNlcy9zeXNyZXNfUnUucmM6CglBbGV4YW5kZXIgS2FuYXZpbiA8YWtAY2F2ZS5ob3Auc3R1Lm5ldmEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBSdXNzaWFuIGxhbmd1YWdlLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVGVtcG9yYXJ5IGZpeDogQWN0aXZhdGUgMTYtYml0IHN5c3RlbSB0aW1lciBjYWxsYmFjayByb3V0aW5lcywgYnV0Cglza2lwIGNhbGxpbmcgdGhlbSBpZiB0aW1lciBzaWduYWwgb2NjdXJlZCB3aGlsZSBjdXJyZW50IHRocmVhZCB3YXMKCWhvbGRpbmcgdGhlIFdpbjE2TG9jayAodG8gcHJldmVudCAxNi1iaXQgc3RhY2sgY29ycnVwdGlvbikuCgoJKiBpbmNsdWRlL3N5c2xldmVsLmgsIHNjaGVkdWxlci9zeXNsZXZlbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBfQ29uZmlybVdpbjE2TG9jayAoS0VSTkVMMzIuOTYpLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIHNvbWUgY2xlYW4gdXAgaW4gaGFuZGxpbmcgb2YgZGVwdGgKCS0gbW9yZSBkZXB0aCBjb252ZXJzaW9uIHJvdXRpbmVzIGZvciBYMTEgKDE1LCAxNiBhbmQgMzIgLT4gOCkKCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgU2VuZE1lc3NhZ2VUaW1lb3V0KCkgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmM6CglNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CglBZGRlZCBCb3llci1Nb29yZSB0ZXh0IHNlYXJjaC4KCgkqIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVVNFUi5EZXN0cm95SWNvbjMyIHRvIENhbGxvdXQgc3RydWN0LgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVsZXRlZCBORV9GcmVlUEVSZXNvdXJjZSgpLgoKCSogaW5jbHVkZS91c2VyLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgd2luZG93cy91c2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gY3Vyc29yL2ljb24gaGFuZGxpbmcgY2hhbmdlcy4KCgkqIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgYWNjZXNzaW5nIGJvdGggTkUgYW5kIFBFIHJlc291cmNlcyB3aXRoIGJvdGggMTYtIGFuZCAzMi1iaXQgQVBJLgoJSG9vayBjdXJzb3IvaWNvbiBkZXN0cnVjdGlvbiBpbnRvIEZyZWVSZXNvdXJjZSAobGlrZSBXaW45NSkuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFdpbjk1LXN0eWxlIHNoYXJlZCBjdXJzb3IvaWNvbiBjYWNoZS4KCU1lcmdlZCBORSBhbmQgUEUgcmVzb3VyY2UgaGFuZGxpbmcuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlcjI6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgZm9sZGVyIGJpdG1hcCBjb2xvcnMgZm9yIDhicHAuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogQ2FvbGFuIE1jTmFtYXJhIDxDYW9sYW4uTWNOYW1hcmFAdWwuaWU+CglXaW5kb3dzIGRvZXNudCBhbGxvdyBkYXNoZWQgYW5kIGRvdHRlZCBsaW5lcyA+IDEuCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHJlZmVyZW5jZS1jb3VudGluZyBwcm9ibGVtIGluIHRoZSBleHRlcm5hbCBsb2NrIG1lY2hhbmlzbS4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc2ltcGxlIGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsVmlldyBvYmplY3RzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL3NoZWxsLmg6CglTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUFkZGVkIHNvbWUgZXh0cmEgQ1NJRExzLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQWxsb3cgbHBDb21tYW5kTGluZSA9PSBOVUxMIGluIENyZWF0ZVByb2Nlc3MoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogVG9Bc2NpaSBzaG91bGQgbm90IGdlbmVyYXRlIEFTQ0lJIGNvZGUgd2hlbiBrZXktdXAgZmxhZyBpcyBzZXQuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQXZvaWQgdW5uZWNlc3NhcnkgR3JhcGhpY3NFeHBvc2UgZXZlbnRzLgoKCSogb2xlL3NhZmVhcnJheS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbmRleCBjYWxjdWxhdGlvbnMgb2YgdGhlIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgb2YgYSBzYWZlYXJyYXkuCglGaXhlZCBhIHdyb25nIGluaXRpYWxpemF0aW9uIG9mIHRoZSBWVCBzaXplcyBhcnJheS4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBSZWxlYXNlU3RnTWVkaXVtIG1ldGhvZC4KClR1ZSBNYXIgIDkgMTc6NDc6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBzb3J0ZWQgQVBJIGJ5IGdyb3VwcwoJLSBuZXcgc3R1YnM6ICBOdFF1ZXJ5RGlyZWN0b3J5RmlsZSwgIFp3UXVlcnlEaXJlY3RvcnlGaWxlCgktIGltcGwuOiBSdGxBbGxvY2F0ZUhlYXAsIFJ0bENyZWF0ZUhlYXAsIFJ0bERlc3Ryb3lIZWFwLCBSdGxGcmVlSGVhcCwKCSAgUnRsR2V0RGFjbFNlY3VyaXR5RGVzY3JpcHRvciwgUnRsR2V0U2FjbFNlY3VyaXR5RGVzY3JpcHRvcgoJLSBpbXBsLiBieSBSZXggSm9sbGlmZiAocmV4QGx2Y2FibGVtb2RlbS5jb20pOiBSdGxUaW1lVG9UaW1lRmllbGRzLAoJICBSdGxUaW1lRmllbGRzVG9UaW1lCgoJKiBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IG5ldyBwcm90b3R5cGVzLgoKCSogbG9hZGVyL3Jlc291cmNlLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeCB1c2Ugb2Ygd3JvbmcgcHJvdG90eXBlIGZyb20gbnRkbGwuaC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFrZSBtb3JlIGZ1bmN0aW9ucyBqdXN0IGNhbGxpbmcgZG93biB0byBudGRsbC4KCU5ldzogR2V0U2VjdXJpdHlEZXNjcmlwdG9yU2FjbC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBY2NlcHQgIk5vcm1hbCIgYXMgYSB2YWxpZCBBRk0gd2VpZ2h0LgoKCSogb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJU21hcnRlciB3YXkgb2Ygc2VhcmNoaW5nIGZvciBhIGZyZWUgYmxvY2suCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEaXJlY3RlZFlpZWxkKCkgb25seSB0byAxNi1iaXQgdGFza3MgaW4gUmVwbHlNZXNzYWdlKCkuCgoJKiBsaWJ0ZXN0L2hlbGxvNS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBjYXN0IHNvIGhlbGxvNSBjb21waWxlcyBhZ2Fpbi4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCURvbid0IGNvcHkgbHBzdHJGaWxlVGl0bGUgaWYgZ2l2ZW4gTlVMTCBwb2ludGVyIGZvciB0aGlzLgoJRGVscGhpIDIuMCBwYXNzZXMgTlVMTCBmb3IgbHBzdHJGaWxlVGl0bGUgdG8gR2V0T3Blbi9TYXZlRmlsZU5hbWUuCgoJKiBtaXNjL3dpbnNvY2suYywgaW5jbHVkZS93aW5zb2NrLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCBicm9rZW4gX2NvbnZlcnRfc29ja29wdCBmb3IgSVBQUk9UT19UQ1AgY2FzZXMsIGFkZGVkIFRDUF9OT0RFTEFZLgoKCSogbXNkb3MvZHBtaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCV9fYXNtX18gZml4IGFzIHN1Z2dlc3RlZCBieSA8ZGFuaWVsQG1hdC51dGZzbS5jbD4gRGFuaWVsIFNlcnBlbGwsCglyZW1vdmVkIGFkZGl0aW9uYWwgImVheCIgZnJvbSBjbG9iYmVyIGxpc3QsIHNvIGVnY3MtY3VycmVudCBsaWtlcyBpdC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlRmlsZU1hcHBpbmcgU2V0TGFzdEVycm9yKDApcyBvbiBuZXdseSBjcmVhdGVkIG1hcHBpbmdzLgoKU3VuIEZlYiAyOCAyMDowNToxMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBtaXNjL0F0dGljL2NvbW1kbGcuYywgbWlzYy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJS2xhYXMgdmFuIEdlbmQgPEtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglDcmVhdGUgYSBuZXcgc3ViZGlyZWN0b3J5IGZvciB0aGUgY29tbW9uIGRpYWxvZyBib3ggRExMIGFuZCBtb3ZlIGFsbAoJY29kZSBmcm9tIC9taXNjL2NvbW1kbGcuYyB0byB0aGlzIGRpcmVjdG9yeS4gIEFsc28gbWFkZSBhIHN0YXJ0IGluCglkb2N1bWVudGluZyB0aGUgQVBJIGNhbGxzLgoKCSogbWlzYy93aW5zb2NrLmMsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBpbmNsdWRlL0F0dGljL3dpbnR5cGVzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgaW5jbHVkZSBvcHRpbWl6YXRpb25zLgoKCSogd2luZG93cy9kcml2ZXIuYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtc2Rvcy9kcG1pLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvYmplY3RzL2RjLmMsIG9sZS9zdG9yYWdlMzIuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhIGxvdCBvZiB3YXJuaW5ncyB1c2luZyBXSU5FX1VOVVNFRCwgY2FzdHMsIGNvbW1lbnRpbmcgb3V0IGFuZAoJYWRkaXRpb25hbCB7fS4gUmV3cm90ZSBHZXRDcmVhdGlvbk1vZGVGcm9tU1RHTSBzbyB3ZSBkb24ndCBnZXQKCSJwb3NzaWJsZSB1c2Ugb2YgdW5pbml0aWFsaXplZCB2YXJpYWJsZSIuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNQ0lfT1BFTl9EUklWRVJfUEFSTVMgLSBBZGQgd2luMzIgdmVyc2lvbiBvZiBzdHJ1Y3R1cmUuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgbXNkb3MvaW50MjEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCBDcmVhdGVEaXJlY3RvcnkgTGFzdEVycm9yIHJldHVybnMgdG8gbWF0Y2ggV2luMzIgKGZvdW5kIG91dCBieQoJZXhwZXJpbWVudCkuIEFkYXB0ZWQgaW50MjEgQ3JlYXRlRGlyZWN0b3J5IGNhbGwgdG8gc3RpbGwgcmV0dXJuIHRoZQoJY29ycmVjdCBET1MgZXJyb3IgY29kZXMgYWNjb3JkaW5nIHRvIFJhbHBoIEJyb3duLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgcmVsYXkzMi9kZHJhdy5zcGVjOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGZ1bmN0aW9uIERpcmVjdERyYXdFbnVtZXJhdGVFeAoJLSBhZGRlZCAob3IgY29ycmVjdGVkKSBjaGVjayBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZW51bWVyYXRpb24gZnVuY3Rpb25zCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCZXR0ZXIgZGV0ZWN0aW9uIG9mIG9sZCAoaS5lLiBub24gT3BlbkdMIDEuMiBjb21wbGlhbnQpIHZlcnNpb24gb2YgTWVzYS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIDxzeXMvdHlwZXMuaD4uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCB0aGUgYnV0dG9uIHN0YXRlcyBhcyByZXR1cm5lZCBieSBJc0RsZ0J1dHRvbkNoZWNrZWQoKS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHF1b3RlZCBmaWxlIG5hbWVzIGluIENyZWF0ZVByb2Nlc3MoKS4KCgkqIGZpbGVzL2ZpbGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL2ZpbGUuYywgd2luMzIvY29uc29sZS5jOgoJQ0xJRU5UX1dhaXRSZXBseTogZG9uJ3QgY2xlYXIgbGFzdCBlcnJvciBvbiBzdWNjZXNzOyBmaXhlZCBjYWxsZXJzCglhY2NvcmRpbmdseSAoYmFzZWQgb24gYSBwYXRjaCBieSBKdWVyZ2VuIFNjaG1pZWQpLgoKCSogbXNkb3MvaW50MTAuYzogSmVzcyBIYWFzIDxkZXNtb2tlQGhvdG1haWwuY29tPgoJQWRkZWQgc29tZSBzdXBwb3J0IGFuZCBzdHVicyBmb3IgVkVTQSB0byBtc2Rvcy9pbnQxMC5jLgoKCSogb2xlL2JpbmRjdHguYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pZnMuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlY2xpLmMsIG9sZS9vbGVkbGcuYywgb2xlL29sZWZvbnQuYywgb2xlL29sZW9iai5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zYWZlYXJyYXkuYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvdHlwZWxpYi5jLCBvbGUvdmFyaWFudC5jLCB0b29scy9mbnQyYmRmLmMsIHdpbmRvd3MvZGlzcGxheS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9zb3VuZC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGNvbnRyb2xzL21lbnUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBpbmNsdWRlIG9wdGltaXNhdGlvbnMgYW5kIGZpeGVzLgoKCSogc2VydmVyL3Byb2Nlc3MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglvcGVuX29iamVjdCBzaG91bGQgcmV0dXJuIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIHdoZW4gdGhlIG5hbWVkIG9iamVjdAoJaXMgbm90IGZvdW5kLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlLgoKCSogc2NoZWR1bGVyL0F0dGljL2szMm9iai5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvQXR0aWMvazMyb2JqLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy90b29saGVscC5jOgoJVXNlIHNlcnZlciBoYW5kbGVzIGRpcmVjdGx5IGZvciBXaW4zMiBoYW5kbGVzLiBSZW1vdmVkIHVzZSBvZiBLMzJPQkouCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgb2xlL29sZWZvbnQuYywgb2xlL29sZW9iai5jLCBzY2hlZHVsZXIvQXR0aWMvazMyb2JqLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIG1pc2MvbmV0d29yay5jLCBtaXNjL3BvcnQuYywgbWlzY2VtdS9tYWluLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jLCBjb25zb2xlL3h0ZXJtLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCS0gZml4ZWQgbWlzc2luZyBzdGRsaWIuaCBhbmQgc3RyaW5nLmggaW5jbHVkZXMgZXZlcnl3aGVyZQoJLSByZW1vdmVkIGEgY291cGxlIG9mIHVubmVlZGVkIHN0ZGxpYi5oIGFuZCBzdGRpby5oIGluY2x1ZGVzCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUHJvY2VzcyBhbmQgdGhyZWFkIGlkIG5vdyB1c2UgdGhlIHNlcnZlci1zaWRlIGlkIGluc3RlYWQgb2YgYW4KCW9iZnVzY2F0ZWQgcG9pbnRlci4KCgkqIGxpYnRlc3QvZ3VpdGVzdC5jLCBsaWJ0ZXN0L2d1aXRlc3QucmMsIGxpYnRlc3QvZ3VpdGVzdC5yaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGhlIFdpbmRvd3MgR1VJIGJlaGF2aW91ciB0ZXN0ZXIgdXNlZCBvbiB0aGUgV2luZG93cyBjb21wdXRlci4gIEl0IHdhcwoJdXNlZCB3aXRoIEJvcmxhbmQgQysrIDQuNTIsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBhZGFwdCB0byBXaW5lbGliIGJ5Cgl3aG9ldmVyIGZlZWxzIGxpa2UgaXQ7IEkgaGF2ZW4ndCwgSSBqdXN0IHJlbGVhc2VkIHRoaXMgdXNlZnVsIHRlc3QgYXBwCglpbiBjYXNlIGl0IHdvdWxkIGJlbmVmaXQgb3RoZXIgZGV2ZWxvcGVycy4KCgkqIGRvY3VtZW50YXRpb24vZ3VpOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRoaXMgZmlsZSBkZXRhaWxzIHRoZSByZXN1bHRzIChtZXNzYWdlIHRyYWNlcykgdGhlIEdVSSBiZWhhdmlvdXIKCXRlc3RlciBhcHAgZ2F2ZSB1bmRlciByZWFsIFdpbmRvd3MgZm9yIHZhcmlvdXMgZXZlbnRzLiBJdCB3YXMgdXNlZnVsCglmb3Igc29tZSBvZiBteSBkZWJ1Z2dpbmcgYXQgbGVhc3QsIHBlcmhhcHMgaXQgY291bGQgYmUgb2Ygc29tZSB1c2UgdG8KCW90aGVyIFdpbmUgR1VJIGRlYnVnZ2VycyBhcyB3ZWxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19kbnMuYywgbXVsdGltZWRpYS9kc291bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgU29sYXJpcyBmaXhlcy4gPHJlc29sdi5oPiBuZWVkcyA8YXJwYS9uYW1lc2VyLmg+LCBzaWdfY29udGV4dC5oCgluZWVkcyB0byBkZWZpbmUgSEFORExFUl9DT05URVhULCB3Y3R5cGUuaCBkb2VzIG5vdCBsaWtlICd3c3ByaW50ZicKCWRlZmluZWQsIG1zZG9zL2RwbWkuYyBuZWVkcyAic3RhY2tmcmFtZS5oIiB0b28sIGFuZCBtdWx0aW1lZGlhL2Rzb3VuZC5jCgluZWVkcyAid2ludXNlci5oIi4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2V0QmluYXJ5VHlwZVtBV10gbW92ZWQgdG8gbG9hZGVyL21vZHVsZS5jLCBtb2RpZmllZCB0byByZWNvZ25pemUgLkNPTQoJYW5kIC5QSUYgZmlsZXMuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIENyZWF0ZVByb2Nlc3MgY2hhbmdlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTkUgbW9kdWxlcyBhZGFwdGVkIHRvIENyZWF0ZVByb2Nlc3MgY2hhbmdlcy4KCUxvYWRNb2R1bGUxNi9Mb2FkTGlicmFyeTE2IHJlb3JnYW5pemF0aW9uLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlIHJlb3JnYW5pemVkOgoJLSBSZW1vdmVkIGluc3RhbmNlIGRhdGEgc2VnbWVudCBmb3IgYWxsIGJ1dCBORSBtb2R1bGVzLgoJLSBDaGVjayBiaW5hcnkgdHlwZSBpbiBDcmVhdGVQcm9jZXNzIGJlZm9yZSBsb2FkaW5nIG1vZHVsZS4KCS0gVW5peCBwcm9jZXNzIGNyZWF0aW9uIG1vdmVkIGZyb20gV2luRXhlYyB0byBDcmVhdGVQcm9jZXNzLgoJLSBCdWdmaXg6IGZpbGwgaW4gdGhkYi0+dGViLmh0YXNrMTYgbWVtYmVyIGNvcnJlY3RseS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29kZSB0byByZXR1cm4gZGVmYXVsdCBsYW5ndWFnZSBjb2RlIGFzIGtleWJvYXJkIGxheW91dC4KCS0gSW1wbGVtZW50ZWQgb3RoZXIgc3R1YnMgYXNzb2NpYXRlZCB3aXRoIGtleWJvYXJkIGxheW91dDoKCSAgR2V0S2V5Ym9hcmRMYXlvdXROYW1lQSwgQWN0aXZhdGVLZXlib2FyZExheW91dCwKCSAgTG9hZEtleWJvYXJkTGF5b3V0W0FXXSwgR2V0S2V5Ym9hcmRMYXlvdXRMaXN0LgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvcmVzb3VyY2UuaCwgbWlzYy9BdHRpYy9jb21tZGxnLmMsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCVByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQcmludERsZ0Egc3R1Yi4KCgkqIG9sZS9ubHMvbmxkLm5sczogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglOb3cgY29tcGxpYW50IHRvIHRoZSBEdXRjaCBzdGFuZGFyZHMuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZJTkRfV25kUHRyIHNob3VsZCBub3Qgc2V0IEVSUk9SX0lOVkFMSURfV0lORE9XX0hBTkRMRSB3aGVuIGhXbmQ9MC4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIGRvc21lbSBibG9jayByZXNpemUgYnVncy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBubyBtb3JlIDNEIGNhcGFiaWxpdGllcyBpZiBEaXJlY3QzRCBzdXBwb3J0IGlzIG5vdCBjb21waWxlZCBpbgoJLSBzb21lIGRlYnVnIG1lc3NhZ2VzIGNsZWFuLXVwIChyZXBsYWNlZCBmcHJpbnRmcyBieSBEVU1QcykKCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdlIGdvdCBwYXNzZWQgYSBOVUxMIERpYWxlY3QgcHRyIGFuZCBhY2Nlc3NlZCBpdCB1bnByb3RlY3RlZC4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbWFwcGluZ3Mgd2l0aCBubyBhc3NvY2lhdGVkIGZpbGUuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9wcm9jZXNzLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglSZW1vdmVkIGRzdF9oYW5kbGUgaW4gZHVwbGljYXRlX2hhbmRsZSByZXF1ZXN0LgoJQWRkZWQgaW5oZXJpdCBmbGFnIGluIGNyZWF0ZV9tYXBwaW5nIHJlcXVlc3QuCgoJKiBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS9zYWZlYXJyYXkuYywgb2xlL3ZhcmlhbnQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHN1cHBvcnQgZm9yIGFycmF5cyBhbmQgc2FmZSBhcnJheXMgaW4gVkFSSUFOVCBkYXRhCglzdHJ1Y3R1cmVzLiBBbHNvIG1vdmVkIHRoZSBTQUZFQVJSQVkgZGVmaW5pdGlvbiAoeWV0IGFnYWluKSB0byB0aGUKCW9ial9vbGVhdXQuaCBmaWxlLgoKCSogd2luZS5pbmk6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIEZpbGVzeXN0ZW0gZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlcjI6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFkZSBmb2xkZXIgaWNvbnMgZ3JheS15ZWxsb3cgaW5zdGVhZCBvZiBibHVlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU9yZGVyIG9mIHNlbmQgbWVzc2FnZSBwcm9jZXNzaW5nIHdhcyBub3QgcmVzcGVjdGVkIGFuZCB0aGUgbWVzc2FnZQoJc3RhY2tlZCBsYXN0IGZpbmlzaGVkIGFmdGVyIHRoZSBtZXNzYWdlIHN0YWNrZWQgZmlyc3QuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBjaGVja3MgdG8gZ3VhcmQgYWdhaW5zdCBOVUxMIGFjdGl2ZSB3aW5kb3cuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglEb24ndCBjaGVjayBjaGlsZHJlbiBvZiBkaXNhYmxlZCBvciBpbnZpc2libGUgY29udHJvbHMgZm9yIGRpYWxvZwoJa2V5Ym9hcmQgYWNjZWxlcmF0b3JzLiBGaXhlcyBwcm9ibGVtcyB3aXRoIGRpYWxvZ3Mgd2l0aCB0YWIgYm94ZXMuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgQ29UYXNrTWVtUmVhbGxvYyBBUEkuIEFsc28gY2xlYW4tdXAgYXJvdW5kIHRoYXQgQVBJCgljYWxsLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgbWlzc2luZyBSZWxlYXNlLgoJU1RHTV9DUkVBVEUgc2hvdWxkIHRyYW5zbGF0ZSB0byBDUkVBVEVfQUxXQVlTLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGcmkgRmViIDI2IDEyOjMzOjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBERVZFTE9QRVJTLUhJTlRTOiBVcGRhdGVkIGZvciBuZXcgbmFtaW5nIGNvbnZlbnRpb25zLgoKCSogKi8qOiBMYXJnZS1zY2FsZSByZW5hbWluZyBvZiBhbGwgV2luMzIgZnVuY3Rpb25zIGFuZCB0eXBlcyB0bwogCXVzZSB0aGUgc3RhbmRhcmQgV2luZG93cyBuYW1lcy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVGh1IEZlYiAyNSAxODoxMTo0MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmM6IEFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUZvciB2YXJpb3VzIHJlYXNvbnMgc29tZSBvZiBvdXIgbGlid2luZSBleGVjdXRhYmxlcyBtdXN0IGhhdmUgYSAiLiIgaW4KCXRoZWlyIGZpbGUgbmFtZXMuIFRoZSAiLiIgY2F1c2VzIHRyb3VibGUgd2hlbiB0aGUgZmlsZSBuYW1lIGlzIHVzZWQgYXMKCXRoZSBjbGFzcyBuYW1lIGZvciBhbiBYIHJlc291cmNlIGFzIHdpbmUgZG9lcyBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcKCXVuZGVyIFguCgoJKiB3aW5kb3dzL3dpbi5jOgoJTWFrZSBHZXRXaW5kb3dMb25nKEdXTF9IV05EUEFSRU5UKSByZXR1cm4gdGhlIHNhbWUgdGhpbmcgYXMKCUdldFBhcmVudDMyOyBzdWdnZXN0ZWQgYnkgRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+LgoKCSogaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUFkZGVkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSBvbiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbgoJaGVhZGVyIGZpbGVzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBZGRlZCAiVGhlIEVhc3kgV2F5IiBhbmQgIlRoZSBIYXJkIFdheSIsIGxhcmdlbHkgZmF2b3JpbmcgdGhlIGVhc3kgd2F5LAoJd2hpY2ggdXNlcyBteSBidWdfcmVwb3J0LnBsIHNjcmlwdC4KCUFkZGVkIGluZm8gb24gYSBjb21tYW5kIHRoYXQgY2FuIGJlIHJ1biBvbiBhbGwgc2hlbGxzIHRvIHByaW50IGRlYnVnCgltc2dzIHRvIGEgZmlsZSBhbmQgbm90IHRvIHh0ZXJtLgoKCSogbXNkb3MvZHBtaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTmVlZHMgdGhyZWFkLmggZm9yIG5vbi1MaW51eC4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglBZGRpbmcgb2YgbmV3IGZ1bmN0aW9ucyB0byBtYWtlIHRoZSB3bmQgc3RydWN0IHRocmVhZCBzYWZlLiBBZGRpbmcgb2YKCWlyZWZDb3VudCBpbiB3bmQgc3RydWN0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBnZXRia2dkIGFuZCBkZWZpbmUgSEFWRV9HRVRCS0dELgoKCSogaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9vbGVmb250LmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCU1hbnkgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucyB0aGF0IG9yaWdpbmF0ZWQgZnJvbSBvbGVpZGwuaCwgb2FpZGwuaCBhbmQKCW9jaWRsLmggc2VwYXJhdGVkIGludG8gc29tZXdoYXQgcmVsZXZhbnQgb2JqXyogZmlsZXMuCgoJKiBmaWxlcy9kcml2ZS5jLCBvbGUvY29tcG9iai5jLCByZXNvdXJjZXMvc3lzcmVzLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4ZWQgd2FybmluZyBhbmQgY29tcGlsYXRpb24gZXJyb3JzLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIGluY2x1ZGVzIG9mIHdpbmUvKiBoZWFkZXJzLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWRlIG1lc3NhZ2UgIlJlc291cmNlIG5vdCBmb3VuZCIgV0FSTi4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBpbmNsdWRlL3NobG9iai5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QENPUkVMLkNBPgoJLSBVc2UgdGhlIG5ldyBDT00gZGVmaW5pdGlvbiBtYWNyb3MgaW4gdGhlIGhlYWRlci4KCS0gUHV0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb2JqZWN0IGluIHRoZSBjb250bWVudS5jLgoJLSBNYWtlIGFwcHJvcHJpYXRlIG5hbWUgY2hhbmdlcyBpbiBjb250bWVudS5jLgoKCSogbWlzYy9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbnJlZy5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8enlnb2JAY29yZWwuY2E+CglNb2RpZmllcyBwYXJhbWV0ZXIgbGlzdCBvZiBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdG8gY29tcGx5IHdpdGggU0RLLgoKCSogd2luZG93cy9zY3JvbGwuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVNjcm9sbERDMzIgbW9kaWZpZWQgdG8gcmV0dXJuIHJlY3QgaW4gbG9naWNhbCBjb29yZGluYXRlLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QENPUkVMLkNBPgoJQWRkcyBDKysgbmFtZWxlc3MgdW5pb24gc3VwcG9ydCB0byB0YWdWQVJJQU5ULgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QENPUkVMLkNBPgoJTW92ZWQgc29tZSBkZWZpbml0aW9ucyBvdXQgb2Ygb2xlYXV0by5oIGFuZCBpbnRvIG9haWRsLmggdG8gY29uZm9ybSB0byB0aGUgU0RLLgoJUmVtb3ZlZCBhIHJlZHVuZGFudCBpbmNsdWRlLgoJQWRkZWQgc29tZSBjKysgcHJvdGVjdGlvbi4KCldlZCBGZWIgMjQgMTU6NTg6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBwaWRsIHN0cnVjdHVyZSB0byBtYXRjaCB0aGUgcGlkbCdzIHVzZWQgaW4gbG5rLWZpbGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCByZWFkaW5nIG9mICoubG5rLWZpbGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJbmV3IGZpbGUsIGluY2x1ZGluZyB0aGUgSVNoZWxsTGluayBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBwcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlOiBjYWxsIFBFX0NyZWF0ZU1vZHVsZSBpbiB0aGUKCWNvbnRleHQgb2YgdGhlIG5ldyBwcm9jZXNzIChpbiBUQVNLX0NhbGxUb1N0YXJ0KS4KCUNoYW5nZWQgYWxsIFBFL01vZHVsZSByb3V0aW5lcyBzbyBhcyB0byBhbHdheXMgb3BlcmF0ZSBvbiB0aGUgY3VycmVudAoJcHJvY2VzczsgYWRhcHRlZCBhbGwgY2FsbGVycy4KCgkqIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy9pb3BvcnRzLmMsIG1zZG9zL3Z4ZC5jLCBtc2Rvcy94bXMuYywgb2xlL3N0b3JhZ2UuYywgb2xlL3R5cGVsaWIuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvYnVpbGQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgbG9hZGVyL21haW4uYywgbWVtb3J5L2F0b20uYywgbWlzYy9sc3RyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9wdGltaXplZCBhd2F5IG1vcmUgaW5jbHVkZXMsIHJlYWRkZWQgc29tZSAjaW5jbHVkZXMgZm9yIG5lY2Vzc2FyeQoJcHJvdG90eXBlcy4KCgkqIG1zZG9zL2ludDJmLmM6IDxzbWlsQG1lY2hhdHJvbmlrYS5odT4KCUFkZGVkIGxvdy1sZXZlbCBOZXR3YXJlIGluc3RhbGxhdGlvbiBjaGVjay4KCgkqIGluY2x1ZGUvY29uc29sZS5oLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgR2V0QmFja2dyb3VuZENvbG9yIGNhbGwgdG8gdGhlIGNvbnNvbGUgc3RydWN0LiBXaWxsIGJlIHVzZWQKCWxhdGVyLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglCdWdmaXhlcyBmb3IgSU5UIDEwLzBCIChTZXRCYWNrZ3JvdW5kQ29sb3IpIHRvIHdvcmsgcHJvcGVybHkuCgkoSW50ZXJydXB0IGxpc3QgZGlkIG5vdCBoYXZlIGNvcnJlY3QuKQoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdHVicyBmb3IgdHdvIG1pc3NpbmcgbWV0aG9kcyBvZiBESW5wdXQuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgYnVnLgoKCSogb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgbGFyZ2VyIGZpbGVzLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBidWZmZXIgb3ZlcnJ1biBwcm9ibGVtcyB3aXRoIEdldERJQml0cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgU2VuZE1lc3NhZ2UgYnVncy4KCgkqIG9sZS9jb21wb2JqLmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeCBDT01fRXh0ZXJuYWxMb2NrRnJlZUxpc3QgdG8gZG8gbm90IGZhaWwgd2l0aCBhbiBlbXB0eSBsaXN0LgoKTW9uIEZlYiAyMiAxMDoyMTo1NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9zdHJpbmcuYzoKCVp5Z28gQmxheGVsbCA8emJsYXhlbGxAZnVycnl0ZXJyb3Iub3JnPgoJSW1wbGVtZW50ZWQgc29tZSBDUlRETEwgc3RyaW5nIGZ1bmN0aW9ucy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9saW5lZGRhLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3N5c21ldHJpY3MuaCwgaW5jbHVkZS92ZncuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYywgbXVsdGltZWRpYS9tbWlvLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIG1vcmUgcmVjdXJzaXZlIGluY2x1ZGUgZml4ZXMvb3B0aW1pemF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBlbGltaW5hdGVkIG9uZSBlbGVtZW50IG9mIHRoZSBwaWRsIHN0cnVjdCAoZHdTRkdBTykKCS0gY2hhbmdlZCBzb21lIHN1cGVyZmxvdXMgRklYTUUKCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGhlYWRlciB1c2VzIHRoZSBsYXN0IG1hY3JvcyBub3cKCS0gcmV3cm90ZSBJRHJvcFRhcmdldCBhY2NvcmRpbmcgdG8gdGhlIG5ldyBDT00gaGVhZGVycwoJICAod2FzIGxvY2FsIGRlY2xhcmVkIG5vdCB1c2luZyB0aGUgYWxyZWFkeSB3cml0dGVuIHByb3RvdHlwZXMpCgktIGNvcnJlY3RlZCBEcm9wIG1ldGhvZCAod3JvbmcgcGFyYW1ldGVyIGNvdW50KQoKCSogd2luZG93cy9kaW5wdXQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRvIHVzZSB0aGUgbGF0ZXN0IENPTSBtYWNyb3MsIElDT01fVlRBQkxFIGFuZCBJQ09NX1RISVMuCglBZGRlZCB0aGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMuCglJIHJlbWVtYmVyZWQgZnJvbSBhbiBlbWFpbCB0aGF0IGV2ZW4gd2hlbiBhc2tlZCBmb3IgYQoJSURpcmVjdElucHV0RGV2aWNlQSB3aGF0IHdhcyByZXR1cm5lZCB3YXMgYW4gSURpcmVjdElucHV0RGV2aWNlMkEgc28gSQoJY29uc2lkZXJlZCB0aGF0IHdlIHdvdWxkIG9ubHkgaW1wbGVtZW50IHRoZSBsYXR0ZXIuIFRoZQoJSURpcmVjdElucHV0RGV2aWNlQV94eHggbWV0aG9kcyBoYXZlIGJlZW4gcmVuYW1lZCB0bwoJSURpcmVjdElucHV0RGV2aWNlMkFfeHh4LCBhbmQgd2UgYWx3YXlzIHJldHVybiBvdXIgSURpcmVjdElucHV0RGV2aWNlMkEKCWltcGxlbWVudGF0aW9uIGFzIGJlZm9yZS4KCVJlbmFtZWQgdGhlIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMgdG8gWHh4SW1wbC4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIGxhdGVzdCBDT00gbWFjcm9zCglEZWZpbmVkIHRoZSBJRGlyZWN0SW5wdXREZXZpY2VBIGludGVyZmFjZSBpbmRlcGVuZGVudGx5IGZyb20KCUlEaXJlY3RJbnB1dERldmljZTJBLgoJUmVtb3ZlZCB0aGUgMzIgc3VmZml4IG9mIHRoZSBpbnRlcmZhY2VzLiBIb3BlZnVsbHkgdGhpcyB3aWxsIG5vdAoJY2F1c2UgYW55IHByb2JsZW0gd2l0aCB0aGUgcmVuYW1pbmcuCglNb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgc3R1ZmYgdG8gZGlucHV0LmMgKHdlbGwsIHRoZQoJaW50ZXJmYWNlcyBhdCBsZWFzdCkuCgpTdW4gRmViIDIxIDE4OjM1OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaDoKCUNoYW5nZWQgaW5pdGlhbCBwcm9jZXNzIGNyZWF0aW9uIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9ucy4KCVJlbW92ZWQgYSBmZXcgdW51c2VkIGZpZWxkcyBpbiBQREIgYW5kIFRIREIuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVJlbW92ZWQgdGhyZWFkIHF1ZXVlIGZ1bmN0aW9ucy4KCUNoYW5nZWQgaW5pdGlhbCB0aHJlYWQgY3JlYXRpb24gdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb25zLgoJTW92ZWQgc2VydmVyIHN0YXJ0dXAgdG8gVEhSRUFEX0NyZWF0ZUluaXRpYWxUaHJlYWQuCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jOgoJUmVtb3ZlZCB1c2Ugb2YgcGVyLXRocmVhZCB3YWl0X3N0cnVjdCwgY2xlYW5lZCB1cCBhIGJpdC4KCgkqIHNjaGVkdWxlci9rMzJvYmouYywgbWVtb3J5L3ZpcnR1YWwuYzogUmVtb3ZlZCBNRU1fTUFQUEVEX0ZJTEVfT3BzLgoKCSogaW5jbHVkZS93aW5udC5oOiBBZGRlZCBhIGZldyBleGNlcHRpb24gY29kZXMuCgoJKiB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3Byb2dyZXNzLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9yZXNvdXJjZS5oLCBpbmNsdWRlL3N0cnVjdDMyLmgsIGluY2x1ZGUvdXBkb3duLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnBvcy5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL2NvbW1kbGcuYywgbWlzYy93aW5zb2NrX2Rucy5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL2RkZV9hdG9tLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaXNwZGliLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvZHNvdW5kLmgsIGNvbnRyb2xzL21lbnUuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CgktIEZpeCBoZWFkZXJzIHRvIGluY2x1ZGUgbGVzcyBvciBzbWFsbGVyIGhlYWRlciBmaWxlcy4KCS0gRml4IGhlYWRlciBhbmQgc291cmNlIGZpbGVzIHRvIGluY2x1ZGUgbWlzc2luZyBoZWFkZXIgZmlsZXMgdG8gYXZvaWQKCSAgd2FybmluZ3MgYW5kIGVycm9ycy4KCgkqIGxvYWRlci9zaWduYWwuYywgbWVtb3J5L2xkdC5jLCBtaXNjL3BvcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlICJnIiAoZ2VuZXJhbCByZWdzKSBpbnRvICJyIiAoaGFyZHJlZ3MpIGluIGNsb25lIC8gbW9kaWZ5X2xkdCAvCgl3aW5lX3NpZ2FjdGlvbiBfX1BJQ19fIGNhc2VzLCBzaW5jZSAiZyIgd2lsbCBub3Qgd29yayB3aXRoCgktZm9taXQtZnJhbWUtcG9pbnRlciAoImciIGlzIHJlZmVyZW5jZWQgdXNpbmcgJWVzcCB3aGljaCB3YXMKCWludmFsaWRhdGVkIGJlZm9yZSkuIEJ1ZyBmb3VuZCBhbmQgKG90aGVyKSBmaXggc3VnZ2VzdGVkIGJ5Cgk8ZGFuaWVsQG1hdC51dGZzbS5jbD4gRGFuaWVsIFNlcnBlbGwuCgoJKiBvbGUvb2xlZm9udC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgbG9hZGVyL3Rhc2suYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXggcHJvYmxlbSB3aGVyZSB5b3UgbmVlZCBtb3VzZSBhY3Rpdml0eSB0byB1bmxvY2sgc29tZSAxNiBiaXRzCgl0aHJlYWQgd2l0aCBtdWx0aS10aHJlYWRlZCBhcHBzLgoKU2F0IEZlYiAyMCAxNjo0ODo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL0F0dGljL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvZ3VpZC5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZWZvbnQuYywgb2xlL3R5cGVsaWIuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPbGVDcmVhdGVGb250SW5kaXJlY3QgbWV0aG9kIGFuZCB0aGUgYXNzb2NpYXRlZCBDT00KCW9iamVjdC4gVGhhdCBvYmplY3Qgc3VwcG9ydHMgdGhlIElGb250IGFuZCBJRGlzcGF0Y2ggaW50ZXJmYWNlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3BvcnQuYywgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19kbnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHJvYmxlbXMgcmVwb3J0ZWQgYnkgRG9uYWxkIFBhZ2UsIFBSIDEwNS0xMDcuCgoJKiBjb25zb2xlL25jdXJzZXMuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNb3JlIGNvbW1lbnRpbmcsIGJldHRlciBkZWJ1Z2dpbmcgb2YgY29sb3IgcHJvYmxlbXMsIGFuZCBzdXBwb3J0IGZvcgoJdGhlIG5ldyBUZXJtaW5hbFR5cGUgb3B0aW9uIGluIHdpbmUuaW5pLiBUaGlzIGFsbG93cyB1cyB0byBzZWxlY3QKCXdoaWNoIHRlcm1pbmFsIHR5cGUgd2UgYXJlIHJlYWxseSB1c2luZyBzbyB0aGF0IHdlIGNhbiwgZm9yIGV4YW1wbGUsCgl1c2UgaXRzIGNvbG9yIGNhcGFiaWxpdGllcy4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglTdXBwb3J0IGZvciB0aGUgbmV3IEluaXRpYWxSb3dzIGFuZGYgSW5pdGlhbENvbHVtbnMgb3B0aW9ucyBpbiB3aW5lLmluaQoJKEdlbmVyaWMgcmVwbGFjZW1lbnQgZm9yIFh0ZXJtUmVzb2x1dGlvbiBvcHRpb24uLi4pCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUZpeCAqRFVIKiBwcm9ibGVtIGNhdXNpbmcgbG90cyBhbmQgbG90cyBvZiB1bm5lY2Vzc2FyeSBBbGxvY0NvbG9yIGVycm9ycy4KCgkqIGNvbnNvbGUveHRlcm0uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglSZW1vdmFsIG9mIG9ic29sZXRlIFh0ZXJtUmVzb2x1dGlvbiBvcHRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGUsIHdpbmUuaW5pOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldyB3aW5lLmNvbmYgb3B0aW9ucy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmFja3RyYWNrIGlzc3VlIG9uIDE2Yml0IGNvZGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIExvY2F0ZURlYnVnSW5mb0ZpbGUgdG8gcmVkdWNlIHN0YWNrIGNvbnN1bXB0aW9uIChmcm9tIDEzayB0byAyayAhISkKCgkqIGRlYnVnZ2VyL2luZm8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjb21tZW50IGZvciBXaW5lIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgZ2V0L3NldF9oYW5kbGVfaW5mbyByZXF1ZXN0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRml4ZWQgZW5kLW9mLWxpbmUgYnVnIGluIFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzX1JMRTQuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXggYSBjb3VwbGUgb2YgNjRiaXQgcGxhdGZvcm0gcHJvYmxlbXMgYW5kIHNwZWVkIHVwIGNvbXBpbGF0aW9uLiBTZWUKCXRvb2xzL3dyYy9DSEFOR0VTIGZvciBkZXRhaWxzLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW1pb0Rlc2NlbmQ6IGRlYnVnb3V0cHV0IGVuaGFuY2VkLCBGSU5ETElTVC9GSU5EUklGRiBzaG91bGQgQ2hlY2sgdGhlCgljb3JyZWN0IGNraWQgKExJU1QvUklGRikgdG9vLiAodmVyaWZpZWQgYWdhaW5zdCBtY2lhdmkzMi5kbGwpCgoJKiBNYWtlZmlsZS5pbjogWnlnbyBCbGF4ZWxsIDx6YmxheGVsbEBmdXJyeXRlcnJvci5vcmc+CglBZGRlZCBhIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHdpbmUuc3ltIGJlZm9yZSBpbnN0YWxsaW5nIGl0LgoKCSogaW5jbHVkZS9vbGUyLmgsIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNvbWUgbmV3IHN0dWJzIGZvciB0aGUgT0xFIG1lbnUgZGVzY3JpcHRvciBtZXRob2RzLgoKRnJpIEZlYiAxOSAxNjo1MDoyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jOiBNYXJ0aW4gV2Fsa2VyIDxtd2Fsa2VyQGNhY2kuY28udWs+CglGaXhlZCBtZXNzYWdlIGZpbHRlcmluZyBjaGVjay4KCgkqIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgb2xlL29sZW9iai5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG1hZGUgdGhlIHNlY3VyaXR5IGZ1bmN0aW9ucyBjb25zaXN0ZW50LiBhZHZhcGkgY2FsbHMgZG93biB0byBudGRsbCBub3cKCS0gbmV3IFNldFNlY3VyaXR5RGVzY3JpcHRvckdyb3VwLCAgU2V0U2VjdXJpdHlEZXNjcmlwdG9yT3duZXIsCgkgIFNldFNlY3VyaXR5RGVzY3JpcHRvclNhY2wsIEdldFNlY3VyaXR5RGVzY3JpcHRvckRhY2wKCS0gbnQtaGVhZGVyIGNsZWFudXAKCgkqIGRsbHMvbnRkbGwvcnRsLmMsIGlmMTYzMi9idWlsdGluLmMsIG1pc2MvY3B1LmMsIHdpbjMyL2tlcm5lbDMyLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgZmV3IGJyb2tlbiBpbmNsdWRlcy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFJldmVydGVkIGJyb2tlbiBjbG9zZSBidXR0b24gY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy93aWRnZXRzLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4KCUFkZGVkIG1pc3Npbmcgc3RyaW5nLmggaW5jbHVkZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU9ubHkgYXBwZW5kIC5kbGwgaWYgbm8gZXh0ZW5zaW9uIHlldC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglUZW1wb3JhcnkgZml4IHN1Z2dlc3RlZCBieSBVbHJpY2ggdG8gYWxsb3cgdGhlCglNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3QgbWV0aG9kIHRvIGJlIGNhbGxlZCBmcm9tIDE2IGJpdCB0aHJlYWRzLgoKCSogd2luZG93cy93aW5wcm9jLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5pdGlhbGl6ZWQgcmV0dXJuIHZhbHVlIG9mIDE2LT4zMiBjb252ZXJzaW9uIG9mIFdNX01ESUdFVEFDVElWRSBpbgoJY2FzZSBpdCdzIHNlbnQgdG8gYSB3aW5kb3cgdGhhdCBkb2Vzbid0IGhhbmRsZSBpdCAoaS5lLiBub3QgTURJCgljbGllbnQpLgoKCSogaW5jbHVkZS9kY2UuaCwgd2luZG93cy9kY2UuYywgd2luZG93cy93aW5wb3MuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgZXh0cmEgY2hpbGQgYXJndW1lbnRzIHRvIERDRV9HZXRWaXNSZ24oKSB0byBiZSBhYmxlIHRvIGhhbmRsZQoJUEFSRU5UREMgY2xhc3Mgc3R5bGUgY29tYmluZWQgd2l0aCBDTElQQ0hJTERSRU4gd2luZG93IHN0eWxlLCB0bwoJcHJldmVudCBtaXMtcmVkcmF3cyBpbiBGcmVlIEFnZW50IDE2LWJpdC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IExhd3NvbiBBLiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCURvbid0IGhhbmcgb24gdGhlIGxhc3QgY2hpbGQgaWYgaXQncyBub3Qgd2FudGVkLgoKCSogd2luMzIva2VybmVsMzIuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglQYXJ0aWFsIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdW5kb2N1bWVudGVkIEtFUk5FTCByb3V0aW5lIFBLMTZGTkYsCgluZWVkZWQgYnkgV2luOTggRVhQTE9SRVIuIFRoYW5rcyB0byBVbHJpY2ggV2VpZ2FuZCBmb3IgaW5mb3JtYXRpb24uCgoJKiBtaXNjL2NvbW1kbGcuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggcmVkcmF3IHByb2JsZW1zIGZvciBDaG9vc2VDb2xvciBkaWFsb2cuCgoJKiAqLyouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGEgbG90IG9mIG9jY3VyZW5jZXMgb2Ygd2luZG93cy5oIChhbmQgYWRkZWQgbmVjZXNzYXJ5IG90aGVyCglpbmNsdWRlcykuCgoJKiBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgb2xlL2NvbXBvYmouYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDaGFuZ2VkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgZnJvbSBMUEdVSUQgKFdpbmRvd3MgaGVhZGVycykgdG8gUkVGR1VJRC4KCVRoaXMgbWFrZXMgaXQgYSAnY29uc3QgR1VJRConIHdoaWNoIG1lYW5zIERpcmVjdFNvdW5kQ3JlYXRlIG11c3Qgbm90CgljaGFuZ2UgaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCByZWR1bmRhbnQgZGVmaW5pdGlvbnMgb2YgSXNFcXVhbElJRCBhbmQgSXNFcXVhbENMU0lEIChzZWUKCWluY2x1ZGUvd2luZS9vYmpfYmFzZS5oKQoKVGh1IEZlYiAxOCAxNzozNDoxMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvcXVldWUuaDoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBOZXcgaW1wbGVtZW50YXRpb24gb2YgU2VuZE1lc3NhZ2UsIFJlY2VpdmVNZXNzYWdlLCBSZXBseU1lc3NhZ2UgZnVuY3Rpb25zCgkgIHRvIHN1cHBvcnQgdGhyZWFkLXNhZmVuZXNzLCBhbmQgbmVzdGVkIFNlbmRNZXNzYWdlLgoJLSBBZGRpdGlvbiBvZiBSZXBseU1lc3NhZ2UzMi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENvcGUgd2l0aCBOVUxMIHBEcml2ZXJEYXRhIGluIFgxMURSVl9XTkRfR2V0WFdpbmRvdy4KCgkqIG1pc2MvY29tbWRsZy5jLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFwcGxpZWQgdGhlIGNoYW5nZXMgb2YgdGhlIHJlc3VsdGluZyBjb2xvciBvZiB0aGUgY2hvb3NlIGNvbG9yIGRpYWxvZy4KCUluaXRpYWxpemUgdmFsdWVzIGluIHRoZSBjaG9vc2UgY29sb3IgZGlhbG9nLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gSUNPTV9JTkhFUklUUy4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBidWcgd2l0aCByZWFkLW9ubHkgZmlsZXMuCgoJKiBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzdXBlcmZsb3VzIFdJTkFQSSAobWlzbWF0Y2ggd2l0aCBwcm90b3R5cGUpIGluICpfRHJpdmVyUHJvYzMyLgoKCSogaW5jbHVkZS9kb3NleGUuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cglkb3NleGUuaCBkZXBlbmRzIG9uIHdpbmJhc2UuaCAoZm9yIExQU1RBUlRVUElORk8zMkEpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIG9sZS9iaW5kY3R4LmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vZGlmaWVkIHNvIHRoYXQgdGhleSBkbyBub3QgdXNlIHRoZSBWVEFCTEVfRlVOQyBtYWNyb3MgdGhhdCBwZXJmb3JtZWQKCWNhc3RzIG9mIGFsbCBtZXRob2RzIHB1dCBpbiB0aGUganVtcCB0YWJsZS4gSSBmaW5kIGl0IHRvbyByaXNreSB0byB1c2UKCXN1Y2ggbWFjcm9zIGJlY2F1c2Ugbm90aGluZyBndWFyYW50ZWVzIHRoYXQgeW91IGFjdHVhbGx5IHB1dCB0aGUgcmlnaHQKCW1ldGhvZCBhdCB0aGUgcmlnaHQgcGxhY2Ugb3IgdGhhdCB0aGUgcHJvdG90eXBlIGlzIHJpZ2h0LgoKCSogaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvc3RvcmFnZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRvIHVzZSB0aGUgbGF0ZXN0IENPTSBtYWNyb3MuIERlZmluZWQgbW9yZSBpbnRlcmZhY2VzIGFuZCBBUEkKCWZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIHB1c2hlZCBjbG9zZSBidXR0b24uCgpXZWQgRmViIDE3IDE3OjQ1OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL2NvbXBvYmouYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW92ZWQgc29tZSBkZWZpbml0aW9ucyB0byB0aGVpciBwcm9wZXIgaW5jbHVkZSBmaWxlLgoKCSogaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIHNvbWUgSUNPTV9JTkhFUklUIHN0dWZmIGFuZCBhZGRlZCBuZXcgcmVsYXRlZCBBUEkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgbmV3IEFQSS4gUGFydCBvZiBpdCB3YXMgaW4gJ2luY2x1ZGUvb2JqYmFzZS5oJyBiZWZvcmUgYW5kIHBhcnQKCW9mIGl0IGlzIG5ldy4gTm93IGl0IGFsc28gY29udGFpbnMgJ1dJTkVfU3RyaW5nRnJvbUNMU0lEJy4gSXQncyBub3QKCXBlcmZlY3QgYnV0IGl0J3MgYmV0dGVyIHRoYW4gaGF2aW5nIGl0IGluICdpbmNsdWRlL29iamJhc2UuaCcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvbnRkbGwvbnQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIG51bWJlciBvZiB3YXJuaW5ncyBjb25jZXJuaW5nIHRoZSBtYXRjaGluZyBvZiB0aGUgcHJpbnRmCglmb3JtYXQgc3RyaW5nIGFuZCB0aGUgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzIChhY3R1YWxseSBpdCdzIG1vc3RseQoJVFJBQ0UgYW5kIEZJWE1FcykuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbW1pby5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW1pb0Rlc2NlbmQ6IGZpeGVkIEZJTkRfeHh4eCwgdmVyaWZpZWQgd2l0aCBtY2lhdmkzMi5kbGwuCgltY2lMb2FkQ29tbWFuZFJlc291cmNlMzI6IHNlY29uZCBhcmcgaXMgd2lkZSBzdHJpbmcKCW1jaUdldERyaXZlckRhdGE6IHNwZWMgaGFzIGp1c3Qgb25lIGxvbmcgYXJndW1lbnQKCgkqIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL2lmcy5oLCBvbGUvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNoYW5nZWQgSUNPTV9USElTIGRlZmluaXRpb24uCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBpbmNsdWRlL3Zlci5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlbmFtZWQgVlNfVkVSU0lPTl9JTkZPeHggc3RydWN0dXJlIHRvIFZTX1ZFUlNJT05fSU5GT19TVFJVQ1R4eC4KCVRoZSBWU19WRVJTSU9OX0lORk8gaXMgYSBzaW1wbGUgZGVmaW5lIGFuZCB3b3VsZCBjYXVzZSBjb25mdXNpb24uCglBbHNvIGNvcnJlY3RlZCB0aGUgVlNfeHhfSU5GTyBkZWZpbmVzIG5vdCB0byB1c2UgTUFLRUlOVFJFU09VUkNFMTYgZm9yIHdpbjMyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IFN0ZWZmZW4gTW9lbGxlciA8bW9lbGxlckBlYmkuYWMudWs+CgkiQ29uZmlndXJlIGZpbmlzaGVkIiBtZXNzYWdlIHN1Z2dlc3RzIHRvIGNhbGwgbWFrZSB3aGVuIG1ha2UgZGVwZW5kCgl3YXMgc3VjY2Vzc2Z1bC4KCgkqICovKjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPcHRpbWl6ZWQgaW5jbHVkZS8qLmg6IChyZWN1cnNpdmVseSkgaW5jbHVkZSBhbGwgaGVhZGVycyBuZWVkZWQgYnkKCXRoaXMgLmggZmlsZSwgYnV0IG9ubHkgdGhvc2UuIE5lY2Vzc2FyeSBmaXhlcyB0byBhIGxvdCBvZiAuYyBmaWxlcywKCXN0YXJ0ZWQgb3B0aW1pemluZyAid2luZG93cy5oIiBhd2F5IGZyb20gc29tZSBvZiB0aGVtLiBNb3ZlZAoJR2V0Q3VycmVudFRhc2sgcHJvdG90eXBlIHRvIHdpbmUvd2luYmFzZTE2LmguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVByZWxpbWluYXJ5IGxpc3R2aWV3IGNvbnRyb2wgaW1wbGVtZW50YXRpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUdpdmUgdGhlIGNvbnRleHQgbWVudSBpdHMgcHJvcGVyIGJlaGF2aW91ciBhbmQgbW9kaWZ5IFRyYWNrUG9wdXBNZW51Cgl0byBjb21wbHkgd2l0aCB3aW5kb3dzIEFQSS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglHZXRVcGRhdGVSZWN0IHNob3VsZCByZXR1cm4gY2xpZW50IGNvb3JkaW5hdGVzIHVubGVzcyB0aGUgd2luZG93IHdhcwoJY3JlYXRlZCB3aXRoIHRoZSBDU19PV05EQyBzdHlsZSBhbmQgdGhlIG1hcHBpbmcgbW9kZSBpcyBub3QgTU1fVEVYVCwKCWluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBzaG91bGQgYmUgaW4gbG9naWNhbCBjb29yZGluYXRlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHRoZSBhY3R1YWwgZGVmaW5pdGlvbnMgb2YgdGhlIGludGVyZmFjZXMuCgoJKiBpbmNsdWRlL3NlcnZwcm92Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ29udmVydGVkIHRvIHRoZSBuZXcgQ09NIGRlY2xhcmF0aW9uICdzdGFuZGFyZCcgZm9yIGJldHRlcgoJY29tcGF0aWJpbGl0eSB3aXRoIEMgY29kZSBpbXBsZW1lbnRhdGluZyB0aGF0IGludGVyZmFjZS4KCgkqIG1pc2Mvd3NwcmludGYuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBXUFJJTlRGX0V4dHJhY3RWQVB0ciB0byB0YWtlIHRoZSBhZGRyZXNzIG9mIHRoZSB2YV9saXN0IHRvIGJlCglhYmxlIHRvIG1vZGlmeSBpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRGVmaW5lZCBJRHJvcFRhcmdldCBmb3IgU2hlbGxGb2xkZXIuICBJbXBsZW1lbnRlZCB0aGUgQ29uc3RydWN0b3IsCglEZXN0cnVjdG9yLCBBZGRSZWYsIFJlbGVhc2UgYW5kIFF1ZXJ5SW50ZXJmYWNlIG1ldGhvZHMuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hhbmdlIHR5cGUgb2YgbW9kZSBhcmd1bWVudCB0byBHRVRWRE1QT0lOVEVSMzJXIGZyb20gRFdPUkQgdG8gV29yZAoKTW9uIEZlYiAxNSAxNToyNDoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJYzJtYW4gZG9lc24ndCBsaWtlIGV4dHJhIHNlbWljb2xvbnMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlc2V0dGluZyBYIGZvY3VzIHNob3VsZCBub3QgYmUgZG9uZSB3aXRoIFNldEZvY3VzMzIuIENhbGxlZAoJdGhlIHdpbmRvd2luZyAoWDExKSBkcml2ZXIncyBTZXRGb2N1cyByb3V0aW5lIGRpcmVjdGx5IGluc3RlYWQuCglUaGlzIGFwcGFyZW50bHkgZml4ZXMgYSBiaWcgaGVhcCBvZiB1c2VyIGludGVyZmFjZSBwcm9ibGVtcy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEZlYiAxNCAxNDowOTo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS93aW51c2VyLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHNvbWUgZnVuY3Rpb25zIHByb3RvdHlwZXMgKHdlcmUgcmV0dXJuaW5nIHZvaWQpLgoKCSogbWlzYy9tYWluLmMsIGluY2x1ZGUvd2ludXNlci5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUZpeGVkIHNvbWUgV2luZWxpYiBuYW1lcy4KCgkqIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgcHJvdG90eXBlcyBmdW5jKCkgLT5mdW5jKHZvaWQpLgoKCSogbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWlkaS5jLCBkZWJ1Z2dlci9tZW1vcnkuYzoKCUJyaWFuIEpvc2VwaCBDemFwaWdhIDxyb290QGdsYWNpZC5jb20+CglGaXhlZCBhIGZldyAjaWZkZWZzLgoKCSogd2luZG93cy9zY3JvbGwuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglKZXJvbWUgVm91aWxsb24gPHZvdWlsbG9uQGNsYXJhbmV0LmZyPgoJTWFrZSBhIGNvcnJlY3QgdXNlIG9mIGNsaXBwaW5nIHJlY3RhbmdsZXMuCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2NyX2Nyb3NzOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgd2hpdGUgYm9yZGVyLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgYmV0dGVyIG91dHB1dCBmb3IgaW5kaXJlY3QgY2FsbHMuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiB3aW5tbS5zcGVjLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dyY19yc2MuaCwgbWlzYy9sc3RyLmMsIG1pc2Mvd3NwcmludGYuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0BDT1JFTC5DQT4KCUEgZmV3IG5vbi14ODYgV2luZWxpYiBmaXhlcy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBwcmludCAnd2luZTogbm8gZXhlY3V0ZWFibGUgZm91bmQnIGlmIHdlIGRpZCBleGVjdXRlIHNvbWV0aGluZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvKjoKCU1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KCS0gQWRkZWQgbmV3IElEU19OT1RTQVZFRCByZXNzb3VyY2UgKG5lZWRzIHRyYW5zbGF0aW9uIGluICoucmMpCgktIEltcHJvdmVkIHByaW50aW5nIHN1cHBvcnQgKG5vdCB5ZXQgY29tcGxldGUpCgktIEltcHJvdmVkIGZpbGUgZHJhZyBhbmQgZHJvcCAoc2hvdWxkIG5vdyB3b3JrKQoJLSBHZW5lcmFsIGNvZGUgY2xlYW51cAoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIG9uIE1DSSBub3RpZmljYXRpb24gKGNhbGxiYWNrIGluZm8gYXJlIGNvcGllZCBiZWZvcmUKCWFzeW5jaHJvbm91cyByZXR1cm4pIC0gbWFrZSB1c2Ugb2YgaXQgaW4gTUNJIHdhdmUgYW5kIG1pZGkuCglJbXBsZW1lbnRlZCBtY2koU2V0fEdldClEZXZpY2VJRCgxNnwzMikgZnVuY3Rpb25zLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2luY2UgU2V0UGFyZW50IG5vdyBoaWRlcy9zaG93cywgZXhwbGljaXRseSBpbnZhbGlkYXRpbmcgRENzIGluIHRoZQoJcGFyZW50IGNoYW5nZSBvcGVyYXRpb24gc2hvdWxkIG5vIGxvbmdlciBiZSBuZWNlc3NhcnkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBHZXJhcmQgUGF0ZWwgPEcuUGF0ZWxAV2FuYWRvby5mcj4KCUZpeCBpZiBFbmREaWFsb2cgY2FsbGVkIGluIFdNX0lOSVRESUFMT0cgKERJQUxPR19Eb0RpYWxvZ0JveCkuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3ZlZCBWR0EgcG9ydCBhY2Nlc3MgY2hlY2sgYXQgdGhlIGJlZ2lubmluZyBpbiBvcmRlciB0byBpbXByb3ZlCglwZXJmb3JtYW5jZSBhIGxpdHRsZSBiaXQuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGZsYWcgRklMRV9GTEFHX0RFTEVURV9PTl9DTE9TRS4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgY29tbWVudHMuIFRoaW5rIEkndmUgZml4ZWQgSU5UIDEwLzA4IChHZXQgQ2hhcmFjdGVyIGFuZAoJQXR0cmlidXRlIGF0IEN1cnNvcikuCgoJKiBjb25zb2xlL3h0ZXJtLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIFh0ZXJtUHJvZ3JhbSBhbmQgWHRlcm1SZXNvbHV0aW9uLgoJRml4ZWQgYSB3YXJuaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlLCB3aW5lLmluaToKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTmV3IGV4YW1wbGVzL2RvY3VtZW50YXRpb24gZm9yIGNvbnNvbGUgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCSogbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9tYWluLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1vdmVkIGluaXRpYWxpemF0aW9uIHVudGlsIGxhdGVyLiBBbHNvIG1vdmVkIGFyb3VuZCBjb2RlIGEgYml0IHRvIGJlCgljb25zaXN0YW50LgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGxvYWQgLnN0YWJzLy5zdGFic3RyIHNlY3Rpb25zIGZyb20gUEUgZGxscy4KCVVuZm9ydHVuYXRlbHkgbXkgc2FtcGxlcyB1c2UgY3VycmVudGx5IHR5cGVkZWZzIHdoaWNoIHdpbmUtZGJnIGRvZXMKCW5vdCB1bmRlcnN0YW5kLCBzbyBubyBhY3R1YWwgcGFyc2luZy4KCgkqIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtMzIvZm9ybWF0LmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgaW5jbHVkZS9tbXJlZy5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9tc2FjbWRydi5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDaGFuZ2UgYSBjb3VwbGUgb2YgbmFtZXMgdGhhdCB3b3VsZCBjb25mbGljdCBhZnRlciBhbGwgMzJbQVddIHN1ZmZpeGVzCglhcmUgcmVtb3ZlZC4gU3RydWN0dXJlcyBkZWZpbmVkIGluIGJvdGggbW1yZWcuaCBhbmQgbW1zeXN0ZW0uaCBhcmUKCXByb3RlY3RlZCB3aXRoICNpZmRlZjpzIGFzIGluIE1TJyBoZWFkZXJzLgoKCSogbWlzYy9pbW0uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB3cm9uZyB0eXBlY2FzdHMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglDb21waWxhdGlvbiBmaXguCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggZm9yIFgxMSBpbmNsdWRlcyBkZXRlY3Rpb24uCgoJKiBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwb3NzaWJpbGl0eSB0byBsb2FkIC5zdGFicy8uc3RhYnN0ciBzZWN0aW9ucyBmcm9tIFBFIGRsbHMuCglVbmZvcnR1bmF0ZWx5IG15IHNhbXBsZXMgdXNlIGN1cnJlbnRseSB0eXBlZGVmcyB3aGljaCB3aW5lLWRiZyBkb2VzCglub3QgdW5kZXJzdGFuZCwgc28gbm8gYWN0dWFsIHBhcnNpbmcuCgoJKiBtdWx0aW1lZGlhL2RwbGF5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZDNkLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgZGRyYXcvZDNkIGJ1Z2ZpeGVzLCB1cGRhdGVkIERpYWJsby9XQzQgZGRyYXcgc3RhdHVzLgoKCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbm5scy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBDb252ZXJ0RGVmYXVsdExvY2FsZTMyLgoKCSogd2luZG93cy9tZGkuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglXSU4zMSBMb29rIHN0aWxsIG5lZWRzIGEgY2xvc2UgYnV0dG9uIG9uIHRoZSBsZWZ0IG9mIHRoZSBtZW51IGJhci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgU2V0V2luZG93UG9zMzIgdG8gZm9yY2UgdGhlIHVwZGF0ZSBvZiB0aGUgbm9uLWNsaWVudCBhcmVhLgoKU2F0IEZlYiAxMyAxNzo1NjoyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luc29jay5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeGVkIGEgY291cGxlIG9mIGZhdWx0eSBuYW1lcyB1c2VkIGluIHdpbmUgYW5kIHR5cG9zIHNvIHRoYXQgaXQgd2lsbAoJY29tcGlsZSBhZ2FpbiBhZnRlciBjb252ZXJzaW9uIGZyb20gMzJbQVddIG5hbWluZyB0byBbQVddIG5hbWluZy4KCgkqIGlmMTYzMi9BdHRpYy9zaWduYWwuYywgaWYxNjMyL01ha2VmaWxlLmluLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL3NpZ25hbC5jLCBtaXNjZW11L2luc3RyLmMsIG1pc2NlbXUvbWFpbi5jLCBncmFwaGljcy9kZHJhdy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlZCB0aGUgaWYxNjMyL3NpZ25hbC5jIHN0dWZmIGludG8gbG9hZGVyL3NpZ25hbC5jLCBhZGFwdGVkIGZ1bmN0aW9uCglwb2ludGVycyBmb3Igd2luZV9kZWJ1ZyBhbmQgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBbGwgZ3VpZCAnUkVGeHh4JyB0eXBlcyBhbHJlYWR5IGhhdmUgYSAnY29uc3QnIGluc2lkZSB0aGVtLgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIG1pc2MvdmVyc2lvbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHdhcm5pbmdzIGZpeGVkLCBvbmUgdXNlbGVzcyBWRVJTSU9OIHdhcm5pbmcgcmVtb3ZlZCAod2luZWxpYikuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZWdGbHVzaEtleTogd3JvbmcgZXJyb3IgY29kZS4KCgkqIHdpbjMyL2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkcyBhIHdhcm5pbmcgbWVzc2FnZSBpZiBwZXJtaXNzaW9ucyBub3Qgc3VmZmljaWVudC4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBNQ0kgQVZJIGRyaXZlcgoJQWRkZWQgc29tZSBmaXhlcyBtaXhlciBmdW5jdGlvbnMKCUZpeGVkIE1DSSBzdHJpbmcgY29tcGFyaXNvbiAodGhhbmtzIHRvIExpb25lbCBVTE1FUikKCU5vIGxvbmdlciB1c2luZyAxNiBiaXQgVVNFUiBmdW5jdGlvbnMgKHVzZSB0aGVpciAzMiBiaXQgY291bnRlciBwYXJ0KQoJUmVpbmRlbnRpbmcuCglBZGRlZCBmdW5jdGlvbiBzbmRQbGF5U291bmQzMlcKCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdGhlIGFjdHVhbCBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgdG8gdGhlIG9ial9tYXJzaGFsLmggc2tlbGV0b24KCWZpbGUuIEFsc28gZGVmaW5lZCB0aGUgYXNzb2NpYXRlZCBDIEFQSS4KCgkqIHdpbmRvd3MvcXVldWUuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglVc2UgZ2xvYmFsIHN5bmNocm9uaXphdGlvbiBvYmplY3RzLCB0byBiZSBhYmxlIHRvIHVzZSBpdCBpbiBkaWZmZXJlbnQKCXByb2Nlc3NlcyAobm90IG9ubHkgdGhlIHByb2Nlc3Mgd2hpY2ggY3JlYXRlIHRoZSBzeW5jaHJvIG9iamVjdCkuCgoJKiB3aW5kb3dzL21kaS5jOiBOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglTZXQgaHduZEFjdGl2ZUNoaWxkIHdoZW4gbWF4aW1pemluZyBhIG1kaSBjaGlsZCB3aW5kb3cgYmVjYXVzZSBpdCBpcwoJbm90IHNldCB3aGVuIG1heGltaXppbmcgYSB3aW5kb3cgb3RoZXIgdGhhbiB0aGUgYWN0aXZlIGNoaWxkLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlIHRoZSBHZXRNZW51SXRlbVJlY3QgdG8gY29tcGx5IHdpdGggd2luZG93cyBBUEkuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNyZWF0ZWQgaW5jbHVkZS9NYWtlZmlsZS5pbiB0byBzZXBhcmF0ZSBoZWFkZXIgZmlsZSBpbnN0YWxsYXRpb24gZnJvbQoJdGhlIHRvcC1sZXZlbCBNYWtlZmlsZS4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CgktIEZpeGVkIGEgc21hbGwgYmxvY2sgZGVwb3QgYnVnLgoJLSBJbXBsZW1lbnRlZCBjb252ZXJ0aW5nIGZyb20gc21hbGwgYmxvY2tzIHRvIGJpZyBibG9ja3MuCgktIFZhbGlkYXRlZCBmaWxlIGF0dHJpYnV0ZXMgYW5kIGZsYWdzLgoJLSBGaXhlZCBhIGJ1ZyBmb3IgbGFyZ2VyIGZpbGVzLgoKCSogcmVzb3VyY2VzLy5jdnNpZ25vcmU6IGFkZGVkIHN5c3Jlc19ObAoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPTEUgRHJhZyBhbmQgRHJvcCB0YXJnZXQgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbSBhbmQKCXRoZSBEb0RyYWdEcm9wIGxvb3AgdG8gcGVyZm9ybSB0aGUgRG5EIG9wZXJhdGlvbi4KCgkqIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51Lmg6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgV0lOMzEgTG9vayBtZGkgYnV0dG9ucyBhbmQgYWxzbyBzb21lIGRlZmluZXMgZm9yIHRoZQoJbWFnaWMgbWVudSBpdGVtcy4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgaW5jbHVkZS93aW5jcnlwdC5oLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBlbnRyaWVzIGZvciBtb3N0IENyeXB0KiBjYWxscy4KCUFkZGVkIHN0dWIgZm9yIENyeXB0QWNxdWlyZUNvbnRleHRBLiAgVGhpcyBhbGxvd3MgV2luOTggRVhQTE9SRVIuRVhFCgl0byBnZXQgZmFydGhlci4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFuIGFwcCBsZWZ0IGp1bmsgaW4gdGhlIHVuZG8gYnVmZmVyIG9mIGFuIGVkaXQgY29udHJvbCB1cG9uIGNyZWF0aW9uLgoKCSogd2luZG93cy93aW4uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2VkIFNldFBhcmVudDMyIHRvIGFkaGVyZSB0byBXaW5kb3dzIGJlaGF2aW91ciAobW9zdGx5KSwKCXdoaWNoIHNob3VsZCBhbHNvIGtlZXAgaXQgZnJvbSBsZWF2aW5nIGdhcmJhZ2UgYXJvdW5kLgoKCSogb2xlL2NvbXBvYmouYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgYSBzaW1wbGUgbGlua2VkIGxpc3QgKHN0YXRpYykgdGhhdCBzdG9yZXMgYW5kIGNvdW50cwoJcmVmZXJlbmNlcyB0byBDT00gb2JqZWN0cy4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNYWtlIHRoZSBSRUZ4eHggdHlwZXMgY29uc3QgZXZlbiBpbiBDLiBBbHNvIGFkZCBGTVRJRC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgY2FsbCBFVkVOVF9EdW1teU1vdGlvbk5vdGlmeSBmb3IgaGlkZGVuIHdpbmRvd3MuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXggc29tZSB0aHJlYWQtc2FmZW5lc3MgcHJvYmxlbSB3aGVuIGFjY2Vzc2luZyB0aGUgc3lzdGVtIG1lc3NhZ2UKCXF1ZXVlLgoKCSogd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgTWFwVmlydHVhbEtleUV4ICh0aWNrZXQgMjEpLgoJSWdub3JlIGtleWJvYXJkIGxheW91dCBmb3Igbm93LgoKCSogaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdGhlIGFjdHVhbCBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgdG8gdGhlIG9ial9jbGllbnRzZXJ2ZXIuaAoJc2tlbGV0b24gZmlsZS4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGRvY3VtZW50ZWQgbW9zdCBvZiB0aGUgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBpbiBudC5jCgktIGltcGxlbWVudGVkIFJ0bEdldERhY2xTZWN1cml0eURlc2NyaXB0b3IKCS0gc3R1YnMgZm9yIE50RW51bWVyYXRlS2V5LCBOdE9wZW5TeW1ib2xpY0xpbmtPYmplY3QsIE50UXVlcnlLZXkKCS0gc3R1YnMgZm9yIE50UmFpc2VFeGNlcHRpb24sIFJ0bFJhaXNlRXhjZXB0aW9uICh0aGlzIGJvdGggd2lsbCBjcmFzaCkKCkZyaSBGZWIgMTIgMTc6NDc6MDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGZpbGVzL2RyaXZlLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcyB0byBjb21waWxlIHdpdGggdGhlIGhlYWRlcnMgKG1vc3RseSBudC1zZWN1cml0eSkuCgoJKiBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWRlIG50LXJlbGF0ZWQgdHlwZXMgY29tcGF0aWJsZSwgdGhyb3cgb3V0IHdpbmUtc3BlY2lmaWMgdHlwZXMuCgoJKiB3aW5kb3dzL21vdXNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIE1PTklUT1JfLi4uIGluc3RlYWQgb2YgREVTS1RPUF8uLi4gcm91dGluZXMgdG8gZ2V0IHNjcmVlbgoJZGltZW5zaW9uczsgdGhlc2Ugd29yayBhbHNvIHdpdGggbmF0aXZlIFVTRVIuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdNX0FDVElWQVRFIGRlZmF1bHQgcHJvY2Vzc2luZyBzaG91bGQgc2V0IHdpbmRvdyBmb2N1cy4KCVNob3VsZCBmaXggZm9jdXMgcHJvYmxlbXMgaW4gbm9uLW1hbmFnZWQgbW9kZS4KClRodSBGZWIgMTEgMTY6MzI6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9ubHMvbmxkLm5scywgcmVzb3VyY2VzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvVE9ETywgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX05sLnJjLCBBVVRIT1JTLCBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIER1dGNoIGxhbmd1YWdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvc2hsb2JqLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHpibGF4ZWxsQGNvcmVsLmNhPgoJTW92ZSBwcm9wZXJ0eSBzaGVldHMgZnJvbSBjb21tY3RybC5oIGludG8gaW50byBwcnNodC5oLgoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgJ29iamJhc2UuaCcgdG8gcHJldmVudCBjb21waWxlciB3YXJuaW5ncy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmV0dGVyIGRldGVjdGlvbiBvZiBYU2htIGVycm9ycyAoc2hvdWxkIG5vdyBydW4gb24gcmVtb3RlIGRpc3BsYXlzKS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVzIG1peGVyR2V0SUQxNi8zMiBwcm9ibGVtcy9lcnJvcnMuCgoJKiBvbGUvb2xlb2JqLmMsIG11bHRpbWVkaWEvZHBsYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJc0VxdWFsR1VJRCBpcyBkZWZpbmVkIGluICdpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCcuIEFsbCBvdGhlcgoJZGVjbGFyYXRpb25zIG11c3Qgc3VycmVuZGVyIG9yIHByZXBhcmUgdG8gYmUgbWV0IHdpdGggZGVhZGx5IGZvcmNlIDotKQoKCSogcmVsYXkzMi9vbGUzMi5zcGVjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIG5ldyBmdW5jdGlvbnMgKGZyb20gV2luOTgpCglBZGRlZCBjb21tZW50cyB3aXRoIHRoZSBwYXJhbWV0ZXIgdHlwZXMgZm9yIGZ1dHVyZSB1c2Ugd2l0aCBkbGxnbHVlCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTZXQgdGhlIGZsYWdzIGZvciBHZXRWb2x1bWVJbmZvcm1hdGlvbjMyQS4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRmluZFdpbmRvdyBmYWlsZWQgZm9yIDMyIGJpdCB3aW5kb3dzIHdpdGggc3R5bGUgIT0gV1NfQ0hJTEQuCgpXZWQgRmViIDEwIDA2OjUyOjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL0F0dGljL3ByaW50LmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9wcmludGRydi5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcGQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBbGJlcnQgRGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglNb3ZlcyBmaWxlcyBmcm9tIHByaW50LmggdG8gd2luc3Bvb2wuaCBmb3IgYmV0dGVyIFNESyBoZWFkZXIgY29tcGxpYW5jZQoJZm9yIFdpbmVsaWIgcHJvZ3JhbXMuCgoJKiBpbmNsdWRlL2hvb2suaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUFsYmVydCBEZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YXRodXJzdG9AY29yZWwuY2E+CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8enlnb2JAY29yZWwuY2E+CglNaXNjZWxsYW5lb3VzIHBhdGNoZXMgdG8gaGVhZGVyIGZpbGVzLiAgQWxsIG9mIHRoZXNlIGFyZSBzdXBwb3NlZGx5IHRoZXJlCgl0byBoZWxwIGJ1aWxkIFdpbmVsaWIgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBBbGJlcnQgRGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGF0aHVyc3RvQGNvcmVsLmNhPgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHp5Z29iQGNvcmVsLmNhPgoJTW9yZSB0eXBlcyB3ZSBuZWVkIGZvciBjb21waWxpbmcgV2luZWxpYi9NRkMgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCU1vcmUgdHlwZXMgZm9yIGNvbW1vbiBjb250cm9scy4gIE5lZWRlZCBmb3IgV2luZWxpYi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUJldHRlciBzZXQgb2YgbWFjcm9zIGZvciBkZWZpbmluZyB0aGUgQ09NIGludGVyZmFjZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVR3byBBRFZBUEkzMiBzdHViczogSW1wZXJzb25hdGVTZWxmMzIgYW5kIEFjY2Vzc0NoZWNrMzIuIFNwZWxsaW5nIGZpeGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglGaXhlZCBkZWJ1ZyBvdXRwdXQgdG8gZm9sbG93ICctZGVidWdtc2cnIGZsYWdzLgoKVHVlIEZlYiAgOSAxNTo0OTozOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MjAuYywgb2xlL3NhZmVhcnJheS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci90aHJlYWQuYywgd2luZG93cy93aW5oZWxwLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlcyB0byBhdm9pZCB3YXJuaW5ncy9lcnJvcnMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2x6ZXhwYW5kLmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS92Z2EuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL3NoZWxsMTYuaCwgaW5jbHVkZS93aW5lL3czMnNrcm5sLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmVzb3VuZC5oLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dpbnZlci5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCU1vdmVkIGV2ZXJ5dGhpbmcgb3V0IG9mIHdpbmRvd3MuaC4KCgkqIGdyYXBoaWNzL3dpbmcuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9wYWxldHRlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUJyYWQgUGVwZXJzIDxicmFkQGxpbnV4Y2FuYWRhLmNvbT4KCVdpbkcgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLUZpeGVkIE1FU1NBR0UgZnVuY3Rpb25zIHRoYXQgd2VyZSB0aHVua2luZyBkb3duIHRvIDE2IGJpdHMgaW1wbGVtZW50YXRpb24uCglTbyBQZWVrTWVzc2FnZTMyLCBHZXRNZXNzYWdlMzIsIFBvc3RNZXNzYWdlMzIsIFBvc3RUaHJlYWRNZXNzYWdlIGFyZSBmaXhlZAoJd2l0aCB0aGlzIHBhdGNoLiBVbmljb2RlIHZlcnNpb24gb2YgdGhvc2UgZnVuY3Rpb25zIGlzIGN1cnJlbnRseSBvbmx5CgljYWxsaW5nIHRoZSBBU0NJSSB2ZXJzaW9uLgoJLUZpeGVkIHF1ZXVlIHNpZ25hbGluZyB1c2luZyBhIG5ldyBFVkVOVCBvYmplY3QgaW4gdGhlIHF1ZXVlIGZvciAzMiBiaXRzCgl0aHJlYWQuIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdCBoYXMgYmVlbiBmaXhlZCBhbmQgaXMgbm93IGJsb2NraW5nIG9uIHRoZQoJcmlnaHQgRVZFTlQuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0TWV0YUZpbGVCaXRzRXggc2hvdWxkIHdvcmsgaW4gYnl0ZXMgbm90IHdvcmRzLgoKCSogaW5jbHVkZS9zaGxvYmouaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglEbGxHZXRDbGFzc09iamVjdCBzaG91bGQgdGFrZSBhIFJFRkNMU0lEIG5vdCBhbiBMUENMU0lELgoKCSogb2JqZWN0cy9kaWIuYywgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlIGZhdWx0IGhhbmRsZXIgJ2FkZHInIGFyZ3VtZW50IHRvIExQQ1ZPSUQuCgoJKiBmaWxlcy9maWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBWSVJUVUFMX0hhbmRsZUZhdWx0IGlmIHJlYWQvd3JpdGUgcmV0dXJucyBFRkFVTFQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4IHR5cG8gdG8gbWFwIEdldFRleHRFeHRlbnRQb2ludCB0byB0aGUgY29ycmVjdCAzMkEgdmVyc2lvbi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBpbmNsdWRlL3BlZXhlLmgsIGluY2x1ZGUvd2luY29uLmgsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHNtYWxsIGJ1Z2ZpeGVzLCBhZGRlZCBtb3JlIFBFIHJlbG9jYXRpb24gdHlwZXMgKGZvciBXaW5DRSBtb3N0bHkpLAoJc29tZSBjb25zb2xlIHByb3RvdHlwZXMsIC1kbGwgaXMgdXNlZnVsIGZvciB3aW5lbGliIHRvbywgcmVndGVzdAoJY29tcGlsZSBmaXhlZC4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglHZXRDdXJzb3JQb3MgaXMgYWN0dWFsbHkgYSBCT09MLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCU1vcmUgdHlwZXMsIEMrKyBwcm90ZWN0aW9uLCBhbmQgYSB0eXBvIGNvcnJlY3Rpb24gZm9yIG1tc3lzdGVtLmguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJTW92ZSB0aGUgI2RlZmluZSBvZiBEVU1NWVVOSU9OTkFNRSogdG8gYmVmb3JlIHRoZXkgYXJlIHVzZWQuCglBZGQgYSBkZWZpbml0aW9uIGZvciBEVU1NWVVOSU9OTkFNRSAoYXMgb3Bwb3NlZCB0byBEVU4xLCBEVU4yLi4uKS4KCVVzZSB0aGUgY29ycmVjdCBXSU5FTElCX05BTUVfQVcgbWFjcm8gZm9yIFRWSVRFTSBhbmQgcmVsYXRlZCBuYW1lcy4KCURlZmluZSAiVFZfSVRFTSIgdG8gYWdyZWUgd2l0aCB5b3Uta25vdy13aG8ncyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTlVMTCBpcyBhIHZhbGlkIGFyZ3VtZW50IGFzIGhhbmRsZSBmb3IgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZTMyQS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGJ1ZmZlcmVkIGRldmljZSBhY2Nlc3MgZm9yIERJbnB1dCdzIG1vdXNlIGRyaXZlci4KCgkqIGZpbGVzL2ZpbGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglXcm9uZyBhY2Nlc3Mgb24gc2VydmVyIGhhbmRsZSB3YXMgZGVtYW5kZWQgKEdFTkVSSUNfUkVBRCBpbnN0ZWFkIG9mCglHRU5FUklDX1dSSVRFKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gKHRha2VzIHN0cmluZ3Mgb3IgcmVzLWlkJ3Mgbm93KS4KCgkqIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IE5VTEwgcG9pbnRlciBjaGVjayBmb3Igb3V0cHV0IHBhcmFtZXRlcnMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUZpeGVkIHR3byBwb2ludGVyL2ludGVnZXIgbWlzbWF0Y2ggd2FybmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGU6IFp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBjb25zb2xlL3h0ZXJtLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJd2luZV9vcGVucHR5IGlzIG5vdCBwcm9wZXJseSBkZWNsYXJlZCAoZWl0aGVyIG1pc3Npbmcgb3IgbWlzbWF0Y2hlZAoJZGVjbGFyYXRpb25zKSBpbiBib3RoIHBsYWNlcyB3aGVyZSBpdCBpcyB1c2VkLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kaWIuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJRml4IHR5cGVzIG9mIEdldERJQml0cyBmdW5jdGlvbnMgKExQU1RSIHNob3VsZCBiZSBMUFZPSUQpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBzZXZlcmFsIHByb2JsZW1zIHdpdGggU2V0RElCaXRzVG9EZXZpY2UgaWYgeFNyYyAhPSAwLgoJVGhhbmtzIHRvIElhbiBTY2htaWR0IGZvciB0aGUgbG9ncy4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVRoZSBzeXN0ZW1zIGJ1dHRvbnMgKG1pbmltaXplL3Jlc3RvcmUvY2xvc2UpIG5vdyBhcHBlYXIgb24gdGhlIG1lbnUKCWJhciBvZiBtZGkgYXBwbGljYXRpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBtYWdpYyBtZW51IGl0ZW1zIGlkJ3MgdXNlZCBieSB3aW5kb3dzIHdoZW4gaW5zZXJ0aW5nCgl0aGUgbWluaW1pemUvbWF4aW1pemUvY2xvc2UgYnV0dG9ucyBpbiB0aGUgbWVudSBiYXIgb2YgYW4gYXBwbGljYXRpb24uCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IEphc29uIE1jTXVsbGFuIDxqbWNjQG9udHYuY29tPgoJQWRkcyBzdXBwb3J0IGZvciBFTVJfU1RSRVRDSERJQklUUyBpbiBFTUZzLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGltYWdlIHNpemUgYW5kIGxpbmUgc2l6ZSwgYWRkZWQgOGJpdCBjb2xvci9wYWxldHRlIGhhbmRsaW5nLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJRml4ZWQgZm9ybWF0dGluZyBvZiBjb2RlCglOb3cgY2hhbmdlcyB0byBkaXJlY3Rvcnkgb2YgcHJvZ3JhbSB0byBiZSBydW4gYmVmb3JlIHN0YXJ0aW5nIHdpbmUKCgkqIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvdXNlci5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gQ2xlYW5lZCB1cCB0aGUgbWVzc2FnZSBxdWV1ZSB3aGVuIGEgdGhyZWFkIGV4aXQgKGJ1dCBub3QgdGhlIHByb2Nlc3MpLgoJLSBNb2RpZmllZCBRVUVVRV9EZWxldGVNc2dRdWV1ZSB0byBleGl0IGdyYWNlZnVsbHkgKHdpdGhvdXQgY3Jhc2hpbmcgV2luZSkgaWYKCSAgcXVldWUgbGluayBsaXN0IGlzIGNvcnJ1cHRlZC4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU291bmRzIHdlcmUgY3V0IG9mZiBkdWUgdG8gaW50ZWdlciBvdmVyZmxvdy4gRml4ZWQuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkZWQgd2luZG93c3guaCBmb3IgV2luZWxpYi4KCkZyaSBGZWIgIDUgMTc6NDA6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6Cgk8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglBZGRlZCBjb21tb24gZGlhbG9ncyB0ZXN0IHByb2dyYW0uCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBtYW5hZ2VtZW50IGFuZCBhbGxvY2F0aW9uIG9mIHRoZSBQRVJRVUVVRURBVEEgc3RydWN0dXJlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBhIGR1bXAgb2YgdGhlIHBhbGV0dGUgY3JlYXRpb24gZmxhZ3MKCS0gY2hhbmdlZCBwYWxldHRlIGNyZWF0aW9uIGNvZGUgaW4gdmdhLmMgdG8gcHJldmVudCB1c2VsZXNzIGVycm9yCgkgIG1lc3NhZ2UKCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGZpbGVzL2RyaXZlLmMsIHdpbmUuaW5pOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIHZmYXQvd2luOTUgYXMgZGVmYXVsdC4KCgkqIGluY2x1ZGUvdmZ3LmgsIG11bHRpbWVkaWEvbXN2aWRlby5jLCBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIG1zdmlkZW8gLyB2ZncuaCwgdXNlIGJ1aWx0aW4gbXN2ZnczMi5kbGwgYnkgZGVmYXVsdCwgYWRkZWQKCWF2aWluZm8gYW5kIGF2aXBsYXkgcHJvZ3JhbXMuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29udGludWVkIGhhY2sgdG8gd2luMzIvY29uc29sZS5jLCBzbyB0aGF0IHRoZSBJREEgUHJvIERpc2Fzc2VtYmxlcgoJd29ya3MgYWdhaW4uIE5lZWRzIG11Y2ggbW9yZSB3b3JrIGhvd2V2ZXIuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5jbHVkZSBvYmpiYXNlLmggZm9yIENvVGFza01lbSogcHJvdG90eXBlcyAob3Igd2UgZ2V0IFdJTkFQSQoJcHJvYmxlbXMpLgoKCSogb2xlL3N0b3JhZ2UzMi5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgVUxPTkcgdG8gc3RhdGljIGNvbnN0IE9GRlNFVF94eC4KClRodSBGZWIgIDQgMTY6NDU6NDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVZhcmlvdXMgbWFucGFnZSB1cGRhdGVzLCBpbmNsdWRpbmcgdGhlIGluY29ycmVjdCBzdGF0ZW1lbnQgYWJvdXQgZ2xpYmMKCWFuZCBjbG9uZSgpLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmc6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUZpeCBwb2ludGVyIHRvIHRoZSBXaW5kb3dzIERpc2Fzc2VtYmxlciAzMi4gIFRoYW5rcyB0byBIZXJiZXJ0CglSb3NtYW5pdGggPGhlcnBAd2lsZHNhdS5pZHYudW5pLWxpbnouYWMuYXQ+IGZvciBzdWdnZXN0aW5nIHRoaXMuCgoJKiBkbGxzL21zYWNtMzIvZHJpdmVyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbm90aGVyIHVzYWdlIG9mIG5vbi1wb3J0YWJsZSBmdW5jdGlvbnMuLi4KCgkqIG1zZG9zL2Rvc21lbS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSB2YWx1ZXMgb2YgcEJpb3NEYXRhIGFkZGVkL2ZpeGVkLgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkZWJ1Z2dlci9kYmcueSwgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3Mvd2luZy5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIG1vcmUgY29kZSB0byB0aGUgWDExIGRyaXZlci4KCgkqIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVFRZIGRyaXZlciBjaGFuZ2VzLgoKCSogd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9kZXNrdG9wLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVgxMSBkcml2ZXIgY2hhbmdlcy4KCgkqIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmMsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cG0uaCwgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTm9uLVgxMSBjb21waWxlIGZpeCBmb3IgZ2VuZXJhdGVkIGNvZGUuCgoJKiBpbmNsdWRlL21vbml0b3IuaCwgd2luZG93cy9tdWx0aW1vbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IG1vbml0b3IgYWJzdHJhY3Rpb24uCgoJKiBncmFwaGljcy90dHlkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3MvdHR5ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBNYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTmV3IFRUWSBkcml2ZXIgZm9yIEdESS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgdGhlIGdyYXBoaWNzL3R0eWRydiBkaXJlY3RvcnkuCgktIERvbid0IHNlYXJjaCBmb3IgcmVlbnRyYW50IFggd2hlbiBYIGRvZXNuJ3QgZXhpc3QuCgktIEFkZGVkIGNvbmZpZyBvcHRpb25zIEhBVkVfTElCWFhQTQoJLSBBZGRlZCBjaGVja3MgaWYgdGhlIGhlYWRlciBmaWxlcyBhbHNvIGV4aXN0IGZvciBzb21lIGxpYnJhcmllcwoKVHVlIEZlYiAgMiAxNjoxNDoyMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIG9sZS9zYWZlYXJyYXkuYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZXBsYWNlZCByZWZlcmVuY2VzIHRvIGludGVyZmFjZXMuaCBieSB3aW5lL29ial94eHguaCBoZWFkZXJzIGluc3RlYWQKCXNpbmNlIHRoZXNlIGhlYWRlcnMgYWxyZWFkeSBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL21zZG9zLmgsIG1zZG9zL0F0dGljL2Nkcm9tLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gb2Jzb2xldGUgbXNkb3MvY2Ryb20uYyBmaWxlLgoJTWFrZSB1c2Ugb2YgbmV3IFdpbmUgaW50ZXJuYWwgQ0QgUk9NIGludGVyZmFjZS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHJhY2tzIGluZGV4aW5nIGluIG1jaWNkYS5jCglNYWtlIHVzZSBvZiBuZXcgV2luZSBpbnRlcm5hbCBDRCBST00gaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9jZHJvbS5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2Nkcm9tLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5ldyBXaW5lIGludGVybmFsIGludGVyZmFjZSBmb3IgaGFuZGxpbmcgQ0QgUm9tIChlc3BlY2lhbGx5IGF1ZGlvIENECglST00pLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJQ2hhbmdlIGEgZmV3IHR5cGVzIHRvIG1hdGNoIHlvdS1rbm93LXdobydzIGRlY2xhcmF0aW9ucy4KCUhUUkVFSVRFTSBpcyBhIHN0cnVjdCBfVFJFRUlURU0gRkFSKgoJR2V0RElCaXRzIHBhc3NlcyBhIExQVk9JRCBmb3IgdGhlIGJpdG1hcCBkYXRhLCBub3QgTFBTVFIuCglBZGp1c3RtZW50IG9mIFdpbmUgQyBjb2RlIHRvIG1hdGNoIHRoZSBuZXcgdHlwZXMgaW5jbHVkZWQuCgoJKiBtaXNjL2x6ZXhwYW5kLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIEdFVF9MWl9TVEFURSBtYWNyby4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdHVicyBmb3IgbmV3IERpcmVjdERyYXc0IGFuZCBEaXJlY3REcmF3U3VyZmFjZTQgbWV0aG9kcy4KCgkqIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJRml4ZWQgd3Jvbmcgb3JkZXIgb2YgcmVzX2ljbyBhbmQgcmVzX2JtcCB3aGljaCBtdXN0IGJlIGluIFJUX3h4eCBvcmRlci4KCgkqIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXJlc2xlbiBjb3VsZCBiZSB1c2VkIHVuaW5pdGlhbGlzZWQgaW4gR2V0RmlsZVJlc291cmNlMzIgKGZpeGVzIHNvbWUKCXN0cmFuZ2UgVmVyUXVlcnlWYWx1ZSBjcmFzaGVzKS4KCgkqIG9sZS9ubHMvc3ZlLm5sczogSmFuIEQuIDxKYW4uRGphcnZAbWJveDIwMC5zd2lwbmV0LnNlPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgTE9DQUxFX1NHUk9VUElORywgTE9DQUxFX1NNT05HUk9VUElORyBhbmQKCUxPQ0FMRV9JSU5UTENVUlJESUdJVFMuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFByZXNlcnZlIEVBWCBpbiBVbk1hcFNMRml4QXJyYXkoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZXMgbGl0dGxlIHBvaW50ZXIgYnVnIGluIERQQV9EZWxldGVQdHIoKS4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWVtb3J5L3N0cmluZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNDM0IChVbmljb2RlVG9BbnNpKS4KCgkqIGZpbGVzL2RyaXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR2V0RGlza0ZyZWVTcGFjZUV4MzJBIGNhbiBnZXQgbnVsbCBwb2ludGVycyBhbmQgc3RpbGwgbm90IGNyYXNoLgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUNsZWFyIHVwIGFyZ3MgdG8gUFNEUlZfQWR2YW5jZWRTZXR1cERpYWxvZy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZWR1Y2UgTUFYX0ZPTlRfU0laRSB0byAxMDAwLgoKU3VuIEphbiAzMSAxOTowNDozMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBpbnB1dCBxdWV1ZSB0byBzZXJ2ZXItc2lkZSBjb25zb2xlIG9iamVjdCwKCXJlYWQvd3JpdGVfY29uc29sZV9pbnB1dCByZXF1ZXN0cywgYW5kIHVzZSB0aGVtIGZvcgoJUmVhZC9Xcml0ZUNvbnNvbGVJbnB1dC4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJRml4IHRvIGFsbG93IGZvciByZWN2bXNnKCkgcmV0dXJuaW5nIGxlc3MgZGF0YSB0aGFuIGlzIG5lZWRlZC4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglBdHRlbXB0IGF0IGZpeGluZyB0aGUgTUFYX1BBVEggbXVsdGlwbGUgZGVmaW5pdGlvbiBwcm9ibGVtLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuIDMxIDEwOjEzOjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZ5IE5FX0ZpbmRUeXBlU2VjdGlvbiBhbmQgTkVfRmluZFJlc291cmNlRnJvbVR5cGUgc28gYXMgdG8gYmUKCXVzYWJsZSBieSB0aGUgVkVSU0lPTiBjb2RlLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgR2V0UmVzRGlyRW50cnlBIGZvciB1c2UgYnkgdGhlIFZFUlNJT04gY29kZS4KCgkqIG1pc2MvQXR0aWMvdmVyLmMsIG1pc2MvTWFrZWZpbGUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgb2xkIFZFUi5ETEwgY29kZS4KCgkqIGRsbHMvdmVyc2lvbi8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBWRVJTSU9OLkRMTC4gQmFzZWQgb24gb2xkIG1pc2MvdmVyLmMuCgktIEFjY2Vzc2luZyBQRSB2ZXJzaW9uIGluZm8gcmVzb3VyY2VzIHNob3VsZCB3b3JrIGNvcnJlY3RseSBub3cuCgktIEZpeGVkIG1lbW9yeSBsZWFrcy4KCS0gQ2xlYW4gc2VwYXJhdGlvbiBvZiAxNi0gYW5kIDMyLWJpdCBwYXJ0cy4KCS0gTWlub3IgYnVnZml4ZXMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZCBuZXcgc3ViZGlyZWN0b3JpZXMgZGxscy92ZXIgYW5kIGRsbHMvdmVyc2lvbi4KCgkqIGlmMTYzMi92ZXIuc3BlYywgZGxscy92ZXIvLmN2c2lnbm9yZSwgZGxscy92ZXIvTWFrZWZpbGUuaW4sIGRsbHMvdmVyL3ZlcjE2LmMsIGluY2x1ZGUvdmVyLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFZFUi5ETEwuIFRodW5rcyB1cCB0byBWRVJTSU9OLkRMTC4KCgkqIG1pc2MvbHN0ci5jOiBQYXNjYWwgQ3VvcSA8Y3VvcUB2aXNhbi5pbnJpYS5mcj4KCUlzQ2hhckFscGhhMzJBOiB1c2UgbG9vay11cCB0YWJsZSBmcm9tIG9sZTJubHMuYy4KCgkqIG9sZS9vbGUybmxzLmM6IFBhc2NhbCBDdW9xIDxjdW9xQHZpc2FuLmlucmlhLmZyPgoJTENNYXBTdHJpbmczMkE6IEltcGxlbWVudGVkIGZsYWdzIE5PUk1fSUdOT1JFTk9OU1BBQ0UgYW5kCglOT1JNX0lHTk9SRVNZTUJPTFMgaW4gc3RyaW5nIG1hcHBpbmcgbW9kZS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUNyZWF0ZSBYIHdpbmRvdyBmb3IgY2hpbGQgd2luZG93cyByZXBhcmVudGVkIHRvIGJlIHRvcCBsZXZlbCB3aW5kb3dzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBQYXRoUXVhbGlmeTMyW0F8V10uCgoJKiBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCYWJyaWFuIFZpa3RvciA8dkB1bHlzc2VzLnNjaC5ibWUuaHU+CgktIGFkZGVkIHN1cHBvcnQgZm9yIENvbG9yS2V5aW5nIGR1cmluZyBibGl0cwoJLSBtaXNjZWxsYW5lb3VzIGZpeGVzCgoJKiBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL250ZGxsLmgsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBnYWxheHkuYW1zLnN1bnlzYi5lZHU+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNUlNXIGxvY2tzLgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGVzICh0aGUgUFNQIGhhbmRsaW5nIHdhcyBpbmNvcnJlY3QsIGFzIHRoZQoJTVpfU1VQUE9SVEVEIGRlZmluaXRpb24gd2FzIG1pc3NpbmcpLiBBZGRlZCBhIHNpbXBsZSBoYW5kbGVyIGZvcgoJZGlyZWN0IGNvbnNvbGUgaW5wdXQsIHdoaWNoIG5lZWRzIHRvIGJlIGltcHJvdmVkLgoKCSogY29uc29sZS90dHkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTbWFsbCBmaXguCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxpc3QgaGFuZGxlcyBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGlzIHdhaXRpbmcgZm9yIHdoZW4gcnVubmluZyB3aXRoCgktZGVidWdtc2cgK3dpbjMyLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldFNlY3VyaXR5RGVzY3JpcHRvckNvbnRyb2wuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgR2V0VXNlck9iamVjdFNlY3VyaXR5LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGhhbmRsaW5nIG9mIFJFR19NVUxUSV9TWiBhbmQgZml4ZWQgc21hbGwgYnVnIGluCglSZWdTZXRWYWx1ZS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUV2ZXJ5IEVNX0dFVExJTkUgc2VuZCBiZXR3ZWVuIGEgMzJXIHRvIGEgMzJBIHdpbmRvdyByZXR1cm5lZAoJaW5jb21wbGV0ZSB2YWx1ZXMgYmVmb3JlICh0aGUgZmlyc3QgMiBjaGFycyB3aGVyZSBjdXQgYXdheSkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCB0eXBvIGluIFNldFdpbmRvd1BvczMyLgoKU2F0IEphbiAzMCAxNTo1NToyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9idWlsdGluMzIuaCwgbWlzYy9tYWluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuYWJsZS9kaXNhYmxlIHJlbGF5MzIgZGVidWdnaW5nIG9uIHRoZSBmbHkuIFN0YXJ0IGFwcCB3aXRoCgktZGVidWdtc2cgK3JlbGF5IG9yIHdhcm4rcmVsYXkuIFN1Z2dlc3RlZCBieSBKdWVyZ2VuIFNjaG1pZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBNZXNhJ3MgaGVhZGVyIGZpbGVzLgoKCSogbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgZXJyb3IgbWVzc2FnZXMuCgoJKiBtaXNjL2NvbW1kbGcuYzogQmVybmQgSGVyZCA8aGVyZEBoZXJkc29mdC5jb20+CglVc2UgcHJvcGVyIDE2LT4zMiBtZXNzYWdlIGNvbnZlcnNpb24gaW4gRklMRURMR19DYWxsV2luZG93UHJvYy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBCZXJuZCBIZXJkIDxoZXJkQGhlcmRzb2Z0LmNvbT4KCVNldFBhcmVudCBzaG91bGQgbGluayB0aGUgd2luZG93IGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW4gV2luZG93IFNldFdpbmRvd1BvcyB3aXRoIFNXUF9ISURFV0lORE9XIGRvZXMgbm90IHJlbW92ZQoJdGhlIGZvY3VzIGZyb20gdGhlIGZvY3VzIHdpbmRvdzsgU2hvd1dpbmRvdyB3aXRoIFNXX0hJREUgZG9lcy4KCVNvIG1vdmUgdGhlIGNvZGUgdGhhdCBkb2VzIHRoaXMgZnJvbSBTZXRXaW5kb3dQb3MgdG8gU2hvd1dpbmRvdy4KCgkqIG1lbW9yeS9zdHJpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBpbiBsc3RyY3B5KiAoV2luZG93cyB1c2VzIHJlYWwgZXhjZXB0aW9uIGhhbmRsZXJzKS4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anVyYW5AY3NlLnBzdS5lZHU+CglEb24ndCBpbnN0YWxsIGluY2x1ZGUgZmlsZXMgd2hlbiAtLWRpc2FibGUtbGliIGlzIHVzZWQuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBXSU5NTSBqb3kqIC5zcGVjIGVudHJpZXMuCgoJKiBtc2Rvcy94bXMuYzogQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWE1TIGZpeC4KCgkqIG1zZG9zL2Rvc21lbS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3BlbGxpbmcgZml4LgoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb2MgdXBkYXRlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgaW50ZXJydXB0IGVuaGFuY2VtZW50cy4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWltcGxlbWVudGVkIHRpbWVyIGxhdGNoaW5nCgl0cmFjZSBtZXNzYWdlIGZpeAoJdGVtcG9yYXJ5ICJmaXgiIGZvciBMaW51eCdzIGNvYXJzZSB0aW1lciByZXNvbHV0aW9uCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgc3RhcnR1cC1zaHV0ZG93biBtZWNoYW5pc20gZm9yIHRoZSBDT00gc3Vic3lzdGVtLgoJSW1wbGVtZW50ZWQgdGhlIENsYXNzIG9iamVjdCByZWdpc3RyYXRpb24gbWVjaGFuaXNtLgoKCSogcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlOiBBZGRlZCBGaS5zCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaCwgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIE9MRSBzdHJ1Y3R1cmVkIHN0b3JhZ2UuIFRoZSBtYWluCglmZWF0dXJlcyBvZiB0aGlzIGltcGxlbWVudGF0aW9uIGFyZToKCS0gQ2FuIG9wZW4gc3RvcmFnZXMgY3JlYXRlZCBpbiBXaW5kb3dzLgoJLSBDYW4gY3JlYXRlIG5ldyBzdG9yYWdlcyB0aGF0IHRoZSB3aW5kb3dzIGxpYnJhcmllcyBjYW4KCSAgcmVhZC4KCS0gUHJvdmlkZXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNyZWF0ZS9vcGVuL3JlbW92ZSBhbmQKCSAgcmVuYW1lIHN0cmVhbXMgYW5kIHN0b3JhZ2VzIGluc2lkZSB0aGUgbWFpbiBzdG9yYWdlIG9iamVjdC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtaXNjZW11L21haW4uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmaW5lZCBSRVNUT1JFX1NJR05BTFMgYnkgZGVmYXVsdCBhbmQgY2FsbCBTSUdOQUxfRW11bGF0b3JJbml0Cgl0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciBpbnN0ZWFkLiBBZGRlZCBhIGZldyB0cmFjZXMuIEZpeGVkIHRoZQoJIk1lbW9yeSBjb3JydXB0aW9uICEiIG1lc3NhZ2UgaW4gREdBIG1vZGUuIENvbW1lbnRlZCBvdXQgYW4KCXVubmVjZXNzYXJ5IFRTWEY4NlZpZE1vZGVTZXRWaWV3UG9ydCB0aGF0IGNhdXNlZCBteSBYIHNlcnZlciB0bwoJYWN0IHVwLCByZWx5aW5nIG9uIFRTWEY4NkRHQVNldFZpZXdQb3J0IGluc3RlYWQuCgoJKiBncmFwaGljcy9wc2Rydi90ZXh0LmMsIG1zZG9zL2ludDJmLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGZpbGVzL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBtb3JlIHdhcm5pbmdzIGFuZCBidWdzIGZpeGVkLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCVNtYWxsIHVwZGF0ZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIFRoZSB1c3VhbCBidWdmaXhlcy4KCS0gQmV0dGVyIHVuaWNvZGUgc3VwcG9ydCAob25seSBkZWZpbmVzLCBjdXJyZW50bHkpCgktIERyYWcgJiBkcm9wIGltcGxlbWVudGVkLgoJLSBMUFNUUl9URVhUQ0FMTEJBQ0sgc2hvdWxkIHdvcmsgbm93LgoJLSBGaXJzdCBzdGFydCBhdCBjdXN0b20gZHJhdyBjb2RlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoYXQgdGhlIGtleXN0YXRlIHJlY2VpdmVkIGJ5IHRoZSBXTV9YQlVUVE9OVVAgYW5kCglXTV9YQlVUVE9ORE9XTiBtYXRjaGVzIHRoZSBtZXNzYWdlLiBJbiBYLCB0aGUga2V5c3RhdGUgaXMgY2hhbmdlZAoJYWZ0ZXIgdGhlIG1lc3NhZ2UgaXMgcHJvY2Vzc2VkLiAgSW4gV2luZG93cywgaXQgaXMgY2hhbmdlZCBiZWZvcmUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvYyB1cGRhdGVzLgoKCSogd2luMzIvZmlsZS5jOiBCZXJlbmQgUmVpdHNtYSA8YmVyZW5kIGF0IGFzc2V0LWNvbnRyb2wuY29tPgoJU2V0RmlsZUF0dHJpYnV0ZXMzMkEgY2hhbmdlZCB0byBtYWtlIGZpbGUgd3JpdGVhYmxlIHdoZW4KCUZJTEVfQVRUUklCVVRFX1JFQURPTkxZIGlzIG5vdCBzZXQuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9jb25zb2xlLmgsIG1zZG9zL2ludDEwLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVByZWxpbWluYXJ5IGNvbG9yIGNvbnNvbGUgc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL0ZpLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHJlc291cmNlcy9zeXNyZXNfRmkucmM6CglKdWtrYS1QZWtrYSBJaXZvbmVuIDxqaWl2b25lbkBwb3NlaWRvbi5jcy5odXQuZmk+CglVcGRhdGVkIEZpbm5pc2ggbGFuZ3VhZ2Ugc3VwcG9ydC4KCkZyaSBKYW4gMjkgMTU6MTI6MTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtdWx0aW1lZGlhL21zdmlkZW8uYywgb2xlL2d1aWQuYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIG1zdmlkZW8uIE5ldyBwcm9ncmFtICdpY2luZm8gWy1hYm91dF0gWy1jb25maWd1cmVdJyB0bwoJcXVlcnkgaW5zdGFsbGVkICh3aW4zMikgY29tcHJlc3NvcnMuIFN0YXJ0ZWQgb24gQVZJRklMRSBzdXBwb3J0LgoKVGh1IEphbiAyOCAxNzo1NjoxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvYmluZGN0eC5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgRmlsZU1vbmlrZXIsIEl0ZW1Nb25pa2VyIGFuZCBCaW5kQ3R4CgljbGFzc2VzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmw6CglORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUltcGxlbWVudGVkIHRoZSBzeW1ib2xmaWxlIGNvbW1hbmQgKGFzIG1lbnRpb25lZCBieSB0aGUgaGVscAoJY29tbWFuZCkuIFRoaXMgcmVhZHMgYSBzeW1ib2wgZmlsZSBpbiB0aGUgZm9ybWF0IGdlbmVyYXRlZCBieSBubS4KCgkqIG11bHRpbWVkaWEvZHBsYXkuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gU21hbGwgYnVnIGZpeC4KCS0gQWRkZWQgZGlyZWN0IHBsYXkgYXNjaWkgaW50ZXJmYWNlcy4KCS0gRml4ZWQgdXAgdGhlIFF1ZXJ5SW50ZXJmYWNlIGZvciBkcGxheSBhbmQgZHBsYXlsb2JieSB0byBoYW5kbGUgYWxsIGNhc2VzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBGSUxFX1ZJRVcgc3RydWN0IGluaXRpYWxpc2F0aW9uLgoKCSogaW5jbHVkZS9kb3NleGUuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIG5vbi1pMzg2IGNvbXBpbGUuCgoJKiBncmFwaGljcy92Z2EuYywgbXNkb3MvZHBtaS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvbW1pby5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ29tbWVudGVkIG91dCB1bnVzZWQgdmFyaWFibGVzIHRvIHByZXZlbnQgbmVlZGxlc3MgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2RkZW1sLmgsIG1pc2MvZGRlbWwuYzoKCUtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+Cgkxc3QgY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZUluaXRpYWxpemUzMlcgYW5kIHN1cHBvcnRpbmcgY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIHN0YW5kYXJkaXphdGlvbnMuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIE1hZGUgdGhlIG1lc3NhZ2UgcXVldWUgYWNjZXNzIHRvIGJlIHRocmVhZCBzYWZlLiAoVXNpbmcgdHdvIG5ldwoJICBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZSBtZXNzYWdlIHF1ZXVlLCBRVUVVRV9Mb2NrKCksIFFVRVVFX1VubG9jaygpCgkgIGluc3RlYWQgb2YgR2xvYmFsTG9jazE2KCkpLgoJLSBGaXhlZCBRVUVVRV9EdW1wUXVldWUgKHVzZWQgYnkgImluZm8gcXVldWUgPGhhbmRsZT4iIHdpdGggdGhlCgkgIHdpbmUtZGVidWdnZXIpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL3dpbmNvbi5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9pbW0uYywgbWlzYy9semV4cGFuZC5jLCBtc2Rvcy9pbnQyMS5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL250ZGxsL3J0bC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhIGxvdCBvZiB3YXJuaW5ncyBmb3IgcG9zc2libGUgcHJvYmxlbXMuCgoJKiBtaXNjL2NvbW0uYzogSGVyYmVydCBSb3NtYW5pdGggPGhlcnBAd2lsZHNhdS5pZHYudW5pLWxpbnouYWMuYXQ+CglGaXhlZCB0eXBvLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJRml4ZWQgdmFyaW91cyBidWdzLgoJTWFkZSBuZXdiaWUgbW9kZSBlYXNpZXIuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgR2V0SWNvbkluZm8xNiAoLnNwZWMsSUNPTklORk8gc3RydWN0IGlzIGRpZmZlcmVudCBmb3IgV2luMTYvV2luMzIpLgoKCSogY29uc29sZS9uY3Vyc2VzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3dpdGNoIG5jdXJzZXMuaC9jdXJzZXMuaCBpbmNsdWRlICh3b3JrcyBiZXR0ZXIgZm9yIEZyZWVCU0QpLgoKCSogd2luZG93cy9kcml2ZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBsb2FkaW5nIG9mIHdpbjMyIGRyaXZlcnMuCgpUdWUgSmFuIDI2IDE3OjI5OjQ5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9wcm9maWxlLmM6IERvbid0IGFib3J0IFBST0ZJTEVfR2V0U2VjdGlvbiBvbiBlbXB0eSBrZXlzLgoKCSogZGxscy9tc2FjbTMyL2ludGVybmFsLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGVtcG9yYXJ5ICNpZiAwJ2VkIHBhcnQgZm9yIGJ1aWx0aW4gbW9kdWxlcyBpbiBNU0FDTSB0byBtYWtlIGl0Cgljb21waWxlIHdpdGggdGhlIHBhdGNoIGZvciBsb2FkYWJsZSBkcml2ZXJzLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgcmVsYXkzMi93aW5tbS5zcGVjLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIGRyaXZlcnMgaW4gV2luZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUEgcGVybCBzY3JpcHQgdG8gcHJvZHVjZSBhIGJ1ZyByZXBvcnQgd2l0aCBsaXR0bGUgaGFzc2xlLgoKCSogZ3JhcGhpY3MvZGlzcGRpYi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIChkdW1teSkgRGVhdGgvUmVzdXJyZWN0aW9uIGNhbGxzIHRvIERpc3BsYXlEaWIuCgoJKiBtaXNjL2x6ZXhwYW5kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb2NhdGUgYSBET1MgaGFuZGxlIGlmIHdlIG9wZW4gYSBub3JtYWwgZmlsZSB3aXRoIExaT3BlbkZpbGUxNi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBkZXB0aCBjb252ZXJzaW9uIHJvdXRpbmVzIChvbmx5IDhicHAgLT4gMTYgYnBwIGZvciBub3cpCgktIGFkZGVkIHN1cHBvcnQgb2YgREVQVEhfRklMTCBmb3IgQmxpdHMKCS0gYWRkZWQgc29tZSBmbGFncyBpbiBHZXRDYXBzIHRvIGdldCBzb21lIGdhbWVzIHdvcmtpbmcKCgkqIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgR2V0SWNvbkluZm8xNiAtPiBjYWxsIHRvIEdldEljb25JbmZvMzIuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IENvbW1lbnRlZCBvdXQgRVhFQ19TRVJWRVIKCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkzIG1pc3NpbmcgV0lOQVBJIGFkZGVkLgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHNvbWUgdHJlZXZpZXcgcmVsYXRlZCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSEJyb3dzZUZvckZvbGRlcigpIGRpYWxvZy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gdHlwZSAocmVtb3ZlZCBxdWl0ZSBhIGZldyB3YXJuaW5ncykuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR2V0U2VjdXJpdHlEZXNjcmlwdG9yT3duZXIvR3JvdXAsIFJldmVydFRvU2VsZiBzdHVicy4KCVJldHVybiBOVUxMIGZyb20gT3BlblRocmVhZFRva2VuLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBlbmRsZXNzbHkgbG9vcCBpbiBDT05TT0xFX2dldF9pbnB1dCBhZnRlciBFT0YuCglDcmVhdGUgeHRlcm0gZXZlbiBpZiBzdGRpbiBpcyBub3QgYSB0ZXJtaW5hbGhhbmRsZS4KCVNldENvbnNvbGVDdXJzb3JQb3NpdGlvbjogT25seSBtYWtlIGNvbXBsZXggY29uc29sZSBvbiByb3cgY2hhbmdlLAoJaWdub3JlIGludGVybGluZSBwb3NpdGlvbmluZyAoc28gdGhlIGN5Z3dpbiBjbWRsaW5lIHRvb2xzIGRvIG5vdAoJY3JlYXRlIHh0ZXJtcyB1bm5lY2Vzc2FyeSkKCgkqIG1pc2MvcHJpbnRkcnYuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNYWtlIHN1cmUgRHJ2R2V0UHJpbnRlckRhdGEgcmV0dXJucyB0aGUgY29ycmVjdCBkYXRhIGlmIGNiRGF0YSA8PSAxCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gQ2hhbmdpbmcgTUVTU0FHRVFVRVVFIHN0cnVjdHVyZSBhY2NvcmRpbmcgdG8gVWxyaWNoIHByb3Bvc2l0aW9uLgoJLSBPbmUgbWVzc2FnZSBxdWV1ZSBmb3IgZXZlcnkgdGhyZWFkIG5lZWRpbmcgaXQuCgktIE1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHF1ZXVlIGFyZSBub3cgc3RvcmVkIGluIGEgbGlua2VkIGxpc3QKCS0gTWVzc2FnZXMgYXJlIGFsbG9jYXRlZCBpbiB0aGUgc3lzdGVtIGhlYXAuCgktIE1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHF1ZXVlIGFyZSAzMiBiaXRzIChNU0czMikuCgktIEFsbCByZWFkL3dyaXRlIG9wZXJhdGlvbnMgcmVnYXJkaW5nIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHF1ZXVlIGFyZQoJICB0aHJlYWQgc2FmZS4KClN1biBKYW4gMjQgMTk6MTQ6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBpbmNsdWRlL2ZsYXRzYi5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNldmVyYWwgYnVncyBhbmQgdHlwb3MuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZXMgYW5kIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgZHJhZyBsaXN0IGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHBvaW50ZXIgYnVncyBpbiBEUEFfSW5zZXJ0UHRyKCkgYW5kIERQQV9EZWxldGVQdHIoKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgaW5jbHVkZS9wcm9ncmVzcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFdNX1tHL1NdRVRGT05UIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgV01fQ09NTUFORCBhbmQgV01fTk9USUZZIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcmVkcmF3IGJ1ZyBmb3IgdHJhY2tpbmcgdG9vbHRpcHMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzb21lIG1lc3NhZ2VzIHRvIHRoZSByZWJhciBjb250cm9sLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJU2V2ZXJhbCBpbnRlcm5hbCBmdW5jdGlvbnMgd29uJ3QgY29tcGlsZSB3aGVuIHRoZSBjb25kaXRpb25hbAoJI2lmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykKCWNvbWVzIG91dCBmYWxzZS4gIEkgbW92ZWQgdGhlIGNvbmRpdGlvbmFscyBhcm91bmQgc28gdGhhdAoJdGhlIGZpbGUgd291bGQgYXQgbGVhc3QgY29tcGlsZS4gIE5vdCBzdXJlIGlmIGl0IGRvZXMgdGhlCglyaWdodCB0aGluZyBvbiBub24tbGludXgvRnJlZUJTRC9OZXRCU0Qgc3lzdGVtcy4KCgkqIG1pc2MvdG9vbGhlbHAuYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJTW92ZWQgcHJvY2Vzcy5oIGhpZ2hlciB1cCB0aGUgaW5jbHVkZSBsaXN0LCB0byBhdm9pZCBhIHByb2JsZW0gd2l0aAoJIkVSUiIgYmVpbmcgcmVkZWZpbmVkIGluIHN5cy9yZWdzZXQuaC4KCgkqIG1pc2MvY29tbS5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglUaGUgQjU3NjAwIGFuZCBCMTE1MjAwIHN5bWJvbHMgYXJlIG5vdCBkZWZpbmVkIGluIFVuaXh3YXJlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUNoYW5nZSBTV18/Pz8gb3B0aW9ucyBvbiBsaXN0IGJveCBzY3JvbGxpbmcgc28gdGhhdCB0aGV5IG1hdGNoIHdoYXQKCVdpbmRvd3MgZG9lcy4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBET1MgaGFuZGxlIGFsbG9jYXRpb24gc2xpZ2h0bHksIHRvIGZpeCBwb3RlbnRpYWwgbWVtb3J5CglsZWFrcyBhbmQgbG9zdCBoYW5kbGVzLiBBbHNvIHJlbW92ZWQgc29tZSB1c2VsZXNzIGluaXQgY29kZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmMsIGlmMTYzMi9kdW1teS5jLCBpZjE2MzIvZ2RpLnNwZWMsIG1pc2MvcHJpbnRkcnYuYzoKCU5pY2sgSG9sbG93YXkgPE5pY2suSG9sbG93YXlAYWxmaWUuZGVtb24uY28udWs+CglJbnRlcm5hbCBQb3N0U2NyaXB0IHByaW50ZXIgZHJpdmVyIGltcHJvdmVtZW50cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxHLlBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2VkIEVESVRfRU1fQ2hhckZyb21Qb3MgdG8gcmV0dXJuIGxpbmUgbnVtYmVyLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnJlZSB0aGUgcHJpdmF0ZSBkYXRhIHBvaW50ZXIsIFRIRU4gc2V0IGl0IHRvIE5VTEwuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3NhZmVhcnJheS5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2FmZUFycmF5IGZhbWlseSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgc3R1YiBmb3IgU2V0VGhyZWFkTG9jYWxlLgoKCSogb2JqZWN0cy90ZXh0LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaW5pc2hlZCBHZXRUZXh0Q2hhcnNldEluZm8gcm91dGluZS4KCgkqIG9sZS9ubHMvZW51Lm5scywgb2xlL29sZTJubHMuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCBGSVhNRSBpbiBFbnVtVGltZUZvcm1hdHMzMlcKCUFkZGVkIHN1cHBvcnQgZm9yIEZPTlRTSUdOQVRVUkUgaW4gR2V0TG9jYWxlSW5mbzMyQSBhbmQgdXBkYXRlZAoJR2V0TG9jYWxlSW5mbzMyVy4KCgkqIGRvY3VtZW50YXRpb24vaW50ZXJuYWwtZGxsLCBkb2N1bWVudGF0aW9uL3NoZWxsMzIsIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglQYXNjYWwgQ3VvcSA8UGFzY2FsLkN1b3FAaW5yaWEuZnI+CglGaXhlZCB0eXBvcy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIHNvdXJjZSBsaW5lIG1hdGNoaW5nIGZvciBmdW5jdGlvbnMgaW4gREVCVUdfUHJvY2Vzc0NvZmZEZWJ1ZzsKCXNlYXJjaGluZyBmb3IgREJHIGFuZCBQREIgZmlsZXMuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4IGZvciBmaWxlcyB3aGljaCBkbyBub3QgY29udGFpbiBleHBvcnRzIChmZywgRVhFKSB0byBnZXQgcHJvY2Vzc2VkCglmb3IgZGVidWcgaW5mb3JtYXRpb24uCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYywgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjYyMSAoQ0JDbGllbnRUaHVua1NMRXgpLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2luZm8uYywgaW5jbHVkZS9tYWluLmgsIG1pc2MvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvdyBzd2l0Y2hpbmcgb2ZmL29uIG9mIGRlYnVnbXNncyBpbiB0aGUgZGVidWdnZXIuCgoJKiBsb2FkZXIvbWFpbi5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQxNS5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEludCAweDE1LzB4YzA6IEJJT1MgLSBHRVQgQ09ORklHIGFuZCBzb21lIG90aGVyIEJJT1MKCWRhdGEuCgpTYXQgSmFuIDIzIDE0OjE1OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wYWludGluZy5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2xzdHIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgV0lOMTZfQ2FsbE1zZ0ZpbHRlcjMyLCBXSU4xNl9EaXNwYXRjaE1lc3NhZ2UzMiwKCURyYXdBbmltYXRlZFJlY3RzMTYgKHN0dWIpLCBGb3JtYXRNZXNzYWdlMTYsIFdJTjE2X0dldE1lc3NhZ2UzMiwKCVdJTjE2X1BlZWtNZXNzYWdlMzIgYW5kIFdJTjE2X1RyYW5zbGF0ZU1lc3NhZ2UzMi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZG93cy5oLCBtaXNjL3NoZWxsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gc29tZSBmaXhlcywgY2xlYW5lZCB1cCBpbmNsdWRlcywgZml4ZWQgbGVha3MKCS0gY2xlYW4gRGxsUmVmZXJlbmNlQ291bnQsIGJldHRlciBEbGxNYWluKCkKCS0gZHluYW1pY2FsbHkgbGlua2luZyBMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgzMiBhbmQKCSAgQ3JlYXRlSWNvbkZyb21SZXNvdXJjZUV4MzIgdG8gVVNFUjMyCgktIG1vdmVkIGd1aWQncyBpbnN0YW5jZXMgdG8gbmV3IGZpbGUgc2hlbGxndWlkLmMKCS0gaW1wbGVtZW50ZWQgIFNoZWxsRXhlY3V0ZUV4MzJXCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9jb21wb2JqLmMsIG9sZS9ndWlkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIHRoZSBpbnN0YW5jZSBjcmVhdGlvbiBvZiBHVUlEJ3MgdG8gYSBuZXcgZmlsZS4KCVNpemUgb2YgY29tcG9iai5vIGdvZXMgZG93biB0byAxLzM7IHNob3VsZCBwcmV2ZW50IG1vcmUgc2lnMTEncy4KCgkqIGluY2x1ZGUvaW5pdGd1aWQuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSB0byBpbnN0YW50aWF0ZSBHVUlEJ3MgbXMtbGlrZS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBwcml2YXRlIGRhdGEgc3RydWN0IHRvIE5VTEwgdG8gZXhwb3NlIHByb2JsZW1zIGluIG90aGVyIGNvZGUKCWJldHRlci4gRml4ZXMgdGhlIFhVbm1hcFdpbmRvdyBwcm9ibGVtcyByZXBvcnRlZCBieSByZXBsYWNpbmcgdGhlbQoJd2l0aCBOVUxMIHB0ciBkZXJlZmVyZW5jZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnLW1zZ3MsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBkb2N1bWVudGF0aW9uL2ludGVybmFsLWRsbCwgZG9jdW1lbnRhdGlvbi9pb3BvcnQtdHJhY2UtaGludHMsIGRvY3VtZW50YXRpb24vd2luZV9vczI6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUZpeGVkIHR5cG9zLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglET1MgcHJvZ3JhbXMgdXNlIGhhbmRsZXMgMC00IHdpdGhvdXQgb3BlbmluZy9jbG9zaW5nIGFueSBvZiB0aG9zZQoJaGFuZGxlcyBmaXJzdC4gU3BsaXQgdXAgSW5pdCBmcm9tIEFsbG9jRG9zSGFuZGxlIGFuZCBjYWxsIGl0IGZyb20KCXRoZSBET1NWTS4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBjb25maWd1cmUuaW4tPmNvbmZpZ3VyZSBydWxlICh3ZSBtaWdodCBub3QgaGF2ZSBhdXRvY29uZikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCAidXNlci1mcmllbmRseSIgd2FybmluZyBmb3IgbWlzc2luZyBYLgoKCSogaW5jbHVkZS9vbGUuaDogRml4ZWQgR2V0T2JqZWN0IG1hY3JvIHByb2JsZW0uCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3QzRDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSB1cGRhdGVkIGRvY3VtZW50YXRpb24gdG8gYmUgaW4gc3luYyB3aXRoIGN1cnJlbnQgY29kZQoKCSogZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSB2YXJpb3VzIHdhcm5pbmcgYW5kIGJ1ZyBmaXhlcwoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgbW9yZSB0ZXh0dXJlIGZvcm1hdHMgdXNpbmcgT3BlbkdMJ3MgcGFja2VkIHBpeGVsIGZvcm1hdHMKCgkqIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgaW5jbHVkZS9kM2QuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBiZXR0ZXIgc3VwcG9ydCBmb3IgRXhlY3V0ZUJ1ZmZlcnMKCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBjb3JyZWN0ZWQgYnVnIGluIFogQnVmZmVyIGFsbG9jYXRpb24KCS0gcHV0IFZJREVPTUVNT1JZIGZsYWcgZm9yIGFsbCBwcmltYXJ5IHN1cmZhY2VzCgktIHB1dCBzb21ldGhpbmcgaW4gYSBzdXJmYWNlIGFmdGVyIGEgUmVsZWFzZURDCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IE1vcnRlbiBXZWxpbmRlciA8dGVycmFAZGlrdS5kaz4KCU1pc3NpbmcgV0lOQVBJLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE5pY2xhcyBLYXJsc3NvbiA8bmthcmxzc29AcmEuYWJvLmZpPgoJUmVtb3ZlZCBEVF9TSU5HTEVMSU5FIGFuZCBEVF9OT0NMSVAgc3R5bGVzIGZvciBTU19MRUZUTk9XT1JEV1JBUC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBvcGVuZWQgZW5obWV0YWZpbGUgZm9yIG1hZ2ljIHZhbHVlcy4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6IFJvYiBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglGaXhlZCBkdXBsaWNhdGUgc291bmQgYnVmZmVyIGhhbmRsaW5nLiBVcGRhdGVkIHN0YXR1cy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb25zICBsbWVtY3B5bkF0b1cgYW5kICBsbWVtY3B5bld0b0EgZm9yIGNvbnZlcnRpbmcKCVJFR19NVUxUSV9TWiAoaW5jbHVkaW5nIFwweDAwKQoJQmV0dGVyIGRlYnVnIG91dHB1dCBmb3IgUkVHX0JJTkFSWSBhbmQgUkVHX01VTFRJX1NaCglSZXdyaXR0ZW4gUmVnUXVlcnlWYWx1ZUV4MzJbQXxXXQoKCSogb2JqZWN0cy9wYWxldHRlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgQ3JlYXRlSGFsZnRvbmVQYWxldHRlLgoJRml4ZWQgMyBjcmFzaGVzICgxIHJlYWwsIDIgcG90ZW50aWFsKS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgaWYxNjMyL3NoZWxsLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgbWlzYy9zaGVsbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBFeHRyYWN0SWNvbkV4MTYsIGFkZGVkIHNvbWUgY29uc3RzIHRvIEV4dHJhY3RJY29uRXgqLgoKCSogb2xlL29sZTIuYywgb2xlL29sZWNsaS5jLCByZWxheTMyL29sZTMyLnNwZWMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCURvRHJhZ0Ryb3AgYW5kIE9sZUlzQ3VycmVudENsaXBib2FyZCBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogb2xlL3R5cGVsaWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBMb2FkVHlwZUxpYiBzdHViIHJldHVybiBmYWlsdXJlIGluc3RlYWQgb2Ygc3VjY2Vzcy4KCkZyaSBKYW4gMjIgMTc6MDk6NDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vYWNjZWxlcmF0b3JzLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Jlc291cmNlLmMsIHdpbmRvd3MvaW5wdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYWNjZWxlcmF0b3IgaGFuZGxpbmcuIEFDQ0VMMTYgdXNlZCBpbnRlcm5hbCwgQUNDRUwzMiBmb3IgV2luMzIKCUFQSSwgUEVfQUNDRUwgZm9yIFBFIEFjY2VsZXJhdG9ycy4gU2VlIGRvY3VtZW50YXRpb24vYWNjZWxlcmF0b3JzLgoKVGh1IEphbiAyMSAxNDowNToxMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZGVtbC5oLCBtaXNjL2RkZW1sLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglUaGVyZSB3ZXJlIHR3byBjb3BpZXMgb2YgdGhlIERkZUNtcFN0cmluZ0hhbmRsZXMgKEEgYW5kIFcpIGFuZCB0aGF0CglBUEkgZG9lcyBub3QgaGF2ZSAyIHZlcnNpb25zLiBSZW1vdmVkIHRoZSBleHRyYSB2ZXJzaW9uLgoKV2VkIEphbiAyMCAxNDo1NDowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IFBhYmxvIFNhcmF0eGFnYSA8cGFibG8uc2FyYWNoYWdhQHBpbmcuYmU+CglTbWFsbCBwYXRjaC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaW4zMiBjb25zb2xlIG5lZWRzIFNZTkNIUk9OSVpFIGFjY2Vzcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb25zb2xlL25jdXJzZXMuYywgZGVidWdnZXIvc3RhYnMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIG1pc2MvcG9ydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglhdXRvY29uZjogYWRkZWQgY2hlY2tzIGZvciBsaWJpby5oLCBlbGYuaCwgY3Vyc2VzLmgsbmN1cnNlcy5oIGFuZAoJZml4ZWQgaW5jbHVkZXJzLgoKCSogb2xlL29sZTJubHMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMQ01hcFN0cmluZ0E6IGlmIGRzdGxlbiBpcyBpbnN1ZmZpY2llbnQsIHJldHVybgoJRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiAodmVyaWZpZWQpLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgc21hbGwgZml4ZXMgdG8gZW5obWV0YWZpbGVzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjYWxsIG93bmVyZHJhdyBmb3IgaW52YWxpZCBpdGVtcyAoZW1wdHkgZm9jdXNyZWN0cykuCglGaXhlcyBFdWRvcmEgMTZiaXQgZW1wdHkgSW5ib3ggcHJvYmxlbS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIE5DX0RyYXdNYXhCdXR0b245NSBhbmQgTkNfRHJhd01pbkJ1dHRvbjk1IGZ1bmN0aW9ucy4gUmV3cm90ZQoJdGhlc2UgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbG9naWMgYXMgdGhlIE5DX0RyYXdDbG9zZUJ1dHRvbiBmdW5jdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJUmVwYXJlbnRpbmcgYSB3aW5kb3cgd2l0aCBTZXRQYXJlbnQgaW4gV2luZG93cyBzaG91bGQgY2F1c2UgdGhlIGNoaWxkCgl3aW5kb3cgYmVpbmcgcmUtcGFyZW50ZWQgdG8gYmUgbW92ZWQgdXAgdG8gdGhlIHRvcG1vc3QgaW4gdGhlIHotb3JkZXIsCglhbmQgV01fV0lORE9XUE9TQ0hBTkdJTkcgYW5kIFdNX1dJTkRPV1BPU0NIQU5HRUQgbWVzc2FnZXMgdG8gYmUgc2VudC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglVc2UgZXh0ZXJuYWwgRGlyZWN0UGxheSBETExzIGJ5IGRlZmF1bHQuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHBhc3NpbmcgdGFzayBoYW5kbGVzIHRvIEdldFRocmVhZFF1ZXVlKCkgYW5kIFNldEZhc3RRdWV1ZSgpLgoKCSogd2luZG93cy91c2VyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIChjb25zb2xlKSBhcHBsaWNhdGlvbnMgdGhhdCBuZXZlciBjcmVhdGVkIGEgcXVldWUgY29ycmVjdGx5CglpbiBVU0VSX0FwcEV4aXQoKTsgY2FsbCBJbml0VGhyZWFkSW5wdXQoKSBpbiBJbml0QXBwKCkuCgoJKiB3aW5kb3dzL2hvb2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIEZpeGVkIGNyZWF0aW9uIG9mIG1lc3NhZ2UgcXVldWUgaW4gaG9vayBBUEkgcm91dGluZXMuCgktIFNvbWUgcHJlcGFyYXRpb25zIGZvciB0aHJlYWQtbG9jYWwgbWVzc2FnZSBxdWV1ZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoZWNrIG1vZHVsZSBuYW1lIGxlbmd0aCBpbiBNb2R1bGVOZXh0KCkuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgQ2FsbG91dCB0byBjYWxsIFJlZHJhd1dpbmRvdzMyLgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhciBET1MgZXh0ZW5kZWQgZXJyb3Igb25seSBmb3IgZnVuY3MgPj0weDJmICh0aGFua3MgdG8gRGF2ZQoJUGlja2xlcykuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVuaWZpZWQgcGFsZXR0ZSBjcmVhdGUsIGRvIGFsbG9jYXRlIGNvbG9yY2VsbHMgb24gaW5pdCBmb3IgREdBLgoKVHVlIEphbiAxOSAxNzo0ODoyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9wcm9jZXNzLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtZW1vcnkvdmlydHVhbC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZXZpY2UuaDoKCUhhY2tlZCBzZXJ2ZXItc2lkZSBkZXZpY2Ugc3VwcG9ydAoJQWRkZWQgdXNlciBBUENzIHN1cHBvcnQuCglNYW55IGNoYW5nZXMgdG8gdGhlIHh0ZXJtIGNvbnNvbGUgdG8gbWFrZSB1c2Ugb2YgdGhlIHNlcnZlciAobm90CglmaW5pc2hlZCB5ZXQpLgoJTW92ZWQgc29tZSBvdGhlciBzbWFsbCBzdHVmZiB0byB0aGUgc2VydmVyLgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogQWRkZWQgbG9uZyB0eXBlIGZvcm1hdC4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2RldmljZS5jOgoJQWRkZWQgc2VydmVyLXNpZGUgZGV2aWNlIHN1cHBvcnQgKG9ubHkgYSBoYWNrIGZvciBub3cpLgoKU3VuIEphbiAxNyAxNzo0ODo0OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nOgoJUmVjb3ZlcmVkIGxvZyBlbnRyaWVzIGZyb20gQ1ZTIG1haWxpbmcgbGlzdC4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgX2FsbG9jYV9wcm9iZSBhbmQgX2Noa3N0ayAobW9zdGx5IGRvbmUgYnkgVWxyaWNoIFdlaWdhbmQpLgoKCSogZmlsZXMvZmlsZS5jCglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBFUlJPUl9XUklURV9QUk9URUNUIHRvbyBpbiByZWFkb25seSBmYWxsYmFjayBvcGVuLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIEdldFNlY3VyaXR5RGVzY3JpcHRvckxlbmd0aCBzdHViIGZvciByZWdlZHQzMi5leGUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZmlsZXMvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCAiIiBhcm91bmQgLUQgZGVmaW5lcyBmb3IgcGF0aHMgd2l0aCBzcGFjZXMgaW4gdGhlbS4KCgkqIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDbGVhbmVkIHVwIENvbG9yS2V5IGhhbmRsaW5nLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOgoJUGF1bCBRdWlubiA8cGF1bHFAQ09SRUwuQ0E+CglNRVRBUkVDT1JEIG1lbWJlciByZFBhcmFtIHNob3VsZCBiZSByZFBhcm0gKGluIHdpbjMyIHNkaykKCWxvdHMgb2YgY2hhbmdlcyBpbiB0aGlzIHNvdXJjZSBmaWxlIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuCgoJKiBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL3Nwb29sZXIuYywgb2JqZWN0cy9nZGlvYmouYywKCXJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBhdWwgUXVpbm4gPHBhdWxxQENPUkVMLkNBPgoJRml4ZWQgYmFkIGRlZmluZXMsIGFkZGVkIGEgZmV3IHR5cGVzICduIGRlZmluZXMuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXNhYmxlIGJyb2tlbiBjYWxsYmFja3Mgd2hpY2ggbGVhZCB0byBjcmFzaGVzLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgSUQgdXNhZ2UgKGFuZCByZWx5IGxlc3MgaGVhdmlseSBvbiBtdWx0aW1lZGlhL21tc3lzdGVtLmMKCWludGVybmFsIHN0cnVjdHVyZXMpLgoKCSogbWlzYy90b29saGVscC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkZWJ1Zy5oIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGxhc3Qgc2luY2UgaXQgI3VuZGVmcyBFUlIgZm9yIFNvbGFyaXMuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9tZW1vcnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgL3UgZm9ybWF0IHRvIGRlYnVnZ2VyIGRpc3BsYXkgZm9yIFVOSUNPREUgc3RyaW5ncy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgaXJyaXRhdGluZyBGSVhNRSBsaW5lIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBtc2Rvcy9pbnQyZi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nICdcbicgaW4gRklYTUUgbWVzc2FnZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJb2JqYmFzZS5oIG5lZWRlZCBmb3IgV0lORV9TdHJpbmdGcm9tQ0xTSUQoKSwgZml4IEMgZnVuY3Rpb24KCWRlY2xhcmF0aW9ucywgaW5zdGFsbCBhIGNvbG9ybWFwIGlmIHdlIGFyZSBub3QgbWFuYWdlZCwgcmVsZWFzZQoJYmFja2J1ZmZlcnMgaW4gREdBIG1vZGUsIGZpeCB2aWRlbyBtb2RlIHN3aXRjaGluZyBsb2dpYyB0byBhdm9pZAoJcG9zc2libGUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLgoKCSogbXNkb3MvZHBtaS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU21hbGwgZml4LgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1zZG9zL2ludDIxLmMgdnhkLmMsIG11bHRpbWVkaWEvbW1pby5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJQmV0dGVyIERPUyBmaWxlIGhhbmRsZSBtYW5hZ2VtZW50LgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglUaGlzIHNob3VsZCBoZWxwIHByZXZlbnQgZHVwbGljYXRlIHdvcmsuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIERlYXRoKCkgYW5kIFJlc3VycmVjdGlvbigpLCB0d28gZnVuY3Rpb25zIG5lZWRlZCBieSBzb21lCglUUFdpbiAoPykgY29tbWFuZCBsaW5lIHRvb2wuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgMzItPjE2IHRyYW5zbGF0aW9uIGZvciBXTV9BQ1RJVkFURUFQUC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViczogU2hlbGxNZXNzYWdlQm94VywgUnVuRExMX0NhbGxFbnRyeTE2LgoJSW1wbGVtZW50YXRpb24gZm9yIFNIR2V0U3BlY2lhbEZvbGRlclBhdGgzMltBfFddLgoJTWFueSBidWdmaXhlcy4KCgkqIGNvbnNvbGUveHRlcm0uYywgbWlzYy9wb3J0LmMsIHdpbjMyL2NvbnNvbGUuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQ2hhbmdlIGFsbCBXaW5lIG9wZW5wdHkoKSBpbXBsZW1lbnRhdGlvbnMgdG8gbWF0Y2ggdGhlICJzdGFuZGFyZCIgYW5kCgl0aGVuIG1ha2UgdGhlbSBib3RoIGNhbGwgdGhlIHNhbWUgY29kZSBsZWF2aW5nIHRoZSBvcHRpb24gdG8gY2hhbmdlCgl0aGF0IGNvZGUgdG8gY2FsbCB0aGUgInN0YW5kYXJkIiBvcGVucHR5KCkgYXQgYSBsYXRlciBkYXRlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBTZXRQcm9jZXNzQWZmaW5pdHlNYXNrIHN0dWIuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSBvdGhlciB1bmlvbiBtaXN1c2UgdG9vIChvbmUgbGVzcyBtZW0gY29ycnVwdGlvbikKCVJlLWFkZGVkIFhJbnN0YWxsQ29sb3JtYXAgKG9yIG5vbiBtYW5hZ2VkIGRvZXMgbm90IGNoYW5nZSBwYWxldHRlKQoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgS0VSTkVMLjQ5NS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzLCBkb2N1bWVudGF0aW9uL2RpcmVjdDNELCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGJpdG1hc2sgdG8gc3RvcmUgd2hpY2ggQ29sb3JLZXkgc3RydWN0dXJlcyBhcmUgdmFsaWQKCS0gaGFuZGxlIG1hbnkgbmV3IHJlbmRlcmluZyBzdGF0ZXMsIHNvbWUgb3B0aW1pemF0aW9ucyBpbiBzdGF0ZSBjaGFuZ2VzCgktIDhiaXQgcGFsZXR0aXplZCB0ZXh0dXJlcyBub3cgc3VwcG9ydCBDb2xvcktleWluZwoJLSBzb21lIG1pc2NlbGxhbmVvdXMgYnVnIGZpeGVzIGFuZCBjb2RlIHJld3JpdGUKCgkqIGNvbnRyb2xzL21lbnUuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGxvb2sgb2YgdGhlIG1lbnUgc28gaXQgd291bGQgYmUgY29tcGxpYW50IHdpdGggV2luOTU6IG1vZGlmaWVkCgl0aGUgbW91c2UgdHJhY2tpbmcgY29kZSBzbyBpdCB3b3VsZCBjaGFuZ2UgdGhlIHNlbGVjdGlvbiBldmVyeSB0aW1lIHRoZQoJbW91c2UgbW92ZWQgb3ZlciBhIG1lbnUgaXRlbS4KCgkqIGRvY3VtZW50YXRpb24vaG93LXRvLXBvcnQ6CglNaWtlIENhc3RsZSA8ZGFsZ29kYUBzaGVsbC5ydDY2LmNvbT4KCVNtYWxsIGZpeC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGJ1Z3M6CgktIFdoZW4gYW4gZWRpdCBjb250cm9sIGJ1ZGR5IHdhcyB1c2VkIHNpbmdsZSBkaWdpdCB2YWx1ZXMgd2VyZSBub3QKCWJlaW5nIGRpc3BsYXllZC4KCS0gQ29tbWEgdmFsdWVzIHdlcmUgbm90IGRpc3BsYXllZCBjb3JyZWN0bHkgd2hlbiB0aG91c2FuZHMgc2VwYXJhdGlvbgoJd2FzIHJlcXVlc3RlZC4KCgkqIHdpbjMyL25ld2Zucy5jOgoJVG9tIEJlY2ggPHRvbWJAaWkudWliLm5vPgoJV2hpbGUgdGhlIGRlYnVnIGV2ZW50IG1lc3NhZ2VzIGFyZSBub3QgaW1wbGVtZW50ZWQsIFdhaXRGb3JEZWJ1Z0V2ZW50CglzaG91bGQgcmV0dXJuIEZBTFNFLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgb2JqZWN0cy9iaXRtYXAuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIENvcHlJbWFnZTE2LgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzCglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTbWFsbCBmaXguCgoJKiBjb25zb2xlL2dlbmVyaWMuYywgbXNkb3MvaW50MjEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCAweDAxIHRvIHVzZSBnZW5lcmljIGNvbnNvbGUsIGZpeGVkIDB4MGIuCglGaXhlZCBDT05TT0xFX0dldENoYXJhY3RlciAodHdvIGFyZ3Mgc3dhcHBlZCkuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHNwZWNpZnlpbmcgbW9kdWxlIG5hbWUgZm9yIE5FIGR1bW15IG1vZHVsZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jCglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNldCBtb2R1bGUgbmFtZSBvZiBkdW1teSBtb2R1bGUgZXF1YWwgdG8gbW9kdWxlIG5hbWUgb2YgUEUgbW9kdWxlLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBpbmNsdWRlIHdpbmUvd2ludXNlcjE2LmggYWRkZWQuCgoJKiBncmFwaGljcy92Z2EuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIGFuIGFjdHVhbCBwcmltYXJ5IHN1cmZhY2UgZm9yIHNjcmVlbmJ1ZmZlci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAxMCAxNDo0MDozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaCwgbG9hZGVyL21haW4uYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGNvbmZpZy5zeXMgcGFyc2VyLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBQYXNjYWwgQ3VvcSA8UGFzY2FsLkN1b3FAaW5yaWEuZnI+CglTbWFsbCBjaGFuZ2UgaW4gTEJfU0VUQ1VSU0VMMzIgaGFuZGxpbmcgKHRoZSBjYXJldCBzaG91bGQgYmUgbW92ZWQgYXMKCXdlbGwpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGZpbGVzL2FzeW5jLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2Mvd2luc29ja19kbnMuYywgbXNkb3MvaW50MjEuYywgb2xlL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGF1dG9jb25mIGNoZWNrIGZvciBwcmVzZW5jZSBvZiBzeXMvZmlsZS5oLgoKCSogZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBEYmdQcmludCwgYWRkZWQgdWx0b2EuCgoJKiB3aW4zMi9jb25zb2xlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglQZWVrQ29uc29sZUlucHV0ICYgUmVhZENvbnNvbGVJbnB1dCBuZWVkIHRvIHJldHVybiAwIHJlY29yZHMgcmVhZCBpbgoJdGhlIGNhc2Ugb2YgYW4gaW52YWxpZCBoYW5kbGUuCgoJKiBjb25zb2xlL25jdXJzZXMuYywgbG9hZGVyL21haW4uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTW9yZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCglSZW1vdmUgY29tcGlsYXRpb24gd2FybmluZy4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJRml4IHVwIHNvbWUgaW50ZXJydXB0IGNhbGxzIHRvIHJldHVybiBhdCB0aGUgZGF0YSB0aGF0IHRoZXkgYXJlIHN1cHBvc2VkCgl0by4gQWxzbyBpbmNyZWFzZSBjb21tZW50IHZlcmJvc2l0eSB0byBoZWxwIGRlYnVnIHRoaW5ncyBsYXRlci4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzd2l0Y2ggLWRvc3Zlci4KCUNsZWFudXAgZm9yIE9hQnVpbGRWZXJzaW9uKCkuCgoJKiBsaWJ0ZXN0Ly5jdnNpZ25vcmU6IEFkZGVkIHZhcnRlc3QgYW5kIHZvbGluZm8KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBidWdmaXhlcywgY29kZSBjbGVhbnVwLgoJUmVtb3ZlZCBhIGZldyBnbGl0Y2hlcyBmcm9tIHRoZSBDT00gcGF0Y2guCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglPbmx5IGRlc3Ryb3kgd2luZG93IG9uY2UuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCS0gbW92ZWQgZHJhd2FibGUgdG8gY29tbW9uIHNpbmNlIGl0IGlzIHVzZWQgYnkgYm90aCBER0EgYW5kIFhsaWIuCgkgIChmaXhlcyBvbmUgYmFkIG1lbW9yeSBjb3JydXB0aW9uIGJ1ZyBpbiBER0EgKFN0YXJDcmFmdCBhbmQgRGlhYmxvKQoJLSBhZGRlZCBCbHRGYXN0IHNhbml0eSBjaGVja3MuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluaXRBcHAoKSBjYWxsIHJlbW92ZWQgZnJvbSAzMi1iaXQgYXBwbGljYXRpb24gc3RhcnR1cDsKCWNyZWF0ZSB0YXNrIG1lc3NhZ2UgcXVldWUgaW4gSW5pdFRocmVhZElucHV0KCkgaW5zdGVhZC4KCgkqIGxvYWRlci9uZS9jb252ZXJ0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGFjY2VsZXJhdG9yIHRhYmxlIFBFLT5ORSByZXNvdXJjZSBjb252ZXJzaW9uLgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVzdGFydCByZWFkKCkgaW4gY2FzZSBvZiBFSU5UUiBpbiBUVFlnZXQoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVB0ciByZWYgd3JvbmcuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVdyYyB2ZXJzaW9uIDEuMC44LiBUb29sYmFyIHJlc291cmNlcyBhcmUgbm93IHN1cHBvcnRlZC4gQSBjb3VwbGUgb2YKCW90aGVyIGZpeGVzIGFyZSBhbHNvIGluY2x1ZGVkLiBTZWUgZmlsZSB0b29scy93cmMvQ0hBTkdFUyBmb3IgZGV0YWlscy4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBvYmplY3RzL2RjLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL2szMm9iai5jLCBmaWxlcy9hc3luYy5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFkZCBtaXNzaW5nICNpbmNsdWRlcyBhbmQgcHJvdG90eXBlcyB0byBlbGltaW5hdGUgc29tZSBpbXBsaWNpdAoJZnVuY3Rpb24gZGVjbGFyYXRpb24gd2FybmluZ3MgYW5kICdleHRlcm4ncyBpbiAuYyBmaWxlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGVjayBmb3IgcmVzaXpldGVybSBpbiBuY3Vyc2VzLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92YXJ0ZXN0LVdpbjMyLmxvZywgbGlidGVzdC92YXJ0ZXN0LmMsIGxpYnRlc3QvdmFydGVzdC5yZWFkbWU6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglOZXcgdGVzdCBwcm9ncmFtIGZvciBWQVJJQU5UIGZ1bmN0aW9ucy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgZGVidWcgaW5mb3JtYXRpb24gKFBEQikgd2FzIG5vdCBtYXBwZWQgd2hlbiBsb2FkaW5nIGEgbW9kdWxlLAoJd2hpY2ggY2F1c2VkIGEgY29yZSBpbiB0aGUgZGVidWdnZXIgd2hlbiBpdCB0cmllZCB0byBhY2Nlc3MgaXQuCgoJKiBNYWtlZmlsZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglMaW5rcyBsaWJ3aW5lLnNvLjEuMCB0byBsaWJ3aW5lLnNvIGluIFdpbmUncyBtYWluIGRpcmVjdG9yeS4KCU1ha2VzIFdpbmUgY29tcGlsZSB3aXRoIC0tZW5hYmxlLWRsbCBhZ2Fpbi4KClNhdCBKYW4gIDkgMDk6MTI6NDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvb2xlMzIuc3BlYywgd2luZG93cy9kaW5wdXQuYywgaW5jbHVkZS9zdG9yYWdlLmgsIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5c3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBtaXNjL3NoZWxsLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgb2JqZWN0cy9mb250LmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGVkbGcuYywgb2xlL29sZW9iai5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3ZnYS5jLCBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL2NvbXBvYmouaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglBZGRlZCBhIGxvdCBvZiBDT00gaW50ZXJmYWNlcyBkZWZpbml0aW9ucy4KCVJlc3RydWN0dXJlZCBDT00gaGVhZGVyIGZpbGVzIGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eSBhbmQgY2xhcml0eS4KCkZyaSBKYW4gIDggMTY6Mzc6MDMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2ZpbGUuYzogU2V0IEdFTkVSSUNfUkVBRHxHRU5FUklDX1dSSVRFIGFjY2VzcyBmb3IgT0ZfQ1JFQVRFLgoJTWFrZSBHZXRGaWxlVHlwZSB3b3JrIGZvciBhbGwgaGFuZGxlIHR5cGVzLgoKCSogd2luMzIvZGV2aWNlLmM6IEF2b2lkIGNyYXNoIG9uIE5VTEwgZGV2LT5pbmZvLgoKCSogaW5jbHVkZS9mbGF0c2IuaCwgcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglBZGRlZCBzdHVicyBhbmQgZGVmaW5lcyBmb3IgdGhlIGZsYXQgc2Nyb2xsYmFyIGNvbW1vbiBjb250cm9sLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQWRkZWQgc29tZSBkZWZpbmVzIG5lZWRlZCBmb3IgY3VzdG9tIGRyYXcnaW5nIGFuZCBkYXRldGltZSBjb21tb24KCWNvbnRyb2xzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBFZGRpZSBDYXJwZW50ZXIgPGVjYXJwZW50ZXJAaXRleC5jby56YT4KCUZpeGVkIGEgc21hbGwgYnVnIGluIGZ1bmN0aW9uIEV4dHJhY3RJY29uRXgzMkEuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglIVEFTSzE2IC0+IHRocmVhZElEIG1hcHBpbmcgb2YgV01fQUNUSVZBVEVBUFAuCgoJKiBmaWxlcy9maWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglNYWtlIERlbGV0ZUZpbGUgZmFpbCBmb3IgZW1wdHkgcGF0aC4KCgkqIG1zZG9zL2lvcG9ydHMuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggZHVtbXlfY3RyIHN0dWZmIHRvIHdvcmsgZXZlbiB3aXRob3V0IERJUkVDVF9JT19BQ0NFU1MuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHdyb25nIGJ1ZmZlciB3aGljaCBjYXVzZWQgZml4dXBzIHRvIGZhaWwuCgoJKiBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGluY2x1ZGUvZDNkLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgYWxsIHRoZSBEaXJlY3QzRCBlcnJvciBjb2RlcwoJLSBhZGRlZCA4Yml0IHBhbGV0dGl6ZWQgdGV4dHVyZSBzdXBwb3J0CgoJKiBtc2Rvcy9jZHJvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWlmZGVmcyBmb3IgZGVmaW5lcyBub3QgaW4gbGludXggMi4wLgoKCSogcmVsYXkzMi93aW5zcG9vbC5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0d28gc3R1YnMgZm9yIEFkZFByaW50ZXJEcml2ZXIuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVF1ZXVlIFNJR0FMUk0gdG8gcmVkdWNlIHRoZSAic2lnbmFsIDE0IGxvc3QiIGNvbXBsYWludHMuCglBZGRlZCBzdXBwb3J0IGZvciByZXByb2dyYW1taW5nIHRoZSBET1MgdGltZXIsIGFuZCByZWFkaW5nIGJhY2sgdGhlCgljdXJyZW50IHZhbHVlLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdpbmUgaGFuZ3Mgd2hlbiByZWdpc3RyeSAoY29ycnVwdGVkKSBoYXMgbG9uZSBcIGF0IGVuZCBvZiBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglLb3N0eWEgSXZhbm92IDxrb3N0eWFAd2FybWNhdC5leGNvbS5zcGIuc3U+CglTbWFsbCBwYXRjaCB0aGF0IGVuYWJsZXMgQ2xhcmlvbiBmb3IgV2luZG93cyBub3QgdG8gdHJhcCB3aGlsZQoJbG9hZGluZy4KCgkqIG9sZS92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZSB0cm91Ymxlc29tZSBhc3NpZ25tZW50cyBieSBtZW1zZXQgZm9yIHdob2xlIHN0cnVjdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgaGFuZGxpbmcgb2YgdGhlICdwYWxlbnQnIGZpZWxkIG9mIHRoZSBDcmVhdGVQYWxldHRlIHByb2NlZHVyZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBkZXNjcmlwdGlvbiBhYm91dCBpbmNsdWRpbmcvZXhjbHVkaW5nIGZ1bmN0aW9ucyBmcm9tIHJlbGF5Cgl0cmFjZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkIGF0IGxlYXN0IDEgaW5wdXQgcmVjb3JkIGluIFJlYWRDb25zb2xlSW5wdXRBLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIENyZWF0ZU1hcHBpbmcgd2hlbiBhIG1hcHBpbmcgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgoKV2VkIEphbiAgNiAxMDozNzoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYzogRml4ZWQgZmlsZSBkZXN0cnVjdGlvbiB3aGVuIGZpbGUgaGFzIG5vIG5hbWUuCgpUdWUgSmFuICA1IDE4OjM4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXYXJucyB1c2VyIGlmIG11bHRpcGxlIC1kbGwgc3dpdGNoZXMgYXJlIHVzZWQgb24gY29tbWFuZCBsaW5lLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4ZWQgYSBsZWZ0b3ZlciBIZWFwRnJlZSBpbiB0aGUgdHJhY2tiYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS90YWIuaCwgZGxscy9jb21jdGwzMi90YWIuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXhlZCBzb21lIHByb2JsZW1zIHdpdGggdGhlIHRhYiBjb21tb24gY29udHJvbCAod2l0aCB0aGFua3MgdG8gQW5kZXJzCglDYXJsc3NvbiA8YW5kZXJzLmNhcmxzc29uQGxpbnV4Lm51PikuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcm9wc2hlZXQuaCwgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUFkZGVkIGEgbWlzc2luZyBQcm9wZXJ0eVNoZWV0MzJBVyBhbmQgQ3JlYXRlUHJvcGVydHlTaGVldFBhZ2Ugc3R1YiwKCWFuZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIG1pc2MvbWFpbi5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgZ3JhcGhpY3MvdmdhLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsIG9uIGFsbCBjcml0aWNhbCBzZWN0aW9ucyB1c2VkIGFjcm9zcwoJcHJvY2VzcyBib3VuZGFyaWVzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIGZvciBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsLCBDb252ZXJ0VG9HbG9iYWxIYW5kbGUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBtYW4gcGFnZS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgYXJncyBvZiBNWl9DcmVhdGVQcm9jZXNzLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHN0cmluZyBidWcgaW4gcHJvZ3JhbXMvLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdHVwaWQgImFjdGlvbiIgZW11bGF0aW9uIGZvciBoYXJkd2FyZSB0aW1lcnMgaW4gaW9wb3J0cy5jLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZ2FpbiBhIHNtYWxsIERPU0FTUEkgcGF0Y2guCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vZm9udHMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGNoZWNrIGlmIHBhbGV0dGUgaXMgbm90IG51bGwgd2hlbiBzZXR0aW5nIGEgcGFsZXR0ZQoJLSBjaGVjayBpZiB3aW5kb3cgaGFuZGxlIGlzIHZhbGlkIGJlZm9yZSBnZXR0aW5nIGl0cyAnZHJhd2FibGUnCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IGNvcmUgZHVtcCB3aXRoIHNvbWUgVFRGICh3aGVuIFgxMSBydW5zIHdpdGggYSB0cnVlIHR5cGUKCXNlcnZlcikuCgoJKiBzZXJ2ZXIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBzdGRvdXQgZm9yIGRlZmF1bHQgY29uc29sZSBvdXRwdXQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gIDMgMTc6MDA6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvd2luZV9nbC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0M0QsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGJlZ2lubmluZyBvZiBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3QzRDIgKERYIDUuMCkgYW5kIGFzc29jaWF0ZWQgY2xhc3NlcwoJLSBzb21lIGJhc2ljIGNvZGUgZm9yIERpcmVjdDNEIGFuZCBEaXJlY3QzREV4ZWN1dGVCdWZmZXIgKERYIDMuMCkKCS0gYWRkZWQgc3RyZXRjaGluZyB0byBCbHQgZnVuY3Rpb24KCgkqIG1pc2MvdmVyc2lvbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyeSB0byBhdXRvZGV0ZWN0IE5UNC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkwIG1lYW5zIHN1Y2Nlc3MsIGFsbCBlbHNlIGZhaWx1cmUgZm9yIFdhaXRGb3JTaW5nbGVPYmplY3QuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCURvIG5vdCBhZHZhbmNlIHRoZSBjdXJzb3IgaW4gY2VydGFpbiByb3V0aW5lcy4gVGhpcyBjbGVhbmVkIHVwIHRoZQoJaW1wbGVtZW50YXRpb24gcXVpdGUgYSBiaXQuCgoJKiBsb2FkZXIvbWFpbi5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVNldCBjb25zb2xlIHZpZGVvIG1vZGUgd2hlbiBsb2FkaW5nIERPUyBhcHAuIChFdmVudHVhbGx5LCBJIHdhbnQgdG8KCW1pbWljIFdpbmRvd3MgOXgncyBiZWhhdmlvciBieSBzZXR0aW5nIHRoZSB2aWRlbyBtb2RlIG9ubHkgd2hlbiBub24KCUlOVCAyMSBjYWxscyBhcmUgdXNlZCB0byBhbGxvdyBmb3IgYXJiaXRyYXJ5LXNpemVkIGNvbnNvbGVzKS4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUveHRlcm0uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJWHRlcm0gZHJpdmVyIGNhbiBub3cgcmVzaXplIHRoZSB0ZXJtaW5hbCB3aGVuIGEgbW9kZSBjaGFuZ2UgaXMKCWRldGVjdGVkLgoKCSogY29uc29sZS9nZW5lcmljLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTG9uZyBzdGFuZGluZyBzY3JvbGwgYnVnIGZpeGVkIQoKCSogY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglSZXdyaXRlIG9mIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRvIHN1cHBvcnQgInJlZ3VsYXIiIGN1cnNlcyBhcyB3ZWxsIGFzCgllbGltaW5hdGluZyB0aGUgLS13aXRoLW5jdXJzZXMgb3B0aW9uLiBOb3csIG5jdXJzZXMgc3VwcG9ydCB3aWxsIGJlCglidWlsdCBpbiBpZiBhIGNvbXBhdGlibGUgbGlicmFyeSBpcyBkZXRlY3RlZC4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaCwgd2luZG93cy9kZWZkbGcuYzoKCU5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4IHRoZSByZXR1cm4gdHlwZSBvZiBETEdQUk9DIHR5cGUgYW5kIG1hc2sgb3V0IHRoZSB1bnNldCBoaWdod29yZCBvZgoJdGhlIHJldHVybiB3aGVuIGEgMTYgYml0IGRpYWxvZyBwcm9jIGlzIGNhbGxlZC4KCgkqIGluY2x1ZGUvaW50ZXJmYWNlcy5oOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkIGludGVyZmFjZSBJRCdzIGZvciB1cGNvbWluZyBJVHlwZUxpYiBpbXBsZW1lbnRhdGlvbi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeCBmb3IgdHJhaWxpbmcgc2xhc2hlcywgcmVwZXRpdGlvbiBvZiAnLycgb3IgJ1wnIGFuZAoJU2V0TGFzdEVycm9yKCkgaW4gR2V0RnVsbFBhdGhuYW1lLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCB3aW4zMi9BdHRpYy9hZHZhcGkuYywgd2luMzIvQXR0aWMvc2VjdXJpdHkuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2luaXQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgQURWQVBJMzIgZmlsZXMgdG8gZGxscy9hZHZhcGkzMi4KCUFkZGVkIHN0dWJzIGZvciBldmVudGxvZyBmdW5jdGlvbnMuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIE5UU0hDaGFuZ2VOb3RpZnlSZWdpc3RlciwgTlRTSENoYW5nZU5vdGlmeURlcmVnaXN0ZXIuCglDbGVhbnVwLCBzb21lIG1vcmUgZnVuY3Rpb25zIFVOSUNPREUgcmVhZHkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIQ2xvbmVTcGVjaWFsSURMaXN0IGltcGxlbWVudGVkLgoJU0hHZXREYXRhRnJvbUlETGlzdEEgY29ycmVjdGVkLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTaGVsbF9HZXRDYWNoZWRJbWFnZUluZGV4MzJbQXxXXSBpbXBsZW1lbnRlZC4KCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUltcGxlbWVudGVkIHJhdyBkZXZpY2UgYWNjZXNzIGNhbGxzIGZvciBpb2N0bEdlbmVyaWNCbGtEZXZSZXEoKQoJYW5kIHRoZXJlZm9yZSBtb3ZlZCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIGludDJbNTZdLmMgaW50byBmaWxlcy9kcml2ZS5jLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBhdXRvbWF0aWMgQ01PUyBSQU0gY2hlY2tzdW0gY2FsY3VsYXRpb24uCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGRvY3VtZW50YXRpb24vYXNwaSwgcmVsYXkzMi93bmFzcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU2VuZEFTUEkzMkNvbW1hbmQzMiBoYXMgdG8gYmUgX19jZGVjbC4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi9hc3BpIGFuZCByZXZlcnRlZCBhbiBFUlIgYmFjayB0byBXQVJOLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglPZiBjb3Vyc2Ugd2Ugd2FudCB0aGUgbGFzdCAxMDAgbGluZXMsIG5vdCB0aGUgZmlyc3QgMTAwIGxpbmVzLgoJVXNlICd0YWlsJyBpbnN0ZWFkIG9mICdoZWFkJy4gQWxzbyBmaXggdGV4dCBhbGlnbm1lbnQgZnJvbQoJcHJldmlvdXMgcGF0Y2guCgoJKiBtdWx0aW1lZGlhL2pveXN0aWNrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVhZGluZyBqb3lzdGljayA1IHdoZW4gd2Ugb25seSBzdXBwb3J0IDQgc2hvdWxkIGZhaWwgaW5zdGVhZCBvZgoJaGFuZy4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUGxheWluZyBhIG5vbi1leGlzdGVudCBDRCBzaG91bGQgZmFpbCBpbnN0ZWFkIG9mIGNyYXNoLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIG5lY2Vzc2FyeSBjb25maWd1cmUgcmVydW5zIGZvciBNYWtlZmlsZSBhbmQgTWFrZS5ydWxlcwoJZ2VuZXJhdGlvbi4KCgkqIG1pc2NlbXUvaW5zdHIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglFbXVsYXRlcyBpbnMvb3V0cyBjb3JyZWN0bHkgZm9yIERPUyBwcm9ncmFtcy4KCgkqIG9sZS9zdG9yYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZXZpY2UuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jOgoJSW1wbGVtZW50ZWQgZmlsZSBzaGFyaW5nIGNoZWNrcyBpbiB0aGUgc2VydmVyLgoJQWRkZWQgc2V0IGZpbGUgdGltZSBzZXJ2ZXIgcmVxdWVzdC4KCU92ZXJhbGwgY2xlYW4gdXAgb2YgdGhlIGZpbGUgaGFuZGxpbmcgKERPUyBkZXZpY2UgaGFuZGxpbmcgaXMgbm93Cglicm9rZW4sIHNob3VsZCBiZSByZWRvbmUpLgoKU2F0IEphbiAgMiAwODoyMjozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIGJ1ZyBpbiBDcmVhdGVGaWxlTWFwcGluZyB3aGVuIG5hbWUgaXMgbm90IE5VTEwuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOiBGaXhlZCBDSEVDS19TVFJJTkcgZGlzcGxheS4KCkZyaSBKYW4gIDEgMTk6NTE6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWVtb3J5L2xvY2FsLmM6CglSaWNoYXJkIEEgTG91Z2ggPHJhbG91Z2guY2VkQGRuZXQuY28udWs+CglQdXQgcmV0dXJuIHZhbHVlIG9mIExvY2FsQWxsb2MgaW4gQ1ggdG9vLgoKCSogaW5jbHVkZS9wc2Rydi5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1ZGVzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBVc2UgcHJvcGVyIHN5c3RlbSBkaXJlY3RvcnkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBHb3QgcmlkIG9mIENMSUVOVF9HZXRQcm9jZXNzSW5mby4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5oZWxwLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9jb21tLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy9zcG9vbGVyLmMsIG1pc2Mvc3B5LmMsIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2xlL29sZW9iai5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmMsIGRlYnVnZ2VyL2RiZy55LCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL2ltYWdlbGlzdC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zdG9yYWdlLmgsIGluY2x1ZGUvc3RydWN0MzIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCU1vdmVzIG1vcmUgc3R1ZmYgZnJvbSB3aW5kb3dzLmguCgktIGluY2x1ZGUvd2ludXNlci5oIC0gaW50ZXJmYWNlIHJlbGV2YW50IHRvIHVzZXIzMi5zcGVjCgktIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCAtIHRoZSBvbGQgMTYgYml0IGludGVyZmFjZSAoaW50ZXJuYWwgdXNlKQoJLSBpbmNsdWRlL3dpbmJhc2UuaCAtIHNvbWUgbWlub3IgdXBkYXRlcyB0byBrZWVwIHRoaW5ncyBjb2hlcmVudC4KCS0gTG90IG9mIG90aGVyIGZpbGVzIG1hZGUgdG8gaW5jbHVkZSB3aW5lL3dpbnVzZXIxNi5oLCB3aGljaCBpcyBubwoJICBsb25nZXIgaW5jbHVkZWQgZnJvbSB3aW5kb3dzLmgKCgkqIHNjaGVkdWxlci9oYW5kbGUuYzogRml4ZWQgQ2xvc2VIYW5kbGUoKSBvbiBnbG9iYWwgaGFuZGxlcy4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL3dpbjk1bG9vaywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFkZCBzb21lIGluZm9ybWF0aW9uIHRvIHRoZSBtYW4gcGFnZSBhbmQgUkVBRE1FIGZpbGUuCglNYWtlIGRvY3VtZW50YXRpb24vd2luOTVsb29rIHNheSBbVHdlYWsuTGF5b3V0XSBpbnN0ZWFkIG9mCglbVHdlYWtzLkxheW91dF0uCglGaXggaW5jb3JyZWN0IGNvbW1hbmQgZ2l2ZW4gaW4gZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLgoJU3RhbmRhcmQgZXJyb3Igd2FzIG5vdCBiZWluZyByZWRpcmVjdGVkLCBzbyBtb3N0IG9mIHRoZQoJb3V0cHV0IHdhcyBsb3N0LgoKCSogb2JqZWN0cy9iaXRtYXAuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglEZWxwaGkgMi4wIG5lZWRzIHRvIGFsbG9jYXRlIGEgYml0bWFwIGJpZ2dlciB0aGFuIDQwOTYgYml0cyB3aWRlLgoKCSogbWlzYy9wcmludGRydi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUluaXRpYWxpemUgbHBkd05lZWRlZC4KCgkqIGlmMTYzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbmNsdWRlIHN0dWZmIGV2ZW4gaWYgbm90IG9uIF9faTM4Nl9fIGZvciBkZWJ1ZyBkZWZpbmVzLgoKCSogb2xlL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQW5vdGhlciAvLyBjb21tZW50IGZpeGVkLgoKCSogc2VydmVyL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTmVlZCA8ZXJybm8uaD4gZm9yIGVycm5vIGRlY2wuIG9uIFNvbGFyaXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgb2JqZWN0cy9mb250LmM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUltcGxlbWVudCBUcmFuc2xhdGVDaGFyc2V0SW5mbywgY2hhbmdlIGNoYXJzZXQgdHlwZSB0byBCWVRFLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBpbmNsdWRlL2NvbWJvLmg6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAZ2FsYXh5LmFtcy5zdW55c2IuZWR1PgoJQmV0dGVyIENCX1NFVENVUlNFTCBtZXNzYWdlIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglNb3ZlZCBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3QgaW1wbGVtZW50YXRpb24gdG8gVVNFUiByb3V0aW5lcywgdXNpbmcKCWEgbm9ybWFsIFdpbjMyIGV2ZW50LgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogU2VuZCBkZWJ1Z2dpbmcgb3V0cHV0IHRvIHN0ZGVyci4KCgkqIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCB3aW4zMi9jb25zb2xlLmM6CglDbGVhbmVkIHVwIGFuZCByZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgY29kZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFVzZSBzZXJ2ZXIgZmlsZSBtYXBwaW5nIG9iamVjdHMuCgoJKiBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglBZGRlZCBzZXJ2ZXItc2lkZSBmaWxlIG1hcHBpbmcgb2JqZWN0IHN1cHBvcnQuCgoJKiBtaXNjL2NydGRsbC5jOgoJSGFja2VkIHN0ZGlvIGZ1bmN0aW9ucyB0byB1c2UgV2luMzIgZmlsZSBoYW5kbGVzLiBTdGlsbCBuZWVkcyBhIHByb3BlcgoJc3RkaW8gZW11bGF0aW9uLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVzZSBXaW4zMiBmaWxlIGhhbmRsZXMgaW5zdGVhZCBvZiBVbml4IG9uZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJVGFrZSBpbnRvIGFjY291bnQgaGFuZGxlIGluaGVyaXRhbmNlIGZsYWcuCgpUaHUgRGVjIDMxIDE1OjU1OjE5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCUNoYW5nZWQgZGJfdGFza19wcmludHN5bSB0byBhbHdheXMgcHJpbnQgYSBmdWxsIGFkZHJlc3MsIG5vIG1hdHRlcgoJd2hhdCB0aGUgb3BlcmFuZCBzaXplIGlzLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6IFJlLWltcGxlbWVudGVkIHVzaW5nIGEgcmVhbCBzZW1hcGhvcmUuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvazMyb2JqLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvc2lnbmFsLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvdG9vbGhlbHAuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYzoKCVJlbW92ZWQgY2xpZW50LXNpZGUgd2FpdCBmdW5jdGlvbnM7IGFsbCB3YWl0aW5nIGlzIG5vdyBkb25lIHRocm91Z2gKCXRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0Lmg6CglBZGRlZCBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KCUFkZGVkIGdsb2JhbCBoYW5kbGUgc3VwcG9ydC4KCldlZCBEZWMgMzAgMTI6MTE6NTIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglDaGFuZ2VkIHNlcnZlciB3YWl0IGxvZ2ljIGEgYml0LgoKCSogd2luMzIvY29uc29sZS5jOgoJSGFja3MgdG8gc3VwcG9ydCBzZXJ2ZXItc2lkZSBjb25zb2xlLiBTaG91bGQgYmUgcmVkb25lIHByb3Blcmx5Cglzb21lIGRheS4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCB3aW4zMi9maWxlLmMsIHdpbjMyL25ld2Zucy5jOgoJUmVpbXBsZW1lbnRlZCBSZWFkL1dyaXRlRmlsZSB0byB1c2Ugc2VydmVyIGZpbGUgZGVzY3JpcHRvcnMuCglSZW1vdmVkIGZpbGUgcG9zaXRpb24gaGFjayBhcyBpdCBpcyB3cm9uZyBmb3IgV2luMzIgKHNob3VsZCBiZSByZWRvbmUKCWZvciBXaW4xNiBvbmx5KS4KCgkqIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvcGlwZS5jOgoJQWRkZWQgYW5vbnltb3VzIHBpcGUgc3VwcG9ydAoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc2V2ZXJhbCBmaWxlIHNlcnZlciByZXF1ZXN0cwoJQWRkZWQgc2VydmVyLXNpZGUgcGlwZXMgYW5kIGNvbnNvbGVzCgpTdW4gRGVjIDI3IDE1OjI4OjU1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NydGRsbC5jLCBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGxvYWRlci9tYWluLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglBZGRlZCBiZWdpbm5pbmdzIG9mIHNlcnZlci1zaWRlIGZpbGUgaGFuZGxpbmcuCglBZGRlZCAtZGVidWdtc2cgK3NlcnZlciBzdXBwb3J0LgoJQmV0dGVyIHNlcnZlciByZXF1ZXN0IGR1bXBpbmcgZm9yIHZhcmFyZ3MgcmVxdWVzdHMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUZpeGVkIFNldEZvY3VzIHRoYXQgd2FzIGJyb2tlbiB3aGVuIG1vdmVkIHRvIHgxMWRydi4KCgkqIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jOgoJQWRkZWQgYWRkX3F1ZXVlL3JlbW92ZV9xdWV1ZSB0byBzZXJ2ZXIgb2JqZWN0IG9wZXJhdGlvbnMuCglNb3ZlZCBzZWxlY3QoKSBsb29wIGZ1bmN0aW9ucyB0byBzZWxlY3QuYy4KClNhdCBEZWMgMjYgMTk6NDc6MDAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jOgoJUmVuYW1lZCBFUlIgbWFjcm8gdG8gYXZvaWQgY29uZnVzaW5nIHRoZSBtYWtlX2RlYnVnIHNjcmlwdC4KCgkqIG9sZS9zdG9yYWdlLmMsIG9sZS90eXBlbGliLmMsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvc3RvcmFnZS5oLCBpbmNsdWRlL3dpbnZlcnNpb24uaCwgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdG9ucyBvZiBpbmNvbXBsZXRlIHByb3RvdHlwZXMsIGFzc2lnbm1lbnQncyBvZiBwb2ludGVyIHdpdGgKCWRpZmZlcmVudCBzaWduZWRuZXNzLCBzdXBlcmZsb3VzICcsJyBhbmQgJzsnIGluIHN0cnVjdHVyZXMsIHdyb25nCglyZXR1cm4tdHlwZXMsIGxvc2Ugb2YgZGlnaXRzIGFuZCBzb21lIHNtYWxsIGdsaXRjaGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZm9udC5oOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGdhbGF4eS5hbXMuc3VueXNiLmVkdT4KCUNsZWFuZWQgdXAgZm9udCBlbmNvZGluZyBoYW5kbGluZy4gQWRkZWQgJ0lnbm9yZSMnIG9wdGlvbiB0byB0aGUKCVtmb250c10gc2VjdGlvbi4gQWxzbywgZmlsZSB3aXRoIGNhY2hlZCBtZXRyaWNzIG5vdyBoYXMgdGhlIHZhbHVlIG9mCgkkRElTUExBWSBhcHBlbmRlZCB0byB0aGUgZmlsZW5hbWUuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHJjL3N5c3Rlc3QuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3BhdGguYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5pb2N0bC5oLCBtaXNjL21haW4uYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvbGUvb2xlMi5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCAvLyBjb21tZW50cyB0byAvKiAqLyBzbyBXSU5FIGNvbXBpbGVzIHdpdGggbm9uLWdjYyBjb21waWxlcnMKCWFnYWluLgoKCSogd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRlYnVnZ2VyL2RiZy55LCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBtb3JlIHRoaW5ncyB0byB0aGUgWDExIGRyaXZlci4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvYnJ1c2guYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCUZpeGVkIHRoZSBwcm90b3R5cGUgb2YgQ3JlYXRlRElCUGF0dGVybkJydXNoUHQKCgkqIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglSZW1vdmVkIHRoZSBDTl94eHggbWFjcm9zIHNpbmNlIHRoZXkgYXJlIG5vdCB1c2VkLCBkbyBub3QgY29ycmVzcG9uZCB0bwoJYW55IFdpbmRvd3MgZGVmaW5lIGFuZCBjb25mbGljdCB3aXRoIE1GQyBkZWZpbmVzLgoJd2luZG93cy5oIG11c3QgcHJvdmlkZSBhbGwgdGhlIGRlZmluaXRpb25zIGNvbnRhaW5lZCBpbiB3aW5iYXNlLmgKCVNvbWUgWHh4MzIgZnVuY3Rpb25zIGRpZCBub3QgaGF2ZSB0aGUgYXNzb2NpYXRlZCBYeHggbWFjcm8uCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCUFkZGVkIGEgdHlwZWRlZiBmb3IgX19pbnQ2NCB3aGljaCBpcyBhIGJ1aWx0aW4gVmlzdWFsIEMrKyB0eXBlCglBZGRlZCBhIHR5cGVkZWYgZm9yIFBVSU5UCgoJKiBpbmNsdWRlL29iamJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJUkVGSUlEIHdhcyBub3QgZGVmaW5lZC4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmMsIGNvbmZpZ3VyZToKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+Cgljb25maWd1cmUgZmlyc3QgY2hlY2tzIHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gY29tcGlsZSBJUFggY29kZSB3aXRoCglHbGliYyBoZWFkZXJzLiBJZiBpdCBmYWlscywgbmV4dCBjaGVjayBkZXRlcm1pbmVzIHdoZXRoZXIgZGlyZWN0IGluY2x1c2lvbgoJb2YgPGxpbnV4L2lweC5oPiB3b3Jrcy4KCgkqIGluY2x1ZGUvdGNoYXIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJUHJvdmlkZXMgdGhlIG1hcHBpbmdzLiBNQkNTIGFuZCBVbmljb2RlIGZ1bmN0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkLgoJU3RhbmRhcmQgKFNCQ1MpIGZ1bmN0aW9ucyBtYXkgZXhpc3Qgb3Igbm90LCB3aXRoIHRoZSBzYW1lIG9yIGEgZGlmZmVyZW50CglzZW1hbnRpY3MuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvaXBhZGRyZXNzLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJSVBhZGRyZXNzIGNvbW1vbiBjb250cm9sIGltcGxlbWVudGF0aW9uLiBGaXJzdCB0cnk7IG5lZWRzIG1vcmUgd29yayB0bwoJcmVtb3ZlIGJvcmluZyBidWdzLgoKRnJpIERlYyAyNSAwODo1NToxNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHRoZSBURVhUIHJlZGVmaW5lZCB3YXJuaW5ncy4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJSG9vayBpbnRvIHRoZSAoc3R1YmJlZCkgcmVzaXplIGNvZGUgaW4gbXNkb3MgaW50MTAuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgc3VwcG9ydCBmb3Igc2VsZWN0aW9uIG9mIGNvbnNvbGUgbW9kZSBkcml2ZXJzIHRvIHVzZSB1c2luZyB0aGUKCS1jb25zb2xlIG9wdGlvbi4gQ3VycmVudGx5ICJ0dHkiLCAibmN1cnNlcyIsIGFuZCAieHRlcm0iIGFyZQoJc3VwcG9ydGVkLgoJQWRkIHN0dWJzIGZvciByZXNpemluZyB0aGUgc2NyZWVuIG9uIG1vZGUgY2hhbmdlcy4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgbWlzYy9kZGVtbC5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZm9sbG93aW5nIERERSBBUElzOgoJRGRlQ21wU3RyaW5nSGFuZGxlcywgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlLCBEZGVGcmVlU3RyaW5nSGFuZGxlLAoJRGRlUXVlcnlTdHJpbmcsIERkZVVuaW5pdGlhbGl6ZS4KClRodSBEZWMgMjQgMTY6NTk6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3BhcnNlZHQuYywgb2xlL3BhcnNlZHQuaCwgb2xlL3ZhcmlhbnQuYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgVmFyRGF0ZUZyb21TdHIgQVBJLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBpbmNsdWRlL3RyYWNrYmFyLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBUb29sdGlwIHN1cHBvcnQKCS0gVmVydGljYWwgdHJhY2tiYXJzIHN1cHBvcnRlZCBub3cKCS0gVEJTX0JPVEggc3VwcG9ydCAoZ29lcyBhbG9uZyB3aXRoIHBhcnRpYWwgY2xlYW51cCBvZiBkcmF3aW5nIGNvZGUpCgktIFVzZSBDT01DVEwzMiBoZWFwIGluc3RlYWQgb2Ygc3lzdGVtIGhlYXAKCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBhbGwgY2xpcHBlciYzZCBzdHVicy4KCVN0YXJ0aW5nIENvbG9yS2V5IHN1cHBvcnQuCglGaXhlZCB0cmFjZSBzdGF0ZW1lbnQgaW4gRGlyZWN0RHJhd0NyZWF0ZSBhcyBmb3JtYXR0aW5nIHdhc24ndCBjb3JyZWN0LgoJQ2hhbmdlZCAicmV0dXJuIDA7IiB0byAicmV0dXJuIEREX09LIiBvciAicmV0dXJuIFNfT0siIGFzIGFwcHJvcHJpYXRlLgoJQWRkZWQgU3VyZmFjZUVudW0gZHdGbGFncy4KCgkqIGluY2x1ZGUvZHBsYXkuaCwgbXVsdGltZWRpYS9kcGxheS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIG1hY3JvcyB0byBoZWFkZXIgZmlsZSBmb3IgZWFzaWVyIGZ1bmN0aW9uIGNhbGxpbmcuCglDaGFuZ2VkIGltcGxlbWVudGF0aW9uIGEgbGl0dGxlIGJpdC4KCUFkZGVkIHN0dWJzIGZvciBkcGxheTMuIFN0aWxsIG5lZWQgdG8gYnJlYWsgaW50byBBIGFuZCBXIHZlcnNpb25zLgoKCSogd2luMzIvZmlsZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQ3JlYXRlRmlsZTMyQSB3YXMgb25seSBhbGxvd2luZyBjb25zb2xlIG9wZW5zIG9uIENPTklOJC9PVVQkLiBUaGlzCgloYXMgYmVlbiBjaGFuZ2VkIHRvIGhhdmUgYSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG9uJ3Qgc2VuZCBPREFfRU5USVJFIGZvciBlbXB0eSBsaXN0Ym94ZXMgKExJU1RCT1hfUGFpbnQpLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIEdldEJpbmFyeVR5cGUgQVBJIGZ1bmN0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIG5ldyBkb3Ntb2QgY29tbXVuaWNhdGlvbiBwb3NzaWJpbGl0aWVzLCBpbmNsdWRpbmcKCWFjdGl2YXRpbmcgYSBkb3Ntb2Qtc3BlY2lmaWMgc2V0aXRpbWVyKCksIGFuZCB0aGUgY2FwdHVyZSBvZiBzb21lCgljb21tb24gc2lnbmFscywgd2hpY2ggaXMgcmV0dXJuZWQgdG8gV2luZSAocHJldmlvdXNseSBhIFNJR0lMTAoJd291bGQganVzdCBjYXVzZSBhICJkb3Ntb2Qgc3luYyBsb3N0IiB3aXRob3V0IGV4cGxhbmF0aW9uLCBub3cgaXQKCWludm9rZXMgdGhlIFdpbmUgZGVidWdnZXIpLiBJbnZva2VzIGludCAwOCB1cG9uIHJlY2VpcHQgb2YgZG9zbW9kCglTSUdBTFJNLCB0aHVzIHNpbXVsYXRpbmcgdGhlIERPUyB0aW1lci4gTWFkZSBET1MgaW50ZXJydXB0IGNhbGxzCgliZSByZXBvcnRlZCBieSAtZGVidWdtc2cgK3JlbGF5IGluc3RlYWQgb2YgLWRlYnVnbXNnICtpbnQuIEFuZAoJZml4ZWQgbm9uLWkzODYgY29tcGlsYXRpb24gb2YgZG9zbW9kLiAoQW55dGhpbmcgZWxzZT8hKQoKCSogbG9hZGVyL21haW4uYywgd2luZG93cy93aW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVza3RvcCB3aW5kb3cgcXVldWUgaGFuZGxpbmcgYWRhcHRlZC4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVF1ZXVlIGhhbmRsaW5nIGFkYXB0ZWQgdG8gbmV3IHF1ZXVlIHJvdXRpbmVzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Rhc2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgc3R1YiBmb3IgSW5pdFRocmVhZElucHV0LgoJVXNlIEdldFRocmVhZFF1ZXVlL0dldEZhc3RRdWV1ZSBpbnN0ZWFkIG9mIEdldFRhc2tRdWV1ZS4KCgkqIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgQ2FsbG91dCB0YWJsZSBpbnN0ZWFkIG9mIGRpcmVjdCBHZXRQcm9jQWRkcmVzcy4KCVVzZXJZaWVsZCBtb3ZlZCB0byBVU0VSLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsb3V0IHRhYmxlIChmb3IgS0VSTkVMLT5VU0VSIGNhbGxzKSBhZGRlZC4KCUNhbGxiYWNrcy0+Q2FsbFBvc3RBcHBNZXNzYWdlUHJvYyByZW1vdmVkLgoKCSogbWlzYy9jYWxsYmFjay5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci90YXNrLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgbm9uLWhhcmR3YXJlIFggZXZlbnRzIGNvcnJlY3RseSB3aXRoIG5hdGl2ZSBVU0VSCgkocmVtb3ZlZCByZWZlcmVuY2UgdG8gTUVTU0FHRVFVRVVFIGZyb20gS0VSTkVMIGNvZGUpLgoJSGFuZGxlIEV4cG9zZSBldmVudHMgd2l0aCBuYXRpdmUgVVNFUi4KCgkqIG1pc2MvY3J0ZGxsLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglCZXR0ZXIgX3VsdG9hKCkuCgoJKiB3aW4zMi90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggc21hbGwgcHJvYmxlbSBpbiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTG93ZXN0IHNjYW4gY29kZSBzZWVtcyB0byBiZSAxLCBub3QgemVyby4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YnMgZm9yIElEaXJlY3QzRCgyKTo6Q3JlYXRlTGlnaHQgYW5kIENyZWF0ZURldmljZSB0byBhdm9pZCBjcmFzaGVzLgoKCSogZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXMgY3Jhc2ggd2hlbiBydW5uaW5nIHdpdGhvdXQgZXh0ZXJuYWwgc2hlbGwzMi5kbGwuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIG1lc3NhZ2VzIFtMQl8qLEVNXypdIHRyYW5zbGF0ZWQgMzJBIGZyb20vdG8gMzJXLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglEZXN0IGJ1ZmZlciB3YXMgcHJpbnRlZCBvdXQgYXMgc3RyLgoKCSogbWlzYy92ZXIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglHZXR0aW5nIHN0cmluZ3Mgd2l0aCBWZXJRdWVyeVZhbHVlMzJXIHdhcyBicm9rZW4uIENvbXBsZXRlCglyZWNvbnN0cnVjdGlvbiBvZiB0aGUgZnVuY3Rpb24uCgoJKiBtaXNjL3Rvb2xoZWxwLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IG51bWJlciBhbmQgdHlwZSBvZiBhcmdzIGluIGRlYnVnZ2luZyBzdGF0ZW1lbnRzLgoKCSogb2xlL3N0b3JhZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAbXVkLmRlPgoJSVN0b3JhZ2UzMiB2dGFibGUgd2FzIG1pc3NpbmcgMyBzdHViIGVudHJpZXMuCgpGcmkgRGVjIDE4IDE3OjM4OjM5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglEb2N1bWVudGF0aW9uIGZvciBUcmFuc2xhdGVDaGFyc2V0SW5mby4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGlmMTYzMi93cHJvY3Muc3BlYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSB0aGUgRE9TQVNQSSBwYXJ0IHVzZSB0aGUgZXhjZWxsZW50IERQTUkgUk1DQiBpbXBsZW1lbnRhdGlvbiBkb25lCglieSBPdmUgS2FhdmVuLCB3aGljaCBtYWtlcyB0aGUgY29kZSBfbXVjaF8gY2xlYW5lci4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVVzZSAtbHdpbmUgZm9yIGxpbmtpbmcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGFsd2F5cyBjbGVhciBRU18uLi4gZnJvbSAqYm90aCogY2hhbmdlQml0cyBhbmQgd2FpdEJpdHMuCglCdWdmaXg6IHF1ZXVlLT5oU2VuZGluZ1Rhc2sgaXMgKnF1ZXVlKiBoYW5kbGUsIG5vdCB0YXNrIGhhbmRsZS4KCgkqIGlmMTYzMi9zdG9yYWdlLnNwZWMsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9zdG9yYWdlLmgsIG9sZS9pZnMuYywgb2xlL3N0b3JhZ2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8Z291Z2V0QG1ldGFpbnRlZ3JhdGlvbi5uZXQ+CglGaXJzdCBzdGVwIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gY2FsbCBDT00gaW50ZXJmYWNlcyBmcm9tIEMrKyBjb2RlIGluCglXaW5lbGliLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJUHJlbGltaW5hcnkgdG9vbHRpcCBzdXBwb3J0LgoJV01fU0VURk9OVC9HRVRGT05UIGFkZGVkLgoJU29tZSBidWcgZml4ZXMuCglVc2UgQ09NQ1RMMzIgaGVhcCBpbnN0ZWFkIG9mIHN5c3RlbSBoZWFwLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBQb2x5bGluZVRvLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBBZHJpYW4gSGFydmV5IDxhZHJpYW5Ac2VsZWN0LmNvbS5hdT4KCVRoZSBady4uLiBGdW5jdGlvbnMgaW4gbnRkbGwuZGxsIGFyZSBqdXN0IGFsdGVybmF0ZSBlbnRyeQoJcG9pbnRzIGZvciB0aGUgc2FtZSBmdW5jdGlvbnMgYXMgdGhlIE50Li4uIGZ1bmN0aW9uIG9mIHRoZQoJc2FtZSBuYW1lcy4gIENoYW5nZWQgbnRkbGwuc3BlYyB0byBtYXRjaCB0aGlzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW9yZ2FuaXplZCBQRSBtb2R1bGUgbG9hZGluZyB0byBwcmVwYXJlIGZvciBlbGYtZGxsIGxvYWRlci4KCVdJTkVfTU9EUkVGIGNyZWF0aW9uIG1vdmVkIHRvIG9uZSBjZW50cmFsIGxvY2F0aW9uLgoJQnVnZml4OiBjb3JyZWN0bHkgc2VsZWN0IG5hdGl2ZS9idWlsdC1pbiB2ZXJzaW9uIGlmIC5ETEwKCWV4dGVuc2lvbiBpcyBtaXNzaW5nIGluIExvYWRMaWJyYXJ5IGNhbGwuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgTUNJX0lOVEVSTkFMIHRvIHRoZWlyIGNvcnJlY3QgdmFsdWVzLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB3YXJuaW5nLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgc2VuZGluZyBkaXJlY3RseSBtZXNzYWdlcyB0byBEcml2ZXJQcm9jIGJ1dCByYXRoZXIgZ28gdGhyb3VnaAoJTUNJIGxheWVyIChyZXF1aXJlZCBmb3Igb3Blbi9jbG9zZSkuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgaW5jb3JyZWN0IHBhdGNoIGZvciBNQ0lfT1BFTiBhbmMgTUNJX0NMT1NFIHBhcmFtZXRlcnMgKHRoYW5rcyB0byBSb2JlcnQgUmlnZ3MKCWZvciBwb2ludGluZyBvdXQgdGhlIGJ1Zywgc2VlIHRoZSBmaXggaW4gbWNpc3RyaW5nLmMpCglGaXhlZCBNQ0kgc2Vla2luZyBvbiBDRCBhdWRpby4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgV2FpdE5hbWVkUGlwZVtBfFddLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBDb250cm9sX0ZpbGxDYWNoZV9SdW5ETEwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIR2V0RmlsZUluZm8zMkE6IGdldCBTSEdGSV9TWVNJQ09OSU5ERVggaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlMQXBwZW5kIHNlZW1zIHRvIHdvcmsgbm93LgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgV2FpdE5hbWVkUGlwZVtBfFddLgoKVHVlIERlYyAxNSAxODowNDo1OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IEdldFRlbXBQYXRoMzIgaWYgY291bnQ9MC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYzoKCVRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCS0gYWRkIC1sb3NzYXVkaW8gaWYgbmVlZGVkLCBhbmQgYSBjaGVjayBmb3IgPHNvdW5kY2FyZC5oPiwgdG8gY29uZmlndXJlLmluCgkgIChydW4gYXV0b2NvbmYgYWZ0ZXIgdGhpcykuICBOb3RlIHRoYXQgdGhlIGNoZWNrIGhhcyBiZWVuIGFsdGVyZWQgdG8gYnJlYWsKCSAgb3V0IG9mIHRoZSBBQ19DSEVDS19IRUFERVJTIGFmdGVyIHRoZSBmaXJzdCBtYXRjaCAtIHRoaXMgaXMgc28KCSAgPHN5cy9zb3VuZGNhcmQuaD4sIGlmIGZvdW5kIG9uIE5ldEJTRCAoYSBgcmVhbCcgT1NTKSwgd2lsbCBub3QgY29uZmxpY3QKCSAgd2l0aCB0aGUgZW11bGF0ZWQgb3NzYXVkaW8uCgktIGNoZWNrIGZvciA8c291bmRjYXJkLmg+IGFsb25nIHdpdGggdGhlIG90aGVyIHR3byBpbiBhIG11dHVhbGx5LWV4Y2x1c2l2ZQoJICBtYW5uZXIgaW4gdGhlIHZhcmlvdXMgKi5jIGZpbGVzIHRoYXQgbmVlZCBpdDsgY2hhbmdlIGluY2x1ZGUgb2YKCSAgIm1tc3lzdGVtLmgiIHRvICJtdWx0aW1lZGlhLmgiIHNvIHRoaXMgbG9naWMgaXMgYWxsIGluIG9uZSBwbGFjZQoJLSBjaGFuZ2UgbWNpY2RhLmMgdG8gYWxsb3cgZm9yIENEIGF1ZGlvIG1hbmlwdWxhdGlvbiBvbiBOZXRCU0QuICBUaGlzCgkgIGluY2x1ZGVzOgoJICAqIGNoYW5naW5nIGlvY3RsKCkgY2FsbHMgdG8gYmUgTk9OLVNQTElUIHdpdGggZXhhY3RseSAzIGFyZ3M7IG9uIE5ldEJTRAoJICAgIG9zc2F1ZGlvLCBpb2N0bCgpIGlzICNkZWZpbmVkIHRvIGJlIF9vc3NfaW9jdGwgYnkgPHNvdW5kY2FyZC5oPiwgYW5kCgkgICAgbmVpdGhlciBzcGxpdHRpbmcgd2l0aCAjLWRpcmVjdGl2ZXMgbm9yIGEgdHdvLWFyZyBpb2N0bCB3b3JrOwoJICAqIGNoYW5naW5nIHRoZSAjaWYgbG9naWMgdG8gYWxsb3cgYm90aCBGcmVlQlNEIGFuZCBOZXRCU0QgdG8gc2hhcmUgdGhlCgkgICAgYXBwcm9wcmlhdGUgY29kZSBibG9ja3MKCS0gYmxvY2sgb3V0IE1JREkgY29kZSBmb3IgTmV0QlNEIChpbml0LmMpIGFuZC9vciBtaXNzaW5nIFNORENUTF9NSURJX0lORk8KCSAgKG1pZGkuYywgbWNpbWlkaS5jKS4gIE5ldEJTRCdzIE9TUyBlbXVsYXRpb24gZG9lcyBub3QgKHlldCkgc3VwcG9ydCBNSURJLgoJVGhhbmtzIGdvIHRvIG15Y3JvZnRAbmV0YnNkLm9yZyBmb3IgdGhlIDk5JSBidWxrIG9mIHRoaXMgd29yay4KCgkqIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHV0aWwuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGluY2x1ZGUvdHNfeHV0aWwuaDoKCURpcmsgVGhpZXJiYWNoIDx0aGllcmJhY2hAbWF0aGVtYXRpay50dS1kYXJtc3RhZHQuZGU+CglTZXQgdGhlIGNsYXNzIGhpbnRzIGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXg6IEdldEZ1bGxQYXRoTmFtZSBzZXRzIGxwRmlsZVBhcnQgb25seSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQKCWRvZXMgbm90IGVuZCB3aXRoICdcJy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWlzYy9kZGVtbC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGlmMTYzMi91c2VyLnNwZWM6CglQYXVsIFF1aW5uIDxwYXVscUBDT1JFTC5DQT4KCUxvdHMgb2YgbmV3IGRlZmluZXMgYW5kIHN0dWJzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVGhlc2UgcGF0Y2hlcyBhZGQgc3VwcG9ydCBmb3IgLS1lbmFibGUtZGxsIG9uIE5ldEJTRCwgYW5kIG1heSBldmVuIGRvIHNvIGZvcgoJRnJlZUJTRCBhLm91dC4gIE5vdywgTmV0QlNEIGNhbiB1c2UgbGlid2luZSBhcyBhIHNoYXJlZCBvYmplY3QuICBUaGFua3MgdG8KCW15Y3JvZnRAbmV0YnNkLm9yZyBmb3IgZG9pbmcgdGhpcyB3b3JrIQoKCSogdG9vbHMvd3JjL3dyaXRlcmVzLmM6IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCUdsb2JhbCBjb25zdHJ1Y3RvcnMgdXNpbmcgYC5zZWN0aW9uIC5jdG9ycycgYXJlIGJvZ3VzIGZvciBOZXRCU0QncwoJYXNzZW1ibGVyLiBVc2UgdGhlIGFwcHJvcHJpYXRlIGAuc3RhYnMnIHdoZW4gb24gTmV0QlNELgoKCSogb2xlL3ZhcmlhbnQuYzogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVW5kZWZpbmVkIENIQVJfTUFYIGFuZCBDSEFSX01JTiAoI2RlZmluZWQgYnkgTmV0QlNEJ3Mgc3lzdGVtIGhlYWRlcnMpLgoJRml4ZWQgc29tZSBjb25zdGFudHMgdGhhdCBhcmUgdG9vIGJpZyBmb3IgYSBwbGFpbiBgaW50Jy4KCgkqIG9sZS92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE1BWEZMT0FUIGlmIEZMVF9NQVggaXNuJ3QgdGhlcmUuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbjogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJZ3JhcGhpY3MvcHNkcnYgZm9yZ2V0cyB0byBwdWxsIGluIEBETExGTEFHU0AsIGFuZCBzbyBpcyBjb21waWxlZCBub24tUElDIGlmCgl1c2luZyAtLWVuYWJsZS1kbGwuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCVZla3NsZXIgTWljaGFlbCA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglNb3ZlIGRlY2xhcmF0aW9ucyBmcm9tIHdpbmRvd3MuaCB0byB3aW5nZGkuaCBhbmQgd2ludXNlci5oLgoKTW9uIERlYyAxNCAxODoxNToxMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jLCBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvYXN5bmMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2FzeW5jLmgsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvc2lnbmFsLmMsIG1pc2Mvd2luc29ja19kbnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBhc3luYyBJTyAoU0lHSU8pIHN0dWZmIGZyb20gV0lOU09DSyBnZW5lcmljIHVzZWFibGUuCglBZGRlZCBhc3luYyBJTyBzdXBwb3J0IHRvIEZJTEUgYW5kIENPTlNPTEUgb2JqZWN0cy4KCgkqIG1pc2Mvd2luc29jay5jOiBTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJUHJldmVudCBzZWdmYXVsdCBpbiBzZXRzb2Nrb3B0IHdoZW4gb3B0bmFtZSBpcyBTT19MSU5HRVIgYW5kIG9wdHZhbCBpcwoJbnVsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNvbWUgY2xlYW51cC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hNYXBQSURMVG9TeXN0ZW1JbWFnZUxpc3RJbmRleCB0cnkncyB0byBkZXRlcm1pbmUgYW5kIGxvYWQgdGhlIGV4YWN0CglpY29uIGZvciBmaWxlcyAoYnkgdHlwZSkgbm93LgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgSENSX0dldERlZmF1bHRJY29uIChpbnRlcm5hbCkuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIERQTUkgd3JhcHBlciBhbGxvY2F0aW9uIGNvZGUgdG8gZG9zbWVtLmMgdG8gUkVBTExZIG1ha2UgdGhlCglSTWNhbGwgc2hvcnRjdXRzIGluZGVwZW5kZW50IG9mIGRvc21vZC4gU1MgaGFkIGJlZW4gbGVmdCBvdXQgb2YKCXRoZSBSRUFMTU9ERUNBTEwgY29weSByb3V0aW5lcyBmb3Igc29tZSByZWFzb24sIGZpeGVkIG5vdy4gQWxzbwoJY2xlYW5lZCB1cCBhIGZldyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBYIGZvbnRzIHVzZWQgZm9yIEhlbHYgYW5kIFRtcyBSbW4gdHlwZWZhY2VzCgl3aXRoIERlZmF1bHRTZXJpZiBhbmQgRGVmYXVsdFNhbnNTZXJpZiBJTkkga2V5cy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJLSBBZGRlZCBhIGdsb2JhbCBsYWJlbCBmb3IgZWxmLWRsbCBsaW5raW5nIGFuZCBhIGxvbmcgd2l0aCB0aGUgcmVzb3VyY2UKCSAgc2l6ZSBhbmQgYSBsb25nIHdpdGggdGhlIGRpcmVjdG9yeSBzaXplLgoJLSBLaWxsZWQgYW4gYW5ub3lpbmcgd2FybmluZyBzaW5jZSB2ZXJzaW9uIDEuMC4wIGluIHBhcnNlci55IGFib3V0IGEKCSAgdmFyIGJlaW5nIHVzZWQgYmVmb3JlIGluaXQuCgoJKiBpbmNsdWRlL3NobG9iai5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRzIHRoZSBJUGVyc2lzdEZpbGUgSW50ZXJmYWNlIHRvIElTaGVsbExpbmtbV10gYW5kIGdhdmUgYm90aCBvd24KCUlDbGFzc0ZhY3RvcnlzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShSZWFkQ29uc29sZTMyQSk6IHNtYWxsIGFuZCBzdHVwaWQgYnVnIGZpeGVkCgkoV3JpdGVDb25zb2xlT3V0cHV0KTogYnVnIGZpeGVkIChhdHRyaWJ1dGVzIG1heSBjaGFuZ2Ugd2l0aGluIGxpbmVzKQoJYW5kIGVuaGFuY2VkIHNwZWVkd2lzZSBieSB1c2luZyBidWZmZXJpbmcuCgkoQ09OU09MRV9zdHJpbmdfMl9JUik6IGVuaGFuY2VkLCBub3cgZ2V0cyBzY2FuY29kZXMgYW5kIHZpcnR1YWxrZXljb2RlcwoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX3VsdG9hIGltcGxlbWVudGVkLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgaGFjayB0byBnZXQgcmlkIG9mIGFubm95aW5nIGVycjpyZXNvdXJjZTogbWVzc2FnZSBmb3IKCU1lc3NhZ2VCb3hlcy4KCgkqIHJlbGF5MzIvZHNvdW5kLnNwZWM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUZpeCBvZmYtYnktMSBlcnJvciBpbiBEaXJlY3RTb3VuZCBvcmRpbmFscy4gVGhhbmtzIHRvIFJvYmVydCBSaWdncyBmb3IKCXRoZSBwb2ludGVyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglTYXZlIHRoZSBvcmlnaW5hbCB2aWRlbyBtb2RlIGJlZm9yZSBnb2luZyBmdWxsc2NyZWVuIGFuZCByZXN0b3JlIGl0Cgl3aGVuIHRoZSBsYXN0IERpcmVjdERyYXdfUmVsZWFzZSBpcyBjYWxsZWQuIEFsc28gZml4IGEgcHJvYmxlbSB3aGVyZQoJdGhlIHZpZXdwb3J0IHdhc24ndCBzZXQgdG8gMCwwLgoKCSogY29uc29sZS94dGVybS5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1hZGUgbW9yZSBjcm9zcy1wbGF0Zm9ybSBieSBjaGFuZ2luZyAtPl9maWxlbm8gdG8gZmlsZW5vKCkuCgoJKiB3aW5kb3dzL3dpbi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeCB0aGUgWi1vcmRlciBvZiBtYXhpbWl6ZWQvbWluaW1pemVkIGNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJWExGRHMgc2hvdWxkIGJlIHdlbGwtZm9ybWVkICgxNCBoeXBoZW5zKSB0byBtYXRjaCBzY2FsYWJsZSBmb250cy4KCVN0b3Agc2xhbnQgZmllbGQgYmVjb21pbmcgd2lsZGNhcmRlZCB0b28gZWFybHkuCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKEZPQ1VTX1N3aXRjaEZvY3VzKSBjaGVjayBmb3IgcEZvY3VzVG8gPT0gTlVMTCBpbnN0ZWFkIG9mIGhGb2N1c1RvPT0wLgoKCSogb2xlL29sZTJubHMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglIYWNrIE9MRV9HZXRGb3JtYXQqIHRvIHJldHVybiBzb21ldGhpbmcgaWYgZGF0ZWxlbiA9IDAuCglSZW1vdmUgdW5uZWNlc3NhcnkgV0lOQVBJJ3MuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZyaSBEZWMgMTEgMTU6MDQ6MTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RsaGVscDMyLmgsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWlzYy90b29saGVscC5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXRyaWNrIFNwaW5sZXIgPHNwaW5sZXIucGF0cmlja0BtYXlvLmVkdT4KCUltcGxlbWVudGVkIENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdCwgaW5jbHVkaW5nIHR3byBvZiB0aGUgcm91dGluZXMKCXVzaW5nIHNuYXBzaG90cywgUHJvY2VzczMyRmlyc3QgYW5kIFByb2Nlc3MzMk5leHQuCgoJKiByZWxheTMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBvbGUvY29tcG9iai5jLCBvbGUvdmFyaWFudC5jOgoJSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AdWthbnMuZWR1PgoJTW9zdCBvZiB0aGUgY3VycmVuY3kgdmFyaWFudCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZC4KCU1pbm9yIGJ1Z2ZpeGVzIGFuZCBoZWFkZXIgdGlkeWluZy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIHJlbGF5MzIvcmFzYXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUmFzRW51bUNvbm5lY3Rpb25zIHN0dWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4IGluIFBhdGhDb21iaW5lMzJbQXxXXS4KCVZpZXcgbWVudSBpbiBleHBsb3JlciBhbmQgb24gcmlnaHQgbW91c2UgYnV0dG9uIGlzIHdvcmtpbmcgbm93LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCAgSUxHZXREaXNwbGF5TmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIFNoZWxsRXhlY3V0ZUV4MzJBLgoJU21hbGwgY2hhbmdlcy4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgbWVudSByZXNvdXJjZXMgdG8gcmMtZmlsZS4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgb2xlL29sZTJubHMuYywgd2luMzIvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gZGVidWcgbWVzc2FnZXMgY2xhcmlmaWVkLCBvbmUgdXNlbGVzcyBwcm90b3R5cGUgcmVtb3ZlZC4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkyOTQgbWlzc2luZyBXSU5BUEkgYWRkZWQuCgoJKiB0b29scy90ZXN0cnVuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUtpbGwgc3dhcHBlZCBvdXQgKHdpbmUpIHByb2Nlc3NlcyB0b28gYW5kIHRydW5jYXRlIGRpZmYgYWZ0ZXIgc29tZSB4eHgKCWxpbmVzLgoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBTZXRMYXN0RXJyb3Igd2l0aCB3cm9uZyB2YWx1ZS4KCgkqIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IEFib3J0RG9jMTYsIG1vdmUgQWJvcnREb2MzMiBhbmQgU3RhcnREb2MzMlcgdG8KCW1pc2MvcHJpbnRkcnYuYyBhbmQgZml4IGEgZmV3IGNvbXBpbGUgd2FybmluZ3MuCgoJKiB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvbnRkbGwvbnQuYywgaWYxNjMyL3R5cGVsaWIuc3BlYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2ludDIxLmMsIG9sZS9vbGUybmxzLmMsIG9sZS90eXBlbGliLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFdpbjMyIHN5bmNocm8gdG8gRklMRXMgKHVzZWZ1bCBvbmx5IGZvciB0ZXJtaW5hbCBoYW5kbGVzKS4KClRodSBEZWMgMTAgMTY6MDQ6NTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL21wci5zcGVjLCByZWxheTMyL3NoZWxsMzIuc3BlYywgcmVsYXkzMi90YXBpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL3RpbWUuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpZjE2MzIvZGRlbWwuc3BlYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9kZGVtbC5jLCBtaXNjL25ldHdvcmsuYywgbWlzYy9wcmludGRydi5jLCBtaXNjL3RhcGkzMi5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJTG90cyBvZiBuZXcgc3R1YnMuCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMZXQgdGhlIFN5c3RlbV9UaW1lX1NlbGVjdG9yIGNsb2NrIHRpY2suCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS92Z2EuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBDcmVhdGVTeXN0ZW1UaW1lciBpbnRlcmZhY2UgY2hhbmdlLgoKCSogaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9jYWxsYmFjay5jLCBtaXNjL3N5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDbGVhbmVkIHVwIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBmb3IgdXNlIHdpdGggMzItYml0IGNhbGxiYWNrcy4KCShOT1RFOiAxNi1iaXQgY2FsbGJhY2tzIHN0aWxsIGRvbid0IHdvcmshKQoKCSogd2luZG93cy9tZGkuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CgktIEhhbmRsZSBXTV9NRElSRVNUT1JFIGJ5IGNhbGxpbmcgV01fU1lTQ09NTUFORCBmb3IKCXRoZSBjaGlsZCB3aW5kb3cgc28gdGhhdCB0aGUgc3lzdGVtIG1lbnUgaXMgc2V0IGNvcnJlY3RseS4KCS0gSW4gTURJQ2FzY2FkZSBhbmQgTURJVGlsZSB1c2UgV01fTURJUkVTVE9SRSBtZXNzYWdlCgl0byByZXN0b3JlIG1heGltaXplZCB3aW5kb3cgc28gdGhhdCBzeXN0ZW0gbWVudSBpcwoJaGFuZGxlZCBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS90eXBlbGliLmMsIG9sZS92YXJpYW50LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFZBUklBTlQgQVBJcy4KCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIERSSVZFX0dldEZyZWVTcGFjZSB0byBoYW5kbGUgc3BhY2UgPiA0IEdCeXRlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJaGFuZGxlIFRWSUZfVEVYVCBieSBUUkVFVklFV19TZXRJdGVtIGFjY29yZGluZyB0byBNUyBkb2N1bWVudGF0aW9uLgoJYmV0dGVyIGhhbmRsaW5nIG9mIExQU1RSX1RFWFRDQUxMQkFDSzMyQQoJVFJFRVZJRVdfR2V0TmV4dHxQcmV2TGlzdEl0ZW0gZGlkbid0IGRlc2NlbmQgaW50byB2aXNpYmxlIGNoaWxkIGl0ZW1zLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FybiBpZiB0d28gLmV4ZXMgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCB0aGUgc2Vjb25kIGRvZXMgbm90CgloYXZlIHJlbG9jYXRpb24gcmVjb3Jkcy4KCgkqIG1pc2MvY29tbWRsZy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBHZXRGaWxlVGl0bGUzMkEgbm90IGZpbGxpbmcgdXAgbHBUaXRsZSBpZiBscEZpbGUgZGlkbid0Cgljb250YWluICcvJywnXFwnIG9yICc6Jy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJRml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggaWYgYSB1c2FibGUgdmlkZW8gbW9kZSBpcyBub3QgZGV0ZWN0ZWQuCgoJKiB0b29scy9tYWtlX2F1dGhvcnM6IFNjcmlwdCB0byBnZW5lcmF0ZSBhdXRob3JzIGZpbGVzCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJU3R1YnMgZm9yIElEaXJlY3RJbnB1dEVmZmVjdCBhbmQgSURpcmVjdElucHV0RGV2aWNlMkEgbWV0aG9kcywKCWFzIHdlbGwgYXMgQWRkUmVmKCksIEdldENhcGFiaWxpdGVzKCksIEVudW1PYmplY3RzKCksCglHZXRQcm9wZXJ0eSgpLCBHZXRPYmplY3RJbmZvKCksIEdldERldmljZUluZm8oKSwgSW5pdGlhbGl6ZSgpLAoJYW5kIFJ1bkNvbnRyb2xQYW5lbCgpIGZvciBJRGlyZWN0SW5wdXREZXZpY2UuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJU2V0IHdpbmRvdyBmb2N1cyBpbiAgX2NvbW1vbl9JRGlyZWN0RHJhd19TZXREaXNwbGF5TW9kZSgpLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUFjY2VwdCBNQ0lfT1BFTiBhbmQgTUNJX0NMT1NFIG1lc3NhZ2VzIGluIE1DSUNEQVVESU9fRHJpdmVyUHJvYzMyKCkuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBkZWZlcnJlZCBFeHBvc2UgZXZlbnRzIGhhbmRsaW5nLgoKCSogd2luZG93cy9kY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjbGlwIFZpc1JnbiBhZ2FpbnN0IFggZGVza3RvcC4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkTW9kdWxlMzIvV2luRXhlYzMyIHNob3VsZCByZXR1cm4gMTYtYml0IGhJbnN0YW5jZS9oVGFzay4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTYW5pdHkgY2hlY2sgb24gZm9udCBzaXplLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgcGFyZW50aGVzZXMgYWRkZWQuCgpXZWQgRGVjICA5IDE2OjM3OjA1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvdGFzay5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS93aW5jb24uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5oYW5jZWQgV2luMzIgQ29uc29sZSAoWFRFUk0pCgktIGlucHV0aGFuZGxpbmcgZW5oYW5jZWQgKGtleXMgYW5kIG1vdXNlY2xpY2tzKQoJLSB3aW4zMiBzeW5jaHJvbml6YXRpb24gKHBhcnRpYWwpCgktIGxvdHMgb2YgZW5oYW5jZW1lbnRzIHRvIGRyYXdpbmcgZnVuY3Rpb25zCgktIHNpbXBsZS9jb21wbGV4IGNvbnNvbGUgKHNpbXBsZS1zdGRpbi9zdGRvdXQgLT4gY29tcGxleC14dGVybSkuCgoJKiBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGNvbnNvbGUveHRlcm0uYywgaW5jbHVkZS9jb25zb2xlLmg6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZCBhIGRyaXZlciB0byBvcGVuIHVwIGEgbmV3IHh0ZXJtIHdpbmRvdyB3aGVuZXZlciBjb25zb2xlIG91dHB1dCBpcwoJbmVlZGVkLiBEZXJpdmVkIGZyb20gY29uc29sZS93aW4zMi5jIGJ1dCB3ZSBhcmUgbm90IHlldCByZWFkeSB0byBtZXJnZQoJdGhlIGNvZGUgY29tcGxldGVseS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmRvd3MuaCwgdG9vbHMvZm50MmJkZi5jOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglJbXByb3ZlZCB0aGUgaGFuZGxpbmcgb2YgZm9udCBlbmNvZGluZ3MuCgoJKiBtc2Rvcy9kcG1pLmMsIGluY2x1ZGUvbWlzY2VtdS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIERQTUkgUk1DQnMgdXNpbmcgdGhlIERPUyBzdWJzeXN0ZW0sIGFuZCBhIGZldyBvdGhlcgoJaW1wcm92ZW1lbnRzLiBBbHNvLCBzb21lIHNwZWNpYWwtY2FzZWQgc2hvcnRjdXQgcGF0aHMgd2lsbCBhbGxvdyBzb21lCgljb21tb24gcmVhbC1tb2RlIGNhbGwvUk1DQiBjb21iaW5hdGlvbnMgdG8gd29yayBldmVuIHdpdGhvdXQgY2FsbGluZyB0aGUKCURPUyBzdWJzeXN0ZW0sIHRodXMgbGV0dGluZyBBUElzIGxpa2UgRE9TQVNQSSB3b3JrIHdpdGhvdXQgYW55IGRpcnR5IGhhY2tzCglldmVuIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1c2UgZG9zbW9kLgoKCSogbXVsdGltZWRpYS90aW1lLmMsIG9sZS9jb21wb2JqLmMsIGZpbGVzL2NoYW5nZS5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2MvbHpleHBhbmQuYywgbWlzYy9tYWluLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgdW5uZWNlc3NhcnkgI2luY2x1ZGUgYW5kIG1lc3NhZ2VzIHJlbW92ZWQuCgoJKiBvbGUvb2xlMm5scy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIHNtYWxsIGNvcnJlY3Rpb25zIHRvIEVudW1TeXN0ZW1Mb2NhbGVzMzJBVwoKVHVlIERlYyAgOCAxNTowNjozOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglUcmllZCBhbm90aGVyIGtsdWRnZSBmb3IgdGhlIFhtZC5oIHByb2JsZW0uCgoJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCVN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJQWRkZWQgZnVsbHNjcmVlbiBER0Egc3VwcG9ydC4KCgkqIG1pc2MvbWFpbi5jOiBQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUZpeGVkIGR1bW15IGVudHJpZXMgaW4gTUFJTl9QYXJzZUxhbmd1YWdlT3B0aW9uKCkuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbWNpY2RhLmM6CglCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgTUNJX0NEQV9TVEFUVVNfVFlQRV9UUkFDSy4KCUZpeCBhbiBvZmYtYnktb25lIGJ1ZyB3aXRoIE1DSV9TVEFUVVNfTEVOR1RILgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBlcmZsb3VzIFdJTkFQSSByZW1vdmVkLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FybiBhYm91dCBpbnZhbGlkIGVudHJ5cG9pbnRzIChjcmVhdGVkIGJ5IHZpcnVzZXMpIHdoaWNoIHJlc3VsdCBpbgoJV2luZSBjcmFzaGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgWDExIHBhbGV0dGUgb24gRGlyZWN0RHJhd1N1cmZhY2U6OlNldFBhbGV0dGUsIG5vdCBiZWZvcmUgKHdlCgltaWdodCBub3QgaGF2ZSBhbiBYMTEgd2luZG93IHlldCkuCgoJKiBsb2FkZXIvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmUgVFdFQUtfSW5pdCBmcm9tIFVTRVIgdG8gR0RJSW5pdC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2MvcHJpbnRkcnYuYywgbWlzYy9zcG9vbGVyLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGZvciBTZXRBYm9ydFByb2MxNiwgc3R1YiBmb3IgU2V0QWJvcnRQcm9jMzIgYW5kIHRpZHkgdXAgc29tZSBvdGhlcgoJcHJpbnRpbmcgZnVuY3Rpb25zLgoKCSogd2luZG93cy9mb2N1cy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBpbmNsdWRlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBYMTFEUlZfRXh0VGV4dE91dCBmb3Igcm90YXRlZCB0ZXh0IGlmIGVpdGhlciBvZiBscER4LCBicmVha0V4dHJhCglvciBjaGFyRXh0cmEgYXJlIG5vbi16ZXJvLgoKCSogaW5jbHVkZS9BdHRpYy9ncmFwaGljcy5oLCBtaXNjL3NoZWxsLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zY3JvbGwuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZXBsYWNlIEdSQVBIXyBmdW5jdGlvbnMgd2l0aCBXaW4gU0RLIGVxdWl2YWxlbnRzLgoKTW9uIERlYyAgNyAxNjoyMzo0MiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJUmV2ZXJ0ZWQgcHJldmlvdXMgcGF0Y2guCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGRlZmluZSBNWl9TVVBQT1JURUQgb24gbm9uLWkzODYgcGxhdGZvcm1zLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIERQTUlfQ2FsbFJNUHJvYyAoSSB0aGluaykuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgTlBTR2V0UHJvdmlkZXJIYW5kbGVBLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJVGhlIHNjYW5jb2RlIFdpbmRvd3Mgc2VuZCBmb3IgZXh0ZW5kZWQga2V5cyBpcyB0aGUgc2NhbmNvZGUgb2YgdGhlCgl1bmV4dGVuZGVkIGVxdWl2YWxlbnQgb2YgdGhlIGtleSwgcGx1cyB0aGUgZXh0ZW5kZWQgZmxhZy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgcmVhbCBtb2RlIHByb2JsZW0uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglORV9NT0RVTEUuc3RhY2tfc2l6ZSB3YXMgc2V0IHRvIGEgcmlkaWN1bG91c2x5IHNtYWxsIHZhbHVlIG9mIDUuCglXaW5kb3dzIHNldHMgMHgxNDAwIGluIHN1Y2ggY2FzZXMgZm9yIHByb2dyYW1zLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJV2UgZG9uJ3QgeWV0IHdhbnQgdGhlIHN0YXRpYyBjb250cm9sIHRvIGNhbGwgRGVzdHJveUljb24uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQWRkZWQgY2FzZSBmb3IgR0NXX0FUT00gaW50IEdldENsYXNzTG9uZzMyQS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOiBHYWVsIGRlIENoYWxlbmRhciA8Z2FlbEBsaW1zaS5mcj4KCVN0dWIgZm9yIFdOZXRPcGVuRW51bTMyVy4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmMsIHJlbGF5MzIvZHNvdW5kLnNwZWM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJTW9yZSBnZW5lcmFsIGNvZGUgY2xlYW51cCBmb3IgcmVhZGFiaWxpdHkuCglBIGZldyBtb3JlIHBhcmFtZXRlciB2YWxpZGF0aW9uIGNoZWNrcy4KCVJldHVybiBEU19PSyByYXRoZXIgdGhhbiAwIGluIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucy4KCUZpeGVkIHByaW1hcnkgYnVmZmVyIHJlZiBjb3VudCBidWcgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KCUhhbmRsZSAxLTMgYnl0ZSBzb3VuZCBmcmFnbWVudHMgdGhhdCB3b3VsZCBjYXVzZSBidWZmZXIgb3ZlcnJ1bnMuCglDbGVhciBwcmltYXJ5IGJ1ZmZlciB3aXRoIGEgbmV1dHJhbCB2YWx1ZSBpbnN0ZWFkIG9mIGFsd2F5cyAwCgkoYmVjYXVzZSAxMjggaXMgbmV1dHJhbCBmb3IgOC1iaXQgc291bmQpLgoJRml4IGJ1ZyB3aXRoIG1peGluZyA4LWJpdCBzb3VuZCBpbnRvIHRoZSBwcmltYXJ5IGJ1ZmZlci4KCUJyb2tlIG91dCB0aGUgbWFpbiBibG9jayBpbiBEU09VTkRfdGhyZWFkKCkgdG8gYW5vdGhlciBmdW5jdGlvbiBmb3IKCXJlYWRhYmlsaXR5LgoJSGFuZGxlICJubyBhdWRpbyIgYW5kICJhdWRpbyBidXN5IiBjYXNlcyBwcm9wZXJseSB3aGVuIGluaXRpYWxpemluZwoJZHNvdW5kLiBSZW5hbWUgRGxsQ2FuVW5sb2FkTm93KCkgdG8gRFNPVU5EX0RsbENhblVubG9hZE5vdygpLgoKCSogZGVidWdnZXIvaGFzaC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgdmFyaWFibGVzIG9wdGltaXplZCBpbnRvIHJlZ2lzdGVycyBhY2Nlc3NpYmxlLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSBzcGVjIGRlZmluaXRpb24gZm9yIE1vbml0b3JGcm9tV2luZG93IHdhcyB3cm9uZy4KCgkqIG1zZG9zL2ludDIxLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRmlsZSBoYW5kbGUgYnVnIGZpeC4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgcGFyYWdyYXBoIGFib3V0IGRpZmZlcmVudCBkbGwgdmVyc2lvbnMgYW5kIHN0cnVjdHVyZSBzaXplcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIG1pc3NpbmcgVE9PTElORk8gc3RydWN0dXJlLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIGhlYXAgYnVnLgoKCSogbG9hZGVyL3Rhc2suYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2NhbGxiYWNrLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvdnhkLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIFNldmVyYWwga2VybmVsLnNwZWMgcmV0dXJuIHR5cGUgbWlzbWF0Y2ggZml4ZXMKCS0gW0dTXWV0U2VsZWN0b3JCYXNlIFdpbjMycyBvZmZzZXQgc3VwcG9ydCBieSBVbHJpY2ggV2VpZ2FuZCAodGhhbmtzIHYubS4gISEpCgktIE1vdmUgQXBwVG9XaW5lL1dpbmVUb0FwcCBtYWNyb3MgYXMgVzMyU19BUFAyV0lORSBldGMuIHRvIGxkdC5oCgktIExvY2FsTm90aWZ5KCkgYmFzaWMgc3VwcG9ydAoJLSBGaXhlcyBmb3IgbG9jYWwgaGVhcCBoYW5kbGluZyB3aXRoIGhlYXAgaGFuZGxlcyBjcmVhdGVkIGJ5IFZpcnR1YWwqKCkKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IC1taWNyb3NvZnQtc3ltYm9sIGVuY29kaW5nIHdhcyBub3QgcmVjb2duaXplZC4KCgkqIHdpbmRvd3Mvd2luLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBXSU5fUmVzZXRRdWV1ZVdpbmRvd3Mgd291bGQgc2tpcCBzb21lIHdpbmRvd3MuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHJlY3Vyc2l2ZWx5IHJlZW50ZXJpbmcgQ0FMTDMyX0xhcmdlU3RhY2suCgoJKiBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy90dHlkcnYvd25kLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGhlIG5ldyBUVFkgZHJpdmVyLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIG1vcmUgY29kZSB0byB0aGUgWDExIGRyaXZlci4KClRodSBEZWMgIDMgMTY6Mjk6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI5LmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUNhbGwgdGhlIG5ldyBjb25zb2xlIGRyaXZlciBmb3Igc29tZSByb3V0aW5lcy4gVGhpcyBpcyBub3QgY29tcGxldGVseQoJZG9uZSB5ZXQgYW5kIG1vcmUgZm9yIHRlc3RpbmcgcHVycG9zZXMuCgpXZWQgRGVjICAyIDE5OjU4OjA5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGNvbnNvbGUvLmN2c2lnbm9yZSwgY29uc29sZS9NYWtlZmlsZS5pbiwgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBjb25zb2xlIHN1cHBvcnQuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9tYWluLmMsIG9iamVjdHMvQXR0aWMvb2VtYml0bWFwLmMsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlIE9FTSByZXNvdXJjZXMgdG8gdGhlIHgxMWRydi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCU9wZW5pbmcgYSBmaWxlIGluIGEgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3QgcmV0dXJucwoJRVJST1JfRklMRV9OT1RfRk9VTkQgaW5zdGVhZCBvZiBFUlJPUl9QQVRIX05PVF9GT1VORC4KCgkqIG1lbW9yeS9hdG9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGF0b21zICIjIG5vbiBudW1iZXIiIChvcmFjbGUgY2xpZW50KS4KClR1ZSBEZWMgIDEgMTY6MjM6MTkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWlzYy9lcnJvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW5hbWVkIEtFUk5FTC4zMjcgdG8gSGFuZGxlUGFyYW1FcnJvciAoYXMgaW4gJ1VuZG9jLiBXaW5kb3dzJykuCglGaXhlZCB3cm9uZyBvcmRpbmFscy9wcm90b3R5cGUgZm9yIE1hcFByb2Nlc3NIYW5kbGUvR2V0TW9kdWxlRmlsZU5hbWUzMi4KCUFkZGVkIG5hbWVzIGZvciBzb21lIHVuZG9jdW1lbnRlZCBleHBvcnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgR2xvYmFsQ2hhbmdlTG9ja0NvdW50IChLRVJORUwuMzY1KS4KCgkqIGlmMTYzMi90b29saGVscC5zcGVjLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1lbW9yeS9oZWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIExvY2FsMzJJbmZvLCBzdHVicyBmb3IgTG9jYWwzMkZpcnN0L05leHQgKEtFUk5FTC40NDQtNDQ2KS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9nZGlvYmouYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgR2RpRnJlZVJlc291cmNlcyAoR0RJLjYwOSkuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUZpeGVkIDgtYml0IFdBViBmb3JtYXQgaGFuZGxpbmcgKGl0IGlzIHVuc2lnbmVkIGRhdGEpLgoJRml4ZWQgb2ZmLWJ5LW9uZSBjaGVja3MgZm9yIGJ1ZmZlciB3cmFwLgoJSW5jcmVtZW50IHJlZiBjb3VudCBmb3IgcHJpbWFyeSBidWZmZXIgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KCUFkZGVkIERTQlBOX09GRlNFVFNUT1Agc3VwcG9ydCB0byBwb3NpdGlvbiBub3RpZmljYXRpb24gY29kZS4KCUxvdHMgb2YgbWlub3IgcGFyYW1ldGVyIHZhbGlkYXRpb24gY2hlY2tzLgoJU3R1YnMgZm9yOiBJRGlyZWN0U291bmRfaW5pdGlhbGl6ZSgpLCBJRGlyZWN0U291bmRfQ29tcGFjdCgpLAoJYW5kIElEaXJlY3RTb3VuZF9HZXRTcGVha2VyQ29uZmlnKCkuCglGaXhlZCBmcmVxIHNoaWZ0aW5nIHdpdGggMTYtYml0IGRhdGEgcHJvYmxlbSwgZml4ZWQgOGJpdDwtPjE2Yml0Cgljb252ZXJzaW9uLgoJTG90cyBvZiB0aHJlYWQgbG9ja2luZyBmb3IgRGlyZWN0U291bmQgYnVmZmVycy4KCURlYWxsb2MgcHJpbWFyeSBidWZmZXIgd2hlbiBkc291bmQgaXMgZGVhbGxvY2F0ZWQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0aGUgVEVYVCgpIGFuZCBNQUtFTFJFU1VMVCgpIGRlZmluaXRpb25zLgoKCSogd2luZG93cy9xdWV1ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZS4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglSZXZlcnQgbWlzZ3VpZGVkIGNoYW5nZSB0byBpbnN0YWxsX2xpYiB0aGF0IGJyb2tlIC1kaXNhYmxlLWxpYgoJY29uZmlndXJlIG9wdGlvbi4KCgkqIG1pc2MvbWFpbi5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHBhcmFtZXRlciBTUElfR0VURFJBR0ZVTExXSU5ET1cuCglPbmUgbWlzc2luZyBicmVhayBpbiBTUElfR0VURFJBR0ZVTExXSU5ET1cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyBJTEdsb2JhbENsb25lL0lMR2xvYmFsRnJlZS4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmc6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZCBhIG5vdGUgYWJvdXQgV2luUHJpbnRlcnMuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHJlbGF5MzIvb2xlMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBzdHVicywgc29tZSBwdHItPnN0ciBjb252ZXJzaW9ucy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaCwgcmVsYXkzMi9kZHJhdy5zcGVjOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGRlZmluaXRpb24gb2YgRGlyZWN0RHJhd0NyZWF0ZUNsaXBwZXIuCgktIG1vcmUgdmVyc2F0aWxlIHN1cHBvcnQgb2Ygc3VyZmFjZXMgLyBiZXR0ZXIgc3VyZmFjZSBkZXNjcmlwdGlvbiBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIHBhcmFtZXRlciBjb3VudCBmb3IgU0hDaGFuZ2VOb3RpZnlEZXJlZ2lzdGVyLCAgU0hGcmVlVW51c2VkTGlicmFyaWVzLgoJTmV3IGZ1bmN0aW9ucyBQYXJzZUZpZWxkLCBHZXQvU2V0SW5zdGFuY2VFeHBsb3JlcigpLCBQYXRoSXNVTkMsIFBhdGhJc1JlbGF0aXZlLgoJU3R1YnMgU0hXYWl0Rm9yRmlsZVRvT3BlbiwgUGF0aEZpbmRPblBhdGguCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZXMgdG8gcHJpbnQgdGhlIHN0cmluZ3MgaW4gdGhlIHJlbGF5LXRyYWNlLgoKCSogd2luZG93cy9jbGFzcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVRoZSBjbGFzcyBuYW1lIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIGdldHB0ci4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeS9zdGF0dXMgcmVjb3Zlcnkgd2hlbiBlcnJvciBvY2N1cmVkIGluIE1JRElfbWNpT3Blbi4KCUZpeGVkIHN1cHBvcnQgZm9yIFJNSUQgZmlsZXMgaW4gTUlESV9tY2lPcGVuLgoJRml4ZWQgYnVnIGZvciBwbGF5aW5nIE1JREkgZmlsZXMgd2l0aCB0ZW1wbyBjaGFuZ2VzLiBTb3VuZCBvdXRwdXQgaXMKCW5vdyBjb3JyZWN0LCBidXQgbGVuZ3RoIG9mIHRyYWNrcyAoYW5kIHRoZXJlZm9yZSBvZiB3aG9sZSBmaWxlKSBpcyBub3QKCWNvcnJlY3QuCglDaGFuZ2VkIGVycm9yIHZhbHVlcyAoSU5URVJOQUwgPT4gSU5WQUxJRF9GSUxFKSB3aGVuIGZpbGUgY2Fubm90IGJlIHJlYWQuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkvc3RhdHVzIHJlY292ZXJ5IHdoZW4gZXJyb3Igb2NjdXJlZCBpbiBXQVZFX21jaU9wZW4uCglDaGFuZ2VkIGVycm9yIHZhbHVlcyAoSU5URVJOQUwgPT4gSU5WQUxJRF9GSUxFKSB3aGVuIGZpbGUgY2Fubm90CgliZSByZWFkLgoKCSogbXVsdGltZWRpYS9tc3ZpZGVvLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgTUNJV25kQ3JlYXRlW0F8V10uCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVZlclF1ZXJ5VmFsdWUsIGJ1Z2ZpeDogd2UgY2FudCBjb252ZXJ0IGJpbmFyeSBkYXRhIHdpdGgKCUhFQVBfc3RyZHVwV3RvQSAoXFZhckZpbGVJbmZvXFRyYW5zbGF0aW9uKS4KCk1vbiBOb3YgMzAgMTc6NDE6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgd2luMzIvYWR2YXBpLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBFbnVtU2VydmljZVN0YXR1czMyLCBzbWFsbCBjaGFuZ2VzLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZCBub3cgdGhlIGZpcnN0IGljb24gZnJvbSB0aGUgKi5hbmkgZmlsZSBpbnN0ZWFkIG9mIGNyYXNoaW5nLgoKCSogbWlzY2VtdS9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IHdhcm5pbmdzIGluIG1pc2NlbXUvbWFpbi5jLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZGVkIHNvbWUgZGVmaW5lcyBhcm91bmQgdGhlIENvbW1Qb3J0IChQVVJHRV9YWFggYW5kIE1TX1hYWF9PTikKCS0gYWRkZWQgdGhlIERMR1RFTVBMQVRFIGFuZCBETEdJVEVNVEVNUExBVEUgc3RydWN0dXJlcwoJLSBhZGRlZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBmb3IgU3RhcnRQYWdlLEVuZFBhZ2UsR2V0Q29tbU1hc2ssCgkJR2V0Q29tbU1vZGVtU3RhdHVzIGFuZCBQdXJnQ29tbSxXYWl0Q29tbUV2ZW50LgoKCSogd2luZG93cy9kZWZ3bmQuYzogUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgoJRml4ZWQgYWN0aXZhdGlvbi9Gb2N1cyBtZXNzYWdlIG9yZGVyIHByb2JsZW0gd2hlbiBjcmVhdGluZyBhIG5ldyBIV05ELgoKCSogd2luZG93cy93aW5wb3MuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglQYXVsIFF1aW5uIDxQYXVsUUBjb3JlbC5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBDaGlsZFdpbmRvd0Zyb21Qb2ludEV4IGZ1bmN0aW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJRml4ZWQgcmVnaXN0cnkgcXVlcnkgZXJyb3IgdmFsdWU6IG5vdyByZXR1cm5zIEVSUk9SX0ZJTEVfTk9UX0ZPVU5ELgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZXRTeXN0ZW1QYWxldHRlRW50cmllcyByZXR1cm5zIHBhbGV0dGUgc2l6ZSBpZiBlbnRyaWVzPT1OVUxMLgoJVXNlIHRoaXMgaW5zdGVhZCBvZiBDT0xPUl9HZXRTeXN0ZW1QYWxldHRlU2l6ZS4KCgkqIHJlbGF5MzIvZHNvdW5kLnNwZWMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGNsYXNzIGZhY3RvcnkgZm9yIGRzb3VuZC4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbWlzYy9jb21tLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGZpeGVkIGEgbWluaW1hbCBlcnJvciBpbiBHZXRDb21tTWFzayBkZWZpbml0aW9uLgoJLSBhZGRzIHN0dWJzIGZvciBHZXRDb21tTW9kZW1TdGF0dXMgYW5kIFdhaXRDb21tRXZlbnQuCgoJKiBpbmNsdWRlL3htYWxsb2MuaCwgbGlicmFyeS93aW5lc3R1Yi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZXMgZm9yIEMrKyBXaW5lbGliIGNvbXBpbGF0aW9uLgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCdWdmaXg6IHNlY29uZCBSZWdPcGVuS2V5IHNob3VsZCB1c2UgQ0xTSURrZXkgaW5zdGVhZCBvZiBIS0VZX0NMQVNTRVNfUk9PVC4KCkZyaSBOb3YgMjcgMTY6MDY6MDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEJVR1MsIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcsIGRvY3VtZW50YXRpb24vbm8td2luZG93cywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglGaXhlZCAnbWFrZSBpbnN0YWxsJyB0byByZWFsbHkgY2hlY2sgZm9yIGxpYndpbmUuYSBiZWZvcmUgaW5zdGFsbGluZwoJaXQuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmM6CglTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUFkZGVkIGEgbmV3IGNtZGxpbmUgc3dpdGNoIHRvIGRpc2FibGUgWEY4NiBER0EgRXh0ZW5zaW9ucywgLW5vZGdhLgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW1wcm92ZWQgR2V0RGlza0ZyZWVTcGFjZTMyQSgpLgoKVGh1IE5vdiAyNiAxNjozMjowMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgaW5jbHVkZWQgY29sb3IuaC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjayBmb3IgZW50cnlwb2ludCBhZGRyZXNzICh0ZXN0IGJpbmFyeSB3YXMKCWluZmVjdGVkIGJ5IGEgdmlydXMgd2hpY2ggdXNlcyBpbnZhbGlkIFBFIGxvYWRpbmcgc3R1ZmYpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YnMgZm9yIFN0YXJ0cGFnZSBhbmQgRW5kUGFnZS4KCgkqIGlmMTYzMi90aHVuay5jLCBvYmplY3RzL2RjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBGSVhNRSBvdXRwdXRzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNjAyIGFuZCBzdHViIGZvciBLRVJORUwuNDkwLgoKCSogb2xlL29sZTJubHMuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERvICpub3QqIHplcm8gb3V0IG91dHB1dCBidWZmZXIgaW4gR2V0TnVtYmVyRm9ybWF0MzJbQVddLgoKV2VkIE5vdiAyNSAxODoxNTo1MyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL25scy9ncmMubmxzLCBvbGUvbmxzL3NreS5ubHMsIG9sZS9ubHMvdGhhLm5scywgb2xlL25scy90cmsubmxzLCBvbGUvb2xlMm5scy5jOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglTbWFsbCBmaXhlcy4KCgkqIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgLi4uUmVzb3VyY2UxNiByb3V0aW5lcyB0byBsb2FkZXIvcmVzb3VyY2UuYy4KCUltcGxlbWVudGVkIGFjY2Vzc2luZyBQRS1maWxlIHJlc291cmNlcyB3aXRoIDE2LWJpdCByZXNvdXJjZSByb3V0aW5lcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL25lL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvY29udmVydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBQRS0+TkUgcmVzb3VyY2UgY29udmVyc2lvbiByb3V0aW5lcyAoS0VSTkVMLjYxNS02MTgpLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS9vbGUyZGlzcC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCAzIG1ldGhvZHM6IFN5c0FsbG9jU3RyaW5nTGVuKCksIFN5c1JlQWxsb2NTdHJpbmdMZW4oKQoJYW5kIFN5c1N0cmluZ0xlbigpLiBFbnN1cmUgdGhhdCB0aGUgQlNUUiBvYmplY3RzIHdlcmUgYWxsb2NhdGVkCglhY2NvcmRpbmcgdG8gdGhlIFdpbmRvd3MgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBleGlzdGluZyBwYXRoIC0gZnVuY3Rpb25zIHRvIHNoZWxscGF0Y2guYy4KCU5ldzogUGF0aFJlbW92ZUJsYW5rczMyQXxXLCAgUGF0aE1hdGNoU3BlYzMyQXxXLAoJUGF0aFNldERsZ0l0ZW1QYXRoMzJBfFcuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBleGlzdGluZyBJU2hlbGxMaW5rIGNsYXNzLiBOZXcgc3R1YnMgZm9yIElTaGVsbExpbmtXLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgbWlzYy9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy91c2VyLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3dpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVtb3ZlIFhfRENfSU5GTyBmcm9tIERDIGFuZCBtYWtlIGl0IGJlaGF2ZSBsaWtlIGFueSBvdGhlciBQREVWSUNFLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MmYuYywgbXNkb3MveG1zLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZWQgQ1RYX1NFR19PRkZfVE9fTElOIHRvIGFsbG93IGxpbmVhciBhZGRyZXNzZXMgaW4gMzItYml0CglyZWdpc3RlcnMgKHVzZWQgYnkgRGV2aWNlSW9Db250cm9sKS4gQWRhcHRlZCBhbGwgdXNlcnMuCgoJKiBpbmNsdWRlL3dpbmlvY3RsLmgsIHdpbjMyL2RldmljZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAobW9zdCkgVldpbjMyLlZ4RCBEZXZpY2VJb0NvbnRyb2wgcm91dGluZXMuCgpUdWUgTm92IDI0IDIwOjQ3OjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogU2V0IHRoZSBURUJGX1dJTjMyIGZsYWcgaW4gdGViLmZsYWdzIGZvciAzMi1iaXQgdGhyZWFkcy4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDYWxsIEluaXRUaHJlYWRJbnB1dCBpbiBHZXRGYXN0UXVldWUgd2l0aCBjb3JyZWN0IHBhcmFtZXRlcgoJZm9yIDMyLWJpdCBxdWV1ZXMuCgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogW1FGXVRfVGh1bmsgc2hvdWxkIGNsZWFyIEhJV09SRChFQVgpIG9uIHJldHVybi4KCUJ1Z2ZpeDogaGFjayBmb3Igc3R1cGlkIFVTRVIzMiBDYWxsYmFja0dsdWVMUyByb3V0aW5lIGluIENvbW1vbjMyVGhrTFMuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEJhZCBqdW1wIGdlbmVyYXRlZCBpbiBUSFVOS19BbGxvY0xTVGh1bmtsZXQuCglCdWdmaXg6IEZvcmdvdCB0byBjb252ZXJ0IHNlZ3B0ciBpbiBBbGxvY0xTVGh1bmtsZXRDYWxsYmFja0V4LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEVyaWMgV2FybmtlIDxlcmljQHNub3dtb29uLmNvbT4KCURvbid0IG1hdGNoIGFnYWluc3QgU3ltYm9sIG9yIE5pbCBmb250cy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglSZXR1cm4gdGhlICJidWZmZXJzIiBhbmQgImNhY2hlZCIgbWVtb3J5IGFzIGZyZWUgc2luY2UgaXQgaXMKCWRlYWxsb2NhdGVkIHdoZW4gYSBwcm9ncmFtIG5lZWRzIGl0IGFueXdheS4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXg6IFNldERsZ0l0ZW1UZXh0MzIgcmV0dXJucyBCT09MIG5vdCB2b2lkLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25BfFcuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBsZWZ0IG92ZXIgJ3Nob3cnIGFuZCB1c2VsZXNzIGRlYWRiZWVmIGNoZWNraW5nIHdoaWNoIGRvZXNuJ3QKCXdvcmsuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGp1c3QgYnJva2VuIGVudHJ5cG9pbnQgYWRkcmVzc2VzLiAod2luOTggbm90ZXBhZC5leGUpCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgYWNjb3JkaW5nIHRvIGRldmVsb3BtZW50LgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBuZXcgc3R1YnMgKG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zLCBzb21lIG1jaSBmdW5jdGlvbnMsIGFuZAoJc29tZSBtbWlvIGZ1bmN0aW9ucykuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBNQ0kgcGFydCB0byBtY2ltaWRpLmMgOyBhZGRlZCBEcml2ZXJQcm9jLgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIE1DSSBwYXJ0IHRvIG1jaXdhdmUuYyA7IGFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBhZGRlZAoJRHJpdmVyUHJvYwoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtY2ltaWRpIGFuZCBtY2l3YXZlLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBmaXhlZCBwYXVzZS9yZXN1bWUgY29tbWFuZHMgOyBmaXhlZAoJc2VlayBjb21tYW5kLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRpbmcgd3JpdGluZyBNQ0kgcGFydCA7IGZpeGVkIGJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIHN0dWJzIGluIDMyIGJpdCBwYXJ0LgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UgaGFuZGxpbmcgaW4gbW1zeXN0ZW0uYy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbmV3IGZ1bmN0aW9ucy9zdHJ1Y3R1cmVzIGRlZmluaXRpb25zLihJIGNvdWxkbid0IGdldCBhbGwKCXRoZSBtYW5pZmVzdCBjb25zdGFudHMgdmFsdWVzIHRoYXQgTVMgd2FzIHJlZmVycmluZyB0byBpbiBpdHMgc3BlY3MuLi4KCWlmIHNvbWVvbmUgaGFzIHRoZW0uLi4pCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgbWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlIGhhbmRsaW5nCglpbiBtbXN5c3RlbS5jIDsgZml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBtYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UKCWhhbmRsaW5nIGluIG1tc3lzdGVtLmMuCglBZGRlZCBXaW45NSBjb21tYW5kIHRvIGhhbmRsZSBjZC1yb20gd2l0aCBib3RoIGRhdGEgYW5kIGF1ZGlvIDsgZml4ZWQKCWJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kIDsgc2hhZG93aW5nIE1DSSBzdGF0dXMgZm9yIGRldmljZXMgdGhhdCBjYW4ndAoJZ2V0IGN1cnJlbnQgc3RhdHVzIDsgZml4ZWQgc3RhdHVzIG5vdCBiZWluZyB1cGRhdGVkIG9uIGNkIGNoYW5nZS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGYWN0b3JpemVkIDE2LzMyIGJpdCBNQ0kgZnVuY3Rpb24gYnkgdXNpbmcgIG1lc3NhZ2UgbWFwcGluZyBmcm9tIDE2Cgl0byAzMiBiaXRzIDsgYWRkZWQgc29tZSBuZXcgcHJvdG90eXBlcyBtY2lTZW5kQ29tbWFuZCwgbWNpU2VuZFN0cmluZywKCW1jaShTZXQvR2V0KVlpZWxkUHJvYyA7IHN0YXJ0ZWQgd3JpdGluZyBtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucyAtIG5vdAoJeWV0IHdvcmtpbmcuIEZpeGVkIHNvbWUgaXNzdWVzIHJlZ2FyZGluZyBhc3luY2hyb25vdXMgTUNJIGNvbW1hbmRzIDsKCWZpeGVkIE1DSV9TWVNJTkZPIGNvbW1hbmQuCgoJKiByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcXVpcmtzLgoKU3VuIE5vdiAyMiAxODoyOTo1MCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb246IF9JTEdldEV4dGVuc2lvbi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIEhLRVlfQ0xBU1NFU19ST09UIGhhbmRsaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVkLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9oZWFkZXIuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9yZWJhci5oLCBpbmNsdWRlL3N0YXR1cy5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgaW5jbHVkZS90b29sdGlwcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFVuaWNvZGUgc3VwcG9ydCAoYXQgbGVhc3QgcGFydGlhbGx5KS4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NvbXBvYmouYywgb2xlL29sZW9iai5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIElPbGVBZHZpc2VIb2xlciBpbnRlcmZhY2UgKHN0aWxsIGEgZHVtbXkpIGFuZCBmaXhlZAoJQ3JlYXRlT2xlQWR2aXNlSG9sZGVyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBnbG9iYWwgc3ViY2xhc3NpbmcgYXRvbSwgdXNlZCBieSB0b29sdGlwcyBhbmQgdXBkb3duIChub3QgeWV0KS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGxheW91dCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIEltYWdlTGlzdF9Mb2FkSW1hZ2UoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgQ01FTV9TRVRJVEVNMzJBIGFuZCBtZXNzYWdlIGZvcndhcmRpbmcgdG8gY29tYm9ib3guCgoJKiBvbGUvbW9uaWtlci5jLCByZWxheTMyL29sZTMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlSXRlbU1vbmlrZXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gbmFtZXMgYW5kIGltcGxlbWVudGVkIERQQV9NZXJnZQoJcGFydGlhbGx5LgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglFbmFibGVkIGRvdWJsZSBjbGljayBmb3IgYnV0dG9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgY29tbWFuZCBhbmQgcmV0dXJuIGNvbnN0YW50cyB1c2VkIGJ5IFdNX05PVElGWUZPUk1BVC4KCgkqIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3Blbi5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlZCBEQ19TZXR1cEdDIGZ1bmN0aW9ucyB0byBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYy4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMgdG8gZ2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlIHRvIGEgc2Vuc2libGUgdmFsdWUuCglUaGFua3MgdG8gUGFibG8uCgoJKiBBTk5PVU5DRSwgREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1JFQURNRS5kb2N1bWVudGF0aW9uLCBkb2N1bWVudGF0aW9uL2hvdy10by1wb3J0LCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJTWlzY2VsbGFuZW91cyBzbWFsbCBmaXhlcy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFdpbjE2IGltcGxlbWVudGF0aW9uIGZvciBHZXRSZWdpb25EYXRhKCkuCgoJKiBvbGUvdHlwZWxpYi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglFbmhhbmNlZCBPQUJ1aWxkVmVyc2lvbigpIHRvIHJldHVybiBkaWZmZXJlbnQgdmVyc2lvbiB2YWx1ZXMgZm9yCglkaWZmZXJlbnQgd2ludmVycy4KCgkqIG1zZG9zL2ludDIxLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIElOVDIxX1BhcnNlRmlsZU5hbWVJbnRvRkNCKCkgYW5kIHNvbWUgb3RoZXIgdGhpbmdzIHRvIGdldAoJQ09NTUFORC5DT00gd29ya2luZy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBtaXNzaW5nIGVudHJ5IGZvciBHZXROdW1iZXJGb3JtYXRXLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hlY2tpbmcgZm9yIE5VTEwtcG9pbnRlci4KCgkqIG9sZS9ubHMvZnJhLm5scywgb2xlL25scy9mcmIubmxzLCBvbGUvbmxzL2ZyYy5ubHMsIG9sZS9ubHMvZnJsLm5sczoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglCZXR0ZXIgT0xFIHN1cHBvcnQgaW4gRnJlbmNoIGxhbmd1YWdlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBDcmVhdGVQcm9jZXNzMzJXLgoKCSogd2luZG93cy9ldmVudC5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglRdWV1aW5nIG9mIGRlZmVycmVkIEV4cG9zZSBldmVudHMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTEJfR0VUVEVYVDogSGFuZGxlIHBhc3NlZCBOVUxMIGJ1ZmZlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ0JfR0VUVEVYVDogVXNlIGxwQnVmZmVyIGluc3RlYWQgb2YgbHBUZXh0IGZvciBMQl9HRVRURVhUMzIsIGhhbmRsZSAwCglieXRlIE5VTEwgYnVmZmVyLgoKCSogb2xlL25scy9mcnMubmxzLCBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR1cm4gbWVnYSBkb3VibGUgc3dpdGNoIGludG8gc3RhdGljIHRhYmxlIChyZWR1Y2VzIGNvbXBpbGUgdGltZSkuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDogQWRkZWQgUm9iZXJ0IFJpZ2dzLgoKCSogaW5jbHVkZS9kM2QuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCWluY2x1ZGUgZGRyYXcuaCwgcXVlc3Rpb25hYmxlIGZpeCBmb3IgcXVlc3Rpb25hYmxlIHN0cnVjdC91bmlvbgoJY29uc3RydWN0IGluIE1TJ3MgRDNEVkVDVE9SIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJTW9yZSBmbGFncyAoRGlyZWN0WCA1LjIpLCBEaXJlY3RTb3VuZDNETGlzdGVuZXIgYW5kCglEaXJlY3RTb3VuZDNEQnVmZmVyIHN0cnVjdHVyZXMsIGluY2x1ZGUgc29tZSByZXF1aXJlZCBmaWxlcwoJKHdpbmRvd3MuaCwgY29tcG9iai5oLCBhbmQgZDNkLmgpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCURpcmVjdFNvdW5kM0RMaXN0ZW5lciBhbmQgRGlyZWN0U291bmQzREJ1ZmZlciBzdHVicywgbmV3IG1peGVyIGNvZGUsCglwcmltYXJ5IGJ1ZmZlciBpcyBpbXBsZW1lbnRlZCBjbG9zZXIgdG8gd2hhdCB0aGUgU0RLIGRvY3Mgc3BlY2lmeSwKCW90aGVyIFNESyBkb2N1bWVudGVkIGJlaGF2aW91ciBlbmZvcmNlZC4gQ29tcGxldGVkIHRoZSBkZXZjYXBzIGxpc3QuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgc3RyZGF0ZSwgc3RydGltZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHR5cG8gaW4gU1VuTWFwTFNfSVBfRUJQXzggbGVhZCB0byBzdGFjayBjb3JydXB0aW9uLgoKCSogbWlzYy9jb21tLmM6IENsaWZmIFdyaWdodCA8Y2xpZmZAc25pcGU0NDQub3JnPgoJRml4ZWQgYSBtYXNrIHNldCwgYW5kIG90aGVyIHBhcml0eSBzZXR0aW5nIGJ1Z3MgZm9yIHNlcmlhbCBwb3J0cy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaDogVmFzdWRldiBNdWxjaGFuZGFuaSA8dmFzdUB0ZWlsLnNvZnQubmV0PgoJQWRkZWQgQlNESSBzaWdjb250ZXh0IGRlZmluaXRpb25zLgoKCSogd2luZG93cy9jbGFzcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgdHlwby4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgbm93IHVzZWxlc3MgUkVMQVlfU2hvd0RlYnVnbXNnc1JlbGF5IGNoZWNrLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHJlbG9jYXRlIHRoZSBwb2ludGVycyBpbiB0aGUgSU1BR0VfVEhSRUFEX0xPQ0FMX1NUT1JBR0UKCWRpcmVjdG9yeSwgZm9yIHRoZXkgc2VlbSB0byBiZSByZWxvY2F0ZWQgYnkgdGhlIHN0YW5kYXJkIHJlbG9jYXRpbmcKCW1lY2hhbmlzbS4gKEV4cGxpY2l0bHkgY2hlY2tlZCBvbmUgcHJvZ3JhbSB1c2luZyBpdCkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhdGhBZGRCYWNrc2hsYXNoLCBQYXRoUmVtb3ZlQmFja3NsYXNoOiBhcmd1bWVudCBpcyBub3QgY29uc3RhbnQuCgoJKiB3aW5kb3dzL3dpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIHduZFB0ciBmb3IgTlVMTC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmx0RmFzdDogSG9ub3IgbFBpdGNoLCBMb2NrL1VubG9jayBzdXJmYWNlcyAoeGxpYiBuZWVkcyB1bmxvY2sgdG8gZHJhdykuCgoJKiBtaXNjL3Nwb29sZXIuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIE1ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGxvYWRlci9tYWluLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVRha2VzIHByaW50IHNwb29sZXIgZnVuY3Rpb25zIG91dCBvZiB3aW4xNmRydi4KCUFsbG93cyB0aGUgUG9zdFNjcmlwdCBkcml2ZXIgdG8gZ28gaW50byBsaWJ3aW5lLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHR3byB1bmRvY3VtZW50ZWQgR0RJIHJvdXRpbmVzLCBTZXRNYWdpY0NvbG9ycyBhbmQKCVNldFNvbGlkQnJ1c2guIFRoaXMgYWxsb3dzIFdpbjk4IG5hdGl2ZSBVU0VSIHRvIHN0YXJ0IHVwLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglGaXhlZCB0aGUgREdBIGRldGVjdGlvbiBjb2RlIGluIGRkcmF3LiBZb3UgZG9uJ3QgbmVlZCByb290IGFjY2VzcywKCWhhdmluZyByK3cgYWNjZXNzIHRvIC9kZXYvbWVtIGlzIGVub3VnaC4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3dpbmcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXJlY3REcmF3IHN0YXR1cyB1cGRhdGVkLgoJVXNlIGNvb3BlcmF0aXZlIHdpbmRvdyBmb3IgZHJhd2luZyBpbiB4bGliIGltcGxlbWVudGF0aW9uIGlmIHBvc3NpYmxlLgoJU2xpZ2h0bHkgcmVzdHJ1Y3R1cmVkIElEaXJlY3REcmF3U3VyZmFjZTo6Qmx0IHNvIGl0IGRvZXNuJ3QgY3Jhc2guCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglNaWNybyBwYXRjaCBmb3IgQWx0R3Iga2V5IG9uIGdlcm1hbiBrZXlib2FyZHMuCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlcyBlcnJvciBoYW5kbGluZyAoU2V0TGFzdEVycm9yKCkgYW5kIHJldHVybiB2YWx1ZSkuCgoJKiBvYmplY3RzL3RleHQuYywgaW5jbHVkZS93aW5kb3dzLmg6IEdhZWwgZGUgQ2hhbGVuZGFyIDxnYWVsQGxpbXNpLmZyPgoJUGFydGlhbGx5IGNvbXBsZXRlIEdldFRleHRDaGFyc2V0SW5mbyBhbmQgY29ycmVjdHMgcmV0dXJuIHZhbHVlcyBmb3IKCXRoaXMgZmFtaWx5IG9mIGZ1bmN0aW9ucy4KClN1biBOb3YgMTUgMTg6MTI6MTIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9jb21wb2JqLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnIGZpeC4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCByZXRyaWV2YWwgb2YgaW52YWxpZCBwYWxldHRlIGRhdGEgaW4gR2V0RElCaXRzKCkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJQWxsb3cgU1dQX0hJREVXSU5ET1cgdG8gYmUgY2FsbGVkIG9uIHdpbmRvd3MgdGhhdCBhcmUgYWxyZWFkeSBoaWRkZW4KCXdpdGhvdXQgdW5tYXBwaW5nIHRoZW0gYWdhaW4uCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBQaW0gQm9sbGVuIDxwaW1AZ2ltbGkuaWFlaHYubmw+CglGaXhlZCBzY3JvbGwgYnVnIGluIFNjcm9sbFdpbmRvd0V4MzIgd2hpY2ggY2F1c2VkIGdhcmJhZ2Ugb24gc2NyZWVuCglvdXRzaWRlIGRlc2t0b3Agd2luZG93IHdpdGggZ3R3aW4uZXhlIChEdXRjaCBiYW5raW5nIHByb2dyYW0pLgoKCSogbG9hZGVyL21haW4uYywgbWVtb3J5L2F0b20uYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL0F0dGljL2F0b20uaCwgaW5jbHVkZS9nbG9iYWwuaDoKCVNtYWxsIGF0b20gZml4ZXMuCgoJKiBvYmplY3RzL2RpYi5jOiBEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYnVnIGluIFN0cmV0Y2hESUJpdHMzMiAod3Jvbmcgb3JpZ2luKS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194c2htLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCVNvbWUgY29ycmVjdGlvbnMgdG8gdGhlIGhhbmRsaW5nIG9mIG9mZi1zY3JlZW4gYnVmZmVycy4KCUNvcnJlY3Rpb24gdG8gdGhlIEVudW1EaXNwbGF5TW9kZXMgZnVuY3Rpb24uCglBZGRlZCBYU2htIHN1cHBvcnQgdG8gWGxpYiBkcml2ZXIuCglPcGVuIGEgRGlyZWN0WCB3aW5kb3cgZXZlbiB3aGVuIHVzaW5nIHRoZSBER0EgZHJpdmVyLgoKCSogaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBtaXNjL3NoZWxsLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNsZWFudXAsIHNtYWxsIGZpeGVzLCBhIGZldyBuZXcgc3R1YnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUhhbmRsaW5nIGZvciBsaXN0dmlld3N0eWxlcywgdmlldyBtb2RlIGJ1dHRvbnMgaW4gZmlsZWRpYWxvZ3MKCWVuYWJsZWQgYW5kIGhhbmRsZWQuCglOZXcgbGlzdHZpZXcgY29sdW1ucyBTaXplLCBUeXBlLCBNb2RpZmllZCBmb3IgcmVwb3J0dmlldwoJY3JlYXRlZCBhbmQgaGFuZGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9pZl9tYWNyb3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUsIHdyYXBwZXIgZm9yIElTaGVsbEJyb3dzZXIgY2xhc3MuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLCBzb21lIGhlbHBlciBmdW5jdGlvbnMgZm9yIGljb24gY2FjaGUuCglJbXBsZW1lbnRlZCBFeHRyYWN0SWNvbkV4OyBtb3ZlZCBTSE1hcFBJRExUb1N5c3RlbUltYWdlTGlzdEluZGV4LAoJU2hlbGxfR2V0SW1hZ2VMaXN0IGluIHRoaXMgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkOiBJTElzRXFhbCwgSUxGaW5kQ2hpbGQsIF9JTEdldEZpbGVEYXRlLCBfSUxHZXRGaWxlU2l6ZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkTGlicmFyeUV4OiBzaG93IGEgd2FybmluZyB3aGVuIGNhbGxlZCB3aXRoIHVuaW1wbGVtZW50ZWQgcGFybS4KCgkqIG1pc2NlbXUvaW5zdHIuYzogQ2xlYW5lZCB1cCBhIGJpdC4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjZW11L2luc3RyLmMsIHRvb2xzL2J1aWxkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNsZWFuIGludmFsaWQgc2VsZWN0b3JzIG9uIHRoZSBwb3AgJXhzIGZyb20gdGhlIFNUQUNLRlJBTUUgaXRzZWxmCglpbnN0ZWFkIG9mIHVzaW5nIGxpbmtlZCBsaXN0IGhhY2suCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlZCBnZXRzIG1lc3NhZ2UuCgoJKiBvbGUvbmxzL3RoYS5ubHM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUFkZGVkIFRoYWkgbmxzLXJlc291cmNlcy4KCgkqIG9sZS9ubHMvUkVBRE1FLCBvbGUvbmxzL2N6ZS5ubHMsIG9sZS9ubHMvZXNlLm5scywgb2xlL25scy9lc2cubmxzLCBvbGUvbmxzL2VzdC5ubHMsIG9sZS9ubHMvZXVxLm5scywgb2xlL25scy9mb3MubmxzLCBvbGUvbmxzL2hydi5ubHMsIG9sZS9ubHMvaHVuLm5scywgb2xlL25scy9pc2wubmxzLCBvbGUvbmxzL25vci5ubHMsIG9sZS9ubHMvcGxrLm5scywgb2xlL25scy9wdGcubmxzLCBvbGUvbmxzL3JvbS5ubHMsIG9sZS9ubHMvc2x2Lm5scywgb2xlL25scy9zdmUubmxzLCBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbm5scy5oOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglEaXNwbGF5IHRoZSBsYW5ndWFnZSBpZCBmb3IgIlhYWCBub3Qgc3VwcG9ydGVkIGZvciB5b3VyIGxhbmd1YWdlIgoJbWVzc2FnZXMuCglBZGRlZCBhbGwgbGFuZ3VhZ2VzIGFuZCBzdWJsYW5ndWFnZXMgZm9yIGxhbmd1YWdlcyBzdXBwb3J0ZWQgaW4KCXJlc291cmNlcy9zeXNyZXNfWHguCgoJKiBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUFkZCBzdHVicyBmb3IgR2V0UnVubmluZ09iamVjdFRhYmxlMzIgYW5kIE9sZVJlZ0dldFVzZXJUeXBlLgoKCSogb2xlL21vbmlrZXIuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJRW5zdXJlIHRoYXQgQ3JlYXRlRmlsZU1vbmlrZXIgZnVuY3Rpb25zIGRvbid0IHJldHVybiBhIGJvZ3VzIG1vbmlrZXIKCW9iamVjdCBvbiBmYWlsdXJlLgoKCSogaW5jbHVkZS9jbGFzcy5oLCB3aW5kb3dzL2NsYXNzLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUFkZGVkIGNvZGUgdG8gbWFuYWdlIEFzY2lpIGFuZCBXaWRlQ2hhciBjbGFzcyBuYW1lcywgYW5kIHRvIHJldHVybiB0aGUKCW5hbWVzIGluIHRoZSBHZXRDbGFzc0luZm8gZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IENvbnN0YW50aW5lIFNhcHVudHpha2lzIDxjc2FwdW50ekBzdGFuZm9yZC5lZHU+CglGaXggdG8gTGludXggSVBYIHNvIGNvbXBpbGVzIG9uIG5vbi1saW51eCBwbGF0Zm9ybXMuCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPd24gWDExIGVycm9yaGFuZGxlciB0byBsb2NhdGUgWDExIGVycm9ycy4gVXNlZnVsIG9ubHkgd2l0aCAtc3luYy4KClNhdCBOb3YgMTQgMTg6NTk6MzAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmRvd3MvZGVmd25kLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdhcm5pbmdzLCBzb21lIG9ubHkgdmlzaWJsZSB3aXRoIC1Xc3RyaWN0LXByb3RvdHlwZXMgb3IgLXBlZGFudGljLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgaWYxNjMyL2Rpc3BsYXkuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgWDExIG1vdXNlIGN1cnNvciBoYW5kbGluZyB0byB0aGUgRElTUExBWSBkcml2ZXIuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIGZpeGVzIHRvIFdpbmUgc3RhcnR1cC90ZXJtaW5hdGlvbiBzZXF1ZW5jZSB3aXRoIG5hdGl2ZSBVU0VSLgoJRG8gbm90IGNhbGwgYnVpbHQtaW4gVVNFUiBzaWduYWwgaGFuZGxlciB3aGVuIHVzaW5nIG5hdGl2ZSBVU0VSLgoKCSogZGVidWdnZXIvYnJlYWsuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL3Rhc2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAtZGVidWcgZGlkbid0IHdvcmsgYW55bW9yZSBhZnRlciB0aGUgbGFzdCBzdGFydHVwIHNlcXVlbmNlIHBhdGNoLgoKCSogb2xlL2NvbXBvYmouYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGxpc3QgaW5zZXJ0aW9uIGJ1ZyBpbiBDb0xvYWRMaWJyYXJ5KCkuCgoJKiBpZjE2MzIvd3Byb2NzLnNwZWMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy92eGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3R1YnMgZm9yIHNldmVyYWwgVnhEcyAvIGludGVycnVwdHMuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU2hvdWxkIGdldCB3aW4xNmRydiBBYm9ydFByb2Mgd29ya2luZy4gSG9wZWZ1bGx5LgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIEdldEtleWJvYXJkTGF5b3V0TmFtZTE2IHRvIHdpbmRvd3MvaW5wdXQuYy4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgZGVjbGFyYXRpb25zIGZyb20gaW1hZ2VobHAuaCB0byBjb21tb24gaW5jbHVkZSBmaWxlcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvdGhyZWFkLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgaW1wbGVtZW50YXRpb25zIGZvciBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCkgYW5kCglJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgpLgoKCSogd2luMzIvY29uc29sZS5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGEgZmV3IG9mIHRoZSBtYW55IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVtdWxhdGUgIm1vdiBjcjQsZWF4IiAodG9tYnJhaWRlciAzIGRlbW8pLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZW51bWVyYXRlIEQzRCBkZXZpY2VzIHdlIGNhbid0IGhhbmRsZSBhbnl3YXkuCglSZXR1cm4gYml0bWFza3MgZm9yIGhpL3RydWVjb2xvciBkZXB0aHMgaW4gRW51bURpc3BsYXlNb2Rlcy4KCgkqIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL3Nub29wLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BlZWQgdXAgcmVsYXkzMiwgc25vb3AxNiBhbmQgc25vb3AzMiBpbmNsdWRlL2V4Y2x1ZGVzIGJ5IGRvaW5nIHRoZW0KCWp1c3Qgb25jZSBhdCBjcmVhdGlvbiB0aW1lLgoKCSogcmVsYXkzMi9vbGUzMi5zcGVjLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlMi5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBDb1Jldm9rZUNsYXNzT2JqZWN0IGFuZCBPbGVTZXRDbGlwYm9hcmQuCgoJKiB3aW5kb3dzL3dpbi5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWluZC5udT4KCUVudW1UYXNrV2luZG93czE2OiBCYXNpbmcgdGhlIHNlbGVjdGlvbiBvbiBhIHdpbmRvdydzIHRhc2sgaXMgbm90IG9ubHkKCW1vcmUgc3RyYWlnaHRmb3J3YXJkIHRoYW4gY29tcGFyaW5nIG1lc3NhZ2UgcXVldWVzLCBpdCBhbHNvIHdvcmtzCgliZXR0ZXIgZm9yIFdpbjMyIGFwcGxpY2F0aW9ucy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUNoYW5nZWQgc29tZSBvZiB0aGUgbWVzc2FnZSBjbGFzc2VzLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJU3BlY2lhbCBjYXNlIGhhbmRsaW5nIG9mIDogU2hpZnQgKyBhcnJvdywgc2hpZnQgKyBob21lLCAuLi4KCVggcmV0dXJucyBhIGNoYXIgZm9yIGl0LCBidXQgV2luZG93cyBkb2Vzbid0LiBJZ25vcmUgWCBjaGFyLgoJQWxzbyBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CglTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJQnVnZml4ZXMgZm9yIElQWCBjb2RlIGFuZCBwcmVsaW1pbmFyeSBncm91bmR3b3JrIGZvciBvdGhlciBhZGRyZXNzCglmYW1pbHkgc3VwcG9ydC4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKENvR2V0Q2xhc3NPYmplY3QpIG9uZSBtaXNzaW5nIENBTExCQUNLLCBleHRyZW1lbHkgc2ltcGxpZmllZCBjbHNpZAoJbG9va3VwIChSZWdpc3RyeSBpcyBjYXNlIGluc2Vuc2l0aXZlKS4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIvYWR2YXBpLmMsIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnM6IFNldFNlcnZpY2VTdGF0dXMsIFJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyQS9XLAoJU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXIzMkEvVywgUnRsU3lzdGVtVGltZVRvTG9jYWxUaW1lLAoJUnRsVGltZVRvVGltZUZpZWxkcy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBHZXROdW1iZXJGb3JtYXQzMlcuCgoJKiBtaXNjL2NydGRsbC5jOiBEYXZpZCBBLiBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglnZXRzKCkgZml4ZXMuCgoJKiBvbGUvbmxzL3J1cy5ubHM6IEFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJRml4IFNDT1VOVFJZLCBTTkFUSVZFQ1RSWU5BTUUsIFNBQkJSRVZEQVlOQU1FMzsgY2hhbmdlIHNvbWUgU01PTlRITkFNRSoKCXRvIGJlIGluIG5vbWluYXRpdmUgY2FzZS4KCgkqIHdpbmRvd3MvcXVldWUuYzogUGVyIMVuZ3N0cvZtIDxwYW5nQG1pbmQubnU+CglGaXhlZCBTZXRNZXNzYWdlUXVldWUzMiB0byByZXR1cm4gRkFMU0UsIG5vdCBUUlVFLCB3aGVuIGNhbGxlZCB3aXRoCglhbiBpbnZhbGlkIHNpemUgcGFyYW1ldGVyLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIEdldENhcHMsIGNoYW5nZWQgUGxheSBhbmQgU3RvcCBoYW5kbGluZwoJb2YgcG9zaXRpb25zIGluZGV4ZXMsIHN1cHByZXNzZWQgd2FybmluZ3MuCgoJKiBtZW1vcnkvbG9jYWwuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIFRSQUNFIGZ1bmN0aW9uLgoKCSogQVVUSE9SUywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIGJ1ZyBpbiBEaXJlY3REcmF3U3VyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIGRyaXZlcgoJYmFzZWQgdXBvbiBYbGlsYi4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJV2luZSBrZXlib2FyZCBhbmQgbW91c2UgaGF2ZSBub3cgdGhlaXIgb3duIFVJRHMuCgoJKiBvYmplY3RzL2JydXNoLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGFsbG9jYXRpb24gc2l6ZSBpbiBDcmVhdGVESUJQYXR0ZXJuQnJ1c2gqLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTm92ICA4IDE2OjQ0OjQxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGtleXN0cm9rZSBhY2NlbGVyYXRvcnMgaW4gZGlhbG9ncyB3aGljaCBoYXZlIGNvbnRyb2xzIGNvbnRhaW5pbmcKCW90aGVyIGNvbnRyb2xzIGFzIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3dpbnByb2MuaCwgbWlzYy9jb21tZGxnLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXM6IExCXy9DQl8vRU1fIG1lc3NhZ2VzIGZvciBnZXR0aW5nL3NldHRpbmcgdGV4dCBhbmQgYSBidWcgaW4KCTE2LT4zMiBiaXQgY29udmVyc2lvbi4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBDcmVhdGVESUJTZWN0aW9uIGZyb20gc2VnIGZhdWx0aW5nIHdoZW4gb25lIGRpbWVuc2lvbiBvZgoJc2VjdGlvbiBpcyAwLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCVN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglTdXBwb3J0IGZvciBJUFggbmV0d29ya2luZyB2aWEgd2luc29jayB1bmRlciBMaW51eC4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgc3R1YiBmb3IgU3RhcnREb2NBIGFuZCBFbmREb2MuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUphbWVzIFN1dGhlcmxhbmQgPEphbWVzU3V0aGVybGFuZEBnbXguZGU+CglNb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZXRDdHJsSGFuZGxlcigpIGZ1bmN0aW9uIChhbmQgdGhlCglyZWxhdGVkIGNvbnNvbGUgZnVuY3Rpb25zKS4KCgkqIG9iamVjdHMvYnJ1c2guYywgcmVsYXkzMi9nZGkzMi5zcGVjOiBKZWZmIEpvaGFubiA8ampvaGFubkBraXZhLm5ldD4KCUFkZGVkIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0IChHREkzMi4zNSkgd2l0aCBtaW5vciBkb2N1bWVudGF0aW9uCgl1cGRhdGVzLgoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmgsIG1zZG9zL2lvcG9ydHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2ltdWxhdGUgdGhlIFZHQSB2ZXJ0aWNhbCByZWZyZXNoLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdXBwb3J0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBpbiBCbGl0IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgZGV2aWNlIHR5cGUgY29uc3RhbnRzIGFuZCB1c2VkIHRoZW0gaW4gZGV2aWNlIGVudW1lcmF0aW9uCglmdW5jdGlvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQVBJIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IFJlZ0VudW1LZXlFeCwgUmVnRW51bVZhbHVlIGFuZAoJUmVnUXVlcnlJbmZvS2V5IHRha2VzIHRoZSBzaXplIG9mIHRoZSBidWZmZXJzIGFzIGNoYXJhY3RlcnMuCgoJKiBvbGUvY29tcG9iai5jOiBBZGRlZCBtaXNzaW5nICNpbmNsdWRlICJjb25maWcuaCIKCgkqIEFVVEhPUlMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgb2xlL2NvbXBvYmouYzoKCUp1c3RpbiBCcmFkZm9yZCA8anVzdGluQHVrYW5zLmVkdT4KCVJlcGxhY2VzIENvQ3JlYXRlR3VpZCBzdHViIHdpdGggYW4gaW1wbGVtZW50YXRpb24gb2YgRENFJ3MgVVVJRAoJc3BlY2lmaWNhdGlvbi4gQWxzbyByZW1vdmVzIHNvbWUgdW5uZWNlc3NhcnkgY29kZSBmcm9tIFN0cmluZ0Zyb21DTFNJRC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGFuIGV4dGVybiAiQyIgc2FmZWd1YXJkLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luZG93cy5oLCB3aW5kb3dzL2lucHV0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZHMgR2V0RXhpdENvZGVQcm9jZXNzCgktIGNvcnJlY3RzIHRoZSByZXR1cm4tdHlwZSBvZiBHZXRLZXlTdGF0ZQoJLSBjb3JyZWN0cyB0aGUgd2luZWxpYiBkZWZpbml0aW9uIG9mIElzRGlhbG9nTWVzc2FnZQoJLSBhZGRzIHdpbmVsaWIgZGVmaW5pdGlvbnMgZm9yIFByaW50RGxnCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFeHRTZWxlY3RDbGlwUmduIGZpeDogUkdOX0RJRkYgZGlkIG5vdCB3b3JrLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3IGlucHV0IGV2ZW50IGhhbmRsaW5nLgoKCSogaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvaW5wdXQuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvaW5wdXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVVNFUi1zaWRlIHBhcnQgb2YgaW5wdXQgZXZlbnQgaGFuZGxpbmc6IGNvbnRhaW5zIGltcGxlbWVudGF0aW9uIG9mCglrZXliZF9ldmVudCBhbmQgbW91c2VfZXZlbnQsIGFuZCBVU0VSLXJlbGF0ZWQgY29kZSByZW1vdmVkIGZyb20KCXdpbmRvd3MvZXZlbnQuYyBhbmQgd2luZG93cy9rZXlib2FyZC5jLgoKCSogd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBESVNQTEFZLkRSViByZW1vdmVkIGZyb20ga2V5Ym9hcmQuYy4KCgkqIGlmMTYzMi9tb3VzZS5zcGVjLCBpbmNsdWRlL21vdXNlLmgsIHdpbmRvd3MvbW91c2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgTU9VU0UuRFJWIChjb250YWlucyBzb21lIGNvZGUgdGFrZW4gZnJvbQoJd2luZG93cy9ldmVudC5jKS4KCgkqIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpbmNsdWRlL2tleWJvYXJkLmgsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgS0VZQk9BUkQuRFJWIChjb2RlIG1vc3RseSB0YWtlbiBmcm9tIHByZXZpb3VzCgl3aW5kb3dzL2tleWJvYXJkLmMpLgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVhbGx5ICpkbyogc3dpdGNoIHRvIHRoZSBpbml0aWFsIHRhc2sncyBzdGFjay4KCUNhbGxMYXJnZVN0YWNrIG1lY2hhbmlzbSByZS1lbmFibGVkLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBGaWxlcy4gQWRkZWQgJ2RhdGUgYW5kIHRpbWUgcGlja2VyJyBhbmQgJ21vbnRoIGNhbGVuZGFyJyBjb250cm9sCglkdW1taWVzLiBUaGV5IGFyZSB1c2VkIGJ5IE91dGxvb2sgRXhwcmVzcy4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcmVhdGVCaW5kQ3R4KCkgYW5kIGFkZGVkIG1pc3NpbmcgQ29HZXRDbGFzc09iamVjdCgpCgl0byAqLnNwZWMgZmlsZS4gTWFrZXMgSW50ZXJuZXQgRXhwbG9yZXIgNC4wMSBoYXBweSA7LSkKCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUxpdHRsZSBpbXByb3ZlbWVudC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHByZWxpbWluYXJ5IGhpdCB0ZXN0aW5nLiBNYWtlcyByZWdlZGl0LmV4ZSBoYXBweSA7LSkKCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRvY3VtZW50YXRpb24gYW5kIGZpeGVkIHR5cG9zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgRHJhd1N0YXR1c1RleHQzMkFXKCkgYW5kIENyZWF0ZVN0YXR1c1dpbmRvdzMyQVcoKS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRpc3BsYXkgYW5kIGxheW91dCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IEZpbGVzLiBBZGRlZCAnZGF0ZSBhbmQgdGltZSBwaWNrZXInIGFuZCAnbW9udGggY2FsZW5kYXInIGNvbnRyb2wKCWR1bW1pZXMuIFRoZXkgYXJlIHVzZWQgYnkgT3V0bG9vayBFeHByZXNzLgoKU2F0IE5vdiAgNyAxMjo1NjozMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oOgoJQ2hhcmxlcyBTdXByaW4gPGNzdXByaW5AbHlueC5kYWMubmV1LmVkdT4KCUFkZGVkIHN0dWJzIGZvciBTZXRXaW5NZXRhRmlsZUJpdHMgYW5kIEdldEVuaE1ldGFGaWxlUGFsZXR0ZUVudHJpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU3RvcCBYMTFEUlZfUm91bmRSZWN0IGNhbGxpbmcgWERyYXdBcmMgd2l0aCAtdmUgd2lkdGgvaGVpZ2h0IHBhcmFtcwoJd2hpY2ggaXQgZGlkIGlmIGVpdGhlciBlbGxpcHNlIGRpbWVuc2lvbiB3YXMgemVyby4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJT3B0aW1pemUgUm91bmRSZWN0MzIgdG8gY2FsbCBSZWN0YW5nbGUzMiBpZiBlaXRoZXIgZWxsaXBzZSBkaW1lbnNpb24KCWlzIHplcm8uCgoJKiByZWxheTMyL21wci5zcGVjLCBtaXNjL25ldHdvcmsuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWIgV05ldEVudW1DYWNoZWRQYXNzd29yZHMuCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFkZSB0aGlzIGZpbGUgRE9TTU9EIGZyaWVuZGx5LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVbmlmaWVkICJObyBpbXBsZW1lbnRhdGlvbiBmb3IuLi4iIHdhcm5pbmdzLgoKCSogd2luMzIvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW9ub2RlYmcudnhkIHVzZWQgYnkgc29tZSBPcmlnaW4gcHJvZ3JhbXMgaW1wbGVtZW50ZWQuCgoJKiBvYmplY3RzL2JpdG1hcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmFpbCBpZiBsZXNzIHRoZW4gb25lIGVudGlyZSBsaW5lIHJlcXVlc3RlZCBpbiBHZXRCaXRtYXBCaXRzMzIuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIFdNX0dFVERMR0NPREUgaGFuZGxpbmcgaW4gKFVuKU1hcE1zZzMyQXRvMTYuCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL29sZS5oLCBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgQ29Mb2FkTGlicmFyeSwgQ29GcmVlQWxsTGlicmFyaWVzLAoJQ29GcmVlVW51c2VkTGlicmFyaWVzLCBDb0ZyZWVMaWJyYXJ5LgoJRml4ZWQgbWlzc3BlbGxpbmcgb2YgQ29VbmluaXRpYWxpemUuCgoJKiBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglGaXhlcyBmb3Igb3RoZXIgbGFuZ3VhZ2VzLgoKRnJpIE5vdiAgNiAxNzozNjoxMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJRml4IHdpZGUgY2hhcmFjdGVyIGZ1bmN0aW9ucyB0byByZXR1cm4gY2hhcmFjdGVyIGNvdW50IGluIGNoYXJhY3RlcgoJcXVhbnRpdGllcyBub3QgYnl0ZSBxdWFudGl0aWVzLiAgTWFrZSBSZWdRdWVyeUluZm9LZXkgYW5kCglSZWdRdWVyeUluZm9LZXkgYmVoYXZlIGNvcnJlY3RseSBpbiB3aW45NSBtb2RlLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hhbmdlZCBtb3VzZSBidXR0b24gbWFwcGluZyBhbmQgY2hlY2sgc2l6ZSBvZiByZXR1cm4gYnVmZmVyLgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRXh0U2VsZWN0Q2xpcFJnbigpIHdpdGggUkdOX0NPUFkgY29waWVzIHRoZSB3cm9uZyByZWdpb24uCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGFuIGVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBGSUxFX1NoYXJlRGVueS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29sYXJpcyByZWRlZmluZXMgRVJSIGFuZCBDUywgZml4ZWQgb2NjdXJhbmNlcy4KCVNvbGFyaXMgaGFzIFRSQVBOTyBpbiBpdHMgc2lnY29udGV4dCwgYWRkZWQgdG8gc2lnX2NvbnRleHQuaAoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21taW8uYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSBtbWlvU2V0QnVmZmVyIGNhbGxhYmxlIGZyb20gMTYgYW5kIDMyIGJpdCBjb2RlLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIGFyZyB0eXBlLgoKCSogb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmVkIFgxMSBESUIgc3R1ZmYgdG8geDExZHJ2LgoKCSogd2luMzIvY29kZV9wYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUaGUgQVBJIGZvciBXaWRlQ2hhclRvTXVsdGlCeXRlIHNheXMgdGhhdCB0aGUgc3JjLXN0cmluZyBoYXMgb25seSB0byBiZQoJdHJlYXRlZCBhcyBOVUxMLXRlcm1pbmF0ZWQgaWYgc3JjbGVuIGlzIC0xLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3dpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHN1cmUgQ29uZmlndXJlTm90aWZ5IGlzIHByb2Nlc3NlZCBiZWZvcmUgRXhwb3NlLCBkZWZlcnJpbmcgdGhlCglFeHBvc2UgZXZlbnQgaWYgbmVjZXNzYXJ5LCB0aHVzIHdvcmtpbmcgYXJvdW5kIGEgV00gZmxhdyB3aXRoIHZpcnR1YWwKCWRlc2t0b3Agc2Nyb2xsaW5nIGluIC1tYW5hZ2VkIG1vZGUuCgoJKiByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglUcmFuc2xhdGVkIGluIEZyZW5jaCAobm90IHNvIGdvb2QgYW55aG93KSBtZXNzYWdlIGZvciB0aGUgbWFyayBvbgoJc3lzdGVtIG1lbnUuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHRoZSBkZWZhdWx0IGZyb20gMCB0byAweDQwOSAoZW5nLXVzKS4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIG1pc3NpbmcgV0lOQVBJcy4KCgkqIGluY2x1ZGUvaW50ZXJmYWNlcy5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIG9uZSB3cm9uZyBwYXJhbWV0ZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCAtLWRpc2FibGUtbGliLgoKVGh1IE5vdiAgNSAxMDozMzoxOCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbnN0YW50cyBmb3IgY29udHJvbHMgaW4gY29tbW9uIGRpYWxvZ3MuCgpXZWQgTm92ICA0IDE4OjA4OjMzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NydGRsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgpTdW4gTm92ICAxIDE5OjI3OjI0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wb3MuYywgbWlzYy9jb21tZGxnLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy93aW5zb2NrLmMsIG1pc2NlbXUvaW5zdHIuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21kaS5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBtZW1vcnkvaGVhcC5jOgoJSmVzcGVyIFNrb3YgPGpza292QGN5Z251cy5jby51az4KCWVnY3MgJ2FtYmlndW91cyBlbHNlJyB3YXJuaW5ncyBmaXhlcy4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldCByaWQgb2YgdGhlIHJlZGVmaW5pdGlvbiBvZiBNQVhfUEFUSCBhbmQgbW92ZSBQUk9DRVNTRU5UUlkzMgoJZGVmaW5pdGlvbiB0byB0b29saGVscC5oLgoKCSogd2luZG93cy93aW4uYywgaW5jbHVkZS9wZV9pbWFnZS5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSdW4gV2luZWxpYiBhcHBsaWNhdGlvbnMgYXMgMzItYml0IHByb2Nlc3NlcyBpbiB0aGUgaW5pdGlhbCB0YXNrLgoJU2ltcGxpZmllZC9yZW1vdmVkIHNldmVyYWwgc3BlY2lhbCAnaWYgKF9fd2luZWxpYiknIGNhc2VzIGluCglXaW5lIG1haW4gY29kZSBvYnNvbGV0ZWQgYnkgdGhhdCBjaGFuZ2UuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBtb3VzZSBkcml2ZXIgY2FsbGJhY2sgYWxzbyBpZiB3aW5kb3dzIGFyZSBub3QgcmVnaXN0ZXJlZCB3aXRoIFgKCShpZiB1c2luZyBuYXRpdmUgVVNFUi5FWEUpLgoKCSogbWVtb3J5L2F0b20uYywgaW5jbHVkZS9hdG9tLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gc2VwYXJhdGlvbiBiZXR3ZWVuIEtFUk5FTCBhbmQgVVNFUi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIG5ldyBXaW5lIHN0YXJ0dXAgc2VxdWVuY2UsIHNlcGFyYXRpbmcgc3RhcnR1cCBpbnRvCglLRVJORUwvVVNFUi9HREkgcmVsYXRlZCBwYXJ0cywgYWxsb3dpbmcgbmF0aXZlIHJlcGxhY2VtZW50LgoJSW1wbGVtZW50ZWQgaW5pdGlhbCAna2VybmVsJyB0YXNrLgoKCSogaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvY29tcG9iai5jOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElucHJvY1NlcnZlcjMyIENvR2V0Q2xhc3NPYmplY3QuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3JlIGJpdG1hcCBmaXhlcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBGaXhlZCBjcmFzaGVzIHdpdGggV01fR0VURExHQ09ERSB0cmFuc2xhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvLmN2c2lnbm9yZSwgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW4uaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIG1vdmluZyBzb21lIFgxMSB3aW5kb3cgbWFuYWdlbWVudCBjb2RlIHRvIHdpbmRvd3MveDExZHJ2LgoKCSogaWYxNjMyL3VzZXIuc3BlYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW5wcm9jLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIElzRGlhbG9nTWVzc2FnZTE2LgoKCSogTWFrZWZpbGUuaW46IERvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJVGVsbCBwZW9wbGUgdG8gaWdub3JlIHRoZSAnZ2V0cycgd2FybmluZy4gU29tZSB3aWxsIGxpc3Rlbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgd2luZG93cy9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBIGNvdXBsZSBvZiBzbWFsbCBmaXhlcyB0byBteSBiaXRtYXAgcGF0Y2guCgoJKiByZXNvdXJjZXMvVE9ETywgcmVzb3VyY2VzL3N5c3Jlc19EZS5yYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYywgd2luZG93cy9ub25jbGllbnQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsbG93IHRoZSB1c2VyIHRvIHB1dCBhIG1hcmsgaW4gdGhlIGRlYnVnIGxvZyBieSBhZGRpbmcgYSBpdGVtIGluIHRoZQoJU1lTTUVOVS4gVGhlIG1lc3NhZ2VzIG5lZWRzIGltcGxlbWVudGF0aW9uIGluIGFsbCBvdGhlciBsYW5ndWFnZXMgdGhhbgoJRW5nbGlzaCBhbmQgR2VybWFuLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHaXZlIHRlbXBmaWxlIGEgZGlmZmVyZW50IG5hbWUgZXZlbiBpZiB0aGV5IGFyZSBjcmVhdGVkIGluIHRoZSBzYW1lCglzZWNvbmQuIFJlbW92ZWQgc29tZSBmaXhtZXMgZnJvbSB0aGUgU2hhcmVEZW55IHN0dWZmLgoKCSogaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ3JlYXRlV2luZG93RXgzMltBV10gbm93IGNyZWF0ZXMgYW4gTURJIGNoaWxzIHdoZW4gdGhlIFdNX0VYX01ESUNISUxECglleHRlbmRlZCBzdHlsZSBpcyBzcGVjaWZpZWQuIEFsc28gaW1wbGVtZW50ZWQgQ3JlYXRlTURJV2luZG93MzJBKCkKCWNhbGwgLSBzaW5nbGUgdGhyZWFkIG9ubHkgLS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFcnJlZCBpbiB0aGUgYml0IG1hY3JvcyBpbiB0cmVldmlldy5jLiBTaGlmdGNvdW50cyB3ZXJlIHdyb25nLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgaW1wb3J0cyB3aXRoIENoYXJhY3RlcmlzdGljcyAwIGZhaWwgZm9yIEJvcmxhbmQKCXByb2dyYW1zICh3aGljaCBzZWVtIHRvIGhhdmUgYWx3YXlzIGNoYXJhY3RlcmlzdGljcyAwKS4gQ2hhbmdlZCB0byBhbGdvcml0aG0KCXRvIHNvbWV0aGluZyBhIGJpdCBtb3JlIGludGVsbGlnZW50LgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIENvRnJlZUxpYnJhcnkgc3R1Yi4KCgkqIFJFQURNRTogVXBkYXRlZCBGQVEgbG9jYXRpb24uCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU0VHUFRSIGNvbnZlcnNpb24gZm9yIFNUQVJURE9DIGluIEVzY2FwZTMyKCkuCgoJKiBvYmplY3RzL2RjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTZXREQ1N0YXRlIGRpZCBub3QgcmVzZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGVtcHR5LgoKCSogd2luMzIvaW5pdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNtYWxsIG9mZiBieSBvbmUgZXJyb3IgaW4gR2V0Q29tcHV0ZXJOYW1lMzJXLCBhbHdheXMga2lsbGVkIHRoZQoJbGFzdCBjaGFyYWN0ZXIgb2YgYSBob3N0bmFtZS4KCgkqIG9iamVjdHMvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgSGVhcEZyZWUoKSBjb2xvcm1hcCBpZiB3ZSBkaWRuJ3QgYWxsb2NhdGUgb25lLgoKCSogd2luMzIvYWR2YXBpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWlzYy9jcnRkbGwuYywgbWlzYy9wcmludGRydi5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHJlbGF5MzIvY3J0ZGxsLnNwZWMsIHJlbGF5MzIvbXByLnNwZWMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWJzIGZvciB1c2VyMzIsYWR2YXBpMzIgZnVuY3Rpb25zLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsLyosIGluY2x1ZGUvbnRkbGwuaCwgbWlzYy9BdHRpYy9udGRsbC5jLCBtaXNjL01ha2VmaWxlLmluLCByZWxheTMyL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgTnQqIGFuZCBSdGwqIGZ1bmN0aW9uIHN0dWJzLCBtb3ZlZCBudGRsbC5jIHRvIGRsbHMvbnRkbGwvLgoKCSogbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9oZWFwLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNoYW5nZWQgbWFueSBXQVJOKClzIHJlbGF0ZWQgdG8gaW50ZXJuYWwgV2luZSBtZW1vcnkgZmFpbHVyZXMgdG8KCUVSUigpcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIC5zcGVjIGVudHJ5IGZvciBLRVJORUwuUmVnaXN0ZXJTZXJ2aWNlUHJvY2Vzcy4KCgkqIGlmMTYzMi9kaXNwbGF5LnNwZWMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dWIgZm9yIENoZWNrQ3Vyc29yKCkuCgoJKiBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RlZmRsZy5jOiBUaW0gTmV3c29tZSA8bnVpc2FuY2VAY211LmVkdT4KCUZpeCBmb3Igbm9uLW1vZGFsIGRpYWxvZyBjbG9zaW5nLgoKCSogd2luZG93cy9kaW5wdXQuYzogRGF2aWQgRmF1cmUgIDxmYXVyZUBrZGUub3JnPgoJUmV3cm90ZSB0aGUgdHdvIHJvdXRpbmVzIHVzaW5nIHRoZSB2a2V5LT5zY2FuY29kZSBhcnJheSB0byB1c2UKCWtleWMydmtleSBmb3IgZWFjaCBrZXljb2RlLCBpbnN0ZWFkLiBOb3QgdGVzdGVkLgoJUmVtb3ZlZCB1bnVzZWQgSURpcmVjdElucHV0RGV2aWNlQV9HZXREZXZpY2VTdGF0ZS4KCUZpeGVkIHdhcm5pbmcgaW4gVFJBQ0UoKSBjYWxsLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8ZmF1cmVAa2RlLm9yZz4KCURlbGV0ZWQgdGhlIHZrZXktPnNhbmNvZGUgYXJyYXksIGJlY2F1c2UgUVdFUlRZIHNwZWNpZmljLgoJQmFjayB0byB1c2luZyB0aGUgWCBrZXljb2RlIGluc3RlYWQgYXMgdGhlIHNjYW5jb2RlLiBUZXN0ZWQuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVByaW50IGEgbWVzc2FnZSBpZiB0aGUgUG9zdFNjcmlwdCBkcml2ZXIgY2FuJ3QgZmluZCBhIFBQRCBmaWxlLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBWR0EgMjU2LWNvbG9yIG1vZGUgMHgxMyB1c2luZyB0aGUgRGlzcGxheURpYiBWR0EgZW11bGF0aW9uLgoJKERPUyBhcHBzL2dhbWVzIHVzaW5nIHRoaXMgbW9kZSBjb21lcyB1cCBub3csIGFsdGhvdWdoIHlvdSBjYW4ndAoJcmVhbGx5IGRvIGFueXRoaW5nIHdpdGggdGhlbSAoeWV0PykuKQoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBtYWNybyBWODZfRkxBRy4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNldCBkZWZhdWx0IHZpZGVvIG1vZGUgdG8gMyAoODB4MjUgY29sb3IpLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJZ25vcmVzIGEgY291cGxlIG9mIHNpZ25hbHMuCgoJKiBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGlzcGRpYi5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaCwgbXNkb3MvaW9wb3J0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBWR0EtZW11bGF0aW5nIERpcmVjdFggY29kZSBmcm9tIGRpc3BkaWIuYyB0byBhIHNlcGFyYXRlCglmaWxlLiBNYWRlIGl0IHVzZSBhIHN5c3RlbSB0aW1lciBhbmQgdHJhcCBJL08gYWNjZXNzZXMgdG8gdGhlIFZHQQoJREFDIHJlZ2lzdGVycyB0byBhY2NvbW1vZGF0ZSBEaXNwbGF5RGliLXVzaW5nIHByb2dyYW1zIHRoYXQgdHJ5IHRvCglhY2Nlc3MgdGhlIFZHQSBoYXJkd2FyZSBkaXJlY3RseS4KCgkqIG1pc2NlbXUvaW5zdHIuYywgaWYxNjMyL3NpZ25hbC5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2Mvc3lzdGVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluZGlyZWN0aW9uIGZvciBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gZm9yIHVzZSBieSBET1MgY29kZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGEgNTVIeiBzeXN0ZW0gdGltZXIsIGxldHRpbmcgRE9TIGFwcHMgY2FsaWJyYXRlCgl0aGVpciBkZWxheSBsb29wcyBhbmQgc3VjaC4gQ2FsbHMgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIGZvcgoJaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIChwcmluY2lwYWxseSBJL08gcG9ydCBhY2Nlc3MpLiBBZGRlZCBtYWNybwoJVjg2X0ZMQUcuCgpTYXQgT2N0IDMxIDEyOjIwOjU2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBmaXhlcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgRklYTUUoKSBhbmQgbW92ZWQgU2V0TGFzdEVycm9yKDApIHRvIHRoZSBlbmQgKHNvIHRoYXQKCUdldFRlbXBGaWxlTmFtZSBldC5hbC4gY2FuJ3Qgb3ZlcndyaXRlIGl0KS4KCgkqIG1pc2MvQXR0aWMvbnRkbGwuYywgcmVsYXkzMi9udGRsbC5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb3RzIG9mIHN0dWJzIHRvIGdldCB3aW5sb2dvbi5leGUgZnJvbSBudDMuNTEgYW5kIG90aGVyIE5UMy41MSBhcHBsZXRzCglhIGJpdCBmdXJ0aGVyLgoKCSogd2luZG93cy9tZGkuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ESWNoaWxkIGNyZWF0ZWQgd2hlbiB0aGUgTURJIGNsaWVudCBoYXMgdGhlIE1ESVNfQUxMQ0hJTERTVFlMRVMKCXN0eWxlLCBzaG91bGQgbm90IGJlIHNob3duIGF0IGNyZWF0aW9uIG5vciBhY3RpdmF0ZWQgdW5sZXNzIHRoZQoJV1NfVklTSUJMRSBmbGFnIGlzIHNldC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJQnVnZml4IGZvciBmaXh1cF9pbXBvcnRzOiBFbmFibGUgY2hlY2tpbmcgZm9yIHRlcm1pbmF0aW5nIGltcG9ydAoJc3RydWN0IHdpdGggQ2hhcmFjdGVyaXN0aWNzIGJpdGZpZWxkIHNldCB0byAwLgoKCSogd2luZG93cy93aW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURlbGF5IGxpbmtpbmcgbmV3bHkgY3JlYXRlZCB3aW5kb3cgaW4gbGlua2VkIGxpc3QgdW50aWwgYWZ0ZXIgdGhlCglXTV9OQ0NSRUFURSBtZXNzYWdlLgoKCSogZmlsZXMvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU21hbGwgYnVnIGluIEZJTEVfSW5Vc2UgZG9lcyBub3QgZG8gYSByZWxlYXNlIG9uIGV2ZXJ5IGFjcXVpcmVkIGZpbGUKCXBvaW50ZXIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglscHN6TmFtZSBvZiBOVUxMIGlzIGhhbmRsZWQgKHJlbW92ZXMgc29tZSB3YXJuaW5ncykuCgoJKiB0b29scy90ZXN0cnVuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5vdyBhbGxvd3Mgc3BlY2lmaWNhdGlvbiBvZiBhIHN0YXJ0IGRpcmVjdG9yeSBvbiB0aGUgY21kbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRzIHJpZCBvZiB0aGUgYXJjaC1kZXBlbmRlbnQgYml0IG9wZXJhdGlvbnMgKHRlc3RlZCBvbiBMaW51eCBhbmQKCVNvbGFyaXMveDg2KS4KCldlZCBPY3QgMjggMTQ6NTg6MDIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQSBkZXN0IGJ1ZmZlciB3YXMgcHJpbnRlZCBvdXQgYXMgc3RyaW5nLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgMiB3cm9uZyBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXRyaWNrIFNwaW5sZXIgPHNwaW5sZXIucGF0cmlja0BtYXlvLmVkdT4KCUFkZGVkIHN0dWJzIGZvciBQcm9jZXNzMzJGaXJzdC9Qcm9jZXNzMzJOZXh0LgoKCSogaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcmVnaW9uLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvdHlwZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8Z291Z2V0QG1ldGFpbnRlZ3JhdGlvbi5uZXQ+CglGaXhlZCBzb21lIExQUE9JTlQvTFBTSVpFIG1pc21hdGNoZXMgYW5kIHNvbWUgbWlzc2luZyAiY29uc3QiIGluIHRoZQoJaGVhZGVycyBwcm90b3R5cGVzLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9vZW1iaXRtYXAuYywgd2luZG93cy9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHBCaXRtYXBCaXRzIGFuZCBwQ3JlYXRlQml0bWFwIHRvIHRoZSBHREkgZnVuY3Rpb24gdGFibGUgYW5kCgltb3ZlZCB0aGUgWDExIGRlcGVuZGVudCBzdHVmZiBvdXQgb2Ygb2JqZWN0cy9iaXRtYXAuYyBpbnRvIHgxMWRydi4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IFNIR2V0U2ltcGxlSURMaXN0RnJvbVBhdGgzMkFXLgoJVW5pY29kZS1zYWZlOiBQYXRoRmluZEZpbGVuYW1lMzJBVy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1c3RpbiBCcmFkZm9yZCA8anVzdGluQGJ1c2JveS5zcGVkLnVrYW5zLmVkdT4KCUlFeHRyYWN0SWNvbiBoYWQgYW4gZXh0cmEgYyBpbiBhIHN0cnVjdCBkZWZpbml0aW9uLgoKCSogcmVsYXkzMi9kcGxheS5zcGVjOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LnNwYW1sZXNzLmNvbT4KCUFkZGVkIGVudHJ5IGZvciBEaXJlY3RQbGF5RW51bWVyYXRlLgoKCSogb2xlL25scy9za3kubmxzLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBTbG92YWsgbmxzLXJlc291cmNlcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgZGlmZmVyZW5jZXMgYmV0d2VlbiBTZXRSZWN0UmduMTYgYW5kIFNldFJlY3RSZ24zMi4gQWxzbyBhIGJ1ZyBmaXggZm9yCglDcmVhdGVSb3VuZFJlY3RSZ24uCgpUdWUgT2N0IDI3IDE1OjQxOjU0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3VzZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtRGlzcGxheU1vZGVzKiByZXR1cm5zIGEgc3RhdGljIGxpc3Qgb2YgbW9kZXMgd2l0aCBhbGwgZGVwdGhzCgkoaGVscHMgaGV4ZW4yZGVtbyksIENoYW5nZURpc3BsYXlTZXR0aW5ncyByZXR1cm5zIHRydWUgYWxsIHRoZSB0aW1lLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgbWlkaU9wZW5TdHJlYW0gKGhlbHBzIGhleGVuMmRlbW8pLgoKCSogb2xlL25scy9lbmMubmxzLCBvbGUvbmxzL2ZyYy5ubHMsIHJlc291cmNlcy9zeXNyZXNfRnIucmM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJU21hbGwgcGF0Y2ggZm9yIGJldHRlciBGcmVuY2ggc3VwcG9ydC4KCgkqIGxvYWRlci9lbGYuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1lbW9yeSBvdmVyd3JpdGUgYnVnLgoKTW9uIE9jdCAyNiAxMTowNDoxMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jOiBQYXNjYWwgQ3VvcSA8cGN1b3FAZW5zLWx5b24uZnI+CgkzMi1iaXQgY2xpcGJvYXJkIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4IGZvciBRVUVVRV9TaWduYWw6IEFsd2F5cyB1c2UgUG9zdEV2ZW50IGlmIG5vIHRocmVhZCBpcyB3YWl0aW5nCglvbiB0aGUgcXVldWUuCgoJKiB3aW5kb3dzL21kaS5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGEgbWlub3IgcHJvYmxlbSB3aXRoIHRoZSBtZW51cyBmb3IgbWRpIGNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBjb21tZW50ZWQgb3V0IGNvZGUsIGRlc3Ryb3kgb2xkIHdpbmRvdwoJd2hlbiBTZXREaXNwbGF5TW9kZSBpcyBjYWxsZWQgYWdhaW4sIEVudW1EaXNwbGF5TW9kZXMgbm93IHJldHVybnMKCWFsbCBwb3NzaWJsZSBtb2RlcyAodXNpbmcgYSBzdGF0aWMgbGlzdCkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFub24gc2hhcmVkIG1hcHBpbmcgZml4ZWQgZm9yIGZpbGUgc2hhcmluZy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAyNSAxMDozMjoyMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDogQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglGaXhlcyBmb3IgTEFOR19ORVVUUkFMLgoKCSogaW5jbHVkZS90YXNrLmg6CglBZGRlZCBzb21lIHBhZGRpbmcgdG8gdGhlIFBEQiBmb3IgaWxsLWJlaGF2aW5nIGFwcHMgKHByb2JsZW0gcmVwb3J0ZWQKCWJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkb2N1bWVudGF0aW9uL2lvcG9ydC10cmFjZS1oaW50cywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtaXNjZW11L2luc3RyLmM6CglKb25hdGhhbiBCdXp6YXJkIDxqYWJAaGV4LnByZXN0ZWwuY28udWs+CglBZGRlZCBhIG5ldyBkZWJ1Z2dpbmcgY2hhbm5lbCBpbyB0byBhbGxvdyByZWFkL3dyaXRlcyBvbiBhIHBvcnQgdG8gYmUKCWxvZ2dlZCB0byBhIGZpbGUuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglSZXBsYWNlZCAweDAwIHdpdGggMHgwMSBpbiB0aGUgdmtleS0+c2FuY29kZSBhcnJheSwgc28gdGhhdCBubyBrZXkgaXMKCWlnbm9yZWQuIDB4MDAgaXMgdXNlZCBmb3IgZ2VuZXJhdGVkIGtleSBldmVudHMgb25seS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUFQSSBEb2N1bWVudGF0aW9uIGZvciBTZW5kTWVzc2FnZSwgR2V0VGlja0NvdW50LCBQb3N0UXVpdE1lc3NhZ2UsCglHZXRNZXNzYWdlUG9zLCBHZXRNZXNzYWdlVGltZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVsZXRlIHRoZSBmaWxlbmFtZSBmb3IgdGhlIG1hcHBpbmcgaW5zdGFudGx5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJTWljaGFlbCBQb29sZSA8cG9vbGVAZ3Jhdml0b24ucmVzLmNtdS5lZHU+CglTdHViIGZvciBTSFNpbXBsZUlETGlzdEZyb21QYXRoLgoKCSogbG9hZGVyL3Rhc2suYzogRml4ZWQgYnVnIGluIFN3aXRjaFN0YWNrVG8uCgpTYXQgT2N0IDI0IDEzOjA2OjE2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9zY3JvbGwuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGVjayBpZiBzY3JvbGxiYXIgYW5kIHBhcmVudCBhcmUgdmlzaWJsZSBiZWZvcmUgcmVkcmF3LgoKCSogaWYxNjMyL3NoZWxsLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgbWlzYy9zaGVsbC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRHJhZyozMiBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBEcmFnJkRyb3AgZnJvbSBLREUgYXBwIHRvIDE2LzMyIGJpdCBXaW5kb3plIGFwcC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRklYTUUgbWVzc2FnZSBpbiBQb3N0TWVzc2FnZTMyeCBpZiBwYXJhbWV0ZXJzIGFyZSB0cnVuY2F0ZWQKCXdoZW4gY2FsbGluZyBQb3N0TWVzc2FnZTE2LgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgZ2xvYmFsIGhhbmRsZXMsIGltcGxlbWVudGVkIENvbnZlcnRUb0dsb2JhbEhhbmRsZS4KCUFsbG9jYXRlIHN0YXJ0dXAgZGF0YSBhbmQgMTYtYml0IHN0YWNrIGZvciBpbml0aWFsIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzogTGVpZ2ggV2VkZGluZyA8bHdlZGRpbmdAY29ycGxpbmsuY29tLmF1PgoJU21hbGwgZml4LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL0VzLnJjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvRXMucmMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIG9sZS9ubHMvZXVxLm5scywgcmVzb3VyY2VzL3N5c3Jlc19Fcy5yYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJU21hbGwgY29ycmVjdGlvbnMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvYWRMaWJyYXJ5RXhXIHNwZWMgYWRkZWQgKGZ1bmN0aW9uIHdhcyB0aGVyZSkuCglTZXRQcm9jZXNzUHJpb3JpdHlCb29zdCBzdHViIGFkZGVkLgoKCSogbXNkb3MvZHBtaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBTb2xhcmlzLgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2Rpc3BkaWIuc3BlYywgaW5jbHVkZS9kaXNwZGliLmgsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kaXNwZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIERpc3BsYXlEaWIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYWNrIHRvIHN1cHBvcnQgaW50ZWdlciBpZHMgaW4gYWxsIHN0YXRpYyBjb250cm9scy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJlZ2lubmluZyBvZiBtb3VzZSBzdXBwb3J0IGluIERpcmVjdElucHV0IChvbmx5ICJzdGFuZGFyZCIgbW91c2UKCWNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIGZvciBub3cpLgoKCSogaW5jbHVkZS8qLmgsIGRsbHMvY29tY3RsMzIvKi5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHh4eF9VbnJlZ2lzdGVyKCkgZnVuY3Rpb25zIHRvIGFsbCBjb21tb24gY29udHJvbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1pbm9yIGltcHJvdmVtZW50cyBhbmQgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGluY2x1ZGUvcmViYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCB0aGUgcmViYXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRyYW5zcGFyZW50IGFuZCB0cmFja2luZyB0b29sdGlwcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGEgcG9wdXAgbWVudSBzZWxlY3Rpb24gYnVnLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIERyYXdDYXB0aW9uMTYoKSBhbmQgRHJhd0NhcHRpb25UZW1wMTYoKS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCUZpeGVkIHdhcm5pbmcuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIG9iamVjdHMvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZHMgQXJjLCBDaG9yZCwgR2V0Q2hhcldpZHRoLCBQaWUsIFBvbHlQb2x5Z29uLCBQb2x5UG9seWxpbmUsIFJvdW5kUmVjdCwKCVNldFBpeGVsLCBoYXRjaGVkIGJydXNoZXMgYW5kIGEgc3R1YiBmb3IgU3RyZXRjaERJQml0cyB0byB0aGUgUG9zdFNjcmlwdAoJZHJpdmVyLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludGVycnVwdHMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGludDE3IGFuZCBpbnQxOS4KCgkqIG1zZG9zL2ludDE5LmM6IENhcmwgdmFuIFNjaGFpayA8Y2FybEBkcmVhbWNvYXQuY2hlLnVjdC5hYy56YT4KCVN0dWJzIGZvciBkb3MgbW9kZSByZWJvb3QgaW50ZXJydXB0LgoKCSogbXNkb3MvaW50MTcuYzogQ2FybCB2YW4gU2NoYWlrIDxjYXJsQGRyZWFtY29hdC5jaGUudWN0LmFjLnphPgoJU29tZSBwcmludGVyIHN0dWJzIGZvciBET1MgYWRkZWQuCgoJKiBtc2Rvcy9pbnQxMy5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglNb3JlIHN0dWJzIGFkZGVkLiBUaGVzZSBjaGFuZ2VzIGFyZSBvbmx5IHBhcnRpYWxseSBtaW5lLCBJIGp1c3QgbWFkZQoJdGhlbSBjb21waWxlLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgc29tZSB0cmFjZXMgYW5kIGNsZWFuZWQgdXAgYSBjb3VwbGUgb2YgdGhpbmdzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIG1lbW9yeS9zdHJpbmcuYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBzb21lIHN0cmluZy1zaGVsbDMyIGZ1bmN0aW9ucyB0byAzMkFXLCBwYXJhbWV0ZXIgYXJlCglvcyBkZXBlbmRpbmcgMzJBIG9yIDMyVyAoLXdpbnZlciBudDM1MSBvciBudDQwKSwgc29tZSBuZXcgZnVuY3Rpb25zLgoJU29tZSBmaXhlcyBpbiBvbGUybmxzLgoJTmV3IE9MRTJOTFNfQ2hlY2tMb2NhbGUoKSB0byBoYW5kbGUgTG9jYWxlX1VzZXJfRGVmYXVsdCBhbmQKCUxvY2FsZV9TeXN0ZW1fRGVmYXVsdC4KCVNoZWxsMzIgbm93IGR5bmFtaWNseSBsaW5rcyB0byBEUEFfKigpLCBjb21kbGczMiB3b3JrcyBhZ2FpbgoJKGNvbWN0bDMyIGhlYXAgYWxsb2MgcGF0Y2ggYnJva2UgaXQpLgoKCSogaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBWRVJTSU9OX0lzT3NVbmljb2RlKCkuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIG9mZi1ieS1vbmUgZXJyb3JzIGZpeGVkLgoKCSogaW5jbHVkZS9maWxlLmgsIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL3Z4ZC5jLCB3aW4zMi9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbGUgc2hhcmluZyBmaXhlcy4KCkZyaSBPY3QgMjMgMTc6MjY6NDQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbWRsZy5jOiBOaWNrIEhvbGxvd2F5IDxhbGZpZUBhbGZpZS5kZW1vbi5jby51az4KCUJ1ZyBmaXguCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIERPUyBlbnZpcm9ubWVudCBwYXNzaW5nLgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3lzbWV0cmljczMyVyBmb3IgU1BJX0dFVElDT05USVRMRUxPR0ZPTlQgcmV0dXJucyBjb3JyZWN0IGZvbnRuYW1lLgoKCSogaW5jbHVkZS9mb250LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgRk9OVF9HZXRPYmplY3QzMlcoKSwgR2V0T2JqZWN0MzJXKCkuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWIgUmVnaXN0ZXJUYXNrTGlzdC4KCU5ldyBmdW5jdGlvbiBFbnVtRGlzcGxheVNldHRpbmdzMzJXKCkuCgoJKiBtaXNjL250ZGxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBwYXJhbWV0ZXIgY2hlY2tpbmcgaW4gUmx0Q29weVNpZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgbWVzc2FnZSBtYXBwaW5nIDMyQTwtLT4zMlcgZm9yIEVNXywgQ0JfLCBMQl8gZm9yIFVuaWNvZGUuCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYXZpZmlsMzIuc3BlYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbmV3IGRsbCBhdmlmaWwzMi5kbGwuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9kb3NleGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlyc3Qgc2hvdCBhdCBEUE1JIHJlYWxtb2RlIGNhbGxzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzZXZlcmFsIGJ1Z3Mgd2l0aCBETEwgaW5pdGlhbGl6YXRpb24uCgpUaHUgT2N0IDIyIDE3OjAyOjI1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3lzbGV2ZWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBvcmRpbmFsIGZvciB0d28gc3lzbGV2ZWwgZnVuY3Rpb25zLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQW5vdGhlciBtaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBjb3JyZWN0aW9ucyBpbiBtbWlvIGRlY2xhcmF0aW9ucy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRha2UgdmlydHVhbCBzaXplcyBpbiBhY2NvdW50IGZvciB0aGUgdG90YWwgdm1hIHNpemUuCgoJKiBvbGUvbmxzL3JvbS5ubHM6IERpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBZGQgc29tZSBtb3JlIE5MUyBkZWZpbml0aW9ucyBmb3IgdGhlIFJvbWFuaWFuIGxhbmd1YWdlLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHByb2dyYW1zIChxdWFrZTIgZXQgYWwpIGRvIGNoZWNrIGZvciBEU0NBUFNfRU1VTERSSVZFUiBhbmQgc3RvcAoJdG8gd29yay4gJ0FkanVzdCcgY2FwcyBmbGFncyBhY2NvcmRpbmdseS4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVBldGUgUmF0emxhZmYgPHByYXR6bGFmZkBjZmEuaGFydmFyZC5lZHU+CglTdHViIGZvciBDb0NyZWF0ZUd1aWQoKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUJyaWFuIExpdHppbmdlciA8YnJpYW5AbGl0emluZ2VyLmNvbT4KCUZpeGVzIGZvciBGcmVlQlNELgoKCSogbGlidGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUBtaW5lcnZhLmNjLnVpdC5ubz4KCU1ha2Ugc3VyZSBoZWxsbzNyZXMuaCBpcyBnZW5lcmF0ZWQgZXZlbiBpZiAnbWFrZSBkZXBlbmQnIG5ldmVyIGhhcwoJYmVlbiBydW4uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIG1vdmluZyBhbmQgc2l6aW5nIG9mIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJWFF1ZXJ5S2V5bWFwIC0+IFRTWFF1ZXJ5S2V5bWFwIChmaXhlcyB0aGUgWElPIGVycm9ycyByZXBvcnRlZCkuCgpXZWQgT2N0IDIxIDE3OjIwOjQ4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2NlbXUvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbmRpcmVjdGlvbiBmb3IgY3R4X2RlYnVnIHRvIHRoZSBET1MgbG9hZGVyLCBzbyBXaW5lbGliIHdvcmtzCglhZ2Fpbi4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcG9ydCBhbm9uIHNoYXJlZCBtYXBwaW5ncyB1c2luZyB0ZW1wb3JhcnkgZmlsZXMgKHdvbnQgYmUgZGVsZXRlZAoJeWV0KS4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcyBmcmVlaW5nIHRoZSBpbmNvcnJlY3QgcG9pbnRlcnMgLT4gY3Jhc2ggaW4gbWFsbG9jcy9mcmVlcy4KCgkqIGZpbGVzL2Rvc19mcy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlZmluZURvc0RldmljZSBzdHViIGFkZGVkLgoKCSogbWlzY2VtdS9tYWluLmMsIHdpbmUuaW5pOiBDaGFkIFBvd2VsbCAocHhweEB1c2EubmV0KQoJQWRkZWQgYSBkZWZhdWx0IHByb2dyYW0gb3B0aW9uIGluIHdpbmUuY29uZiBpbiBzZWN0aW9uIFtwcm9ncmFtc10ga2V5CglEZWZhdWx0LgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBEYXZpZCBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglCZXR0ZXIgZml4IGZvciB0aGlzX2lzX2Ffc3ludGF4X2Vycm9yLgoKCSogb2xlL25scy8qLm5sczoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgdGhlIGVudHJpZXMgZm9yIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgYW5kCglMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZWQgbWFucGFnZS4KCgkqIHJlbGF5MzIvbXNhY20zMi5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHdyb25nIG9yZGluYWxzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBhIGJ1ZyBpbiBSZWN0SW5SZWdpb24uCgpUdWUgT2N0IDIwIDE1OjI2OjI2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJUmVtb3ZlZCBhbiBpbmNvcnJlY3QgZXJyb3IgbWVzc2FnZS4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAbWluZXJ2YS5jYy51aXQubm8+CglNYWtlIHN1cmUgdGhlIGFjY2VzcyBmdW5jdGlvbnMgYXJlIGFsd2F5cyB1c2VkIHRvIGdldCBsYWJlbCBhbmQgc2VyaWFsCgludW1iZXIuCgpNb24gT2N0IDE5IDA4OjQ4OjI0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAaG9sLmZyPgoJRml4ZWQgYnVnIG9uIHBsYXRmb3JtcyB3ZXJlIGJ1ZmZlcnMgcmV0dXJuZWQgYnkgZ2V0ZW52KCkgc2hhbGwgbm90IGJlCglmcmVlKCknZWQuIEFkZGVkIEZyZW5jaCAoZGVmYXVsdCkgaW4gbG9jYWxlIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBEYXZlIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCUNoYW5nZWQgInRoaXMgaXMgYSBzeW50YXggZXJyb3IiIHRvICJ0aGlzX2lzX2Ffc3ludGF4X2Vycm9yIiB0byBtYWtlIGEKCWNvbXBpbGUtdGltZSBlcnJvciBtZXNzYWdlIG1ha2UgbW9yZSBzZW5zZS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIG9mZiBieSBvbmUgZXJyb3IgaW4gSEFORExFX0dldE9ialB0ci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAxOCAxNDo0ODozMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUcnkgdG8gaW1wbGVtZW50IHRoZSBPRl9TSEFSRV9YWFggb3B0aW9ucy4KCU1vdmUgdGhlIG1vZGUgdHJhbnNsYXRpb25zIHRvIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbWFpbi5oLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zdG9yYWdlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YiBmb3IgQ29TZXRTdGF0ZTMyLgoKCSogbWlzY2VtdS9tYWluLmM6IENoYWQgUG93ZWxsIDxweHB4QHVzYS5uZXQ+CglBZGRlZCBhYmlsaXR5IHRvIHJlYWQgYSBzdGFydHVwIHByb2dyYW0gZnJvbSB3aW5lLmluaSBmaWxlLgoJUHV0IGl0IGluIHNlY3Rpb24gW3Byb2dyYW1zXSBrZXkgU3RhcnR1cC4KCgkqIGluY2x1ZGUvdHJhY2tiYXIuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGdXJ0aGVyIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50ZWQgTG9hZEN1cnNvckZyb21GaWxlLCBmaXhlZCBEcmF3SWNvbkV4IHRvIHN1cHBvcnQgb2Zmc2NyZWVuCglkcmF3aW5nLCBmaXhlZCBDVVJTT1JJQ09OX0NyZWF0ZUZyb21SZXNvdXJjZSB0byBzdXBwb3J0IExSXyBzZW1hbnRpY3MuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBMb2FkSW1hZ2UgdG8gc3VwcG9ydCBhbG1vc3QgYWxsIExSXyBmbGFncy4KCgkqIG9iamVjdHMvZGliLmM6IFR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgYnVnIGluIERJQl9TZXRJbWFnZUJpdHNfUkxFOCAoYmVjYXVzZSAnY29sb3InIHZhciB3YXMgV09SRCwgYWxsCglDT0xPUkVGcyBoYWQgcmVkIHBhcnQgemVyb2VkKSB0aGF0IG1hZGUgcGxlbnR5IG9mIGN5YW4gY29sb3JzLCBtaW5vcgoJYnVnIGZpeGVzLCBjaGFuZ2VzIHRvIHN1cHBvcnQgTFJfIGZsYWdzLgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJQWRkZWQgVklSVFVBTF9NYXBGaWxlVyB0byBtYXAgZmlsZSB0byBtZW1vcnkgaW4gb25lIGZ1bmN0aW9uIGNhbGwuCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIHdpbmRvd3MvbXVsdGltb24uYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJTW92ZWQgTXVsdGltb25pdG9yIEFQSSBkZWNsYXJhdGlvbnMgdG8gd2luZG93cy5oLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9kcml2ZXIuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjLCB3aW5kb3dzL2RyaXZlci5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRlZCBEZWZEcml2ZXJQcm9jMzIgZnJvbSB3aW5tbS5kbGwuCgoJKiBjb250cm9scy9zY3JvbGwuYywgaW5jbHVkZS9zY3JvbGwuaCwgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUdvdCByaWQgb2YgZmxpY2tlcmluZyBzY3JvbGxiYXIgYXJyb3dzLiBNREkgc2Nyb2xsaW5nIHNwZWVkZWQgdXAgYQoJYml0LgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy9kZXUubmxzLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglHZXRMb2NhbGVJbmZvMzJBIGNhbiBoYW5kbGUgbGVuPTAgbm93LCBzZXRzIExhc3RFcnJvciBhbmQgdG91Y2hlcwoJYnVmZmVyIG9ubHkgd2hlbiBuZWNlc3NhcnkuCglVcGRhdGVkIGRldS5ubHMgYW5kIHNvbWUgTENUWVBFUyBpbiB3aW5ubHMuaC4KCgkqIGlmMTYzMi9yZWxheS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2FsbFByb2NbRXhdMzJXIGNhbGxlZCB3aXRoIGxwUHJvY0FkZHJlc3M9PU5VTEwgc2hvdWxkIHJldHVybiB6ZXJvIGFuZAoJbm90IGNyYXNoLgoKU2F0IE9jdCAxNyAxMzowNzo0OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlZHVjZWQgaHVnZSAoMUdCKSBoZWFwIGNyZWF0aW9uIHRoYXQgY2F1c2VkIFN0YXJjcmFmdCB0byBmYWlsLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBTb2xhcmlzLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIG5vbiBPU1Mgc3lzdGVtcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIG5vbiBYRjg2LURHQSBzeXN0ZW1zLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92b2xpbmZvLmM6CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglOZXcgZmlsZSB0byB0ZXN0IERSSVZFX0dldExhYmVsLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCVNtYWxsLCBzdWJvcHRpbWFsLCBmaXggZm9yIDMyIGJpdCBjZGF1ZGlvIG9wZW4gcm91dGluZXMuIE5lZWRzIHByb3BlcgoJMzJiaXQgY2RhdWRpbyBiaXQgc3VwcG9ydCBiZWZvcmUgaXQgY2FuIGJlIHJlbW92ZWQuLi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWwuY2E+CglBZGRlZCBhIGJ1bmNoIG9mIHN0dWJzIGZvciBkZHJhdyBzdWZhY2Ugcm91dGluZXMuIEFsbCBzdHVicyBmb3IKCXN1cmZhY2UgcHJlc2VudCBub3cuCglDb21tZW50ZWQgb3V0IG1lc3NhZ2UgcHVtcCBjYWxscy4gSSBkb24ndCBzZWUgYSByZWFzb24gZm9yIHRoZW0gYmVpbmcKCXRoZXJlLiBFdmVyeXRoaW5nIHdvcmtzIGZpbmUgd2l0aCAtZGVza3RvcCBhbmQgLW1hbmFnZWQgc3RpbGwgaGFzCglwcm9ibGVtcy4gRGlzYWdyZWVtZW50cz8KCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgR2V0TG9jYWxlSW5mbzMyQSBmb3Igb3RoZXIgbGFuZ3VhZ2VzIHRoYW4gZW5fdWsuCglNYWRlIGl0IHJlY29nbmlzZSBMT0NBTEVfU1lTVEVNX0RFRkFVTFQsIExPQ0FMRV9TWVNURU1fREVGQVVMVCBhbmQKCWxhc3QgYnV0IG5vdCBsZWFzdCB0aGUgZmlyc3QgYXJndW1lbnQgbGNpZCB3aGVyZSBpcyBhbGwgYWJvdXQuLi4KCgkqIGluY2x1ZGUvc3lzbGV2ZWwuaCwgbWlzYy9yZWdpc3RyeS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIHdpbmRvd3MvY2FyZXQuYywgZGxscy9tc2FjbTMyL2J1aWx0aW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBtb3JlIG1pc3NpbmcgV0lOQVBJcyAoaG9wZWZ1bGx5IGNvcnJlY3QpLgoKCSogb2xlL29sZTJubHMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgPSAtPiA9PSBidWcuCgoJKiBtc2Rvcy9pbnQyZi5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglTaGVsbCBwYXJhbWV0ZXJzIChjb25maWcuc3lzKSBhbmQgQU5TSSBzdXBwb3J0IHN0dWJzLgoKCSogbXNkb3MvTWFrZWZpbGUuaW46IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDE2LmMgYW5kIGludDI5LmMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50ZXJydXB0cy5jOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJTW9yZSBpbnRlcnJ1cHRzIHRoYXQgY2FuIGJlIGRvbmUgZnJvbSBET1MgbW9kZS4KCgkqIG1zZG9zL2ludDI5LmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDI5IChGYXN0IFdyaXRlIHRvIFNjcmVlbikgc3VwcG9ydC4KCgkqIG1zZG9zL2ludDE2LmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDE2IChLZXlib2FyZCkgc3VwcG9ydCwgbW9zdGx5IHN0dWJzLgoKRnJpIE9jdCAxNiAxNTo0MDoyMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBidWdmaXhlcywgbmV3IHN0dWJzIFNIR2V0UmVhbElETCwgU0hSZWdRdWVyeVZhbHVlMzJXLAoJU0hSZWdRdWVyeVZhbHVlRXgzMlcsIFN0clJldFRvU3RyTiwgU3RyQ2hyVywgU0hBbGxvY1NoYXJlZCwKCVNITG9ja1NoYXJlZCwgU0hVbmxvY2tTaGFyZWQsIFNIRnJlZVNoYXJlZCwgU2V0QXBwU3RhcnRpbmdDdXJzb3IzMiwKCVNITG9hZE9MRTMyLCBTaGVsbF9NZXJnZU1lbnVzMzIsIFBhdGhHZXREcml2ZU51bWJlcjMyLCBEcml2ZVR5cGUzMiwKCVNIQWJvcnRJbnZva2VDb21tYW5kLCBTSE91dE9mTWVtb3J5TWVzc2FnZUJveCwgU0hGbHVzaENsaXBib2FyZC4KCgkqIG1pc2MvbnRkbGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJRGlldG1hciBLbGluZyA8ZGlldG1hci5rbGluZ0B1c2EubmV0PgoJQWRkZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9uIFJ0bE9wZW5DdXJyZW50VXNlci4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBtaXNjL3NoZWxsLmMsIG1pc2MvdmVyLmMsIG1pc2MvdmVyc2lvbi5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVuYW1lZCBhbGwgTFBJTUFHRV8qIHR5cGVzIHRvIFBJTUFHRV8qLgoKVGh1IE9jdCAxNSAxMzowMzoxMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wb3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIGFuIGVycm9yIHdoZW4gYW4gb3duZWQgd2luZG93IGFjdGl2YXRlcyBpdHMgb3duZXIgZHVyaW5nCgljcmVhdGlvbi4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDbG9zaW5nIGEgZGlhbG9nIHVzaW5nIHRoZSBtZW51IGJhciAoIngiIG9yICItIiBidXR0b24gb3Igd2luZG93cwoJbWVudSkgbXVzdCBnZW5lcmF0ZSBhIFdNX0NPTU1BTkQrSURDQU5DRUwgbWVzc2FnZSwgdW5saWtlIGNsb3NpbmcKCW5vcm1hbCB3aW5kb3dzIHdoZW4gRGVzdHJveVdpbmRvdygpIGlzIGNhbGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQGNpcC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbjMyL29yZGluYWxzLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBQcml2YXRlRXh0cmFjdEljb25FeFtBV10sIFByaXZhdGVFeHRyYWN0SWNvbnNXLAoJUmVnaXN0ZXJTaGVsbEhvb2tXaW5kb3csIERlcmVnaXN0ZXJTaGVsbEhvb2tXaW5kb3csIEdldFByb2dtYW5XaW5kb3csCglHZXRUYXNrbWFuV2luZG93LCBTZXRQcm9nbWFuV2luZG93LCBTZXRTaGVsbFdpbmRvd0V4LAoJU2V0VGFza21hbldpbmRvdy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgbWlzYy9udGRsbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgTnRRdWVyeUluZm9ybWF0aW9uVGhyZWFkLCBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbiwKCVJ0bEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCwgUnRsRXF1YWxTaWQsIFJ0bEZyZWVTaWQuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IFR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgUGxheVNvdW5kIHRvIHN0YXJ0IGl0cyB0aHJlYWQgdGhlIHJpZ2h0IHdheS4KCldlZCBPY3QgMTQgMTg6NDA6MzUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUNCX1NFVENVUlNFTCBhbmQgc29tZSBvdGhlciBmaXhlcy4KCgkqIHdpbmRvd3MvcXVldWUuYzogQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJQmV0dGVyIFFVRVVFX0ZsdXNoTWVzc2FnZXMoKS4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYywgb2JqZWN0cy9mb250LmMsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvZ2RpLnNwZWM6CglNb3NoZSBWYWluZXIgPG1vc2hldkBlYXN5YmFzZS5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldE91dGxpbmVUZXh0TWV0cmljczMyQS4KCUFkZGVkIHN0cnVjdHVyZXMgZm9yIE9VVExJTkVURVhUTUVUUklDUy4KCgkqIG9iamVjdHMvZGMuYywgaW5jbHVkZS9nZGkuaCwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvIG5vdCBjbGlwIHNvdXJjZSByZWN0YW5nbGUgZXZlbiBieSB2aXNpYmxlIHJlZ2lvbiBmb3IgYml0Ymx0cy4KCUFkZGVkIGZpZWxkICd0b3RhbEV4dGVudCcgdG8gV0lOX0RDX0lORk8uCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdHViIGZvciBWTU0gUE0gQVBJIEFIPTAyNltkZV0gKG5ldmVyIHNheSAnc2FmZSBtb2RlJykuCgoJKiBtZW1vcnkvaGVhcC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTG9jYWwzMkZyZWUgY2F1c2VkIGZyZWUgaGFuZGxlcyBsaXN0IGNvcnJ1cHRpb24uCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAtLWRpc2FibGUtZGVidWcgY29uZmlnIG9wdGlvbi4KClR1ZSBPY3QgMTMgMTI6NTA6MDQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCUFkZGVkIHN0dWJzIFNIUmVnQ2xvc2VLZXkoKSwgU0hSZWdPcGVuS2V5W0FXXSgpLCBTSFJlZ1F1ZXJ5VmFsdWVFeEEoKQoJYW5kIEZpbGVJY29uSW5pdCgpIG5lZWRlZCBieSBXaW45NSBleHBsb3Jlci4KCk1vbiBPY3QgMTIgMDc6MjU6NTQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9tZW51LmM6CglOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbXByb3Zpbmcga2V5Ym9hcmQgaGFuZGxpbmcsIGluY2x1ZGluZyBhY2NlbGVyYXRvciBrZXlzIGluIGRpYWxvZwoJYm94ZXMuIEFsc28gZml4ZXMgZW50ZXIga2V5IGluIEFnZW50MzIgZWRpdCBib3guCgpTdW4gT2N0IDExIDE5OjM3OjIzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW1kbGcuYzogRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCUFkZGVkIHN1cHBvcnQgaW4gZmlsZSBkaWFsb2cgYm94ZXMgaGFuZGxpbmcgZm9yIGZpbHRlcnMgbGlrZQoJIioudHh0OyouYmF0Ii4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBuZXcgUEUgRExMIGluaXRhbGl6YXRpb24gY29kZSwgdHJ5aW5nIHRvIGNhbGwgdGhlCglEbGxFbnRyeVBvaW50IHJvdXRpbmVzIGFsd2F5cyBpbiBjb3JyZWN0IG9yZGVyIDotKQoJQnlwYXNzIHNub29waW5nIHdoZW4gZ2V0dGluZyBkYXRhIGJ1ZmZlciBhZGRyZXNzZXMgKHRodW5rIGJ1ZmZlcnMsCglfX0dQIGhhbmRsZXJzKSBhbmQgZm9yIDMyLWJpdCByb3V0aW5lcyBkaXJlY3RseSBjYWxsZWQgZnJvbSAxNi1iaXQKCShkdWUgdG8gc3RhY2sgYWRkcmVzcyBzaXplIHByb2JsZW1zKS4KCgkqIHdpbjMyL29yZGluYWxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBDb21tb25VbmltcFN0dWIsIE1hcEhJbnN0KExTfFNMKV9QTiwgVzMyU19CYWNrVG8zMi4KCVN0dWIgZm9yIEhvdXNlQ2xlYW5Mb2dpY2FsbHlEZWFkSGFuZGxlcywgZml4ZWQgazMyd3ZzcHJpbnRmQS4KCgkqIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAocGFydGlhbGx5KSB0aGUgS0VSTkVMIFRodW5rbGV0IEFQSSBhbmQgQ2FsbGJhY2sgQ2xpZW50CglBUEkgKEtFUk5FTC41NjAtNTY4LDYwNC02MTIsNjE5LTYyMikuCglBZGRlZCBzdHVicyBmb3IgSzIyOCwgSzIzNywgS0VSTkVMLjM2NSwgS0VSTkVMLjQ0Ny4KCgkqIG9iamVjdHMvYml0bWFwLmMsIGlmMTYzMi9nZGkuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIENyZWF0ZVVzZXIoRGlzY2FyZGFibGUpQml0bWFwMTYuCgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEhFQVBfV0lORV9DT0RFMTZTRUcgU0VHUFRSIGhlYXBzIHdpdGggMTYtYml0IGNvZGUgc2VnbWVudHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHbG9iYWxGaXgxNiBpcyBzdXBwb3NlZCB0byByZXR1cm4gc2VsZWN0b3IgdG8gdGhlIG1lbW9yeSBhcmVhLgoKCSogbXNkb3MvdnhkLmMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2NvbW0uc3BlYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgQ09NTS5EUlYsIFJFQk9PVC5WWEQsIFZERC5WWEQuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3N5c2xldmVsLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBlbWVyZ2VuY3kgVEVCIHNlbGVjdG9yIHRvIGF2b2lkIGRlYnVnZ2VyIGNyYXNoZXMgd2hlbiBzdGVwcGluZwoJdGhyb3VnaCByZWxheSBzdHVicyAob3Igd2hlbiBGUyBpcyBpbnZhbGlkIG90aGVyd2lzZSkuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTU9VU0UuRFJWIHJvdXRpbmVzIG1vdmVkIHRvIGV2ZW50LmMuIENhbGwgbW91c2UgZXZlbnQgcHJvY2VkdXJlLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvZ2RpLnNwZWMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy9wYXRoLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZWQgREMgbWVtYmVycyB3LmhWaXNSZ24sIHcuaENsaXBSZ24sIGFtZCB3LmhHQ0NsaXBSZ24gdG8KCWNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBkZXZpY2UsIG5vdCB0aGUgREMgb3JpZ2luLiBUaGlzIGlzCgluZWNlc3NhcnkgdG8gY29ycmVjdGx5IGltcGxlbWVudCBHZXRDbGlwUmduMTYgYW5kIElucXVpcmVWaXNSZ24uCglTZWxlY3RWaXNSZ24gYWxzbyBleHBlY3RzIHJlZ2lvbiBpbiBkZXZpY2UtcmVsYXRpdmUgY29vcmRpbmF0ZXMuCglBZGFwdGVkIHRoZSByZXN0IG9mIFdpbmUgdG8gdGhpcyBjb29yZGluYXRlIGNoYW5nZS4KCUltcGxlbWVudGVkIEV4dFNlbGVjdENsaXBSZ24uCgoJKiB0b29scy93aW5hcGktY2hlY2ssIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBmaWxlcy9kb3NfZnMuYzoKCUFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJU21hbGwgZml4LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpZjE2MzIva2VybmVsLnNwZWM6CglBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCVlldCBhbm90aGVyIHNtYWxsIHNlbGYtbG9hZGVyIGZpeC4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJRml4ZWQgc2V2ZXJlIGJ1ZzogU2V0Q3VycmVudERpcmVjdG9yeTMyQSBkaWRuJ3Qgc2V0IHBUYXNrLT5jdXJkaXIKCWNvcnJlY3RseSBkdWUgdG8gY3VycmVudCBkcml2ZSBiZWluZyBzZXQgdG9vIGxhdGUuCgoJKiBNYWtlLnJ1bGVzLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVzZSAkKEFTKSBpbnN0ZWFkIG9mICQoQ0MpIHRvIGNvbXBpbGUgLnMgZmlsZXMuCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tbXJlZy5oLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBkbGxzL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1TQUNNLkRMTCwgTVNBQ00zMi5ETEwgYW5kIElNQUdFSExQLkRMTC4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgcmVsYXkzMi9pbWFnZWhscC5zcGVjLCBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvaW50ZXJuYWwuYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgSU1BR0VITFAuRExMLgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZHJ2LmgsIHJlbGF5MzIvbXNhY20zMi5zcGVjLCBpZjE2MzIvbXNhY20uc3BlYywgZGxscy9tc2FjbTMyLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20zMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvZmlsdGVyLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNU0FDTS5ETEwgYW5kIE1TQUNNMzIuRExMLgoKCSogd2luMzIvZGV2aWNlLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCB0aGluZ3MgdGhhdCB3ZXJlIGVhcmxpZXIgYWRkZWQgYnkgbWlzdGFrZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUaGUgaW1wbGVtZW50YXRpb24gb2YgbW1pb1dyaXRlIGlzIG5vdyBjYWxsZWQgaW5zdGVhZCBvZiB0aGUgc3R1Yi4KCgkqIGluY2x1ZGUvc2hlbGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeGVzLCBzaGVsbHZpZXcgdXNlcyBEUEEncyBub3csIElTaGVsbFZpZXdfR2V0SXRlbU9iamVjdCBpbXBsZW1lbnRlZC4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViczogU0hHZXRGaWxlSW5mbzMyVywgUmVhZENhYmluZXRTdGF0ZSwgV3JpdGVDYWJpbmV0U3RhdGUsIElzVXNlckFkbWluLgoJSW1wbGVtZW50ZWQ6IFNIR2V0UGF0aEZyb21JRExpc3QzMlcuCglDaGFuZ2VkIFBhdGhDb21iaW5lLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3RydWN0dXJlcyBEVkFTUEVDVCwgVFlNRUQsIElETExpc3QuCglTaGVsbCBzcGVjaWZpYyBjbGlwYm9hcmQgZm9ybWF0cy4KCgkqIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgbWlzYy9wcmludGRydi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIEVudW1QcmludGVyc1cuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBmaXJzdCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgY2xhc3MgSURMTGlzdCAiSXRlbSBJRCBMaXN0IExpc3QiIChpbnRlcm5hbCkuCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZXMgKHVzZXMgSElXT1JEL0xPV09SRCkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJU2F0IE9jdCAxMCAxMjowMDowMCAxOTk4ICBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgQ3JlYXRlRGlhbG9nSW5kaXJlY3RQYXJhbUFvclcuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQ+CglEb24ndCBpbnN0YWxsIG9iamVjdCBmaWxlcyB3aGVuIC0tZGlzYWJsZS1saWIgaXMgc2VsZWN0ZWQuCgoJKiBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0PgoJRG9uJ3QgcHJpbnQgbmFtZSBmb3IgMzIgYml0IGxpYiBtdWx0aXBsZSB0aW1lcy4KCUNsZWFuIHVwIHByaW50aW5nIGluIERFQlVHX1Byb2Nlc3NEZWZlcnJlZERlYnVnLgoKCSogbWVtb3J5L2hlYXAuYywgZGxscy9jb21jdGwzMi90YWIuYywgY29udHJvbHMvY29tYm8uYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCVNtYWxsIGZpeGVzLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJQnVnZml4OiBDaGFuZ2VkIEdldERyaXZlVHlwZTMyQShOVUxMKSB0byB1c2UgY3dkJ3Mgcm9vdC4KCgkqIG9sZS90eXBlbGliLmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZXN2ci5jLCBvbGUvc3RvcmFnZS5jLCBtaXNjL250ZGxsLmMsIG1pc2MvcmVnaXN0cnkuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIGNvcnJlY3Rpb25zL3N0YW5kYXJkaXphdGlvbnMuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCUVyaWMgUG91ZWNoICA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglTdGFydGVkIGNvZGluZyAzMiBiaXQgTUNJIGhhbmRsaW5nLgoJQWRkZWQgT3Blbi9DbG9zZSB0byBsb3ctbGV2ZWwgTUNJIGRyaXZlcnMgKGF1ZGlvLCBtaWRpLCBhbmltLCBjZGEpLgoJV3JvdGUgTUNJIE1JREkgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJWWV0IGFub3RoZXIgaW1wcm92ZW1lbnQgdG8gdGhlIGJlemllciBjb2RlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglHZXRUaWNrQ291bnRzKCkgaGFzIGEgZ3JhbnVsYXJpdHkgaW4gd2luZG93cyBvZiAyNSBtc2VjJ3MuCglHaXJvdGVsJ3Mgc2VyaWFsIGNvbW11bmljYXRpb24gYXBwZWFycyB0byBkZXBlbmQgb24gaXQsIHNvIEkgZ3Vlc3MKCWl0J3MgYSBmZWF0dXJlLi4uCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVwZGF0ZSB0aGUgbW9kZW1uIHN0YXR1cyBiaXQgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgUkxTRCBsaW5lIGlzCglhY3RpdmUgaW4gZXZlcnkgY2FsbCB0byBHZXRDb21tRXJyb3IoKS4gVGhpcyBpcyBub3QgdGhlIHByb3BlciBwbGFjZSwKCWJ1dCBzaW5jZSB3aW5lIGRvZXNuJ3QgZG8gYW55IGV2ZW50LXN0dWZmLi4uCglGaXhlZCBzb21lIFRSQUNFIGNhbGwncyBmYWNlZCB3aXRoIG5vbiB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5ncy4KCVJlc3RvcmUgdGhlIHRlcm1pbmFsIHN0YXRlIGF0IENsb3NlQ29tbXQgdG8gdGhlIHN0YXRlIGl0IHdhcyBhdAoJT3BlbkNvbW0oKSwgc28gdGhlIG1vZGVtIHdpbGwgZ28gb2ZmLWhvb2suCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEFsZXhhbmRlciBMYXJzc29uICA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCUdldE1vZHVsZUZpbGVOYW1lMzJBKCkgcmV0dXJucyBsb25nIGZpbGVuYW1lIGlmIGFwcCBzZXRzIG9zdmVyc2lvbiA+PQoJNC4wLiBBbHNvIG1vdmVkIHRoZSBsb25nIGZpbGVuYW1lIGhhY2tlcnkgdG8gR2V0TG9uZ1BhdGhOYW1lMzJBKCkgc28KCWl0IGNhbiBiZSB1c2VkIGJ5IHdpbjMyIHByb2dyYW1zLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJR2V0TG9uZ1BhdGhOYW1lMzJBKCkgcmV0dXJucyBkb3MgZm9ybWF0IGxvbmcgZmlsZW5hbWUgaW5zdGVhZCBvZiB1bml4Cglmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBTSEZsdXNoQ2xpcGJvYXJkLgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucy4KCUNoYW5nZWQgYWxnb3JpdGhtIGluIERQQV9RdWlja1NvcnQoKS4KCUZpeGVkIGhlYXAgY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYW5kIGNvbnRyb2wgW3VuXXJlZ2lzdHJhdGlvbiBpbgoJQ29tQ3RsMzJMaWJNYWluKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYSBidWcuCgoJKiBpbmNsdWRlL3Rvb2x0aXBzLmgsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCB0cmFja2luZyBzdXBwb3J0IGFuZCBmaXhlZCBsb2FkaW5nIG9mIHJlc291cmNlIHN0cmluZ3MuCglBZGRlZCB1bnJlZ2lzdGVyIGNvZGUuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvbmF0aXZlZm9udC5oLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIElQQWRkcmVzcyBhbmQgTmF0aXZlRm9udCBjb250cm9scy4KCgkqIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtaW5vciBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZHJhd2luZyBhbmQgcGxhY2VtZW50IGNvZGUuIEV4cGxvcmVyIHN0eWxlIGNvbW1vbiBkaWFsb2dzIGFyZQoJbG9va2luZyBnb29kIG5vdy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYnVnIGluIERyYXdJY29uRXgzMigpLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRTeXN0ZW1JbmZvcm1hdGlvbjMyW0EvV10uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL3VzZXIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBEcmF3Q2FwdGlvblsxNi8zMl0gYW5kIERyYXdDYXB0aW9uVGVtcFsxNi8zMkEvMzJXXS4KCUZpeGVkIGhhbmRsaW5nIG9mIFdTX0VYX1RPT0xXSU5ET1cuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZWQuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgaW5jbHVkZS9rZXlib2FyZC5oOgoJRGF2aWQgRmF1cmUgPGZhdXJlQGtkZS5vcmc+CglBZGRlZCBLRVlCT0FSRF9VcGRhdGVTdGF0ZSwgdG8gcmVhZCB0aGUgbW9kaWZpZXJzIHdoZW4gdGhlIHdpbmUgYXBwIGlzCglhY3RpdmF0ZWQuIFVzZXMgdGhlIG5ldyBLRVlCT0FSRF9VcGRhdGVPbmVTdGF0ZS4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIG1lbnUgYWNjZWxlcmF0b3JzIChBbHQtbGV0dGVyIGdlbmVyYXRlcyBhIGRvd24KCWFycm93IGV2ZW50IHdoaWNoIGJlZXBzIGlmIG5vdCBmaWx0ZXJlZCkuCglTcGVlZGVkIHVwIFRvQXNjaWkxNi8zMigpIGEgbGl0dGxlIGJpdC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvdHlwZXMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBXaW5lJ3MgZGVidWdnZXIgd29yayBzYXRpc2ZhY3RvcmlseSB3aXRoIERPUyBhcHBzLgoJUGVyaGFwcyBkZXJlZmVyZW5jaW5nIHdvcmsgYmV0dGVyIGZvciBXaW4xNiBhcHBzIHRvbyBub3csIGJ1dAoJaXQgYXBwZWFycyB0aGUgZGVidWdnZXIgY29yZSB3YXNuJ3QgZGVzaWduZWQgZm9yIHNlZ21lbnRhdGlvbi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW11bGF0ZXMgRFBNSSBtZW1vcnkgbWFwIGJ5IGNvbnZlcnRpbmcgbG93ZXItTUIgc2VnbWVudCBiYXNlCglhZGRyZXNzZXMgYXMgbmVjZXNzYXJ5LiBJbXBsZW1lbnRlZCBhbGxvY2F0aW5nL2ZyZWVpbmcgRE9TIG1lbW9yeQoJYmxvY2tzLiBBZGRlZCBYTVMgaG9vay4gKERQTUkgcmVtYWlucyBkaXNhYmxlZCBieSBkZWZhdWx0IHVudGlsCglzb21lb25lIGltcGxlbWVudHMgdGhlIHJhdyBtb2RlIHN3aXRjaCBlbnRyeSBwb2ludHMgcGt1bnppcCBuZWVkcy4pCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUkgdGhpbmsgaXQncyB0aW1lIHRvIHJldGhpbmsgdGhlIEhGSUxFMTZfVE9fSEZJTEUzMiBzdHJhdGVneSwKCWNhbid0IGtlZXAgd29ya2luZyBhcm91bmQgZmxhd3MgaW4gaXQgbGlrZSB0aGlzIChub3cgc3RkaW8KCXdhcyBnZXR0aW5nIGNsb3NlZCB3aGVuIHByb2dyYW1zIGNsb3NlIGhhbmRsZXMgPj01KQoKCSogbXNkb3MveG1zLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBiYXNpYyBYTVMgZnVuY3Rpb25zLiB3Y2IuZXhlIChXaW4xNiBkaXNhc3NlbWJsZXIpIG5vdwoJc2VlbXMgdG8gd29yayBmaW5lIHVuZGVyIFdpbmUuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBzb21lIHN5c3RlbSBkZXBlbmRlbmNpZXMgdG8gbG9hZGVyL2Rvcy9kb3N2bS5jLiBJbXBsZW1lbnRlZAoJZW52aXJvbm1lbnRhbCBhcmd2WzBdIHBhc3NpbmcgdG8gRE9TIGFwcHMuIEFkZGVkIFhNUyBob29rcy4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBtZW1zZXQoKSB0byBwcmV2ZW50IGEgZGVidWdnZXIgc2VnZmF1bHQgY2F1c2VkIGJ5Cgl1bmluaXRpYWxpemVkIHBvaW50ZXJzIGluIHRoZSBzdGFicyBsb29rdXAgdGFibGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBIGZldyBmaXhlcy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSdGxBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQgZW50cnkuCgoJKiBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZW5lcmljIGR5bmFtaWMgZGxsIGxvYWRlciB1c2luZyBkbCooKSBBUEkuCglJbmNsdWRlczogc3RkY2FsbC0+Y2RlY2wgbWFwcGluZyBhYmlsaXR5LCBzbm9vcGluZy4KCShUZXN0ZWQgb25seSB3aXRoIGdsaWRlMnguZGxsIC0+IGxpYmdsaWRlMnguc28pCgoJKiBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS90aW1lLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHdpbjMyIGVuaGFuY2VkIGZ1bmN0aW9uYWxpdHkgdG8gdGltZXIgY2FsbGJhY2tzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGJhZCBoYWNrcyBzbyBXcml0ZUNvbnNvbGVPdXRwdXQgd29ya3Mgb24gdnQxMDAgYW5kIFBlZWtNZXNzYWdlCglkb2VzIGF0IGxlYXN0IGEgYml0IG9mIGtleWJvYXJkIGlucHV0LgoKCSogcmVsYXkzMi9zbm9vcC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNob3VsZCBkaXNwbGF5IGFnYWluLgoKU2F0IE9jdCAxMCAxNTo1Mjo0NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglJbXBsZW1lbnRlZCBEU19DRU5URVIgZGlhbG9nIHN0eWxlLgoKCSogbWlzYy9tYWluLmM6IFBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgZnVuY3Rpb24gdG8gYnVpbGQgdGhlIFdpbmRvd3MgbnVtZXJpYyBsYW5ndWFnZSBJRCBmcm9tIGxhbmd1YWdlLAoJY29kZSwgY2hhcnNldCBhbmQgZGlhbGVjdCBzdHJpbmdzLCBsaWtlIHVzZWQgYnkgVW5peCBMQU5HIHZhcmlhYmxlLgoKCSogb2xlL29sZTJubHMuYywgb2xlL25scy9SRUFETUUsIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvKi5ubHM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCU1vcmUgTkxTIGRhdGEuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJRml4ZWQgYSBsb3Qgb2YgYnVncyBpbiBkZHJhdy5jIHRvIG1ha2UgeGxpYiBzdXBwb3J0IHdvcmsuCglSdW5zIHN1Y2Nlc3NmdWxseSBUUjJEZW1vIGFuZCBKYXp6IEphY2tyYWJiaXQgSUkgRGVtbyEKCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IENsaWZmIFdyaWdodCA8Y2xpZmZAc25pcGU0NDQub3JnPgoJQWRkZWQgREMgb2JqZWN0IHR5cGUgdG8gdGhlIGxpc3Qgb2YgdmFsaWQgb2JqZWN0cyB0aGF0IGNhbiBiZSBkZWxldGVkCglieSBEZWxldGVPYmplY3QzMi4KClN1biBPY3QgIDQgMTg6MjA6MjkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZzoKCVN0YXJ0aW5nIG5ldyBmb3JtYXQgY2hhbmdlbG9nIChvbGRlciBjaGFuZ2VzIG1vdmVkIHRvCglkb2N1bWVudGF0aW9uL0NoYW5nZUxvZy5PTEQpLgo=