ZGlmZiAtLWdpdCBhL2RvYy9IT1dUTy9wcm94eV9jZXJ0aWZpY2F0ZXMudHh0IGIvZG9jL0hPV1RPL3Byb3h5X2NlcnRpZmljYXRlcy50eHQKaW5kZXggZjk4ZWMzNi4uMjY2NmE3OSAxMDA2NDQKLS0tIGEvZG9jL0hPV1RPL3Byb3h5X2NlcnRpZmljYXRlcy50eHQKKysrIGIvZG9jL0hPV1RPL3Byb3h5X2NlcnRpZmljYXRlcy50eHQKQEAgLTMsNzIgKzMsNjggQEAKIAogMC4gV0FSTklORwogCi1OT05FIE9GIFRIRSBDT0RFIFBSRVNFTlRFRCBIRVJFIEhBVkUgQkVFTiBDSEVDS0VEISAgVGhleSBhcmUganVzdCBhbgotZXhhbXBsZSB0byBzaG93IHlvdSBob3cgdGhpbmdzIGNhbiBiZSBkb25lLiAgVGhlcmUgbWF5IGJlIHR5cG9zIG9yCi10eXBlIGNvbmZsaWN0cywgYW5kIHlvdSB3aWxsIGhhdmUgdG8gcmVzb2x2ZSB0aGVtLgorTk9ORSBPRiBUSEUgQ09ERSBQUkVTRU5URUQgSEVSRSBIQVMgQkVFTiBDSEVDS0VEISAgVGhlIGNvZGUgaXMganVzdCBleGFtcGxlcyB0bworc2hvdyB5b3UgaG93IHRoaW5ncyBjb3VsZCBiZSBkb25lLiAgVGhlcmUgbWlnaHQgYmUgdHlwb3Mgb3IgdHlwZSBjb25mbGljdHMsIGFuZAoreW91IHdpbGwgaGF2ZSB0byByZXNvbHZlIHRoZW0uCiAKIDEuIEludHJvZHVjdGlvbgogCi1Qcm94eSBjZXJ0aWZpY2F0ZXMgYXJlIGRlZmluZWQgaW4gUkZDIDM4MjAuICBUaGV5IGFyZSByZWFsbHkgdXN1YWwKLWNlcnRpZmljYXRlcyB3aXRoIHRoZSBtYW5kYXRvcnkgZXh0ZW5zaW9uIHByb3h5Q2VydEluZm8uCitQcm94eSBjZXJ0aWZpY2F0ZXMgYXJlIGRlZmluZWQgaW4gUkZDIDM4MjAuICBUaGV5IGFyZSByZWFsbHkgdXN1YWwgY2VydGlmaWNhdGVzCit3aXRoIHRoZSBtYW5kYXRvcnkgZXh0ZW5zaW9uIHByb3h5Q2VydEluZm8uCiAKLVByb3h5IGNlcnRpZmljYXRlcyBhcmUgaXNzdWVkIGJ5IGFuIEVuZCBFbnRpdHkgKHR5cGljYWxseSBhIHVzZXIpLAotZWl0aGVyIGRpcmVjdGx5IHdpdGggdGhlIEVFIGNlcnRpZmljYXRlIGFzIGlzc3VpbmcgY2VydGlmaWNhdGUsIG9yIGJ5Ci1leHRlbnNpb24gdGhyb3VnaCBhbiBhbHJlYWR5IGlzc3VlZCBwcm94eSBjZXJ0aWZpY2F0ZS4uICBUaGV5IGFyZSB1c2VkCi10byBleHRlbmQgcmlnaHRzIHRvIHNvbWUgb3RoZXIgZW50aXR5IChhIGNvbXB1dGVyIHByb2Nlc3MsIHR5cGljYWxseSwKLW9yIHNvbWV0aW1lcyB0byB0aGUgdXNlciBpdHNlbGYpLCBzbyBpdCBjYW4gcGVyZm9ybSBvcGVyYXRpb25zIGluIHRoZQotbmFtZSBvZiB0aGUgb3duZXIgb2YgdGhlIEVFIGNlcnRpZmljYXRlLgorUHJveHkgY2VydGlmaWNhdGVzIGFyZSBpc3N1ZWQgYnkgYW4gRW5kIEVudGl0eSAodHlwaWNhbGx5IGEgdXNlciksIGVpdGhlcgorZGlyZWN0bHkgd2l0aCB0aGUgRUUgY2VydGlmaWNhdGUgYXMgaXNzdWluZyBjZXJ0aWZpY2F0ZSwgb3IgYnkgZXh0ZW5zaW9uIHRocm91Z2gKK2FuIGFscmVhZHkgaXNzdWVkIHByb3h5IGNlcnRpZmljYXRlLiAgUHJveHkgY2VydGlmaWNhdGVzIGFyZSB1c2VkIHRvIGV4dGVuZAorcmlnaHRzIHRvIHNvbWUgb3RoZXIgZW50aXR5IChhIGNvbXB1dGVyIHByb2Nlc3MsIHR5cGljYWxseSwgb3Igc29tZXRpbWVzIHRvIHRoZQordXNlciBpdHNlbGYpLiAgVGhpcyBhbGxvd3MgdGhlIGVudGl0eSB0byBwZXJmb3JtIG9wZXJhdGlvbnMgb24gYmVoYWxmIG9mIHRoZQorb3duZXIgb2YgdGhlIEVFIGNlcnRpZmljYXRlLgogCiBTZWUgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzgyMC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogMi4gQSB3YXJuaW5nIGFib3V0IHByb3h5IGNlcnRpZmljYXRlcwogCi1Ob29uZSBzZWVtcyB0byBoYXZlIHRlc3RlZCBwcm94eSBjZXJ0aWZpY2F0ZXMgd2l0aCBzZWN1cml0eSBpbiBtaW5kLgotQmFzaWNhbGx5LCB0byB0aGlzIGRhdGUsIGl0IHNlZW1zIHRoYXQgcHJveHkgY2VydGlmaWNhdGVzIGhhdmUgb25seQotYmVlbiB1c2VkIGluIGEgd29ybGQgdGhhdCdzIGhpZ2hseSBhd2FyZSBvZiB0aGVtLiAgV2hhdCB3b3VsZCBoYXBwZW4KLWlmIGFuIHVuc3VzcGVjdGluZyBhcHBsaWNhdGlvbiBpcyB0byB2YWxpZGF0ZSBhIGNoYWluIG9mIGNlcnRpZmljYXRlcwotdGhhdCBjb250YWlucyBwcm94eSBjZXJ0aWZpY2F0ZXM/ICBJdCB3b3VsZCB1c3VhbGx5IGNvbnNpZGVyIHRoZSBsZWFmCi10byBiZSB0aGUgY2VydGlmaWNhdGUgdG8gY2hlY2sgZm9yIGF1dGhvcmlzYXRpb24gZGF0YSwgYW5kIHNpbmNlIHByb3h5Ci1jZXJ0aWZpY2F0ZXMgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIEVFIGNlcnRpZmljYXRlIG93bmVyIGFsb25lLCBpdCdzCi13b3VsZCBiZSBub3JtYWwgdG8gY29uc2lkZXIgd2hhdCB0aGUgRUUgY2VydGlmaWNhdGUgb3duZXIgY291bGQgZG8KLXdpdGggdGhlbS4KK05vIG9uZSBzZWVtcyB0byBoYXZlIHRlc3RlZCBwcm94eSBjZXJ0aWZpY2F0ZXMgd2l0aCBzZWN1cml0eSBpbiBtaW5kLiAgVG8gdGhpcworZGF0ZSwgaXQgc2VlbXMgdGhhdCBwcm94eSBjZXJ0aWZpY2F0ZXMgaGF2ZSBvbmx5IGJlZW4gdXNlZCBpbiBhIGNvbnRleHQgaGlnaGx5Cithd2FyZSBvZiB0aGVtLgogCi1zdWJqZWN0QWx0TmFtZSBhbmQgaXNzdWVyQWx0TmFtZSBhcmUgZm9yYmlkZGVuIGluIHByb3h5IGNlcnRpZmljYXRlcywKLWFuZCB0aGlzIGlzIGVuZm9yY2VkIGluIE9wZW5TU0wuICBUaGUgc3ViamVjdCBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZQotaXNzdWVyLCB3aXRoIG9uZSBjb21tb25OYW1lIGFkZGVkIG9uLgorRXhpc3RpbmcgYXBwbGljYXRpb25zIG1pZ2h0IG1pc2JlaGF2ZSB3aGVuIHRyeWluZyB0byB2YWxpZGF0ZSBhIGNoYWluIG9mCitjZXJ0aWZpY2F0ZXMgd2hpY2ggdXNlIGEgcHJveHkgY2VydGlmaWNhdGUuICBUaGV5IG1pZ2h0IGluY29ycmVjdGx5IGNvbnNpZGVyIHRoZQorbGVhZiB0byBiZSB0aGUgY2VydGlmaWNhdGUgdG8gY2hlY2sgZm9yIGF1dGhvcmlzYXRpb24gZGF0YSwgd2hpY2ggaXMgY29udHJvbGxlZAorYnkgdGhlIEVFIGNlcnRpZmljYXRlIG93bmVyLgogCi1Qb3NzaWJsZSB0aHJlYXRzIGFyZSwgYXMgZmFyIGFzIGhhcyBiZWVuIGltYWdpbmVkIHNvIGZhcjoKK3N1YmplY3RBbHROYW1lIGFuZCBpc3N1ZXJBbHROYW1lIGFyZSBmb3JiaWRkZW4gaW4gcHJveHkgY2VydGlmaWNhdGVzLCBhbmQgdGhpcworaXMgZW5mb3JjZWQgaW4gT3BlblNTTC4gIFRoZSBzdWJqZWN0IG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIGlzc3Vlciwgd2l0aCBvbmUKK2NvbW1vbk5hbWUgYWRkZWQgb24uCisKK1Bvc3NpYmxlIHRocmVhdHMgd2UgY2FuIHRoaW5rIG9mIGF0IHRoaXMgdGltZSBpbmNsdWRlOgogCiAgLSBpbXBlcnNvbmF0aW9uIHRocm91Z2ggY29tbW9uTmFtZSAodGhpbmsgc2VydmVyIGNlcnRpZmljYXRlcykuCi0gLSB1c2Ugb2YgYWRkaXRpb25hbCBleHRlbnNpb25zLCBwb3NzaWJseSBub24tc3RhbmRhcmQgb25lcyB1c2VkIGluCi0gICBjZXJ0YWluIGVudmlyb25tZW50cywgdGhhdCB3b3VsZCBncmFudCBleHRyYSBvciBkaWZmZXJlbnQKLSAgIGF1dGhvcmlzYXRpb24gcmlnaHRzLgorIC0gdXNlIG9mIGFkZGl0aW9uYWwgZXh0ZW5zaW9ucywgcG9zc2libHkgbm9uLXN0YW5kYXJkIG9uZXMgdXNlZCBpbiBjZXJ0YWluCisgICBlbnZpcm9ubWVudHMsIHRoYXQgd291bGQgZ3JhbnQgZXh0cmEgb3IgZGlmZmVyZW50IGF1dGhvcmlzYXRpb24gcmlnaHRzLgogCi1Gb3IgdGhpcyByZWFzb24sIE9wZW5TU0wgcmVxdWlyZXMgdGhhdCB0aGUgdXNlIG9mIHByb3h5IGNlcnRpZmljYXRlcwotYmUgZXhwbGljaXRlbHkgYWxsb3dlZC4gIEN1cnJlbnRseSwgdGhpcyBjYW4gYmUgZG9uZSB1c2luZyB0aGUKLWZvbGxvd2luZyBtZXRob2RzOgorRm9yIHRoZXNlIHJlYXNvbnMsIE9wZW5TU0wgcmVxdWlyZXMgdGhhdCB0aGUgdXNlIG9mIHByb3h5IGNlcnRpZmljYXRlcyBiZQorZXhwbGljaXRseSBhbGxvd2VkLiAgQ3VycmVudGx5LCB0aGlzIGNhbiBiZSBkb25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAotIC0gaWYgdGhlIGFwcGxpY2F0aW9uIGNhbGxzIFg1MDlfdmVyaWZ5X2NlcnQoKSBpdHNlbGYsIGl0IGNhbiBkbyB0aGUKLSAgIGZvbGxvd2luZyBwcmlvciB0byB0aGF0IGNhbGwgKGN0eCBpcyB0aGUgcG9pbnRlciBwYXNzZWQgaW4gdGhlIGNhbGwKLSAgIHRvIFg1MDlfdmVyaWZ5X2NlcnQoKSk6CisgLSBpZiB0aGUgYXBwbGljYXRpb24gZGlyZWN0bHkgY2FsbHMgWDUwOV92ZXJpZnlfY2VydCgpLCBpdCBjYW4gZmlyc3QgY2FsbDoKIAotCVg1MDlfU1RPUkVfQ1RYX3NldF9mbGFncyhjdHgsIFg1MDlfVl9GTEFHX0FMTE9XX1BST1hZX0NFUlRTKTsKKyAgIFg1MDlfU1RPUkVfQ1RYX3NldF9mbGFncyhjdHgsIFg1MDlfVl9GTEFHX0FMTE9XX1BST1hZX0NFUlRTKTsKIAotIC0gaW4gYWxsIG90aGVyIGNhc2VzLCBwcm94eSBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGNhbiBiZSBlbmFibGVkCi0gICBiZWZvcmUgc3RhcnRpbmcgdGhlIGFwcGxpY2F0aW9uIGJ5IHNldHRpbmcgdGhlIGVudmlybm9tZW50IHZhcmlhYmxlCi0gICBPUEVOU1NMX0FMTE9XX1BST1hZX0NFUlRTIHdpdGggc29tZSBub24tZW1wdHkgdmFsdWUuCisgICBXaGVyZSBjdHggaXMgdGhlIHBvaW50ZXIgd2hpY2ggdGhlbiBnZXRzIHBhc3NlZCB0byBYNTA5X3ZlcmlmeV9jZXJ0KCkuCiAKLVRoZXJlIGFyZSB0aG91Z2h0cyB0byBhbGxvdyBwcm94eSBjZXJ0aWZpY2F0ZXMgd2l0aCBhIGxpbmUgaW4gdGhlCi1kZWZhdWx0IG9wZW5zc2wuY25mLCBidXQgdGhhdCdzIHN0aWxsIGluIHRoZSBmdXR1cmUuCisgLSBwcm94eSBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGNhbiBiZSBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgYXBwbGljYXRpb24KKyAgIGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE9QRU5TU0xfQUxMT1dfUFJPWFlfQ0VSVFMuCisKK0luIHRoZSBmdXR1cmUsIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGVuYWJsZSBwcm94eSBjZXJ0aWZpY2F0ZXMgYnkgZWRpdGluZworb3BlbnNzbC5jbmYuCiAKIAotMy4gSG93IHRvIGNyZWF0ZSBwcm94eSBjZXJpZmljYXRlcworMy4gSG93IHRvIGNyZWF0ZSBwcm94eSBjZXJ0aWZpY2F0ZXMKIAotSXQncyBxdWl0ZSBlYXN5IHRvIGNyZWF0ZSBwcm94eSBjZXJ0aWZpY2F0ZXMsIGJ5IHRha2luZyBhZHZhbnRhZ2Ugb2YKLXRoZSBsYWNrIG9mIGNoZWNrcyBvZiB0aGUgJ29wZW5zc2wgeDUwOScgYXBwbGljYXRpb24gKCphaGVtKikuICBCdXQKLWZpcnN0LCB5b3UgbmVlZCB0byBjcmVhdGUgYSBjb25maWd1cmF0aW9uIHNlY3Rpb24gdGhhdCBjb250YWlucyBhCi1kZWZpbml0aW9uIG9mIHRoZSBwcm94eUNlcnRJbmZvIGV4dGVuc2lvbiwgYSBsaXR0bGUgbGlrZSB0aGlzOgorQ3JlYXRpbmcgcHJveHkgY2VydGlmaWNhdGVzIGlzIHF1aXRlIGVhc3ksIGJ5IHRha2luZyBhZHZhbnRhZ2Ugb2YgYSBsYWNrIG9mCitjaGVja3MgaW4gdGhlICdvcGVuc3NsIHg1MDknIGFwcGxpY2F0aW9uICgqYWhlbSopLiAgWW91IG11c3QgZmlyc3QgY3JlYXRlIGEKK2NvbmZpZ3VyYXRpb24gc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBvZiB0aGUgcHJveHlDZXJ0SW5mbyBleHRlbnNpb24sCitmb3IgZXhhbXBsZToKIAogICBbIHYzX3Byb3h5IF0KICAgIyBBIHByb3h5IGNlcnRpZmljYXRlIE1VU1QgTkVWRVIgYmUgYSBDQSBjZXJ0aWZpY2F0ZS4KQEAgLTc3LDEwICs3MywxMCBAQAogICAjIFVzdWFsIGF1dGhvcml0eSBrZXkgSUQKICAgYXV0aG9yaXR5S2V5SWRlbnRpZmllcj1rZXlpZCxpc3N1ZXI6YWx3YXlzCiAKLSAgIyBOb3csIGZvciB0aGUgZXh0ZW5zaW9uIHRoYXQgbWFya3MgdGhpcyBjZXJ0aWZpY2F0ZSBhcyBhIHByb3h5IG9uZQorICAjIFRoZSBleHRlbnNpb24gd2hpY2ggbWFya3MgdGhpcyBjZXJ0aWZpY2F0ZSBhcyBhIHByb3h5CiAgIHByb3h5Q2VydEluZm89Y3JpdGljYWwsbGFuZ3VhZ2U6aWQtcHBsLWFueUxhbmd1YWdlLHBhdGhsZW46MSxwb2xpY3k6dGV4dDpBQgogCi1JdCdzIGFsc28gcG9zc2libGUgdG8gZ2l2ZSB0aGUgcHJveHkgZXh0ZW5zaW9uIGluIGEgc2VwYXJhdGUgc2VjdGlvbjoKK0l0J3MgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZSBwcm94eSBleHRlbnNpb24gaW4gYSBzZXBhcmF0ZSBzZWN0aW9uOgogCiAgIHByb3h5Q2VydEluZm89Y3JpdGljYWwsQHByb3h5X2V4dAogCkBAIC04OSwzOCArODUsMzIgQEAKICAgcGF0aGxlbj0wCiAgIHBvbGljeT10ZXh0OkJDCiAKLVRoZSBwb2xpY3kgdmFsdWUgaGFzIGEgc3BlY2lmaWMgc3ludGF4LCB7c3ludGFnfTp7c3RyaW5nfSwgd2hlcmUgdGhlCi1zeW50YWcgZGV0ZXJtaW5lcyB3aGF0IHdpbGwgYmUgZG9uZSB3aXRoIHRoZSBzdHJpbmcuICBUaGUgcmVjb2duaXNlZAotc3ludGFncyBhcmUgYXMgZm9sbG93czoKK1RoZSBwb2xpY3kgdmFsdWUgaGFzIGEgc3BlY2lmaWMgc3ludGF4LCB7c3ludGFnfTp7c3RyaW5nfSwgd2hlcmUgdGhlIHN5bnRhZworZGV0ZXJtaW5lcyB3aGF0IHdpbGwgYmUgZG9uZSB3aXRoIHRoZSBzdHJpbmcuICBUaGUgZm9sbG93aW5nIHN5bnRhZ3MgYXJlCityZWNvZ25pc2VkOgogCi0gIHRleHQJaW5kaWNhdGVzIHRoYXQgdGhlIHN0cmluZyBpcyBzaW1wbHkgdGhlIGJ5dGVzLCBub3QKLQllbmNvZGVkIGluIGFueSBraW5kIG9mIHdheToKKyAgdGV4dAlpbmRpY2F0ZXMgdGhhdCB0aGUgc3RyaW5nIGlzIHNpbXBseSBieXRlcywgd2l0aG91dCBhbnkgZW5jb2Rpbmc6CiAKLQkJcG9saWN5PXRleHQ6cuRrc232cmflcworICAgIAkJcG9saWN5PXRleHQ6csOka3Ntw7ZyZ8OlcwogCi0JUHJldmlvdXMgdmVyc2lvbnMgb2YgdGhpcyBkZXNpZ24gaGFkIGEgc3BlY2lmaWMgdGFnCi0JZm9yIFVURi04IHRleHQuICBIb3dldmVyLCBzaW5jZSB0aGUgYnl0ZXMgYXJlIGNvcGllZAotCWFzLWlzIGFueXdheSwgdGhlcmUncyBubyBuZWVkIGZvciBpdC4gIEluc3RlYWQsIHVzZQotCXRoZSB0ZXh0OiB0YWcsIGxpa2UgdGhpczoKKyAgCSAgICBQcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGlzIGRlc2lnbiBoYWQgYSBzcGVjaWZpYyB0YWcgZm9yIFVURi04IHRleHQuCisgICAgICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSBieXRlcyBhcmUgY29waWVkIGFzLWlzIGFueXdheSwgdGhlcmUgaXMgbm8gbmVlZCBmb3IKKyAgICAgICAgc3VjaCBhIHNwZWNpZmljIHRhZy4KIAotCQlwb2xpY3k9dGV4dDpyw6Rrc23DtnJnw6VzCisgIGhleAkgIGluZGljYXRlcyB0aGUgc3RyaW5nIGlzIGVuY29kZWQgaW4gaGV4LCB3aXRoIGNvbG9ucyBiZXR3ZWVuIGVhY2ggYnl0ZQorICAgICAgICAoZXZlcnkgc2Vjb25kIGhleCBkaWdpdCk6CiAKLSAgaGV4CWluZGljYXRlcyB0aGUgc3RyaW5nIGlzIGVuY29kZWQgaW4gaGV4LCB3aXRoIGNvbG9ucwotCWJldHdlZW4gZWFjaCBieXRlIChldmVyeSBzZWNvbmQgaGV4IGRpZ2l0KToKKyAgICAgCSAgcG9saWN5PWhleDo3MjpFNDo2Qjo3Mzo2RDpGNjo3Mjo2NzpFNTo3MwogCi0JCXBvbGljeT1oZXg6NzI6RTQ6NkI6NzM6NkQ6RjY6NzI6Njc6RTU6NzMKKyAgICAgICAgUHJldmlvdXMgdmVyc2lvbnMgb2YgdGhpcyBkZXNpZ24gaGFkIGEgdGFnIHRvIGluc2VydCBhIGNvbXBsZXRlIERFUgorICAgICAgICBibG9iLiAgSG93ZXZlciwgdGhlIG9ubHkgbGVnYWwgdXNlIGZvciB0aGlzIHdvdWxkIGJlIHRvIHN1cnJvdW5kIHRoZQorICAgICAgICBieXRlcyB0aGF0IHdvdWxkIGdvIHdpdGggdGhlIGhleDogdGFnIHdpdGggd2hhdGV2ZXIgaXMgbmVlZGVkIHRvCisgICAgICAgIGNvbnN0cnVjdCBhIGNvcnJlY3QgT0NURVQgU1RSSU5HLiAgVGhlIERFUiB0YWcgdGhlcmVmb3JlIGZlbHQKKyAgICAgICAgc3VwZXJmbHVvdXMsIGFuZCB3YXMgcmVtb3ZlZC4KIAotCVByZXZpb3VzIHZlcnNpb25zIG9mIHRoaXMgZGVzaWduIGhhZCBhIHRhZyB0byBpbnNlcnQgYQotCWNvbXBsZXRlIERFUiBibG9iLiAgSG93ZXZlciwgdGhlIG9ubHkgbGVnYWwgdXNlIGZvcgotCXRoaXMgd291bGQgYmUgdG8gc3Vycm91bmQgdGhlIGJ5dGVzIHRoYXQgd291bGQgZ28gd2l0aAotCXRoZSBoZXg6IHRhZyB3aXRoIHdoYXQncyBuZWVkZWQgdG8gY29uc3RydWN0IGEgY29ycmVjdAotCU9DVEVUIFNUUklORy4gIFNpbmNlIGhleDogZG9lcyB0aGF0LCB0aGUgREVSIHRhZyBmZWx0Ci0Jc3VwZXJmbHVvdXMsIGFuZCB3YXMgdGhlcmVmb3JlIHJlbW92ZWQuCi0KLSAgZmlsZQlpbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBvZiB0aGUgcG9saWN5IHNob3VsZCByZWFsbHkgYmUKLQl0YWtlbiBmcm9tIGEgZmlsZS4gIFRoZSBzdHJpbmcgaXMgdGhlbiByZWFsbHkgYSBmaWxlCi0JbmFtZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBwb2xpY2llcyB0aGF0IGFyZSBsYXJnZQotCShtb3JlIHRoYW4gYSBmZXcgb2YgbGluZXMpIFhNTCBkb2N1bWVudHMsIGZvciBleGFtcGxlLgorICBmaWxlICBpbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBvZiB0aGUgcG9saWN5IHNob3VsZCByZWFsbHkgYmUgdGFrZW4gZnJvbSBhCisgICAgICAgIGZpbGUuICBUaGUgc3RyaW5nIGlzIHRoZW4gcmVhbGx5IGEgZmlsZSBuYW1lLiAgVGhpcyBpcyB1c2VmdWwgZm9yCisgICAgICAgIHBvbGljaWVzIHRoYXQgYXJlIGxhcmdlIChtb3JlIHRoYW4gYSBmZXcgbGluZXMsIGUuZy4gWE1MIGRvY3VtZW50cykuCiAKIFRoZSAncG9saWN5JyBzZXR0aW5nIGNhbiBiZSBzcGxpdCB1cCBpbiBtdWx0aXBsZSBsaW5lcyBsaWtlIHRoaXM6CiAKQEAgLTEyOCw1NyArMTE4LDUyIEBACiAgIDEucG9saXN5PSBhIG11bHRpLQogICAyLnBvbGljeT1saW5lIHBvbGljeS4KIAotTk9URTogdGhlIHByb3h5IHBvbGljeSB2YWx1ZSBpcyB0aGUgcGFydCB0aGF0IGRldGVybWluZXMgdGhlIHJpZ2h0cwotZ3JhbnRlZCB0byB0aGUgcHJvY2VzcyB1c2luZyB0aGUgcHJveHkgY2VydGlmaWNhdGUuICBUaGUgdmFsdWUgaXMKLWNvbXBsZXRlbHkgZGVwZW5kZW50IG9uIHRoZSBhcHBsaWNhdGlvbiByZWFkaW5nIGFuZCBpbnRlcnByZXR0aW5nIGl0IQorTk9URTogdGhlIHByb3h5IHBvbGljeSB2YWx1ZSBpcyB0aGUgcGFydCB3aGljaCBkZXRlcm1pbmVzIHRoZSByaWdodHMgZ3JhbnRlZCB0bwordGhlIHByb2Nlc3MgdXNpbmcgdGhlIHByb3h5IGNlcnRpZmljYXRlLiAgVGhlIHZhbHVlIGlzIGNvbXBsZXRlbHkgZGVwZW5kZW50IG9uCit0aGUgYXBwbGljYXRpb24gcmVhZGluZyBhbmQgaW50ZXJwcmV0aW5nIGl0IQogCi1Ob3cgdGhhdCB5b3UgaGF2ZSBjcmVhdGVkIGFuIGV4dGVuc2lvbiBzZWN0aW9uIGZvciB5b3VyIHByb3h5Ci1jZXJ0aWZpY2F0ZSwgeW91IGNhbiBub3cgZWFzaWx5IGNyZWF0ZSBhIHByb3h5IGNlcnRpZmljYXRlIGxpa2UgdGhpczoKK05vdyB0aGF0IHlvdSBoYXZlIGNyZWF0ZWQgYW4gZXh0ZW5zaW9uIHNlY3Rpb24gZm9yIHlvdXIgcHJveHkgY2VydGlmaWNhdGUsIHlvdQorY2FuIGVhc2lseSBjcmVhdGUgYSBwcm94eSBjZXJ0aWZpY2F0ZSBieSBkb2luZzoKIAotICBvcGVuc3NsIHJlcSAtbmV3IC1jb25maWcgb3BlbnNzbC5jbmYgXAotCSAgLW91dCBwcm94eS5yZXEgLWtleW91dCBwcm94eS5rZXkKLSAgb3BlbnNzbCB4NTA5IC1yZXEgLUNBY3JlYXRlc2VyaWFsIC1pbiBwcm94eS5yZXEgLWRheXMgNyBcCi0JICAtb3V0IHByb3h5LmNydCAtQ0EgdXNlci5jcnQgLUNBa2V5IHVzZXIua2V5IFwKLQkgIC1leHRmaWxlIG9wZW5zc2wuY25mIC1leHRlbnNpb25zIHYzX3Byb3h5CisgIG9wZW5zc2wgcmVxIC1uZXcgLWNvbmZpZyBvcGVuc3NsLmNuZiAtb3V0IHByb3h5LnJlcSAta2V5b3V0IHByb3h5LmtleQorICBvcGVuc3NsIHg1MDkgLXJlcSAtQ0FjcmVhdGVzZXJpYWwgLWluIHByb3h5LnJlcSAtZGF5cyA3IC1vdXQgcHJveHkuY3J0IFwKKyAgICAtQ0EgdXNlci5jcnQgLUNBa2V5IHVzZXIua2V5IC1leHRmaWxlIG9wZW5zc2wuY25mIC1leHRlbnNpb25zIHYzX3Byb3h5CiAKLUl0J3MganVzdCBhcyBlYXN5IHRvIGNyZWF0ZSBhIHByb3h5IGNlcnRpZmljYXRlIHVzaW5nIGFub3RoZXIgcHJveHkKLWNlcnRpZmljYXRlIGFzIGlzc3VlciAobm90ZSB0aGF0IEknbSB1c2luZyBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uCi1zZWN0aW9uIGZvciBpdCk6CitZb3UgY2FuIGFsc28gY3JlYXRlIGEgcHJveHkgY2VydGlmaWNhdGUgdXNpbmcgYW5vdGhlciBwcm94eSBjZXJ0aWZpY2F0ZSBhcworaXNzdWVyIChub3RlOiBJJ20gdXNpbmcgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBzZWN0aW9uIGZvciBpdCk6CiAKLSAgb3BlbnNzbCByZXEgLW5ldyAtY29uZmlnIG9wZW5zc2wuY25mIFwKLQkgIC1vdXQgcHJveHkyLnJlcSAta2V5b3V0IHByb3h5Mi5rZXkKLSAgb3BlbnNzbCB4NTA5IC1yZXEgLUNBY3JlYXRlc2VyaWFsIC1pbiBwcm94eTIucmVxIC1kYXlzIDcgXAotCSAgLW91dCBwcm94eTIuY3J0IC1DQSBwcm94eS5jcnQgLUNBa2V5IHByb3h5LmtleSBcCi0JICAtZXh0ZmlsZSBvcGVuc3NsLmNuZiAtZXh0ZW5zaW9ucyB2M19wcm94eTIKKyAgb3BlbnNzbCByZXEgLW5ldyAtY29uZmlnIG9wZW5zc2wuY25mIC1vdXQgcHJveHkyLnJlcSAta2V5b3V0IHByb3h5Mi5rZXkKKyAgb3BlbnNzbCB4NTA5IC1yZXEgLUNBY3JlYXRlc2VyaWFsIC1pbiBwcm94eTIucmVxIC1kYXlzIDcgLW91dCBwcm94eTIuY3J0IFwKKyAgICAtQ0EgcHJveHkuY3J0IC1DQWtleSBwcm94eS5rZXkgLWV4dGZpbGUgb3BlbnNzbC5jbmYgLWV4dGVuc2lvbnMgdjNfcHJveHkyCiAKIAogNC4gSG93IHRvIGhhdmUgeW91ciBhcHBsaWNhdGlvbiBpbnRlcnByZXQgdGhlIHBvbGljeT8KIAotVGhlIGJhc2ljIHdheSB0byBpbnRlcnByZXQgcHJveHkgcG9saWNpZXMgaXMgdG8gcHJlcGFyZSBzb21lIGRlZmF1bHQKLXJpZ2h0cywgdGhlbiBkbyBhIGNoZWNrIG9mIHRoZSBwcm94eSBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IHRoZSBhIGNoYWluCi1vZiBwcm94eSBjZXJ0aWZpY2F0ZXMsIHVzZXIgY2VydGlmaWNhdGUgYW5kIENBIGNlcnRpZmljYXRlcywgYW5kIHNlZQotd2hhdCByaWdodHMgY2FtZSBvdXQgYnkgdGhlIGVuZC4gIFNvdW5kcyBlYXN5LCBodWg/ICBJdCBhbG1vc3QgaXMuCitUaGUgYmFzaWMgd2F5IHRvIGludGVycHJldCBwcm94eSBwb2xpY2llcyBpcyB0byBzdGFydCB3aXRoIHNvbWUgZGVmYXVsdCByaWdodHMsCit0aGVuIGNvbXB1dGUgdGhlIHJlc3VsdGluZyByaWdodHMgYnkgY2hlY2tpbmcgdGhlIHByb3h5IGNlcnRpZmljYXRlIGFnYWluc3QKK3RoZSBjaGFpbiBvZiBwcm94eSBjZXJ0aWZpY2F0ZXMsIHVzZXIgY2VydGlmaWNhdGUgYW5kIENBIGNlcnRpZmljYXRlcy4gWW91IHRoZW4KK3VzZSB0aGUgZmluYWwgY29tcHV0ZWQgcmlnaHRzLiAgU291bmRzIGVhc3ksIGh1aD8gIEl0IGFsbW9zdCBpcy4KIAotVGhlIHNsaWdodGx5IGNvbXBsaWNhdGVkIHBhcnQgaXMgaG93IHRvIHBhc3MgZGF0YSBiZXR3ZWVuIHlvdXIKK1RoZSBzbGlnaHRseSBjb21wbGljYXRlZCBwYXJ0IGlzIGZpZ3VyaW5nIG91dCBob3cgdG8gcGFzcyBkYXRhIGJldHdlZW4geW91cgogYXBwbGljYXRpb24gYW5kIHRoZSBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIHByb2NlZHVyZS4KIAogWW91IG5lZWQgdGhlIGZvbGxvd2luZyBpbmdyZWRpZW50czoKIAotIC0gYSBjYWxsYmFjayByb3V0aW5nIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGV2ZXJ5IGNlcnRpZmljYXRlIHRoYXQncwotICAgdmFsaWRhdGVkLiAgSXQgd2lsbCBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcyBmb3IgZWFjaCBjZXJ0aWZpY2F0ZXMsCi0gICBzbyB5b3UgbXVzdCBiZSBhdHRlbnRpdmUgdG8gd2hlbiBpdCdzIGEgZ29vZCB0aW1lIHRvIGRvIHRoZSBwcm94eQotICAgcG9saWN5IGludGVycHJldGF0aW9uIGFuZCBjaGVjaywgYXMgd2VsbCBhcyB0byBmaWxsIGluIHRoZSBkZWZhdWx0cwotICAgd2hlbiB0aGUgRUUgY2VydGlmaWNhdGUgaXMgY2hlY2tlZC4KKyAtIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZXZlcnkgY2VydGlmaWNhdGUgYmVpbmcKKyAgIHZhbGlkYXRlZC4gIFRoZSBjYWxsYmFjayBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcyBmb3IgZWFjaCBjZXJ0aWZpY2F0ZSwKKyAgIHNvIHlvdSBtdXN0IGJlIGNhcmVmdWwgdG8gZG8gdGhlIHByb3h5IHBvbGljeSBpbnRlcnByZXRhdGlvbiBhdCB0aGUgcmlnaHQKKyAgIHRpbWUuICBZb3UgYWxzbyBuZWVkIHRvIGZpbGwgaW4gdGhlIGRlZmF1bHRzIHdoZW4gdGhlIEVFIGNlcnRpZmljYXRlIGlzCisgICBjaGVja2VkLgogCi0gLSBhIHN0cnVjdHVyZSBvZiBkYXRhIHRoYXQncyBzaGFyZWQgYmV0d2VlbiB5b3VyIGFwcGxpY2F0aW9uIGNvZGUgYW5kCi0gICB0aGUgY2FsbGJhY2suCisgLSBhIGRhdGEgc3RydWN0dXJlIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4geW91ciBhcHBsaWNhdGlvbiBjb2RlIGFuZCB0aGUKKyAgIGNhbGxiYWNrLgogCiAgLSBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCBzZXRzIGl0IGFsbCB1cC4KIAotIC0gYW4gZXhfZGF0YSBpbmRleCBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gaW5kZXggaW50byB0aGUgZ2VuZXJpYwotICAgZXhfZGF0YSBzdG9yZSB0aGF0J3MgYXR0YWNoZWQgdG8gYW4gWDUwOSB2YWxpZGF0aW9uIGNvbnRleHQuCisgLSBhbiBleF9kYXRhIGluZGV4IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhbiBpbmRleCBpbnRvIHRoZSBnZW5lcmljIGV4X2RhdGEKKyAgIHN0b3JlIHRoYXQgaXMgYXR0YWNoZWQgdG8gYW4gWDUwOSB2YWxpZGF0aW9uIGNvbnRleHQuCiAKLVRoaXMgaXMgc29tZSBjb29rYm9vayBjb2RlIGZvciB5b3UgdG8gZmlsbCBpbjoKK0hlcmUgaXMgc29tZSBza2VsZXRvbiBjb2RlIHlvdSBjYW4gZmlsbCBpbjoKIAogICAvKiBJbiB0aGlzIGV4YW1wbGUsIEkgd2lsbCB1c2UgYSB2aWV3IG9mIGdyYW50ZWQgcmlnaHRzIGFzIGEgYml0CiAgICAgIGFycmF5LCBvbmUgYml0IGZvciBlYWNoIHBvc3NpYmxlIHJpZ2h0LiAgKi8KQEAgLTIxMCw3ICsxOTUsNyBAQAogICBzdGF0aWMgaW50IHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpCiAgIHsKICAgICBpZiAob2sgPT0gMSkgLyogSXQncyBSRUFMTFkgaW1wb3J0YW50IHlvdSBrZWVwIHRoZSBwcm94eSBwb2xpY3kKLSAgICAgICAgICAgICAgICAgICAgY2hlY2sgd2l0aGluIHRoaXMgc2VjaW9uLiAgSXQncyBpbXBvcnRhbnQgdG8ga25vdworICAgICAgICAgICAgICAgICAgICBjaGVjayB3aXRoaW4gdGhpcyBzZWN0aW9uLiAgSXQncyBpbXBvcnRhbnQgdG8ga25vdwogICAgICAgICAgICAgICAgICAgICB0aGF0IHdoZW4gb2sgaXMgMSwgdGhlIGNlcnRpZmljYXRlcyBhcmUgY2hlY2tlZAogICAgICAgICAgICAgICAgICAgICBmcm9tIHRvcCB0byBib3R0b20uICBZb3UgZ2V0IHRoZSBDQSByb290IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgcG9zc2libGUgY2hhaW4gb2YgaW50ZXJtZWRpYXRlCkBAIC0yNTAsNyArMjM1LDcgQEAKICAgICAgICAgICAgICAgICAgICBiaXQgYXJyYXkgYW5kIGZpbGwgaXQgd2l0aCB0aGUgcmlnaHRzIGdyYW50ZWQgYnkKICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBwcm94eSBjZXJ0aWZpY2F0ZSwgdGhlbiB1c2UgaXQgYXMgYQogICAgICAgICAgICAgICAgICAgIG1hc2sgb24gdGhlIGFjY3VtdWxhdGVkIHJpZ2h0cyBiaXQgYXJyYXksIGFuZAotICAgICAgICAgICAgICAgICAgIHZvaWzgLCB5b3Ugbm93IGhhdmUgYSBuZXcgYWNjdW11bGF0ZWQgcmlnaHRzIGJpdAorICAgICAgICAgICAgICAgICAgIHZvaWzDoCwgeW91IG5vdyBoYXZlIGEgbmV3IGFjY3VtdWxhdGVkIHJpZ2h0cyBiaXQKICAgICAgICAgICAgICAgICAgICBhcnJheS4gICovCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgaW50IGk7Cg==