ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmOGMxMmFlLi5mMmUxMzBiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAwMy0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgorCisgICAgKiBkb2NzLyo6IHNlcmlvdXMgcmV3cml0aW5nIG9mIHRoZSBkb2N1bWVudGF0aW9uCisKKwogMjAwMy0wMy0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgogCiAgICAgKiBzcmMvdHJ1ZXR5b2UvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBmaXhlZCBhIHNtYWxsIHJvdW5kaW5nIGJ1Zy4KZGlmZiAtLWdpdCBhL0phbWZpbGUgYi9KYW1maWxlCmluZGV4IDJiYTUzYmQuLjNiYTY0NWYgMTAwNjQ0Ci0tLSBhL0phbWZpbGUKKysrIGIvSmFtZmlsZQpAQCAtMTAzLDEwICsxMDMsOSBAQAogSERSUyArPSAkKEZUMl9JTkNMVURFKSA7CiAKIAotI1N1YkRpckhkciArPSAkKEZUMl9JTkNMVURFKSA7Ci0KICMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSBpZiB5b3Ugd2FudCB0byBidWlsZCBpbmRpdmlkdWFsIHNvdXJjZSBmaWxlcwotIyBmb3IgZWFjaCBGcmVlVHlwZSAyIG1vZHVsZS4KKyMgZm9yIGVhY2ggRnJlZVR5cGUgMiBtb2R1bGUuIHRoaXMgaXMgb25seSB1c2VmdWwgZHVyaW5nIGRldmVsb3BtZW50LCBhbmQKKyMgaXMgYmV0dGVyIGRlZmluZWQgYXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYW55d2F5ICEKICMKICMgRlQyX01VTFRJID0gdHJ1ZSA7CiAKZGlmZiAtLWdpdCBhL2RvY3MvQlVHUyBiL2RvY3MvQlVHUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2OGM2OC4uMDAwMDAwMAotLS0gYS9kb2NzL0JVR1MKKysrIC9kZXYvbnVsbApAQCAtMSwyNzUgKzAsMCBAQAotTGlzdCBvZiBrbm93biBGcmVlVHlwZSAyIEJ1Z3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSJJZGVudGlmaWVyIiBpcyBhIHN0cmluZyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgYnVnLiAgQSBtb3JlIGRldGFpbGVkCi1kZXNjcmlwdGlvbiBvZiB0aGUgYnVnIGlzIGZvdW5kIGJlbG93IHRoZSB0YWJsZSBvZiBvcGVuZWQgYnVncy4KLQotIkRhdGUiIGlzIHRoZSBkYXRlIHdoZW4gdGhlIGJ1ZyB3YXMgZmlyc3QgcmVwb3J0ZWQgb3IgZW50ZXJlZCBpbiB0aGlzCi1kb2N1bWVudC4gIERhdGVzIGFyZSBpbiBfRXVyb3BlYW5fIGZvcm1hdCwgaS5lIGRheS9tb250aC95ZWFyLgotCi0iT3BlbmVkIEJ5IiBpcyB0aGUgbmFtZSBvZiB0aGUgcGVyc29uIHdobyBmaXJzdCBzcG90dGVkIHRoZSBidWcuICBOb3RlIHRoYXQKLXdlIGNhbiB1c2UgYWJicmV2aWF0aW9ucyBoZXJlLCBsaWtlOgotCi0gICJEYXZpZCIgZm9yIERhdmlkIFR1cm5lcgotICAiV2VybmVyIiBmb3IgV2VybmVyIExlbWJlcmcKLSAgZXRjLgotCi0iUmVwcm9kdWNlYWJsZSIgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJ1ZyBjb3VsZCBiZSByZXByb2R1Y2VkIGJ5IHRoZQotZGV2ZWxvcG1lbnQgdGVhbSBvciBub3QgKGl0IGNhbiBiZSBzcGVjaWZpYyB0byBhIGdpdmVuIHBsYXRmb3JtKSwgd2hldGhlciBpdAotYWx3YXlzIGhhcHBlbnMsIG9yIG9ubHkgc3BvcmFkaWNhbGx5LCBldGMuCi0KLQotCi1JLiBPcGVuIGJ1Z3MKLT09PT09PT09PT09PQotCi0KLUlkZW50aWZpZXIgICAgICAgICAgICAgICAgIERhdGUgICAgICAgT3BlbmVkIGJ5ICAgICAgICAgICAgICAgIFJlcHJvZHVjZWFibGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTk8tQ0lELUNNQVBTICAgICAgICAgICAgMTMtMDktMjAwMSAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICBhbHdheXMKLUJBRC1UVC1SRU5ERVJJTkcgICAgICAgIDEyLTA5LTIwMDEgICAgIFBhdWwgUGVkcmlhbmEgICAgICAgICAgICAgPwotQkFELVRISU4tTElORVMgICAgICAgICAgMTMtMDktMjAwMSAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICA/Ci1OT1QtV0lORE9XUy1NRVRSSUNTICAgICAwNy0xMC0yMDAxICAgICBEYXZpZCAgICAgICAgICAgICAgICAgICAgIGFsd2F5cwotQURWQU5DRUQtQ09NUE9TSVRFUyAgICAgMjUtMTAtMjAwMSAgICAgR2VvcmdlIFdpbGxpYW1zICAgICAgICAgICBhbHdheXMKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS1FTkQtT0YtT1BFTkVELUJVR1MtVEFCTEUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotCi1JSS4gQ2xvc2VkIGJ1Z3MKLT09PT09PT09PT09PT09PQotCi0KLUlkZW50aWZpZXIgICAgICAgICAgICAgICAgRGF0ZSAgICAgICAgIENsb3NlZCBieSAgICAgICAgICAgICAgICBDbG9zdXJlIGRhdGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQkFELVRUTkFNRUlELkggICAgICAgICAgMTItMDktMjAwMSAgICAgQW50b2luZSAgICAgICAgICAgICAgICAgICBOL0EKLUJBRC1UMS1DSEFSTUFQICAgICAgICAgIDE1LTA2LTIwMDEgICAgIERhdmlkICAgICAgICAgICAgICAgICAgICAgMi4wLjUKLUJBRC1VTklYWFhYLU5BTUVTICAgICAgIDMwLTA3LTIwMDEgICAgIERhdmlkICAgICAgICAgICAgICAgICAgICAgMi4wLjUKLUdMWVBIX1RPX0JJVE1BUC1CVUcgICAgIDA1LTEyLTIwMDEgICAgIERhdmlkICAgICAgICAgICAgICAgICAgICAgMDUtMTItMjAwMQotQVVUT0hJTlQtTk8tU0JJVFMgICAgICAgMTMtMDktMjAwMSAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICAyLjAuNgotVFQtR0xZUEgtQ1JBU0ggICAgICAgICAgMDEtMDEtMjAwMiAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICAyLjAuNgotVDEtRk9OVC1DUkFTSCAgICAgICAgICAgMDEtMDEtMjAwMiAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICAyLjAuNgotQkFELUFEVkFOQ0VTICAgICAgICAgICAgMzAtMTEtMjAwMSAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICAyLjAuNgotR0xZUEgtVE8tQklUTUFQLUJVRyAgICAgMTUtMTItMjAwMSAgICAgRGF2aWQgICAgICAgICAgICAgICAgICAgICAyLjAuNgotLS0tLS0tLS0tLS0tLS0tLS0tLS1FTkQtT0YtQ0xPU0VELUJVR1MtVEFCTEUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotCi1JSUkuIEJ1ZyBkZXNjcmlwdGlvbnMKLT09PT09PT09PT09PT09PT09PT09PQotCi0KLS0tLSBTVEFSVCBPRiBPUEVOIEJVR1MgLS0tCi0KLQotTk8tQ0lELUNNQVBTCi0KLSAgTm90IGV4YWN0bHkgYSBidWcsIGJ1dCB0aGUgQ0ZGIGZvbnQgZHJpdmVyIGRvZXNuJ3QgYnVpbGQgYSBVbmljb2RlIGNoYXJtYXAKLSAgZnJvbSB0aGUgY29udGVudHMgb2YgZm9udCBmaWxlcywgd2hpY2ggcHJldmVudHMgZWZmaWNpZW50bHkgdXNpbmcgZm9udHMgaW4KLSAgdGhpcyBmb3JtYXQuCi0KLQotCi1CQUQtVFQtUkVOREVSSU5HCi0KLSAgQWNjb3JkaW5nIHRvIFBhdWwgUGVkcmlhbmEgPFBQZWRyaWFuYUBtYXhpcy5jb20+LCB0aGVyZSBpcyBhIHJhdGhlcgotICBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSByZW5kZXJpbmcgb2YgVHJ1ZVR5cGUtaGludGVkIGdseXBocyBvZgotICBjdXJyZW50IEZUMiBhbmQgb2xkIGJldGFzLgotCi0gIFRlc3RzIGFuZCBjb21wYXJpc29ucyBzaG93IGEgX21ham9yXyBkaXNjcmVwYW5jeSBvZiBtb25vY2hyb21lIHRydWV0eXBlCi0gIGJ5dGVjb2RlLWhpbnRlZCBnbHlwaHMhICBTb21ldGhpbmcgc2VlbXMgdG8gYmUgcmVhbGx5IGJyb2tlbiBoZXJlIQotCi0gIFNvbWUgb2YgdGhpcyBoYXMgYmVlbiBmaXhlZCBpbiAyLjAuNjsgdGhlcmUgd2FzIGEgYnVnIGluIHRoZSBUcnVlVHlwZQotICBsb2FkZXIgdGhhdCBwcmV2ZW50ZWQgaXQgZnJvbSBsb2FkaW5nIGNvbXBvc2l0ZXMgY29ycmVjdGx5LiAgSG93ZXZlciwKLSAgdGhlcmUgYXJlIHN0aWxsIF9zdWJ0bGVfIGRpZmZlcmVuY2VzIGJldHdlZW4gRlQxIGFuZCBGVDIgd2hlbiBpdCBjb21lcyB0bwotICBtb25vY2hyb21lIFRydWVUeXBlLWhpbnRlZCBnbHlwaHMgKHRoZSBtYWpvciBkaWZmZXJlbmNlcyBhcmUgZ29uZSB0aG91Z2gpLgotCi0KLQotQkFELVRISU4tTElORVMKLQotICBJdCBzZWVtcyB0aGF0IHRoZSBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgaW4gRnJlZVR5cGUgaGFzIHByb2JsZW1zIHJlbmRlcmluZwotICBleHRyZW1lbHkgdGhpbiBzdHJhaWdodCBsaW5lcyBjb3JyZWN0bHksIGF0IGxlYXN0IHdoZW4gdXNpbmcgdGhlCi0gIEZUX091dGxpbmVfUmVuZGVyKCkgZnVuY3Rpb24uCi0KLQotCi1OT1QtV0lORE9XUy1NRVRSSUNTCi0KLSAgRnJlZVR5cGUgZG9lc24ndCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIG1ldHJpY3MgYXMgV2luZG93cyBmb3IgYXNjZW5kZXIsCi0gIGRlc2NlbmRlciwgYW5kIHRleHQgaGVpZ2h0LCBkZXBlbmRpbmcgb24gY2hhcmFjdGVyIHBpeGVsIHNpemVzLiAgQSBsb3Qgb2YKLSAgdGVzdGluZyBvbiBXaW5kb3dzIGlzIG5lZWRlZCB0byBkZWJ1ZyB0aGlzIHByb3Blcmx5LiAgSXQgbWlnaHQgYmUgZHVlIHRvIGEKLSAgcm91bmRpbmcgYnVnIHdoZW4gY29tcHV0aW5nIHRoZSAieF9zY2FsZSIgYW5kICJ5X3NjYWxlIiB2YWx1ZXMuCi0KLQotCi1BRFZBTkNFRC1DT01QT1NJVEVTCi0KLSAgUHJvdmlkZWQgYnkgR2VvcmdlIFdpbGxpYW1zIDxwZmFlZGl0QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD46Ci0KLSAgICBJIG5vdGljZSB0aGF0IHRydWV0eXBlL3R0Z2xvYWQuYyBvbmx5IHN1cHBvcnRzIEFwcGxlJ3MgZGVmaW5pdGlvbiBvZgotICAgIG9mZnNldHMgZm9yIGNvbXBvc2l0ZSBnbHlwaHMuICBBcHBsZSBhbmQgTWljcm9zb2Z0IGJlaGF2ZSBkaWZmZXJlbnRseSBpZgotICAgIHRoZXJlIGlzIGEgc2NhbGUgZmFjdG9yLiAgT3BlblR5cGUgZGVmaW5lcyBzb21lIGJpdHMgdG8gZGlzYW1iaWd1YXRlLgotICAgIAotICAgIChBIHByb2JsZW0gaW4gYm90aCAyLjAuNCBhbmQgMi4wLjUuKQotICAgIAotICAgIEFwcGxlIHNheXMgKGh0dHA6Ly9mb250cy5hcHBsZS5jb20vVFRSZWZNYW4vUk0wNi9DaGFwNmdseWYuaHRtbCkgdGhhdCBpZgotICAgIGZsYWdzJkFSR1NfQVJFX1hZIGlzIHNldCB0aGVuIHRoZSBvZmZzZXRzIHNob3VsZCBiZSBzY2FsZWQgYnkgdGhlIHNjYWxlCi0gICAgZmFjdG9ycyAoYXMgeW91IGhhdmUgZG9uZSksIGJ1dCB0aGV5IGFsc28gc2F5IHNvbWV0aGluZyB2ZXJ5IGNyeXB0aWMKLSAgICBhYm91dCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIHJvdGF0ZWQgYXQgNDWwICh3aGljaCB5b3UgZG8KLSAgICBub3Qgc3VwcG9ydCkgLS0gU2VlIHRoZSAiSW1wb3J0YW50IiBub3RlIGF0IHRoZSBib3R0b20uCi0gICAgCi0gICAgVGhlIG9sZCB0cnVldHlwZSBzcGVjIGZyb20gTWljcm9zb2Z0IGRpZCBub3QgbWVudGlvbiB0aGlzLiAgVGhlIE9wZW5UeXBlCi0gICAgc3BlYyAoaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvb3RzcGVjL2dseWYuaHRtLAotICAgIGh0dHA6Ly9wYXJ0bmVycy5hZG9iZS5jb20vYXNuL2RldmVsb3Blci9vcGVudHlwZS9nbHlmLmh0bWwpIGRlZmluZXMgdHdvCi0gICAgbmV3IGJpdHMgdG8gZGlzYW1iaWd1YXRlOgotCi0gICAgICBTQ0FMRURfQ09NUE9ORU5UX09GRlNFVCAxMSAKLSAgICAgIENvbXBvc2l0ZSBkZXNpZ25lZCB0byBoYXZlIHRoZSBjb21wb25lbnQgb2Zmc2V0IHNjYWxlZCAoZGVzaWduZWQgZm9yCi0gICAgICBBcHBsZSByYXN0ZXJpemVyKQotCi0gICAgICBVTlNDQUxFRF9DT01QT05FTlRfT0ZGU0VUIDEyIAotICAgICAgQ29tcG9zaXRlIGRlc2lnbmVkIG5vdCB0byBoYXZlIHRoZSBjb21wb25lbnQgb2Zmc2V0IHNjYWxlZCAoZGVzaWduZWQKLSAgICAgIGZvciB0aGUgTWljcm9zb2Z0IFRydWVUeXBlIHJhc3Rlcml6ZXIpCi0gICAgCi0gICAgUGVyaGFwcyB5b3UgY291bGQgYWRkIGEgbG9hZF9mbGFnIHRvIGFsbG93IHRoZSB1c2VyIHRvIGRlZmluZSB0aGUKLSAgICBkZWZhdWx0IHNldHRpbmc/Ci0KLSAgRGF2aWQgc2F5czoKLSAgCi0gICAgV293LCBJIHdhcyBub3QgZXZlbiBhd2FyZSBvZiB0aGlzLCBpdCB3aWxsIHByb2JhYmx5IHRha2UgYSBsaXR0bGUgdGltZQotICAgIHRvIGltcGxlbWVudCBzaW5jZSBJIGRvbid0IGhhdmUgYW55IGZvbnQgdGhhdCBpbXBsZW1lbnQgdGhlc2UKLSAgICAiZmVhdHVyZXMiLCBhbmQgYWxzbyBiZWNhdXNlIEkgYmVsaWV2ZSB0aGF0IHdlJ3JlIHJ1bm5pbmcgb3V0IG9mIGJpdHMKLSAgICBmb3IgImxvYWRfZmxhZyIsIHNvbWUgb3RoZXIgd2F5IHRvIHNldCBwcmVmZXJlbmNlcyBpcyBwcm9iYWJseSBuZWVkZWQuCi0KLQotCi0tLS0gRU5EIE9GIE9QRU4gQlVHUyAtLS0KLQotCi0KLUJBRC1UVE5BTUVJRC5ICi0KLSAgVGhlIGZpbGUgInR0bmFtZWlkLmgiIGNvbnRhaW5zIHZhcmlvdXMgY29uc3RhbnQgbWFjcm8gZGVmaW5pdGlvbnMKLSAgY29ycmVzcG9uZGluZyB0byBpbXBvcnRhbnQgdmFsdWVzIGRlZmluZWQgYnkgdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24uCi0KLSAgSm9lIE1hbiA8dHJtZXRhbEB5YWhvby5jb20uaGs+IHJlcG9ydHMgdGhhdDoKLQotICAgIEFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZnJvbSBUcnVlVHlwZSB2MS42NjoKLQotICAgICAgUGxhdGZvcm0gSUQgPSAzIChNaWNyb3NvZnQpCi0gICAgICB0aGUgRW5jb2RpbmcgSUQgb2YgR0IyMzEyID0gNAotICAgICAgdGhlIEVuY29kaW5nIElEIG9mIGJpZzUgPSAzCi0KLSAgICBIb3dldmVyLCBJIGhhdmUgZm91bmQgdGhhdCBpbiB0dG5hbWVpZC5oOgotCi0gICAgICBUVF9NU19JRF9HQjIzMTIgPSAzCi0gICAgICBUVF9NU19JRF9CSUdfNSA9IDQKLQotICAgIFdoaWNoIG9uZSBpcyBjb3JyZWN0PwotCi0gIEFudG9pbmUgcmVwbGllZCB0aGF0IHRoaXMgd2FzIGEgYnVnIGluIHRoZSBUVCAxLjY2IHNwZWNpZmljYXRpb24sIGFuZCB0aGF0Ci0gIEZyZWVUeXBlIGZvbGxvd2VkIHRoZSBtb3N0IHJlY2VudCBUcnVlVHlwZS9PcGVuVHlwZSBzcGVjaWZpY2F0aW9uIGhlcmUuCi0KLQotCi1BVVRPSElOVC1TQklUUwotCi0gIFdoZW4gdHJ5aW5nIHRvIGxvYWQgYSBnbHlwaCwgd2l0aCB0aGUgYXV0by1oaW50ZXIgYWN0aXZhdGVkIChpLmUuLCB3aGVuCi0gIHVzaW5nIEZUX0xPQURfRk9SQ0VfQVVUT0hJTlQsIG9yIHdoZW4gdGhlIGZvbnQgZHJpdmVyIGRvZXNuJ3QgcHJvdmlkZSBpdHMKLSAgb3duIGhpbnRlciksIGVtYmVkZGVkIGJpdG1hcHMgYXJlIF9uZXZlcl8gbG9hZGVkLCB1bmxpa2UgdGhlIGRlZmF1bHQKLSAgYmVoYXZpb3VyIGRlc2NyaWJlZCBieSB0aGUgQVBJIHNwZWNpZmljYXRpb24uCi0KLSAgVGhpcyBzZWVtcyB0byBiZSBhIGJ1ZyBpbiBGVF9Mb2FkX0dseXBoKCksIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gc29sdmUgaXQKLSAgZWZmaWNpZW50bHkgd2l0aG91dCBtYWtpbmcgYSBmZXcgaW1wb3J0YW50IGludGVybmFsIGNoYW5nZXMgdG8gdGhlCi0gIGxpYnJhcnkncyBkZXNpZ24gKG1vcmUgaW1wb3J0YW50bHksIHRvIHRoZSBmb250IGRyaXZlciBpbnRlcmZhY2UpLgotCi0gIFRoaXMgaGFzIGJlZW4gY29ycmVjdGVkIHdpdGggYSBoYWNrIGluIEZUX0xvYWRfR2x5cGgoKS4gIE1vcmUgaW1wb3J0YW50Ci0gIGludGVybmFsIGNoYW5nZXMgc2hvdWxkIGhlbHAgZ2V0IHJpZCBvZiBpdCB3aXRoIGEgY2xlYW4gc29sdXRpb24gaW4gYQotICBmdXJ0aGVyIHJlbGVhc2UgbGlrZSBGcmVlVHlwZSAyLjEuCi0KLQotCi1CQUQtVDEtQ0hBUk1BUAotCi0gIFR5cGUxIGRyaXZlciBkb2Vzbid0IHJlYWQgImNhY3V0ZSIgYW5kICJsc2xhc2giIGNoYXJhY3RlcnMgZnJvbSBpc284ODU5LTIKLSAgY2hhcnNldC4gIFRob3NlIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCBhcyBNQUMtb25lIGluIGdsbmFtZXMucHksIHNvIHRoZXkKLSAgY2Fubm90IGJlIHNob3duIGluIEFkb2JlIFR5cGUxIGZvbnRzLgotCi0gIChUaGlzIHdhcyBkdWUgdG8gYSBidWcgaW4gdGhlICJnbG5hbWVzLnB5IiBzY3JpcHQgdXNlZCB0byBnZW5lcmF0ZSB0aGUKLSAgdGFibGUgb2YgZ2x5cGggbmFtZXMgaW4gJ3NyYy9wc2F1eC9wc3RhYmxlcy5oJy4pCi0KLQotCi1CQUQtVU5JWFhYWC1OQU1FUwotCi0gIEdseXBoIG5hbWVzIGxpa2UgdW5pWFhYWCBhcmUgbm90IHJlY29nbml6ZWQgYXMgdGhleSBzaG91bGQgYmUuICBJdCBzZWVtcwotICB0aGF0IGNvZGUgaW4gcHNtb2R1bGUuYyBmb3IgdW5pWFhYWCBnbHlwaCBuYW1lcyB3YXMgbmV2ZXIgdGVzdGVkLiAgVGhlCi0gIHBhdGNoIGlzIHZlcnkgc2ltcGxlLgotICAKLSAgKEEgc2ltcGxlIGJ1ZyB0aGF0IHdhcyBsZWZ0IHVuLW5vdGljZWQgZHVlIHRvIHRoZSBmYWN0IHRoYXQgSSBkb24ndCBoYXZlCi0gIGFueSBQb3N0c2NyaXB0IGZvbnQgdGhhdCB1c2UgdGhpcyBjb252ZW50aW9uLCB1bmZvcnR1bmF0ZWx5LikKLQotCi0KLUdMWVBIX1RPX0JJVE1BUC1CVUcKLQotICBDYWxsaW5nIEZUX0dseXBoX1RvX0JpdG1hcCgpIHNvbWV0aW1lcyBtb2RpZmllcyB0aGUgb3JpZ2luYWwgZ2x5cGgKLSAgb3V0bGluZSwgY3JlYXRpbmcgd2VpcmQgYWxpZ25tZW50IGFydGVmYWN0cy4KLSAgCi0gIFRoaXMgc3VidGxlIGJ1ZyB3YXMgcmVhbGx5IGluIHRoZSBmaWxlIGBzcmMvc21vb3RoL2Z0c21vb3RoLmMnLiAKLSAgQmFzaWNhbGx5LCB0aGUgb3V0bGluZSB3YXMgc2hpZnRlZCBiZWZvcmUgcmVuZGVyaW5nIGl0IGludG8gYSBuZXcgYml0bWFwCi0gIGJ1ZmZlci4gIEhvd2V2ZXIsIGl0IHdhc24ndCBwcm9wZXJseSB1bi1zaGlmdGVkIGFmdGVyIHRoYXQgb3BlcmF0aW9uLgotCi0gIFRoaXMgd2FzIG9ubHkgbm90aWNlYWJsZSB3aXRoIGNlcnRhaW4gZ2x5cGhzIG9yIGNlcnRhaW4gZm9udHM7IGl0IGNyZXB0IGluCi0gIGEgbG9uZyB0aW1lIGFnby4KLSAgICAgICAgICAgICAgICAgIAotICBUaGUgc2FtZSBidWcgaGFzIGJlZW4gZml4ZWQgaW4gc3JjL3Jhc3Rlci9mdHJlbmRlcjEuYyBhbHNvLgotICAgICAgICAgICAgICAgICAgCi0KLQotVFQtR0xZUEgtQ1JBU0gKLQotICBUaGUgbGlicmFyeSBjcmFzaGVkIHdoZW4gdHJ5aW5nIHRvIGxvYWQgY2VydGFpbiBnbHlwaHMgZnJvbSBhbgotICBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBUcnVlVHlwZSBmaWxlICh0dDEwOTVtXy50dGYgc3VibWl0dGVkIGJ5IFNjb3R0Ci0gIExvbmcpLgotICAKLSAgSXQgdHVybmVkIG91dCB0aGF0IHRoZSBmb250IGNvbnRhaW5lZCBpbnZhbGlkIGdseXBoIGRhdGEgKGkuZS4gd2FzCi0gIGJyb2tlbiksIGJ1dCB0aGUgVHJ1ZVR5cGUgZ2x5cGggbG9hZGVyIGluIEZyZWVUeXBlIHdhc24ndCBwYXJhbm9pZCBlbm91Z2gsCi0gIHdoaWNoIHJlc3VsdGVkIGluIG5hc3R5IG1lbW9yeSBvdmVyd3JpdGVzIGFsbCBvdmVyIHRoZSBwbGFjZS4KLQotCi0KLVQxLUZPTlQtQ1JBU0gKLQotICBUaGUgbGlicmFyeSBjcmFzaGVkIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdGhlICJTdGFsaW5ncmFkIFJlZ3VsYXIiIGZhY2UgZnJvbQotICB0aGUgInNhZG4ucGZiIiBmb250IGZpbGUgcHJvdmlkZWQgYnkgQW50aG9ueSBGb2sgKGFuZCB0aGUgR25vbWUtUHJpbnQgdGVhbQotICBJIGJlbGlldmUpLgotICAKLSAgVGhpcyB3YXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGZvbnQgbWlzc2VkIGEgZnVsbCBmb250IG5hbWUgZW50cnksCi0gIHRob3VnaCBib2FzdGVkIGEgZmFtaWx5IG5hbWUgYW5kIHBvc3RzY3JpcHQgbmFtZS4gIFRoZSBUeXBlIDEgZmFjZSBsb2FkZXIKLSAgZGlkbid0IGNoZWNrIGZvciB0aGVzZSBwYXRoZXRpYyBjYXNlcyBhbmQgc2VnLWZhdWx0ZWQuCi0KLQotCi1CQUQtQURWQU5DRVMKLQotICBBbGwgc2NhbGFibGUgZm9udCBkcml2ZXJzIHJldHVybmVkIHVuLWZpdHRlZCBnbHlwaCBhZHZhbmNlcyB3aGVuCi0gIEZUX0xPQURfREVGQVVMVCB3YXMgdXNlZCwgd2hpY2ggd2FzIGluY29ycmVjdC4gIFRoaXMgcHJvYmxlbSB3YXMgcHJldHR5Ci0gIG9sZCBidXQgaGFkbid0IGJlZW4gc3BvdHRlZCBiZWNhdXNlIGFsbCB0ZXN0IHByb2dyYW1zIGFjdHVhbGx5IGV4cGxpY2l0bHkKLSAgb3IgaW1wbGljaXRseSAoaS5lLiB0aHJvdWdoIHRoZSBjYWNoZSkgcm91bmRlZCB0aGUgYWR2YW5jZSB3aWR0aHMgb2YKLSAgZ2x5cGhzLgotICAKLSAgVGhpcyByZXN1bHRlZCBpbiBwb29yIHJlbmRlcmluZyBvZiBhIG51bWJlciBvZiBjbGllbnQgYXBwbGljYXRpb25zIGhvd2V2ZXIKLSAgKGl0IGlzIHN0cmFuZ2UgdG8gc2VlIHRoZXkgdG9vayBzbyBsb25nIHRvIG5vdGlmeSB0aGUgRnJlZVR5cGUgdGVhbSkuCi0KLQotCi1HTFlQSC1UTy1CSVRNQVAtQlVHCi0KLSAgRlRfR2x5cGhfVG9fQml0bWFwKCkgZGlkIGluY29ycmVjdGx5IG1vZGlmeSB0aGUgc291cmNlIGdseXBoIGluIGNlcnRhaW4KLSAgY2FzZXMsIHdoaWNoIHJlc3VsdGVkIGluIHJhbmRvbSBiZWhhdmlvdXIgYW5kIGJhZCB0ZXh0IHJlbmRlcmluZy4gIFRoaXMKLSAgd2FzIHNwb3R0ZWQgdG8gYnVncyBpbiBib3RoIHRoZSBtb25vY2hyb21lIGFuZCBzbW9vdGggcmFzdGVyaXplci4KLQotCi09PT0gZW5kIG9mIGZpbGUgPT09CmRpZmYgLS1naXQgYS9kb2NzL0JVSUxEIGIvZG9jcy9CVUlMRApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI1N2M0YS4uMDAwMDAwMAotLS0gYS9kb2NzL0JVSUxECisrKyAvZGV2L251bGwKQEAgLTEsMjc2ICswLDAgQEAKLQotICAgICAgICAgICAgICAgICAgICBGcmVlVHlwZSAyIGNvbXBpbGF0aW9uIGhvdy10bwotICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLUludHJvZHVjdGlvbgotLS0tLS0tLS0tLS0tCi0KLVdlbGNvbWUgIHRvIHRoZSAgRnJlZVR5cGUgMiAgbGlicmFyeS4gICBZb3UnbGwgZmluZCAgaW4gdGhpcyAgZG9jdW1lbnQKLWluc3RydWN0aW9ucyBvbiBob3cgdG8gY29tcGlsZSB0aGUgbGlicmFyeSBvbiB5b3VyIGZhdm9yaXRlIHBsYXRmb3JtLgotCi0KLUkuIFFVSUNLIENPTU1BTkQtTElORSBHVUlERQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgVEhFIEZPTExPV0lORyBXSUxMICBPTkxZIFdPUksgV0lUSCBHTlUgTUFLRSwgIElUIFdJTEwgRkFJTCBNSVNFUkFCTFkKLSAgV0lUSCBPVEhFUiBNQUtFIFRPT0xTLCBGT1IgRVhBTVBMRSAiQlNEIE1BS0UiLgotCi0gIEluc3RhbGwgR05VIE1ha2UgICh2ZXJzaW9uIDMuNzguMSBvciBuZXdlciksIHRoZW4gIHRyeSB0aGUgZm9sbG93aW5nCi0gIG9uIFVuaXggb3IgQ3lnd2luOgotCi0gICAgICAuL2NvbmZpZ3VyZSA8eW91cm9wdGlvbnM+ICAvLyB0aGlzIHdpbGwgc2V0dXAgdGhlIGJ1aWxkCi0gICAgICBtYWtlICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdpbGwgYnVpbGQgdGhlIGxpYnJhcnkKLQotICBvciBldmVuOgotCi0gICAgICBtYWtlIHNldHVwIHVuaXgKLSAgICAgIG1ha2UKLQotICBPbiBXaW4zMiArIFZpc3VhbCBDKys6Ci0KLSAgICAgIG1ha2Ugc2V0dXAgdmlzdWFsYyAgICAvLyBzZXR1cCB0aGUgYnVpbGQgZm9yIFZpc3VhbEMrKyBvbiBXaW4zMgotICAgICAgbWFrZSAgICAgICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBsaWJyYXJ5Ci0KLSAgVGhlbiwgZ28gdG8gdGhlIGBkZW1vcycgZGlyZWN0b3J5IGFuZCB0eXBlCi0KLSAgICAgIG1ha2UKLQotCi0KLSAgSWYgdGhpcyBkb2Vzbid0IHdvcmssIHJlYWQgdGhlIGZvbGxvd2luZy4KLQotCi1JSS4gQ09NTUFORC1MSU5FIENPTVBJTEFUSU9OCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgTm90ZSB0aGF0ICBpZiB5b3UgZG8gbm90IHdhbnQgIHRvIGNvbXBpbGUgRnJlZVR5cGUgMiAgZnJvbSBhIGNvbW1hbmQKLSAgbGluZSBzaGVsbCwgcGxlYXNlIHNraXAgdG8gc2VjdGlvbiBJSUkgYmVsb3cgKERFVEFJTEVEIENPTVBJTEFUSU9OKS4KLQotICBGcmVlVHlwZSAyIGluY2x1ZGVzIGEgcG93ZXJmdWwgYW5kIGZsZXhpYmxlIGJ1aWxkIHN5c3RlbSB0aGF0IGFsbG93cwotICB5b3UgdG8gIGVhc2lseSBjb21waWxlIGl0IG9uICBhIGdyZWF0IHZhcmlldHkgb2YgIHBsYXRmb3JtcyBmcm9tIHRoZQotICBjb21tYW5kIGxpbmUuICBUbyBkbyBzbywganVzdCBmb2xsb3cgdGhlc2Ugc2ltcGxlIGluc3RydWN0aW9uczoKLQotICBhLiBJbnN0YWxsIEdOVSBNYWtlCi0KLSAgICBCZWNhdXNlICBHTlUgTWFrZSAgaXMgIHRoZSAgb25seSBNYWtlICB0b29sICBzdXBwb3J0ZWQgdG8gIGNvbXBpbGUKLSAgICBGcmVlVHlwZSAyLCB5b3Ugc2hvdWxkIGluc3RhbGwgaXQgb24geW91ciBtYWNoaW5lLgotCi0gICAgVGhlIEZyZWVUeXBlIDIgYnVpbGQgc3lzdGVtIHJlbGllcyBvbiBtYW55IGZlYXR1cmVzIHNwZWNpYWwgdG8gR05VCi0gICAgTWFrZSAtLSB0cnlpbmcgdG8gYnVpbGQgdGhlICBsaWJyYXJ5IHdpdGggYW55IG90aGVyIE1ha2UgdG9vbCB3aWxsCi0gICAgKmZhaWwqLgotCi0gICAgTkVBUkxZIEFMTCBPVEhFUiBNQUtFIFRPT0xTIFdJTEwgRkFJTCwgSU5DTFVESU5HICJCU0QgTUFLRSIsIFNPCi0gICAgUkVBTExZIElOU1RBTEwgQSBSRUNFTlQgVkVSU0lPTiBPRiBHTlUgTUFLRSBPTiBZT1VSIFNZU1RFTSEKLQotICAgIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW52b2tpbmcgR05VIE1ha2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBieQotICAgIHR5cGluZyBzb21ldGhpbmcgbGlrZToKLQotICAgICAgICBtYWtlIC12Ci0KLSAgICB0byBkaXNwbGF5IGl0cyB2ZXJzaW9uIG51bWJlci4KLQotICAgIFZFUlNJT04gMy43OC4xIE9SIE5FV0VSIElTIE5FRURFRCEKLQotICBiLiBJbnZva2UgYG1ha2UnCi0KLSAgICBHbyB0byAgdGhlIHJvb3QgIGRpcmVjdG9yeSBvZiBGcmVlVHlwZSAgMiwgdGhlbiBzaW1wbHkgIGludm9rZSBHTlUKLSAgICBNYWtlIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gICBUaGlzIHdpbGwgbGF1bmNoIHRoZSBGcmVlVHlwZSAyIGhvc3QKLSAgICBwbGF0Zm9ybSAgZGV0ZWN0aW9uIHJvdXRpbmVzLiAgIEEgc3VtbWFyeSAgd2lsbCBiZSAgZGlzcGxheWVkLCBmb3IKLSAgICBleGFtcGxlLCBvbiBXaW4zMjoKLQotCi0gICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICAgIEZyZWVUeXBlIGJ1aWxkIHN5c3RlbSAtLSBhdXRvbWF0aWMgc3lzdGVtIGRldGVjdGlvbgotCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgc2V0dGluZ3MgYXJlIHVzZWQ6Ci0KLSAgICAgICAgICBwbGF0Zm9ybSAgICAgICAgICAgICAgICAgICAgIHdpbjMyCi0gICAgICAgICAgY29tcGlsZXIgICAgICAgICAgICAgICAgICAgICBnY2MKLSAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSAgICAgIC4vYnVpbGRzL3dpbjMyCi0gICAgICAgICAgY29uZmlndXJhdGlvbiBydWxlcyAgICAgICAgICAuL2J1aWxkcy93aW4zMi93MzItZ2NjLm1rCi0KLSAgICAgICAgSWYgdGhpcyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIHlvdXIgc3lzdGVtIG9yIHNldHRpbmdzIHBsZWFzZQotICAgICAgICByZW1vdmUgdGhlIGZpbGUgJ2NvbmZpZy5taycgZnJvbSB0aGlzIGRpcmVjdG9yeSB0aGVuIHJlYWQgdGhlCi0gICAgICAgIElOU1RBTEwgZmlsZSBmb3IgaGVscC4KLQotICAgICAgICBPdGhlcndpc2UsIHNpbXBseSB0eXBlICdtYWtlJyBhZ2FpbiB0byBidWlsZCB0aGUgbGlicmFyeS4KLSAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLSAgICBJZiB0aGUgZGV0ZWN0ZWQgc2V0dGluZ3MgY29ycmVzcG9uZCB0byB5b3VyIHBsYXRmb3JtIGFuZCBjb21waWxlciwKLSAgICBza2lwIHRvIHN0ZXAgZS4gIE5vdGUgdGhhdCBpZiB5b3VyIHBsYXRmb3JtIGlzIGNvbXBsZXRlbHkgYWxpZW4gdG8KLSAgICB0aGUgYnVpbGQgc3lzdGVtLCB0aGUgZGV0ZWN0ZWQgcGxhdGZvcm0gd2lsbCBiZSBgYW5zaScuCi0KLQotICBjLiBDb25maWd1cmUgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgYSBkaWZmZXJlbnQgY29tcGlsZXIKLQotICAgIElmIHRoZSBidWlsZCBzeXN0ZW0gY29ycmVjdGx5IGRldGVjdGVkIHlvdXIgcGxhdGZvcm0sIGJ1dCB5b3Ugd2FudAotICAgIHRvIHVzZSBhIGRpZmZlcmVudCBjb21waWxlciAgdGhhbiB0aGUgb25lIHNwZWNpZmllZCBpbiB0aGUgc3VtbWFyeQotICAgIChmb3IgbW9zdCBwbGF0Zm9ybXMsIGdjYyBpcyAgdGhlIGRlZmF1dCBjb21waWxlciksIGludm9rZSBHTlUgTWFrZQotICAgIHdpdGgKLQotICAgICAgICAgbWFrZSBzZXR1cCA8Y29tcGlsZXI+Ci0KLSAgICBGb3IgZXhhbXBsZToKLQotICAgICAgICB0byB1c2UgVmlzdWFsIEMrKyBvbiBXaW4zMiwgdHlwZTogIm1ha2Ugc2V0dXAgdmlzdWFsYyIKLSAgICAgICAgdG8gdXNlIExDQy1XaW4zMiBvbiBXaW4zMiwgdHlwZTogICJtYWtlIHNldHVwIGxjYyIKLSAgICAgICAgdG8gdXNlIEN5Z3dpbiBvbiBXaW4zMiwgdHlwZSAgICAgICJtYWtlIHNldHVwIHVuaXgiCi0KLSAgICBUaGUgIDxjb21waWxlcj4gbmFtZSB0byAgdXNlIGlzICBwbGF0Zm9ybS1kZXBlbmRlbnQuICBUaGUgIGxpc3Qgb2YKLSAgICBhdmFpbGFibGUgIGNvbXBpbGVycyBmb3IgIHlvdXIgIHN5c3RlbSBpcyAgYXZhaWxhYmxlICBpbiB0aGUgIGZpbGUKLSAgICBgYnVpbGRzLzxzeXN0ZW0+L2RldGVjdC5taycgKG5vdGUgIHRoYXQgd2UgIGhvcGUgdG8gbWFrZSAgdGhlIGxpc3QKLSAgICBkaXNwbGF5ZWQgYXQgdXNlciBkZW1hbmQgaW4gdGhlIGZpbmFsIHJlbGVhc2UpLgotCi0gICAgSWYgeW91ICBhcmUgc2F0aXNmaWVkICBieSB0aGUgbmV3ICBjb25maWd1cmF0aW9uIHN1bW1hcnksICBza2lwIHRvCi0gICAgc3RlcCBlLgotCi0gIGQuIENvbmZpZ3VyZSB0aGUgYnVpbGQgc3lzdGVtIGZvciBhbiB1bmtub3duIHBsYXRmb3JtL2NvbXBpbGVyCi0KLSAgICBUaGUgYXV0by1kZXRlY3Rpb24vc2V0dXAgIHBoYXNlIG9mIHRoZSBidWlsZCBzeXN0ZW0gIGNvcGllcyBhIGZpbGUKLSAgICB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkgdW5kZXIgdGhlIG5hbWUgYGNvbmZpZy5taycuCi0KLSAgICBGb3IgICAgZXhhbXBsZSwgICAgb24gICAgT1MvMitnY2MsICAgIGl0ICAgd291bGQgICAgc2ltcGx5ICAgIGNvcHkKLSAgICBgYnVpbGRzL29zMi9vczItZ2NjLm1rJyB0byBgLi9jb25maWcubWsnLgotCi0gICAgSWYgZm9yICBzb21lIHJlYXNvbiB5b3VyICBwbGF0Zm9ybSBpc24ndCBjb3JyZWN0bHkgIGRldGVjdGVkLCBjb3B5Ci0gICAgbWFudWFsbHkgdGhlIGNvbmZpZ3VyYXRpb24gc3ViLW1ha2VmaWxlIHRvIGAuL2NvbmZpZy5taycgYW5kIGdvIHRvCi0gICAgc3RlcCBlLgotCi0gICAgTm90ZSAgdGhhdCAgdGhpcyBmaWxlICBpcyAgYSAgc3ViLU1ha2VmaWxlICB1c2VkIHRvICBzcGVjaWZ5ICBNYWtlCi0gICAgdmFyaWFibGVzICBmb3IgY29tcGlsZXIgIGFuZCBsaW5rZXIgIGludm9jYXRpb24gZHVyaW5nICB0aGUgYnVpbGQuCi0gICAgWW91IGNhbiAgZWFzaWx5IGNyZWF0ZSB5b3VyIG93biAgdmVyc2lvbiBmcm9tIG9uZSAgb2YgdGhlIGV4aXN0aW5nCi0gICAgY29uZmlndXJhdGlvbiBmaWxlcywgIHRoZW4gY29weSBpdCB0byB0aGUgIGN1cnJlbnQgZGlyZWN0b3J5IHVuZGVyCi0gICAgdGhlIG5hbWUgYC4vY29uZmlnLm1rJy4KLQotICBlLiBCdWlsZCB0aGUgbGlicmFyeQotCi0gICAgVGhlIGF1dG8tZGV0ZWN0aW9uL3NldHVwICBwaGFzZSBzaG91bGQgaGF2ZSAgY29waWVkIGEgZmlsZSAgaW4gdGhlCi0gICAgY3VycmVudCAgZGlyZWN0b3J5LCAgY2FsbGVkICAgYC4vY29uZmlnLm1rJy4gIFRoaXMgIGZpbGUgIGNvbnRhaW5zCi0gICAgZGVmaW5pdGlvbnMgb2YgdmFyaW91cyBNYWtlICB2YXJpYWJsZXMgdXNlZCB0byBpbnZva2UgdGhlIGNvbXBpbGVyCi0gICAgYW5kIGxpbmtlciBkdXJpbmcgdGhlIGJ1aWxkLgotCi0gICAgVG8gIGxhdW5jaCAgdGhlIGJ1aWxkLCAgc2ltcGx5ICBpbnZva2UgIEdOVSAgTWFrZSBhZ2FpbjogIFRoZSAgdG9wCi0gICAgTWFrZWZpbGUgd2lsbCBkZXRlY3QgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgcnVuIHRoZSBidWlsZCB3aXRoCi0gICAgaXQuCi0KLSAgZi4gQnVpbGQgdGhlIGRlbW9uc3RyYXRpb24gcHJvZ3JhbXMKLQotCi1JSUkuIERFVEFJTEVEIENPTVBJTEFUSU9OIFBST0NFRFVSRQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICBJZiB5b3UgZG9uJ3QgIHdhbnQgdG8gY29tcGlsZSBGcmVlVHlwZSAyICBmcm9tIHRoZSBjb21tYW5kLWxpbmUgKGZvcgotICBleGFtcGxlIGlmICB5b3UgdXNlIGEgZ3JhcGhpY2FsIElERSAgb24gYSBNYWMgb3IgIFdpbmRvd3MpLCB5b3Ugd2lsbAotICBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBGcmVlVHlwZSBmaWxlcyBhcmUgb3JnYW5pemVkLgotCi0gIEZyZWVUeXBlIDIgIGhhcyBhICB2ZXJ5IG1vZHVsYXIgIGRlc2lnbiwgYW5kIGl0ICBpcyBtYWRlICBvZiBzZXZlcmFsCi0gIGNvbXBvbmVudHMuICBFYWNoIGNvbXBvbmVudCBtdXN0IGJlIGNvbXBpbGVkIGFzIGEgc3RhbmQtYWxvbmUgb2JqZWN0Ci0gIGZpbGUsIGV2ZW4gIGlmIGl0ICBpcyByZWFsbHkgIG1hZGUgb2Ygc2V2ZXJhbCAgQyBzb3VyY2UgIGZpbGVzLiAgRm9yCi0gIGV4YW1wbGUsICB0aGUgYGJhc2UgIGxheWVyJyBjb21wb25lbnQgIGlzICBtYWRlIG9mICB0aGUgZm9sbG93aW5nICBDCi0gIGZpbGVzOgotCi0gICAgc3JjLwotICAgICAgYmFzZS8KLSAgICAgICAgZnRjYWxjLmMgICAgLSBjb21wdXRhdGlvbnMKLSAgICAgICAgZnRleHRlbmQuYyAgLSBleHRlbnNpb25zIHN1cHBvcnQKLSAgICAgICAgZnRsaXN0LmMgICAgLSBzaW1wbGUgbGlzdCBtYW5hZ2VtZW50Ci0gICAgICAgIGZ0b2Jqcy5jICAgIC0gb2JqZWN0IG1hbmFnZW1lbnQKLSAgICAgICAgZnRvdXRsbi5jICAgLSBzaW1wbGUgb3V0bGluZSBwcm9jZXNzaW5nCi0gICAgICAgIGZ0c3RyZWFtLmMgIC0gc3RyZWFtIGlucHV0Ci0KLSAgSG93ZXZlciwgeW91IGNhbiAgY3JlYXRlIGEgc2luZ2xlIG9iamVjdCBmaWxlICBieSBjb21waWxpbmcgdGhlIGZpbGUKLSAgYHNyYy9iYXNlL2Z0YmFzZS5jJywgd2hpY2ggYmFzaWNhbGx5IGNvbnRhaW5zCi0KLSAgICAgICNpbmNsdWRlICJmdGNhbGMuYyIKLSAgICAgICNpbmNsdWRlICJmdG9ianMuYyIKLSAgICAgICNpbmNsdWRlICJmdHN0cmVhbS5jIgotICAgICAgI2luY2x1ZGUgImZ0bGlzdC5jIgotICAgICAgI2luY2x1ZGUgImZ0b3V0bG4uYyIKLSAgICAgICNpbmNsdWRlICJmdGV4dGVuZC5jIgotCi0gIFNpbWlsYXJseSwgZWFjaCBjb21wb25lbnQgaGFzIGEgc2luZ2xlIGBlbmdsb2JpbmcnIEMgZmlsZSB0byBjb21waWxlCi0gIGl0IGFzIGEgc3RhbmQtYWxvbmUgb2JqZWN0OgotCi0gICAgc3JjL2F1dG9oaW50L2F1dG9oaW50LmMgICAtIHRoZSBhdXRvaGludGluZyBtb2R1bGUKLSAgICBzcmMvYmFzZS9mdGJhc2UuYyAgICAgICAgIC0gdGhlIGJhc2UgbGF5ZXIsIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlCi0gICAgc3JjL2NhY2hlL2Z0Y2FjaGUuYyAgICAgICAtIGEgZ2x5cGggYW5kIGltYWdlIGNhY2hpbmcgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGlsbCBleHBlcmltZW50YWwpCi0gICAgc3JjL2NmZi9jZmYuYyAgICAgICAgICAgICAtIHRoZSBPcGVuVHlwZSBmb250IGRyaXZlcgotICAgIHNyYy9jaWQvdHlwZTFjaWQuYyAgICAgICAgLSB0aGUgQ0lELWtleWVkIGZvbnQgZHJpdmVyCi0gICAgc3JjL3BzYXV4L3BzYXV4LmMgICAgICAgICAtIHRoZSBQUyBzdXBwb3J0IG1vZHVsZQotICAgIHNyYy9wc25hbWVzL3BzbmFtZXMuYyAgICAgLSBhIHN1cHBvcnQgbW9kdWxlIHRvIGhhbmRsZSBQUyBnbHlwaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcwotICAgIHNyYy9yYXN0ZXIxL3Jhc3RlcjEuYyAgICAgLSB0aGUgbW9ub2Nocm9tZSByYXN0ZXIgbW9kdWxlCi0gICAgc3JjL3NmbnQvc2ZudC5jICAgICAgICAgICAtIHRoZSBgc2ZudCcgbW9kdWxlCi0gICAgc3JjL3Ntb290aC9zbW9vdGguYyAgICAgICAtIHRoZSBhbnRpLWFsaWFzaW5nIHJhc3RlciBtb2R1bGUKLSAgICBzcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYyAgIC0gdGhlIFRydWVUeXBlIGZvbnQgZHJpdmVyCi0gICAgc3JjL3R5cGUxL3R5cGUxLmMgICAgICAgICAtIHRoZSBUeXBlIDEgZm9udCBkcml2ZXIKLQotICBUaGUgbGFzdCBtb2R1bGUgb2YgIEZyZWVUeXBlIDIsIGB3aW5mb250cycgKGltcGxlbWVudGluZyBzdXBwb3J0IGZvcgotICBXaW5kb3dzIEZOVCBmb3JtYXQpLCBpcyBhIHNpbmdsZSBmaWxlLgotCi0gIFRvIGNvbXBpbGUgb25lIGNvbXBvbmVudCwgZG8gdGhlIGZvbGxvd2luZzoKLQotICAgIC0gQWRkICB0aGUgIHRvcC1sZXZlbCAgYGluY2x1ZGUnICBkaXJlY3RvcnkgIHRvICB5b3VyICBjb21waWxhdGlvbgotICAgICAgaW5jbHVkZSBwYXRoCi0KLSAgICAtIEFkZCB0aGUgYHNyYy88Y29tcG9uZW50PicgIGRpcmVjdG9yeSB0byB5b3VyIGNvbXBpbGF0aW9uIGluY2x1ZGUKLSAgICAgIHBhdGgsIG9yIHNpbXBseSBgY2QnIHRvIHRoZSBjb21wb25lbnQncyBzb3VyY2UgZGlyZWN0b3J5LgotCi0gICAgLSBDb21waWxlIHRoZSBjb21wb25lbnQgYHNvdXJjZScgIGZpbGUgKHNlZSBsaXN0IGJlbG93KTsgeW91IGRvbid0Ci0gICAgICBuZWVkICB0byAgIGJlICBpbiAgdGhlICAgY29tcG9uZW50J3MgIGRpcmVjdG9yeSAgaWYgICB5b3UgIGFkZGVkCi0gICAgICBgc3JjLzxjb21wb25lbnQ+JyB0byB5b3VyIGluY2x1ZGUgcGF0aC4KLQotICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBsaW5lICBjYW4gYmUgdXNlZCB0byBjb21waWxlIHRoZSB0cnVldHlwZQotICBkcml2ZXIgb24gVW5peDoKLQotICAgICBjZCBmcmVldHlwZTIvCi0gICAgIGNjIC1jIC1JaW5jbHVkZSAtSXNyYy90cnVldHlwZSBzcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwotCi0gIEFsdGVybmF0aXZlbHk6Ci0KLSAgICAgY2QgZnJlZXR5cGUyL3NyYy90cnVldHlwZQotICAgICBjYyAtYyAtSS4uLy4uL2luY2x1ZGUgdHJ1ZXR5cGUuYwotCi0gIEZpbmFsbHksIEZyZWVUeXBlIDIgY29udGFpbnMgc29tZSBvdGhlciBjb21wb25lbnRzOgotCi0gICAgIHNyYy9iYXNlL2Z0c3lzdGVtLmMgIC0gc3lzdGVtLXNwZWNpZmljIG1lbW9yeSBhbmQgaS9vIHN1cHBvcnQKLSAgICAgc3JjL2Jhc2UvZnRpbml0LmMgICAgLSBpbml0aWFsaXphdGlvbiBsYXllcgotICAgICBzcmMvYmFzZS9mdGRlYnVnLmMgICAtIGRlYnVnZ2luZyBjb21wb25lbnQgKGVtcHR5IGluIHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCkKLSAgICAgc3JjL2Jhc2UvZnRnbHlwaC5jICAgLSBvcHRpb25hbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMKLQotICBBbGwgZm9udCAgZHJpdmVycyBhcmUgb3B0aW9uYWwuICBUaGUgYHNmbnQnLCAgYHBzYXV4JywgYW5kIGBwc25hbWVzJwotICBtb2R1bGVzIGFyZSBtYW5kYXRvcnkgZm9yIGNlcnRhaW4gZHJpdmVycy4gIEhvd2V2ZXIsIHlvdSBtYXkgbmVlZCB0bwotICB1cGRhdGUgIHRoZSAgbGlzdCBvZiAgZHJpdmVycyAgdGhhdCAgYXJlICBzdGF0aWNhbGx5IGxpbmtlZCAgdG8gIHRoZQotICBsaWJyYXJ5LCAgICB3aGljaCAgIGlzICAgbG9jYXRlZCAgICBpbiAgIHRoZSAgICBjb25maWd1cmF0aW9uICAgZmlsZQotICBgaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCcuCi0KLQotSVYuIFN1cHBvcnQgZm9yIGZsYXQtZGlyZWN0b3J5IGNvbXBpbGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICBJdCBpcyAgcG9zc2libGUgdG8gIHB1dCBhbGwgIEZyZWVUeXBlIDIgc291cmNlICBmaWxlcyBpbnRvICBhIHNpbmdsZQotICBkaXJlY3RvcnksIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgYGluY2x1ZGUnIGhpZXJhcmNoeS4KLQotICAgIDEuIENvcHkgYWxsIGZpbGVzIGluIGN1cnJlbnQgZGlyZWN0b3J5OgotCi0gICAgICAgIGNwIGZyZWV0eXBlMi9zcmMvYmFzZS8qLltoY10gLgotICAgICAgICBjcCBmcmVldHlwZTIvc3JjL3Jhc3RlcjEvKi5baGNdIC4KLSAgICAgICAgY3AgZnJlZXR5cGUyL3NyYy9zbW9vdGgvKi5baGNdIC4KLSAgICAgICAgZXRjLgotCi0gICAgMi4gQ29tcGlsZSBzb3VyY2VzOgotCi0gICAgICAgIGNjIC1jIC1JZnJlZXR5cGUyL2luY2x1ZGUgZnRzeXN0ZW0uYwotICAgICAgICBjYyAtYyAtSWZyZWV0eXBlMi9pbmNsdWRlIGZ0aW5pdC5jCi0gICAgICAgIGNjIC1jIC1JZnJlZXR5cGUyL2luY2x1ZGUgZnRkZWJ1Zy5jCi0gICAgICAgIGNjIC1jIC1JZnJlZXR5cGUyL2luY2x1ZGUgZnRiYXNlLmMKLSAgICAgICAgZXRjLgotCi0gICBZb3UgZG9uJ3QgbmVlZCB0byBkZWZpbmUgdGhlIEZUX0ZMQVRfQ09NUElMQVRJT04gbWFjcm8gKGFzIHRoaXMgd2FzCi0gICByZXF1aXJlZCBpbiBwcmV2aW91cyByZWxlYXNlcyBvZiBGcmVlVHlwZSAyKS4KLQotRW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvQ0hBTkdFUyBiL2RvY3MvQ0hBTkdFUwppbmRleCA2NzNhNWU5Li4wYThlM2Y4IDEwMDY0NAotLS0gYS9kb2NzL0NIQU5HRVMKKysrIGIvZG9jcy9DSEFOR0VTCkBAIC0zMyw2ICszMywxMSBAQAogICAgIC0gdGhlIENNYXAgY2FjaGUgaXMgbm93IGNhcGFibGUgb2YgbWFuYWdpbmcgVUNTLTQgY2hhcmFjdGVyIGNvZGVzIHRoYXQKICAgICAgIGFyZSBtYXBwZWQgdGhyb3VnaCBleHRlbmRlZCBjaGFybWFwcyBpbiByZWNlbnQgVHJ1ZVR5cGUvT3BlblR5cGUgZm9udHMKIAorICAgIC0gdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gbm93IHByb3Blcmx5IG1hbmFnZXMgb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zLAorICAgICAgaW5zdGVhZCBvZiBibGluZGx5IHJlcG9ydGluZyB0aGVtIHRvIHRoZSBjYWxsZXIuIFRoaXMgbWVhbnMgdGhhdCBpdAorICAgICAgd2lsbCB0cnkgdG8gZW1wdHkgdGhlIGNhY2hlIGJlZm9yZSByZXN0YXJ0aW5nIGl0cyBhbGxvY2F0aW9ucyB0byBzZWUKKyAgICAgIGlmIHRoYXQgY2FuIGhlbHAuCisKICAgICAtIHRoZSBQRlIgZHJpdmVyIGRpZG4ndCByZXR1cm4gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGVtYmVkZGVkIGJpdG1hcHMKICAgICAgIHByb3Blcmx5LgogCkBAIC03Miw2ICs3Nyw5IEBACiAgICAgICB3aXRoIEZyZWVUeXBlIChpLmUuIGNvbXBhcmluZyByZWxlYXNlL2xpYnRvb2wvc28gbnVtYmVycywgYW5kIGhvdwogICAgICAgdG8gdXNlIHRoZW0gaW4gQXV0b2NvbmYgc2NyaXB0cykKIAorICAgIC0gdGhlIGluc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHNlcmlvdXNseSByZXZhbXBlZC4gRXZlcnl0aGluZworICAgICAgaXMgbm93IGluIHRoZSAiZG9jcyIgZGlyZWN0b3J5LgorCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIExBVEVTVCBDSEFOR0VTIEJFVFdFRU4gMi4xLjMgYW5kIDIuMS4yCiAKZGlmZiAtLWdpdCBhL2RvY3MvQ1VTVE9NSVpFIGIvZG9jcy9DVVNUT01JWkUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3YzJjMwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvQ1VTVE9NSVpFCkBAIC0wLDAgKzEsMTE3IEBACitIb3cgdG8gY3VzdG9taXplIHRoZSBjb21waWxhdGlvbiBvZiB0aGUgbGlicmFyeToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgRnJlZVR5cGUgaXMgaGlnaGx5IGN1c3RvbWl6YWJsZSB0byBmaXQgdmFyaW91cyBuZWVkcywgYW5kIHRoaXMgZG9jdW1lbnQKKyBkZXRhaWxzIGhvdyBpdCBpcyBwb3NzaWJsZSB0byBzZWxlY3Qgb3B0aW9ucyBhbmQgY29tcG9uZW50cyBhdCBjb21waWxhdGlvbgorIHRpbWUuCisKKworSS4gQ29uZmlndXJhdGlvbiBtYWNyb3M6CisKKyAgdGhlIGZpbGUgZm91bmQgaW4gImluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgiIGNvbnRhaW5zIGEgbGlzdAorICBvZiBjb21tZW50ZWQgY29uZmlndXJhdGlvbiBtYWNyb3MgdGhhdCBjYW4gYmUgdG9nZ2xlZCBieSBkZXZlbG9wZXJzIHRvCisgIGluZGljYXRlIHdoaWNoIGZlYXR1cmVzIHRvIGFjdGl2YXRlIGluIHRoZWlyIGJ1aWxkIG9mIHRoZSBsaWJyYXJ5LgorICAKKyAgdGhlc2Ugb3B0aW9ucyByYW5nZSBmcm9tIGRlYnVnIGxldmVsIHRvIGF2YWlsYWJpbGl0eSBvZiBjZXJ0YWluCisgIGZlYXR1cmVzLCBsaWtlIG5hdGl2ZSBUcnVlVHlwZSBoaW50aW5nIHRocm91Z2ggYSBieXRlY29kZSBpbnRlcnByZXRlci4KKyAgCisgIHdlIGludml0ZSB5b3UgdG8gcmVhZCB0aGlzIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFlvdSBjYW4gY2hhbmdlCisgIHRoZSBmaWxlJ3MgY29udGVudCB0byBzdWl0IHlvdXIgbmVlZHMsIG9yIG92ZXJyaWRlIGl0IHdpdGggb25lIG9mIHRoZQorICB0ZWNobmlxdWVzIGRlc2NyaWJlZCBiZWxvdy4uCisKKyAgCitJSS4gTW9kdWxlcyBsaXN0OgorCisgIHRoZSBmaWxlIGZvdW5kIGluICJpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIiBjb250YWlucyBhIGxpc3QKKyAgb2YgbmFtZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbW9kdWxlcyAvIGZvbnQgZHJpdmVycyB0byBiZSBzdGF0aWNhbGx5CisgIGNvbXBpbGVkIGluIHRoZSBGcmVlVHlwZSBsaWJyYXJ5IGR1cmluZyB0aGUgYnVpbGQuCisKKyAgeW91IGNhbiBjaGFuZ2UgaXQgdG8gc3VpdCB5b3VyIG93biBwcmVmZXJlbmNlcy4gQmUgYXdhcmUgdGhhdCBjZXJ0YWluCisgIG1vZHVsZXMgZGVwZW5kIG9uIG90aGVycywgYXMgZGVzY3JpYmVkIGJ5IHRoZSBmaWxlICJtb2R1bGVzLnR4dCIgaW4KKyAgdGhpcyBkaXJlY3RvcnkuCisKKyAgeW91IGNhbiBtb2RpZnkgdGhlIGZpbGUncyBjb250ZW50IHRvIHN1aXQgeW91ciBuZWVkcywgb3Igb3ZlcnJpZGUgaXQKKyAgYXQgY29tcGlsZSB0aW1lIHdpdGggb25lIG9mIHRoZSBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdworCisKK0lJSS4gU3lzdGVtIGludGVyZmFjZToKKworICBGcmVlVHlwZSdzIGRlZmF1bHQgaW50ZXJmYWNlIHRvIHRoZSBzeXN0ZW0gKGkuZS4gdGhlIHBhcnRzIHRoYXQgZGVhbCB3aXRoCisgIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBpL28gc3RyZWFtcykgaXMgbG9jYXRlZCBpbiAic3JjL2Jhc2UvZnRzeXN0ZW0uYyIuCisgIAorICB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIHN0YW5kYXJkIEMgbGlicmFyeSBjYWxscyB0byBtYW5hZ2UKKyAgbWVtb3J5IGFuZCByZWFkIGZvbnQgZmlsZXMuIEl0IGlzIGhvd2V2ZXIgcG9zc2libGUgdG8gd3JpdGUgY3VzdG9tCisgIGltcGxlbWVudGF0aW9ucyB0byBzdWl0IHNwZWNpZmljIHN5c3RlbXMuCisKKyAgdG8gdGVsbCB0aGUgR05VIE1ha2UtYmFzZWQgYnVpbGQgc3lzdGVtIHRvIHVzZSBhIGN1c3RvbSBzeXN0ZW0gaW50ZXJmYWNlLAorICB5b3UnbGwgbmVlZCB0byBkZWZpbmUgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEZUU1lTX1NSQyB0byBwb2ludCB0bworICB0aGUgcmVsZXZhbnQgaW1wbGVtZW50YXRpb24sIGxpa2UgaW46CisgIAorICAgICAgb24gVW5peDoKKyAgICAgICAgLi9jb25maWd1cmUgPHlvdXJvcHRpb25zPgorICAgICAgICBleHBvcnQgRlRTWVNfU1JDPWZvby9teV9mdHN5c3RlbS5jCisgICAgICAgIG1ha2UKKyAgICAgICAgbWFrZSBpbnN0YWxsCisgICAKKyAgICAgIG9uIFdpbmRvd3M6CisgICAgICAgIG1ha2Ugc2V0dXAgPGNvbXBpbGVyPgorICAgICAgICBzZXQgRlRTWVNfU1JDPWZvby9teV9mdHN5c3RlbS5jCisgICAgICAgIG1ha2UKKyAgICAgCisgICAgIAorSVYuIE92ZXJyaWRpbmcgZGVmYXVsdCAgY29uZmlndXJhdGlvbiBhbmQgbW9kdWxlIGhlYWRlcnM6CisKKyAgaXQgaXMgcG9zc2libGUgdG8gb3Zlci1yaWRlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIG1vZHVsZSBoZWFkZXJzCisgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG9yaWdpbmFsIGZpbGVzLiBUaGVyZSBhcmUgdHdvIHdheXMgdG8gZG8gdGhhdDoKKworICAxLiBVc2luZyB0aGUgQyBpbmNsdWRlIHBhdGg6CisgIAorICAgIHVzZSB0aGUgQyBpbmNsdWRlIHBhdGggdG8gZW5zdXJlIHRoYXQgeW91ciBvd24gdmVyc2lvbnMgb2YgdGhlCisgICAgZmlsZXMgYXJlIHVzZWQgYXQgY29tcGlsZSB0aW1lIHdoZW4gdGhlIGxpbmVzOgorICAgIAorICAgICAgICNpbmNsdWRlIEZUX0NPTkZJR19PUFRJT05TX0gKKyAgICAgICAjaW5jbHVkZSBGVF9DT05GSUdfTU9EVUxFU19ICisKKyAgICBhcmUgY29tcGlsZWQuIFRoZWlyIGRlZmF1bHQgdmFsdWVzIGJlaW5nIDxmcmVldHlwZS9jb25maWcvZnRvcHRpb24uaD4KKyAgICBhbmQgPGZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oPiwgeW91IGNhbiBkbyBzb21ldGhpbmcgbGlrZToKKworICAgICAgIGN1c3RvbS8KKyAgICAgICAgIGZyZWV0eXBlLworICAgICAgICAgICBjb25maWcvCisgICAgICAgICAgICAgZnRvcHRpb24uaCAgICA9PiBjdXN0b20gb3B0aW9ucyBoZWFkZXIKKyAgICAgICAgICAgICBmdG1vZHVsZS5oICAgID0+IGN1c3RvbSBtb2R1bGVzIGxpc3QKKyAgICAgICAgICAgICAKKyAgICAgICBpbmNsdWRlLyAgICAgICAgICAgID0+IG5vcm1hbCBGcmVlVHlwZSAyIGluY2x1ZGUKKyAgICAgICAgICBmcmVldHlwZS8KKyAgICAgICAgICAgIC4uLgorCisgICB0aGVuIGNoYW5nZSB0aGUgQyBpbmNsdWRlIHBhdGggdG8gYWx3YXlzIGdpdmUgdGhlIHBhdGggdG8gImN1c3RvbSIKKyAgIGJlZm9yZSB0aGUgRnJlZVR5cGUgMiAiaW5jbHVkZSIKKworCisgIDIuIFJlLWRlZmluaW5nIEZUX0NPTkZJR19PUFRJT05TX0ggYW5kIEZUX0NPTkZJR19NT0RVTEVTX0gKKyAgCisgICBhbm90aGVyIHdheSB0byBkbyB0aGUgc2FtZSB0aGluZyBpcyB0byByZS1kZWZpbmUgdGhlIG1hY3JvcyB1c2VkCisgICB0byBuYW1lIHRoZSBjb25maWd1cmF0aW9uIGhlYWRlcnMuIFRvIGRvIHNvLCB5b3UnbGwgbmVlZCBhIGN1c3RvbQorICAgImZ0MmJ1aWxkLmgiLCB3aG9zZSBjb250ZW50IGNhbiBiZSBhcyBzaW1wbGUgYXM6CisgICAKKyAgICAgICAgICAjaWZuZGVmIF9fRlQyX0JVSUxEX0dFTkVSSUNfSF9fCisgICAgICAgICAgI2RlZmluZSBfX0ZUMl9CVUlMRF9HRU5FUklDX0hfXworCisgICAgICAgICAgI2RlZmluZSAgRlRfQ09ORklHX09QVElPTlNfSCAgIDxjdXN0b20vbXktZnRvcHRpb24uaD4KKyAgICAgICAgICAjZGVmaW5lICBGVF9DT05GSUdfTUFDUk9TX0ggICAgPGN1c3RvbS9teS1mdG1vZHVsZS5oPgorCisgICAgICAgICAgI2luY2x1ZGUgPGZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oPgorCisgICAgICAgICAgI2VuZGlmIC8qIF9fRlQyX0JVSUxEX0dFTkVSSUNfSF9fICovCisgICAKKyAgIHBsYWNlIHRoZW0gaW46CisgICAKKyAgICAgICBjdXN0b20vCisgICAgICAgICAgZnQyYnVpbGQuaCAgICAgICAgICAgPT4gY3VzdG9tIHZlcnNpb24gZGVzY3JpYmVkIGFib3ZlCisgICAgICAgICAgbXktZnRvcHRpb24uaCAgICAgICAgPT4gY3VzdG9tIG9wdGlvbnMgaGVhZGVyCisgICAgICAgICAgbXktZnRtb2R1bGUuaCAgICAgICAgPT4gY3VzdG9tIG1vZHVsZXMgbGlzdCBoZWFkZXIKKworICAgYW5kIGNoYW5nZSB0aGUgQyBpbmNsdWRlIHBhdGggdG8gZW5zdXJlIHRoYXQgImN1c3RvbSIgaXMgYWx3YXlzIHBsYWNlZAorICAgYmVmb3JlIHRoZSBGVDIgImluY2x1ZGUiIGR1cmluZyBjb21waWxhdGlvbi4KKwpkaWZmIC0tZ2l0IGEvZG9jcy9ERUJVRy5UWFQgYi9kb2NzL0RFQlVHCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGRvY3MvREVCVUcuVFhUCnJlbmFtZSB0byBkb2NzL0RFQlVHCmluZGV4IDg5OTZkNjYuLjAzZWQ3MDMgMTAwNjQ0Ci0tLSBhL2RvY3MvREVCVUcuVFhUCisrKyBiL2RvY3MvREVCVUcKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAjZGVmaW5lIHRoaXMgbWFjcm8gIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgIHRoZSBGVF9FUlJPUiBtYWNybyBjYWxscwogICAgIHVzZWQgdG8gIHByaW50IGVycm9yIG1lc3NhZ2VzICBkdXJpbmcgcHJvZ3JhbSBleGVjdXRpb24uICAgVGhpcyB3aWxsCiAgICAgbm90ICBzdG9wIHRoZSAgcHJvZ3JhbSwgYnV0ICBpcyB2ZXJ5ICB1c2VmdWwgdG8gIHNwb3QgIGludmFsaWQgZm9udHMKLSAgICBkdXJpbmcgZGV2ZWxvcG1lbnQgYW5kIGNvZGUgd29yZGFyb3VuZHMgZm9yIHRoZW0uCisgICAgZHVyaW5nIGRldmVsb3BtZW50IGFuZCBjb2RlIHdvcmthcm91bmRzIGZvciB0aGVtLgogCiAgIEZUX0RFQlVHX0xFVkVMX1RSQUNFCiAKZGlmZiAtLWdpdCBhL2RvY3MvSU5TVEFMTCBiL2RvY3MvSU5TVEFMTAppbmRleCAyMjIwN2UzLi44ZjViYzMyIDEwMDY0NAotLS0gYS9kb2NzL0lOU1RBTEwKKysrIGIvZG9jcy9JTlNUQUxMCkBAIC0xLDE4NSArMSw2NSBAQAotSW4gb3JkZXIgdG8gYnVpbGQgdGhlIGxpYnJhcnksIHJlYWQgdGhlIGBCVUlMRCcgZG9jdW1lbnQgaW4gdGhlIGBkb2NzJwotZGlyZWN0b3J5LiAgVGhpcyBpcyBvbmx5IGEgcXVpY2sgc3RhcnRlci4KK1dlbGNvbWUKKworVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBidWlsZCB0aGUgRnJlZVR5cGUgbGlicmFyeSwgZGVwZW5kaW5nIG9uIHlvdXIKK3N5c3RlbSBhbmQgdGhlIGxldmVsIG9mIGN1c3RvbWl6YXRpb24geW91IG5lZWQuIEhlcmUncyBhIHNob3J0IG92ZXJ2aWV3CitvZiB0aGUgZG9jdW1lbnRhdGlvbiBhdmFpbGFibGU6CisKK0kuIE5vcm1hbCBpbnN0YWxsYXRpb24gYW5kIHVwZ3JhZGVzOgorCisgIDEuIE5hdGl2ZSBUcnVlVHlwZSBIaW50aW5nOgorICAKKyAgICBOYXRpdmUgVHJ1ZVR5cGUgaGludGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0WzFdLiBJZiB5b3UgcmVhbGx5IG5lZWQgaXQsCisgICAgcmVhZCB0aGUgZmlsZSAiVFJVRVRZUEUiIGZvciBpbmZvcm1hdGlvbi4KKworICAgICAgCisgIDIuIFVuaXggU3lzdGVtcyAoYXMgd2VsbCBhcyBDeWd3aW4gb3IgTVN5cyBvbiBXaW5kb3dzKToKKworICAgIFBsZWFzZSByZWFkICpib3RoKiBVUEdSQURFLlVOWCBhbmQgSU5TVEFMTC5VTlggdG8gaW5zdGFsbCBvciB1cGdyYWRlCisgICAgRnJlZVR5cGUgMiBvbiBhIFVuaXggc3lzdGVtLiBOb3RlIHRoYXQgeW91ICp3aWxsKiBuZWVkIEdOVSBNYWtlLCBzaW5jZQorICAgIG90aGVyIG1ha2UgdG9vbHMgd29uJ3Qgd29yayAodGhpcyBpbmNsdWRlcyBCU0QgTWFrZSAhISkKKworICAzLiBPbiBWTVMgd2l0aCB0aGUgIm1tcyIgYnVpbGQgdG9vbDoKKyAgCisgICAgc2VlIElOU1RBTEwuVk1TIGZvciBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIG9uIHRoaXMgcGxhdGZvcm0KKworICA0LiBPdGhlciBzeXN0ZW1zIHVzaW5nIEdOVSBNYWtlOgorICAKKyAgICBvbiBub24tVW5peCBwbGF0Zm9ybXMsIGl0J3MgcG9zc2libGUgdG8gYnVpbGQgdGhlIGxpYnJhcnkgdXNpbmcKKyAgICBHTlUgTWFrZSB1dGlsaXR5LiBOb3RlIHRoYXQgKk5PIE9USEVSIE1BS0UgVE9PTCBXSUxMIFdPUksqICEhCisgICAgVGhpcyBtZXRob2RzIHN1cHBvcnRzIHNldmVyYWwgY29tcGlsZXJzIG9uIFdpbmRvd3MsIE9TLzIgYW5kIEJlT1MsCisgICAgaW5jbHVkaW5nIE1pbmd3LCBWaXN1YWwgQysrLCBCb3JsYW5kIEMrKywgYW5kIG1vcmUuCisKKyAgICBpbnN0cnVjdGlvbnMgYXJlIHByb3ZpZGVkIGluIHRoZSBmaWxlICJJTlNUQUxMLkdOVSIKIAogCi1JLiBVbml4IHN5c3RlbXMKLS0tLS0tLS0tLS0tLS0tLQotCi0gIElmIHlvdSBoYXZlIEdOVSBNYWtlIGluc3RhbGxlZCwgc2ltcGx5IHR5cGUKLQotICAgIC4vY29uZmlndXJlCi0gICAgbWFrZQotICAgIG1ha2UgaW5zdGFsbAotCi0gIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gY29uZmlndXJlLCBidWlsZCBhbmQgaW5zdGFsbCBGcmVlVHlwZSBvbiB5b3VyCi0gIHN5c3RlbS4gIE5vdGUgdGhhdCB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gcGF0aCBpcyAiL3Vzci9sb2NhbCIuCi0KLSAgUGxlYXNlIHJlYWQgdGhlIGZpbGUgIFJFQURNRS5VTlgsIGl0IGNvbnRhaW5zIF9jcml0aWNhbF8gaW5mb3JtYXRpb24KLSAgcmVnYXJkaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgRnJlZVR5cGUgb24gbWFueSBVbml4IHN5c3RlbXMuCisgIDUuIFdpdGggYW4gSURFIFByb2plY3QgRmlsZSAgKGUuZy4gZm9yIFZpc3VhbCBTdHVkaW8gb3IgQ29kZVdhcnJpb3IpOgorICAKKyAgICB3ZSBwcm92aWRlIGEgc21hbGwgbnVtYmVyIG9mICJwcm9qZWN0IGZpbGVzIiBmb3IgdmFyaW91cyBJREVzIHRvCisgICAgYXV0b21hdGljYWxseSBidWlsZCB0aGUgbGlicmFyeSBhcyB3ZWxsLiBOb3RlIHRoYXQgdGhlc2UgZmlsZXMgYXJlCisgICAgbm90IHN1cHBvcnRlZCBhbmQgc3BvcmFkaWNhbGx5IG1haW50YWluZWQgYnkgRnJlZVR5cGUgZGV2ZWxvcGVycywKKyAgICBzbyBkb24ndCBleHBlY3QgdGhlbSB0byB3b3JrIGluIGVhY2ggcmVsZWFzZS4KKyAgICAKKyAgICB0byBmaW5kIHRoZW0sIGhhdmUgYSBsb29rIGF0IHRoZSBjb250ZW50IG9mIHRoZSAiYnVpbGRzLzxzeXN0ZW0+IgorICAgIGRpcmVjdG9yeSwgd2hlcmUgPHN5c3RlbT4gc3RhbmRzIGZvciB5b3VyIE9TIG9yIGVudmlyb25tZW50LgogCiAKLUlJLiBGcm9tIHRoZSBjb21tYW5kIGxpbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICBJZiAgeW91IGFyZSAgbm90IHVzaW5nICBVbml4LCB0aGVyZSAgYXJlIHR3byAgd2F5cyB0byAgcXVpY2tseSBidWlsZAotICBGcmVlVHlwZSAyIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KLQotICBUaGUgZmlyc3QsIGFuZCBmYXZvcml0ZSBvbmUsIGlzIHRvIHVzZSB0aGUgIkphbSIgYnVpbGQgdG9vbC4gIEphbSBpcwotICBhIGhpZ2hseSAgcG9ydGFibGUgcmVwbGFjZW1lbnQgZm9yICBNYWtlIHdob3NlIGNvbnRyb2wgZmlsZXMgIGRvIG5vdAotICBkZXBlbmQgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0gb3IgY29tcGlsZXIgdG9vbHNldC4KLQotICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZToKLQotICAgIGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL2phbS9pbmRleC5odG1sCi0KLSAgVGhlIHNlY29uZCBvbmUgaXMgdG8gdXNlICJHTlUgTWFrZSIgKGFuZCBOTyBPVEhFUiBNQUtFIFRPT0wpLgorICA2LiBGcm9tIHlvdSBvd24gSURFLCBvciBvd24gTWFrZWZpbGVzOgorICAKKyAgICBJZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBvd24gcHJvamVjdCBmaWxlLCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucworICAgIGdpdmVuIGluIHRoZSAiSU5TVEFMTC5BTlkiIGRvY3VtZW50IG9mIHRoaXMgZGlyZWN0b3J5LgogCiAKLSAgMS4gQnVpbGRpbmcgRlQyIHdpdGggIkphbSIKLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lJLiBDdXN0b20gYnVpbGRzIG9mIHRoZSBsaWJyYXJ5OgogCi0gICAgT25jZSB5b3UndmUgIGdvdCAqb3VyIHZlcnNpb24qIG9mICB0aGUgSmFtIHRvb2wgIGluc3RhbGxlZCBvbiB5b3VyCi0gICAgc3lzdGVtLCBzaW1wbHkgZ28gdG8gdGhlIHRvcC1sZXZlbCBGVDIgZGlyZWN0b3J5LCB0aGVuIHR5cGUKLQotICAgICAgImphbSIKLQotICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuICBUaGlzIHdpbGwgIGJ1aWxkIHRoZSBsaWJyYXJ5IGFuZCBwbGFjZSBpdCBpbgotICAgIHRoZSAib2JqcyIgZGlyZWN0b3J5LgotCi0gICAgQnkgZGVmYXVsdCwgIGEgc3RhdGljICBsaWJyYXJ5IGlzIGJ1aWx0LiAgIE9uIFVuaXggc3lzdGVtcywgIGl0IGlzCi0gICAgcG9zc2libGUgdG8gIGJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkgdGhyb3VnaCAgdGhlICJsaWJ0b29sIiBzY3JpcHQuCi0gICAgWW91IG5lZWQgdG8gaGF2ZSBsaWJ0b29sICBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0sIHRoZW4gcmUtZGVmaW5lCi0gICAgYSBmZXcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGJlZm9yZSBpbnZva2luZyBKYW0sIGFzIGluCi0KLSAgICAgICBleHBvcnQgQ0M9ImxpYnRvb2wgLS1tb2RlPWNvbXBpbGUgY2MiCi0gICAgICAgZXhwb3J0IExJTks9ImxpYnRvb2wgLS1tb2RlPWxpbmsgY2MiCi0gICAgICAgamFtCi0KLSAgICBJbiAgbGF0ZXIgcmVsZWFzZXMgIG9mICBGVDIsIGJ1aWxkaW5nICBzaGFyZWQgIGxpYnJhcmllcyB3aXRoICBKYW0KLSAgICBzaG91bGQgYmVjb21lIGF1dG9tYXRpYyBvbiBVbml4IHN5c3RlbXMuCisgIEN1c3RvbWl6aW5nIHRoZSBjb21waWxhdGlvbiBvZiBGcmVlVHlwZSBpcyBlYXN5LCBhbmQgYWxsb3dzIHlvdSB0byBzZWxlY3QKKyAgb25seSB0aGUgY29tcG9uZW50cyBvZiB0aGUgZm9udCBlbmdpbmUgdGhhdCB5b3UgcmVhbGx5IG5lZWQuIEZvciBtb3JlIGRldGFpbHMKKyAgcmVhZCB0aGUgZmlsZSAiQ1VTVE9NSVpFIgogCiAKLSAgMi4gQnVpbGRpbmcgRlQyIHdpdGggIkdOVSBNYWtlIgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gIFlvdSBuZWVkICB0byBoYXZlICBHTlUgTWFrZSAodmVyc2lvbiAgMy43OC4xIG9yIG5ld2VyKSAgaW5zdGFsbGVkIG9uCi0gIHlvdXIgc3lzdGVtIHRvIGNvbXBpbGUgdGhlIGxpYnJhcnkgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgVGhpcyB3aWxsCi0gIF9OT1RfIHdvcmsgd2l0aCBvdGhlciBtYWtlIHRvb2xzIChpbmNsdWRpbmcgQlNEIG1ha2UpIQorWzFdIE1vcmUgZGV0YWlscyBvbjogIGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL3BhdGVudHMuaHRtbAogCi0gIFtXZWxsLCB0aGlzIGlzIG5vdCAgcmVhbGx5IGNvcnJlY3QuICBSZWNlbnRseSwgYSBwZXJsIGltcGxlbWVudGF0aW9uCi0gIG9mIG1ha2UgY2FsbGVkIGBtYWtlcHAnIGhhcyBhcHBlYXJlZCB3aGljaCBjYW4gYWxzbyBidWlsZCBGcmVlVHlwZSAyCi0gIHN1Y2Nlc3NmdWxseSBvbiAgVW5peCBwbGF0Zm9ybXMuICAgU2VlIGh0dHA6Ly9tYWtlcHAuc291cmNlZm9yZ2UubmV0Ci0gIGZvciBtb3JlIGRldGFpbHMuXQorRW5kIG9mIGZpbGUKIAotICAtIEdvIHRvIHRoZSBgZnJlZXR5cGUyJyBkaXJlY3RvcnkuCi0KLSAgLSBVbml4IChhbnkgQyBjb21waWxlciBzaG91bGQgd29yayk6Ci0KLSAgICAgIC0gbWFrZSBzZXR1cCAoZG9uJ3Qgd29ycnksIHRoaXMgd2lsbCBpbnZva2UgYSBjb25maWd1cmUgc2NyaXB0KQotICAgICAgLSBtYWtlCi0gICAgICAtIG1ha2UgaW5zdGFsbAotCi0gICAgQWx0ZXJuYXRpdmVseSwgIHlvdSBjYW4gIHBhc3MgcGFyYW1ldGVycyAgdG8gdGhlICBjb25maWd1cmUgc2NyaXB0Ci0gICAgd2l0aGluIHRoZSBDRkcgdmFyaWFibGUsIGFzIGluOgotCi0gICAgICAtIG1ha2Ugc2V0dXAgQ0ZHPSItLXByZWZpeD0vdXNyIgotICAgICAgLSBtYWtlCi0gICAgICAtIG1ha2UgaW5zdGFsbAotCi0gICAgSWYgdGhlICBjb25maWd1cmUgc2NyaXB0IGlzbid0IHJ1biwgIHRyeSB0byBhZGQgYHVuaXgnIGFzIGEgdGFyZ2V0Ci0gICAgb24gdGhlIGNvbW1hbmQgbGluZSwgZS5nLjoKLQotICAgICAgLSBtYWtlIHNldHVwIHVuaXggQ0ZHPSItLXByZWZpeD0vb3B0L2V4cGVyaW1lbnRhbCIKLQotCi0gIC0gV2luZG93czoKLQotICAgIFdlIHByb3ZpZGUgYSAgdmVyc2lvbiBvZiBHTlUgTWFrZSBmb3IgV2luMzIgIG9uIHRoZSBGcmVlVHlwZSBzaXRlLgotICAgIFNlZSBodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy9kb3dubG9hZC5odG1sIGZvciBkZXRhaWxzLgotCi0gICAgLSBnY2MgKE1pbmd3LCBfbm90XyBDeWdXaW4pOgotCi0gICAgICAgIC0gbWFrZSBzZXR1cAotICAgICAgICAtIG1ha2UKLQotCi0gICAgLSBWaXN1YWwgQysrOgotCi0gICAgICAgIC0gbWFrZSBzZXR1cCB2aXN1YWxjCi0gICAgICAgIC0gbWFrZQotCi0KLSAgICAtIG90aGVyIGNvbXBpbGVyczoKLQotICAgICAgICAtIG1ha2Ugc2V0dXAgYmNjMzIgICAgLT4gQm9ybGFuZCBDKysgMzIgYml0cwotICAgICAgICAtIG1ha2Ugc2V0dXAgaW50ZWxjICAgLT4gSW50ZWwgQysrCi0gICAgICAgIC0gbWFrZSBzZXR1cCB3YXRjb20gICAtPiBXYXRjb20gQysrCi0gICAgICAgIC0gbWFrZSBzZXR1cCBsY2MgICAgICAtPiBXaW4zMi1MQ0MKLQotCi0gIElmIHlvdSB3YW50ICB0byBidWlsZCBGcmVlVHlwZSAyIGluIGFub3RoZXIgIGRpcmVjdG9yeSwgeW91IG11c3Qgc2V0Ci0gIHR3byAgZW52aXJvbm1lbnQgIHZhcmlhYmxlcywgIGBPSkJfRElSJyAgYW5kICBgVE9QX0RJUicuICBUaGUgZm9ybWVyCi0gIGdpdmVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIG9iamVjdCBmaWxlcyBhbmQgdGhlIGxpYnJhcnkgc2hvdWxkICBiZQotICBjcmVhdGVkICh0aGlzIGRpcmVjdG9yeSBtdXN0IGV4aXN0KSwgdGhlIGxhdHRlciB0aGUgdG9wIGRpcmVjdG9yeSBvZgotICB0aGUgRnJlZVR5cGUgMiBzb3VyY2UgdHJlZS4gIEV4YW1wbGU6Ci0KLSAgICBPQkpfRElSPX4vZnJlZXR5cGUyLmNvbXBpbGVkIFRPUF9ESVI9fi9mcmVldHlwZTIgXAotICAgICAgbWFrZSAtZiRUT1BfRElSL01ha2VmaWxlIHNldHVwIGFuc2kKLSAgICBPQkpfRElSPX4vZnJlZXR5cGUyLmNvbXBpbGVkIFRPUF9ESVI9fi9mcmVldHlwZTIgXAotICAgICAgbWFrZSAtZiRUT1BfRElSL01ha2VmaWxlCi0KLSAgT24gIFVuaXggYm94ZXMsICBjYWxsaW5nICBgY29uZmlndXJlJyBmcm9tICB0aGUgIGJ1aWxkIGRpcmVjdG9yeSAgaXMKLSAgc3VmZmljaWVudDsgIGl0ICB3aWxsICBidWlsZCAgYSAgc21hbGwgICBNYWtlZmlsZSAgd2hpY2ggIGNhbGxzICB0aGUKLSAgRnJlZVR5cGUgMiBNYWtlZmlsZSB3aXRoIHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycy4KLQotCi1JSUkuIEluIHlvdXIgb3duIGVudmlyb25tZW50IChJREUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgWW91IG5lZWQgdG8gYWRkICB0aGUgZGlyZWN0b3JpZXMgImZyZWV0eXBlMi9pbmNsdWRlIiB0byB5b3VyIGluY2x1ZGUKLSAgcGF0aCB3aGVuIGNvbXBpbGluZyB0aGUgbGlicmFyeS4KLQotICBGcmVlVHlwZSAgMiBpcyAgbWFkZSAgb2Ygc2V2ZXJhbCAgY29tcG9uZW50czsgIGVhY2ggb25lICBvZiB0aGVtICBpcwotICBsb2NhdGVkICAgaW4gIGEgIHN1YmRpcmVjdG9yeSAgIG9mICAiZnJlZXR5cGUyL3NyYyIuICAgRm9yICBleGFtcGxlLAotICBgZnJlZXR5cGUyL3NyYy90cnVldHlwZS8nIGNvbnRhaW5zIHRoZSBUcnVlVHlwZSBmb250IGRyaXZlci4KLQotICBETyBOT1QgQ09NUElMRSBBTEwgQyBGSUxFUyEgIFJhdGhlciwgY29tcGlsZSB0aGUgZm9sbG93aW5nIG9uZXM6Ci0KLSAgICAtLSBiYXNlIGNvbXBvbmVudHMgKHJlcXVpcmVkKQotCi0gICAgICBzcmMvYmFzZS9mdHN5c3RlbS5jCi0gICAgICBzcmMvYmFzZS9mdGluaXQuYwotICAgICAgc3JjL2Jhc2UvZnRkZWJ1Zy5jCi0gICAgICBzcmMvYmFzZS9mdGJhc2UuYwotICAgICAgc3JjL2Jhc2UvZnRnbHlwaC5jCi0gICAgICBzcmMvYmFzZS9mdGJib3guYwotICAgICAgc3JjL2Jhc2UvZnRtbS5jCi0KLSAgICAgIHNyYy9iYXNlL2Z0bWFjLmMgICAgICAgIC0tIG9ubHkgb24gdGhlIE1hY2ludG9zaAotCi0gICAgLS0gb3RoZXIgY29tcG9uZW50cyBhcmUgb3B0aW9uYWwKLQotICAgICAgc3JjL2F1dG9oaW50L2F1dG9oaW50LmMgLS0gYXV0byBoaW50aW5nIG1vZHVsZQotICAgICAgc3JjL2NhY2hlL2Z0Y2FjaGUuYyAgICAgLS0gY2FjaGUgc3ViLXN5c3RlbSAoaW4gYmV0YSkKLSAgICAgIHNyYy9zZm50L3NmbnQuYyAgICAgICAgIC0tIFNGTlQgZmlsZXMgc3VwcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRydWVUeXBlICYgT3BlblR5cGUpCi0gICAgICBzcmMvY2ZmL2NmZi5jICAgICAgICAgICAtLSBDRkYvT3BlblR5cGUgZm9udCBkcml2ZXIKLSAgICAgIHNyYy9wc25hbWVzL3BzbmFtZXMuYyAgIC0tIFBvc3RzY3JpcHQgZ2x5cGggbmFtZXMgc3VwcG9ydAotICAgICAgc3JjL3BzYXV4L3BzYXV4LmMgICAgICAgLS0gUG9zdHNjcmlwdCBUeXBlIDEgcGFyc2luZwotICAgICAgc3JjL3RydWV0eXBlL3RydWV0eXBlLmMgLS0gVHJ1ZVR5cGUgZm9udCBkcml2ZXIKLSAgICAgIHNyYy90eXBlMS90eXBlMS5jICAgICAgIC0tIFR5cGUgMSBmb250IGRyaXZlcgotICAgICAgc3JjL2NpZC90eXBlMWNpZC5jICAgICAgLS0gVHlwZSAxIENJRC1rZXllZCBmb250IGRyaXZlcgotICAgICAgc3JjL3dpbmZvbnRzL3dpbmZvbnRzLmMgLS0gV2luZG93cyBGT05UIC8gRk5UIGZvbnQgZHJpdmVyCi0KLSAgICBOb3RlOgotCi0gICAgICAgYHRydWV0eXBlLmMnIG5lZWRzIGBzZm50LmMnIGFuZCBgcHNuYW1lcy5jJwotICAgICAgIGB0eXBlMS5jJyAgICBuZWVkcyBgcHNhdXguYycgYW5kIGBwc25hbWVzLmMnCi0gICAgICAgYHR5cGUxY2lkLmMnIG5lZWRzIGBwc2F1eC5jJyBhbmQgYHBzbmFtZXMuYycKLSAgICAgICBgY2ZmLmMnICAgICAgbmVlZHMgYHNmbnQuYycsIGBwc2F1eC5jJywgYW5kIGBwc25hbWVzLmMnCi0KLSAgICAgICBldGMuCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCAiZG9jcy9CVUlMRCIuCi0KLS0tLSBlbmQgb2YgSU5TVEFMTCAtLQorICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuQU5ZIGIvZG9jcy9JTlNUQUxMLkFOWQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTJjZjBlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9JTlNUQUxMLkFOWQpAQCAtMCwwICsxLDk2IEBACitJbnN0cnVjdGlvbnMgb24gaG93IHRvIGJ1aWxkIEZyZWVUeXBlIHdpdGggeW91ciBvd24gYnVpbGQgdG9vbDoKKworICBzZWUgdGhlIGZpbGUgIkNVU1RPTUlaRSIgdG8gbGVhcm4gaG93IHRvIGN1c3RvbWl6ZSBGcmVlVHlwZSB0bworICBzcGVjaWZpYyBlbnZpcm9ubWVudHMuCisKKyAgZm9sbG93IHRoZXNlIHNpbXBsZSBzdGVwczoKKworSS4gTm9ybWFsIHdheToKKy0tLS0tLS0tLS0tLS0tCisKKyAgKiBESVNBQkxFIFBSRS1DT01QSUxFRCBIRUFERVJTICEgVGhpcyBpcyB2ZXJ5IGltcG9ydGFudCBmb3IgVmlzdWFsCisgICAgQysrLCBiZWNhdXNlIEZyZWVUeXBlIHVzZXMgbGluZXMgbGlrZToKKyAgICAKKyAgICAgICAjaW5jbHVkZSBGVF9GUkVFVFlQRV9ICisgICAgCisgICAgd2hpY2ggYXJlIG5vdCBjb3JyZWN0bHkgc3VwcG9ydGVkIGJ5IHRoaXMgY29tcGlsZXIsIHdoaWxlIGJlaW5nCisgICAgSVNPIEMgY29tcGxpYW50ICEhCisKKyAgKiBZb3UgbmVlZCB0byBhZGQgIHRoZSBkaXJlY3RvcmllcyAiZnJlZXR5cGUyL2luY2x1ZGUiIHRvIHlvdXIgaW5jbHVkZQorICAgIHBhdGggd2hlbiBjb21waWxpbmcgdGhlIGxpYnJhcnkuCisKKyAgKiBGcmVlVHlwZSAgMiBpcyAgbWFkZSAgb2Ygc2V2ZXJhbCAgY29tcG9uZW50czsgIGVhY2ggb25lICBvZiB0aGVtICBpcworICAgIGxvY2F0ZWQgICBpbiAgYSAgc3ViZGlyZWN0b3J5ICAgb2YgICJmcmVldHlwZTIvc3JjIi4gICBGb3IgIGV4YW1wbGUsCisgICAgJ2ZyZWV0eXBlMi9zcmMvdHJ1ZXR5cGUvJyBjb250YWlucyB0aGUgVHJ1ZVR5cGUgZm9udCBkcml2ZXIuCisKKyAgKiBETyBOT1QgQ09NUElMRSBBTEwgQyBGSUxFUyEgIFJhdGhlciwgY29tcGlsZSB0aGUgZm9sbG93aW5nIG9uZXM6CisKKyAgICAgIC0tIGJhc2UgY29tcG9uZW50cyAocmVxdWlyZWQpCisKKyAgICAgICAgc3JjL2Jhc2UvZnRzeXN0ZW0uYworICAgICAgICBzcmMvYmFzZS9mdGluaXQuYworICAgICAgICBzcmMvYmFzZS9mdGRlYnVnLmMKKyAgICAgICAgc3JjL2Jhc2UvZnRiYXNlLmMKKyAgICAgICAgc3JjL2Jhc2UvZnRnbHlwaC5jCisgICAgICAgIHNyYy9iYXNlL2Z0YmJveC5jCisgICAgICAgIHNyYy9iYXNlL2Z0bW0uYworICAgICAgICBzcmMvYmFzZS9mdHBmci5jICAgICAgICAtLSBvcHRpb25hbCwgc2VlIDxmcmVldHlwZS9mdHBmci5oPgorICAgICAgICBzcmMvYmFzZS9mdGJkZi5jICAgICAgICAtLSBvcHRpb25hbCwgc2VlIDxmcmVldHlwZS9mdGJkZi5oPgorICAgICAgICBzcmMvYmFzZS9mdHdpbmZudC5jICAgICAtLSBvcHRpb25hbCwgc2VlIDxmcmVldHlwZS9mdHdpbmZudC5oPgorCisgICAgICAgIHNyYy9iYXNlL2Z0bWFjLmMgICAgICAgIC0tIG9ubHkgb24gdGhlIE1hY2ludG9zaAorCisgICAgIC0tIG90aGVyIGNvbXBvbmVudHMgYXJlIG9wdGlvbmFsCisKKyAgICAgICAgc3JjL2F1dG9oaW50L2F1dG9oaW50LmMgLS0gYXV0byBoaW50aW5nIG1vZHVsZQorICAgICAgICBzcmMvY2FjaGUvZnRjYWNoZS5jICAgICAtLSBjYWNoZSBzdWItc3lzdGVtIChpbiBiZXRhKQorICAgICAgICBzcmMvc2ZudC9zZm50LmMgICAgICAgICAtLSBTRk5UIGZpbGVzIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRydWVUeXBlICYgT3BlblR5cGUpCisgICAgICAgIHNyYy9jZmYvY2ZmLmMgICAgICAgICAgIC0tIENGRi9PcGVuVHlwZSBmb250IGRyaXZlcgorICAgICAgICBzcmMvcGZyL3Bmci5jICAgICAgICAgICAtLSBQRlIvVHJ1ZURvYyBmb250IGRyaXZlcgorICAgICAgICBzcmMvYmRmL2JkZi5jICAgICAgICAgICAtLSBCREYgZm9udCBkcml2ZXIKKyAgICAgICAgc3JjL3BjZi9wY2YuYyAgICAgICAgICAgLS0gUENGIGZvbnQgZHJpdmVyCisgICAgICAgIHNyYy9wc25hbWVzL3BzbmFtZXMuYyAgIC0tIFBvc3RzY3JpcHQgZ2x5cGggbmFtZXMgc3VwcG9ydAorICAgICAgICBzcmMvcHNhdXgvcHNhdXguYyAgICAgICAtLSBQb3N0c2NyaXB0IFR5cGUgMSBwYXJzaW5nCisgICAgICAgIHNyYy90cnVldHlwZS90cnVldHlwZS5jIC0tIFRydWVUeXBlIGZvbnQgZHJpdmVyCisgICAgICAgIHNyYy90eXBlMS90eXBlMS5jICAgICAgIC0tIFR5cGUgMSBmb250IGRyaXZlcgorICAgICAgICBzcmMvY2lkL3R5cGUxY2lkLmMgICAgICAtLSBUeXBlIDEgQ0lELWtleWVkIGZvbnQgZHJpdmVyCisgICAgICAgIHNyYy93aW5mb250cy93aW5mb250cy5jIC0tIFdpbmRvd3MgRk9OVCAvIEZOVCBmb250IGRyaXZlcgorICAgICAgICBzcmMvcmFzdGVyMS9yYXN0ZXIxLmMgICAtLSBtb25vY2hyb21lIHJhc3Rlcml6ZXIKKyAgICAgICAgc3JjL3Ntb290aC9zbW9vdGguYyAgICAgLS0gYW50aS1hbGlhc2luZyByYXN0ZXJpemVyCisKKyAgICBOb3RlOgorCisgICAgICBgdHJ1ZXR5cGUuYycgbmVlZHMgYHNmbnQuYycgYW5kIGBwc25hbWVzLmMnCisgICAgICBgdHlwZTEuYycgICAgbmVlZHMgYHBzYXV4LmMnIGFuZCBgcHNuYW1lcy5jJworICAgICAgYHR5cGUxY2lkLmMnIG5lZWRzIGBwc2F1eC5jJyBhbmQgYHBzbmFtZXMuYycKKyAgICAgIGBjZmYuYycgICAgICBuZWVkcyBgc2ZudC5jJywgYHBzYXV4LmMnLCBhbmQgYHBzbmFtZXMuYycKKworICB0aGF0IHNob3VsZCBiZSBpdCAhIGluIGNhc2Ugb2YgcHJvYmxlbXMsIHNlZSB0aGUgYXJjaGl2ZXMgb2YKKyAgdGhlIEZyZWVUeXBlIGRldmVsb3BtZW50IG1haWxpbmcgbGlzdC4KKworCitJSS4gU3VwcG9ydCBmb3IgZmxhdC1kaXJlY3RvcnkgY29tcGlsYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEl0IGlzICBwb3NzaWJsZSB0byAgcHV0IGFsbCAgRnJlZVR5cGUgMiBzb3VyY2UgIGZpbGVzIGludG8gIGEgc2luZ2xlCisgIGRpcmVjdG9yeSwgd2l0aCB0aGUgKmV4Y2VwdGlvbiogb2YgdGhlIGBpbmNsdWRlJyBoaWVyYXJjaHkuCisKKyAgICAxLiBDb3B5IGFsbCBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeToKKworICAgICAgICBjcCBmcmVldHlwZTIvc3JjL2Jhc2UvKi5baGNdIC4KKyAgICAgICAgY3AgZnJlZXR5cGUyL3NyYy9yYXN0ZXIxLyouW2hjXSAuCisgICAgICAgIGNwIGZyZWV0eXBlMi9zcmMvc21vb3RoLyouW2hjXSAuCisgICAgICAgIGV0Yy4KKworICAgIDIuIENvbXBpbGUgc291cmNlczoKKworICAgICAgICBjYyAtYyAtSWZyZWV0eXBlMi9pbmNsdWRlIGZ0c3lzdGVtLmMKKyAgICAgICAgY2MgLWMgLUlmcmVldHlwZTIvaW5jbHVkZSBmdGluaXQuYworICAgICAgICBjYyAtYyAtSWZyZWV0eXBlMi9pbmNsdWRlIGZ0ZGVidWcuYworICAgICAgICBjYyAtYyAtSWZyZWV0eXBlMi9pbmNsdWRlIGZ0YmFzZS5jCisgICAgICAgIGV0Yy4KKworICAgWW91IGRvbid0IG5lZWQgdG8gZGVmaW5lIHRoZSBGVF9GTEFUX0NPTVBJTEFUSU9OIG1hY3JvIChhcyB0aGlzIHdhcworICAgcmVxdWlyZWQgaW4gcHJldmlvdXMgcmVsZWFzZXMgb2YgRnJlZVR5cGUgMikuCisKZGlmZiAtLWdpdCBhL2RvY3MvSU5TVEFMTC5HTlUgYi9kb2NzL0lOU1RBTEwuR05VCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNmYwMTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0lOU1RBTEwuR05VCkBAIC0wLDAgKzEsMTI4IEBACitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIGluc3RydWN0aW9ucyBvbiBob3cgdG8gYnVpbGQgdGhlIEZyZWVUeXBlIGxpYnJhcnkKK29uIG5vbi1Vbml4IHN5c3RlbXMgd2l0aCB0aGUgaGVscCBvZiBHTlUgTWFrZS4gTm90ZSB0aGF0IGlmIHlvdSdyZSBydW5uaW5nCitDeWd3aW4gb3IgTVN5cyBpbiBXaW5kb3dzLCB5b3Ugc2hvdWxkIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIG9mIElOU1RBTEwuVU5YCitpbnN0ZWFkLgorCisKKyAgRnJlZVR5cGUgMiBpbmNsdWRlcyBhIHBvd2VyZnVsIGFuZCBmbGV4aWJsZSBidWlsZCBzeXN0ZW0gdGhhdCBhbGxvd3MKKyAgeW91IHRvICBlYXNpbHkgY29tcGlsZSBpdCBvbiAgYSBncmVhdCB2YXJpZXR5IG9mICBwbGF0Zm9ybXMgZnJvbSB0aGUKKyAgY29tbWFuZCBsaW5lLiAgVG8gZG8gc28sIGp1c3QgZm9sbG93IHRoZXNlIHNpbXBsZSBpbnN0cnVjdGlvbnM6CisKKyAgYS4gSW5zdGFsbCBHTlUgTWFrZQorCisgICAgQmVjYXVzZSAgR05VIE1ha2UgIGlzICB0aGUgIG9ubHkgTWFrZSAgdG9vbCAgc3VwcG9ydGVkIHRvICBjb21waWxlCisgICAgRnJlZVR5cGUgMiwgeW91IHNob3VsZCBpbnN0YWxsIGl0IG9uIHlvdXIgbWFjaGluZS4KKworICAgIFRoZSBGcmVlVHlwZSAyIGJ1aWxkIHN5c3RlbSByZWxpZXMgb24gbWFueSBmZWF0dXJlcyBzcGVjaWFsIHRvIEdOVQorICAgIE1ha2UgLS0gdHJ5aW5nIHRvIGJ1aWxkIHRoZSAgbGlicmFyeSB3aXRoIGFueSBvdGhlciBNYWtlIHRvb2wgd2lsbAorICAgICpmYWlsKi4KKworICAgIE5FQVJMWSBBTEwgT1RIRVIgTUFLRSBUT09MUyBXSUxMIEZBSUwsIElOQ0xVRElORyAiQlNEIE1BS0UiLCBTTworICAgIFJFQUxMWSBJTlNUQUxMIEEgUkVDRU5UIFZFUlNJT04gT0YgR05VIE1BS0UgT04gWU9VUiBTWVNURU0hCisKKyAgICBNYWtlIHN1cmUgdGhhdCB5b3UgYXJlIGludm9raW5nIEdOVSBNYWtlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnkKKyAgICB0eXBpbmcgc29tZXRoaW5nIGxpa2U6CisKKyAgICAgICAgbWFrZSAtdgorCisgICAgdG8gZGlzcGxheSBpdHMgdmVyc2lvbiBudW1iZXIuCisKKyAgICBWRVJTSU9OIDMuNzguMSBPUiBORVdFUiBJUyBORUVERUQhCisKKworCisgIGIuIEludm9rZSAnbWFrZScKKworICAgIEdvIHRvICB0aGUgcm9vdCAgZGlyZWN0b3J5IG9mIEZyZWVUeXBlICAyLCB0aGVuIHNpbXBseSAgaW52b2tlIEdOVQorICAgIE1ha2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgIFRoaXMgd2lsbCBsYXVuY2ggdGhlIEZyZWVUeXBlIDIgaG9zdAorICAgIHBsYXRmb3JtICBkZXRlY3Rpb24gcm91dGluZXMuICAgQSBzdW1tYXJ5ICB3aWxsIGJlICBkaXNwbGF5ZWQsIGZvcgorICAgIGV4YW1wbGUsIG9uIFdpbjMyOgorCisKKyAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgRnJlZVR5cGUgYnVpbGQgc3lzdGVtIC0tIGF1dG9tYXRpYyBzeXN0ZW0gZGV0ZWN0aW9uCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgdXNlZDoKKworICAgICAgICAgIHBsYXRmb3JtICAgICAgICAgICAgICAgICAgICAgd2luMzIKKyAgICAgICAgICBjb21waWxlciAgICAgICAgICAgICAgICAgICAgIGdjYworICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5ICAgICAgLi9idWlsZHMvd2luMzIKKyAgICAgICAgICBjb25maWd1cmF0aW9uIHJ1bGVzICAgICAgICAgIC4vYnVpbGRzL3dpbjMyL3czMi1nY2MubWsKKworICAgICAgICBJZiB0aGlzIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8geW91ciBzeXN0ZW0gb3Igc2V0dGluZ3MgcGxlYXNlCisgICAgICAgIHJlbW92ZSB0aGUgZmlsZSAnY29uZmlnLm1rJyBmcm9tIHRoaXMgZGlyZWN0b3J5IHRoZW4gcmVhZCB0aGUKKyAgICAgICAgSU5TVEFMTCBmaWxlIGZvciBoZWxwLgorCisgICAgICAgIE90aGVyd2lzZSwgc2ltcGx5IHR5cGUgJ21ha2UnIGFnYWluIHRvIGJ1aWxkIHRoZSBsaWJyYXJ5LgorICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworICAgIElmIHRoZSBkZXRlY3RlZCBzZXR0aW5ncyBjb3JyZXNwb25kIHRvIHlvdXIgcGxhdGZvcm0gYW5kIGNvbXBpbGVyLAorICAgIHNraXAgdG8gc3RlcCBlLiAgTm90ZSB0aGF0IGlmIHlvdXIgcGxhdGZvcm0gaXMgY29tcGxldGVseSBhbGllbiB0bworICAgIHRoZSBidWlsZCBzeXN0ZW0sIHRoZSBkZXRlY3RlZCBwbGF0Zm9ybSB3aWxsIGJlICdhbnNpJy4KKworCisgIGMuIENvbmZpZ3VyZSB0aGUgYnVpbGQgc3lzdGVtIGZvciBhIGRpZmZlcmVudCBjb21waWxlcgorCisgICAgSWYgdGhlIGJ1aWxkIHN5c3RlbSBjb3JyZWN0bHkgZGV0ZWN0ZWQgeW91ciBwbGF0Zm9ybSwgYnV0IHlvdSB3YW50CisgICAgdG8gdXNlIGEgZGlmZmVyZW50IGNvbXBpbGVyICB0aGFuIHRoZSBvbmUgc3BlY2lmaWVkIGluIHRoZSBzdW1tYXJ5CisgICAgKGZvciBtb3N0IHBsYXRmb3JtcywgZ2NjIGlzICB0aGUgZGVmYXV0IGNvbXBpbGVyKSwgaW52b2tlIEdOVSBNYWtlCisgICAgd2l0aAorCisgICAgICAgICBtYWtlIHNldHVwIDxjb21waWxlcj4KKworICAgIEZvciBleGFtcGxlOgorCisgICAgICAgIHRvIHVzZSBWaXN1YWwgQysrIG9uIFdpbjMyLCB0eXBlOiAgIm1ha2Ugc2V0dXAgdmlzdWFsYyIKKyAgICAgICAgdG8gdXNlIEJvcmxhbmQgQysrIG9uIFdpbjMyLCB0eXBlICAibWFrZSBzZXR1cCBiY2MzMiIKKyAgICAgICAgdG8gdXNlIFdhdGNvbSBDKysgb24gV2luMzIsIHR5cGUgICAibWFrZSBzZXR1cCB3YXRjb20iCisgICAgICAgIHRvIHVzZSBJbnRlbCBDKysgb24gV2luMzIsIHR5cGUgICAgIm1ha2Ugc2V0dXAgaW50ZWxjIgorICAgICAgICB0byB1c2UgTENDLVdpbjMyIG9uIFdpbjMyLCB0eXBlOiAgICJtYWtlIHNldHVwIGxjYyIKKyAgICAgICAgdG8gdXNlIFdhdGNvbSBDKysgb24gT1MvMiwgdHlwZSAgICAibWFrZSBzZXR1cCB3YXRjb20iCisgICAgICAgIHRvIHVzZSBWaXN1YWxBZ2UgQysrIG9uIE9TLzIsIHR5cGUgIm1ha2Ugc2V0dXAgdmlzdWFsYWdlIgorCisgICAgVGhlICA8Y29tcGlsZXI+IG5hbWUgdG8gIHVzZSBpcyAgcGxhdGZvcm0tZGVwZW5kZW50LiAgVGhlICBsaXN0IG9mCisgICAgYXZhaWxhYmxlICBjb21waWxlcnMgZm9yICB5b3VyICBzeXN0ZW0gaXMgIGF2YWlsYWJsZSAgaW4gdGhlICBmaWxlCisgICAgYGJ1aWxkcy88c3lzdGVtPi9kZXRlY3QubWsnCisKKyAgICBJZiB5b3UgIGFyZSBzYXRpc2ZpZWQgIGJ5IHRoZSBuZXcgIGNvbmZpZ3VyYXRpb24gc3VtbWFyeSwgIHNraXAgdG8KKyAgICBzdGVwIGUuCisKKyAgZC4gQ29uZmlndXJlIHRoZSBidWlsZCBzeXN0ZW0gZm9yIGFuIHVua25vd24gcGxhdGZvcm0vY29tcGlsZXIKKworICAgIFRoZSBhdXRvLWRldGVjdGlvbi9zZXR1cCAgcGhhc2Ugb2YgdGhlIGJ1aWxkIHN5c3RlbSAgY29waWVzIGEgZmlsZQorICAgIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB1bmRlciB0aGUgbmFtZSBgY29uZmlnLm1rJy4KKworICAgIEZvciAgICBleGFtcGxlLCAgICBvbiAgICBPUy8yK2djYywgICAgaXQgICB3b3VsZCAgICBzaW1wbHkgICAgY29weQorICAgIGBidWlsZHMvb3MyL29zMi1nY2MubWsnIHRvIGAuL2NvbmZpZy5taycuCisKKyAgICBJZiBmb3IgIHNvbWUgcmVhc29uIHlvdXIgIHBsYXRmb3JtIGlzbid0IGNvcnJlY3RseSAgZGV0ZWN0ZWQsIGNvcHkKKyAgICBtYW51YWxseSB0aGUgY29uZmlndXJhdGlvbiBzdWItbWFrZWZpbGUgdG8gYC4vY29uZmlnLm1rJyBhbmQgZ28gdG8KKyAgICBzdGVwIGUuCisKKyAgICBOb3RlICB0aGF0ICB0aGlzIGZpbGUgIGlzICBhICBzdWItTWFrZWZpbGUgIHVzZWQgdG8gIHNwZWNpZnkgIE1ha2UKKyAgICB2YXJpYWJsZXMgIGZvciBjb21waWxlciAgYW5kIGxpbmtlciAgaW52b2NhdGlvbiBkdXJpbmcgIHRoZSBidWlsZC4KKyAgICBZb3UgY2FuICBlYXNpbHkgY3JlYXRlIHlvdXIgb3duICB2ZXJzaW9uIGZyb20gb25lICBvZiB0aGUgZXhpc3RpbmcKKyAgICBjb25maWd1cmF0aW9uIGZpbGVzLCAgdGhlbiBjb3B5IGl0IHRvIHRoZSAgY3VycmVudCBkaXJlY3RvcnkgdW5kZXIKKyAgICB0aGUgbmFtZSBgLi9jb25maWcubWsnLgorCisgIGUuIEJ1aWxkIHRoZSBsaWJyYXJ5CisKKyAgICBUaGUgYXV0by1kZXRlY3Rpb24vc2V0dXAgIHBoYXNlIHNob3VsZCBoYXZlICBjb3BpZWQgYSBmaWxlICBpbiB0aGUKKyAgICBjdXJyZW50ICBkaXJlY3RvcnksICBjYWxsZWQgICBgLi9jb25maWcubWsnLiAgVGhpcyAgZmlsZSAgY29udGFpbnMKKyAgICBkZWZpbml0aW9ucyBvZiB2YXJpb3VzIE1ha2UgIHZhcmlhYmxlcyB1c2VkIHRvIGludm9rZSB0aGUgY29tcGlsZXIKKyAgICBhbmQgbGlua2VyIGR1cmluZyB0aGUgYnVpbGQuCisKKyAgICBUbyAgbGF1bmNoICB0aGUgYnVpbGQsICBzaW1wbHkgIGludm9rZSAgR05VICBNYWtlIGFnYWluOiAgVGhlICB0b3AKKyAgICBNYWtlZmlsZSB3aWxsIGRldGVjdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBydW4gdGhlIGJ1aWxkIHdpdGgKKyAgICBpdC4KKworCisKKyAgRmluYWwgbm90ZToKKyAgCisgICAgdGhlIGJ1aWxkIHN5c3RlbSBidWlsZHMgYSBzdGF0aWNhbGx5IGxpbmtlZCBsaWJyYXJ5IG9mIHRoZSBmb250IGVuZ2luZQorICAgIGluIHRoZSAib2JqcyIgZGlyZWN0b3J5LiBJdCBkb2VzIF9ub3RfIHN1cHBvcnQgdGhlIGJ1aWxkIG9mIERMTHMgb24KKyAgICBXaW5kb3dzIGFuZCBPUy8yLCBpZiB5b3UgbmVlZCB0aGVzZSwgeW91J2xsIGhhdmUgdG8gZWl0aGVyIHVzZQorICAgIGEgSURFLXNwZWNpZmljIHByb2plY3QgZmlsZSwgb3IgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4KKyAgICAiSU5TVEFMTC5BTlkiIHRvIGNyZWF0ZSB5b3VyIG93biBNYWtlZmlsZXMuCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuVU5YIGIvZG9jcy9JTlNUQUxMLlVOWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWYxNzZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9JTlNUQUxMLlVOWApAQCAtMCwwICsxLDE4MSBAQAorVGhpcyBkb2N1bWVudCBjb250YWlucyBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGJ1aWxkIHRoZSBGcmVlVHlwZSBsaWJyYXJ5CitvbiBVbml4IHN5c3RlbXMuIFRoaXMgYWxzbyB3b3JrcyBmb3IgZW11bGF0aW9ucyBsaWtlIEN5Z3dpbiBvciBNU3lzIG9uCitXaW4zMjoKKworCisgIEkuIEVuc3VyZSB0aGF0IHlvdSBhcmUgdXNpbmcgR05VIE1ha2UKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIEZyZWVUeXBlIGJ1aWxkIHN5c3RlbSAgX2V4Y2x1c2l2ZWx5XyB3b3JrcyB3aXRoIEdOVSBNYWtlLiAgWW91CisgICAgd2lsbCAgbm90IGJlICBhYmxlIHRvICBjb21waWxlIHRoZSAgbGlicmFyeSB3aXRoICB0aGUgaW5zdHJ1Y3Rpb25zCisgICAgYmVsb3cgdXNpbmcgYW55IG90aGVyIGFsdGVybmF0aXZlIChpbmNsdWRpbmcgQlNEIE1ha2UpLgorCisgICAgVHJ5aW5nICB0byBjb21waWxlICB0aGUgbGlicmFyeSAgd2l0aCBhICBkaWZmZXJlbnQgTWFrZSAgdG9vbCB3aWxsCisgICAgcHJpbnQgYSBtZXNzYWdlIGxpa2U6CisKKyAgICAgIFNvcnJ5LCBHTlUgbWFrZSBpcyByZXF1aXJlZCB0byBidWlsZCBGcmVlVHlwZTIuCisKKyAgICBhbmQgdGhlIGJ1aWxkICBwcm9jZXNzIHdpbGwgYmUgYWJvcnRlZC4gIElmICB0aGlzIGhhcHBlbnMsIGluc3RhbGwKKyAgICBHTlUgTWFrZSBvbiB5b3VyIHN5c3RlbSwgIGFuZCB1c2UgdGhlIEdOVU1BS0UgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICB0byBuYW1lIGl0LgorCisKKworICBJVi4gQnVpbGQgYW5kIGluc3RhbGwgdGhlIGxpYnJhcnkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgZm9sbG93aW5nICBzaG91bGQgd29yayAgb24gYWxsIFVuaXggIHN5c3RlbXMgd2hlcmUgIHRoZSAnbWFrZScKKyAgICBjb21tYW5kIGludm9rZXMgR05VIE1ha2U6CisKKyAgICAgIC4vY29uZmlndXJlIC0tcHJlZml4PTx5b3VycHJlZml4PgorICAgICAgbWFrZQorICAgICAgbWFrZSBpbnN0YWxsICAgICAgICAgICAoYXMgcm9vdCkKKworICAgIHdoZXJlICI8eW91cnByZWZpeD4iICBtdXN0IGJlIHJlcGxhY2VkICBieSB0aGUgcHJlZml4ICByZXR1cm5lZCBieQorICAgIHRoZSAiZnJlZXR5cGUtY29uZmlnIiBjb21tYW5kLgorCisgICAgV2hlbiB1c2luZyBhIGRpZmZlcmVudCBjb21tYW5kIHRvIGludm9rZSBHTlUgTWFrZSwgdXNlIHRoZSBHTlVNQUtFCisgICAgdmFyaWFibGUuICBGb3IgZXhhbXBsZSwgIGlmIGBnbWFrZScgaXMgdGhlIGNvbW1hbmQgIHRvIHVzZSBvbiB5b3VyCisgICAgc3lzdGVtLCBkbyBzb21ldGhpbmcgbGlrZToKKworICAgICAgIEdOVU1BS0U9Z21ha2UgLi9jb25maWd1cmUgLS1wcmVmaXg9PHlvdXJwcmVmaXg+CisgICAgICAgZ21ha2UKKyAgICAgICBnbWFrZSBpbnN0YWxsICAgICAgICAgICAgKGFzIHJvb3QpCisKKyAgICBJZiAgdGhpcyAgc3RpbGwgIGRvZXNuJ3QgICB3b3JrLCAgc29tZXRoaW5nJ3Mgcm90dGVuIG9uIHlvdXIgc3lzdGVtKAorICAgIChlLmcuIHlvdSdyZSB1c2luZyBhIHZlcnkgb2xkIHZlcnNpb24gb2YgR05VIE1ha2UpCisKKworCitJLiBVbml4IHN5c3RlbXMKKy0tLS0tLS0tLS0tLS0tLQorCisgIElmIHlvdSBoYXZlIEdOVSBNYWtlIGluc3RhbGxlZCwgc2ltcGx5IHR5cGUKKworICAgIC4vY29uZmlndXJlCisgICAgbWFrZQorICAgIG1ha2UgaW5zdGFsbAorCisgIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gY29uZmlndXJlLCBidWlsZCBhbmQgaW5zdGFsbCBGcmVlVHlwZSBvbiB5b3VyCisgIHN5c3RlbS4gIE5vdGUgdGhhdCB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gcGF0aCBpcyAiL3Vzci9sb2NhbCIuCisKKyAgUGxlYXNlIHJlYWQgdGhlIGZpbGUgIFJFQURNRS5VTlgsIGl0IGNvbnRhaW5zIF9jcml0aWNhbF8gaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgRnJlZVR5cGUgb24gbWFueSBVbml4IHN5c3RlbXMuCisKKworSUkuIEZyb20gdGhlIGNvbW1hbmQgbGluZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIElmICB5b3UgYXJlICBub3QgdXNpbmcgIFVuaXgsIHRoZXJlICBhcmUgdHdvICB3YXlzIHRvICBxdWlja2x5IGJ1aWxkCisgIEZyZWVUeXBlIDIgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorCisgIFRoZSBmaXJzdCwgYW5kIGZhdm9yaXRlIG9uZSwgaXMgdG8gdXNlIHRoZSAiSmFtIiBidWlsZCB0b29sLiAgSmFtIGlzCisgIGEgaGlnaGx5ICBwb3J0YWJsZSByZXBsYWNlbWVudCBmb3IgIE1ha2Ugd2hvc2UgY29udHJvbCBmaWxlcyAgZG8gbm90CisgIGRlcGVuZCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybSBvciBjb21waWxlciB0b29sc2V0LgorCisgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlOgorCisgICAgaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvamFtL2luZGV4Lmh0bWwKKworICBUaGUgc2Vjb25kIG9uZSBpcyB0byB1c2UgIkdOVSBNYWtlIiAoYW5kIE5PIE9USEVSIE1BS0UgVE9PTCkuCisKKworICAxLiBCdWlsZGluZyBGVDIgd2l0aCAiSmFtIgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgT25jZSB5b3UndmUgIGdvdCAqb3VyIHZlcnNpb24qIG9mICB0aGUgSmFtIHRvb2wgIGluc3RhbGxlZCBvbiB5b3VyCisgICAgc3lzdGVtLCBzaW1wbHkgZ28gdG8gdGhlIHRvcC1sZXZlbCBGVDIgZGlyZWN0b3J5LCB0aGVuIHR5cGUKKworICAgICAgImphbSIKKworICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuICBUaGlzIHdpbGwgIGJ1aWxkIHRoZSBsaWJyYXJ5IGFuZCBwbGFjZSBpdCBpbgorICAgIHRoZSAib2JqcyIgZGlyZWN0b3J5LgorCisgICAgQnkgZGVmYXVsdCwgIGEgc3RhdGljICBsaWJyYXJ5IGlzIGJ1aWx0LiAgIE9uIFVuaXggc3lzdGVtcywgIGl0IGlzCisgICAgcG9zc2libGUgdG8gIGJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkgdGhyb3VnaCAgdGhlICJsaWJ0b29sIiBzY3JpcHQuCisgICAgWW91IG5lZWQgdG8gaGF2ZSBsaWJ0b29sICBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0sIHRoZW4gcmUtZGVmaW5lCisgICAgYSBmZXcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGJlZm9yZSBpbnZva2luZyBKYW0sIGFzIGluCisKKyAgICAgICBleHBvcnQgQ0M9ImxpYnRvb2wgLS1tb2RlPWNvbXBpbGUgY2MiCisgICAgICAgZXhwb3J0IExJTks9ImxpYnRvb2wgLS1tb2RlPWxpbmsgY2MiCisgICAgICAgamFtCisKKyAgICBJbiAgbGF0ZXIgcmVsZWFzZXMgIG9mICBGVDIsIGJ1aWxkaW5nICBzaGFyZWQgIGxpYnJhcmllcyB3aXRoICBKYW0KKyAgICBzaG91bGQgYmVjb21lIGF1dG9tYXRpYyBvbiBVbml4IHN5c3RlbXMuCisKKworICAyLiBCdWlsZGluZyBGVDIgd2l0aCAiR05VIE1ha2UiCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBZb3UgbmVlZCAgdG8gaGF2ZSAgR05VIE1ha2UgKHZlcnNpb24gIDMuNzguMSBvciBuZXdlcikgIGluc3RhbGxlZCBvbgorICB5b3VyIHN5c3RlbSB0byBjb21waWxlIHRoZSBsaWJyYXJ5IGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIFRoaXMgd2lsbAorICBfTk9UXyB3b3JrIHdpdGggb3RoZXIgbWFrZSB0b29scyAoaW5jbHVkaW5nIEJTRCBtYWtlKSEKKworICBbV2VsbCwgdGhpcyBpcyBub3QgIHJlYWxseSBjb3JyZWN0LiAgUmVjZW50bHksIGEgcGVybCBpbXBsZW1lbnRhdGlvbgorICBvZiBtYWtlIGNhbGxlZCBgbWFrZXBwJyBoYXMgYXBwZWFyZWQgd2hpY2ggY2FuIGFsc28gYnVpbGQgRnJlZVR5cGUgMgorICBzdWNjZXNzZnVsbHkgb24gIFVuaXggcGxhdGZvcm1zLiAgIFNlZSBodHRwOi8vbWFrZXBwLnNvdXJjZWZvcmdlLm5ldAorICBmb3IgbW9yZSBkZXRhaWxzLl0KKworICAtIEdvIHRvIHRoZSBgZnJlZXR5cGUyJyBkaXJlY3RvcnkuCisKKyAgLSBVbml4IChhbnkgQyBjb21waWxlciBzaG91bGQgd29yayk6CisKKyAgICAgIC0gbWFrZSBzZXR1cCAoZG9uJ3Qgd29ycnksIHRoaXMgd2lsbCBpbnZva2UgYSBjb25maWd1cmUgc2NyaXB0KQorICAgICAgLSBtYWtlCisgICAgICAtIG1ha2UgaW5zdGFsbAorCisgICAgQWx0ZXJuYXRpdmVseSwgIHlvdSBjYW4gIHBhc3MgcGFyYW1ldGVycyAgdG8gdGhlICBjb25maWd1cmUgc2NyaXB0CisgICAgd2l0aGluIHRoZSBDRkcgdmFyaWFibGUsIGFzIGluOgorCisgICAgICAtIG1ha2Ugc2V0dXAgQ0ZHPSItLXByZWZpeD0vdXNyIgorICAgICAgLSBtYWtlCisgICAgICAtIG1ha2UgaW5zdGFsbAorCisgICAgSWYgdGhlICBjb25maWd1cmUgc2NyaXB0IGlzbid0IHJ1biwgIHRyeSB0byBhZGQgYHVuaXgnIGFzIGEgdGFyZ2V0CisgICAgb24gdGhlIGNvbW1hbmQgbGluZSwgZS5nLjoKKworICAgICAgLSBtYWtlIHNldHVwIHVuaXggQ0ZHPSItLXByZWZpeD0vb3B0L2V4cGVyaW1lbnRhbCIKKworCisgIC0gV2luZG93czoKKworICAgIFdlIHByb3ZpZGUgYSAgdmVyc2lvbiBvZiBHTlUgTWFrZSBmb3IgV2luMzIgIG9uIHRoZSBGcmVlVHlwZSBzaXRlLgorICAgIFNlZSBodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy9kb3dubG9hZC5odG1sIGZvciBkZXRhaWxzLgorCisgICAgLSBnY2MgKE1pbmd3LCBfbm90XyBDeWdXaW4pOgorCisgICAgICAgIC0gbWFrZSBzZXR1cAorICAgICAgICAtIG1ha2UKKworCisgICAgLSBWaXN1YWwgQysrOgorCisgICAgICAgIC0gbWFrZSBzZXR1cCB2aXN1YWxjCisgICAgICAgIC0gbWFrZQorCisKKyAgICAtIG90aGVyIGNvbXBpbGVyczoKKworICAgICAgICAtIG1ha2Ugc2V0dXAgYmNjMzIgICAgLT4gQm9ybGFuZCBDKysgMzIgYml0cworICAgICAgICAtIG1ha2Ugc2V0dXAgaW50ZWxjICAgLT4gSW50ZWwgQysrCisgICAgICAgIC0gbWFrZSBzZXR1cCB3YXRjb20gICAtPiBXYXRjb20gQysrCisgICAgICAgIC0gbWFrZSBzZXR1cCBsY2MgICAgICAtPiBXaW4zMi1MQ0MKKworCisgIElmIHlvdSB3YW50ICB0byBidWlsZCBGcmVlVHlwZSAyIGluIGFub3RoZXIgIGRpcmVjdG9yeSwgeW91IG11c3Qgc2V0CisgIHR3byAgZW52aXJvbm1lbnQgIHZhcmlhYmxlcywgIGBPSkJfRElSJyAgYW5kICBgVE9QX0RJUicuICBUaGUgZm9ybWVyCisgIGdpdmVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIG9iamVjdCBmaWxlcyBhbmQgdGhlIGxpYnJhcnkgc2hvdWxkICBiZQorICBjcmVhdGVkICh0aGlzIGRpcmVjdG9yeSBtdXN0IGV4aXN0KSwgdGhlIGxhdHRlciB0aGUgdG9wIGRpcmVjdG9yeSBvZgorICB0aGUgRnJlZVR5cGUgMiBzb3VyY2UgdHJlZS4gIEV4YW1wbGU6CisKKyAgICBPQkpfRElSPX4vZnJlZXR5cGUyLmNvbXBpbGVkIFRPUF9ESVI9fi9mcmVldHlwZTIgXAorICAgICAgbWFrZSAtZiRUT1BfRElSL01ha2VmaWxlIHNldHVwIGFuc2kKKyAgICBPQkpfRElSPX4vZnJlZXR5cGUyLmNvbXBpbGVkIFRPUF9ESVI9fi9mcmVldHlwZTIgXAorICAgICAgbWFrZSAtZiRUT1BfRElSL01ha2VmaWxlCisKKyAgT24gIFVuaXggYm94ZXMsICBjYWxsaW5nICBgY29uZmlndXJlJyBmcm9tICB0aGUgIGJ1aWxkIGRpcmVjdG9yeSAgaXMKKyAgc3VmZmljaWVudDsgIGl0ICB3aWxsICBidWlsZCAgYSAgc21hbGwgICBNYWtlZmlsZSAgd2hpY2ggIGNhbGxzICB0aGUKKyAgRnJlZVR5cGUgMiBNYWtlZmlsZSB3aXRoIHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycy4KKworCistLS0gZW5kIG9mIElOU1RBTEwgLS0KZGlmZiAtLWdpdCBhL2RvY3MvcmVhZG1lLnZtcyBiL2RvY3MvSU5TVEFMTC5WTVMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvcmVhZG1lLnZtcwpyZW5hbWUgdG8gZG9jcy9JTlNUQUxMLlZNUwpkaWZmIC0tZ2l0IGEvZG9jcy9UUlVFVFlQRSBiL2RvY3MvVFJVRVRZUEUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjNDAwMQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvVFJVRVRZUEUKQEAgLTAsMCArMSwyMyBAQAorSG93IHRvIGVuYWJsZSB0aGUgVHJ1ZVR5cGUgbmF0aXZlIGhpbnRlciBpZiB5b3UgbmVlZCBpdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgIFRydWVUeXBlICBieXRlY29kZSAgaW50ZXJwcmV0ZXIgIGlzIGRpc2FibGVkICBpbiAgYWxsICBwdWJsaWMKKyAgcmVsZWFzZXMgIG9mICB0aGUgIEZyZWVUeXBlICBwYWNrYWdlcyAgZm9yICBwYXRlbnRzICByZWFzb25zICAoc2VlCisgIGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL3BhdGVudHMuaHRtbCBmb3IgbW9yZSBkZXRhaWxzKS4KKworICBIb3dldmVyLCBtYW55IExpbnV4IGRpc3RyaWJ1dGlvbnMgZG8gZW5hYmxlIHRoZSBpbnRlcnByZXRlciBpbiB0aGUKKyAgRnJlZVR5cGUgcGFja2FnZXMgKERFQi9SUE0vZXRjLikgdGhleSBwcm9kdWNlIGZvciB0aGVpciBwbGF0Zm9ybXMuCisgIElmIHlvdSBhcmUgdXNpbmcgVHJ1ZVR5cGUgIGZvbnRzIG9uIHlvdXIgc3lzdGVtLCB5b3UgbW9zdCBwcm9iYWJseQorICB3YW50IHRvIGVuYWJsZSBpdCBtYW51YWxseSBieSBkb2luZyB0aGUgZm9sbG93aW5nOgorCisgICAgLSBvcGVuIHRoZSBmaWxlICJpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIgorCisgICAgLSBsb2NhdGUgYSBsaW5lIHRoYXQgc2F5czoKKworICAgICAgICAgICN1bmRlZiBUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgICAtIGNoYW5nZSBpdCB0bzoKKworICAgICAgICAgICNkZWZpbmUgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUgorCisgICAgb2YgY291cnNlLCB0aGlzIG11c3QgYmUgZG9uZSBfYmVmb3JlXyBjb21waWxpbmcgdGhlIGxpYnJhcnkKZGlmZiAtLWdpdCBhL2RvY3MvVVBHUkFERS5VTlggYi9kb2NzL1VQR1JBREUuVU5YCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNjdmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1VQR1JBREUuVU5YCkBAIC0wLDAgKzEsMTI0IEBACisKK1NQRUNJQUwgTk9URSBGT1IgVU5JWCBVU0VSUworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgSWYgIHlvdSBhcmUgaW5zdGFsbGluZyAgdGhpcyByZWxlYXNlICBvZiBGcmVlVHlwZSAgb24gYSAgc3lzdGVtIHRoYXQKKyAgYWxyZWFkeSB1c2VzIHJlbGVhc2UgIDIuMC41IChvciBldmVuIGFuIG9sZGVyICB2ZXJzaW9uKSwgeW91IGhhdmUgdG8KKyAgcGVyZm9ybSBhIGZldyBzcGVjaWFsIHN0ZXBzIHRvIGVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgZ29lcyB3ZWxsLgorCisKKyAgSS4gRW5hYmxlIHRoZSBUcnVlVHlwZSBieXRlY29kZSBoaW50ZXIgaWYgeW91IG5lZWQgaXQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFNlZSB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBmaWxlICJUUlVFVFlQRSIgb2YgdGhpcyBkaXJlY3RvcnkuCisgICAKKyAgICBOb3RlIHRoYXQgRnJlZVR5cGUgc3VwcG9ydHMgVHJ1ZVR5cGUgZm9udHMgd2l0aG91dCB0aGUgYnl0ZWNvZGUKKyAgICBpbnRlcnByZXRlciB0aHJvdWdoIGl0cyBhdXRvLWhpbnRlciwgd2hpY2ggbm93IGdlbmVyYXRlIHJlbGF0aXZlbHkgZ29vZAorICAgIHJlc3VsdHMgd2l0aCBtb3N0IGZvbnRzLgorCisKKyAgSUkuIERldGVybWluZSB0aGUgY29ycmVjdCBpbnN0YWxsYXRpb24gcGF0aAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgQnkgIGRlZmF1bHQsICB0aGUgIHNvdXJjZSAgcGFja2FnZSAgd2lsbCBpbnN0YWxsICB0aGUgIGxpYnJhcnkgIGluCisgICAgIi91c3IvbG9jYWwiLiAgIEhvd2V2ZXIsIG1hbnkgVW5peCAgZGlzdHJpYnV0aW9ucyBub3cgIGluc3RhbGwgdGhlCisgICAgbGlicmFyeSBpbiAgIi91c3IiLCBzaW5jZSBGcmVlVHlwZSAgaXMgYmVjb21pbmcgYSAgY3JpdGljYWwgc3lzdGVtCisgICAgY29tcG9uZW50LgorCisgICAgSWYgRnJlZVR5cGUgaXMgYWxyZWFkeSBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0sIHR5cGUKKworICAgICAgZnJlZXR5cGUtY29uZmlnIC0tcHJlZml4CisKKyAgICBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVGhpcyAgc2hvdWxkIHJldHVybiB0aGUgaW5zdGFsbGF0aW9uIHBhdGggdG8KKyAgICB1c2UgYmVsb3cgIChlLmcuICIvdXNyIiAgb3IgIi91c3IvbG9jYWwiKS4gIE90aGVyd2lzZSwgIHNpbXBseSB1c2UKKyAgICAiL3VzciIgKG9yIHdoYXQgeW91IHRoaW5rIGlzIGFkZXF1YXRlIGZvciB5b3VyIGluc3RhbGxhdGlvbikuCisKKworCisgIElJSS4gRW5zdXJlIHRoYXQgeW91IGFyZSB1c2luZyBHTlUgTWFrZQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBGcmVlVHlwZSBidWlsZCBzeXN0ZW0gIF9leGNsdXNpdmVseV8gd29ya3Mgd2l0aCBHTlUgTWFrZS4gIFlvdQorICAgIHdpbGwgIG5vdCBiZSAgYWJsZSB0byAgY29tcGlsZSB0aGUgIGxpYnJhcnkgd2l0aCAgdGhlIGluc3RydWN0aW9ucworICAgIGJlbG93IHVzaW5nIGFueSBvdGhlciBhbHRlcm5hdGl2ZSAoaW5jbHVkaW5nIEJTRCBNYWtlKS4KKworICAgIFRyeWluZyAgdG8gY29tcGlsZSAgdGhlIGxpYnJhcnkgIHdpdGggYSAgZGlmZmVyZW50IE1ha2UgIHRvb2wgd2lsbAorICAgIHByaW50IGEgbWVzc2FnZSBsaWtlOgorCisgICAgICBTb3JyeSwgR05VIG1ha2UgaXMgcmVxdWlyZWQgdG8gYnVpbGQgRnJlZVR5cGUyLgorCisgICAgYW5kIHRoZSBidWlsZCAgcHJvY2VzcyB3aWxsIGJlIGFib3J0ZWQuICBJZiAgdGhpcyBoYXBwZW5zLCBpbnN0YWxsCisgICAgR05VIE1ha2Ugb24geW91ciBzeXN0ZW0sICBhbmQgdXNlIHRoZSBHTlVNQUtFIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgdG8gbmFtZSBpdC4KKworCisKKyAgSVYuIEJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBsaWJyYXJ5CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIGZvbGxvd2luZyAgc2hvdWxkIHdvcmsgIG9uIGFsbCBVbml4ICBzeXN0ZW1zIHdoZXJlICB0aGUgYG1ha2UnCisgICAgY29tbWFuZCBpbnZva2VzIEdOVSBNYWtlOgorCisgICAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD08eW91cnByZWZpeD4KKyAgICAgIG1ha2UKKyAgICAgIG1ha2UgaW5zdGFsbCAgICAgICAgICAgKGFzIHJvb3QpCisKKyAgICB3aGVyZSAiPHlvdXJwcmVmaXg+IiAgbXVzdCBiZSByZXBsYWNlZCAgYnkgdGhlIHByZWZpeCAgcmV0dXJuZWQgYnkKKyAgICB0aGUgImZyZWV0eXBlLWNvbmZpZyIgY29tbWFuZC4KKworICAgIFdoZW4gdXNpbmcgYSBkaWZmZXJlbnQgY29tbWFuZCB0byBpbnZva2UgR05VIE1ha2UsIHVzZSB0aGUgR05VTUFLRQorICAgIHZhcmlhYmxlLiAgRm9yIGV4YW1wbGUsICBpZiBgZ21ha2UnIGlzIHRoZSBjb21tYW5kICB0byB1c2Ugb24geW91cgorICAgIHN5c3RlbSwgZG8gc29tZXRoaW5nIGxpa2U6CisKKyAgICAgICBHTlVNQUtFPWdtYWtlIC4vY29uZmlndXJlIC0tcHJlZml4PTx5b3VycHJlZml4PgorICAgICAgIGdtYWtlCisgICAgICAgZ21ha2UgaW5zdGFsbCAgICAgICAgICAgIChhcyByb290KQorCisgICAgSWYgIHRoaXMgIHN0aWxsICBkb2Vzbid0ICAgd29yaywgIHJlYWQgIHRoZSAgZGV0YWlsZWQgIGNvbXBpbGF0aW9uCisgICAgcHJvY2VkdXJlIGF2YWlsYWJsZSBpbiB0aGUgZmlsZSAiZG9jcy9CVUlMRCIgZm9yIHRyb3VibGVzaG9vdGluZy4KKworCisgIFYuIFRha2UgY2FyZSBvZiBYRnJlZTg2IHZlcnNpb24gNAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIENlcnRhaW4gcmVjZW50IExpbnV4IGRpc3RyaWJ1dGlvbnMgd2lsbCBpbnN0YWxsIF9zZXZlcmFsXyB2ZXJzaW9ucworICAgIG9mIEZyZWVUeXBlIG9uIHlvdXIgc3lzdGVtLiAgIEZvciBleGFtcGxlLCBvbiBhIGZyZXNoIE1hbmRyYWtlIDguMQorICAgIHN5c3RlbSwgeW91IGNhbiBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisKKyAgICAgIC91c3IvbGliL2xpYmZyZWV0eXBlLnNvICAgICAgICAgICAgIHdoaWNoIGxpbmtzIHRvCisgICAgICAvdXNyL2xpYi9saWJmcmVldHlwZS42LjEuMC5zbworCisgICAgYW5kCisKKyAgICAgIC91c3IvWDExUjYvbGliL2xpYmZyZWV0eXBlLnNvICAgICAgIHdoaWNoIGxpbmtzIHRvCisgICAgICAvdXNyL1gxMVI2L2xpYi9saWJmcmVldHlwZS42LjAuc28KKworICAgIE5vdGUgdGhhdCB0aGVzZSAgZmlsZXMgY29ycmVzcG9uZCB0byB0d28gZGlzdGluY3QgIHZlcnNpb25zIG9mIHRoZQorICAgIGxpYnJhcnkhICAgSXQgc2VlbXMgIHRoYXQgIHRoaXMgIHN1cnByaXNpbmcgaXNzdWUgIGlzICBkdWUgdG8gIHRoZQorICAgIGluc3RhbGwgIHNjcmlwdHMgIG9mIHJlY2VudCAgWEZyZWU4NiAgc2VydmVycyAgKGZyb20gNC4xLjApICB3aGljaAorICAgIGlycmVtZWRpYWJseSBpbnN0YWxsICB0aGVpciBvd24gKGRhdGVkKSB2ZXJzaW9uIG9mICB0aGUgbGlicmFyeSBpbgorICAgICIvdXNyL1gxMVI2L2xpYiIuCisKKyAgICBJbiBjZXJ0YWluIF9yYXJlXyAgY2FzZXMgeW91IG1heSBleHBlcmllbmNlIG1pbm9yICBwcm9ibGVtcyBpZiB5b3UKKyAgICBpbnN0YWxsIHRoaXMgcmVsZWFzZSAgb2YgdGhlIGxpYnJhcnkgaW4gIi91c3IiICBvbmx5LCBuYW1lbHksIHRoYXQKKyAgICBjZXJ0YWluICBhcHBsaWNhdGlvbnMgd2lsbCAgbm90ICBiZW5lZml0IGZyb20gIHRoZSAgYnVnIGZpeGVzICBhbmQKKyAgICByZW5kZXJpbmcgaW1wcm92ZW1lbnRzIHlvdSdkIGV4cGVjdC4KKworICAgIFRoZXJlIGFyZSB0d28gZ29vZCB3YXlzIHRvIGRlYWwgd2l0aCB0aGlzIHNpdHVhdGlvbjoKKworICAgICAgLSBJbnN0YWxsICB0aGUgbGlicmFyeSAgX3R3aWNlXywgaW4gICIvdXNyIiBhbmQgIGluICIvdXNyL1gxMVI2IgorICAgICAgICAoeW91ICBoYXZlIHRvIGRvICB0aGF0IGVhY2ggIHRpbWUgeW91ICBpbnN0YWxsIGEgIG5ldyBGcmVlVHlwZQorICAgICAgICByZWxlYXNlIHRob3VnaCkuCisKKyAgICAgIC0gQ2hhbmdlIHRoZSBsaW5rIGluIC91c3IvWDExUjYvbGliL2xpYmZyZWV0eXBlLnNvIHRvIHBvaW50IHRvCisKKyAgICAgICAgICAvdXNyL2xpYi9saWJmcmVldHlwZS5zbywKKworICAgICAgICBhbmQgZ2V0IHJpZCBvZgorCisgICAgICAgICAgL3Vzci9YMTFSNi9saWIvbGliZnJlZXR5cGUuNi4wLnNvCisKKyAgICBUaGUgRnJlZVR5cGUgVGVhbSAgaXMgbm90IHJlc3BvbnNpYmxlIGZvciB0aGlzICBwcm9ibGVtLCBzbyBwbGVhc2UKKyAgICBjb250YWN0ICBlaXRoZXIgIHRoZSAgWEZyZWU4NiAgIGRldmVsb3BtZW50ICB0ZWFtICBvciAgeW91ciAgTGludXgKKyAgICBkaXN0cmlidXRvciB0byBoZWxwIGNsZWFyIHRoaXMgaXNzdWUgaW4gY2FzZSB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4KKyAgICBoZXJlIGRvZXNuJ3QgaGVscC4KZGlmZiAtLWdpdCBhL2RvY3MvbGljZW5zZS50eHQgYi9kb2NzL2xpY2Vuc2UudHh0CmluZGV4IGM5NTMxOGQuLjUxYjUyYmYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGljZW5zZS50eHQKKysrIGIvZG9jcy9saWNlbnNlLnR4dApAQCAtMSwxMSArMSwyOCBAQAogCi1GcmVlVHlwZSBjb21lcyB3aXRoIHR3byBsaWNlbnNlcyBmcm9tIHdoaWNoIHlvdSBjYW4gY2hvb3NlIHRoZSBvbmUgd2hpY2gKLWZpdHMgeW91ciBuZWVkcyBiZXN0OgorICAgVGhlIEZyZWVUeXBlICAgMiBmb250ICAgZW5naW5lICBpcyAgIGNvcHlyaWdodGVkIHdvcmssICAgYW5kIGNhbm5vdCAgIGJlCisgICB1c2VkICBsZWdhbGx5ICB3aXRob3V0IGEgICBzb2Z0d2FyZSBsaWNlbnNlLiAgIEluIG9yZGVyICAgdG8gbWFrZSAgIHRoaXMKKyAgIHByb2plY3QgIHVzYWJsZSAgdG8gIGEgIHZhc3QgbWFqb3JpdHkgIG9mIGRldmVsb3BlcnMsICB3ZSBkaXN0cmlidXRlICBpdAorICAgdW5kZXIgdHdvIGR1YWwgbGljZW5zZXMuCiAKLSAgLiBUaGUgRnJlZVR5cGUgTGljZW5zZSwgaW4gZmlsZSBgZG9jcy9GVEwudHh0Jy4KKyAgIFdoYXQgdGhpcyAgbWVhbnMgaXMgIHRoYXQgKnlvdSogIG11c3QgY2hvb3NlICAqb25lKiBsaWNlbnNlIGFtb25nICB0aG9zZQorICAgZGVzY3JpYmVkIGJlbG93LCAgdGhlbiBvYmV5ICBhbGwgIGl0cyAgdGVybXMgYW5kICBjb25kaXRpb25zIHdoZW4gIHVzaW5nCisgICBGcmVlVHlwZSAyIGluIGFueSBvZiB5b3VyIHByb2plY3RzIG9yIHByb2R1Y3RzOgogCi0gIC4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpbiBmaWxlIGBkb2NzL0dQTC50eHQnLgogCi1UaGUgY29udHJpYnV0ZWQgUENGIGRyaXZlciBjb21lcyB3aXRoIGEgbGljZW5zZSBzaW1pbGFyIHRvIHRoYXQgb2YgWCBXaW5kb3cKLVN5c3RlbSB3aGljaCBpcyBjb21wYXRpYmxlIHRvIHRoZSBhYm92ZSB0d28gbGljZW5zZXMgKHNlZSBmaWxlCi1zcmMvcGNmL3JlYWRtZSkuCisgICAgIC0gVGhlICBGcmVlVHlwZSBMaWNlbnNlLCAgZm91bmQgaW4gIHRoZSBmaWxlICAiRlRMLlRYVCIsIHdoaWNoICBpcworICAgICAgIGFuICAgICBCU0Qtc3R5bGUgIG9wZW4tc291cmNlICAgbGljZW5zZSAqd2l0aCogIGFuICAgYWR2ZXJ0aXNpbmcKKyAgICAgICBjbGF1c2UgICB0aGF0ICAgICAgZm9yY2VzICAgeW91ICAgdG8gICBleHBsaWNpdGVseSAgIGNpdGUgICAgdGhlCisgICAgICAgRnJlZVR5cGUgICBwcm9qZWN0ICAgaW4gIHlvdXIgICAgICBwcm9kdWN0J3MgIGRvY3VtZW50YXRpb24uIEFsbAorICAgICAgIGRldGFpbHMgYXJlIGluIHRoZSBsaWNlbnNlIGZpbGUKKworCisgICAgIC0gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgIExpY2Vuc2UsIGZvdW5kIGluICJHUEwuVFhUIiwgIHdoaWNoICBpcworICAgICAgIHRoZSAgICAgIHRyYWRpdGlvbm5hbCAgIGFuZCAgICAidmlyYWwiICAgR1BMICAgIGxpY2Vuc2UsICAgIHRoYXQKKyAgICAgICBmb3JjZXMgIHlvdSAgIHRvICAgICByZWRpc3RyaWJ1dGUgdGhlIF9jb21wbGV0ZV8gc291cmNlcyBvZiAgYWxsCisgICAgICAgeW91ciBwcm9kdWN0cyB0aGF0IHNpbXBseSAgICAgdXNlIEZyZWVUeXBlIDIuCisKKworICAgTm90ZSB0aGF0ICB0aGUgY29udHJpYnV0ZWQgIFBDRiBkcml2ZXIgIGNvbWVzIHdpdGggIGEgbGljZW5zZSBzaW1pbGFyIHRvCisgICB0aGF0ICBvZiAgIFggV2luZG93ICAgU3lzdGVtICB3aGljaCAgaXMgIGNvbXBhdGlibGUgICB0byB0aGUgIGFib3ZlICB0d28KKyAgIGxpY2Vuc2VzIChzZWUgZmlsZSBzcmMvcGNmL3JlYWRtZSkuCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oCmluZGV4IDc1OWQxMjEuLjkyNzYxNTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaApAQCAtNTM2LDYgKzUzNiwzMCBAQAogICBGVF9CQVNFKCB2b2lkICkKICAgRlRfRG9uZV9HbHlwaFNsb3QoIEZUX0dseXBoU2xvdCAgc2xvdCApOwogCisgLyogKi8KKyAKKyAvKgorICAqIGZyZWUgdGhlIGJpdG1hcCBvZiBhIGdpdmVuIGdseXBoc2xvdCB3aGVuIG5lZWRlZAorICAqIChpLmUuIG9ubHkgd2hlbiBpdCB3YXMgYWxsb2NhdGVkIHdpdGggZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCkKKyAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCggRlRfR2x5cGhTbG90ICBzbG90ICk7CisgCisgLyoKKyAgKiBhbGxvY2F0ZSBhIG5ldyBiaXRtYXAgYnVmZmVyIGluIGEgZ2x5cGggc2xvdAorICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBzaXplICk7CisKKyAvKgorICAqIHNldCB0aGUgYml0bWFwIGJ1ZmZlciBpbiBhIGdseXBoIHNsb3QgdG8gYSBnaXZlbiBwb2ludGVyLgorICAqIHRoZSBidWZmZXIgd2lsbCBub3QgYmUgZnJlZWQgYnkgYSBsYXRlciBjYWxsIHRvIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcAorICAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAoIEZUX0dseXBoU2xvdCAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgICBidWZmZXIgKTsKKwogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0b2Jqcy5jIGIvc3JjL2Jhc2UvZnRvYmpzLmMKaW5kZXggNDMzZWJkYi4uMzJhZTk5YiAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRvYmpzLmMKKysrIGIvc3JjL2Jhc2UvZnRvYmpzLmMKQEAgLTE5OCwxOSArMTk4LDU5IEBACiAgICAgcmV0dXJuIGVycm9yOwogICB9CiAKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCApCisgIHsKKyAgICBpZiAoIHNsb3QtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0JJVE1BUCApCisgICAgeworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggc2xvdC0+ZmFjZSApOworICAgICAgCisgICAgICAKKyAgICAgIEZUX0ZSRUUoIHNsb3QtPmJpdG1hcC5idWZmZXIgKTsKKyAgICAgIHNsb3QtPmZsYWdzICY9IH5GVF9HTFlQSF9PV05fQklUTUFQOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogYXNzdW1lIHRoYXQgdGhlIGJpdG1hcCBidWZmZXIgd2FzIHN0b2xlbiBvciBub3QgKi8KKyAgICAgIC8qIGFsbG9jYXRlZCBmcm9tIHRoZSBoZWFwICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBzbG90LT5iaXRtYXAuYnVmZmVyID0gTlVMTDsKKyAgICB9CisgIH0KKworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgICAgYnVmZmVyICkKKyAgeworICAgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCggc2xvdCApOworICAgIAorICAgIHNsb3QtPmJpdG1hcC5idWZmZXIgPSBidWZmZXI7CisgICAgCisgICAgRlRfQVNTRVJUKCAoc2xvdC0+ZmxhZ3MgJiBGVF9HTFlQSF9PV05fQklUTUFQKSA9PSAwICk7CisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAKKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBzaXplICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gRlRfRkFDRV9NRU1PUlkoIHNsb3QtPmZhY2UgKTsKKyAgICAKKyAgICAKKyAgICBpZiAoIHNsb3QtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0JJVE1BUCApCisgICAgICBGVF9GUkVFKCBzbG90LT5iaXRtYXAuYnVmZmVyICk7CisgICAgZWxzZQorICAgICAgc2xvdC0+ZmxhZ3MgfD0gRlRfR0xZUEhfT1dOX0JJVE1BUDsKKyAgICAKKyAgICByZXR1cm4gRlRfTUVNX0FMTE9DKCBzbG90LT5iaXRtYXAuYnVmZmVyLCBzaXplICk7CisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCiAKICAgc3RhdGljIHZvaWQKICAgZnRfZ2x5cGhzbG90X2NsZWFyKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQogICB7CiAgICAgLyogZnJlZSBiaXRtYXAgaWYgbmVlZGVkICovCi0gICAgaWYgKCBzbG90LT5mbGFncyAmIEZUX0dMWVBIX09XTl9CSVRNQVAgKQotICAgIHsKLSAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gRlRfRkFDRV9NRU1PUlkoIHNsb3QtPmZhY2UgKTsKLQotCi0gICAgICBGVF9GUkVFKCBzbG90LT5iaXRtYXAuYnVmZmVyICk7Ci0gICAgICBzbG90LT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0JJVE1BUDsKLSAgICB9CisgICAgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwKCBzbG90ICk7CiAKICAgICAvKiBjbGVhciBhbGwgcHVibGljIGZpZWxkcyBpbiB0aGUgZ2x5cGggc2xvdCAqLwogICAgIEZUX1pFUk8oICZzbG90LT5tZXRyaWNzICk7CkBAIC0yNDgsOCArMjg4LDcgQEAKICAgICAgIGNsYXp6LT5kb25lX3Nsb3QoIHNsb3QgKTsKIAogICAgIC8qIGZyZWUgYml0bWFwIGJ1ZmZlciBpZiBuZWVkZWQgKi8KLSAgICBpZiAoIHNsb3QtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0JJVE1BUCApCi0gICAgICBGVF9GUkVFKCBzbG90LT5iaXRtYXAuYnVmZmVyICk7CisgICAgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwKCBzbG90ICk7CiAKICAgICAvKiBmcmVlIGdseXBoIGxvYWRlciAqLwogICAgIGlmICggRlRfRFJJVkVSX1VTRVNfT1VUTElORVMoIGRyaXZlciApICkKZGlmZiAtLWdpdCBhL3NyYy9iZGYvYmRmZHJpdnIuYyBiL3NyYy9iZGYvYmRmZHJpdnIuYwppbmRleCBjMTU2YmQ4Li40ZjYwMjY2IDEwMDY0NAotLS0gYS9zcmMvYmRmL2JkZmRyaXZyLmMKKysrIGIvc3JjL2JkZi9iZGZkcml2ci5jCkBAIC00ODksOCArNDg5LDYgQEAKICAgICBpbnQgICAgICAgICAgICAgaSwgaiwgY291bnQ7CiAgICAgdW5zaWduZWQgY2hhciAgICpwLCAqcHA7CiAKLSAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ID0gZmFjZS0+YmRmZm9udC0+bWVtb3J5OwotCiAgICAgRlRfVU5VU0VEKCBsb2FkX2ZsYWdzICk7CiAKIApAQCAtNTE0LDkgKzUxMiw5IEBACiAgICAgICBiaXRtYXAtPnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX01PTk87CiAgICAgICBiaXRtYXAtPnBpdGNoICAgICAgPSBnbHlwaC5icHI7CiAKLSAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBiaXRtYXAtPmJ1ZmZlciwgZ2x5cGguYnl0ZXMgKSApCi0gICAgICAgIGdvdG8gRXhpdDsKLSAgICAgIEZUX01FTV9DT1BZKCBiaXRtYXAtPmJ1ZmZlciwgZ2x5cGguYml0bWFwLCBnbHlwaC5ieXRlcyApOworICAgICAvKiBub3RlOiB3ZSBkb24ndCBhbGxvY2F0ZSBhIG5ldyBhcnJheSB0byBob2xkIHRoZSBiaXRtYXAsIHdlICovCisgICAgIC8qICAgICAgIGNhbiBzaW1wbHkgcG9pbnQgdG8gaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKCBzbG90LCBnbHlwaC5iaXRtYXAgKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTUyNCw3ICs1MjIsOCBAQAogICAgICAgYml0bWFwLT5waXhlbF9tb2RlID0gRlRfUElYRUxfTU9ERV9HUkFZOwogICAgICAgYml0bWFwLT5waXRjaCAgICAgID0gYml0bWFwLT53aWR0aDsKIAotICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGJpdG1hcC0+YnVmZmVyLCBiaXRtYXAtPnJvd3MgKiBiaXRtYXAtPnBpdGNoICkgKQorICAgICAgZXJyb3IgPSBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwKCBzbG90LCBiaXRtYXAtPnJvd3MgKiBiaXRtYXAtPnBpdGNoICk7CisgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgZ290byBFeGl0OwogCiAgICAgICBzd2l0Y2ggKCBicHAgKQpAQCAtNjI1LDcgKzYyNCw2IEBACiAKICAgICBzbG90LT5saW5lYXJIb3JpQWR2YW5jZSA9IChGVF9GaXhlZClnbHlwaC5kd2lkdGggPDwgMTY7CiAgICAgc2xvdC0+Zm9ybWF0ICAgICAgICAgICAgPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQOwotICAgIHNsb3QtPmZsYWdzICAgICAgICAgICAgID0gRlRfR0xZUEhfT1dOX0JJVE1BUDsKIAogICBFeGl0OgogICAgIHJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGxydS5jIGIvc3JjL2NhY2hlL2Z0bHJ1LmMKaW5kZXggNDdkNjU2Mi4uNGVhYjBkOSAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0bHJ1LmMKKysrIGIvc3JjL2NhY2hlL2Z0bHJ1LmMKQEAgLTIzNiw3ICsyMzYsNyBAQAogICAgICAgICAgICAgZ290byBFeGl0OwogICAgICAgICAgIH0KIAotICAgICAgICAgIEZUX0FTU0VSVCggbGlzdC0+bm9kZXMgPiAwICk7CisgICAgICAgICAgRlRfQVNTRVJUKCBsaXN0LT5udW1fbm9kZXMgPiAwICk7CiAKICAgICAgICAgICB3aGlsZSAoIG5vZGUtPm5leHQgKQogICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9wY2YvcGNmZHJpdmVyLmMgYi9zcmMvcGNmL3BjZmRyaXZlci5jCmluZGV4IGFiMmZlZjUuLjZmMGI5ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9wY2YvcGNmZHJpdmVyLmMKKysrIGIvc3JjL3BjZi9wY2Zkcml2ZXIuYwpAQCAtMzU1LDcgKzM1NSw2IEBACiAgICAgUENGX0ZhY2UgICAgZmFjZSAgID0gKFBDRl9GYWNlKUZUX1NJWkVfRkFDRSggc2l6ZSApOwogICAgIEZUX1N0cmVhbSAgIHN0cmVhbSA9IGZhY2UtPnJvb3Quc3RyZWFtOwogICAgIEZUX0Vycm9yICAgIGVycm9yICA9IFBDRl9FcnJfT2s7Ci0gICAgRlRfTWVtb3J5ICAgbWVtb3J5ID0gRlRfRkFDRSggZmFjZSApLT5tZW1vcnk7CiAgICAgRlRfQml0bWFwKiAgYml0bWFwID0gJnNsb3QtPmJpdG1hcDsKICAgICBQQ0ZfTWV0cmljICBtZXRyaWM7CiAgICAgaW50ICAgICAgICAgYnl0ZXM7CkBAIC00MTEsNyArNDEwLDggQEAKICAgICAvKiBYWFg6IHRvIGRvOiBhcmUgdGhlcmUgY2FzZXMgdGhhdCBuZWVkIHJlcGFkZGluZyB0aGUgYml0bWFwPyAqLwogICAgIGJ5dGVzID0gYml0bWFwLT5waXRjaCAqIGJpdG1hcC0+cm93czsKIAotICAgIGlmICggRlRfQUxMT0MoIGJpdG1hcC0+YnVmZmVyLCBieXRlcyApICkKKyAgICBlcnJvciA9IGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAoIHNsb3QsIGJ5dGVzICk7CisgICAgaWYgKCBlcnJvciApCiAgICAgICBnb3RvIEV4aXQ7CiAKICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBtZXRyaWMtPmJpdHMgKSAgICAgICAgICB8fApAQCAtNDUxLDcgKzQ1MSw2IEBACiAKICAgICBzbG90LT5saW5lYXJIb3JpQWR2YW5jZSA9IChGVF9GaXhlZCliaXRtYXAtPndpZHRoIDw8IDE2OwogICAgIHNsb3QtPmZvcm1hdCAgICAgICAgICAgID0gRlRfR0xZUEhfRk9STUFUX0JJVE1BUDsKLSAgICBzbG90LT5mbGFncyAgICAgICAgICAgICA9IEZUX0dMWVBIX09XTl9CSVRNQVA7CiAKICAgICBGVF9UUkFDRTQoKCAiIC0tLSBva1xuIiApKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJzYml0LmMgYi9zcmMvcGZyL3BmcnNiaXQuYwppbmRleCAzYTZlMjM1Li40MDhiMDYzIDEwMDY0NAotLS0gYS9zcmMvcGZyL3BmcnNiaXQuYworKysgYi9zcmMvcGZyL3BmcnNiaXQuYwpAQCAtNjQ1LDExICs2NDUsMTAgQEAKIAogICAgICAgICAvKiBBbGxvY2F0ZSBhbmQgcmVhZCBiaXRtYXAgZGF0YSAqLwogICAgICAgICB7Ci0gICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKLSAgICAgICAgICBGVF9Mb25nICAgIGxlbiAgICA9IGdseXBoLT5yb290LmJpdG1hcC5waXRjaCAqIHlzaXplOworICAgICAgICAgIEZUX1VMb25nICAgIGxlbiAgICA9IGdseXBoLT5yb290LmJpdG1hcC5waXRjaCAqIHlzaXplOwogCi0KLSAgICAgICAgICBpZiAoICFGVF9BTExPQyggZ2x5cGgtPnJvb3QuYml0bWFwLmJ1ZmZlciwgbGVuICkgKQorICAgICAgICAgIGVycm9yID0gZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCggJmdseXBoLT5yb290LCBsZW4gKTsKKyAgICAgICAgICBpZiAoICFlcnJvciApCiAgICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IgPSBwZnJfbG9hZF9iaXRtYXBfYml0cyggcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+bGltaXQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dHNiaXQuYyBiL3NyYy9zZm50L3R0c2JpdC5jCmluZGV4IGE1NTQwNjAuLjljZmE5MmIgMTAwNjQ0Ci0tLSBhL3NyYy9zZm50L3R0c2JpdC5jCisrKyBiL3NyYy9zZm50L3R0c2JpdC5jCkBAIC0xMjEyLDE0ICsxMjEyLDE2IEBACiAgICAgICAgICAgICAgICAgICAgVFRfU0JpdF9SYW5nZSAgICByYW5nZSwKICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgIGViZHRfcG9zLAogICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgZ2x5cGhfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCogICAgICAgbWFwLAorICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICAgc2xvdCwKICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgIHhfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICAgeV9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgICBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgVFRfU0JpdF9NZXRyaWNzICBtZXRyaWNzICkKKyAgICAgICAgICAgICAgICAgICBUVF9TQml0X01ldHJpY3MgIG1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICBkZXB0aCApCiAgIHsKLSAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OwotICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgRlRfQml0bWFwKiAgbWFwICAgID0gJnNsb3QtPmJpdG1hcDsKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKIAogCiAgICAgLyogcGxhY2Ugc3RyZWFtIGF0IGJlZ2lubmluZyBvZiBnbHlwaCBkYXRhIGFuZCByZWFkIG1ldHJpY3MgKi8KQEAgLTEyMzAsMTEgKzEyMzIsMTAgQEAKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRXhpdDsKIAotICAgIC8qIHRoaXMgZnVuY3Rpb24gaXMgcmVjdXJzaXZlLiAgQXQgdGhlIHRvcC1sZXZlbCBjYWxsLCB0aGUgKi8KLSAgICAvKiBmaWVsZCBtYXAuYnVmZmVyIGlzIE5VTEwuICBXZSB0aHVzIGJlZ2luIGJ5IGZpbmRpbmcgdGhlICovCi0gICAgLyogZGltZW5zaW9ucyBvZiB0aGUgaGlnaGVyLWxldmVsIGdseXBoIHRvIGFsbG9jYXRlIHRoZSAgICAqLwotICAgIC8qIGZpbmFsIHBpeG1hcCBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBpZiAoIG1hcC0+YnVmZmVyID09IDAgKQorICAgIC8qIHRoaXMgZnVuY3Rpb24gaXMgcmVjdXJzaXZlLiAgQXQgdGhlIHRvcC1sZXZlbCBjYWxsLCB3ZSAgKi8KKyAgICAvKiBjb21wdXRlIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBoaWdoZXItbGV2ZWwgZ2x5cGggdG8gICAgICovCisgICAgLyogYWxsb2NhdGUgdGhlIGZpbmFsIHBpeG1hcCBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggZGVwdGggPT0gMCApCiAgICAgewogICAgICAgRlRfTG9uZyAgc2l6ZTsKIApAQCAtMTI3NCw3ICsxMjc1LDggQEAKICAgICAgIGlmICggc2l6ZSA9PSAwICkKICAgICAgICAgZ290byBFeGl0OyAgICAgLyogZXhpdCBzdWNjZXNzZnVsbHkhICovCiAKLSAgICAgIGlmICggRlRfQUxMT0MoIG1hcC0+YnVmZmVyLCBzaXplICkgKQorICAgICAgZXJyb3IgPSBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwKCBzbG90LCBzaXplICk7CisgICAgICBpZiAoZXJyb3IpCiAgICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKQEAgLTEzNDgsMTEgKzEzNTAsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1fcmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYmR0X3BvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1fb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhfb2Zmc2V0ICsgY29tcC0+eF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5X29mZnNldCArIGNvbXAtPnlfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVsZW1fbWV0cmljcyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVsZW1fbWV0cmljcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoKzEgKTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgZ290byBGYWlsX01lbW9yeTsKICAgICAgIH0KQEAgLTE0MDksNyArMTQxMiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVF9TQml0X01ldHJpY3NSZWMgICptZXRyaWNzICkKICAgewogICAgIEZUX0Vycm9yICAgICAgICBlcnJvcjsKLSAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CiAgICAgRlRfVUxvbmcgICAgICAgIGViZHRfcG9zLCBnbHlwaF9vZmZzZXQ7CiAKICAgICBUVF9TQml0X1N0cmlrZSAgc3RyaWtlOwpAQCAtMTQzMiwyMCArMTQzNCwxMSBAQAogCiAgICAgZWJkdF9wb3MgPSBGVF9TVFJFQU1fUE9TKCk7CiAKLSAgICAvKiBjbGVhciB0aGUgYml0bWFwICYgbG9hZCB0aGUgYml0bWFwICovCi0gICAgaWYgKCBmYWNlLT5yb290LmdseXBoLT5mbGFncyAmIEZUX0dMWVBIX09XTl9CSVRNQVAgKQotICAgICAgRlRfRlJFRSggbWFwLT5idWZmZXIgKTsKLQotICAgIG1hcC0+cm93cyA9IG1hcC0+cGl0Y2ggPSBtYXAtPndpZHRoID0gMDsKLQogICAgIGVycm9yID0gTG9hZF9TQml0X0ltYWdlKCBzdHJpa2UsIHJhbmdlLCBlYmR0X3BvcywgZ2x5cGhfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAsIDAsIDAsIHN0cmVhbSwgbWV0cmljcyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5yb290LmdseXBoLCAwLCAwLCBzdHJlYW0sIG1ldHJpY3MsIDAgKTsKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRXhpdDsKIAotICAgIC8qIHRoZSBnbHlwaCBzbG90IG93bnMgdGhpcyBiaXRtYXAgYnVmZmVyICovCi0gICAgZmFjZS0+cm9vdC5nbHlwaC0+ZmxhZ3MgfD0gRlRfR0xZUEhfT1dOX0JJVE1BUDsKLQogICAgIC8qIHNldHVwIHZlcnRpY2FsIG1ldHJpY3MgaWYgbmVlZGVkICovCiAgICAgaWYgKCBzdHJpa2UtPmZsYWdzICYgMSApCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL3R5cGU0Mi90NDJvYmpzLmMgYi9zcmMvdHlwZTQyL3Q0Mm9ianMuYwppbmRleCBkY2M4MDc3Li5jNDg1NjM0IDEwMDY0NAotLS0gYS9zcmMvdHlwZTQyL3Q0Mm9ianMuYworKysgYi9zcmMvdHlwZTQyL3Q0Mm9ianMuYwpAQCAtNTYwLDE3ICs1NjAsMTAgQEAKIAogCiAgIHN0YXRpYyB2b2lkCi0gIGZ0X2dseXBoc2xvdF9jbGVhciggRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgdDQyX2dseXBoc2xvdF9jbGVhciggRlRfR2x5cGhTbG90ICBzbG90ICkKICAgewogICAgIC8qIGZyZWUgYml0bWFwIGlmIG5lZWRlZCAqLwotICAgIGlmICggc2xvdC0+ZmxhZ3MgJiBGVF9HTFlQSF9PV05fQklUTUFQICkKLSAgICB7Ci0gICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBzbG90LT5mYWNlICk7Ci0KLQotICAgICAgRlRfRlJFRSggc2xvdC0+Yml0bWFwLmJ1ZmZlciApOwotICAgICAgc2xvdC0+ZmxhZ3MgJj0gfkZUX0dMWVBIX09XTl9CSVRNQVA7Ci0gICAgfQorICAgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCggc2xvdCApOwogCiAgICAgLyogY2xlYXIgYWxsIHB1YmxpYyBmaWVsZHMgaW4gdGhlIGdseXBoIHNsb3QgKi8KICAgICBGVF9aRVJPKCAmc2xvdC0+bWV0cmljcyApOwpAQCAtNjAzLDcgKzU5Niw3IEBACiAgICAgRlRfRHJpdmVyX0NsYXNzICB0dGNsYXp6ID0gKChUNDJfRHJpdmVyKWdseXBoLT5mYWNlLT5kcml2ZXIpLT50dGNsYXp6OwogCiAKLSAgICBmdF9nbHlwaHNsb3RfY2xlYXIoIHQ0MnNsb3QtPnR0c2xvdCApOworICAgIHQ0Ml9nbHlwaHNsb3RfY2xlYXIoIHQ0MnNsb3QtPnR0c2xvdCApOwogICAgIGVycm9yID0gdHRjbGF6ei0+bG9hZF9nbHlwaCggdDQyc2xvdC0+dHRzbG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDQyc2l6ZS0+dHRzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCmRpZmYgLS1naXQgYS9zcmMvd2luZm9udHMvd2luZm50LmMgYi9zcmMvd2luZm9udHMvd2luZm50LmMKaW5kZXggN2IyYTBlNC4uYTgyZjVlYiAxMDA2NDQKLS0tIGEvc3JjL3dpbmZvbnRzL3dpbmZudC5jCisrKyBiL3NyYy93aW5mb250cy93aW5mbnQuYwpAQCAtNjE4LDMyICs2MTgsMTggQEAKIAogICAgIC8qIGFsbG9jYXRlIGFuZCBidWlsZCBiaXRtYXAgKi8KICAgICB7Ci0gICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBzbG90LT5mYWNlICk7CiAgICAgICBGVF9JbnQgICAgIHBpdGNoICA9ICggYml0bWFwLT53aWR0aCArIDcgKSA+PiAzOwotICAgICAgRlRfQnl0ZSogICBjb2x1bW47Ci0gICAgICBGVF9CeXRlKiAgIHdyaXRlOwogCiAKICAgICAgIGJpdG1hcC0+cGl0Y2ggICAgICA9IHBpdGNoOwogICAgICAgYml0bWFwLT5yb3dzICAgICAgID0gZm9udC0+aGVhZGVyLnBpeGVsX2hlaWdodDsKICAgICAgIGJpdG1hcC0+cGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfTU9OTzsKIAotICAgICAgaWYgKCBGVF9BTExPQyggYml0bWFwLT5idWZmZXIsIHBpdGNoICogYml0bWFwLT5yb3dzICkgKQotICAgICAgICBnb3RvIEV4aXQ7Ci0KLSAgICAgIGNvbHVtbiA9IChGVF9CeXRlKiliaXRtYXAtPmJ1ZmZlcjsKLQotICAgICAgZm9yICggOyBwaXRjaCA+IDA7IHBpdGNoLS0sIGNvbHVtbisrICkKLSAgICAgIHsKLSAgICAgICAgRlRfQnl0ZSogIGxpbWl0ID0gcCArIGJpdG1hcC0+cm93czsKLQotCi0gICAgICAgIGZvciAoIHdyaXRlID0gY29sdW1uOyBwIDwgbGltaXQ7IHArKywgd3JpdGUgKz0gYml0bWFwLT5waXRjaCApCi0gICAgICAgICAgd3JpdGVbMF0gPSBwWzBdOwotICAgICAgfQorICAgICAgLyogbm90ZTogd2UgZG9uJ3QgYWxsb2NhdGUgYSBuZXcgYnVmZmVyIGZvciB0aGUgYml0bWFwIHNpbmNlIHdlICovCisgICAgICAvKiAgICAgICBhbHJlYWR5IHN0b3JlIHRoZSBpbWFnZXMgaW4gdGhlIEZUX0ZhY2UgICAgICAgICAgICAgICAgKi8KKyAgICAgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKCBzbG90LCBwICk7CiAgICAgfQogCi0gICAgc2xvdC0+ZmxhZ3MgICAgICAgPSBGVF9HTFlQSF9PV05fQklUTUFQOwogICAgIHNsb3QtPmJpdG1hcF9sZWZ0ID0gMDsKICAgICBzbG90LT5iaXRtYXBfdG9wICA9IGZvbnQtPmhlYWRlci5hc2NlbnQ7CiAgICAgc2xvdC0+Zm9ybWF0ICAgICAgPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQOwo=