ZGlmZiAtLWdpdCBhL0xPRyBiL0xPRwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWFkNGMwCi0tLSAvZGV2L251bGwKKysrIGIvTE9HCkBAIC0wLDAgKzEsMjg2MyBAQAorTWFqb3IgY2hhbmdlcyBmcm9tIDEuMCB0byAxLjEKKworKyBFdmVyeXdoZXJlOiBDYW4gY29tcGlsZSB0d28gdmVyc2lvbnMgb2YgdGhlIGNvZGUsIHVuZGVyIGdjYyBvciBiY2MKKyhCcnVjZSBFdmFuJ3MgY2MpLCBzbyB0aGF0IDE2LWJpdCBib290IFBST01zIGNhbiBiZSBtYWRlLiBTZWUKK25ldGJvb3QtMTYvUkVBRE1FLjE2IGZvciBtb3JlIGRldGFpbHMuCisKKysgRXZlcnl3aGVyZTogUmVtb3ZlZCBkdXBsaWNhdGUgZGVmaW5lcywgZS5nLiBldmVyeWJvZHkgZGVmaW5lZCB0aGVpcgorb3duIElEIGZvciBldGhlcm5ldCBhZGRyZXNzIHNpemUgKDYpLiBQdXQgSURzIGZvciBtYWdpYyBudW1iZXJzIGluCit2YXJpb3VzIHBsYWNlcy4gIFN0aWxsIHNvbWUgaW5jb25zaXN0ZW5jeSwgRVRIXyBhbmQgRVRIRVJfIGFyZSB1c2VkLgorCisrIEV2ZXJ5d2hlcmU6IEFkZGVkIHByb3RvdHlwZXMgb2YgZnVuY3Rpb25zIHRvIG5ldGJvb3QuaC4gIFJlbW92ZWQKK3VudXNlZCB2YXJpYWJsZXMuCisKKysgTWFrZWZpbGVzOiBSZXdyaXR0ZW4uCisKKysgbmV0Ym9vdC5oOiBBZGRlZCBkZWZpbmUgZm9yIFRGVFBfTUFYX1BBQ0tFVCA9IDUxMi4gSW5jcmVhc2VkIFRJTUVPVVQKK2ZvciB0ZnRwIHBhY2tldHMgdG8gMTgwIChhYm91dCAxMCBzZWNvbmRzKSBzbyB0aGF0IHRmdHAgc2VydmVycyB3b3VsZAorYmUgYWJsZSB0byByZXRyYW5zbWl0IGJsb2Nrcy4KKworKyBtYWluLmM6IFJld3JvdGUgdGZ0cCgpLiBPcmlnaW5hbCB3YXMgaW50ZW5kZWQgdG8gZ2V0IG9ubHkgb25lIGJsb2NrCithbmQgdGhlIHN0cmFpbiBvbiB0aGUgc3RydWN0dXJlIGR1ZSB0byBtb2RpZmljYXRpb25zIHdhcyBzaG93aW5nLgorSW5jcmVhc2VkIGNvbmZpZ19idWZmZXIgc2l6ZSB0byBURlRQX01BWF9QQUNLRVQrMSB0byBhdm9pZCBzcGVjaWFsCitjYXNpbmcgZGF0YSBsZW5ndGg9NTEyLgorCisrIGxpbnV4bG9hZGVyLmM6IENsZWFuZWQgdXAgdGhlIGNvZGUgaW4gc29tZSBwbGFjZXMsIGVzcGVjaWFsbHkKK2xpbnV4X3RmdHAuICBNb3ZlZCB0aGUgYm9vdHAgcmVwbHkgYmxvY2sgaW50byBic3Mgc3BhY2UgaW5zdGVhZCBvZiBhCitmaXhlZCBsb2NhdGlvbiBzdWNoIGFzIDB4OTAwMDAuCisKKysgbnM4MzkwLmM6IFJlbW92ZWQgb25lIGJ1ZyByZWdhcmRpbmcgcGFja2V0IGxlbmd0aC4gcGFja2V0bGVuIHdhcword3JvbmdseSBzaG9ydGVuZWQgd2hlbiBwYWNrZXRzIHdyYXBhcm91bmQgdGhlIHJpbmcgYnVmZmVyLgorCisrIDNjNTA5LmM6IENoYW5nZWQgc29tZSBvZiB0aGUgZ290b3MgdG8gcmV0dXJucy4gIFJlbW92ZWQgQVJQIGNvZGUgc2luY2UKK3RoYXQncyBhbHJlYWR5IGRvbmUgZWxzZXdoZXJlLiAgUmVtb3ZlZCBpbnRlcnJ1cHQgZW5hYmxlIGFuZCBSeCBlYXJseQorbm90aWZpY2F0aW9uICh3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoZSBwYWNrZXQgdW50aWwgaXQncyBjb21wbGV0ZQorYW55d2F5KS4KKworTWFqb3IgY2hhbmdlcyBmcm9tIDEuMSB0byAxLjIKKworKyBTbWFsbCBidWcgaW4gbWFrZXJvbS5jLiBFeHRyYSBzZW1pY29sb24gc2hvcnRlbmVkIGZvciBsb29wIGFuZCBtYWRlCitkb3VibGUgY2hlY2tpbmcgY29kZSBpbnZhbGlkLgorCisrIEFkZGVkIHZlcnNpb24gaWRlbnRpZmljYXRpb24gdG8gc3RhcnR1cCBzdHJpbmcuCisKKysgR2F0aGVyZWQgZXh0ZXJuYWwgZGVjbGFyYXRpb25zIGludG8gbmV0Ym9vdC5oLgorCisrIE5ldyBjb21waWxlIHRpbWUgb3B0aW9uIGZvciBuZXRib290LTMyLiBJZiBJTlQxOUggaXMgbm90IGRlZmluZWQsCit0aGVuIGJvb3QgUk9NIHRha2VzIGNvbnRyb2wgYXMgc29vbiBhcyBCSU9TIHNjYW5zIGl0LiBUaGlzIG1heSBzb2x2ZQordGhlIHByb2JsZW0gb2Ygc29tZSBCSU9TZXMgbm90IGNhbGxpbmcgdGhlIGJvb3QgUk9NIGF0IElOVDE5SC4gVGhpcworbWF5IGJlIHdoZW4gZGlza3MgYXJlIGRldGVjdGVkIGJ5IHRoZSBCSU9TLCBpLmUuIHRoZSBtYWNoaW5lIGlzIG5vdAordHJ1bHkgZGlza2xlc3MuCisKKysgQWRkZWQgYSBuZXcgcHJvZ3JhbSwgdGVzdC5jLCBmb3IgbWFraW5nIHRlc3QgUk9NcyB0byB2ZXJpZnkgdGhhdAordGhlIEJJT1MgcmVjb2duaXNlcyB0aGUgUk9NLgorCisrIE5ldyBkaXJlY3RvcnkgY29udHJpYiBjb250YWlucyBjb250cmlidXRlZCBjb2RlLiBDdXJyZW50bHkgY29udGFpbnMKK21hc3EgYnkgR2VyZCBLbm9ycjogbWFrZSBhIGJvb3QgZmxvcHB5IHdpdGhvdXQgRE9TCitjb21ib290LTEuMCBieSBBZGFtIEouIFJpY2h0ZXI6IGFsc28gbWFrZSBhIGJvb3QgZmxvcHB5IHdpdGhvdXQgRE9TLgorCisrIE5ldyBta25iaS0xLjQgZnJvbSBHZXJvIEt1aGxtYW5uIGFuZCBNYXJrdXMgR3V0c2Noa2UuIFRoaXMgb25lIGhhbmRsZXMKK3RoZSBuZXcgYnpJbWFnZSBmb3JtYXQuCisKK0J1bXBlZCB1cCB2ZXJzaW9uIHRvIDIuMCBiZWNhdXNlIHdlIGFyZSBzbyBsaXN0ZWQgaW4gdGhlIExpbnV4IDIuMAorZGlzdHJpYnV0aW9uIGFuZCB0aGlzIHdvdWxkIGF2b2lkIGNvbmZ1c2lvbi4KKworTWFqb3IgY2hhbmdlcyBmcm9tIDIuMCB0byAyLjEKKworKyBBZGRlZCBMU00gZm9yIHRyYW5zbmFtZS1wYXRjaCB0byBjb250cmliLgorCisrIEFkZGVkIHBhdGNoIGZvciBzZXJpYWwgY29uc29sZSBmcm9tIENsYXVzIEhlaW5lCis8Y2xhdXMgQVQgbW9tbyBQRVJJT0QgbWF0aCBQRVJJT0Qgcnd0aC1hYWNoZW4gUEVSSU9EIGRlPi4KKworKyBDbGF1cyBIZWluZSBjb250cmlidXRlZCBwYXRjaGVzIHRvIHRoZSAyLjAuMjEvMjIga2VybmVsIHNvdXJjZXMgdG8KK2FsbG93IE5GUyBzd2FwLgorCisrIE1hcmt1cyBHdXRzY2hrZSBwcm92aWRlZCBmaXhlcyB0byBzdGFydDIuUyBzbyB0aGF0IG1haW4gY2FuIHJldHVybiB0bwordGhlIFJPTSBjb2RlIGlmIHVzZXIgZG9lc24ndCB3YW50IHRvIFJPTSBib290LgorCisrIEFkZGVkIGNvZGUgdG8gbWFpbi5jIHRvIHRpbWVvdXQgb24gdGhlIHByb21wdCBhbmQgYXNzdW1lIFkgb3IgTgorZm9yIHRoZSBhbnN3ZXIuIFRpbWVvdXQgYW5kIGFuc3dlciBjb25maWd1cmFibGUuCisKKysgTWFkZSBORTEvMjAwMCBwcm9iZSBhZGRyZXNzZXMgY29uZmlndXJhYmxlIGZyb20gTWFrZWZpbGUuIEZpeGVkIHVwCithdXRvc2NhbiBjb2RlLgorCisrIE1hZGUgTkZTX0JPT1QgYSBjb25maWd1cmFibGUgb3B0aW9uLiBCeSB1bmRlZmluaW5nIGl0LCBvbmx5IHRhZ2dlZAorZmlsZSBsb2FkIGlzIHN1cHBvcnRlZCBidXQgUk9NcyBhcmUgdW5kZXIgOGsuCisKKysgUk9NU0laRSBpcyBub3QgdXNlZCBieSBtYWtlcm9tIG5vdy4gLXMgZmxhZyBjb250cm9scyBzaXplIG9mIFJPTQorYXQgcnVudGltZS4gIFNvIGRvbid0IG5lZWQgdG8gcmVjb21waWxlIG1ha2Vyb20gaWYgUk9NU0laRSBjaGFuZ2VzLgorCisrIFVwZGF0ZWQgbmV0Ym9vdC0xNiBmb3IgdGhlIGxhdGVzdCBkZXYgdG9vbHMgZnJvbSB0aGUgTGludXgtTVQKK3Byb2plY3QuIFVzZSB0aGUgc2l6ZS5jIGZyb20gdGhlcmUuCisKKysgR290IHJpZCBvZiBfbWFpbigpIGluIG1haW4uYywgaW5zdGVhZCB1c2luZyAjaWZkZWYgRUxGIGluIHN0YXJ0Mi5TLgorRUxGIGlzIHByZWZlcnJlZCBub3cgYW55d2F5LgorCisrIENoYW5nZWQgYmNvbXBhcmUgdG8gc3RhbmRhcmQgYmNtcCBhbmQgcmV2ZXJzZWQgc2Vuc2Ugb2YgcmVzdWx0LgorUmVhc29uOiB0byB1c2Ugc3RhbmRhcmQgbGlicmFyeSBpZiBhdmFpbGFibGUsIGUuZy4gTmV0Ym9vdC0xNi4KKworKyBDb21tb24gTWFrZWZpbGUgZm9yIDMyIGJpdCBhbmQgMTYgdmVyc2lvbnMsIHdpdGggZGlmZmVyZW5jZXMgaW4KK0NvbmZpZyBmaWxlcy4KKworTWFqb3IgY2hhbmdlcyBmcm9tIDIuMSB0byAyLjIKKworKyBOZXcgZGV2aWNlIGRyaXZlciBmb3IgdGhlIENyeXN0YWwgU2VtaWNvbmR1Y3RvciBDUzg5eDAgY2hpcHNldCBmYW1pbHkuCisgIChiZWNhdXNlIG9mIGxlZ2FsIHByb2JsZW1zLCB0aGlzIGNvZGUgaXMgY3VycmVudGx5IGluIHRoZSAiY29udHJpYiIKKyAgZGlyZWN0b3J5LikKKworKyBBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIEJPT1RQIGV4dGVuc2lvbiBmaWxlcyAoYy5mLiBSRkMxNTMzKS4KKworKyBJZiB3ZSBoYXZlIHRvIGdvIHRocnUgYSBnYXRld2F5LCB0aGVuIHVzZSB0aGUgb25lIHRoYXQgaGFzIGJlZW4gdXNlZCBmb3IKKyAgdGhlIEJPT1RQIGRhZW1vbi4gSWYgdGhlIEJPT1RQIGRhZW1vbiBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlLCB0aGVuIHVzZQorICB0aGUgZmlyc3QgZW50cnkgaW4gdGhlICJndyIgZ2F0ZXdheSBsaXN0IGluc3RlYWQuCisKKysgRm9yIGFsbCByZXRyaWVzLCBiYWNrIG9mZiBhY2NvcmRpbmcgdG8gUkZDOTUxIGJ5IHJhbmRvbWl6aW5nIHRoZSB0aW1lb3V0cworICBhbmQgZXhwb25lbnRpYWxseSBpbmNyZWFzaW5nIHRoZW0gdW50aWwgYW4gYXZlcmFnZSBvZiBvbmUgbWludXRlIGlzCisgIHJlYWNoZWQuCisKKysgV2FybiBpZiBjb2RlIHdpbGwgbm90IGZpdCBpbnRvIGNob3NlbiBST00gc2l6ZS4gSGFwcGVucyBvbmx5IGlmIHRoZQorICBhdXRvc2l6aW5nIGluIHRoZSBNYWtlZmlsZSBzb21laG93IGZhaWxzLgorCisrIE1vZGlmaWVkIHRoZSBjb2RlIGZvciBlbmFibGluZyB0aGUgQTIwIGdhdGU7IHRoaXMgY291bGQgaW5jcmVhc2UKKyAgY29tcGF0aWJpbGl0eSwgYnV0IEkgc3RpbGwgaGF2ZSB0byBoZWFyIGZyb20gdXNlcnMuCisKKysgVGhlIGNvcHlyaWdodCBtZXNzYWdlIHdpbGwgbm93IHJlZmxlY3QsIHdoaWNoIGZlYXR1cmVzIGhhdmUgYmVlbgorICBlbmFibGVkIGF0IGNvbXBpbGUgdGltZS4KKworKyBBZGRlZCBzdXBwb3J0IGZvciBzZWxlY3RpbmcgZGlmZmVyZW50IGJvb3QgaW1hZ2VzIGZyb20gYSBtZW51LiBBcyBhIHNpZGUKKyAgZWZmZWN0LCB0aGlzIGNhbiBiZSB1c2VkIHRvIHVwZ3JhZGUgdGhlIFJPTSB3aXRob3V0IGhhdmluZyB0byBidXJuIGEgbmV3CisgIGltYWdlIChjLmYuIFJFQURNRS5WZW5kb3JUYWdzKS4KKworKyBEaXNwbGF5IGEgIm1lc3NhZ2Ugb2YgdGhlIGRheSIgdGhhdCBpcyBwcm92aWRlZCBieSB0aGUgQk9PVFAgZGFlbW9uLgorCisrIFRoZSBzYW5pdHkgY2hlY2sgZm9yIGRldGVjdGluZyBhIExpbnV4IGtlcm5lbCB3YXMgdG9vIHN0cm9uZyB0byBwcm9wZXJseQorICByZWNvZ25pemUgYSAyLjEueCBrZXJuZWw7IHRoaXMgaGFzIGJlZW4gZml4ZWQuCisKKysgVHJ5cyB0byBuZWdvdGlhdGUgZm9yIDE0MzIgb2N0ZWN0IGJsb2NrcywgaWYgdGhlIFRGVFAgZGFlbW9uIGtub3dzCisgIGFib3V0IFJGQzE3ODMuCisKKysgV2UgY2FuIG9wdGlvbmFsbHkgYm9vdCBmcm9tIGxvY2FsIGRpc2ssIGlmIHRoZSBCT09UUCBzZXJ2ZXIgY2Fubm90CisgIGJlIGNvbnRhY3RlZC4KKworKyBSZXN0cnVjdHVyZWQgZGlyZWN0b3JpZXM6IGdvdCByaWQgb2YgbmV0Ym9vdC1mcmVlYnNkIHRvIHJlZHVjZSBjb25mdXNpb24KKyAgd2l0aCBHZXJvIEt1aGxtYW5uJ3MgbmV0Ym9vdCwgbW92ZWQgZG9jdW1lbnRhdGlvbiB0byBkb2MgYW5kIHJlbmFtZWQKKyAgZGlyZWN0b3JpZXMgdG8gYmUgbW9yZSBpbiBsaW5lIHdpdGggVW5peCBjb252ZW50aW9ucy4gRWRpdGVkIGRvY3VtZW50YXRpb24uCisKKysgQ3JlYXRlZCBhIGRpc3BhdGNoIHRhYmxlIGZvciBOSUMgcm91dGluZXMgc28gdGhhdCB3ZSBjYW4gaW5jbHVkZSBvbmUKKyAgb3IgbW9yZSBkcml2ZXJzIGluIG9uZSBiaW5hcnkuIFJlbmFtZWQgYWxsIGVudHJ5IHBvaW50cyBpbiB0aGUgZHJpdmVyCisgIHNvdXJjZXMuIENyZWF0ZWQgdHdvIG5ldyBmaWxlcywgY29uZmlnLmMsIHdoaWNoIGhvbGRzIHRoZSBkaXNwYXRjaAorICB0YWJsZSBhbmQgY2FuIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQ7IGFuZCBuaWMuYyB3aGljaCBjb250YWlucyB0aGUKKyAgZXh0ZXJuIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IHRoZSBkcml2ZXJzLgorCisrIEF1dG9tYXRpY2FsbHkgZGVjaWRlIHdoYXQgc2l6ZSBST00gaXMgbmVlZGVkIGJ5IGRvaW5nIGEgc2l6ZSBhbmQgdGhlbgorICBjaG9vc2luZyB0aGUgY29ycmVjdCBzdGFydHVwIG9iamVjdC4gQ3VycmVudGx5IGNhdGVycyBmb3IgOGssIDE2ayBhbmQKKyAgMzJrIFJPTXMuCisKKysgT3B0aW9uYWxseSBpbmNsdWRlIGEgc2ltcGxlIGludGVycHJldGVyIGZvciBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMuIFRoaXMKKyAgYWxsb3dzIGZvciBmYW5jaWVyIGJvb3QgbWVudXMuCisKKysgUmVtb3ZlIHBhdGNoZXMgZGlyZWN0b3J5IHdoaWNoIGlzIG1vc3RseSByZWxldmFudCB0byAxLngga2VybmVscyBvbmx5LgorICBFdmVyeWJvZHkgc2hvdWxkIHVzZSAyLngga2VybmVscyBub3cuIElmIGZvciBzb21lIHJlYXNvbiB5b3UgbmVlZCB0aG9zZQorICBwYXRjaGVzLCBnZXQgYW4gb2xkZXIgcmVsZWFzZSBvZiBldGhlcmJvb3QuCisKKysgRml4IE1ha2VmaWxlIHRvIHdvcmsgZXZlbiBpZiAuIG5vdCBvbiBQQVRILgorCisrIFNhZGx5LCAzMiBiaXQgUk9NcyBhcmUgbm93ID4gOGtiLiBXZSB3aWxsIHRyeSB0byByZWR1Y2UgdGhlIHNpemUgYnkKKyAgY29uZGl0aW9uYWxzIGluIGEgbGF0ZXIgcmVsZWFzZS4gRm9yIG5vdywgdXNlIHZlcnNpb24gMi4xIGlmIHlvdXIgTklDCisgIHdvbid0IHRha2UgPiA4a2IgUk9Ncy4KKworKyBSZWxlYXNlIGFzIDMuMGIxIGJlY2F1c2Ugb2YgdGhlIGxhcmdlIGFtb3VudCBvZiBjaGFuZ2VzLgorCisrIEZpeGVkIGEgZmV3IHByb2JsZW1zIHdpdGggdGhlIGNvZGUgZm9yIEFOU0kgZXNjYXBlIHNlcXVlbmNlcyBhbmQKKyAgYWRkZWQgb3B0aW9uYWwgc3VwcG9ydCBmb3IgZGlzcGxheWluZyBncmFwaGljcy4KKworKyBPcHRpb25hbCBzdXBwb3J0IGZvciBwYXNzd29yZCBwcm90ZWN0ZWQgYm9vdCBpbWFnZXMuCisKKysgT3B0aW9uYWwgc3VwcG9ydCBmb3IgYm9vdGluZyBmcm9tIGJsb2NrIGRldmljZXMgKGZsb3BweSwgaGQpLgorCisrIFRoZSBib290cCBzZXJ2ZXIgY2FuIHBhc3MgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHRoZSBsb2FkZWQga2VybmVsCisgIGltYWdlIChjdXJyZW50bHksIHRoaXMgb25seSAgYXBwbGllcyB0byBMaW51eCkgIGFuZCB0aGUgdXNlciBjYW4gIGJlCisgIGFsbG93ZWQgdG8gZWRpdCBhIGNvbW1hbmRsaW5lOyB0aGUgbGF0dGVyIGlzIG9wdGlvbmFsbHkgcHJvdGVjdGVkIGJ5CisgIGEgcGFzc3dvcmQgc2NoZW1lLgorCisrIFNldCB0aGUgd2FybS1ib290IGZsYWcgd2hlbiB0aGUgbWFpbiByb3V0aW5lIGlzIGVudGVyZWQuCisKKysgUmVsZWFzZSBhcyAzLjBiMgorCisrIEFkZGVkIGNvZGUgZm9yIHVwZGF0aW5nIHRoZSBGbGFzaENhcmQgRVBST00gb3ZlciB0aGUgbmV0d29yaworICAoY29udHJpYi9mbGFzaGltZykuCisKKysgQWRkZWQgdmVyeSBzaW1wbGUgY29kZSBmb3IgdHVybmluZyBhIFJPTSBpbWFnZSBpbnRvIGEgbmV0d29yayBsb2FkYWJsZSBpbWFnZS4KKyAgVGhpcyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZywgYnV0IHNvbWUgdXNlcnMgd2l0aG91dCBmbGFzaCBFUFJPTXMgbWlnaHQKKyAgYXBwcmVjaWF0ZSB0aGUgcG9zc2liaWxpdHkgdG8gbG9hZCBhIGZ1bGx5IGZsZWRnZWQgaW1hZ2UgZnJvbSBhIHZlcnkgYmFzaWMKKyAgY29uZmlndXJhdGlvbi4KKworKyBPcHRpb25hbCBzdXBwb3J0IGZvciBjb21wcmVzc2luZyB0aGUgUk9NIGltYWdlcy4gUGxlYXNlIHJlYWQKKyAgZG9jL0NPUFlJTkcuY29tcHJlc3NvciBiZWZvcmUgdXNpbmcgdGhpcyBmZWF0dXJlLgorCisrIFN5bmMnZCBvdXIgc291cmNlIHRyZWUgd2l0aCBHZXJvJ3MgbmV0Ym9vdC0wLjU7IHRoaXMgbWVhbnMgdGhhdCB5b3Ugbm93IG5lZWQKKyAgdGhlIGFzODYgZnJvbSB0aGUgRUxLcyBwcm9qZWN0IGluIG9yZGVyIHRvIHJlY29tcGlsZSBhbGwgb2YgdGhlIGZpbGVzLiBUaGlzCisgIHNob3VsZCBub3QgYWZmZWN0IG5vcm1hbCB1c2FnZSwgdGhvdWdoLgorCisrIEFkZGVkICJta25iaS1ibGtkZXYiIGZvciBib290aW5nIGZyb20gbG9jYWwgYmxvY2sgZGV2aWNlcy4KKworKyBGaXhlZCBzb21lIGJ1Z3MgaW4gcHBtdG9hbnNpLmMgYW5kIGJvb3RtZW51LmMKKworKyBSZW5hbWVkIHJlZmVyZW5jZSBjb21wcmVzc29yIGltcGxlbWVudGF0aW9uIHRvIGNvbXByZXNzb3IuZXhwIG90aGVyd2lzZQorICBtYWtlIHRyaWVzIHRvIHVzZSBpdCBhbmQgaXQgc2hvdWxkIG5vdCBiZSB0dXJuZWQgb24gYnkgZGVmYXVsdC4KKworKyBaZXJvJ2luZyBCU1MgaW4gMTYtYml0IHZlcnNpb24gaGFzIHRvIGJlIGRvbmUgdG8gX2VuZCwgbm90IHRvIEEwMDAwCisgIGJlY2F1c2UgaXQncyBleGVjdXRpbmcgaW4gYSBzZWdtZW50LCBub3QgaW4gZmxhdCBhZGRyZXNzIHNwYWNlIGluIDE2CisgIGJpdCBtb2RlLgorCisrIEtlbiBZYXAgY29udHJpYnV0ZWQgYSBxdWljayBhbmQgZGlydHkgUGVybCBzY3JpcHQgZm9yIHBlb3BsZSB3aG8gdXNlCisgIG5ldGJvb3QgdG8gdGVzdCBFTEtTLiAgU28gZmFyIEknbSB0aGUgb25seSBvbmUgSSBrbm93IG9mOyBtYXliZSB0aGUKKyAgb3RoZXJzIGFyZSBzaWxlbnQuIDotKAorCisrIFJlbGVhc2UgYXMgMy4wCisKK01ham9yIGNoYW5nZXMgZnJvbSAzLjAgdG8gMy4xCisKKysgNCB2ZXJzaW9ucyBvZiBldGhlcmJvb3QgY2FuIGJlIGJ1aWx0IGZvciBhIE5JQzogLmNvbSBmb3IgdGVzdGluZyBhbmQKKyAgLnJvbSBmb3IgYnVybmluZyBpbnRvIEVQUk9NLCBhbmQgY29ycmVzcG9uZGluZyBjb21wcmVzc2VkIHZlcnNpb25zOgorICAubHpjb20gYW5kIC5senJvbS4KKworKyBUaGUgbG9hZGVycyBhcmUgbm93IHNlcGFyYXRlIHByb2dyYW1zIHdoaWNoIGFyZSBwcmVwZW5kZWQgdG8gdGhlCisgIGV0aGVyYm9vdCBiaW5hcnkuIFRoaXMgYWxsb3dzIHRoZW0gKHBsYWluIGFuZCB1bmNvbXByZXNzaW5nIHZlcnNpb25zKSB0bworICBiZSBtYWludGFpbmVkIHNlcGFyYXRlbHkgYW5kIGdpdmVzIGEgYml0IG1vcmUgUkFNIHRvIHRoZSBldGhlcmJvb3QgY29kZS4KKworKyBObyBuZWVkIHRvIGRlZmluZSBST01TSVpFIGluIHRoZSBidWlsZC4gbWFrZXJvbSBhdXRvbWF0aWNhbGx5IGRpc2NvdmVycworICB0aGUgUk9NIHNpemUgbmVlZGVkIGFuZCBmaWxscyBpbiB0aGUgc2l6ZSBmaWVsZCBpbiB0aGUgUk9NLiBUaGlzCisgIHNpbXBsaWZpZXMgdGhlIGJ1aWxkIHByb2NlZHVyZS4KKworKyAxNiBiaXQgdmVyc2lvbnMgdXNlIHRoZSBzYW1lIGxvYWRlcnMgYXMgdGhlIDMyIGJpdCB2ZXJzaW9uLiBBbHNvIGZpeGVkCisgIHR3byBidWdzIGluIHRoZSAxNiBiaXQgdmVyc2lvbnM6ICgxKSBhIG5vbi04MDg2IGluc3RydWN0aW9uIGluIHpsb2FkZXIsCisgICgyKSBzZXR0aW5nIHdhcm0tYm9vdCBmbGFnIGluIG1haW4gd2hpY2ggemFwcGVkIHNvbWUgY29kZS4KKworKyBGaXhlZCBhIGRvY3VtZW50YXRpb24gYnVnIG9uIHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMuCisKKysgSW5jbHVkZSBuZXRib290LTAuNS4zIGRpc3RyaWJ1dGlvbiBmcm9tIEdlcm8gS3VobG1hbm4uCisKKysgSW5jbHVkZWQgc29tZSBjb250cmlidXRpb25zIGZyb20gRGlja29uLlJlZWQgQVQgY2wgUEVSSU9EIGNhbSBQRVJJT0QKK2FjIFBFUklPRCB1azogUnVubmluZyBkaXNwbGF5IG9mIEtieXRlcyBsb2FkZWQsIGxpbmUgb2YgZGVsaW1pdGVycyBhZnRlcgorbG9hZGluZyBjb21wbGV0ZSwgYSB0ZW1wb3JhcnkgaGFjayB0byBhZGRyZXNzIHRpbWluZyBwcm9ibGVtcyB3aXRoIHRoZQorM0M1MDksIGFuZCBzb21lIE1ha2VmaWxlIGNsZWFudXAuIFRoZSBmaXJzdCB0d28gY2hhbmdlcyBuZWVkIHRvIGJlCitlbmFibGVkIGluIENvbmZpZyB3aXRoIGRlZmluZXMuCisKKysgbWtuYmktYmxrZGV2IHNlZW1zIHRvIGhhdmUgYmVlbiBsZWZ0IG91dCBieSBHZXJvIEt1aGxtYW5uLiBBZGQgdG8KKyAgY29udHJpYiBkaXJlY3RvcnkuIFlvdSBwcm9iYWJseSBoYXZlIHRvIG1ha2UgYSBzeW1saW5rIHRvIGl0IGZyb20KKyAgdGhlIG5ldGJvb3QtMC41LjIgZGlyZWN0b3J5LgorCisrIFJlbGVhc2UgYXMgMy4xCisKK01ham9yIGNoYW5nZXMgZnJvbSAzLjEgdG8gMy4yCisKKysgMTYgYml0IHZlcnNpb24gbm93IGNhbiBsb2FkIHRvIGV4dGVuZGVkIG1lbW9yeSwgaWYgaXQgZXhpc3RzLiBPbgorICBhIDgwODYvOCB0aGlzIHdpbGwgc2lsZW50bHkgZmFpbC4KKworKyBDbGVhbmVkIHVwIGludGVyZmFjZSBiZXR3ZWVuIG1haW4gYm9keSBvZiBjb2RlIGFuZCBOSUMgZHJpdmVycy4gTm8KKyAgZ2xvYmFsIHZhcmlhYmxlcyByZWZlcmVuY2VkIGluIE5JQyBkcml2ZXIsIGV2ZXJ5dGhpbmcgaXMgcGFzc2VkCisgIHRocm91Z2ggYSBzdHJ1Y3R1cmUuIE9ubHkgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIHZpc2libGUgb3V0c2lkZSwKKyAgcG9pbnRlcnMgdG8gdGhlIG90aGVycyBhcmUgcmV0dXJuZWQgaW4gdGhlIHN0cnVjdHVyZS4KKworKyBJbXBsZW1lbnRlZCBhdXRvcHJvYmUgZm9yIDNjNTAzLiBBbHNvIHNpbXBsaWZpZXMgY29kZSBhdCBzYW1lIHRpbWUuCisKKysgUmVtb3ZlZCBBUlAgcmVzcG9uc2UgY29kZSBpbiBuczgzOTAuYy4gRG9uJ3QgdGhpbmsgd2UgbmVlZCB0byByZXNwb25kCisgIHRvIEFSUCByZXF1ZXN0cyBiZWNhdXNlIG90aGVyIG1hY2hpbmVzIHdpbGwgZG8gZ3JhdHVpdHVvdXMgQVJQIHdoZW4KKyAgYm9vdCBjb2RlIHNlbmRzIG91dCBib290cCByZXF1ZXN0LiBBcmUgdGhlcmUgY2FzZXMgd2hlcmUgdGhpcyBpcyBub3QKKyAgdHJ1ZT8gR2F0ZXdheXM/CisKKysgQWRkZWQgMSBzZWNvbmQgdGltZW91dCB0byByb3V0aW5lIHRoYXQgY2xlYXJzIHRoZSBrZXlib2FyZCBidWZmZXIKKyAgaW4gY2FzZSB0aGVyZSBpcyBubyBrZXlib2FyZC4KKworKyBBZGRlZCBhIHNrZWxldG9uIGRyaXZlciB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgdGVtcGxhdGUgZm9yIG5ldyBOSUMKKyAgZHJpdmVycy4KKworKyAuL2x6aHVmIGluIE1ha2VmaWxlIHNvIHRoYXQgaXQgd2lsbCBydW4gZXZlbiBpZiAuIGlzIG5vdCBvbiBwYXRoLgorCisrIEZpeGVkIGNvbWJvb3QgdG8gd29yayBvbiAyODZzIGFsc28uIFdvbid0IHdvcmsgeWV0IG9uIDgwODYvOC4KKworKyBGaXhlZCBta25iaS1ibGtkZXYgdG8gY29uZmlndXJlIHByb3Blcmx5IHVuZGVyIG5ldGJvb3QtMC43LgorCisrIEFkZGVkIERhdmlkIE11bnJvJ3MgUENJIGNvZGUgYWRhcHRlZCBmcm9tIExpbnV4LiBDdXJyZW50bHkgaGFzIGVudHJpZXMKKyAgZm9yIFBDSSBORTIwMDAgY2xvbmVzLiBHZW5lcmFsaXNlZCBpdCB0byBwcm9iZSBvdGhlciBQQ0kgY2FyZHMgbGF0ZXIgb24uCisKKysgTW92ZWQgdHdpZGRsZSgpIG91dHNpZGUgTklDIGRyaXZlciBleGNlcHQgd2hlcmUgdXNlZCB0byBwcm92aWRlIGEgZGVsYXkuCisKKysgRml4ZWQgYnVnIGluIE1ha2VmaWxlIHNwb3R0ZWQgYnkgVG9uIEJpZWdzdHJhYXRlbi4gU2hvdWxkIHByZXBlbmQKKyAgWkxPQURFUiB0byBtYWtlIGFsbC5semNvbSwgbm90IExPQURFUi4KKworKyBDaGFybGllIEJyYWR5IGRvbmF0ZWQgYSBORTIxMDAgKExBTkNFKSBjYXJkLCBzbyBLZW4gWWFwIHdyb3RlIGEgZHJpdmVyCisgIGZvciBpdC4gU2hvdWxkIHdvcmsgZm9yIG90aGVyIExBTkNFICg3OTkwLCBldGMpIGJhc2VkIGNhcmRzIHdpdGggc29tZQorICBtb2RpZmljYXRpb25zLgorCisrIE1hcmt1cyBHdXRzY2hrZSB3cm90ZSByb20tc2NhbiwgYW5kIGl0IGlzIGluIGNvbnRyaWIvLgorCisrIEhhY2sgcm9tLXNjYW4uYyBzbyB0aGF0IGEgRE9TIHZlcnNpb24gY2FuIGJlIGNvbXBpbGVkLgorCisrIFJlbW92ZWQgYWxsLiogdGFyZ2V0cyBmcm9tIE1ha2VmaWxlLiBUaGUgTklDIHNwZWNpZmljIGxvYWRlcnMgc2hvdWxkIGJlCisgIHVzZWQgaW4gcHJlZmVyZW5jZSBhcyB0aGUgYWxsLiogbG9hZGVycyBjYW4gcnVuIG91dCBvZiBtZW1vcnkuCisKKysgQWRkZWQgYSBkaXNhYmxlIHJvdXRpbmUgdG8gZGlzcGF0Y2ggdGFibGUgc28gdGhhdCBjYXJkcyBjYW4gYmUgdHVybmVkCisgIG9mZiBiZWZvcmUgdGhlIGxvYWRlZCBjb2RlIGlzIGV4ZWN1dGVkLgorCisrIE1ha2UgSU5UMTlIIHRoZSBkZWZhdWx0LgorCisrIFJvZ2llciBXb2xmZiBwZXJzdWFkZWQgQVcgY29tcHV0ZXIgc3lzdGVtcyB0byBjb250cmlidXRlIHRoZSBJbnRlbAorICBFdGhlckV4cHJlc3NQcm8gMTAwIGRyaXZlci4gVGhlIGJpbmFyeSB0byBoZXggY29udmVydGVyIGluIGNvbnRyaWIvCisgIGlzIGFsc28gZnJvbSBSb2dpZXIgV29sZmYuIFBhcnQgb2YgdGhlIHdvcmsgaXMgc3BvbnNvcmVkIGJ5IEJpdFdpemFyZAorICBOTCAod3d3LmJpdHdpemFyZC5ubCkuCisKKysgRGlzdHJpYnV0ZSB3aXRoIGEgc3Vic2V0IG9mIG5ldGJvb3QtMC43LjIgdGhhdCBkb2Vzbid0IGhhdmUgdGhlIGJvb3Ryb20KKyAgcG9ydGlvbi4KKworKyBSZWxlYXNlIGFzIDMuMi4KKworTWFqb3IgY2hhbmdlcyBmcm9tIDMuMiB0byA0LjAKKworKyBNZXJnZWQgaW4gVmxhZCBMdW5ndSdzIHBhdGNoZXMgZm9yIERIQ1Agc3VwcG9ydCwgaWZkZWYnZWQgYnkgREhDUF9TVVBQT1JULgorCisrIFhJRCBtYXRjaGluZyBmaXggYWxzbyBwcm92aWRlZCBieSBWbGFkIEx1bmd1LgorCisrIE1lcmdlZCBpbiBXaWxsaWFtIEFyYmF1Z2gncyBwYXRjaGVzIHRvIG1ha2UgZWVwcm8gZHJpdmVyIHdvcmsgcHJvcGVybHkuCisKKysgQWRkIHRvIGNvbnRyaWIvIGJldHRlciBiaW4yaW50ZWxoZXggZnJvbSBKZWFuIE1hcmMgTGFjcm9peC4KKworKyBQYXRjaGVzIGZyb20gSmltIEhhZ3VlICh0aGFua3MhKSBmb3IgdGhlIGZvbGxvd2luZzoKKworKiBBZGRlZCBQSU8gbW9kZSBmb3IgM2M1MDMgdG8gbnM4MzkwLmMuIENoYW5nZWQgdGhlIGNhcmQgZGV0ZWN0aW9uIHRvCisgIGRldGVjdCBzaGFyZWQgbWVtb3J5IG9yIFBJTyBhbmQgdXNlIHRoZSBzZWxlY3RlZCBvbmUsIGFuZCByZW1vdmVkCisgIGEganVtcGVyIGNoZWNrIHRoYXQgZmFpbGVkIG9uIHRoZSBCdWxsIChubyBqdW1wZXJzKS4KKworKiBBZGRlZCBtb3JlICNpZmRlZnMgdG8gbnM4MzkwLmMgdG8gaW5jbHVkZSBvbmx5IGNvZGUgcmVsZXZhbnQgdG8gdGhlCisgIGNhcmQgYmVpbmcgY29tcGlsZWQsIGFuZCByZW1vdmVkIHVubmVjZXNzYXJ5IHJ1bi10aW1lIGNhcmQgdmVuZG9yCisgIGJlaGF2aW91ciBicmFuY2hlcyAtIGl0J3MgYWxsIG5vdyAjaWZkZWZkLgorCisqIEFkZGVkIGEgLTMgcGFyYW1ldGVyIHRvIG1ha2Vyb20gdG8gc2V0IHRoZSBsYXN0IHR3byBieXRlcyB0byAweDgwLgorICBUaGVzZSBhcmUgdGhlIHZhbHVlcyB0aGV5IGhhdmUgaW4gdGhlIDNDb20gRXRoZXJib290IGltYWdlIHRoYXQgd2FzCisgIGluIHRoZSBCdWxsLiAoQWxzbyBvbiB0aGUgM2M1MDMgY2FyZCBJIGhhdmUgLSBLZW4uKSBBbHNvIGFsdGVyZWQgdGhlCisgIE1ha2VmaWxlIHRvIGFkZCB0aGlzIHBhcmFtZXRlciB3aGVuIGJ1aWxkaW5nIGEgM2M1MDMgaW1hZ2UuCisKKyogTW9kaWZpZXMgbHpodWYuYywgb2JqZHVtcDg2LmMgJiBzaXplODYuYyB0byB3b3JrIG9uIGVpdGhlci1lbmRpYW4gc3lzdGVtcy4KKworKiBBZGRzIGEgLURUNTAzX0FVSSBjb25maWcgcGFyYW10ZXIgdG8gbGV0IHlvdSBjaG9vc2UgQVVJIG9yIEJOQyBvbgorICAzYzUwM3MuICBQcmV2aW91c2x5IGl0IGRlZmF1bHRlZCB0byBBVUksIGFuZCB5b3UgaGFkIHRvIGNoYW5nZSB0aGUKKyAgY29kZSB0byBhbHRlciBpdC4KKworKiBDaGFuZ2VkIHRoZSBCQ0MgaW5jbHVkZSBkaXJlY3RvcnkgdG8gL3Vzci9iY2MvaW5jbHVkZS4gSWYgeW91IHVzZSB0aGUKKyAgQkNDIGluY2x1ZGUgZmlsZXMgdGhleSBkb24ndCBkZWZpbmUgdV9jaGFyLCB1X3Nob3J0IGV0Yy4gSSd2ZSBhZGRlZAorICB0aGVzZSBpbnRvIGxpbnV4ZGVmLmgsIGlmZGVmJ2Qgb24gQkNDLgorCisqIEFkZHMgYSB0cml2aWFsIExpbnV4IDNjNTAzIGRyaXZlciBwYXRjaCB0byB0aGUgY29udHJpYiBkaXJlY3RvcnkKKyAgdG8gbGV0IGl0IHNwb3QgdGhlc2UgJ2VyZSBCdWxsIHRoaW5ncy4KKworKyBDaGFybGllIEJyYWR5IGNvbmZpcm1lZCB0aGF0IHRoZSBMYW5jZSBkcml2ZXIgd29ya3Mgd2l0aCBQQ0kgc28gdGhlcmUKK2lzIGEgbmV3IGxhbmNlcGNpIGRyaXZlciBub3cuCisKKysgUmVtb3ZlZCBzdXBwb3J0IGZvciBORlNfQk9PVDsgb25seSBURlRQIGJvb3Rpbmcgc3VwcG9ydGVkIG5vdy4KKworKyBSZW1vdmVkIHN1cHBvcnQgZm9yIGxpbmVhciBpbWFnZXM7IG9ubHkgdGFnZ2VkIGltYWdlcyBzdXBwb3J0ZWQgbm93LgorCisrIFJlbW92ZWQgUFJJT1JJWkVCT09UUEtFUk5FTCBhbmQgQk9PVFBLRVJORUxPTkxZLiBCb290cCByZXBseSBtdXN0CitzcGVjaWZ5IGtlcm5lbCBuYW1lLgorCisrIEJ1ZyBmaXggZm9yIDE2IGJpdCB2ZXJzaW9uIG9mIDNjNTA5IGRyaXZlcjogc2lnbiBiaXQgcHJvcGFnYXRpb24gYnVnLgorCisrIFJldmVydCB0byBub24tcGF1c2luZyB2ZXJzaW9ucyBvZiBvdXRbYnddIGFuZCBpbmIgZm9yIE5FeDAwMCBkcml2ZXIKK2JlY2F1c2Ugb2YgcmVwb3J0cyBvZiB0aW1pbWcgcHJvYmxlbXMgb24gc29tZSBjYXJkcy4KKworKyBOZXcgZHJpdmVyIGZvciBOSTY1MTAuIEp1c3QgYSBzaW1wbGUgdHdlYWsgb2YgdGhlIGxhbmNlIGRyaXZlciBmb3IKK2RpZmZlcmVudCBJRCBieXRlcyBhbmQgZGlmZmVyZW50IHJlZ2lzdGVyIG9mZnNldHMuIEFjY29yZGluZyB0byB0aGUKK05JNjUxMCBkcml2ZXIgaW4gTGludXgsIHRoZSBOSTY1MTAgRXRoZXJibGFzdGVyIGlzIG1vcmUgbGlrZSB0aGUgTkUyMTAwCithbmQgd291bGQgYmUgZGV0ZWN0ZWQgYnkgdGhlIE5FMjEwMCBkcml2ZXIuIFNvIHVzZSB0aGF0IG9uZSBpbnN0ZWFkLgorCisrIE5ldyBkcml2ZXJzIGZvciAzYzUwNyBhbmQgTkk1MjEwLCBib3RoIG9mIHdoaWNoIHVzZSB0aGUgaTgyNTg2IGNoaXAuIEl0Cit3b3JrcyBwcm9wZXJseSBmb3IgYm90aCBub3cuIEkgbmVlZGVkIHRvIGhhdmUgZW5vdWdoIHJlY2VpdmUgYnVmZmVycyB0bworbWFrZSBzdXJlIGk4MjU4NiBuZXZlciBnb2VzIGludG8gYW4gb3V0IG9mIHJlc291cmNlcyBzdGF0ZS4gM2M1MDcgZHJpdmVyCitoYXMgb25lIHF1aXJrLCBpdCBvbmx5IHJlc3BvbmRzIGFmdGVyIHNlY29uZCBib290cCByZXF1ZXN0LiBJIHNlZW0gdG8KK3JlbWVtYmVyIHNvbWV0aGluZyBhYm91dCB0aGlzIHByb2JsZW0gb2YgbG9zaW5nIHRoZSBmaXJzdCBwYWNrZXQgYWZ0ZXIKK2luaXRpYWxpc2F0aW9uIGluIGVhcmx5IExpbnV4IGRpc2N1c3Npb25zLiAgSSBhbSBhbHNvIG5vdyBjb252aW5jZWQKK3RoYXQgSW50ZWwgZGVzaWduZXJzIGhhdmUgd2VpcmQgbWluZHMuIEJUVywgTkk1MjEwIGRyaXZlciBhc3N1bWVzIDhrCitSQU0gYmVjYXVzZSBpZiB5b3UgcHV0IHRoZSBST00gb24gdGhlIE5JQyB5b3UgY2FuIG9ubHkgaGF2ZSA4ayBSQU0uIElmCit5b3UgYXJlIHB1dHRpbmcgdGhlIFJPTSBvZmYtYm9hcmQgYW5kIHlvdSB3YW50IDE2aywgd2VsbCwgdGFsayB0byBtZS4KKworKyBDYWxsIG5pY19kaXNhYmxlIHJvdXRpbmUganVzdCBiZWZvcmUganVtcGluZyB0byBsb2FkZWQgaW1hZ2UuIFRoaXMKK2RvZXMgbm90aGluZyBpbiBtb3N0IGRyaXZlcnMsIGJ1dCBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgYXMgdGhlIG5pY19yZXNldAorcm91dGluZSB1c2VkIHRvIGJlIGNhbGxlZCBpbnN0ZWFkLgorCisrIE9uZSBvZiB0aG9zZSAid2h5IEkgZGlkbid0IHRoaW5rIG9mIGl0IGJlZm9yZSIgaWRlYXM6IEEgbW9kaWZpZWQgdmVyc2lvbgorb2YgY29tYm9vdCwgY2FsbGVkIGZsb3BweWxvYWQsIHRoYXQgaXMgcHJlcGVuZGVkIHRvIHRoZSAucm9tIGltYWdlIHJhdGhlcgordGhhbiB0aGUgLmNvbSBpbWFnZSBhbmQgdGhlbiBib3RoIHdyaXR0ZW4gcmF3IHRvIGEgZmxvcHB5IGZvciB0ZXN0aW5nIHRoZQorYm9vdHJvbS4gQWxsIHdlIGhhdmUgdG8gZG8gaXMganVtcCB0byBhbiBlbnRyeSBwb2ludCBpbiAoeilsb2FkZXIgdGhhdAorc2tpcHMgdGhlIElOVDE5SCBzdHVmZi4gUmVsb2NhdGlvbiB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5LiAgTm93IHRoZQorLmNvbSBpbWFnZXMgYW5kIGNvbWJvb3QgYXJlIHN1cGVyZmx1b3VzLCB1bmxlc3Mgb25lIGlzIG1hc29jaGlzdGljIGVub3VnaAordG8gd2FudCB0byB0cnkgdG8gdGVzdCB1bmRlciBET1MuCisKK0FkZGVkIC5mZDAgdGFyZ2V0cyB0byBNYWtlZmlsZS4gU2F5aW5nIG1ha2UgPGNhcmQ+LmZkMCB3aWxsIG1ha2UKK2Zsb3BweWxvYWQuYmluIGFuZCA8Y2FyZD4ucm9tLCBhbmQgY2F0IGJvdGggdG8gL2Rldi9mZDAuIE5hdHVyYWxseSB0aGUKK2RyaXZlIG11c3QgYmUgd3JpdGFibGUgYW5kIHlvdSBtdXN0IGhhdmUgYSBmbG9wcHkgaW4gdGhlIGRyaXZlLgorCisrIE5ldyBkcml2ZXIgZm9yIFRpYXJhIChGdWppdHN1IEV0aGVyU3RhcikuIFRoaXMgd2FzIG9uZSBvZiB0aGUgZWFzaWVzdAorZHJpdmVycyB0byB3cml0ZS4gQnV0IHRoZSBjaGlwIGFwcGFyZW50bHkgaGFzIHNvbWUgcXVpcmtzOyB0aGVyZSBpcyBubworTGludXggZHJpdmVyIGZvciBpdCBpbiB0aGUgc3RhbmRhcmQgZGlzdHJpYnV0aW9uIGFuZCB0aGUgZW1haWwgYWRkcmVzcworb2Ygc29tZW9uZSB3aG8gd3JvdGUgYW4gYWxwaGEgZHJpdmVyIGlzIGludmFsaWQuIFBlcmhhcHMgSSdsbCBidW1wIGludG8KK2FuIEFUMTcwMCAod2hpY2ggaGFzIGEgc2ltaWxhciBjaGlwKSBvbmUgZGF5IGFuZCBiZSBhYmxlIHRvIHJldXNlIGEgbG90CitvZiB0aGUgY29kZS4KKworKyBVcGRhdGVkIGNvbnRyaWIvbWtlbGtzbmJpIGZvciBFTEtTIDAuMC42OC4KKworKyBDb25maXJtZWQgdGhhdCB0aGUgU01DODIxNiBkcml2ZXIgd29ya3MuIDg0MTYgbm90IHRlc3RlZCwgaXQncyBhIFBuUAorY2FyZC4gQ2FuIGFueWJvZHkgY29uZmlybSB0aGlzPworCisrIE5ldyBjb250cmlidXRlZCBzb2Z0d2FyZTogcDkxMG5kLCBhIHRpbnkgcHJpbnRlciBkYWVtb24gc3VpdGFibGUgZm9yCitkaXNrbGVzcyBob3N0cy4KKworKyBNYWRlIEFOU0lFU0Mgd29yayBmb3IgRXRoZXJib290LzE2LgorCisrIEZpeGVkIE1ha2VmaWxlIGFuZCBDb25maWcuKiBzbyB0aGF0IGl0IHdvcmtzIHdpdGggb2xkIGJpbnV0aWxzLgorCisrIEluY2x1ZGVkIGEgc3Vic2V0IG9mIG5ldGJvb3QtMC43LjMuCisKKysgUmVsZWFzZWQgYXMgdmVyc2lvbiA0LjAuCisKK0NoYW5nZXMgYmV0d2VlbiA0LjAgYW5kIDQuMQorCisrIFBhdGNoZXMgYnkgQW5kcmV3IENvdWx0aHVyc3QgZm9yIGVlcHJvMTAwYi4KKworKyBQYXRjaGVzIGJ5IERvdWcgQW1icmlza28gZm9yIGJvb3RpbmcgV2luZG93czk1IGFmdGVyIGFuc3dlcmluZyBOIHRvCit0aGUgYm9vdCBmcm9tIG5ldHdvcmsgcXVlc3Rpb24uIEFkZGVkIGNvbmRpdGlvbmFsIGNvZGUgdG8gY29wZSB3aXRoCiticm9rZW4gREhDUCBzZXJ2ZXIgYW5kIFRBRyAxMjguCisKKysgUHV0IHZlcnNpb24gYW5kIGRyaXZlciBpZGVudGlmaWVyIGF0IGVuZCBvZiBST00gaW1hZ2UgaWYgaXQgZml0cywKK3RvIGhlbHAgaWRlbnRpZnkgUk9NcyBpbiBmdXR1cmUuCisKKysgQ2FwdHVyZSBST00gc2VnbWVudCBhZGRyZXNzIGFuZCBsZW5ndGggdG8gaGVscCBjaG9vc2UgYmV0d2VlbiBtdWx0aXBsZQorTklDcyBsYXRlci4KKworKyBEb24ndCBjbGVhciBhbGwgb2YgbWVtb3J5IGJlY2F1c2UgaXQgd2lsbCBkZXN0cm95IHJldHVybiBhZGRyZXNzCitvbiBzdGFjay4KKworKyBDaGFuZ2VzIHRvIGNvbWJvb3QtMS4yIChhbHRob3VnaCBvYnNvbGV0ZSkgdG8gcnVuIG9uIDgwODhzLgorCisrIE5ldyB2ZXJzaW9uIDAuMiBvZiBwOTEwbmQsIGEgbm9uLXNwb29saW5nIHByaW50ZXIgZGFlbW9uLgorCisrIFBhdGNoZXMgYnkgQWxleCBIYXJpbiB0byBwcmVwZW5kZWQgbG9hZGVycyBhbmQgbWFrZXJvbSB0byBnZW5lcmF0ZSBQblAKK3JlYWR5IFJPTXMuIE1vZGlmaWVkIG1ha2Vyb20gdG8gYXV0b21hdGljYWxseSBkZXRlY3QgUG5QIGFuZCBQQ0kgaGVhZGVycworYW5kIGRvIHRoZSByaWdodCB0aGluZy4gQWRkZWQgb3B0aW9uIHRvIGNoYW5nZSB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLgorCisrIEF1Z21lbnRlZCBkb2N1bWVudGF0aW9uIGZvciAyLjEgYW5kIGFib3ZlIGtlcm5lbHMuIEtlcm5lbCBub3cgd2FudHMgdG8KK21vdW50IC90ZnRwYm9vdC88aG9zdG5hbWUgaW4gYm9vdHB0YWI+IHJhdGhlciB0aGFuIC90ZnRwYm9vdC88aXAgYWRkcmVzcz4KK2FzIHRoZSByb290IEZTLgorCisrIENoYW5nZWQgYWxsIHRoZSBvdXRiKiBhbmQgb3V0dyBjYWxscyBpbiBkcml2ZXJzIChleGNlcHQgZWVwcm8pIHRvIGJlCitPVVRCKiBhbmQgT1VUVywgdGhlbiBkZWZpbmVkIG1hY3JvcyB0byB0cmFuc2xhdGUgdG8gb3V0W2JwXSogZm9yIGJvdGgKK0V0aGVyYm9vdC8zMiBhbmQgRXRoZXJib290LzE2LCBpbnN0ZWFkIG9mIHBhc3RpbmcgbWFjcm9zIGZyb20gTGludXgKK2luY2x1ZGUgZmlsZXMgYmVjYXVzZSBhcHBhcmVudGx5IHRoZXkndmUgY2hhbmdlZCBpbiAyLjEuIEF0IHRoZSBzYW1lCit0aW1lIHJldmVyc2VkIHRoZSBhcmd1bWVudHMgaW4gc3RhcnQxNi5TIGZvciBvdXRiIGFuZCBvdXR3IHRvIG1hdGNoIHRoZQorTGludXggY29udmVudGlvbi4gVW5mb3J0dW5hdGVseSB0aGUgb3V0W2J3XSB1c2FnZSBjYW1lIHRoYXQgd2F5IGZyb20KK0ZyZWVCU0QuIFNvbWVkYXkgSSdsbCByZXZlcnNlIHRoZSBhcmd1bWVudHMgaW4gdGhlIEMgZmlsZXMgcHJvcGVybHkuCitGb3IgYW55IG5ldyBkcml2ZXIgd3JpdGVycywgeW91IHNob3VsZCB1c2UgdGhlIExpbnV4IG9yZGVyIG5vdy4KKworKyBOZXcgY29udHJpYnV0ZWQgdXRpbGl0eSwgZGlzbmJpIGZvciBkZWNvZGluZyBhbmQgZXh0cmFjdGluZyBuZXR3b3JrCitib290IGltYWdlcy4KKworKyBNYXJ0aW4gQXRraW5zIGNvbnRyaWJ1dGVkIG1udG5iaSBmb3IgbW91bnRpbmcgRE9TIE5CSXMuCisKKysgUGV0ZXIgRG9iY3NhbnlpIGNvbnRyaWJ1dGVkIHZlbmRvciBhbmQgZGV2aWNlIElEcyBmb3IgdGhlIE5ldHZpbgorTkUyMDAwL1BDSSBjbG9uZS4KKworKyBhZGFtIEFUIG11ZGxpc3QgUEVSSU9EIGVvcmJpdCBQRVJJT0QgbmV0IGNvbnRyaWJ1dGVkIFJBUlAgY29kZSBhcworYWx0ZXJuYXRpdmUgdG8gQk9PVFAvREhDUC4gQWN0aXZhdGVkIGJ5IFJBUlBfTk9UX0JPT1RQIGRlZmluZS4KKworKyBBZGRlZCBsaW5rIHRvIENsYXVzLUp1c3R1cyBIZWluZSdzIE5GUyBzd2FwIFdlYiBwYWdlIGFuZCB1cGRhdGVkIHRoZQorY29udHJpYiBkaXJlY3RvcnkuCisKKysgRGlzYWJsZWQgbWF4IHBhY2tldCBsZW5ndGggY2hlY2sgaW4gbnM4MzkwLmMuIENhdXNlZCBzcHVyaW91cyBCb2d1cworcGFja2V0IG1lc3NhZ2VzIGluIHNvbWUgY2FzZXMgYW5kIGRvZXNuJ3Qgc2VlbSB0aGF0IHVzZWZ1bCBhIHNhbml0eQorY2hlY2sgYW55d2F5LgorCisrIERhbmllbCBFbmdzdHJvbSBjb250cmlidXRlZCBhIFNNQzkwMDAgZHJpdmVyLgorCisrIERpZGllciBQb2lyb3QgY29udHJpYnV0ZWQgYW4gRXRoZXJwb3dlciBJSSAoRVBJQyAxMDApIGRyaXZlci4KKworKyBBZGRlZCBidWcgZml4IGJ5IEF0dGlsYSBCb2fhciBmb3IgYm9vdG1lbnUuYyBhbmQgcGF0Y2ggdG8gbWFpbi5jIHRvCityZW1vdmUgbG9vcGluZyBtZW51cyBvbiBmYWlsdXJlLiBBbHNvIGNvZGUgZm9yIEFSUCByZXBsaWVzIGFuZCBURlRQCitibG9jayByZXRyYW5zbWl0ICgjaWZkZWZlZCBiZWNhdXNlIGNvbnRyb3ZlcnNpYWwpLgorCisrIENvZGUgY2xlYW51cCBvZiB0ZnRwIGFuZCB0ZnRwZCBhbHNvIGJ5IEF0dGlsYSBCb2fhci4KKworKyBOYXRoYW4gUi4gTmV1bGluZ2VyIGZpeGVkIGEgYnVnIHdpdGggYmxvY2sgYmVpbmcgZGVjbGFyZWQgc2hvcnQgaW5zdGVhZAorb2YgdV9zaG9ydCBpbiB0ZnRwZC5jLCB3aGljaCBsaW1pdGVkIHRyYW5zZmVycyB0byAzMmsgYmxvY2tzLiBGaXhlZAorcHJvYmxlbSB3aXRoIGZpZWxkIHR1X2Jsb2NrIGJlaW5nIGRlY2xhcmVkIGFzIHNpZ25lZCBzaG9ydCBpbiBtYW55CitwbGF0Zm9ybXMgYnkgaW5jbHVkaW5nIGZpeGVkIHZlcnNpb24gb2YgdGZ0cC5oLiBGaXhlZCB0ZnRwIGFsc28gZm9yCitnb29kIG1lYXN1cmUuCisKKysgTmV3IG1pbmktSE9XVE8gb24gYSAic3NoIHRlcm1pbmFsIi4KKworKyBBbmRyZWFzIE1hY2sgcG9pbnRlZCBvdXQgdGhhdCBlZXBybzEwMCBkb2Vzbid0IGNvbXBpbGUgb24gMi4xIGFuZAorMi4yIGtlcm5lbHMuIFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZSBvZiBiaW9zMzIuaCBhbmQgcmVsaWFuY2Ugb24KK2RlZmluaXRpb24gb2YgdmlydF90b19idXMgaW4ga2VybmVsIGhlYWRlcnMgaW4gZWVwcm8xMDAuYywgZXBpYzEwMC5jCithbmQgbGFuY2UuYy4KKworKyBEYXZpZCBTaGFycCBjb250cmlidXRlZCBhIFR1bGlwIGRyaXZlciB3cml0dGVuIGZvciBGcmVlQlNEIG5ldGJvb3QuCitLZW4gWWFwIHBvcnRlZCB0byBFdGhlcmJvb3QuIE5vdCB0ZXN0ZWQgeWV0IGJlY2F1c2Ugbm8gaGFyZHdhcmUuCisKKysgUmVwbGFjZWQgcmVmZXJlbmNlcyB0byBhcnB0YWJsZVtBUlBfQ0xJRU5UXS5ub2RlIHRvIG5pYy0+bm9kZV9hZGRyIGluCitlZXBybzEwMC5jIGFuZCBlcGljMTAwLmMgYXMgdGhleSBzaG91bGQgYmUuCisKKysgR3JlZyBCZWVsZXkgb2YgTGlnaHRTeXMgVGVjaG5vbG9neSBTZXJ2aWNlcyBjb250cmlidXRlZCBhIDNjOTA1YgorZHJpdmVyLiBCZSBzdXJlIHRvIHJlYWQgdGhlIHJlbGVhc2Ugbm90ZXMgaW4gM2M5MDViLnR4dC4KKworKyBH/G50ZXIgS25hdWYgc3VnZ2VzdGVkIG1ha2luZyB0aGUgcHJvbXB0IHN0cmluZ3MgbW9yZSBnZW5lcmljIGFuZCB0bworcHV0IGEgbmV3bGluZSBhZnRlciB0aGUgYW5zd2VyLiBCZXdhcmUsIE4gbm93IG1lYW5zIE5ldHdvcmsgYm9vdCBhbmQKK25vdCBObyB0byBuZXR3b3JrIGJvb3QuCisKKysgQWxleCBOZW1pcm92c2t5IGNvbnRyaWJ1dGVkIHNvbWUgcGF0Y2hlcyBmb3IgQklPU2VzIHRoYXQgdXNlIGFuIGV4dGVuZGVkCitzcGFjZSBhdCB0aGUgdG9wIG9mIDY0MGsuIEFsc28gc29tZSBjb2RlIGZvciBCSU9TZXMgdGhhdCBkb24ndCBpbXBsZW1lbnQKK0JJT1MzMiBjb3JyZWN0bHkgb3IgYXQgYWxsLgorCisrIFVzZSBQQ0kgZXh0ZW5zaW9uIEJJT1MgaGVhZGVyIG9ubHkgZm9yIFBDSSBjYXJkcywgYWxsIG90aGVycyB1c2UgbGVnYWN5CitleHRlbnNpb24gQklPUyBoZWFkZXIuCisKKysgS2xhdXMgRXNwZW5sYXViIGNvbnRyaWJ1dGVkIHZhcmlvdXMgY2xlYW51cCBwYXRjaGVzIHRvIHRoZSBjb2RlLiAgQWxzbworaW50cm9kdWNlZCBSYWluZXIgQmF3aWRhbWFubidzIGNvZGUsIHNlZSBuZXh0IHBhcmFncmFwaC4KKworKyBSYWluZXIgQmF3aWRhbWFubiBjb250cmlidXRlZCBhIFJlYWx0ZWsgODEzOSBkcml2ZXIuCisKKysgU2ltcGxpZmllZCBydWxlcyBmb3IgYnVpbGRpbmcgLmJpbiBmaWxlcywgdXNlIC1iIG9mIGFzODYgc28gd2UKK2Rvbid0IG5lZWQgbGQ4NiBvciBvYmpkdW1wODYgbm93LiBCdXQgbGF0ZXIgZm91bmQgdGhhdCBhIGZpeGVkIGFzODYgaXMKK3JlcXVpcmVkLiBTbyBzdXBwbHkgcHJlYXNzZW1ibGVkIGJpbmFyaWVzLiBUaGUga2VlbiBoYWNrZXJzIGNhbiBnZXQgdGhlCitmaXhlZCB0b29scy4KKworKyBHZW9yZyBCYXVtIGNvbnRyaWJ1dGVkIGEgU2NobmVpZGVyICYgS29jaCBHMTYgZHJpdmVyLiBPbmx5IHRoZQorMzIgYml0IHZlcnNpb24gd29ya3MgYXQgdGhlIG1vbWVudDsgZXZlbiB0aG91Z2ggdGhlIDE2IGJpdCB2ZXJzaW9uCitjb21waWxlcywgaXQgd29uJ3Qgd29yayBiZWNhdXNlIHRoZSBjdXJyZW50IGNvZGUgYXNzdW1lcyBmbGF0IG1lbW9yeQorYWRkcmVzc2luZy4gQW55Ym9keSB3aG8gbmVlZHMgdGhlIDE2IGJpdCB2ZXJzaW9uIHNob3VsZCBmZWVsIGZyZWUgdG8KK2ZpeCBpdC4KKworKyBSZWR1Y2Ugc2l6ZSBvZiBST00gaW1hZ2UgbG9hZGVkIGJ5IGZsb3BweWJvb3QuYmluIGZyb20gNjRrQiB0byAzMmtCCitmb3IgYSBzbGlnaHQgc3BlZWR1cCBpbiBsb2FkaW5nLiBOb25lIG9mIHRoZSBpbWFnZXMgYXJlIGV2ZW4gMzJrQiBhbnl3YXkuCisKKysgVXBkYXRlZCBzb21lIG9mIHRoZSBkb2N1bWVudHMgaW4gZG9jL3NnbWwuCisKKysgS2xhdXMgRXNwZW5sYXViIHNlbnQgaW4gYSB0b3RhbGx5IHJldmFtcGVkIHN0YXJ0MzIuUywgdXNpbmcgdGhlIGNvZGUxNgorYW5kIGNvZGUzMiBkaXJlY3RpdmVzIGluIHJlY2VudCBHTlUgYXMgKHNvIGlmIHRoaXMgZmlsZSB3b24ndCBhc3NlbWJsZQorbWF5YmUgeW91ciBhcyB2ZXJzaW9uIGlzIG5vdCByZWNlbnQgZW5vdWdoKS4gQWxzbyBwYXRjaGVzIHRvIHRoZSBtZW51CitoYW5kbGluZyBjb2RlLgorCisrIGpsdWtlIEFUIGRlYWtpbiBQRVJJT0QgZWR1IFBFUklPRCBhdSBzZW50IGluIGEgZml4IGZvciB0aGUgV0QvU01DODAxMworbG9uZyBhZ28gd2hpY2ggSSBmaW5hbGx5IGdvdCBhcm91bmQgdG8gdmVyaWZ5aW5nLgorCisrIHN0YXJ0MTYubyBhbmQgc3RhcnQzMi5vIGFyZSBzdXBwbGllZCBmb3IgdGhvc2UgcGVvcGxlIHdobyBoYXZlIHByb2JsZW1zCitjb21waWxpbmcgc3RhcnQqLlMgd2l0aCBhcy9hczg2LgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QtNC4yLjAKKworKyBPbmUgbGluZSBmaXggdG8gM2M1MDliIGJ5IEdyZWcgQmVlbGV5IGZvciBXYWtlLU9uLUxBTiBzdXBwb3J0LgorCisrIEFkZGVkIHBhdGNoZXMgYnkgS2xhdXMgRXNwZW5sYXViIHRoYXQgSSBmb3Jnb3QuCisKKysgTWFkZSBBU19QU0VVRE9TIG5vdCB0aGUgZGVmYXVsdCwgYXNzdW1lIHRoYXQgcGVvcGxlIGhhdmUgc3VmZmljaWVudGx5Cit1cC10by1kYXRlIEdOVSBhcy4gSWYgbm90IHRoZXkgY2FuIHVuY29tbWVudCB0aGF0IGxpbmUuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdC00LjIuMQorCisrIERpc2FibGUgM2M1MDkgYWZ0ZXIgbG9hZGluZyBmaW5pc2hlZCBvciBwb3J0IG1heSBiZSB1bnVzYWJsZS4KKworKyBXb29wcywgZm9yZ290IHRvIHVwIHRoZSB2ZXJzaW9uJ3MgbGFzdCBkaWdpdCBpbiB0aGUgbGFzdCByZWxlYXNlLgorCisrIFN0ZXBoYW4gQmF1ZXIgc2VudCBpbiBhIGRldmljZSBJRCBmb3IgY29uZmlnLmMgZm9yIDIxMTQyIGNoaXAgVHVsaXBzLgorCisrIElmZGVmIG91dCBpbnB1dCBvdmVycnVuIHJlY292ZXJ5IGNvZGUgKGl0J3MgcmVhbGx5IG9ubHkgbmVlZGVkIGZvcgorTkUyMDAwcykgYW5kIHVzZSBTSE1FTSBieSBkZWZhdWx0IGZvciAzYzUwM3MgdG8gYnJpbmcgdGhlIFJPTSBzaXplIGRvd24KK2JlbG93IDhrQi4KKworKyBBZGRlZCBjb2RlIHRvIHN0YXJ0MzIuUyB0byBkZXRlY3QgPCAzODYgYW5kIGV4aXQgc28gaXQgZG9lc24ndCBoYW5nCit0aGUgY29tcHV0ZXIuIERvZXNuJ3QgcHJpbnQgYSBtZXNzYWdlIHlldC4KKworKyBDaGFuZ2VkIFJFQURNRS5zZ21sIHRvIHJlY29tbWVuZCB0aGF0IFRGVFAgdXNlIGEgc2VwYXJhdGUgZGlyZWN0b3J5Citmcm9tIE5GUywgL3RmdHBkaXIuIEFkZGVkIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIERIQ1BEIGFuZCBjYXZlYXQKK2Fib3V0IHRoZSBuYW1lIG9mIHRoZSByb290IGRpcmVjdG9yeSB3aGVuIHVzaW5nIERIQ1BELgorCisrIFJldmFtcGVkIGF0bmV0Ym9vdC5zZ21sOiB1c2UgbXRvb2xzIG1vc3Qgb2YgdGhlIHRpbWUsIHdyaXRlIGFib3V0IGEKK2ZldyBleGFtcGxlIGFwcGxpY2F0aW9ucy4KKworKyBRdWljayBQZXJsIHNjcmlwdCBmb3IgY29udmVydGluZyBib290cHRhYiB0byBkaGNwZC5jb25mLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QtNC4yLjIKKworKyBGb3Jnb3QgdG8gcHV0IG5ldyB2ZXJzaW9uIG9mIHNyYy9zdGFydDMyLm8uIE5vdCB1cmdlbnQgdGhvdWdoLCB0aGUKK2V4dHJhIGNvZGUgb25seSBndWFyZHMgYWdhaW5zdCBFdGhlcmJvb3QvMzIgYmVpbmcgZXhlY3V0ZWQgb24gPCAzODYuCisKKysgU3VwcGx5IHZlcnNpb24gcHJlYXNzZW1ibGVkIHN0YXJ0MzIubyB3aXRoIEFOU0lFU0MgYW5kIEZMT1BQWSBkZWZpbmVkCitmb3IgdGhvc2Ugd2l0aCBhIGRlZmljaWVudCBhcy4gRGVmaW5lIGR1bW15IGhhbmRsZWFuc2kgcm91dGluZSBpbgorYW5zaWVzYy5jIHNvIHRoYXQgaXQgd2lsbCBzdGlsbCBsaW5rIGV2ZW4gaWYgdGhpcyBzdGFydDMyLm8gaXMgdXNlZC4KKworKyBFZGl0ZWQgKi5hc20gc28gdGhhdCB0aGV5IGNhbiBiZSBhc3NlbWJsZWQgYnkgZWl0aGVyIGFzODYgKEVMS1MgdmVyc2lvbikKK29yIG5hc20uCisKKysgQ2hhbmdlZCBNYWtlZmlsZSBzbyB0aGF0IG9uZSBjYW4gY2hvb3NlIGJldHdlZW4gbm8gYXM4NiwgYXM4NiBvciBuYXNtLgorCisrIEFkZGVkIE1hcmsgQnVyYXppbidzIGNvbmRpdGlvbmFsIGNvZGUgZm9yIENvbXBleCBSTDIwMDAgUENJIE5JQy4KKworKyBJbmNyZWFzZSBkZWxheSBkdXJpbmcgcHJvYmUgcGhhc2UgdG8gMTBtcyBhcyAxbXMgaXMgdG9vIGxvdyBmb3Igc29tZQorM2M1MDkgYm9hcmRzLiAgRG9uYWxkIEJlY2tlcidzIExpbnV4IGRyaXZlciBoaW50cyB0aGF0ID4gMm1zIGlzIG5lZWRlZAordG8gYmUgc2FmZS4gQWxzbyBjYWxsIHQ1MDlfZGlzYWJsZSBpbiBjYXNlIGJvYXJkIHdhcyBhY3RpdmUuCisKKysgVXBkYXRlIFJFQURNRS5zZ21sIGRhdGUgYW5kIHZlcnNpb24uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjIuMy4KKworKyBydGw4MTM5LmM6IFJlZHVjZSB0aGUgbnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnMgdG8gcmVkdWNlIGZvb3RwcmludC4KK1JlbW92ZSBwb2xsaW5nIGxvb3AgaW4gKl9sb29wKCksIGNhbGxlciBhbHJlYWR5IGRvZXMgdGhlIGxvb3BpbmcuCisKKysgbWFpbi5jOiBGaXggY29kZSBpbmRlbnRhdGlvbiBpbiBib290cCgpLgorCisrIFNtYWxsIGNvcnJlY3Rpb25zIHRvIGRvY3VtZW50YXRpb24uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjIuNC4KKworKyBNYXR0aGlhcyBNZWl4bmVyIGZvdW5kIGEgbG9uZ3N0YW5kaW5nIGJ1ZyBpbiBydGw4MTM5LmMgd2hlcmUgaXQgd2FzCit0ZXN0aW5nIHRoZSB3cm9uZyBiaXQgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBwYWNrZXQgaW4gdGhlIGJ1ZmZlci4KKworKyBBZGRlZCBwYXJhZ3JhcGggdG8gZG9jdW1lbnRhdGlvbiBhYm91dCBjYXZlYXRzIGZvciBob3N0aW5nIE5GUyByb290CitvbiBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjIuNS4KKworKyBVcGRhdGVkIG1rbG5pbSBmb3IgUkg2LjAgd2hpY2ggdXNlcyBhIGRpZmZlcmVudCBmbG9wcHkgaW1hZ2UgYW5kCityZXF1aXJlcyAnbmV0d29yaycgdG8gYmUgYXBwZW5kZWQgdG8ga2VybmVsIHBhcmFtZXRlcnMuCisKKysgUmV2ZXJzZWQgc2Vuc2Ugb2YgI2lmZGVmIERIQ1BfU1VQUE9SVCB0byAjaWZuZGVmIE5PX0RIQ1BfU1VQUE9SVCBhbmQKK3NvIGZvcnRoLCBpLmUuIHRoZSBkZWZhdWx0IGlzIHdpdGggREhDUCBzdXBwb3J0LgorCisrIFN1Z2dlc3QgcmVkdWNpbmcgb3B0aW9ucyBmb3IgcnRsODEzOSBkcml2ZXIgdG8gbWluaW1pc2UgZm9vdHByaW50IGluCityZWxlYXNlIG5vdGVzLgorCisrIEppbSBNY1F1aWxsYW4gcHJvdmlkZWQgY2hhbmdlcyB0byBzdXBwb3J0IHRoZSBTTUMxMjExLCB3aGljaCB1c2VzIHRoZQorUlRMODEzOSBjaGlwLgorCisrIENoYW5nZWQgbHJldCBpbiBzdGFydDMyLlMgdG8gaW50ICQweDE5IHNvIHRoYXQgaXQgZG9lc24ndCBkZXBlbmQgb24KK3RoZSByZXR1cm4gbG9jYXRpb24gYmVpbmcgdGhlcmUuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjIuNgorCisrIFN1Y2NlZWRlZCBpbiBib290aW5nIEZyZWVET1Mgd2l0aCB0aGUga2VybmVsIGluIHRoZSB0YWdnZWQgaW1hZ2UgcmF0aGVyCit0aGFuIG9uIHRoZSByYW1kaXNrLCBpLmUuIHRoZSBib290IHByb2Nlc3MganVtcHMgZGlyZWN0bHkgdG8gdGhlIGtlcm5lbAoraW4gbWVtb3J5LiBUaGUgdXRpbGl0eSBpcyBta2ZyZWVkb3NuYmkgaW4gY29udHJpYi8uCisKKysgQWRkaXRpb25zIHRvIHRoZSBkb2N1bWVudGF0aW9uLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC4yLjcKKworKyBNYXR0IEhvcnRtYW4gcG9pbnRlZCBvdXQgdGhhdCB0aGUgQklPUyBjbG9jayB2YWx1ZSByZXR1cm5lZCBieSBJTlQxQUgKK3JvbGxzIG92ZXIgYXQgbWlkbmlnaHQsIGNhdXNpbmcgZGVsYXkgbG9vcHMgdGhhdCBjcm9zcyBtaWRuaWdodCB0bworZmFpbC4gRml4IHdhcyB0byBrZWVwIHRyYWNrIG9mIG1pZG5pZ2h0IGNyb3NzaW5ncyBpbiBjdXJydGlja3Mgc28gdGhhdAorY3VycnRpY2tzJyByZXR1cm4gdmFsdWUgaXMgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nLgorCisrIEFkZGVkIHBhcmFncmFwaCB0byBkb2N1bWVudGF0aW9uIGFib3V0IGVkaXRpbmcgUENJIHZlbmRvciBhbmQgZGV2aWNlCitJRHMgaW4gTWFrZWZpbGUgaWYgbmVlZGVkLgorCisrIE1lcmdlZCBpbiBGcmVlQlNEIHN1cHBvcnQgY29kZSBzdXBwbGllZCBieSBEb3VnIEFtYnJpc2tvLiBUaGFua3MhCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjIuOAorCisrIENsZWFuZWQgdXAgdGhlIEZyZWVCU0Qgc3VwcG9ydCBpbiBvc2xvYWRlci5jLiBTeW1ib2xzIHRvIHVzZSBpbiBDb25maWcKK2FyZSB0byBzZWxlY3QgaW1hZ2UgdHlwZSwgbm90IEZyZWVCU0Qgc3BlY2lmaWMgbm93LgorCisrIEFkZGVkIHNpbXBsZSBzaWduYXR1cmUgY2hlY2tpbmcgY29kZSBpbiBmbG9wcHlsb2FkLmFzbSBpbiBjYXNlIHNvbWVib2R5Citmb3JnZXRzIHRvIGFwcGVuZCBhIFJPTSBpbWFnZSBvciB0cmllcyB0byBsb2FkIGEgbm9uLVJPTSBpbWFnZS4KKworKyBNZXJnZWQgaW4gM2M5MHggYW5kIG11bHRpcGxlIFBDSSBidXMgc3VwcG9ydCBieSBTdGV2ZSBTbWl0aC4gVGhhbmtzIQorCisrIEluY2x1ZGVkIE5ULURpc2tsZXNzLVRlcm1pbmFsIEhPV1RPIGJ5IFBhdmVsIFRrYXRjaG91ay4KKworKyBJbmNsdWRlZCBzbmFwc2hvdCBvZiBILiBQZXRlciBBbnZpbidzIHJld3JpdGUgb2YgdGZ0cC4KKworKyBDb21iaW5lZCB0ZnRwIGFuZCB0ZnRwZCBkaXJlY3RvcmllcywgYW5kIHRvdWNoZWQgdXAgTWFrZWZpbGUgdG8gcmVmbGVjdAorbm9ybWFsIExpbnV4IGluc3RhbGwgZGlyZWN0b3JpZXMuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjIuOQorCisrIE5ULURpc2tsZXNzLVRlcm1pbmFsIEhPV1RPIHJlbmFtZWQgdG8gRGlza2xlc3MtRnJvbS1OVC4KKworKyBPbmUgbGluZSBmaXggdG8gbWtuYmktZG9zIHRvIHJlY29nbmlzZSBGQVQxNiBmaWxlc3lzdGVtcyBhcyBsZWdhbC4KK1VwZGF0ZWQgZmlyc3QuUyBpbiBta25iaS1kb3Mgc28gdGhhdCBpdCBjYW4gYmUgYXNzZW1ibGVkIGJ5IG5hc20gYW5kIGlzCithbHNvIHN1aXRhYmxlIGZvciBGcmVlRE9TIHdpdGggdGhlIHJpZ2h0IGRlZmluZS4gU3RpbGwgYmFja3dhcmQgY29tcGF0aWJsZQord2l0aCBhczg2LiBCdWcgZml4IGF0IGxpbmUgc3RhcnRpbmcgZ2V0bm0zOi4KKworKyBVcGRhdGVkIGZpcnN0LlMgaW4gbWtuYmktbGludXggc28gdGhhdCBpdCBjYW4gYmUgYXNzZW1ibGVkIGJ5IG5hc20gYWxzby4KKworKyBMb2NhdGUgYm9vdHAgZGF0YSBibG9jayBhdCAweDkzQzAwLTB4OTNGRkYgdG8gZnJlZSB1cCAxMDI0KyBieXRlcyBpbgorWzB4OTgwMDAtMHg5RkZGRl0uIEV0aGVyYm9vdC8zMiBvbmx5LCBidXNpbmVzcyBhcyB1c3VhbCBmb3IgRXRoZXJib290LzE2LgorCisrIFBhdGNoIGZyb20gQXR0aWxhIEJvZ+FyIHRvIG1ha2UgQ09OR0VTVEVEIGEgY29tcGlsZSBvcHRpb24gZm9yCitURlRQX1RJTUVPVVQuIEFsc28gY29ycmVjdGVkIHNwZWxsaW5nIG9mIGhpcyBuYW1lIGluIFJFQURNRS4KKworKyBGaXhlZCBzdGFydDMyLlMgdG8gYXNzZW1ibGUgY29ycmVjdGx5IHdpdGggZ2FzIHZlcnNpb24gMi45NS4gTXVzdAorZGVmaW5lIEdBUzI5NSBpbiBDRkxBR1MuCisKKysgQWRkIGNvbnRyaWIvM2M5MHh1dGlsIGNvbnRhaW5pbmcgYSB1dGlsaXR5IGZvciBoYW5kbGluZyAzYzkweCBFRVBST01zCitpbiBzaXR1LgorCisrIFVwZGF0ZSBwOTEwbmQgdG8gMC4zLiBjbGllbnQucGwgbm93IGNoZWNrcyBpZiBob3N0bmFtZSBpcyBrbm93biBhbmQKK3VzZXMgbW9yZSBjb252ZW5pZW50IHJvdXRpbmVzIGZyb20gU29ja2V0IG1vZHVsZS4KKworKyBNb3ZlZCB0aGUgRmxhc2hjYXJkIGRpcmVjdG9yeSBpbnRvIGEgc2VwYXJhdGUgcGFja2FnZSBhcyBpdCdzIG9mCitsaW1pdGVkIGludGVyZXN0LgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC4yLjEwCisKKysgRml4ZWQgYnVnIGludHJvZHVjZWQgaW4gNC4yLjEwIGluIGNvZGUgZm9yIGhhbmRsaW5nIGJvb3RwIGV4dGVuc2lvbgorZmlsZXMuCisKKysgQ2hhbmdlIGluIDNjOTB4LmMgc28gdGhhdCBpdCBjYW4gY29tcGlsZSB1bmRlciBGcmVlQlNELgorCisrIFBhdGNoIHRvIHR1bGlwLmMgZnJvbSBOaWNrIExvcGV6IHRvIGhhbmRsZSBNYWNyb25peCA5ODcxNSAoVHVsaXAgY2xvbmUpLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC4yLjExCisKKysgUHJlZmVyIFJGQzE1MzNfR0FURVdBWSB0byBnaWFkZHIgZm9yIHJvdXRpbmcgdGZ0cCBwYWNrZXRzLgorCisrIFByaW50IG91dCBib3RoIHJlbGF5IGFkZHJlc3MgYW5kIGdhdGV3YXkgYWRkcmVzcy4KKworKyBTdG9yZWQgYXJwdGFibGUgaXBhZGRycyBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuIE1ha2VzIGV2ZXJ5dGhpbmcgc2ltcGxlcgorYW5kIHdlIGNhbiBnZXQgcmlkIG9mIGNvbnZlcnRfaXBhZGRyLiBOb3cgJUkgaW4gcHJpbnRmIGFuZCBpbmV0X250b2EKK2hhdmUgdG8gZGVhbCB3aXRoIE5CTy4gV2UgcmVkdWNlIHRoZSBmb290cHJpbnQgYnkgfjEwMCBieXRlcy4KKworKyBSZW5hbWVkIHNldGlwIHRvIG1vcmUgc3RhbmRhcmQgaW5ldF9udG9hIGFuZCBjaGFuZ2UgYXJndW1lbnQgdHlwZSB0bworc3VpdCwgdXNpbmcgaW5fYWRkci4KKworKyBSZXBsYWNlZCBiY21wIGJ5IG1lbWNtcCwgYnplcm8gYnkgbWVtc2V0LCBhbmQgYmNvcHkgYnkgbWVtY3B5LiBBbGxvd3MKK3VzIHRvIHVzZSBvcHRpbWlzZWQgdmVyc2lvbnMgaW4gaW5saW5lIGFzc2VtYmxlci4KKworKyBSZXBsYWNlZCBPVVRCIGFuZCBPVVRXIGJ5IG91dGIgYW5kIG91dHcgd2l0aCBhcmd1bWVudHMgcmV2ZXJzZWQuCitGaW5hbGx5IGFsbCB0aGUgb3V0IG1hY3JvcyBhcmUgdGhlIHNhbWUgZm9ybSBhcyBmb3IgTGludXguCisKKysgUmVwbGFjZWQgXHJcbiBhbmQgXG5cciBpbiBvdXRwdXQgc3RyaW5ncyB3aXRoIFxuIHNpbmNlIHB1dGNoYXIKK25vdyBwcmludHMgXHIgYmVmb3JlIFxuLiBUaGVuIGNoYW5nZWQgcHJpbnRmKCJcbiIpIHRvIHB1dGNoYXIoJ1xuJykuCitMaWtlIFVuaXggY29udmVudGlvbiBmb3Igc3RyaW5ncyBub3cuCisKKysgR290IHJpZCBvZiB0ZXN0LmMgYW5kIE1ha2VmaWxlIHJ1bGVzIGNvbm5lY3RlZCB3aXRoIGl0LgorCisrIEFkZGVkIHBhdGNoIHRvIGVlcHJvMTAwLmMgYnkgTWF0dCBIb3J0bWFuIHRvIGNvcnJlY3QgUENJIGxhdGVuY3kuCisKKysgTWVyZ2VkIGluIE1hcnR5IENvbm5vcidzIG50dWxpcC5jLiBOb3cgc3VwcG9ydHMgTWFjcm9uaXggOTg3MTUgYW5kCitMaW5rc3lzIExORTEwMFRYLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC4yLjEyCisKKysgQW5kZXJzIExhcnNlbiBjb250cmlidXRlZCBta1FOWG5iaSwgZm9yIGdlbmVyYXRpbmcgdGFnZ2VkIGltYWdlcyBmcm9tCitRTlgga2VybmVscy4KKworKyBCZXJuZCBXaWViZWx0IGNvbnRyaWJ1dGVkIGNvZGUgdG8gcmVxdWVzdCB2ZW5kb3IgdGFncyBpbiBESENQLgorCisrIEZpeGVkIG1vcmUgYnVncyBpbnRyb2R1Y2VkIGluIDQuMi4xMCBpbiBjb2RlIGZvciBoYW5kbGluZyBib290cAorZXh0ZW5zaW9uIGZpbGVzLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC4yLjEzCisKKysgTWFydHkgQ29ubm9yIHJlZHVjZWQgUlRMODEzOSBmb290cHJpbnQgYnkgdXNpbmcgb25seSBvbmUgdHJhbnNtaXQKK2J1ZmZlciBpbnN0ZWFkIG9mIDQuIE5vdyBSVEw4MTM5IGlzIHJlbGlhYmxlLgorCisrIE1vdmVkIGluaXRpYWxpc2VkIGRhdGEgZGVjbGFyYXRpb24gZnJvbSBuczgzOTAuaCB0byBuczgzOTAuYy4KKworKyBDb250cmlidXRlZCB1dGlsaXRpZXMgZm9yIHdha2Utb24tTEFOOiB3b2wuYyAoQm9iIEVkd2FyZHMpIGFuZCB3YWtlLnBsLgorCisrIE1ha2VmaWxlIGZvciAzYzkweHV0aWwvcm9tdXRpbC5jLiAtTyBpcyBlc3NlbnRpYWwgd2hlbiBjb21waWxpbmcuCisKKysgSGFwcHkgeWVhciAyMDAwIQorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC40LjAKKworKyBWSUEtUmhpbmUgZHJpdmVyIGNvbnRyaWJ1dGVkIGJ5IFBhb2xvIE1hcmluaS4gRm9vdHByaW50IHJlZHVjZWQgYnkKK01hcnR5IENvbm5vci4KKworKyBOZXRnZWFyIEZBMzEwVFggKFR1bGlwIGNsb25lLCBMQzgyQzE2OCBjaGlwKSBzdXBwb3J0IGFkZGVkIGJ5IE1hcnR5CitDb25ub3IuCisKKysgU3VwcG9ydCBmb3IgM0M5MDVDIGFkZGVkIGJ5IE1hcnR5IENvbm5vci4KKworKyBta2xuaW0gdXBkYXRlZCB0byBzdXBwb3J0IFN1U0UgNi54IGFsc28uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjQuMQorCisrIE5ldyBjb25maWd1cmF0aW9uIGZpbGUgc2NoZW1lIHRvIHNwZWNpZnkgd2hhdCBST01zIGFyZSBidWlsdC4KKworKyBBZGFtIEZyaXR6bGVyIGNvbnRyaWJ1dGVkIDNjNTI5IChNQ0EgdmVyc2lvbiBvZiAzYzUwOSkgc3VwcG9ydCBpbgorZHJpdmVyLgorCisrIE1hcnR5IENvbm5vciB3cm90ZSBhIHZlcnNpb24gb2YgM2M5MHh1dGlsL3JvbXV0aWwgZm9yIDkwNUMgTklDcy4KKworKyBH/G50ZXIgS25hdWYgY29udHJpYnV0ZWQgYSB3YWtlIG9uIExBTiBDR0kgc2NyaXB0LgorCisrIE5vdGVzIGluIGNvbnRyaWIvZWVwcm8xMDBub3RlcyBvbiBob3cgdG8gZmxhc2ggdGhlIEVFUFJPTS4KKworKyBIYXBweSBBdXN0cmFsaWEgRGF5LCAyMDAwLTAxLTI2LgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC40LjIKKworKyBod2lsbWVyIEFUIGdteCBQRVJJT0QgZGUgZm91bmQgYSBwcm9iZSBlcnJvciBpbiAzYzUwNy5jLCBzaG91bGRuJ3QKK21hc2sgbWVtb3J5IHNpemUgd2l0aCAweGZmZmZMLCB0aGlzIGZhaWxzIHdpdGggNjRrQiBtZW1vcnkuICBBbHNvCitjaGFuZ2VkIHRvIHVzZSByZWFsLXRpbWUtY2xvY2sgdG8gdGltZW91dCBvbiBpbml0aWFsaXNhdGlvbiBvZiBpODI1ODYKK3JhdGhlciB0aGFuIHJlbHlpbmcgb24gZGVjcmVtZW50aW5nIGEgdmFyaWFibGUgKHdoaWNoIGlzIENQVSBzcGVlZAorZGVwZW5kZW50KS4KKworKyBKYW1lcyBQZWFyc29uIHBvaW50ZWQgb3V0IHRoYXQgfiBzaG91bGQgYmUgZXNjYXBlZCBhcyAmdGlsZGU7IGluCit2ZW5kb3J0YWdzLnNnbWwuIEFsc28gY2xlYW5lZCB1cCB0aGUgOC1iaXQgY2hhcmFjdGVycyB3aGlsZSBJIHdhcyBhdCBpdC4KKworKyBH/G50ZXIgS25hdWYgcG9pbnRlZCBvdXQgdGhhdCBpZiBBU0tfQk9PVCBpcyBkZWZpbmVkLCB0aGVuIGtleSBpbnB1dAorZWNob3MgdHdpY2UuIEFsc28sIENSIGRvZXNuJ3Qgc2VsZWN0IHRoZSBkZWZhdWx0LiBQcm9ibGVtIHdhcyB0aGF0IGdldGNoYXIKK2NvbnZlcnRzIGFsbCBcciB0byBcbiB0aGVuIG1haW4uYyB3YXMgdGVzdGluZyBhZ2FpbnN0IFxyIGluc3RlYWQgb2YgXG4sCithbmQgYWxzbyB0aGF0IGdldGNoYXIoKSB3YXMgZWNob2luZyB3aGVuIGl0IHNob3VsZCBsZWF2ZSBpdCB0byB0aGUgY2FsbGVyLgorRGVsZXRlZCBjb2RlIGZyb20gZ2V0Y2hhcigpIGFuZCBtYWRlIGl0IGEgZnVuY3Rpb24gd2l0aCBubyBhcmd1bWVudHMuCitBbHNvIHNlbnQgbWUgYSBuZXcgdmVyc2lvbiBvZiBtcC1mb3JtLnBsIHdpdGggbXAtZm9ybS50eHQuIEFsc28gc3VnZ2VzdGVkCit0aGUgZ29vZCBpZGVhIHRoYXQgdGhlIGdhdGV3YXkgYW5kIHJlbGF5IGZpZWxkcyBub3QgYmUgZGlzcGxheWVkIGlmIHRoZXkKK2FyZSBub3QgdXNlZC4KKworKyBCb2IgRWR3YXJkcyBzZW50IGluIHBhdGNoZXMgdG8gbnR1bGlwLmMgdG8gYXV0b2RldGVjdCAxMDAgTWIgbWVkaWEKK2ZvciAyMTE0Mi8zIE5JQ3MuCisKKysgT2t1amkgWW9zaGlub3JpIGZvdW5kIGEgc21hbGwgYnVnIGluIG1haW4uYzogZm9yIChyZXRyeTEgPSAwOyByZXRyeSA8IC4uCitEb24ndCBrbm93IHdoYXQgZWZmZWN0IGl0IGhhZC4KKworKyBLbGF1cyBFc3BlbmxhdWIgc2VudCBwYXRjaGVzIHdoaWNoIG1ha2UgdGhlIFJUTDgxMzkgZHJpdmVyIG1vcmUKK3JlbGlhYmxlLCBzZWUgbm90ZXMgaW4gcnRsODEzOS5jLgorCisrIFJ1c3MgTmVsc29uIGdhdmUgcGVybWlzc2lvbiB0byByZWxlYXNlIGNzODl4MCBkcml2ZXIgd2l0aCBFdGhlcmJvb3QuCitJdCdzIG5vcm1hbGx5IHVuZGVyIEdQTC4gTW92ZWQgY3M4OXgwIGRyaXZlciB0byBzcmMgZGlyZWN0b3J5LCByZW1vdmVkCitjczg5eDAuc2dtbC4KKworKyBDbGFyaWZpZWQgY29weXJpZ2h0cyBvZiBmaWxlcyBpbiBkaXN0cmlidXRpb24uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjQuMworCisrIEtsYXVzIEVzcGVubGF1YiBzZW50IGluIHNvbWUgcGF0Y2hlcyB0byBvdmVyY29tZSB0aGUgNjRLIGJsb2NrIHJvbGxvdmVyCitwcm9ibGVtIGluIHRmdHAuCisKKysgQm9iIEVkd2FyZHMsIFBhdWwgTWFja2VycmFzIGFuZCBNYXJ0eSBDb25ub3Igd29ya2VkIG91dCBmaXhlcyB0bworbnR1bGlwLmMgdG8gaGFuZGxlIDIxMTQyLzMgVHVsaXBzIHByb3Blcmx5LgorCisrIEthcnN0ZW4gVGlubmVmZWxkIHNlbnQgaW4gYSBNYWtlZmlsZSBmcmFnbWVudCBmb3IgZG9jL3NnbWwvTWFrZWZpbGUKK3RvIGdlbmVyYXRlIERWSSBhbmQgUFMgZmlsZXMgdXNpbmcgc2dtbDJsYXRleC4KKworKyB0dWxpcC4qIHJlbmFtZWQgdG8gb3R1bGlwLiosIG50dWxpcC4qIHJlbmFtZWQgdG8gdHVsaXAuKgorCisrIEFkZGVkIEZBUSBhbmQgV3JpdGluZyBhbiBFdGhlcmJvb3QgRHJpdmVyIHNlY3Rpb25zIHRvIFJFQURNRS4KKworKyBXb29wcywgaWYgYW5kIG9mIHN3YXBwZWQgaW4gZGQgY29tbWFuZCBpbiBhdG5ldGJvb3Quc2dtbC4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNC40CisKKysgRlVLVUhBUkEgTWFrb3RvIHN1cHBsaWVkIGEgcGF0Y2ggZm9yIDQuNC40IGZvciBGcmVlQlNEIEVMRiBib290aW5nCit3aXRoIGxhcmdlIHRmdHAgYmxvY2tzIHdoaWNoIEkgbWlzc2VkIHB1dHRpbmcgaW4uCisKKysgU21hbGwgcGF0Y2ggYnkgTWFydHkgQ29ubm9yIHRvIHR1bGlwLmMgdG8gaGFuZGxlIGZhc3QgVHVsaXBzIGJldHRlci4KKworKyBXcm90ZSBzbWFsbCBsb2FkZXIgdG8gbG9hZCBpbWFnZXMgZnJvbSAuY29tIGZpbGVzLgorCisrIFNodXN1a2UgTmlzaXlhbWEgY29udHJpYnV0ZWQgYSAzYzU5NSAoYW5kIG1heSB3b3JrIGZvciAzYzU5MCkgZHJpdmVyLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC40LjUKKworQSBtYWpvciByZW9yZ2FuaXNhdGlvbiBieSBLbGF1cyBFc3BlbmxhdWIuIEhlcmUgYXJlIGhpcyBub3RlcywgdmVyYmF0aW06CisKK1RoZSBiaWdnZXN0IGNoYW5nZSBpcyB0aGUgYWxtb3N0IHJld3JpdHRlbiBNYWtlZmlsZXMgKGJvdGggaW4gc3JjIGFuZCBpbgorZG9jIC0gdGhlIG9uZSBpbiBkb2MgaXMgc3RpbGwgcmVhc29uYWJseSBzaW1wbGUpLiAgSWYgeW91IHdhbnQgdG8gZ2V0CithbiBvdmVydmlldyAtIGJhc2ljYWxseSBvbmUgTWFrZWZpbGUgbm93IGJ1aWxkcyBib3RoIC8xNiBhbmQgLzMyIFJPTXMuCitUaGlzIGludm9sdmVzIHF1aXRlIGEgZmV3IG1ha2UgdmFyaWFibGVzIChzaW1pbGFybHkgaW4gQ29uZmlnKSwgYnV0IGl0CitzaG91bGQgYmUgbW9zdGx5IHNlbGYtZXhwbGFpbmluZy4gIEkgYWxzbyBjb252ZXJ0ZWQgdGhlIHN1ZmZpeCBydWxlcyB0bworcGF0dGVybiBydWxlcywgYmVjYXVzZSBpdCBpcyB0aGUgb25seSB3YXkgdG8ga2VlcCB0aGUgYnVpbGQgZGlyZWN0b3JpZXMKK2ZvciAvMTYgYW5kIC8zMiBhcGFydC4KKworR2VuZXJhbGx5IGFsbCAvMzIgY29kZSBpcyBjb21waWxlZCBpbiBiaW4zMiwgYWxsIC8xNiBjb2RlIGlzIGNvbXBpbGVkCitpbiBiaW4xNiwgYW5kIHRoZSBjb2RlIHRoYXQgd29ya3MgZm9yIGJvdGggaXMgaW4gYmluLgorCitUaGUgbmFtZXMgKG9iamVjdCBmaWxlcywgaW1hZ2VzLCBidXQgTk9UIHRoZSBmaW5hbCBST01zKSB1c2VkIGR1cmluZwordGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHNvbWUgUENJIGNhcmRzIGhhdmUgY2hhbmdlZCAoZXNwZWNpYWxseSBsYW5jZXBjaQorYW5kIG5lcGNpKS4KKworSSBlbGltaW5hdGVkIHRoZSBkcml2ZXIuYSBmaWxlIGJ5IGFkZGluZyB5ZXQgbW9yZSB1Z2x5IGNvZGUgdG8gZ2VucnVsZXMucGwKKyhubywgSSdtIG5vdCB2ZXJ5IHByb3VkIG9mIHRoZSBjb2RlIEkgYWRkZWQgdGhlcmUgLSBJIGhhdGUgcGVybCwgYnV0CithdCBsZWFzdCBpdCB3b3JrcyksIHdoaWNoIG5vdyBnZW5lcmF0ZXMgYWxsIHNvcnRzIG9mIG1ha2UgcnVsZXMgYW5kCitkZXBlbmRlbmN5IGluZm9ybWF0aW9uLiAgVGhpcyBlbGltaW5hdGVzIHRoZSByZWR1bmRhbnQgcmVjb21waWxlIG9mIGFsbAorb3RoZXIgZHJpdmVycyBpZiB5b3Ugc3BlY2lmaWVkIGEgc3BlY2lmaWMgdGFyZ2V0IGF0IHRoZSBtYWtlIGNvbW1hbmQgbGluZS4KKworVGhlcmUgYXJlIG5vdyBhdXRvbWF0aWMgY2hlY2tzIGZvciB0aGUgZ2VuZXJhdGVkIFJPTSBzaXplICgzSyBzYWZldHkKK21hcmdpbiBhcmUgdXNlZCB0byBhbGxvdyBmb3IgMUsgQklPUyBFQkRBIGFuZCAySyBzdGFjaykuICBUaGlzIHNob3VsZAorYXZvaWQgbW9zdCBvZiB0aGUgY2FzZXMgaW4gd2hpY2ggdGhlIHN0YWNrIG92ZXJ3cml0ZXMgY29kZSBhbmQvb3IgZGF0YSwKK2NhdXNpbmcgc3RyYW5nZSBjcmFzaGVzLgorCitPbiB0byB0aGUgcmVhbCBjb2RlIC0gSSByZXdyb3RlIGJvdGggdGhlIEVMRiBhbmQgYS5vdXQgbG9hZGluZyAodGhlCitibG9ja3NpemUgaXMgbm93IHByb3Blcmx5IGhhbmRsZWQgZm9yIGFsbCBmb3JtYXRzKSwgYW5kIG5vdyBtb3N0IG9mIHRoZQorY29kZSBpcyBpZGVudGljYWwuICBTb21lb25lIG1pZ2h0IHdhbnQgdG8gbWVyZ2UgdGhlIHR3by4gIEkgdmVyaWZpZWQgdGhhdAorYm90aCBhLm91dCBhbmQgRUxGIEZyZWVCU0QgbG9hZGluZyBzdGlsbCB3b3JrcyBieSBib290aW5nIHRoZSBGcmVlQlNECisyLjIuOCBhbmQgMy40IGluc3RhbGwga2VybmVscyAodGhlIEVMRiBrZXJuZWwgeW91IGdhdmUgbWUgZGlkbid0IHdvcmsKK2ZvciB3aGF0ZXZlciByZWFzb24pLiAgQWN0dWFsbHkgSSB0ZXN0ZWQgZXZlcnl0aGluZyBleGNlcHQgTkJJLCBidXQgdGhhdAorY29kZSBpcyBjb21wbGV0ZWx5IHVuY2hhbmdlZC4KKworSSBlbGltaW5hdGVkIGNvbmZpZy5oIGFuZCBjcmVhdGVkIGNhcmRzLmggLSBqdXN0IGhhdmUgYSBsb29rIGFuZCB5b3UKK3Nob3VsZCBnZXQgdGhlIGlkZWEuICBUaGUgUENJL0lTQSBwcm90b3R5cGUgbWF0Y2hpbmcgaGFjayBpcyBub3cgYnVyaWVkCitpbiB0aGVyZS4gIEFsbCBQQ0kgZHJpdmVycyAoYW5kIHNrZWwuYykgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byB0aGUgbmV3CitpbmNsdWRlIGZpbGUuCisKK1RoZSBvbmx5IGZpbGUgdGhhdCBpcyByZWFsbHkgbmV3IGlzIG5mcy5jLCB3aGljaCBjb250YWlucyB0aGUgY29kZSB3aGVyZQorSSBzdGFydGVkIG15IGpvdXJuZXkuCisKK1RoZSBsb2FkZXIgY29kZSBpcyBub3cgbWVyZ2VkIGludG8gb25lIGZpbGUgZm9yIGJvdGggdGhlIG5vcm1hbCBhbmQKK2NvbXByZXNzZWQgY2FzZS4gIFNvbWUgYnVncyBoYXZlIGJlZW4gZml4ZWQgYWxvbmcgdGhlIHdheSAodGhlIG5vcm1hbAorbG9hZGVyIGNvcGllZCB0b28gbXVjaCBkYXRhLCBwb3RlbnRpYWxseSBjcmFzaGluZyB0aGUgbWFjaGluZSkuICBCVFc6IEkKK3JlbW92ZWQgdGhlIGJsb2NrIGNvcHkgZnJvbSBjb21ib290LCBiZWNhdXNlIHRoZSBmaXJzdCB0aGluZyB0aGUgbG9hZGVyCitjb2RlIGRvZXMgaXMgLSB0byBjb3B5IHRoZSBjb2RlIHRvIHRoZSByaWdodCBwbGFjZS4gIEFsc28gY29weWluZyBpdCB0bworMHg4MDAwMCBwcmV2ZW50cyBjb21wcmVzc2VkIFJPTXMgKHRob3VnaCB0aGVyZSBpcyBubyB3YXkgaW4gdGhlIE1ha2VmaWxlCit0byBjcmVhdGUgc3VjaCBhIGJlYXN0KS4gIEFsc28gdGhlIHN0YWNrIGNoYW5naW5nIGNvZGUgd2FzIHdyb25nIC0KK3RoZSBvdmVyZmxvdyBoYW5kbGluZyBpcyBtaXNzaW5nOiAweDlmeHh4eC0weDgwMDAwMCBpcyB0cnVuY2F0ZWQgdG8KK2ZpdCBpbiB0aGUgMTYgYml0IHJlZ2lzdGVyLCB3aGljaCBpcyBub3QgcXVpdGUgd2hhdCBvbmUgd291bGQgZXhwZWN0LgorVGhlIHN0YWNrIHBvaW50ZXIgbXVzdCBiZSBpbiB0aGUgc2FtZSBzZWdtZW50LCBzbyBmb3Igb3ZlcmZsb3dzIGp1c3QKK2xvYWQgMC4gIEFueXdheSwgd2UgZG9uJ3QgbmVlZCBhIG5ldyBzdGFjayBmb3IgNCBieXRlcyAodGhlIHJldHVybgorYWRkcmVzcykuICBBbHNvIHRoZSBzaGlmdHMgd29uJ3Qgd29yayBvbiBhbiA4MDg2LzgwODguICBUaGUgUk9NIHNlZ21lbnQKK2FuZCBsZW5ndGggY29kZSBpcyBhbHNvIGRvbmUgb25jZSBtb3JlIGluIGxvYWRlci5TLiAgRmluYWxseSB0aGUgb3JnCisweDEwMCBkaWRuJ3Qgd29yayB3aXRoIG15IHZlcnNpb24gb2YgYXM4NiAtIGl0IHByZXBlbmRlZCAyNTYgbnVsbCBieXRlcy4KK0Rvbid0IGdldCBtZSB3cm9uZyAtIEkgc2VlIHRoYXQgY29tYm9vdCB3YXMganVzdCBhIHF1aWNrIGFuZCBkaXJ0eSBoYWNrLgorSXQncyBub3cgd29ya2luZy4uLgorCitJIGFsc28gZml4ZWQgZmxvcHB5bG9hZCB0byByZWFkIGV4YWN0bHkgdGhlIHJpZ2h0IGFtb3VudCBvZiBkYXRhIChub3QKK3VwIHRvIDY1NTIwIGJ5dGVzIG1vcmUgbGlrZSB0aGUgTGludXggY29kZSBkaWQpIGFuZCByaXBwZWQgb3V0IHNvbWUKK3VudXNlZCBjb2RlLgorCiszYzUwOS5jOiBpbmNsdWRlcyBmaXhlZCwgY29uc3QgYWRkZWQsIHN0YXRpYyBhZGRlZCwgcmVtb3ZlZCByZWR1bmRhbnQgY29kZQorCiszYzkweC5jOiBpbmNsdWRlcyBmaXhlZCwgY29uc3QgYWRkZWQsIHNob3J0ZW5lZCBtZXNzYWdlcyB0byBzYXZlIHNwYWNlLAorbWFkZSB0aGUgdHJhbnNjZWl2ZXIgc2VsZWN0aW9uIGJvb3Ryb20gZml4IG9wdGlvbmFsIChkZWZhdWx0OiBvZmYpLAordXBkYXRlZCAzYzkweC50eHQKKworYW5zaWVzYy5jOiBkZS10ZnRwaWZpZWQgKG5vdyB1c2VzICJkb3dubG9hZCIpCisKK2NvbmZpZy5jOiBtb3ZlZCB0aGUgZHJpdmVyIHByb3RvdHlwZXMgdG8gc2VwYXJhdGUgZmlsZSwgYWRkZWQgYSBmZXcgY29uc3QKKworY3M4OXgwLmM6IGFuc2lmaWVkLCBjb25zdCBhZGRlZCwgZml4ZWQgdGltZW91dCBoYW5kbGluZworCitlZXBybzEwMC5jOiBpbmNsdWRlcyBmaXhlZCwgY29uc3QgYWRkZWQsIHN0YXRpYyBhZGRlZCwgVVNFX0lOVEVSTkFMX0JVRkZFUgoraGFjaywgcGFzc2luZyBnbG9iYWxzIGFzIGEgcGFyYW1ldGVyIHJlbW92ZWQsIHRpbWVvdXQgaGFuZGxpbmcgZml4ZWQsCitjb21tZW50cyBmaXhlZAorCitlcGljMTAwLmM6IGNvbW1lbnRzIGZpeGVkLCBjb25zdCBhZGRlZCwgc3RhdGljIGFkZGVkLCBVU0VfSU5URVJOQUxfQlVGRkVSCitoYWNrLCByZW1vdmVkIHVudXNlZCB2YXJpYWJsZXMsIGNoYW5nZWQgZGVidWcgY29kZSB0byB1c2UgbWFjcm8gaW5zdGVhZAorb2YgdmFyaWFibGUsIGFsbG93IGJyb2FkY2FzdHMgdG8gYmUgcmVjZWl2ZWQgKGFmdGVyIGFsbCBob3cgZGlkIGl0Cit3b3JrIGJlZm9yZT8/PykKKworZXRoZXJib290Lmg6IGR1YWwvc2VyaWFsIGNvbnNvbGUgImNsZWFudXBzIiwgYWRkZWQgTkZTIHN1cHBvcnQsIGZpeGVkCitJTlRFUk5BTF9CT09UUF9EQVRBIGZvciBwYXRob2xvZ2ljIGNhc2VzLCByZW1vdmVkIHByb3RvdHlwZSB3aXRoaW4gY29tbWVudAorKGhvdyBkaWQgdGhhdCBlbmQgdXAgdGhlcmU/KSwgbW92ZWQgcHJvdG90eXBlcyBmb3IgY29uZmlnLmMgY29kZSBoZXJlLAorYWRkZWQgY29uc3RzIGFsbCBvdmVyIHRoZSBwbGFjZQorCitmbG9wcHkuYzogYWRkZWQgc3RhdGljLCBjaGFuZ2VkIGNsZWFudXAgY29kZQorCitmbG9wcHlsb2FkLlM6IHJlbmFtZWQgZnJvbSAuYXNtCisKK2dlbnJ1bGVzLnBsOiBJIGRpZG4ndCB3cml0ZSB0aGlzIDopCisKK2k4MjU4Ni5jOiBmaXhlZCBpbmNsdWRlcywgYWRkZWQgY29uc3QKKworbGFuY2UuYzogZml4ZWQgRE1BIGZvciBQQ0kgY2FyZHMsIHJlbW92ZWQgbGVmdG92ZXJzIGZyb20gTGludXggZHJpdmVyLAorVVNFX0lOVEVSTkFMX0JVRkZFUiBoYWNrCisKK2xpbnV4LWFzbS1pby5oOiBhZGRlZCBwcm90b3R5cGVzCisKK2xpbnV4LWFzbS1zdHJpbmcuaDogYWRkZWQgcHJvdG90eXBlcworCitsb2FkZXIuUzogcmVuYW1lZCBmcm9tIGxvYWRlci5hc20sIG1vcmUgY29tbWVudHMgc2VlIGVsc2V3aGVyZSBpbgordGhpcyBtYWlsCisKK2xvYWRlci5pbmM6IHJlbW92ZWQKKworbWFpbi5jOiBpbmNsdWRlcyBmaXhlZCwgc3RhdGljIGFuZCBjb25zdCBhZGRlZCwgRXRoZXJib290LzMyIG5vdyBwcmludHMKK3JlbG9jYWRkciwgaG9va3MgZm9yIE5GUyBzdXBwb3J0LCBkcmFpbiB0aGUgUnggcXVldWUgaW4gc29tZSBzdHJhdGVnaWMKK3BsYWNlcyAoYWZ0ZXIgc2xlZXApLCBjaGFuZ2VkIGludGVyZmFjZSB0byBhd2FpdF9yZXBseTogdGltZW91dCBoYW5kbGluZywKK25ldyBjbGVhbnVwIGNvZGUKKworbWlzYy5jOiBhbnNpZmllZCwgdHdpZGRsZSBjb2RlIGNoYW5nZWQsIHN0cmNhc2VjbXAgZW5hYmxlZCBmb3IKK0V0aGVyYm9vdC8xNiAoc21hbGxlciB0aGFuIHRoZSAxNiBiaXQgbGliYyB2ZXJzaW9uKSwgY2xlYXIgQTIwIGJlZm9yZQora2VybmVsIGlzIHN0YXJ0ZWQgKG9ubHkgZm9yIE5CSSksIGR1YWwgY29uc29sZSBmaXhlcywgcmVtb3ZlZCBib2d1cworY29tbWVudCBhYm91dCBpbnRlcnJ1cHQgZW5hYmxpbmcgdXNpbmcgaXNrZXkoKQorCituaWMuaDogaW5jbHVkZSBndWFyZCBhZGRlZCwgYWRkZWQgY29uc3QKKworbnM4MzkwLmM6IGZpeGVkIGluY2x1ZGVzIGZvciBQQ0kgdmVyc2lvbiwgYWRkZWQgY29uc3QsIGFuc2lmaWVkLCByZW5hbWVkCitpbnRlcm5hbCBmdW5jdGlvbnMKKworb3NkZXAuaDogcmVtb3ZlZCAjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPiAtIHByb2JhYmx5IGFsbCAjaWZkZWYKK19fbGludXhfXyBhbmQgX19GcmVlQlNEX18gbWF5IGJlIHJlbW92ZWQgbm93LgorCitvc2xvYWRlci5jOiBzZWUgZWxzZXdoZXJlIGluIHRoaXMgbWFpbC4gcmVtb3ZlZCBsb2FkcyBvZiBkZWJ1Z2dpbmcgY29kZS4KKworb3R1bGlwLmM6IHJlbW92ZWQgdW51c2VkIHZhcmlhYmxlcywgVVNFX0lOVEVSTkFMX0JVRkZFUiBoYWNrLCBhbnNpZmllZCwKK2FkZGVkIGNvbnN0CisKK290dWx0aXAuaDogYWRkZWQgY29uc3QKKworcGNpLmM6IGZpeGVkIHNpZ25lZCBjb21wYXJpc29uCisKK3BjaS5oOiBpbmNsdWRlIGd1YXJkIGFkZGVkLCBjb25zdCBhZGRlZAorCitydGw4MTM5LmM6IHN0YXRpYyBhZGRlZCwgY29uc3QgYWRkZWQsIGdsb2JhbHMgYXJlIG5vIGxvbmdlciBwYXNzZXMgYXMKK3BhcmFtZXRlcnMsIGZpeGVkIHByb2JlIGxvb3AKKworc2VyaWFsLlM6IHJlbW92ZWQgdGhlIE1ha2VmaWxlIGhhY2sgdG8gY2FsY3VsYXRlIHRoZSBkaXZpc29yIGFuZCByZXBsYWNlCitpdCBieSBhIENQUCBoYWNrCisKK3NrX2cxNi5jOiBhZGRlZCBzdGF0aWMvY29uc3QKKworc2tlbC5jOiB1cGRhdGVkCisKK3NtYzkwMDAuYzogZml4ZWQgaW5jbHVkZXMsIGFkZGVkIGNvbnN0LCBmaXhlZCB0aW1lb3V0LCByZW1vdmVkIHVudXNlZAordmFyaWFibGVzCisKK3N0YXJ0MTYuUzogY2hhbmdlZCBzdGFjayBwb2ludGVyIHJlbG9hZGluZworCitzdGFydDMyLlM6IGNsZWFuZWQgdXAgR0FTMjk1IHN1cHBvcnQsIGZpeGVkIENQVSBkZXRlY3Rpb24sIGZpeGVkIG1lbXNpemUKK2ZvciA+IDY0TUIsIGFkZGVkIGJhc2VtZW1zaXplKCkKKwordGlhcmEuYzogZml4ZWQgaW5jbHVkZXMsIGFkZGVkIGNvbnN0LCByZW1vdmVkIHVudXNlZCB2YXJpYWJsZQorCit0dWxpcC5jOiBmaXhlZCBpbmNsdWRlcywgYWRkZWQgY29uc3QsIGRlY3JlYXNlZCBvdmVyc2l6ZWQgZnJhbWUgdG9sZXJhbmNlLAorVVNFX0lOVEVSTkFMX0JVRkZFUiBoYWNrLCBjb252ZXJ0ZWQgdG8gQyBjb21tZW50cywgZml4ZWQgcHJvdG90eXBlcywKK3JlbW92ZWQgdW51c2VkIHZhcmlhYmxlCisKK3ZpYS1yaGluZS5jOiBmaXhlZCBpbmNsdWRlcywgY29udmVydGVkIHRvIEMgY29tbWVudHMsIHJlbW92ZWQgdW51c2VkCitmdW5jdGlvbnMsIGZpeGVkIHRpbWVvdXQsIFVTRV9JTlRFUk5BTF9CVUZGRVIgaGFjaywgcmVtb3ZlZCB1bnVzZWQKK3ZhcmlhYmxlLCBjb25zdCBhZGRlZAorCitsemh1Zi5jIHdhcyBtb2RpZmllZCBub3QgdG8gb3V0cHV0ICc6JyBjaGFyYWN0ZXJzLCBiZWNhdXNlIEkgZmluZCBpdAordXNlZnVsIHRvIHNlYXJjaCBmb3IgdGhlbSBpbiBhIG1ha2UgbG9nIHRvIHNwb3QgYWxsIGVycm9yIG1lc3NhZ2VzLgorCitGaW5hbGx5IGFsbCBzeW1saW5rcyBoYXZlIGdvbmUKKworSSBmaXhlZCBzZ21sL3ZlbmRvcnRhZ3Muc2dtbCAobWF5YmUgaXQncyBtb3JlIGEgd29ya2Fyb3VuZCk6IHNnbWwydHh0CitkaWRuJ3QgbGlrZSB0aGUgfn4nIHNlcXVlbmNlIGFuZCBpZ25vcmVkIGEgd2hvbGUgbGluZSwgbWFraW5nIHRoZSAudHh0CitmaWxlIGluY29tcGxldGUuICBBbHNvIGZyZWVic2QudHh0IHdhcyBjb252ZXJ0ZWQgdG8gc2dtbC4KKworTXkgc3RhbmRhcmQgcGF0Y2ggdG8gbmV0Ym9vdC0wLjguMS9jb25maWd1cmUgKHRvIHJlbW92ZSB0aGUgInVua25vd24iKSBpcworYWdhaW4gaW4gcGxhY2UgLSBob3cgaXMgdGhpcyBmaWxlIGNyZWF0ZWQ/IEJ5IGhhbmQ/ICBJIGFkZGVkIHNlcmlhbC9kdWFsCitjb25zb2xlIHN1cHBvcnQgdG8gbWtuYmktbGludXguCisKK09oLCBhbmQgc29tZXRoaW5nIEkgYWxtb3N0IGZvcmdvdDogRXRoZXJib290IG5vdyB3b3JrcyB1bmRlciBWTXdhcmUuCitWTXdhcmUgaGFzIGEgcmF0aGVyIGxhcmdlIEVCREEgKDNLIGluc3RlYWQgb2YgMUsgbGlrZSBtb3N0IG90aGVyCitCSU9TIHZlcnNpb25zKSwgc28gb25lIG1pZ2h0IGhhdmUgdG8gc2FjcmlmaWNlIGEgZmV3IG5pZnR5IG9wdGlvbnMuCitOb3RlIHRoYXQgdGhlIE1ha2VmaWxlIGNoZWNrIGNhbm5vdCBkZXRlY3QgdGhpcyAtIG1heWJlIHdlIHNob3VsZCBhZGQgYQorcnVudGltZSBjaGVjaywgdG9vPyAgT25lIHRoaW5nIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggVk13YXJlIGlzIHRoZSAiQm9vdAorTG9jYWwiIHN0dWZmIC0gaXQncyBub3QgdGVycmlibHkgdXNlZnVsIGlmIHlvdSBoYXZlIHRvIGJvb3QgZnJvbSBkaXNrLAorYnV0IGl0IHNob3VsZG4ndCBjcmFzaCB0aGUgbWFjaGluZSAoSSd2ZSBzZWVuIHNldmVyYWwgdHJpcGxlIGZhdWx0cywKK2RlcGVuZGluZyBvbiBSRUxPQ0FERFIgYW5kIHRoZSBzdGFjayB1c2FnZSkuICBJIHRyYWNrZWQgaXQgZG93biB0byB0aGUKK2ZhY3QgdGhhdCBWTXdhcmUgY3Jhc2hlcyBvbiBpbnQgMHgxOSBpZiB0aGUgbWVtb3J5IGFyZWEgMHg5ODAwMC0weDlmM2ZmCitpcyBvdmVyd3JpdHRlbi4gIElmIG9uZSBjaGFuZ2VzIFJFTE9DQUREUiB0byAweDhmMDAwLCBldmVyeXRoaW5nIHdvcmtzCituaWNlbHkuICBTb21lb25lIHNob3VsZCByZXBvcnQgdGhlIGJ1ZyB0byBWTXdhcmUuICBBbHNvIHByb3BlciBib290IFJPTQorc3VwcG9ydCBzaG91bGQgYmUgYWRkZWQgdG8gVk13YXJlIGFuZCB0aGV5IHNob3VsZCB1cGdyYWRlIHRoZSB2aXJ0dWFsCitjYXJkIHRvIDEwME1icHMgKGRvbid0IGxhdWdoIC0gdGhleSBsaW1pdCB0aGUgYmFuZHdpZHRoIHRvIDEwTWJwcyBldmVuCitpZiB5b3UgaGF2ZSBhIHJlYWwgMTAwTWJwcyBjYXJkISkuICBNYXliZSBvbmUgY291bGQgZXZlbiB1c2UgdGhlIGZsYXNoCit1dGlsaXR5IGZvciB0aGUgcmVjZW50IEFNRCBQQ25ldCBjYXJkcy4uLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC41LjUKKworKyBNb3JlIGZpeGVzIGZyb20gS2xhdXMgRXNwZW5sYXViLCBiYXNlZCBvbiBidWcgcmVwb3J0cyBieSBEb3VnIEFtYnJpc2tvCithbmQgb3RoZXJzLiBTbWFsbCBjbGVhbnVwcyBpbiB0dWxpcC5jLiBIZSBhbHNvIGFkZGVkIGEgQkFDS09GRl9MSU1JVAorcGFyYW1ldGVyIHRvIHRoZSBleHBvbmVudGlhbCBiYWNrb2ZmIGZvciByZXRyeSBpbnRlcnZhbHMuCisKKysgQ2hyaXN0b3BoIFdpbGxpbmcgc2VudCBpbiBhIGZpeCBmb3IgUENJIE5FMjAwMHMgd2hpY2ggZm9yY2VzIDE2LWJpdAordHJhbnNmZXIgbW9kZSBmb3IgUENJLiBUaGlzIG1pZ2h0IG1ha2UgaXQgd29yayBvbiBzb21lIFBDSSBORTIwMDBzIHRoYXQKK2ZhaWxlZCBiZWZvcmUsIHBsZWFzZSB0ZXN0IGlmIHlvdSBjYW4uCisKKysgTW92ZWQgY29tbWVyY2lhbCBsaW5rcyBvZmYgbWFpbiB3ZWIgcGFnZSBpbnRvIHdlYiBwYWdlIG9mIGl0cyBvd24uCisKKysgTWVyZ2VkIGluIFRSWV9GTE9QUFlfRklSU1QgY29kZSBmcm9tIDxhcyBBVCBiYXJ0IFBFUklPRCBubD4uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjUuNgorCisrIEZyYW5rIE1laG5lcnQgc3BvdHRlZCBhIGJ1ZyBpbiB0dWxpcC5jIHdoZXJlIHRoZSBzb2xlIHRyYW5zbWl0IGJ1ZmZlcgord2FzIG5vdCB0YWdnZWQgYXMgdGhlIGxhc3Qgb25lIGluIHRoZSBjaGFpbi4KKworKyBIYWNrZWQgc2VyaWFsLlMgdG8gY2hlY2sgaWYgYSBzZXJpYWwgaW50ZXJmYWNlIGlzIHByZXNlbnQgYW5kIHRvIGRpc2FibGUKK3RoZSByb3V0aW5lcyBpZiBub3QsIHNvIHRoYXQgRXRoZXJib290IGRvZXMgbm90IGhhbmcgb24gYSBtYWNoaW5lIHdpdGhvdXQKK2Egc2VyaWFsIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgb3B0aW9uIGhhcyBiZWVuIGNvbXBpbGVkIGluLgorCisrIFdyb3RlIG1rcm9tbmJpIGZvciBtYWtpbmcgYSBuZXR3b3JrIGJvb3RhYmxlIGltYWdlIGZyb20gYSBST00gaW1hZ2UKKyhmb3IgdXNpbmcgRXRoZXJib290IHRvIHRlc3QgYW5vdGhlciBFdGhlcmJvb3QgZHJpdmVyKS4KKworKyBLcnp5c3p0b2YgSGFsYXNhIGZvdW5kIGEgc21hbGwgYnVnIGluIG5mcy5jIGluIHRoZSBoYW5kbGluZyBvZiBCT09UUAorZXh0ZW5zaW9uIGZpbGVzLgorCisrIFNvbWUgaW5zdHJ1Y3Rpb25zIG9uIGFkZGluZyBFdGhlcmJvb3QgdG8gYSBtYWluIEJJT1Mgd2VyZSBjb250cmlidXRlZAorYnkgRGlyayB2b24gU3VjaG9kb2xldHouCisKKysgU29tZSBjb21tZW50YXJ5IG9uIGNicm9tLmV4ZSB2ZXJzaW9ucyBwb3N0ZWQgYnkgUmFwcCBJbmZvcm1hdGlrIFN5c3RlbWUKK0dtYkggdG8gdGhlIE5ldGJvb3QgbWFpbGluZyBsaXN0IGluY2x1ZGVkLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC41LjcKKworKyBQYXRyaWNrIEF1Z2UgcG9pbnRlZCBvdXQgdGhhdCAtRFQ1MDNfU0hNRU0gb3B0aW9uIHNob3VsZCBiZSBub3QgdXNlZAorYnkgZGVmYXVsdCwgYXMgdGhlIGNvbW1lbnRzIHNheS4KKworKyBIZWlucmljaCBSZWJlaG4gcG9pbnRlZCBvdXQgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBuZWVkZWQgdG8gYmUgdXBkYXRlZAorZm9yIHRoZSBuZXcgYmluMzIgYW5kIGJpbjE2IHByZWZpeGVzIGZvciB0YXJnZXRzLgorCisrIENocmlzdG9waCBQbGF0dG5lciBmb3VuZCB0aGF0IG5vZGVfYWRkciBpbiBzdHJ1Y3QgbmljIHNob3VsZCBiZSB1bnNpZ25lZAorY2hhciAqIG9yIHByb2JsZW1zIG9jY3VyIGluIHRoZSBoYW5kbGluZyBvZiB0aGUgTUFDIGFkZHJlc3MgaW4gY3M4OXgwLmMuCisKKysgR3JlZyBIdWRzb24gcG9pbnRlZCBvdXQgdGhhdCBpbmV0X250b2EgaXMgbWlzbmFtZWQsIGl0IHNob3VsZCBiZQoraW5ldF9hdG9uLgorCisrIFZzZXZvbG9kIFNpcGFrb2ZmIHN1Z2dlc3RlZCB0aGF0IHRoZSBwcm9iZSBhZGRyZXNzIGxpc3QgZm9yIE5FMjAwMAorc2hvdWxkIG1hdGNoIHRoYXQgb2YgTGludXguIERvbmUsIHdpdGggdGhlIGRlbGV0aW9uIG9mIDB4MzYwIHdoaWNoIG9mdGVuCitjb25mbGljdHMgd2l0aCB0aGUgcGFyYWxsZWwgcG9ydCBhdCAweDM3OC4KKworKyBDcmVhdGVkIG1rbmJpLCBhIFBlcmwgdXRpbGl0eSB0aGF0IHJlcGxhY2VzIG1rbmJpLWRvcywgbWtuYmktbGludXgsCitta2ZyZWVkb3NuYmksIGFuZCBta3JvbW5iaS4gUmVtb3ZlZCBta3tmcmVlZG9zLHJvbSxlbGtzfW5iaS8gZnJvbQorY29udHJpYi8uICAoRUxLUyBoYXMgaXRzIG93biB0YWdnZWQgaW1hZ2UgY3JlYXRpb24gbWV0aG9kIG5vdy4pCisKKysgUmVtb3ZlZCBvYnNvbGV0ZS8gZnJvbSBjb250cmliLy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNS44CisKKysgU29tZSBzbWFsbCBlbmhhbmNlbWVudHMgdG8gbWtuYmkuIE1lcmdlZCBpbiBkaXNuYmkgYW5kIG1rbG5pbS4gQ2hhbmdlZAordmVyc2lvbiB0byAxLjAuCisKKysgbmV0Ym9vdC0wLjguMSBkaXJlY3RvcmllcyBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5IG5vdy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNi4wCisKKysgTmljayBMb3BleiBkaXNjb3ZlcmVkIHRoYXQgdGhlIERhdmljb20gOTEwMiBpcyBZZXQgQW5vdGhlciBUdWxpcCBDbG9uZQorYW5kIGEgZmV3IGFwcHJvcHJpYXRlIGluaXRpYWxpc2F0aW9ucyB3aWxsIG1ha2UgaXQgd29yay4KKworKyBNYXR0aGV3IFJlaW1lciBzZW50IGluIHBhdGNoZXMgZm9yIGNvbnRyaWIvM2M5MHh1dGlsLmMvYnJvbXV0aWwuYyB0bworY29tcGlsZSBhbmQgcnVuIHVuZGVyIEZyZWVCU0QuCisKKysgS3J6eXN6dG9mIEhhbGFzYSBmb3VuZCB0aGF0IHRoZSBudW1iZXIgb2YgYnVmZmVycyBpbiBlcGljMTAwLmMgbmVlZGVkCit0byBiZSByYWlzZWQgdG8gMiBlYWNoIGZvciBvcGVyYXRpb24gYXQgMTAgTWIgZm9yIHRoZSBQQ0kgRXRoZXJQb3dlcgorOTQzMkItVFggdXNpbmcgdGhlIFNNQyA4M0MxNzEuCisKKysgS2xhdXMgRXNwZW5sYXViIGZpeGVkIHRoZSByb290IHBhdGggaGFuZGxpbmcgaW4gbWFpbi5jLCBpdCB3YXNuJ3QKK3JlcXVlc3Rpbmcgb3B0aW9uIDE3IGluIERIQ1AuIEFsc28gcmVtb3ZlZCBvbmUgcHJvdG90eXBlIHdhcm5pbmcgaW4KK3RmdHAoKS4KKworKyBEYW5pZWwgU2hhbmUgc2VudCBpbiBjb2RlIGZvciBmb3IgYWRkaW5nIGlkZW50aWZpZXJzIHRvIGEgREhDUCByZXF1ZXN0LAordXNpbmcgYSB1c2VyIHNwZWNpZmllZCBESENQIG9wdGlvbi4gVGhlIHBhdGNoIGlzIGluIGNvbnRyaWIvZGhjcGlkLgorCisrIEJ1ZyBmaXggaW4gbWtuYmktMS4wIGZvciB0aGUgaXBhZGRycz1yb20gb3B0aW9uLCB3YXJuaW5ncyBhYm91dCBiYWRseQorZm9ybWVkIHNwZWNpZmljYXRpb24gdG8gaXBhZGRycz0gb3IgdW5yZXNvbHZhYmxlIG5hbWVzLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjEKKworKyBTdHVhcnQgTHlubmUgc2VudCBpbiBwYXRjaGVzIHRvIGFsbG93IC0gdG8gbWVhbiByZXVzZSBrZXJuZWwgZmlsZW5hbWUKK2luIG1lbnUgc3BlY2lmaWNhdGlvbnMuIEFsc28gZml4ZWQgREhDUCByZXF1ZXN0IHRvIGFzayBmb3IgdGFncyAxMjkgYW5kCisxMzAgKEtlbiBhZGRlZCB0aGlzKSwgYXMgdGhlIG1rbmJpIG1hbiBwYWdlIHByb21pc2VkLgorCisrIEZpeGVkIFVSTCBmb3IgUmljaGFyZCBGZXJyaSdzIExVSS4KKworKyBBZGRlZCBVUkwgZm9yIEdyZWdvcnkgUi4gV2FybmVzJyBDbHVzdGVyTkZTLgorCisrIENoYW5nZWQgUkZDMjEzMl9NQVhfU0laRSBvcHRpb24gaW4gbWFpbi5jIHRvIGFsbG93IG1heGltdW0gc2l6ZSBESENQCityZXBsaWVzLgorCisrIE1hdHRoaWFzIFNjaG5pZWRlcm1leWVyIHN1Ym1pdHRlZCBhbiBvcHRpb25hbCBmZWF0dXJlIHRvIHVzZSBudW1iZXJzCitpbnN0ZWFkIG9mIGxldHRlcnMgZm9yIGJvb3RtZW51IGVudHJpZXMuCisKKysgQnJvdWdodCBzb21lIEZBUXMgdXAgdG8gZGF0ZSB3aXRoIG1rbmJpLTEuMC4KKworKyBXcm90ZSBwZXJsIHNjcmlwdCBta2xycG5iIGZvciBtYWtpbmcgbmV0Ym9vdCBpbWFnZSBmcm9tIExpbnV4IFJvdXRlcgorUHJvamVjdCBmbG9wcHkuICBUZXN0ZWQgb24gQ295b3RlIExpbnV4IChiYXNlZCBvbiBMUlApLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjIKKworKyBSZS1lbmFibGVkIHR1bGlwLmM6dHVsaXBfZGlzYWJsZSgpIGNvZGUuCisKKysgTWlub3IgZml4IHRvIFNIT1dfTlVNRVJJQyBjb2RlIGluIGJvb3RtZW51LmMuCisKKysgTWlub3Igc3BlbGxpbmcgY29ycmVjdGlvbnMgdG8gdmVuZG9ydGFncy5zZ21sLgorCisrIGFuZHJlYXMua2FiZWwgQVQgc2xhYyBQRVJJT0Qgc3RhbmZvcmQgUEVSSU9EIGVkdSBwb2ludGVkIG91dCB0aGF0IHRvCitiZSBSRkM5NTEgY29tcGxpYW50LCB0aGUgYnJvYWRjYXN0IEJPT1RQIHJlcXVlc3QgbmVhciBsaW5lIDcwNSBvZiBtYWluLmMKK3Nob3VsZCB1c2UgcG9ydCBCT09UUF9DTElFTlQgYW5kIHRodXMgc3RhbmQgYSBiZXR0ZXIgY2hhbmNlIG9mIGdvaW5nCit0aHJvdWdoIGZpcmV3YWxscy4KKworKyBDaHJpc3RvcGggUGxhdHRuZXIgZm91bmQgdGhhdCB0aGUgMTYgYml0IGJ1cyB3aWR0aCBmaXggZm9yIE5FUENJIGNhcmRzCitpbnRyb2R1Y2VkIGluIDQuNS42IGJyZWFrcyBvcGVyYXRpb24gZm9yIG90aGVyIE5FUENJIGNhcmRzLiBTbyBub3cgdGhlCisjZGVmaW5lIHN5bWJvbCBpcyBOUzgzOTBfRk9SQ0VfMTZCSVQsIHRvIGJlIHVzZWQgd2hlbiB0aGUgTklDIHJlcXVpcmVzCisxNiBiaXQgYnVzIHdpZHRoIGJ1dCBFdGhlcmJvb3QgZ3Vlc3NlcyB3cm9uZy4gVGhpcyBuZWVkcyB0byBiZSBmaXhlZAorbGF0ZXIgdG8gYXV0b2RldGVjdCBhZGFwdGVyIGJ1cyB3aWR0aC4KKworKyBTaHVzdWtlIE5pc2l5YW1hIHNlbnQgbWUgdGhlIFBDSSBJRHMgZm9yIDNDNTk1IE5JQ3Mgc28gdGhhdCBST00gaW1hZ2VzCitjb3VsZCBiZSBnZW5lcmF0ZWQgZm9yIHRoZW0uCisKKysgSmltIE1jUXVpbGxhbiBzZW50IGluIG1vZGlmaWNhdGlvbnMgdG8gdHVsaXAuYyB0byByZWplY3QgYmFkIHBhY2tldHMuCisKKysgS2xhdXMgRXNwZW5sYXViIHN1Z2dlc3RlZCBjaGFuZ2luZyB0aGUgZmlsZW5hbWUgc3Vic3RpdGlvbiBtYWNybyBpbiB0aGUKK0lERU5UMTYgYW5kIElERU5UMzIgc3RyaW5ncyB0byAkKEBGKSBzbyB0aGF0IG9ubHkgdGhlIGZpbGVuYW1lIHBvcnRpb24gb2YKK3RoZSBwYXRobmFtZSBpcyBpbnNlcnRlZC4gIE90aGVyd2lzZSB0aGUgY29udHJpYnV0ZWQgcm9taWQgcHJvZ3JhbSBicmVha3MuCisKKysgQWRkZWQgYXV0aG9yIGlkZW50IGFuZCBjb3B5cmlnaHQgc3RhdHVzIHRvIGNvbnRyaWIvYmluMmludGVsaGV4LmMuc2ltcGxlCithdCBSb2dpZXIgV29sZmYncyByZXF1ZXN0LgorCisrIEf8bnRlciBLbmF1ZmYgc2VudCB1cGRhdGVzIHRvIHJvbWlkIGFuZCBtcC1mb3JtLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjMKKworKyBNYXJ0eSBDb25ub3IgY29udHJpYnV0ZWQgcGF0Y2hlcyB0byB0dWxpcC5jIHRvIHN1cHBvcnQgdGhlIExpbmtTeXMKK0xORTEwMFRYIHY0IE5JQ3MuCisKKysgQWRkZWQgcm1yZC5jb20gdG8gbWtuYmktMS4wIGRpcmVjdG9yeS4KKworKyBBZGRlZCBleHBlcmltZW50YWwgY2hhbmdlcyB0byBhbGxvdyBSRUxPQ0FERFIgdG8gYmUgY2hhbmdlZCB0byAweDg4MDAwCit0byBhdm9pZCBEaXNrIE9uIENoaXAgZHJpdmVycy4gU2VlIFJFTE5PVEVTIGFuZCBNYWtlZmlsZSBmb3IgZGV0YWlscy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNi40CisKKysgQ2hyaXMgSm9obnMgZm91bmQgYSBsb25nLXN0YW5kaW5nIGJ1ZyBpbiBmaXJzdC1saW51eC5TLiBFUyB3b3VsZAorc29tZXRpbWVzICE9IENTLCBtYWtpbmcgdGhlIHJhbWRpc2sgbW92aW5nIGZhaWwuCisKKysgTWFkZSAtLWhhcmRkaXNrIHdvcmsgZm9yIG1rbmJpLWZkb3MuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjYuNQorCisrIEJ1ZyBpbiBta25iaS1kb3MsIGxhc3Qgc2VjdG9yIG9taXR0ZWQgaW4gcmFtZGlzayBpbWFnZS4KKworKyBVc2UgY2VpbCgpIGZvciBjb21wdXRpbmcgbnVtYmVyIG9mIHJvb3RkaXIgc2VjdG9ycy4KKworKyAtLWhhcmRkaXNrIG5vdyB3b3JrcyBmb3IgbWtuYmktZG9zIGFsc28uCisKKysgU2hvdWxkIHdvcmsgb24gRkFUMTYgcGFydGl0aW9ucyBub3cuCisKKysgTmV3IGRyaXZlciBmb3IgV2luYm9uZCBXODlDODQwIGJ5IElnb3IgVi4gS292YWxlbmtvLgorCisrIE1vZGlmaWNhdGlvbiB0byBsb2FkZXIuUyBieSBTdGV2ZSBTbWl0aCBmb3Igc29tZSBQQ0kgQklPU2VzIHRoYXQgZG9uJ3QKK2hhbmRsZSBJTlQxOUggd2VsbC4KKworKyBTbWFsbCBidWcgaW4gb3Nsb2FkZXIuYywgaiBub3QgZGVmaW5lZCBpbiB0d28gcGxhY2VzIGlmIERFTElNSVRFUkxJTkVTCitkZWZpbmVkLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjYgKGRldmVsb3BtZW50YWwpCisKKysgQWxsIHRoZSBjaGFuZ2VzIGZyb20gNC42LjUgdG8gNC42LjYgYmFjayBwcm9wYWdhdGVkIGV4Y2VwdCBmb3IgdGhlCitsb2FkZXIuUyBjaGFuZ2UuCisKKysgUmVtb3ZlZCAtbm9zdGRsaWIgZnJvbSBsZCBmbGFncy4gU2VlbXMgdG8gYmUgYSB2ZXN0aWdlIGZyb20gd2hlbiB3ZQord2VyZSBjYWxsaW5nIGdjYyBhcyBpdCdzIG5vdCBhbiBsZCBvcHRpb24uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjYuNgorCisrIENvbnRyaWJ1dGVkIG9uZS1saW5lIHBhdGNoIHRvIGFsbG93IGJvb3RpbmcgZnJvbSBTQ1NJIGRpc2tzIGFsc28gKHNkKS4KKworKyBHcnplZ29yeiBKYWJsb25za2kgc2VudCBpbiBhIGZpeCBmb3IgbG9uZy1zdGFuZGluZyBidWcgaW4gbG9hZGVyLlMgdGhhdAorcHJldmVudGVkIGJvb3Rpbmcgb24gc29tZSBCSU9TZXMuCisKKysgTW9yZSB1cGRhdGVzIHRvIGRvY3VtZW50YXRpb24uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjYuNworCisrIFJpY2sgS2VubmVsbCBwb2ludGVkIG91dCB0aGF0IHRoZXJlIGlzIGFub3RoZXIgcGxhY2UgaW4gbWFpbi5jIHdoZXJlCit0aGUgREhDUCByZXF1ZXN0IGlzIHNlbnQgd2l0aCBhIHNvdXJjZSBwb3J0IG9mIDAsIHdoaWNoIG1heSBub3QgZWxpY2l0CityZXBsaWVzIGZyb20gc29tZSBESENQIHNlcnZlcnMgb3IgcGFzcyBnYXRld2F5cy4gQ2hhbmdlZCB0bworQk9PVFBfQ0xJRU5ULgorCisrIERlcGNhIGRyaXZlciBmaW5hbGx5IHdvcmtzLgorCisrIENoYW5nZWQgdW5zaWduZWQgaW50IGxlbjsgdG8gaW50IGxlbjsgaW4gM2M1OTUuYyB0cmFuc21pdCByb3V0aW5lCit3aGljaCB3YXMgZ2VuZXJhdGluZyBhIHdhcm5pbmcgZnJvbSBnY2MuCisKKysgUmVtb3ZlZCB3YXJuaW5nIGFib3V0IGxqbXAgaW5kaXJlY3Qgd2l0aG91dCAqIGluIHN0YXJ0MzIuUyBieSBwdXR0aW5nCitpbiB0aGUgKi4gQ2hlY2tlZCB0aGF0IGdlbmVyYXRlZCBjb2RlIGhhcyBub3QgY2hhbmdlZCBieSBjb21wYXJpbmcKK2JpbmFyaWVzLiBMYXRlcjogQnV0IG9ubHkgZm9yIGdhcyAyLjkuNSBhbmQgYWJvdmUsIGdhcyAyLjkuMSBkb2Vzbid0CitsaWtlICouCisKKysgV2FudGVkIHRvIGRvIHRoZSBzYW1lIGZvciB0aGUgbGNhbGwncyBpbiBwY2kuYyBidXQgZGlzY292ZXJlZCB0aGF0CitnYXMgMi45LjEgY2hva2VzIG9uICosIGFuZCBhcyBJIGRvbid0IHdhbnQgdG8gaW50cm9kdWNlIG1vcmUgI2lmZGVmcworaW50byBwY2kuYywgd2UnbGwganVzdCBsaXZlIHdpdGggdGhlIHdhcm5pbmdzIHVudGlsIGdhcyAyLjkuMSBpcyBkZWFkCitvciB0aGUgaW5jb3JyZWN0IHN5bnRheCBpcyByZWplY3RlZCBieSBhIGN1cnJlbnQgZ2FzIHJlbGVhc2UuCisKKysgUmV2ZXJzZWQgI2RlZmluZSBzbyB0aGF0IEdBUzI5MSBpbmRpY2F0ZXMgZ2FzIDIuOS4xLiBSYXRpb25hbGU6IGdhcworMi4xMCBwcm9iYWJseSBiZWhhdmVzIGxpa2UgZ2FzIDIuOS41IHNvIHRoZSBkZWZhdWx0IHNob3VsZCBiZSB0aGUgbmV3CitiZWhhdmlvdXIuCisKKysgTkk1MDEwIGRyaXZlciBmaW5hbGx5IHdvcmtzLiBXZWlyZCBOSUMsIGhhcyBvbmx5IDJrQiBtZW1vcnkgb24gYm9hcmQKK3NvIGlmIHlvdSBkb24ndCBzd2l0Y2ggdG8gdGhlIHJlY2VpdmVyIGltbWVkaWF0ZWx5IGFmdGVyIHRyYW5zbWl0dGluZworeW91IHdpbGwgbG9zZSB0aGUgcmVwbHkgcGFja2V0LiAoVGhpcyBpcyBhIHZlcnkgYW5jaWVudCBib2FyZCwgSSB3YXMKK2RvaW5nIHRoZSBkcml2ZXIgZm9yIGtpY2tzLikKKworKyBJbXBsZW1lbnRlZCBhIGxvdy1vdmVyaGVhZCB0aW1lciByb3V0aW5lIGZvciBpbXBsZW1lbnRpbmcgdGltZW91dHMgaW4KK2RyaXZlcnMuIFRoaXMgdGltZXIgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBoYWNrcyB3aXRoIGludGVnZXIgbG9vcHMKKyh3aGljaCBhcmUgQ1BVIHNwZWVkIGRlcGVuZGVudCkgb3IgY2FsbGluZyBjdXJydGlja3MoKSwgd2hpY2ggaGFzCityZWxhdGl2ZWx5IGhpZ2ggb3ZlcmhlYWQgYmVjYXVzZSBpdCByZWFkcyB0aGUgQklPUyB0aW1lciwgYW5kIGhhcyBhCityZXNvbHV0aW9uIG9mIG9ubHkgMS8xOHRoIG9mIGEgc2Vjb25kLiAgVGltZXIgMiBvZiB0aGUgODI1NCB0aW1lciBjaGlwCitjYW4gYmUgbG9hZGVkIHdpdGggYW4gdW5zaWduZWQgMTYtYml0IHZhbHVlIHRoYXQgd2lsbCBiZSBkZWNyZW1lbnRlZCBhdAorYWJvdXQgMTE5MyBjb3VudHMgcGVyIG1zIChjb25zdGFudCBUSUNLU19QRVJfTVMgaW4gdGltZXIuaCkuIFNvIHRoZQorbWF4aW11bSB0aW1lb3V0IHRoYXQgY2FuIGJlIGltcGxlbWVudGVkIHdpdGggYSBzaW5nbGUgY2FsbCBpcyBhYm91dCA1NAorbXMuIENhbGwgbG9hZF90aW1lcih1MTYpIHRvIGxvYWQgYW5kIHN0YXJ0IHRoZSB0aW1lciAoMCA9PSA2NTUzNikuIENhbGwKK2ludCB0aW1lcjJfcnVubmluZygpIHRvIGNoZWNrIGlmIGl0IGlzIHN0aWxsIGFjdGl2ZS4gdGltZXIyX3J1bm5pbmcgY2FuCitiZSBpbnRlcmxlYXZlZCB3aXRoIG90aGVyIHRlc3RzLCBlLmcuIG9uIHRoZSBOSUMgaGFyZHdhcmUgcmVnaXN0ZXJzLgorV2hlbiB0aGUgdGltZXIgcnVucyBkb3duIHRvIDAsIGl0IHdpbGwgcmV0dXJuIDAuIElmIHlvdSBqdXN0IG5lZWQgdG8KK2RlbGF5IGEgc2hvcnQgdGltZSwgY2FsbCB3YWl0b25fdGltZXIyKHUxNikgdG8gbG9hZCBhbmQgZGVsYXkgdGhhdCBtYW55Cit0aWNrcy4KKworKyBSZW1vdmVkIHNsb3dkb3duaW8oKSBmcm9tIHNvdXJjZXMuIEl0J3MgY2FsbGVkIGluIG9ubHkgb25lIHBsYWNlIGFuZAoraXMgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGN1cnJ0aWNrcygpIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgbGFyZ2UgZGVsYXkKK2FueXdheS4gSXQncyBhbHNvIG5vdCBjbGVhciBpZiB0aGUgc3RyYXRlZ3kgaW4gc2xvd2Rvd25pbyAoYSBjb3VwbGUgb2YKK2xvY2FsIGp1bXBzKSB3aWxsIGV2ZW4gd29yayBvbiBmYXN0IENQVXMgd2l0aCBpbnN0cnVjdGlvbiBjYWNoZXMuCisKKysgUmVtb3ZlZCBzdXBwb3J0IGZvciAlaSAoYWxpYXMgZm9yICVkKSBpbiBwcmludGYuIE5vYm9keSB1c2VzIGl0LCBpZgordGhleSBkbyB0aGV5IHNob3VsZCBqdXN0IGVkaXQgdGhlIGZvcm1hdCBzdHJpbmcgdG8gdXNlICVkLCBhbmQgcmVtb3ZpbmcKK2l0IG1lYW5zIG9uZSBsZXNzIG5vbi1zdGFuZGFyZCBmb3JtYXQgaW4gcHJpbnRmOyB3ZSBoYXZlICVYLCAlYiBhbmQgJUkKK2FzIGl0IGlzLgorCisrIFNpbXBsaWZpZWQgY3VycnRpY2tzKCkgYnkgYWNjZXNzaW5nIEJJT1MgdmFyaWFibGVzIGRpcmVjdGx5IGluc3RlYWQgb2YKK2NhbGxpbmcgdGltZW9mZGF5IEJJT1MgaW50ZXJydXB0LgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjgKKworKyBJJ20gcGlzc2VkIG9mZiB3aXRoIHRoZSBpbmNvbnNpc3RlbmN5IGJldHdlZW4gZ2FzIDIuOS4xIGFuZCBnYXMgMi45LjUKK3JlIGxqbXAgKiAoaW5kaXJlY3QganVtcCkuIFNvbWUgYXNzZW1ibGVycyBjbGFpbWluZyB0byBiZSAyLjkuNSBkaXNsaWtlCit0aGUgKiAoUkg2LjIncyBpcyBvbmUpLiBJJ20gZ29pbmcgdG8ganVzdCBtYWtlIGl0IGxqbXAgYW5kIGxpdmUgd2l0aCB0aGUKK3dhcm5pbmcgbWVzc2FnZSB1bnRpbCB0aGUgZ2FzIDIuOS4xIHN5bnRheCBpcyB0b3RhbGx5IGRlYWQuCisKKysgVmFyaW91cyBmaXhlcyBmcm9tIEtsYXVzIEVzcGVubGF1YjogRml4IGZvciBORlMgYm9vdGluZyBmcm9tICpCU0QKK3BsYXRmb3JtcywgZml4IGZvciBMYW5jZSBkcml2ZXIsIGludGVycnVwdCB3YXMgYmVpbmcgdHVybmVkIG9uLCBmaXggZm9yCitzZXJpYWwuUyBhbmQgY29kZSBjbGVhbnVwcy4KKworKyBQYXVsIFJvYmVydHNvbiBvZiBMb2Nzb2Z0IGZvdW5kIHRoYXQgaWYgdGhlIHRvcCBoYWxmIG9mICVlc3AgY29udGFpbnMKK2dhcmJhZ2UganVzdCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgdG8gcmVhbF90b19wcm90IGluIHN0YXJ0MzIuUywgaXQgY2FuCithZmZlY3QgYm9vdGluZyBvbiBzb21lIEJJT1Nlcy4gSW5zZXJ0ZWQgYW5kbCB0byBjbGVhciB0b3AgaGFsZi4KKworKyBTbGVlcCBmb3IgMiBzZWNvbmRzIGFmdGVyIGZhaWx1cmUgdG8gbG9hZCBmaWxlIHRvIGF2b2lkIHBvdW5kaW5nIHRoZQorc2VydmVyIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IGFuZCB0aHVzIHNodXR0aW5nIGRvd24gdGhlIHRmdHAKK3NlcnZpY2UgKGluZXRkIGhhcyByYXRoZXIgcG9vciByYXRlIGNvbnRyb2xzKS4KKworKyBTaHJlZGRhIG9mIGdteC5kZSByZXBvcnRlZCBhIGRpc2NyZXBhbmN5IGJldHdlZW4gdGhlIE1hY3Jvbml4IE1YOTg3MTUKK2RldmljZSBJRHMgdXNlZCBpbiBwY2kuaCBhbmQgTklDLiBNYXJ0eSBDb25ub3IgaGFzIHJ1bGVkIHRoYXQgdGhlIGlkIGluCitOSUMgaXMgYSB0eXBvLiAgSWYgYm9vdGluZyB3b3JrcyBmcm9tIGZsb3BweSBidXQgbm90IGZyb20gUk9NLCB0aGlzIG1heQorYmUgdGhlIHJlYXNvbi4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNi45CisKKysgT29wcywgYSBicm93biBwYXBlciBiYWcgYnVnIGluIHN0YXJ0MzIuUy4gRm9yZ290IHRoYXQgdGhlIGN1cnJ0aWNrcygpCituZWVkcyBpbnRlcnJ1cHRzIGVuYWJsZWQgdG8gd29yay4gQ2FsbGluZyB0aGUgQklPUyBhbGxvd2VkIGludGVycnVwdHMgdG8KK2hhcHBlbiBieSBnb2luZyBpbnRvIHJlYWwgbW9kZSAoaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgaW4gcHJvdGVjdGVkCittb2RlKS4gU28gaW5zZXJ0ZWQgcHJvdF90b19yZWFsIGFuZCByZWFsX3RvX3Byb3QgcGFpciBpbnNpZGUKK2N1cnJ0aWNrcygpLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjEwCisKKysgTWFydHkgQ29ubm9yIGFuZCBHYXJ5IEJ5ZXJzIG9mIHRoaW5ndWluLm9yZyBjb250cmlidXRlZCBhIExJTE8gcHJlZml4CitmaWxlIHRoYXQgbWFrZXMgdGhlIEV0aGVyYm9vdCBpbWFnZSBsb29rIGxpa2UgYSBMaW51eCBrZXJuZWwgdG8gTElMTyBhbmQKK3RodXMgYm9vdGFibGUgZnJvbSB0aGUgTElMTyBwcm9tcHQuCisKKysgSWZkZWZlZCBvdXQgY29kZSBpbiBta25iaSB0aGF0IGZhbGxzIGJhY2sgdG8gdGhlIHRmdHAgZGlyZWN0b3J5IGZvcgorcm9vdC1wYXRoLiBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBrZXJuZWwgc3BlY2lmaWVzCit0aGUgdGZ0cCBkaXJlY3RvcnkgYXMgbmZzcm9vdCBldmVuIGlmIHRoZXJlIGlzIG5vIHJvb3QtcGF0aCBvcHRpb24gaW4KK3RoZSBESENQIG9yIEJPT1Qgc2VydmVyIGNvbmZpZ3VyYXRpb24uIFRoaXMgaW50ZXJhY3RzIGJhZGx5IHdpdGggcmVjZW50CitMaW51eCBrZXJuZWxzIHdoaWNoIGFjdHVhbGx5IHBheSBhdHRlbnRpb24gdG8gdGhlIHJvb3QtcGF0aCBoYW5kZWQgZG93bgorYW5kIHVzZSB0aGF0IGFzIG5mc3Jvb3QuIFBlb3BsZSB3aG8gd2VyZSBleHBlY3RpbmcgdGhlIGRpc2tsZXNzIGtlcm5lbAordG8gdXNlIHRoZSBkZWZhdWx0IC90ZnRwYm9vdC88bmFtZSBvZiBjbGllbnQ+IGFzIG5mc3Jvb3Qgd291bGQgaGF2ZSBiZWVuCitzdXJwcmlzZWQgdG8gZmluZCBpdCB0cnlpbmcgdG8gdXNlIHRoZSB0ZnRwIGRpcmVjdG9yeSAod2hpY2ggb2Z0ZW4KK2hhcHBlbnMgdG8gYmUgL3RmdHBib290LCBhbHRob3VnaCBJIHJlY29tbWVuZCB0aGF0IGl0IGJlIGRpZmZlcmVudCwgdG8KK2ltcHJvdmUgc2VjdXJpdHkpLgorCisrIEVyaWMgQmllZGVybWFuIGZvdW5kIGFuIG9mZi1ieS1vbmUgYnVnIGluIHRoZSBFTEYgbG9hZGVyLgorCisrIENocmlzdG9waCBQbGF0dG5lciBwb2ludGVkIG91dCB0aGF0IHRoZSBjb21tZW50cyBmb3IgQ09NQ09OU09MRSBpbgorQ29uZmlnIGFyZSB3cm9uZywgdGhlIHNlcmlhbCBwb3J0IGlzIGF0IDNGOCwgbm90IDM3OC4KKworKyBBIGNvdXBsZSBvZiB1cGRhdGVzIHRvIHdvbC5jIGFuZCB3YWtlLnBsIGJ5IEf8bnRlciBLbmF1ZmYuCisKKysgVGhlIERhdmljb20gOTAwOSBhbmQgOTEwMiBkcml2ZXIgd2FzIGNvbnRyaWJ1dGVkIGJ5IFN0ZW4gV2FuZyBvZgorRGF2aWNvbS4gSXQgd2lsbCBiZSBtZXJnZWQgaW50byB0dWxpcC5jIGxhdGVyLgorCisrIEltcGxlbWVudCBlZXBybzEwMF9kaXNhYmxlLiBUaGVyZSBoYXZlIGJlZW4gcmVwb3J0cyBvZiBtZW1vcnkKK2NvcnJ1cHRpb24gYWZ0ZXIgRXRoZXJib290IGhhcyBoYW5kZWQgb3ZlciB0byB0aGUgYm9vdGVkIGltYWdlIGR1ZSB0bwordGhlIGxpdmUgY29udHJvbGxlci4KKworKyBNYXR0IEhvcnRtYW4gcmVwb3J0ZWQgYSBuZXcgSW50ZWwgTklDLCA4MjU1OUVSLCB3aXRoIGRpZmZlcmVudCBJRHMuCitBZGRlZCB0byBmaWxlIE5JQy4KKworKyBSYW5qYW4gUGFydGhhc2FyYXRoeSByZXBvcnRlZCBhbm90aGVyIFR1bGlwIGNsb25lIGZyb20gU1QgTWljcm8gd2l0aAorZGlmZmVyZW50IElEcy4gIEFkZGVkIHRvIGZpbGUgTklDLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjExCisKKysgU3RlZmFuIExlc2ljbmlrIHNlbnQgaW4gYSByZXBvcnQgZnJvbSBJbnRlbCB3aGljaCBleHBsYWlucyB3aGF0IGlzCitwcm9iYWJseSB3cm9uZyB3aXRoIHRoZSBQblAgaGVhZGVyLiBCRVYgc2hvdWxkIHBvaW50IHRvIHRoZSBtYWlubGluZQordmVjdG9yLCBub3QgdG8gdGhlIHBhcnQgdGhhdCBpbnN0YWxscyB0aGUgSU5UMTlIIHZlY3Rvci4KKworKyBIb3BlZnVsbHkgZmluYWxseSBmaXhlZCBESENQIG9wdGlvbiBsaW1pdCBwcm9ibGVtLiBJdCB3YXMgcmVxdWVzdGluZworbGFyZ2UgcGFja2V0cyBidXQgbm90IHBhcnNpbmcgdGhlbSBmdWxseSBkdWUgdG8gdGhlIGxlbmd0aCBsaW1pdCBwYXNzZWQKK2ludG8gZGVjb2RlX3JmYzE1MzMoKS4gVGhhbmtzIHRvIHNocmVkZGEgZm9yIHRlc3RpbmcgdGhpcy4KKworKyBBZGRlZCB0aGUgIyBtb2RpZmllciB0byBwcmludGYsIGl0IHByZWZpeGVzIDB4IHRvICV4IGFuZCAlWCBtYWtpbmcKK3ByaW50ZiBmb3JtYXRzIHNob3J0ZXIgdGhyb3VnaG91dC4gMHglW3hYXSBjaGFuZ2VkIHRvICUjW3hYXSBpbiBsb3RzIG9mCitmaWxlcy4gIE5vdyBpZiBvbmx5IEkgY291bGQgbWFrZSBiLHgsWCB0aGUgc3RhbmRhcmQgaGh4LGh4LHggYW5kIGdldCByaWQKK29mIEkuCisKKysgQW5kcmVhcyBOZXVoYXVzIHByb3ZpZGVkIHBhdGNoZXMgZm9yIG11bHRpcGxlIHJ4IGJ1ZmZlcnMgZm9yIGxhbmNlLmMKK3doaWNoIG1hZGUgaXQgd29yayBhZ2FpbiB3aXRoIFZNd2FyZS4KKworKyBQZXJsIHNjcmlwdCB0byBjb252ZXJ0IGZsb3BweWZ3IGZsb3BwaWVzIHRvIG5ldGJvb3RhYmxlIGltYWdlcy4KKworKyBNYXJ0eSBDb25ub3IgbWFkZSBzb21lIHNtYWxsIGNoYW5nZXMgdG8gbGlsb3ByZWZpeCBhbmQgTWFrZWZpbGUgdG8KK21ha2UgdGhlIExJTE8gaW1hZ2VzIFNZU0xJTlVYIGJvb3RhYmxlIGFsc28uCisKKysgTWFrZSB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yIF9wb2xsIGluIHNrZWwuYyAwIHNvIHRoYXQgd2hlbgorZHJpdmVyIHdyaXRlcnMgaW1wbGVtZW50IF90cmFuc21pdCBmaXJzdCwgaXQgd2lsbCBub3QgaGFuZyBvbiBnYXJiYWdlCityZXR1cm4gdmFsdWVzIGZyb20gX3BvbGwgd2hlbiBpdCdzIGNhbGxlZCB0byBmbHVzaCB0aGUgaW5wdXQgcXVldWUKK2JlZm9yZSB0aGUgZmlyc3QgdHJhbnNtaXQuCisKKysgRUVQUk8vMTAgZHJpdmVyIG5vdyB3b3Jrcy4gtXMgdGltZXIgcm91dGluZXMgY2FtZSBpbiB1c2VmdWwuCisKKysgQW5kZXJzIExhcnNlbiBzZW50IGluIGEgcGF0Y2ggdG8gM2M5MHgudHh0IHdoaWNoIG1ha2VzIGl0IGNsZWFyZXIuCisKKysgQWRkZWQgbW9yZSBzdHVmZiB0byB0aGUgZG9jdW1lbnRhdGlvbi4KKworKyBGaXhlZCBidWcgaW4gbWtuYmkgdGhhdCBhbHdheXMgZGlkIHRoZSBlcXVpdmFsZW50IG9mIC0taXBhZGRycz1yb20KK25vIG1hdHRlciB3aGF0LiBBbHNvIHJlbW92ZWQgdW5kZWYgZnJvbSBteSB2YXJpYWJsZSBsaXN0IGluIFRydW5jRkQucG0KK3NvIHRoYXQgaXQgd29uJ3QgaGF2ZSBwcm9ibGVtcyB3aXRoIFBlcmwgaW50ZXJwcmV0ZXJzLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC42LjEyCisKKysgSmltIE1jUXVpbGxhbiBzZW50IGluIGEgcGF0Y2ggZm9yIGZpcnN0LWxpbnV4LlMgd2hlcmUgaXQgd2FzIGFzc3VtaW5nCit0aGUgYXJndW1lbnQgaW4gdGFnIDEyOSAoYWRkaXRpb25hbCBwYXJhbWV0ZXJzKSBpcyBhIG51bGwgdGVybWluYXRlZAorc3RyaW5nLCB3aGVuIGl0J3MgYSBsZW5ndGggY291bnRlZCBzdHJpbmcuIEEgbmV3IHJvdXRpbmUsIGFkZGthcmcgd2FzCitjcmVhdGVkIHRvIGhhbmRsZSB0aGlzLgorCisrIGVlcHJvMTAwIHNob3VsZCBoYW5kbGUgbmV3ZXIgTklDcyB3aXRoIDI1NiBieXRlIEVFUFJPTXMgbm93LiBUaGlzCitpbmNsdWRlcyB0aGUgb25ib2FyZCBOSUNzIG9uIHNvbWUgbW90aGVyYm9hcmRzLCBzZWUgZmlsZSBOSUMuIFRoYW5rcyB0bworU3RlcGhhbiBMYXVmZmVyIGZvciBoZWxwaW5nIHdpdGggdGhlIGZpeGVzLiBXQVJOSU5HOiBUaGlzIGNvZGUgbWF5IGhhdmUKK2EgYnVnIHRoYXQgY2F1c2VzIHRoZSBvbmJvYXJkIEVFUFJPTSB0byBiZSBjb3JydXB0ZWQuIFdlIGJlbGlldmUgd2UgaGF2ZQorZm91bmQgYW5kIHJlbW92ZWQgdGhlIGJ1ZyBidXQgcGxlYXNlIHByb2NlZWQgd2l0aCBjYXJlLgorCisrIERIQ1BESVNDT1ZFUiB3YXMgc2VuZGluZyBvdXQgb25lIGJ5dGUgdG9vIG1hbnkgZm9yIFBBUkFNX0xJU1QuCisKKysgSW4gREhDUERJU0NPVkVSIHNlbmQgIkV0aGVyYm9vdCIgaW4gVkVORE9SX0NMQVNTX0lEIG9wdGlvbiAoNjApLiAgV2lsbAorYWRkIGNvZGUgbGF0ZXIgdG8gY2hlY2sgZm9yICJFdGhlcmJvb3QiIGluIHZlbmRvciBlbmNhcHN1bGF0ZWQgb3B0aW9ucy4KKworKyBVc2VkILVzIHRpbWVyIHJvdXRpbmVzIGluIDNjNTA5IGZvciBtb3JlIGFjY3VyYXRlIHRpbWluZyBhbmQgaGVuY2UKK2JldHRlciBoYXJkd2FyZSBkZXRlY3Rpb24uIFVzZSBDT01NQU5EX0lOX1BST0dSRVNTIGJpdCB0byBkZXRlY3QKK3RyYW5zbWl0IGNvbXBsZXRlIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgYSBmaXhlZCBhbW91bnQgb2YgdGltZS4gR2V0IHJpZAorb2YgZXRoX3ZlbmRvciBhbmQgYXNzb2NpYXRlZCB0ZXN0cywgaXQgZG9lc24ndCBzZXJ2ZSBhbnkgdXNlZnVsIHB1cnBvc2UKK3NpbmNlIHRoZSBkcml2ZXIgd2FzIG1vZHVsYXJpc2VkIGxvbmcgYWdvIGFuZCB0aGUgM2M1MDkgZGV0ZWN0aW9uIHN0YXR1cworaXMgc3RvcmVkIG91dHNpZGUgb2YgdGhlIGRyaXZlciBub3cuIEdvdCByaWQgb2Ygc29tZSB1bnVzZWQgZ2xvYmFsCitzdGF0aWNzIGluIDNjNTA5LmMsIGxlZnRvdmVycyB3aGVuIHRoZSBkcml2ZXJzIHdlcmUgbW9ub2xpdGhpYy4gV2FpdCAyCitzZWNvbmRzIGFmdGVyIGVuYWJsaW5nIFRQIGludGVyZmFjZSB0byBnaXZlIGl0IHRpbWUgdG8gY29tZSB1cC4gVGhpcworYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgVDUwOUhBQ0sgaW4gbWFpbi5jLgorCisrIEdldCByaWQgb2YgZXRoX3ZlbmRvciBhbmQgYXNzb2NpYXRlZCB0ZXN0cyBpbiBjczg5eDAuYywgc2FtZSByZWFzb25zCithcyBmb3IgM2M1MDkuYy4KKworKyBNb3ZlZCB0aGUgcmVzdCBvZiB0aGUgVkVORE9SXyBhbmQgRkxBR18gZGVmaW5lcyBpbnRvIG5zODM5MC5oLCBhcworbnM4MzkwLmMgaXMgdGhlIG9ubHkgZmlsZSB0aGF0IHVzZXMgdGhlbSBub3cuCisKKysgVXNlIGxvd2VyIDMyIGJpdHMgb2Ygbm9kZSBhZGRyZXNzICsgY3VycmVudCB0aW1lIGZvciB4aWQgKG5ldHdvcmsgYnl0ZQorb3JkZXIpLiBNb3JlIGxpa2VseSB0byBiZSBkaXN0aW5jdCBmcm9tIG90aGVyIGNsaWVudHMgdGhhbiBqdXN0IHRoZQorY3VycmVudCB0aW1lLCB3aGljaCBpcyBzaW1pbGFyIGZvciBhbGwgY2xpZW50cyBib290ZWQgYXQgYWJvdXQgdGhlIHNhbWUKK3RpbWUuCisKKysgU3VwcG9ydCBmb3IgMTYtYml0IGNvZGUgaGFzIGJlZW4gcmVtb3ZlZC4gIFhUcyBhbmQgQVRzIGFyZSBwcmV0dHkgbXVjaAorZGVhZCBub3cgYW5kIGluIGZhY3QgbWFueSBFdGhlcmJvb3QvMTYgZHJpdmVycyBoYXZlIGJlZW4gYnJva2VuIGZvciBhCit3aGlsZSBidXQgbm9ib2R5IG5vdGljZWQuIFRoaXMgc2hvdWxkIG1ha2Ugc29tZSBvZiB0aGUgY29kZSBlYXNpZXIgdG8KK21haW50YWluLiAgSWYgeW91IHJlYWxseSB3YW50ZWQgMTYgYml0IHN1cHBvcnQsIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mCitFdGhlcmJvb3QsIG1heWJlIDQuNCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LCBub3Qgc3VyZSB3aGVuIHRoaW5ncworc3RhcnRlZCBicmVha2luZyBmb3IgMTYgYml0IG1vZGUuCisKKysgU2hvdWxkIG5vdCBzdG9yZSBJUCBhbmQgVURQIGhlYWRlcnMgYXQgQk9PVFBfREFUQV9BRERSRVNTLiBSZWRlZmluZWQKK2Jvb3RwX3Qgd2l0aG91dCBJUCBhbmQgVURQIGhlYWRlcnMuIE5vdyByZXF1ZXN0ZWQgc2l6ZSBvZiBib290cCBwYWNrZXQKK21hdGNoZXMgc3RvcmFnZSBhdmFpbGFibGUuIERvIG5vdCBhZGQgc2l6ZW9mKGlwaGRyKSArIHNpemVvZih1ZHBoZHIpIHRvCitib290cCBwb2ludGVyIGluIHN0YXJ0MzIuUzp4c3RhcnQgbm93LiBzdGFydDE2LlM6eHN0YXJ0IHdhcyBicm9rZW4KK2JlY2F1c2UgaXQgZGlkIG5vdCBkbyB0aGlzIGFkZGl0aW9uIGJ1dCBub2JvZHkgbm90aWNlZC4KKworKyBSZW1vdmVkIGFycmF5IGtlcm5lbF9idWYsIHNhdmluZyAxMjggYnl0ZXMgYW5kIHJlcGxhY2VkIHdpdGgKK0tFUk5FTF9CVUYsIGEgcG9pbnRlciBpbnRvIHRoZSBicF9maWxlIG9mIHRoZSBib290cF9yZXBseSBzdHJ1Y3R1cmUgYXQKK0JPT1RQX0RBVEFfQUREUi4gTm90ZTogdGhpcyBkZXBlbmRzIG9uIHRoZSBzZXJ2ZXIgbm90IHNlbmRpbmcgT3B0aW9uCitPdmVybG9hZCB3aGljaCB3b3VsZCB1c2UgdGhlIHNuYW1lIGFuZCBmaWxlIGZpZWxkcyBmb3Igb3B0aW9ucywgYnV0IHdlCitkb24ndCByZXF1ZXN0IHRoaXMgb3B0aW9uIHNvIGl0IHNob3VsZG4ndC4gIFJlbW92ZWQgY2hhciAqa2VybmVsLAoraW5zdGVhZCBjaGVjayBLRVJORUxfQlVGWzBdIGp1c3QgYmVmb3JlIGJvb3RpbmcgYW5kIGlmIG51bGwsIHVzZQorZmFsbGJhY2sgZmlsZW5hbWUuICAoVGhpcyBpcyBuZWVkZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zIHRvIGJvb3RpbmcKK3Byb3RvY29sLikKKworKyBEZWZpbmUgYSBzaG9ydGVyIHRmdHByZXFfdCB0eXBlIGZvciBtYWtpbmcgcmVxdWVzdHMgaW5zdGVhZCBvZiB1c2luZyBhCitmdWxsIHNpemVkIHRmdHBfdCBwYWNrZXQgdG8gcmVkdWNlIHN0YWNrIHVzYWdlLgorCisrIERlZmluZWQgbWFjcm9zIGZvciBodG9ubC9odG9ucy9udG9obC9udG9ocyBmb3IgY2FzZXMgd2hlcmUgdGhlIG9wZXJhbmQKK2lzIGEgY29uc3RhbnQsIHNhdmluZyBhIGZ1bmN0aW9uIGNhbGwuCisKKysgU3RhcnRlZCBvbiBmaXJzdDMyLmMsIGEgcHJvdGVjdGVkIG1vZGUgMzItYml0IHZlcnNpb24gb2YKK2ZpcnN0LWxpbnV4LlMsIHdoaWNoIHNob3VsZCBiZSBmYXIgZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluLiBXaWxsCitib290IGJhc2ljIExpbnV4IGtlcm5lbHMgY29ycmVjdGx5IGJ1dCBkb2Vzbid0IGhhbmRsZSByYW1kaXNrIG9yCitrZXJuZWwgYXJndW1lbnRzIHlldC4KKworKyBVcGRhdGVkIG5mcy1zd2FwIGRvY3VtZW50YXRpb24gaW4gY29udHJpYi9uZnMtc3dhcCB0byBwb2ludCB0bworQ2xhdXMtSnVzdHVzIEhlaW5lJ3MgbmV3IHdlYiBwYWdlLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjEzIChkZXZlbG9wbWVudCkKKworKyBBZGRlZCBtb3JlIElEcyBmb3IgZWVwcm8xMDAgdmFyaWFudHMgdGFrZW4gZnJvbSB0aGUgTGludXggMi4yLjE4Citzb3VyY2UuIFNob3VsZCBoYW5kbGUgdGhlIEVFUFJPTSBwcm9wZXJseSBub3csIGEgZmV3IGRlZmluZXMgd2VyZSB3cm9uZworaW4gNC43LjEzLiAgTG9vcCBjb3VudGVyIHRpbWVvdXRzIGluIGVlcHJvMTAwLmMgcmVwbGFjZWQgd2l0aCBoYXJkd2FyZQordGltZW91dHMuICBEb24ndCBsb29wIHdhaXRpbmcgZm9yIHBhY2tldCBpbiBfcG9sbCwgcmV0dXJuIDAgaW1tZWRpYXRlbHkuCisKKysgZmlyc3QzMi5saW51eCB3b3Jrcy4gRG9lcyBrZXJuZWwgYXJndW1lbnRzIGFuZCByYW1kaXNrIGJ1dCBkb2Vzbid0IGRvCithcHBlbmRlZCBwYXJhbWV0ZXJzIGZyb20gbWVudSBzZWxlY3Rpb25zLCB3aGljaCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgYQorbW9yZSBlbGVnYW50IG1lbnUgc2NoZW1lIGFueXdheS4gIE5lZWRlZCBnYXRlQTIwIHJvdXRpbmVzIGluCitta25iaS0xLjEvZmlyc3QzMi5jIG90aGVyd2lzZSBjYW5ub3QgYWNjZXNzIGV4dGVuZGVkIG1lbW9yeS4KK2ZpcnN0MzIubGludXggc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIG1lbW9yeSA+IDY0IE1CLCB3aGljaCB0aGUgb2xkIG9uZQorY291bGRuJ3QuICBTdXBwb3J0IGZvciBmaXJzdDMycG0gY2FsbCBwcm90b2NvbCBhZGRlZC4KKworKyAzYzU5NS5jIGNoYW5nZWQgdG8gdXNlIGhhcmR3YXJlIHRpbWVyIGZvciBkZWxheXMuIFRyYW5zbWl0IHJvdXRpbmUKK3dhaXRzIGZvciBhIGZpeGVkIHBlcmlvZCBhZnRlciB0cmFuc21pdHRpbmcuIENoYW5nZWQgdG8gY2hlY2sKK1NfQ09NTUFORF9JTl9QUk9HUkVTUyBiaXQuIEl0IGFsc28gY29udGFpbnMgc29tZSBvZiB0aGUgc2FtZSB1bnVzZWQKK3ZhcmlhYmxlcyBhcyAzYzUwOS5jIGFuZCBtZW50aW9ucyAzYzUwOSBpbiBzb21lIGNvbW1lbnRzLiBDbGVhbmVkIHVwLgorCisrIEhtbSwgaG93IGNvbWUgdGhpcyB3YXNuJ3QgZml4ZWQgbG9uZyBhZ28/IFNob3VsZCBkaXNjYXJkIEJPT1RQL0RIQ1AKK3JlcGxpZXMgdGhhdCBhcmUgbm90IHRvIGJyb2FkY2FzdCBvciBvd24gTUFDIGFkZHJlc3MuIEkgZ3Vlc3MgeGlkIGNhdWdodAorcHJhY3RpY2FsbHkgYWxsIG9mIHRoZSBub24tbWF0Y2hpbmcgcGFja2V0cy4gKExhdGVyOiBBY3R1YWxseSB0aGUgTklDCitzaG91bGQgZmlsdGVyIG91dCBwYWNrZXRzIHdlIGRvbid0IHdhbnQsIGJ1dCBsZWF2ZSB0ZXN0IGluIGFueXdheSwgaXQncwordGhlIGxhc3QgdGVzdC4pCisKKysgUmVtb3ZlZCBsYXN0IHZlc3RpZ2VzIG9mIEVUSEVSQk9PVDMyIGFuZCBFVEhFUkJPT1QxNi4KKworKyBFVEhFUl9BRERSX1NJWkUgPT4gRVRIX0FMRU4sIEVUSEVSX0hEUl9TSVpFID0+IEVUSF9ITEVOLAorRVRIRVJfTUlOX1BBQ0tFVCA9PiBFVEhfWkxFTiwgRVRIRVJfTUFYX1BBQ0tFVCA9PiBFVEhfRlJBTUVfTEVOLiAgTW9yZQorTGludXh5IGFuZCB0aGVyZWZvcmUgbW9yZSBmYW1pbGlhciB0byBwcm9ncmFtbWVycy4KKworKyBDbGVhcmVkIHVwIGNvbmZ1c2lvbiB3aXRoIDYwLzY0IGFuZCAxNTE0LzE1MTggZm9yIG1pbmltdW0gYW5kIG1heGltdW0KK2ZyYW1lIHNpemVzLiBQcmFjdGljYWxseSBhbHdheXMgdGhlIHJpZ2h0IG51bWJlcnMgYXJlIDYwLzE1MTQsIGV4Y2VwdAordGhhdCBzb21lIGNoaXBzIGNvdW50IHRoZSBGQ1MgaW4gdGhlIHJlY2VpdmUgbGVuZ3RoLCB0aGVuIHdlIGhhdmUgdG8gdXNlCis2NC8xNTE4LgorCisrIE1ha2UgX19zd2FwMzIgYW5kIF9fc3dhcDE2IGlubGluZSByb3V0aW5lcyBhdmFpbGFibGUgZ2xvYmFsbHkgYXMKK3N3YXAzMiBhbmQgc3dhcDE2LiBlZXByby5jIGNhbiB1c2Ugc3dhcDE2IGluc3RlYWQgb2YgbWFraW5nIHVwIG9uZS4KKworKyBNYWtlIGF1aSBmaWVsZCBpbiBuaWMuaCBhbiBpbnQgc2luY2UgaXQgd2lsbCBiZSBwYWRkZWQgdG8gYSBsb25nd29yZAorYm91bmRhcnkgYW55d2F5IGFuZCBjYWxsIGl0IGZsYWdzIHNvIHRoYXQgb3RoZXIgZHJpdmVycyBjYW4gdXNlIGl0IGZvcgordGhlaXIgb3duIHB1cnBvc2VzLiBDdXJyZW50bHkgb25seSAzYzUwMyB1c2VzIGl0IHRvIGluZGljYXRlIEFVSSB4Y3ZyLgorCisrIE1ha2Ugc3ByaW50ZiByZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiBpbnN0ZWFkIG9mIGEgcG9pbnRlcgordG8gdGhlIGxhc3QgY2hhciB3cml0dGVuIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIHN0YW5kYXJkIEMuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjcuMTQgKGRldmVsb3BtZW50KQorCisrIFRoYW5rcyB0byBNYXJrIFZhbmRlV2V0dGVyaW5nIGZvciB0aGUgc3RhcnQgb2YgSG9tZVBOQSAobmV0d29ya2luZworb3ZlciBwaG9uZSBsaW5lcykgc3VwcG9ydCBmb3IgdGhlIEFNRCA3OUM5NzguCisKKysgQnVnIGZpeGVkIGluIGZpcnN0MzIuYyBoYW5kbGluZyBvZiAoaXB8bmZzcm9vdCk9WCB3aGVyZSBYIGlzIG5vdCByb20uCisKKysgZmlyc3QzMnBtLmxpbnV4IHdvcmtzLiBObyBuZWVkIHRvIGdvIGludG8gcmVhbCBtb2RlIHRvIGNhbGwgZmlyc3QzMnBtCithbmQgdGhlbiBpdCBnb2VzIGJhY2sgdG8gcHJvdGVjdGVkIG1vZGUuIFBhdmVzIHRoZSB3YXkgZm9yIGV4dGVuc2lvbgorcm91dGluZXMgdG8gRXRoZXJib290LiAgSW1wbGVtZW50IHByb2dyYW0gcmV0dXJucyB0byBsb2FkZXIgZmxhZyBpbgoraGVhZGVyIGZpZWxkLiAgQWRkZWQgb3B0aW9uIHRvIG1rbmJpIHRvIHNwZWNpZnkgdGhpcy4KKworKyBmaXJzdDMyKi5saW51eDogQ2hlY2sgdGFnIDEyOCBwcmVzZW50IGFuZCBjb3JyZWN0IGJlZm9yZSBhcHBlbmRpbmcgdGFnCisxMjkuIEFsc28gdGFnIDEyOSBzaG91bGQgYmUgYXBwZW5kZWQgdG8gcGFyYW1ldGVycyBiZWZvcmUgc3Vic3RpdHV0aW9ucy4KKworKyBNZXJnZWQgY2xlYW51cF9uZXQgaW50byBjbGVhbnVwIHNpbmNlIHRoZXkgYXJlIGFsd2F5cyBjYWxsZWQgdG9nZXRoZXIuCisKKysgRmxvcHB5IGJvb3RpbmcgZG9lc24ndCBuZWVkIHRvIGJlIHBhc3NlZCBCT09UUF9EQVRBX0FERFIuCisKKysgQ2xlYW4gdXAgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCB0YWdnZWQgaW1hZ2UgbG9hZGluZyBpbiBvc2xvYWRlci5jLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjE1IChkZXZlbG9wbWVudCkKKworKyBEdXBsaWNhdGVkIDNjOTAwIFBDSSBJRHMgdW5kZXIgM2M1OTUgYXMgc29tZSBOSUNzIGFwcGFyZW50bHkgZGV0ZWN0CithbmQgd29yayB3aXRoIHRoZSAzYzU5NSBkcml2ZXIgYnV0IG5vdCB0aGUgM2M5MHggZHJpdmVyLCBhY2NvcmRpbmcgdG8gYQorcmVwb3J0IGZyb20gRGlyayBQZmF1LiAoVGhlIDNjOTB4IHNlcmllcyBoYXMgdHdvIG1vZGVzIG9mIG9wZXJhdGlvbiwKK3Byb2dyYW1tZWQgSS9PIG1vZGUgZGVzY2VuZGVkIGZyb20gdGhlIDNjNTA5LCBnb29kIG9ubHkgZm9yIDEwIE1iCitvcGVyYXRpb24sIGFuZCBidXMgbWFzdGVyaW5nIG1vZGUsIGVzc2VudGlhbCBmb3IgMTAwIE1iIG9wZXJhdGlvbi4gRm9yCituZXR3b3JrIGJvb3RpbmcsIGVpdGhlciBtb2RlIGlzIGFjY2VwdGFibGUuKQorCisrIFJlbW92ZWQgYXV0byBmcm9tIGtlcm5lbCBwYXJhbWV0ZXJzOyBpdCdzIHRoZSBkZWZhdWx0IGFscmVhZHkuCisKKysgVXNlIGhhcmR3YXJlIHRpbWVyIGluc3RlYWQgb2YgbG9vcCBjb3VudGVyIGZvciB0cmFuc21pdCB0aW1lb3V0IGluCiszYzkweC5jLgorCisrIERlZmluZSBhIGptcGJ1ZiB0eXBlIGZvciBzZXRqbXAgYW5kIGxvbmdqbXAuIFRyaW0gc2l6ZSB0byA3IGxvbmdzLAordGhhdCdzIGFsbCB0aGF0J3MgbmVlZGVkLiBTdGFuZGFyZGlzZSB0aGUgcmV0dXJuIHZhbHVlcyBmcm9tIGxvbmdqbXA6CistMjogbG9hZGVyIGVycm9yLCAtMTogdGltZW91dCBvciBFU0MsIDAuLi46IHZhcmlvdXMgbWVhbmluZ3MgdG8KK0V0aGVyYm9vdCBtYWluIGxvYWRlci4KKworKyBBbnNpZnkgZnVuY3Rpb24gaGVhZGVycyBpbiBib290bWVudS5jLgorCisrIE1ha2UgX2ludDEwIHJldHVybiBheCB8IChieCA8PCAxNikgYXMgcmVzdWx0IHNvIHRoYXQgdGhlc2UgY2FuIGJlCithY2Nlc3NlZCBtb3JlIGVmZmljaWVudGx5IGluIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cy4KKworKyBNYWtlIGhhbmRsZWFuc2kgdGFrZSB1bnNpZ25lZCBpbnQgaW5zdGVhZCBvZiB1bnNpZ25lZCBjaGFyIGFzCithcmd1bWVudCwgb3RoZXJ3aXNlIGV4dHJhIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQgdG8gaGFuZGxlIHRoaXMKK2FjY29yZGluZyB0byBBTlNJIHJ1bGVzLiAgKFF1aXRlIHNpZ25pZmljYW50IHNhdmluZyBvZiA1NSBieXRlcy4pIFJlbmFtZQoraXQgYW5zaV9wdXRjIGZvciBjbGFyaXR5LgorCisrIFByZWZpeCBnZXRjLCBwdXRjIGFuZCBpc2NoYXIgd2l0aCBjb25zb2xlXyB0byBtYWtlIHRoaW5ncyBjbGVhcmVyIGFuZAordG8gYXZvaWQgY29uZnVzaW9uIHdpdGggdGhlIFVuaXggZ2V0YywgcHV0Yy4KKworKyBBZGQgbWVudSBhcyBhIHRhcmdldCB0byBta25iaS4gU3RhcnRlZCBzb3VyY2UgY29kZSBmb3IgbWVudSBleHRlbnNpb24uCitTdWNjZXNzZnVsbHkgdHJhbnNmZXJyZWQgY29udHJvbCB0byBtZW51IGF0IDB4MTAwMDAgYW5kIGJhY2suIEFOU0kKK2NvbG91ciBjb250cm9scyB3b3JrLCBhdCBsZWFzdC4gUmV0dXJuIGVuZCBuZWVkcyBtb3JlIHdvcmsuCisKKysgU3RhcnRlZCBvbiBFTEYgc3VwcG9ydCBpbiBta25iaS4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNy4xNiAoZGV2ZWxvcG1lbnQpCisKKysgQWRkZWQgYXRmdHAgMC4yIChmdHA6Ly9mdHAubWFtYWxpbnV4LmNvbS9wdWIvYXRmdHAvKSB0byBjb250cmliLy4KK1N1cHBvc2VkbHkgY29udGFpbnMgYSB0ZnRwZCB0aGF0IHJ1bnMgbXVsdGl0aHJlYWRlZCwgd2hpY2ggbWF5IGhlbHAKK3Blb3BsZSBoYXZpbmcgcHJvYmxlbXMgd2l0aCAqaW5ldGQgc2h1dHRpbmcgZG93biB0ZnRwZHMgdGhhdCBzcGF3biB0b28KK2Zhc3QuCisKKysgQWRkZWQgYSBmZXcgbW9yZSBUdWxpcCBlbnRyaWVzIHRvIGNvbmZpZy5jIGFuZCBOSUMsIG5vdCBhbGwgb2YgdGhlbQoraGF2ZSBiZWVuIGNvbmZpcm1lZCB3b3JraW5nLgorCisrIEdvdCBFTEYgZm9ybWF0IGNyZWF0aW9uIGluIG1rZWxmLWxpbnV4IHdvcmtpbmcgbm93LiBBdCBsZWFzdCBvbmUgZW1wdHkKK3NlY3Rpb24gaGVhZGVyIGlzIHJlcXVpcmVkIHRvIG1ha2UgYSB2YWxpZCBFTEYgZmlsZS4KKworKyBBZGRlZCBjb2RlIHRvIHN1cHBvcnQgbm9uLU1VTFRJQk9PVCBFTEYgd2hlbiBJTUFHRV9FTEYgaXMgc2VsZWN0ZWQgYnV0CitJTUFHRV9NVUxUSUJPT1QgaXMgbm90LiAgQm9vdGluZyBmcm9tIGltYWdlcyBjcmVhdGVkIGJ5IG1rZWxmLWxpbnV4Citub3cgd29ya3MhCisKKysgVEFHR0VEX0lNQUdFIGlzIG5vdyBub3QgYWx3YXlzIHNlbGVjdGVkLiBJdCdzIGp1c3QgdGhlIGZhbGxiYWNrIGlmCitub25lIG9mIFRBR0dFRF9JTUFHRSwgQU9VVF9JTUFHRSBvciBFTEZfSU1BR0UgaXMgc2VsZWN0ZWQuIFRoZXJlZm9yZSB5b3UKK211c3QgZXhwbGljaXRseSBzZWxlY3QgVEFHR0VEX0lNQUdFIGlmIHlvdSB3YW50IGl0LCBhbmQgeW91IGhhdmUKK3NlbGVjdGVkIEFPVVRfSU1BR0Ugb3IgRUxGX0lNQUdFLiAgU3RhcnR1cCBiYW5uZXIgbGluZSBkaXNwbGF5cyBhbGwKK2ltYWdlIGZvcm1hdHMgYWNjZXB0ZWQuCisKKysgZXhpdCgpIGluIG1rbmJpL3N0YXJ0MzIuUyBzaG91bGQgY29weSBhcmd1bWVudCB0byAlZWF4IGZpcnN0LgorCisrIEltYWdlcyB3aXRoIDB4QUE1NSBpbiBieXRlcyA1MTAtNTExIGFyZSBubyBsb25nZXIgYWNjZXB0ZWQsIHdoaWNoCitzaG91bGQgcmVqZWN0IGludmFsaWQgZm9ybWF0cyBub3csIGUuZy4gTGludXgga2VybmVsIGltYWdlcywgd2hpY2ggaGF2ZQorYSBib290IHNlY3RvciBpbiB0aGUgZmlyc3QgYmxvY2suIFN0cmljdGx5IHRoaXMgZG9lcyBub3QgY29uZm9ybSB0byB0aGUKK29yaWdpbmFsIG5ldGJvb3Qgc3BlYyBieSBKYW1pZSBIb25hbiwgd2hpY2ggc3BlY2lmaWVzIHRoYXQgbm9uLXRhZ2dlZCwKK2xpbmVhciBpbWFnZXMgc3RhcnRpbmcgZnJvbSAweDEwMDAwIGFyZSBhbGxvd2VkLCBidXQgdGhhdCBmb3JtYXQgaXMKK3ByZXR0eSB1c2VsZXNzIG5vdy4gQW55IGRlY2VudCBsb2FkaW5nIHNjaGVtZSBuZWVkcyBhIHJvYWRtYXAgdG8gdGhlCitibG9ja3MgaW4gdGhlIGRvd25sb2FkZWQgZmlsZSwgd2hpY2ggaXMgd2hhdCB0YWdnZWQsIGEub3V0LCBvciBFTEYKK2ltYWdlcyBwcm92aWRlIGluIHRoZSBoZWFkZXIuIFE6IFdoYXQgaXMgY29uZmlnX2J1ZmZlciBpbiBtYWluLmMgZm9yPworTm90aGluZyBlbHNlIHNlZW1zIHRvIHVzZSBpdC4gSXMgaXQgYSByZWxpYyBvZiBub24tdGFnZ2VkIGltYWdlcz8KKworKyBDbGVhbiB1cCBsb3RzIG9mIG9ic29sZXRlIHByb3RvdHlwZXMgaW4gZXRoZXJib290LmguIEFuc2lmeSBsb3RzIG9mCitmdW5jdGlvbiBoZWFkZXJzIGluIG1haW4uYy4gTWFrZSBsb3RzIG9mIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGluCittYWluLmMgc3RhdGljLiAgTWFrZSBib290bWVudS5jOmdldG9wdHZhbHVlKCkgc3RhdGljLgorCisrIFNpbXBsZSBleHRlcm5hbCBtZW51IHByb2dyYW0gd29ya3MhCisKKysgTW9yZSBkb2N1bWVudGF0aW9uIGNsZWFudXAsIG5vdGFibHkgZWRpdGluZyB0aGUgY29tcGlsZSBvcHRpb25zIHRvCittYXRjaCB3aGF0IGhhcyBiZWVuIGRvbmUuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjcuMTcgKGRldmVsb3BtZW50KQorCisrIE1hcnR5IENvbm5vciBkaWQgaXQgYWdhaW4hIEhlIGZvdW5kIGEgbG9uZyBzdGFuZGluZyBidWcgaW4gdGhlIFBuUCBST00KK2hlYWRlciB3aGljaCBjYXVzZWQgaXQgbm90IHRvIGJlIHJlY29nbmlzZWQgYnkgQklPU2VzLiBOb3cgRXRoZXJib290IFJPTQoraW1hZ2VzIGFyZSBQblAgY29tcGxpYW50LiBJIGhhY2tlZCBtYWtlcm9tLmMgdG8gZmlsbCBpbiB0aGUgb2Zmc2V0IG9mCit0aGUgaWRlbnQgc3RyaW5nIGZvciB0aGUgZGV2aWNlIHN0cmluZyBzbyB0aGF0IHRoZSBCSU9TIGNhbiBldmVuIHByaW50CitvdXQgIkV0aGVyYm9vdCIgYW5kIHRoZSBkZXZpY2UgaWRlbnQgb24gYm9vdCB1cC4KKworKyBNYWRlIGRlbW8gbWVudSBwcm9ncmFtIGEgYml0IG1vcmUgZWxhYm9yYXRlIHdpdGggdGltZW91dC4KKworKyBJZ29yIFYuIEtvdmFsZW5rbyBmaXhlZCB0aGUgV2luYm9uZCBXODlDODQwIGRyaXZlciB0byB1c2UgdGhlIGhhcmR3YXJlCit0aW1lciBpbnN0ZWFkIG9mIENQVSBjb3VudGVyIGxvb3BzLiBOb3cgbm9uZSBvZiB0aGUgRXRoZXJib290IGRyaXZlcnMKK3JlbHkgb24gQ1BVIHNwZWVkIGRlcGVuZGVudCBsb29wcy4KKworKyBTbWFsbCBmaXggdG8gY29udHJpYi9wOTEwbmQuYyB0byBub3QgdXNlIGdldHByb3RvYnluYW1lIHdoaWNoIHJlcXVpcmVzCitsaWJuc3NfZmlsZXMuc28sIHdoaWNoIG1heSBub3QgYmUgaW5zdGFsbGVkIGluIGFsbCBlbnZpcm9ubWVudHMuCisKKysgU21hbGwgY2hhbmdlIHRvIGNvbnRyaWIvbWtmZnduYiB0byBhbGxvdyB0aGUgdXNlciB0byBjaG9vc2UgRUxGIGZvcm1hdAorKGJ5IGVkaXRpbmcgb25lIGxpbmUpIGluc3RlYWQgb2YgdGFnZ2VkIGZvcm1hdC4KKworKyBQYXRjaCB0byBhdGZ0cC0wLjIgdG8gbWFrZSBpdCBhY2NlcHQgYSBmaWxlbmFtZSBpZiB0aGUgZGlyZWN0b3J5IGlzIGEKK3ByZWZpeCBvZiB0aGUgZmlsZW5hbWUuIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgdmFsaWQgYWJzb2x1dGUgcGF0aG5hbWVzCit3aWxsIHdvcmsuIFBhdGNoIHNlbnQgdG8gYXRmdHAgYXV0aG9ycy4KKworKyBBZGRlZCBzdXBwb3J0IGZvciBmaWx0ZXJpbmcgb3V0IHJlcGxpZXMgd2hpY2ggZG8gbm90IGluY2x1ZGUgYSBWZW5kb3IKK0NsYXNzIElkZW50aWZpZXIgb2YgIkV0aGVyYm9vdCIgaW4gdGhlIFZlbmRvciBFbmNhcHN1bGF0ZWQgT3B0aW9ucy4gVGhpcworY2FuIGJlIHVzZWQgdG8gc2VsZWN0IG9ubHkgdGhlIERIQ1Agc2VydmVycyB3aGljaCB3ZSB3YW50IHRvIGdldAorYWRkcmVzc2VzIGZyb20gYW5kIHJlamVjdCB0aGUgcmVzdC4gIFNlbGVjdCB0aGUgY29tcGlsZSBvcHRpb24KKy1EUkVRVUlSRV9WQ0lfRVRIRVJCT09ULiBUaGlzIHJlcXVpcmVzIElTQyBESENQRCAyIG9yIDMgQUZBSUsuICAoSXQncworbm90IGRvY3VtZW50ZWQgaW4gREhDUEQgMiwgYnV0IGl0IHdvcmtzLikgT3RoZXIgREhDUCBzZXJ2ZXJzIG1heSBzdXBwb3J0CitWRU8uIChJdCdzIGEgUkZDMjEzMiBvcHRpb24uKQorCisrIEppbSBUaG9tYXMgc3VnZ2VzdGVkIGEgd2F5LCBvdGhlciB0aGFuIGNyZWF0aW5nIC9mYXN0Ym9vdCwgb2YKK3ByZXZlbnRpbmcgZnNjayBmcm9tIHJ1bm5pbmcgb24gTkZTIHJvb3QsIGxuIC1zIC9iaW4vdHJ1ZQorL3NiaW4vZnNjay5uZnMuIE5vdCB2ZXJpZmllZCBidXQgc2hvdWxkIHdvcmsuIEFkZGVkIHRvIGRvY3VtZW50YXRpb24uCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjcuMTggKGRldmVsb3BtZW50KQorCisrIFBhdmVsIFRrYXRjaG91ayB2ZXJpZmllcyB0aGF0IGxhbmNlLmMgY2FuIGhhbmRsZSBQQ25ldC1GQVNUIElJSQorNzljOTczLiBBZGRlZCBhIG5ldyBlbnRyeSB0byBsYW5jZS5jIGFuZCBOSUMuIE5JQyBlbnRyeSBub3QgdmVyaWZpZWQKK3lldC4KKworKyBFbmhhbmNlZCBkaXNuYmkgdG8gZGVjb2RlIEVMRiBpbWFnZXMgdG9vLgorCisrIEFycmdoISBUaGVyZSBhcmUgb2xkIEJJT1NlcyB0aGF0IHJlbHkgb24gdGhlIHdyb25nIG9yZGVyIG9mIHRoZSBieXRlcworaW4gdGhlIGRldmljZSBpZGVudGlmaWVyIGluIHRoZSBQQ0lSIGFuZCBQblAgc3RydWN0dXJlcy4gV3JvdGUgYSBQZXJsCitwcm9ncmFtIHN3YXBkZXZpZHMucGwgdG8gc3dhcCB0aGVzZSBieXRlcy4gQXBwbHkgdGhpcyB0byBpbWFnZSBmaWxlIGp1c3QKK2JlZm9yZSBwcm9ncmFtbWluZyB0aGUgRVBST00uCisKKysgTWFydHkgQ29ubm9yIHN1Z2dlc3RlZCB0aGF0IHRoZSBzcGVjcyBzdGF0ZSB0aGF0IGZvciBQblAgUk9NcyB0aGUKK3Vuc3VjY2Vzc2Z1bCByZXR1cm4gZnJvbSBib290IHNob3VsZCBiZSBpbnQgMHgxOCByYXRoZXIgdGhhbiBpbnQgMHgxOS4KK1VzaW5nIGludCAweDE5LCBzZWxlY3RpbmcgTCBmb3IgbG9jYWwgZGV2aWNlIGRvZXNuJ3Qgd29yay4gRml4ZXMgbmVlZGVkCitpbiBib3RoIGxvYWRlci5TIGFuZCBzdGFydDMyLlMgKGdldCBscmV0IHRvIHdvcmsgcHJvcGVybHksIGluc3RlYWQgb2YKK2RvaW5nIGFuIGludCAweDE5IGRpcmVjdGx5LCBpbnZvbHZlZCBzYXZpbmcgc3MgYW5kIHNwIGluIHJlYWwgbW9kZQoraW5zdGVhZCBvZiBpbiBwcm90ZWN0ZWQgbW9kZSkuCisKKysgV3JvdGUgYSBQZXJsIHByb2dyYW0gZGlzcm9tLnBsIHRvIGRpc3BsYXkga2V5IHN0cnVjdHVyZXMgb2YgYSBST00KK2ltYWdlLgorCisrIEFkZGVkIGNhbGwgdG8gYmlubW9kZSgpIGluIHZhcmlvdXMgUGVybCB1dGlsaXRpZXMgc28gdGhleSBzaG91bGQgd29yawordW5kZXIgb3RoZXIgT1Nlcy4KKworKyBBZGRlZCBjaGVjayBpbiBtYWtlcm9tLmMgdG8gd2FybiBpZiA1NSBBQSBub3QgZm91bmQgYXQgc3RhcnQgb2YgaW1hZ2UuCitJdCBzZWVtcyBzb21lIHBlb3BsZSBkb24ndCByZWFkIHRoZSB3YXJuaW5nIG5vdCB0byB1c2UgdGhlIExpbnV4CitzdXBwbGllZCBhczg2LgorCisrIEl0IHNlZW1zIFogaXMgYSByZWNlbnQgYWRkaXRpb24gdG8gcGFjay91bnBhY2sgZm9ybWF0cyBpbiBQZXJsIGFuZAorZXZlbiBhIFBlcmwgYXMgcmVjZW50IGFzIDUuMDA0IGRvZXNuJ3QgaW1wbGVtZW50IGl0LiBDaGFuZ2UgWjUgaW4KK21rbmJpLnBsIGFuZCBUcnVuY0ZELnBtIHRvIGE1IHNpbmNlIHdlIG9ubHkgbmVlZCB0byBjb21wYXJlIGl0IGFnYWluc3QKKydGQVQxMicgYW5kICdGQVQxNicuCisKKysgU29tZSBlcnJvcnMgZm91bmQgaW4gb3Nsb2FkZXIuYyBpbiB0aGUgI2lmZGVmIElNQUdFX01VTFRJQk9PVAorc2VjdGlvbnMuICBrZXJuZWwgc2hvdWxkIGJlIEtFUk5FTF9CVUYgYW5kIHVuaW9uIGluZm8gc2hvdWxkIGhhdmUKK3Vuc2lnbmVkIHNob3J0IHNbMjU2XTsuIEFsc28ga2VybmVsIC0+IEtFUk5FTF9CVUYgZm9yIElNQUdFX0ZSRUVCU0QsCitvYnZpb3VzbHkgZmV3IEZSRUVCU0QgdXNlcnMgaGF2ZSB0cmllZCBjb21waWxpbmcgaXQuCisKKysgRXhwbGFpbiBpbiBkb2NzIHRoYXQgLmNvbSBhbmQgLihseilsaWxvIGltYWdlcyBjYW4gYmUgZ2VuZXJhdGVkIGFuZAordG91Y2ggYnJpZWZseSBvbiBob3cgdG8gdXNlIHRoZW0uCisKKysgRG9uYWxkIENocmlzdGVuc2VuIGNvbnRyaWJ1dGVkIHRyYW5zbGF0aW9ucyBvZiBmbG9wcHlsb2FkLlMgYW5kCitsb2FkZXIuUyB0byBnYXMgc3ludGF4LiBDdXJyZW50bHkgdGhleSBhcmUgaW4gY29udHJpYi9nYXNzeW50YXgvLiAgVGhleQorcG90ZW50aWFsbHkgYWxsb3cgdXMgdG8gdGhyb3cgYXdheSBhczg2IGFuZC9vciBuYXNtIGFuZCB1c2UgR05VIHRvb2xzCit0aHJvdWdob3V0LCBidXQgSSBoYXZlIHRvIGRvIHNvbWUgd29yayBvbiB0aGVtOiAxLiBJIGhhdmUgdG8gY2hlY2sgd2hhdAordmVyc2lvbnMgb2YgZ2FzIGFjY2VwdCB0aGUgc3ludGF4LCB0aGUgMTYtYml0IG1vZGUgaW4gZ2FzIHdhcyBhIHJlY2VudAorZW5oYW5jZW1lbnQ7IDIuIEkgaGF2ZSB0byBwdXQgYmFjayB0aGUgI2lmZGVmIFBDSV9QTlBfSEVBREVSIGludG8KK2xvYWRlci5TIGFuZCBhbHNvIGJyaW5nIGl0IHVwIHRvIGRhdGUgdG8gdGhlIHJlY2VudCBwYXRjaGVzLgorZmxvcHB5bG9hZC5TIHNob3VsZCBiZSB1c2FibGUgYXMgaXMuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA0LjcuMTkgKGRldmVsb3BtZW50KQorCisrIERvbmFsZCBDaHJpc3RlbnNlbiBjb21wbGV0ZWQgdGhlIHRyYW5zbGF0aW9uIG9mIGxvYWRlci5TIGFuZCBhbGwgdGhlCitvdGhlciAuUyBmaWxlcyBpbiB0aGUgc3JjIGRpcmVjdG9yeSB0aGF0IHByZXZpb3VzbHkgcmVxdWlyZWQgYXM4NiBvcgorbmFzbS4gTm8gbW9yZSBmdXR6aW5nIGFyb3VuZCB3aXRoIHByZWNvbXBpbGVkIHZlcnNpb25zLiBZaXBlZSEKKworKyBMdWlnaSBSaXp6byBjb250cmlidXRlZCBhIHNsaWdodGx5IGhhY2tlZCBGcmVlQlNEIGxvYWRlciB0aGF0IHdvcmtzIG9uCitmbG9wcHkgb3IgaGFyZCBkaXNrLiBTZWUgYm9vdDFhLnMgZm9yIGRldGFpbHMuIE1ha2VmaWxlIHJ1bGVzIGVkaXRlZC4KK1RhcmdldHMgcmVuYW1lZCAuZHNrIGFuZCAubHpkc2sgdG8gaW5kaWNhdGUgdGhleSdyZSBub3QgZmxvcHB5IHNwZWNpZmljCitub3cuIERvY3VtZW50YXRpb24gdXBkYXRlZC4gSSBub3RlIHRoYXQgdGhlIGxvYWRlciBpcyBzbWFydCBlbm91Z2ggdG8KK2ZpZ3VyZSBvdXQgZXhhY3RseSBob3cgbWFueSBzZWN0b3JzIGhhdmUgdG8gYmUgcmVhZC4KKworKyBSZW5hbWVkIGNvbWxvYWQuUyB0byBjb21wcmVmaXguUyB3aGljaCBkZXNjcmliZXMgaXQgYmV0dGVyLgorCisrIG1rbmJpIHRvb2xzIHNwbGl0IG91dCBpbnRvIHNlcGFyYXRlIHBhY2thZ2UgZm9yIGluZGVwZW5kZW50CitkZXZlbG9wbWVudC4KKworKyBVc2UgQTMyIGluc3RlYWQgb2YgWjMyIGluIHVucGFjayBmb3JtYXQgaW4gZGlzcm9tLnBsIGluIGNhc2Ugd2UKK2VuY291bnRlciBvbGQgUGVybCB2ZXJzaW9ucyAoPCA1LjAwNSkuCisKKysgVmVuZG9yIENsYXNzIElkZW50aWZpZXIgc3RyaW5nIHRoYXQncyBzZW50IG91dCBpcyBub3cgb2YgdGhlIGZvcm0KK0V0aGVyYm9vdC14LnkgKDEzIGJ5dGVzIGxvbmcpLgorCisrIFJlZHVjZWQgc2l6ZSBvZiBlZV9kYXRhIGluIGRhdmljb20uYyB0byAzMiBieXRlcyBiZWNhdXNlIHdlIG9ubHkgbmVlZAordG8gYWNjZXNzIHRoZSBNQUMgYWRkcmVzcyBpbiBieXRlcyAyMDoyNS4KKworKyBDaGFuZ2VkIHR5cGUgb2YgZm9ybWFsIGFyZ3VtZW50cyB0byBwY2kuW2NoXSByb3V0aW5lcyB0byB1bnNpZ25lZCBpbnQKK2V4Y2VwdCBmb3IgdGhlIGxhc3QgYXJndW1lbnQsIGJlY2F1c2UgaW4gQU5TSSBDIHBhcmFtZXRlciBwYXNzaW5nIGlzCitsaWtlIGFzc2lnbm1lbnQgYW5kIGV4dHJhIGR1bW15IHZhcmlhYmxlcyBhbmQgY29kZSBtYXkgbmVlZCB0byBiZQorZ2VuZXJhdGVkIGlmIHRoZSBmb3JtYWwgYXJndW1lbnQgdHlwZSBpcyBub3QgdGhlIHRoZSBzYW1lIHNpemUgYXMgdGhlCithY3R1YWwgYXJndW1lbnQgdGhhdCBnZXRzIHB1c2hlZCBvbiB0aGUgc3RhY2suIE5vdCBpbnNpZ25pZmljYW50CitvdmVyaGVhZCwgcmVkdWN0aW9uIGZyb20gMTg1MyB0byAxNzI3IGJ5dGVzIGR1ZSB0byBjaGFuZ2UuIENoYW5nZWQgZGV2Zm4KK2FuZCBidXMgbWVtYmVycyBvZiBzdHJ1Y3QgcGNpX2RldmljZSB0byB1bnNpZ25lZCBjaGFyIHRvIGVuZm9yY2UgbGltaXQKK29uIHR5cGUuIFN1cnByaXNpbmdseSB0aGlzIHJlZHVjZWQgdGhlIHNpemUgZnVydGhlciB0byAxNjY3IGJ5dGVzLgorUHJvYmFibHkgdGhlIGNvbXBpbGllciBjb3VsZCBkbyBtb3JlIG9wdGltaXNhdGlvbnMgYWZ0ZXIgdGhlIGxhc3QKK2NoYW5nZS4KKworKyBTb21lIGRyaXZlcnMgaGFyZHdpcmVkIDAgZm9yIGJ1cyBudW1iZXIgaW4gY2FsbHMgdG8gcGNpYmlvc18qCitmdW5jdGlvbnMuIENoYW5nZWQgdG8gcGNpLT5idXMsIHdoaWNoIGlzIHNldCBpbiBzY2FuX2J1cy4gT25seQorcGVvcGxlIHdpdGggTklDcyBub3Qgb24gYnVzIDAgd291bGQgaGF2ZSBub3RpY2VkLgorCisrIEZvdW5kIGEgY291cGxlIG1vcmUgb2xkLXN0eWxlIHByZS1BTlNJIEMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLiBUdXJuZWQKK29uIC1hbnNpIGFuZCAtcGVkYW50aWMgZm9yIGtpY2tzIGFuZCBmaXhlZCBzb21lIG5vbi1BTlNJbmVzcywgZS5nLgorLy8gY29tbWVudCBpbiAjZGVmaW5lLCB0ZXh0IGFmdGVyICNlbmRpZiwgY2FzdGluZyBtZW1jcHkgYXJndW1lbnRzIHRvCit2b2lkICosIHVzaW5nIHZvaWQgKiBpbnN0ZWFkIG9mIGNoYXIgKi4gU29tZSBjaGFyIGRlY2xhcmF0aW9ucyBjaGFuZ2VkCit0byB1bnNpZ25lZCBjaGFyLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjIwIChkZXZlbG9wbWVudCkKKworKyBJIGNoYW5nZWQgbXkgbWluZC4gSSB0aGluayB0aGUgZm9ybWF0IGluIGRpc3JvbS5wbCBzaG91bGQgYmUgWjMyLAorb3RoZXJ3aXNlIGl0IGRpc3BsYXlzIGJpbmFyeSBjaGFyYWN0ZXJzIGFmdGVyIHRoZSB2YWxpZCBwYXJ0IG9mIHRoZQorc3RyaW5nLiBGb3IgcGVvcGxlIHdpdGggUGVybCA8IDUuMDA1LCBwbGVhc2UgdXBncmFkZS4KKworKyBNb3ZlZCBSRUxPQyBkb3duIHRvIDB4OTQwMDAuIFR1cm5lZCBvbiBVU0VfSU5URVJOQUxfQlVGRkVSIGJ5IGRlZmF1bHQuCitVbmxlc3MgQk9PVFBfREFUQV9BVF8weDkzQzAwIGlzIGRlZmluZWQsIHVzZSBpbnRlcm5hbCBib290cCBzdHJ1Y3V0cmUuCitUaGlzIGdldHMgRXRoZXJib290IG91dCBvZiB0aGUgYXJlYSBqdXN0IGJlbG93IDB4MTAwMDAgYW5kIHRoZSBhcmVhIGZyb20KKzB4OTNDMDAtMHg5M0ZGRi4gREhDUCBwYWNrZXRzIGNhbiBub3cgYmUgYXMgbGFyZ2UgYXMgdGhlIEV0aGVybmV0CitwYXlsb2FkLiBMYXRlciBvbiwgZmlyc3QzMi5jIGFuZCB0aGUgcGFyYW1ldGVyIGFyZWEgY291bGQgZXhwYW5kIGEgYml0LgorSW4gbGFuY2UuYyBoYWQgdG8gcmVkdWNlIFJYX1JJTkdfU0laRSAoYnkgcmVkdWNpbmcgTEFOQ0VfTE9HX1JYX0JVRkZFUlMpCitmcm9tIDE2IHRvIDQgdG8gZml0IHRoZSBkcml2ZXIuIEknZCBsaWtlIHRvIGhlYXIgZmVlZGJhY2sgZnJvbSBsYW5jZQordXNlcnMuIElzIDI0a0Igb2YgcmVjZWl2ZSBidWZmZXJzIHJlYWxseSBuZWVkZWQgZ2l2ZW4gdGhhdCBFdGhlcmJvb3QKK3VzZXMgc3RvcC13YWl0IHByb3RvY29scz8KKworKyBEb3VnIEFtYnJpc2tvIHNlbnQgaW4gc29tZSBwYXRjaGVzIGZvciBGcmVlQlNEOiBhIGNvcnJlY3Rpb24gZm9yIG9uZQordHlwbyBJIG1pc3NlZCBhbmQgY2hhbmdlcyB0byBtYWtlIGNvbXBpbGF0aW9uIHVuZGVyIEZyZWVCU0QgZWFzaWVyLgorCisrIE1pY2hhZWwgU2lueiBjb250cmlidXRlZCBwYXRjaGVzIHRvIGFsbG93IHRoZSBGcmVlQlNEIGxvYWRpbmcgY29kZSB0bworbG9hZCBkZWJ1Z2dpbmcgc3ltYm9scyBhbHNvLgorCisrIE1hcnR5IENvbm5vciBjb250cmlidXRlZCBhIFNpUzkwMCBkcml2ZXIuIEFsc28gcG9pbnRlZCBvdXQgdGhhdCBpZgorQVNLX0JPT1QgPD0gMCwgdGhlIHByb21wdCBhbmQgcmVhZCBzaG91bGRuJ3QgZXZlbiBoYXBwZW4uIENvbmRpdGlvbmFsCitjb2RlIHJld29ya2VkLgorCisrIFNwbGl0IGRvY3VtZW50YXRpb24gaW50byB1c2VyIG1hbnVhbCBhbmQgZGV2ZWxvcGVyIG1hbnVhbC4gQWRkZWQKK21hdGVyaWFsLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjIxIChkZXZlbG9wbWVudCkKKworKyBQcmVzdG9uIFdpbHNvbiBwb2ludGVkIG91dCB0aGF0IGRzLmludGVybmljLm5ldCBzaG91bGQgYmUgcmVwbGFjZWQgYnkKK3d3dy5pZXRmLm9yZyBpbiBkb2N1bWVudGF0aW9uIFVSTHMuIEFsc28gUkZDMTA5MCBzaG91bGQgYmUgUkZDMTA5NAorKE5GUykuCisKKysgTWFydHkgQ29ubm9yIHBvaW50ZWQgb3V0IHNvbWUgYnJva2VuIGxpbmtzIGR1ZSB0byB0aGUgc3BsaXQgaW4KK2RvY3VtZW50YXRpb24uIEFsc28gY29tbWVudHMgZG9uJ3QgbWF0Y2ggY29kZSBpbiBsYW5jZS5jIGZvciBjaGFuZ2UganVzdAorYWJvdmUuIEFsc28gcGFzc2VkIG9uIGEgYnVnIGZvdW5kIGJ5IGEgdXNlciBvZiByb20tby1tYXRpYy5uZXQgd2hlcmUKK3RmdHAgd2FzIG5vdCBkZWZpbmVkIHdoZW4gQU5TSUVTQyB3YXMgZGVmaW5lZC4gTXkgbWlzdGFrZSwgSSBtYWRlIGl0IGEKK3N0YXRpYyBmdW5jdGlvbiB3aGVuIGl0IG5lZWRzIHRvIGJlIGV4cG9ydGVkIHRvIGFuc2llc2MuYy4KKworKyBDaHJpc3RvcGggUGxhdHRuZXIgZm91bmQgdGhhdCB0aGUgRXRoZXJib290IHN0YXJ0dXAgbWVzc2VzIHVwIHRoZQorZmxhZ3Mgd2hpbGUgdGVzdGluZyBmb3IgYSAzODYrLiBUaGlzIGRvZXNuJ3QgYWZmZWN0IEV0aGVyYm9vdCBidXQgaXQgY2FuCitjYXVzZSB0aGUgbG9hZGVkIG9wZXJhdGluZyBzeXN0ZW0gdG8gY3Jhc2guIEZpeDogcHVzaGYgYmVmb3JlIGFuZCBwb3BmCithZnRlciB0aGUgQ1BVIG1vZGVsIHRlc3RpbmcuCisKKysgSmVhbi1KYWNxdWVzIE1pY2hlbCBjb250cmlidXRlZCBwYXRjaGVzIHRvIHRoZSB2aWEtcmhpbmUuYyBkcml2ZXIgdG8KK21ha2UgaXQgd29yayBmb3IgdGhlIFZUNjEwMiBtb2RlbCBhcyB1c2VkIG9uIHNvbWUgREZFNTMwLVRYIFJldi5BMyBOSUNzLgorCisrIEx1aWdpIFJpenpvIHNlbnQgaW4gYSBmaXhlZCBib290MWEucyB0aGF0IGFjdHVhbGx5IHdvcmtzIG9uIEhEcyBub3cuCisKKysgU3RlZmFuIEZ1cnRtYXlyIHNlbnQgaW4gYSBsaXN0IG9mIFVSTHMgdG8gVEZUUCBzZXJ2ZXJzIGZvciBOVC4gQWRkZWQKK3RvIGRpcmVjdG9yeSBjb250cmliL0Rpc2tsZXNzLUZyb20tTlQuCisKKysgUGF1bCBXaGl0dGFrZXIgY29udHJpYnV0ZWQgYSBIT1dUTyBpbiBIVE1MIGZvcm1hdCBvbiBib290aW5nIHdpdGggTlQKK2FzIHRoZSBzZXJ2ZXIuICBBZGRlZCB0byBkaXJlY3RvcnkgY29udHJpYi9EaXNrbGVzcy1Gcm9tLU5ULgorCisrIENKIHBvaW50ZWQgb3V0IHRoYXQgdGhlIGFkdmVydGlzZWQgbWVzc2FnZSBzaXplIGlzID4gMTUwMCBieXRlcy4KK0RlZmluZSBNQVhfQk9PVFBfRVhUTEVOIHNvIHRoYXQgdGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBtYXRjaGVzIHRoZQorRXRoZXJuZXQgcGF5bG9hZCBzaXplLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjIyIChkZXZlbG9wbWVudCkKKworKyBSZWludHJvZHVjZSB0aGUgb2xkIFZpYS1SaGluZSBQQ0kgSURzIGludG8gZmlsZSBOSUMgYW5kIGdpdmUgdGhlCitjb3JyZXNwb25kaW5nIFJPTSBpbWFnZXMgLW9sZCBzdWZmaXhlcywgaW4gY2FzZSBzb21lIHBlb3BsZSBhcmUgdXNpbmcKK3RoZSBvbGQgY2hpcHMuCisKKysgUGV0ZXIgS/ZnZWwgY29udHJpYnV0ZWQgcGF0Y2hlcyB0byB0aGUgU2lTOTAwIGRyaXZlciB0byBtYWtlIGl0IHdvcmsKK2ZvciB0aGUgU2lTNjMwZSBhbmQgU2lTNzMwcy4KKworKyBDaGFybGVzIERvYnNvbiBwb2ludGVkIG91dCB0aGF0IHdoZW4gYm9vdGluZyBmcm9tIGEgUG5QIEJJT1MsIHRoZSBjb2RlCitzaG91bGQgbm90IGhvb2sgb3IgcmVzdG9yZSB0aGUgSU5UMTlIIGVudHJ5IHBvaW50LiAgUHV0IGhvb2tpbmcgY29kZQoraW5zaWRlICNpZm5kZWYgUENJX1BOUF9IRUFERVIgYW5kIGNoYW5nZWQgZW50cnkgcG9pbnQgaW4gUG5QIHN0cnVjdHVyZQorZnJvbSBzdGFydDE5aCB0byBibG9ja21vdmUuCisKKysgSSBoYXZlIG9uZSByZXBvcnQgdGhhdCBnYXMgMi45MSBkb2Vzbid0IGFzc2VtYmxlIGxvYWRlci5TIGJlY2F1c2UgaXQKK2Nhbid0IGhhbmRsZSBhbGwgdGhlIDE2LWJpdCBjb2RlLiBTaW5jZSB0aGUgYmVuZWZpdHMgb2YgdXNpbmcgZ2FzIGZvcgorYWxsIGFzc2VtYmx5IGNvZGUgYXJlIGdyZWF0LCBhbmQgZ2FzIDIuOTUgaGFzIGJlZW4gb3V0IHRoZXJlIGZvciBhIGxvbmcKK3RpbWUsIEkgcmVncmV0ZnVsbHkgc2F5IHRvIGFmZmVjdGVkIHVzZXJzOiB1cGdyYWRlIHlvdXIgdG9vbHMuIE90aGVyd2lzZQordGhlcmUgbWF5IGJlIGEgd29ya2Fyb3VuZCBieSBzcGVjaWZ5aW5nIHRoZSBvcGNvZGVzIGxpdGVyYWxseS4gIEkgbGVhdmUKK2l0IHRvIGludGVyZXN0ZWQgcGFydGllcyB0byB0cnkuIElmIHlvdSBkbyB0aGlzLCBwdXQgaW4gYW4gI2lmZGVmCitHQVMyOTEsIG5hdHVyYWxseS4KKworKyBVcGRhdGVkIGNvbnRyaWIvdGZ0cC1ocGEgdG8gMC4xNiBmcm9tIGZ0cC5rZXJuZWwub3JnLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjIzIChkZXZlbG9wbWVudCkKKworKyBSZW5hbWUgbmVwY2kgZW50cnkgaW4gZmlsZSBOSUMgdG8gcnRsODAyOSB0byBhdm9pZCBnaXZpbmcgdGhlCitpbXByZXNzaW9uIHRoYXQgbmVwY2kgd2lsbCB3b3JrIGZvciBhbGwgUENJIE5FMjAwMCBjbG9uZXMuIE1ha2UgdGhlCitpc3N1ZSBvZiBQQ0kgSURzIGluIFJPTXMgY2xlYXJlciBpbiBkb2N1bWVudGF0aW9uLCBib3RoIGluIHRoZQorY29uZmlndXJhdGlvbiBhbmQgdHJvdWJsZXNob290aW5nIHNlY3Rpb25zLgorCisrIFRhbmlhIE9rYSBhbmQgSHl1bi1Kb29uIENoYSBhdCBhYm91dCB0aGUgc2FtZSB0aW1lIGZvdW5kIHRoYXQKK2ltcGxlbWVudGluZyB0aGUgcnRsX2Rpc2FibGUoKSByb3V0aW5lIGluIHJ0bDgxMzkuYyBzdG9wcGVkIHJhbmRvbQorY3Jhc2hlcyBpbiBMaW51eCBsYXRlci4gSXQgaXMgaW1wb3J0YW50IHRvIGRpc2FibGUgdGhlIE5JQyBhZnRlciBuZXR3b3JrCitsb2FkaW5nLgorCisrIEltcGxlbWVudGVkIF9kaXNhYmxlKCkgcm91dGluZSBpbiB3ODljODQwLCAzYzkweCBhbmQgdmlhLXJoaW5lIGRyaXZlcnMKK3Rvby4gRG9uJ3Qga25vdyBob3cgdG8gZG8gaXQgZm9yIGVwaWMxMDAuCisKKysgcDkxMG5kLTAuNCBpbiBjb250cmliLyBoYXMgLWYgZGV2aWNlIG9wdGlvbiBub3cgdG8gc3BlY2lmeSBvdGhlcgorcHJpbnRlciBwb3J0cywgZS5nLiAgVVNCLgorCisrIFJvYmIgTWFpbiBmb3VuZCBhIGJ1ZyB3aXRoIHRoZSAjaWZkZWYgbG9naWMgaW4gbG9hZGVyLlMuIFRoaXMgbWF5IGZpeAorcHJvYmxlbXMgd2l0aCBCSU9TIGRldGVjdGlvbi4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDQuNy4yNCAoZGV2ZWxvcG1lbnQpCisKKysgUGFvbG8gTWFyaW5pIHNlbnQgaW4gc29tZSBjb2RlIHRvIG1ha2UgaXQgd29yayBvbiBoaXMgYmFyZSBtZXRhbCAobm8KK3N0YW5kYXJkIEJJT1Mgb3IgcGVyaXBoZXJhbHMpIHBsYXRmb3JtLiBUaGlzIG1heSBiZSBhIHVzZWZ1bCBzdGFydGluZworcG9pbnQgZm9yIHNvbWUgYXBwbGljYXRpb25zLiBTZWUgY29udHJpYi9iYXJlbWV0YWwvLgorCisrIEVyaWMgVy4gQmllZGVybWFuIGNvbnRyaWJ1dGVkIGEgUGVybCBzY3JpcHQgaW4KK2NvbnRyaWIvYXdhcmRfcGx1Z2luX3JvbXMvIHRvIGxpc3QgZmxhc2ggQklPUyBwbHVnaW4gY29tcG9uZW50cy4KKworKyBNYXJ0eSBDb25ub3IgcmV3cm90ZSB0aGUgVHVsaXAgZHJpdmVyIHRvIGhhbmRsZSBtYW55IG1vcmUgdmFyaWFudHMuCisKKysgRm9yIFBDSSBST01zIGxvYWRlci5TIGNhbiBub3cgZGV0ZWN0IGlmIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYSBQblAKK0JJT1MgYW5kIGNob29zZSB0byBob29rIElOVDE5SCBpZiBub3QuCisKKysgUGFzcyBzdHJ1Y3QgKnJvbV9pbmZvIGluIHByaXZfZGF0YSB0byBwcm9iZSByb3V0aW5lLiBUaGlzIGlzIHRvIGFsbG93Citkcml2ZXJzIHRvIGRlY2lkZSwgYmFzZWQgb24gdGhlIFJPTSBhZGRyZXNzLCB3aGljaCBvbmUgb2YgbXVsdGlwbGUKK2luc3RhbmNlcyBvZiBpZGVudGljYWwgbmV0d29yayBhZGFwdG9ycyB0byBhY3RpdmF0ZS4gU3RhcnRlZCBvbiAzYzUwOQorY29kZSB0byB1c2UgdGhpcyBidXQgbmVlZCB0byB1bmRlcnN0YW5kIDNjNTA5IGNvbnRlbnRpb24gcmVzb2x1dGlvbgorbWVjaGFuaXNtIGZpcnN0LgorCisrIExpbmsgc3JjL2x6aHVmLmMgdG8gY29udHJpYi9jb21wcmVzc29yL2x6aHVmLmMgc28gdGhhdCB3ZSBkb24ndCBuZWVkCit0byByZWZlciB0byBjb250cmliL2NvbXByZXNzb3IvbHpodWYuYyBhbnltb3JlIGluIE1ha2VmaWxlLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNC43LjI1IChkZXZlbG9wbWVudCkKKworKyBNaW5vciBkb2N1bWVudGF0aW9uIGVkaXRzLCBtZXJnZWQgaW4gTklDIGVudHJpZXMgZm9yIG5ld2x5IHN1cHBvcnRlZAorVHVsaXAgdmFyaWFudHMgZnJvbSBNYXJ0eSBDb25ub3IuCisKKysgT25lIGxhc3QgbWludXRlIGNoYW5nZSwgUm9iYiBNYWluIHN1Z2dlc3RlZCBjYWxsaW5nIGNzODl4MF9yZXNldCgpCitmcm9tIGNzODl4MF9kaXNhYmxlKCkgdG8gc2h1dGRvd24gdGhlIGhhcmR3YXJlIGNsZWFubHkuCisKKysgVXBkYXRlZCB0ZnRwLWhwYSB0byAwLjE3LgorCisrIFNsaWdodCBtb2QgdG8gbHpodWYuYyB0byBtYWtlIGNvbXByZXNzaW9uIHN0YXRpc3RpY3MgcmVwb3J0IHNob3J0ZXIuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjAuMCAocHJvZHVjdGlvbikKKworKyBEb25hbGQgQ2hyaXN0ZW5zZW4gZm91bmQgYSBzbWFsbCBidWcgaW4gb3Nsb2FkZXIuYy4gTm90IGFsbCBjb250ZXh0Cit3YXMgY2xlYXJlZCBvbiB0ZnRwIHJlc3RhcnQgd2hpY2ggY2F1c2VkIHJlc3RhcnRlZCB0ZnRwIGxvYWRzIHRvIGZhaWwuCisKKysgQ29ycmVjdCBhIHNtYWxsIGVycm9yIGluIHNldHRpbmcgJXNwIHdoZW4gbm90IHJ1bm5pbmcgYXQgMHg5eHh4eC4KK05vdyByZWxvY2F0aW9uIHRvIDB4ODQwMDAgd29ya3MuCisKKysgTWFydHkgQ29ubm9yIGFkZGVkIGEgZ2VuZXJpYyBUdWxpcCBlbnRyeSBhbmQgcmVuYW1lZCB0aGUgTWFjcm9uaXgKK2VudHJpZXMgYmVjYXVzZSBQSFAgZG9lc24ndCBsaWtlIHN0cmluZ3Mgc3RhcnRpbmcgd2l0aCBkaWdpdHMgKGZvcgorcm9tLW8tbWF0aWMubmV0KS4KKworKyBJbiBsb2FkZXIuUywgbW92ZSBjb2RlIHRvIHNhdmUgUk9NIHNlZ21lbnQgYW5kIGxlbmd0aCB0byBiZWZvcmUganVtcAordG8gbmV3IHNlZ21lbnQsIG90aGVyd2lzZSBpZiBNT1ZFUk9NIGlzIGRlZmluZWQsIHRoZW4gdGhlIFJPTSBzZWdtZW50IGlzCithbHdheXMgMHg4MDAwLiBJbiBldGhlcmJvb3QuaCwgZGVmaW5lIGFuIGlubGluZSBmdW5jdGlvbiB0byBzYXkgaWYgYSBST00KK2FkZHJlc3MgaXMgb2sgdG8gYm9vdCBmcm9tLiBBbGxvdyBpZiA8IDB4QzAwMDAgb3IgbWF0Y2hlcyBhc3NpZ25lZCBST00KK2FkZHJlc3Mgb2YgTklDLgorCisrIFRob21hcyBLZXNzbGVyIGZvdW5kIGEgYnVnIGluIHZlbmRvcnRhZ3Muc2dtbCByZSBvcHRpb24tTk5OIHRhZ3MgaW4KK2RoY3BkLmNvbmYsIHRoZSB3cm9uZyBzeW50YXggd2FzIHByZXNlbnRlZC4gSG93ZXZlciBvbiB0cnlpbmcgdGhlCitvcHRpb24tTk5OIHN5bnRheCBkb2N1bWVudGVkIGluIHRoZSBkaGNwLW9wdGlvbnMgbWFuIHBhZ2UsIGl0IHdhcworZGlzY292ZXJlZCB0aGF0IG9wdGlvbiBvcHRpb24tTk5OIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgaW4gdGhlIG9sZCB3YXkKK2luIHJlY2VudCB2ZXJzaW9ucyBvZiBJU0MgZGhjcGQgdjM7IGEgbmV3IHN5bnRheCBzaG91bGQgYmUgdXNlZC4gQWRkZWQKK25vdGUgdG8gdmVuZG9ydGFncy5zZ21sIHRvIHdhcm4gdXNlcnMuCisKKysgSW5jb3Jwb3JhdGVkIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEhhbm51IE1hcnRpa2thIHRvICNkZWZpbmUKK0RFRkFVTFRfS0VSTkVMUEFUSCBpbiBldGhlcmJvb3QuaCBmb3IgcmFycCgpLCBhbmQgZGlzcGxheSB0aGUgVEZUUAorc2VydmVyIGFkZHJlc3MgYmVmb3JlIGZpbGVuYW1lIGluIExvYWRpbmc6IG1lc3NhZ2UuCisKKysgU3BsaXQgb2ZmIGRvY3VtZW50YXRpb24gaW50byBzZXBhcmF0ZSBwYWNrYWdlIGluIGFudGljaXBhdGlvbiBvZgorcHJvZHVjdGlvbi9kZXZlbG9wbWVudCBzZXJpZXMgc3BsaXQuIE1vdmVkIHByZXZpb3VzIExPRyB0byB0b3AgbGV2ZWwuCitNb3ZlZCBkaXN0cmlidXRpb24gc2VjdGlvbiBvZiBpbmRleC5odG1sIGludG8gc2VwYXJhdGUgd2ViIHBhZ2Ugc28gdGhhdAoraW5kZXguaHRtbCB3aWxsIGJlIGxlc3MgZXBoZW1lcmFsLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4wLjEgKHByb2R1Y3Rpb24pCisKKysgQXJrYWRpdXN6IE1pc2tpZXdpY3ogcG9pbnRlZCBvdXQgdGhhdCAtLW9mb3JtYXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorb2YgLW9mb3JtYXQgYXMgb2xkIGxkIGFjY2VwdHMgYm90aCB3aGlsZSBuZXcgbGQgcmVxdWlyZXMgLS1vZm9ybWF0LgorCisrIGNvbnRyaWIve3RmdHAtaHBhLGF0ZnRwfSBhcmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseSBmcm9tIHRoZQorZGlzdHJpYnV0aW9uIHBhZ2UgdG8gbWFrZSB0aGVtIGVhc3kgdG8gdXBkYXRlLgorCisrIEVyaWMgQmllZGVybWFuIGNvbnRyaWJ1dGVkIG1hbnkgc21hbGwgY2hhbmdlcyBpbiB0aGUgY29kZSB0byBpbXByb3ZlCit0aGUgYmVoYXZpb3VyIGluIGV4Y2VwdGlvbnMgYW5kIGdlbmVyYWxseSBpbXByb3ZlIHRoZSBjb2RlIHN0cnVjdHVyZToKKworMSkgQ2xlYW51cCBldGhlcmJvb3QgcmVzdGFydGluZy4gIFRoZXJlIGlzIG5vdyBvbmx5IG9uZSBwbGFjZSB0aGF0IG5lZWRzCit0byB0ZXN0IGZvciBFTUVSR0VOQ1lCT09URElTSy4KKworMikgQ2hhbmdlIHBjaS5jIGFzIEkgaGF2ZSBzdWdnZXN0ZWQuICBJdCBpcyBzZXR1cCB0byBzY2FuIGV2ZXJ5IHBvc3NpYmxlCitwY2kgYnVzIHVudGlsIGl0IGZpbmRzIGFuIGV0aGVyYm9vdCBjYXJkLgorCiszKSBDaGFuZ2Ugb3Nsb2FkZXIuYyBzbyB0aGF0IGlmIGFuIGltYWdlIHRoYXQgY2FuIHJldHVybiwgYnV0IGlzbid0CitzdXBwb3NlZCB0byBpdCByZXN0YXJ0cyBldGhlcmJvb3Qgd2l0aCAtMiBpbnN0ZWFkIG9mIHRoZSByZXR1cm5lZCB2YWx1ZS4KKworNCkgUmV3cml0ZXMgdGhlIGRlbGF5IGxvZ2ljIHNvIHRoYXQgd2UgY29tcHV0ZSBob3cgbG9uZyB3ZSBzaG91bGQgc2xlZXAsCithbmQgdGhlbiBzbGVlcCB0aGUgd2hvbGUgdGltZSBpbiBhd2FpdF9yZXBseSBzbyBpbiBhIGNvbmdlc3RlZCBuZXR3b3Jrcword2UgZG9uJ3QgbWlzcyBzbG93IHBhY2tldHMuCisKKzUpIGRpdmlkZXMgbG9hZCBpbnRvIGxvYWQgJiBsb2FkX2NvbmZpZ3VyYXRpb24uICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQKK2ZvciB0aGUgd2VpcmQgYm9vdHBfY29tcGxldGVkIHZhcmlhYmxlLiAgQW5kIG1ha2VzIGl0IGEgbGl0dGxlIG1vcmUKK2V4cGxpY2l0IHdoYXQgd2UgYXJlIGRvaW5nLgorCis2KSBhZGQgYW4gaW50ZXJydXB0aWJsZV9zbGVlcCBmdW5jdGlvbiBzbyB0aGF0IHdlIGNhbiBzbGVlcCBhbmQgc3RpbGwKK3Byb2Nlc3Mga2V5c3Ryb2tlcy4KKworNykgcmV3cml0ZXMgdGhlIHJlc3RhcnQgbG9naWM6CisgICAtIHJlbmFtZXMgam1wX2Jvb3RtZW51IHRvIHJlc3RhcnRfZXRoZXJib290LgorICAgLSByZW1vdmVzIGJvb3RtZW51IChUaGUgZnVuY3Rpb24gaXNuJ3QpCisgICAtIEl0IGV4cGxpY2l0bHkgZG9lcyBhbiBldGhfcmVzZXQgJiBldGhfcHJvYmUgcGFpciB0byByZWluaXRpYWxpemUKKyAgICAgdGhlIGludGVyZmFjZS4gIFRoaXMgc2hvdWxkIGhlbHAgaWYgc29tZW9uZSBoYXMgcGx1Z2dlZCB0aGUKK2ludGVyZmFjZSBpbnRvIGEgZGlmZmVyZW50IHN3aXRjaCBzaW5jZSBib290aW5nIHN0YXJ0ZWQuCisgICAtIG1vdmVzIEFTS19CT09UIGFuZCBUUllfRkxPUFBZX0ZJUlNUIGludG8gdGhlaXIgb3duIGZ1bmN0aW9ucy4KKyAgIC0gT24gZXZlcnkgcmVzdGFydCBjYWxscyBhc2tfYm9vdCBhbmQgdHJ5X2Zsb3BweV9maXJzdC4gIEFsbG93aW5nIHlvdQorICAgICB0byBjaGFuZ2UgeW91ciBtaW5kIG9uIGhvdyB5b3Ugd2FudCB0byBib290IGFmdGVyIG5ldHdvcmsgYm9vdGluZworc3RhcnRzLgorCis4KSBJbiBjbGVhbnVwIGNhbGxzIGJvdGggZXRoX2Rpc2FibGUgKHRvIGRpc2FibGUgdGhlIGludGVyZmFjZSkgJgorZXRoX3Jlc2V0IHRvIG1ha2UgY2VydGFpbiB0aGUgaW50ZXJmYWNlIGNhbiBiZSBpbml0aWFsaXplZCBmcm9tIGxpbnV4LgorKElmIG5vdGhpbmcgZWxzZSB0aGlzIHNob3VsZCBjYXVzZSBtb3JlIGhpZGRlbiBidWdzIHRvIHNob3cgdXApLgorCis5KSBSZXN0YXJ0IGV0aGVyYm9vdCB3aGVuIGRvd25sb2FkaW5nIGEgYm9vdGZpbGUgZmFpbHMsIGluc3RlYWQgb2YganVzdAorbG9vcGluZyB0cnlpbmcgdG8gZ2V0IHRoYXQgZmlsZS4gIEFsbG93aW5nIHR5cG9zIGluIGRoY3BkLmNvbmYgdG8gYmUKK2NvcnJlY3RlZCB3aXRob3V0IGhhdmluZyB0byByZWJvb3QgdGhlIGNsaWVudCBtYWNoaW5lIHJ1bm5pbmcgZXRoZXJib290LgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4xLjAgKGRldmVsb3BtZW50KQorCisrIEFsbCB0aGUgY2hhbmdlcyBmcm9tIDUuMS4wIGNhcnJpZWQgb3ZlciBleGNlcHQgY2FsbGluZyBldGhfcmVzZXQoKQorZnJvbSBjbGVhbnVwKCkuCisKKysgTWFydHkgQ29ubm9yLCBmdW5kZWQgYnkgU2ljb20gU3lzdGVtIChodHRwOi8vd3d3LnNpY29tcG9zLmNvbS8pLCB3cm90ZQorYSBkcml2ZXIgZm9yIE5JQ3MgYmFzZWQgb24gdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzgxNSwgZS5nLgorTmV0Z2VhciBGQTMxMS9GQTMxMi4gQWxzbyBpbmRlcGVuZGVudGx5IGNyZWF0ZWQgYnkgSmFzb24gTWNNdWxsYW4ganVzdAorYXQgdGhlIHRpbWUgTWFydHkgcmVsZWFzZWQgaGlzIGRyaXZlci4gVGhhbmtzIGZvciB0aGUgZWZmb3J0IEphc29uOworZ3JlYXQgbWluZHMgdGhpbmsgYWxpa2UuIEJvdGggYXJlIGJhc2VkIG9uIERvbmFsZCBCZWNrZXIncyBMaW51eCBkcml2ZXIsCitvZiBjb3Vyc2UuCisKKysgRG91ZyBBbWJyaXNrbyBjb250cmlidXRlZCBhIHBhdGNoIHRvIHRha2UgZW52aXJvbm1lbnQgYmluZGluZ3MgZm9yCitGcmVlQlNEIGtlcm5lbHMgZnJvbSBhIEJPT1RQL0RIQ1Agb3B0aW9uIG9yIGNvbmZpZyB2YXJpYWJsZS4KKworKyBEYXggS2Vsc29uIGNvbnRyaWJ1dGVkIGFuIGV4YW1wbGUgb2YgYW4gSVNDIERIQ1AgY29uZmlnIGZpbGUgdGhhdCB1c2VzCitWZW5kb3IgQ2xhc3MgSWRlbnRpZmllciB0byB0YWlsb3IgdGhlIHJlc3BvbnNlIHRvIEV0aGVyYm9vdCBjbGllbnRzLgorQWxzbyBkaXNjb3ZlcmVkIHRoYXQgdGhlIEV0aGVyYm9vdCBWQ0kgc2hvdWxkIGFsc28gYmUgc2VudCBpbiB0aGUKK0RIQ1BSRVFVRVNUIG1lc3NhZ2UsIGluIGFkZGl0aW9uIHRvIHRoZSBESENQRElTQ09WRVIgbWVzc2FnZS4gIE5vdGUgdGhhdAordGhlIERIQ1Agc2VydmVyIG11c3QgYmUgc2V0IHRvIG5vbiBhdXRob3JpdGl0YXRpdmUgaWYgeW91IGhhdmUgYW4KK2F1dGhvcml0YXRpdmUgc2VydmVyIHJ1bm5pbmcgYWxyZWFkeSBvciBpdCB3aWxsIGludGVyZmVyZSB3aXRoIHRoYXQKK29uZSdzIG9wZXJhdGlvbi4KKworKyBQZXRlciBMaXN0ZXIgYW5kIFZhc2lsIFZhc2lsZXYgY29udHJpYnV0ZWQgY2hhbmdlcyB0byBnZW5lcmF0ZSAucHhlCitpbWFnZXMgYm9vdGFibGUgdmlhIFBYRS4KKworKyBFcmljIEJpZWRlcm1hbiBhZGRlZCBjb2RlIHRvIDNjOTB4LmMgdG8gZW5hYmxlIHRoZSBOSUM6IHNldCB1cAorYnVzbWFzdGVyaW5nIGFuZCBzZXQgdGhlIGxhdGVuY3kgdGltZXIgaW4gY2FzZSB0aGUgTklDIGlzIG5vdCBhbHJlYWR5CitzZXQgY29ycmVjdGx5LCBhbmQgZml4ZWQgYSBjb3VwbGUgb2YgcmVsYXRlZCBidWdzIGluIGVlcHJvMTAwLmMuCitWZXJpZmllZCB0aGF0IHRoZSAzYzkweCBkcml2ZXIgd29ya3MgZm9yIHRoZSAzYzk4MC4KKworKyBNb3ZlZCBzdHJuY21wIGZyb20gb3NkZXAuaCB0byBsaW51eC1hc20tc3RyaW5nLmguIFVzZSB0aGUgZ2VuZXJhbAordmVyc2lvbiB1c2luZyBzdHJpbmcgb3BzLCBub3QgdGhlIGRlcHJlY2F0ZWQgNDg2IHZlcnNpb24gKHdoYXQgd2FzIEkKK3RoaW5raW5nKS4gIEFsc28gYWRkZWQgc3RybGVuLCBuZWVkZWQgZm9yIEZyZWVCU0QgcGF0Y2ggYWJvdmUuCisKKysgVGhhbmtzIHRvIGdjYyAzLjAsIGZvdW5kIGFuZCBjb3JyZWN0ZWQgYSBjb3VwbGUgb2YgQyBjb25zdHJ1Y3RzIG9mCit1bmRlZmluZWQgc2VtYW50aWNzIGluIHJ0bDgxMzkuYyBhbmQgbGFuY2UuYyBvZiB0aGUgZm9ybTogaSA9ICsraSAmCitNQVNLOworCisrIEluIENvbmZpZy9DRkxBR1MzMjogY2hhbmdlZCAtbTM4NiB0byBwcmVmZXJlZCBmb3JtLCAtbWNwdT1pMzg2LAorY2hhbmdlZCAtTzIgdG8gLU9zLCBhbmQgYWRkZWQgLWZmcmVlc3RhbmRpbmcuIFRoZXNlIGNoYW5nZXMgYWxsb3cKK3dhcm5pbmctZnJlZSBjb21waWxhdGlvbiB1bmRlciBnY2MgMy4wLiBPbmx5IG1pbWltYWwgdGVzdGluZyBoYXMgYmVlbgorZG9uZSB3aXRoIGdjYyAzLjAgY29tcGlsZWQgYmluYXJpZXMsIHdlIGhvcGUgdGhlcmUgYXJlIG5vIHByb2JsZW1zIGJ1dAorZG9uJ3QgdGhyb3cgYXdheSB5b3VyIGdjYyAyLjkuNSB5ZXQuCisKKysgQWRkZWQgYW4gLm9yZyAwIHRvIGxvYWRlci5TIGp1c3QgYmVmb3JlIF9zdGFydC4gTWF5IG9yIG1heSBub3QgZml4CithbGxlZ2VkIGFzc2VtYmx5IHByb2JsZW0gd2l0aCBnYXMgMi4xMS4KKworKyBDb3NtZXRpYyBjaGFuZ2U6IGluIGJvb3QxYS5zIHJlcGxhY2VkICJsb2FkZWQiIHdpdGggImRvbmVcclxuIiBzbyB0aGF0CitFdGhlcmJvb3QgbWVzc2FnZXMgc3RhcnQgYXQgYmVnaW5uaW5nIG9mIGxpbmUuCisKKysgTW9yZSBpbXByb3ZlbWVudHMgdG8gY29udHJpYi9ta2Zmd25iLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4wLjIgKHByb2R1Y3Rpb24pCisKKysgQWRkZWQgbWlzc2luZyBydWxlcyBpbiBnZW5ydWxlcy5wbCBmb3IgLnB4ZSBhbmQgLmx6cHhlIGltYWdlcy4KKworKyBQZXRlciBMaXN0ZXIgdW5pZmllZCBweGVsb2FkZXIuUyBpbnRvIGxvYWRlci5TLiBweGVsb2FkZXIuUyBub3QKK3JlcXVpcmVkIG5vdy4gQWxzbyBmaXhlZCAubHpweGUuCisKKysgQWRkZWQgbWlzc2luZyBpbnQgaTsgZGVjbGFyYXRpb24gaW4gdHJ5X2Zsb3BweV9maXJzdCgpLgorCisrIExvYWQgJWVkeCB3aXRoIGRldiBqdXN0IGJlZm9yZSBjYWxsaW5nIHhzdGFydCBpbiBmbG9wcHkuYzpib290ZGlzaygpCitzbyB0aGF0ICVkbCB3aWxsIGhhdmUgZGV2aWNlIG51bWJlciwganVzdCBsaWtlIGVudHJ5IGZyb20gQklPUy4KKworKyBNZXJnZWQgaW4gRXJpYyBCaWVkZXJtYW4ncyBwYXRjaGVzIHRvIGJ1aWxkIC5lYmkgaW1hZ2VzIHRoYXQgcnVuIHVuZGVyCitMaW51eEJJT1MuIFRvIG1ha2UgYW4gaW1hZ2UsIGVkaXQgQ29uZmlnIHRvIGVuYWJsZSB0aGUgRUJJIG9wdGlvbnMgKGFuZAorZGlzYWJsZSBUQUdHRURfSU1BR0UpLCB0aGVuIG1ha2UgYmluMzIvZHJpdmVyLmViaSwgd2hlcmUgZHJpdmVyIGlzIHRoZQorbmFtZSBvZiBhIHN1cHBvcnRlZCBQQ0kgTklDLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4xLjEgKGRldmVsb3BtZW50KQorCisrIFRoZSByb3RhdGluZyBiYXIgcHJvZ3Jlc3MgZGlzcGxheSBoYXMgYmVlbiByZXBsYWNlZCBieSBhIHNlcXVlbmNlIG9mCitkb3RzLCBvbmUgZm9yIGVhY2ggdHJhbnNtaXR0ZWQgcGFja2V0LiBUaGlzIGlzIGtpbmRlciB0byBkdW1iIGRpc3BsYXlzLAorZS5nLiBzZXJpYWwgdGVybWluYWxzLCBhbmQgZ2l2ZXMgYSBiZXR0ZXIgZmVlbCBmb3IgaG93IHRoZSBsb2FkaW5nIGlzCitnb2luZy4gSWYgeW91IHdhbnQgdGhlIHJvdGF0aW5nIGJhciwgdXNlIC1EQkFSX1BST0dSRVNTLgorCisrIEluIGxvYWRlci5TIGNoYW5nZSAuZmlsbCAweDE4LSguLV9zdGFydCkgdG8gLm9yZyAweDE4LiBNaWdodCBoZWxwCitwZW9wbGUgaGF2aW5nIGVycm9ycyBhc3NlbWJsaW5nIGl0LgorCisrIERvIEpvbmcgR3dhbiBmb3VuZCBhIDNDb20gOTgwIHdpdGggUENJIElEIDB4OTgwNS4gQWRkZWQgdG8gY29uZmlnLmMKK2FuZCBOSUMuIEFkZGVkIGZvciBnb29kIG1lYXN1cmUgMHg3NjQ2IHdoaWNoIGlzIGxpc3RlZCBhcyAzQ1NPSE8xMDAtVFgKK2luIExpbnV4IGtlcm5lbCAzYzU5eC5jLgorCisrIEFkZCBhIHJ1bGUgdG8gdGhlIE1ha2VmaWxlIHRvIGNoZWNrIGZvciBnY2MgMi45Niwgd2hpY2ggaXMgYnVnZ3ksIGFuZAordGVsbCB0aGUgdXNlciB0byB1c2Uga2djYyBpbnN0ZWFkIGlmIGZvdW5kLgorCisrIFRpbGwgU3RyYXVtYW5uIGFkZGVkIGxvbmctbmVlZGVkIGNvZGUgdG8gd2FybiB3aGVuIGZyYWdtZW50ZWQgcGFja2V0cworc2VlbiAoZW5jb3VudGVyZWQgb24gYSB3aXJlbGVzcyBsaW5rKSBhbmQgdG8gZG8gVURQIHBhY2tldCBjaGVja3N1bW1pbmcuCisKKysgQSB0cmlvIG9mIHBhdGNoZXMgZnJvbSBLbGF1cyBFc3BlbmxhdWIsIHRvIGZpeCBhIGxhbmNlIHJpbmcgcG9pbnRlcgorZXJyb3IgaW4gbGFuY2UuYywgdG8gZml4IGEgZm9ybWF0IGVycm9yIGluIHRoZSBtdWx0aWJvb3QgY2FsbCBpbgorb3Nsb2FkZXIuYyBhbmQgYSBwYXRjaCB0byBlbmFibGUgcG93ZXJzYXZpbmcgd2hpbGUgd2FpdGluZyAoZ29vZCBmb3IKK2NvbXB1dGUgY2x1c3RlcnMgYW5kIFZNd2FyZSksIHRoaXMgb25lIHJlcXVpcmluZyB0aGUgbmV3IG9wdGlvbgorLURQT1dFUlNBVkUgaW4gY29tcGlsZXMuCisKKysgV2hpbGUgd2UgYXJlIGFkZGluZyBjb21waWxlIG9wdGlvbnMsIC1ERkxPUFBZIGhhcyBiZWVuIHJlbmFtZWQgdG8KKy1EQ0FOX0JPT1RfRElTSyBhcyBGTE9QUFkgaGFzIGJlZW4gYSBtaXNub21lciBldmVyIHNpbmNlIHRoZSBhYmlsaXR5IHRvCitib290IC9kZXYvaGRYIGFuZCAvZGV2L3NkWCB3YXMgYWRkZWQuCisKKysgU3B1cnJlZCBieSBjb3JyZXNwb25kZW5jZSBmcm9tIFRpbGwgU3RyYXVtYW5uIGFuZCBLbGF1cyBFc3BlbmxhdWIsCitoYWNrZWQgcHJpbnRmIHRvIG5vdCByZXF1aXJlIGEgYnVmZmVyLiBOb3cgcHJpbnRmIG91dHB1dCBjYW4gYmUKK2FyYml0cmFyaWx5IGxvbmcgYXMgaXQgbm8gbG9uZ2VyIG5lZWRzIGEgYnVmZmVyIHRvIGFzc2VtYmxlIHRoZQorY2hhcmFjdGVycyBiZWZvcmUgc2VuZGluZyB0byBwdXRjaGFyOyBpdCBvdXRwdXRzIG9uIHRoZSBzcG90IGZvcgorbm9uLWZvcm1hdCBjaGFycyBhbmQgJXMgaXRlbXMsIGFuZCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVtIGZvciBub24tJXMKK2l0ZW1zLgorCisrIERSSVZFUiBBTkQgRVhURU5TSU9OIFdSSVRFUlMgTk9URSEgKHMpcHJpbnRmIGZvcm1hdHMgaGF2ZSBiZWVuIGNoYW5nZWQKK3RvIGJlIGEgc3Vic2V0IG9mIHRob3NlIGluIGdsaWJjIHRvIHJlZHVjZSBjb25mdXNpb24uIFRoZSBjaGFuZ2VzIGFyZSAleAorLT4gJWhYLCAlYiAtPiAlaGhYLCBhbmQgJUkgLT4gJUAuIExvd2VyIGNhc2UgeCBmb3JtYXRzIGFyZSBhbHNvCithdmFpbGFibGUgbm93LiBUaGUgb25seSB2YXJpYW5jZXMgZnJvbSBnbGliYyBhcmUgJUAgZm9yIGRvdHRlZCBxdWFkIElQCithZGRyZXNzZXMgKGZvcm1lcmx5ICVJOyAlSSBpcyBub3cgdXNlZCksICUhIGZvciA2IGJ5dGUgRXRoZXJuZXQKK2FkZHJlc3NlcywgYW5kIHRoYXQgcHJpbnRmIHJldHVybnMgdm9pZC4gVGhhbmtzIHRvIEtsYXVzIEVzcGVubGF1YiBmb3IKK2Fzc2lzdGFuY2Ugb24gdGhpcywgYWZ0ZXIgYWRkaW5nIHRoZSAlISBmb3JtYXQsIGhlIGNsZWFuZWQgdXAgYWxsIG9mIHRoZQorRXRoZXJuZXQgYWRkcmVzcyBkaXNwbGF5IGNvZGUgaW4gdGhlIGRyaXZlcnMuCisKKysgTW9yZSBjbGVhbnVwIHBhdGNoZXMgZnJvbSBLbGF1cyBFc3BlbmxhdWIgKGhlJ3MgYmV0dGVyIHRoYW4gbGludDsKK3Blb3BsZSB3aG8gaGF2ZSB1c2VkIEJlbGwgTGFicyBVbml4IHdpbGwga25vdyB3aGF0IGxpbnQgaXMpLiBDaGFuZ2VzCitub3RlZCBoZXJlIGZvciBwb3N0ZXJpdHkuCisKKzNjNTA5LmM6IGNvbnNpc3RlbnQgbm9uLXVzZSBvZiAjIG1vZGlmaWVyIGZvciBkZWJ1Z2dpbmcgb3V0cHV0CiszYzU5NS5jOiBjb25zaXN0ZW50IG5vbi11c2Ugb2YgIyBtb2RpZmllciBmb3IgZGVidWdnaW5nIG91dHB1dAorM2M5MHguYzogdXNlIG9wdGltYWwgJXggdmFyaWFudCwgUENJIGJ1cy9mdW5jdGlvbiBudW1iZXJzIGFyZSBhbHdheXMgc21hbGwKK0NvbmZpZzogUmVwbGFjZSBhIFRBQiBieSB0d28gc3BhY2VzIGluc2lkZSB0aGUgZGVzY3JpcHRpb25zCitlZXBybzEwMC5jOiA2LT5FVEhfQUxFTiwgUENJIGJ1cy9mdW5jdGlvbiBudW1iZXJzIGFyZSBhbHdheXMgc21hbGwKK2Zsb3BweS5jOiBvcHRpbWFsICV4IHZhcmlhbnQKK2dlbnJ1bGVzLnBsOiBjb25zaXN0ZW50IHVzZSBvZiBUQUIgY2hhcmFjdGVycworaTgyNTg2LmM6IHRoZSBFTkVUIGFkZHJlc3MgcHJpbnRpbmcgcGF0Y2ggZm9yIHRoZSBFWE9TMjA1IGdvdCBsb3N0IHNvbWVob3cuLi4uCittYWluLmM6IGNsZWFudXAgb2YgdGhlIFVEUF9DSEVDS1NVTSBjb21tZW50IHNvbWUgZWRpdG9yIG1lc3NlZCB1cCwgbWFrZSB0aGUKKyAgICBhc3NlbWJseSBmcmFnbWVudCB1c2UgdGhlIG5vcm1hbCBmb3JtYXR0aW5nLCBmaXggdGhlIHJlZ2lzdGVyIGFzc2lnbm1lbnQKKyAgICBzcGVjaWZpY2F0aW9uIGZvciB0aGUgJWJ4IHJlZ2lzdGVyIHRvIHVzZSB0aGUgImIiIGNvbnN0cmFpbnQgaW5zdGVhZCBvZgorICAgICJieCIgLSB0aGUgeCBtYWtlcyBubyBzZW5zZS4uLgorbmF0c2VtaS5jOiAlWCBjYXNlIGZpeC4uLgorbnM4MzkwLmM6IG9wdGltYWwgJXggdmFyaWFudAorcGNpLmM6IGZpeCBiYWQgTGludXggcG9ydCAobW9zdCBtZXNzYWdlcyB0cnVuY2F0ZWQgdGhlIGhleCB2YWx1ZXMpCitzaXM5MDAuYzogYSB2YWx1ZSByZWFkIHdpdGggaW5sKCkgc2hvdWxkIHByb2JhYmx5KCEpIGJlIHByaW50ZWQgd2l0aCAlWAorc3RhcnQzMi5TOiBtb3ZlIGFyb3VuZCB0aGUgI2VuZGlmcyBhIGxpdHRsZQordGltZXIuYzogZml4IHNwYWNlL3RhYiBjaGFyYWN0ZXJzCit2aWEtcmhpbmUuYzogYWxsIHZhbHVlcyAicHJpbnRlZCIgaW5zaWRlIHRoZSBjb21tZW50cyBhcmUgMzIgYml0IGludGVnZXJzCit3ZDg5Yzg0MC5jOiBQQ0kgYnVzL2Z1bmN0aW9uIG51bWJlcnMgYXJlIGFsd2F5cyBzbWFsbAorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4wLjMgKHByb2R1Y3Rpb24pCisKKysgTmV3IHZlcnNpb24gb2YgY29udHJpYi9EaXNrbGVzcy1Gcm9tLU5UL2Z1cnRtYXllci5odG1sLiBJIG1hbmdsZWQgdGhlCitwcmV2aW91cyB2ZXJzaW9uIGJ5IGZvcmdldHRpbmcgdG8gZXh0cmFjdCB3aXRoIG1ldGFtYWlsIHNvIGl0IHdhcyBzdGlsbAorcXVvdGFibGUtcHJpbnRhYmxlIGVuY29kZWQuCisKKysgUmVuYW1lZCBkb19wcmludGYgdG8gdnNwcmludGYgYmVjYXVzZSB0aGF0J3MgdGhlIHN0YW5kYXJkIGZ1bmN0aW9uIGl0CitoYXMgdGhlIHNhbWUgc2lnbmF0dXJlIGFzLgorCisrIE1vcmUgcGF0Y2hlcyBmcm9tIEtsYXVzIEVzcGVubGF1Yi4gSW4gaGlzIG93biB3b3JkczoKKworVGhlIHBhdGNoIHRvIGFkZCBVRFAgY2hlY2tzdW1zIGZvciB0cmFuc21pdHRlZCBwYWNrZXRzIGlzIGF0dGFjaGVkLgorSnVzdCBkb24ndCBiZSBzdXJwcmlzZWQgaWYgc29tZSBwYWNrZXQgc25pZmZlciB0ZWxscyB5b3UgdGhhdCB0aGUKK2NoZWNrc3VtIGZvciB0aGUgTkZTX0xPT0tVUCBwYWNrZXRzIGFyZSB3cm9uZyBhbmQgdGhhdCB0aGUgZmlsZW5hbWUgaXMKK3RydW5jYXRlZC4gIEl0J3MgYSBidWcgaW4gdGhlIHNuaWZmZXIsIG5vdCBpbiBFdGhlcmJvb3QuCisKK09oLCBhbmQgdGhlIHNtYWxsIGNoYW5nZSBpbiB1ZHBjaGtzdW0oKSBhbG1vc3QgbWFrZXMgdXAgZm9yIHRoZQoraW5jcmVhc2VkIGNvZGUgc2l6ZS4KKworSSBhbHNvIHJld3JvdGUgdGhlIE5GUyBjb2RlIHRvIHVzZSBwb2ludGVycyBpbnN0ZWFkIG9mIGFycmF5IGFjY2Vzc2VzLgorVGhpcyByZWR1Y2VkIHRoZSBjb2RlIHNpemUgYnkgMTI0IGJ5dGVzLiAgUGF0Y2ggYXR0YWNoZWQuCisKK1RoZSBsYXN0IHBhdGNoIGluIHRoaXMgbWFpbCBmaXhlcyBtaXNjIHRoaW5nczogYSB0eXBvIGluIG1pc2MuYworKERPVF9QUk9HUkVTUyBpbnN0ZWFkIG9mIEJBUl9QUk9HUkVTUyksIGFuZCB0d2lkZGxlKCkgaXMgb25seSBjYWxsZWQgaWYKK3RoZSBwYWNrZXQgdHlwZSBpcyBJUC4gIFRoaXMgbWFrZXMgdGhlIG91dHB1dCBuaWNlciAtIHRoZSBkb3RzIGFyZSBhbHNvCitwcmludGVkIGluIHNvbWUgbm9uLWFwcHJvcmlhdGUgcGxhY2VzIGZvciBBUlAgcmVwbHkgcGFja2V0cy4gIFRoZQoraW1wb3J0YW50IHBhY2tldHMgYXJlIElQIGFueXdheS4KKworKyBUaGUgb3B0aW9uIEJPT1RQX0RBVEFfQVRfMHg5M0MwMCBpcyBkZXByZWNhdGVkLCBpbiBwcmVwYXJhdGlvbiBmb3IKK2V4cGFuZGluZyB0aGUgcGFyYW1ldGVyIGFyZWEgYW5kIHRoZSBmaXJzdDMyLmMgYXJlYS4KKworKyBNYXJ0eSBDb25ub3IgZm91bmQgYSB0eXBvIGluIGluZGV4Lmh0bWwsIHNob3VsZCBiZTogRXRoZXJib290IGNhbiB3b3JrCit3aXRoLi4uLCBub3QgRXRoZXJuZXQgY2FuIHdvcmsgd2l0aC4uLiBPb29wcy4KKworKyBFcmljIEJpZWRlcm1hbiB0cmllZCBhIHBhdGNoIG9mIFByZXN0b24gV2lsc29uJ3MgYW5kIGRpc2NvdmVyZWQgdGhhdAorREkgc2hvdWxkIGJlIHByZWZpeGVkIGJ5IEVTIGluIHRoZSB0ZXN0IGZvciBhIFBuUCBCSU9TIGluIGxvYWRlci5TIHRvIGJlCitzdXJlLiAgRnVydGhlcm1vcmUgc29tZSBCSU9TZXMgYXJlIG5vdCBmdWxseSBjb21wbGlhbnQgYW5kIHdlIG5lZWQgYW4KKyNpZm5kZWYgUE5QX0JVVF9OT1RfQkJTX0NPTVBMSUFOVCB0byB3b3JrIGFyb3VuZCB0aGF0LgorCisrIE9vcHMsIHRoZXJlJ3Mgbm8gZW50cnkgaW4gY29uZmlnLmMgZm9yIHRoZSBERkU1MzBUWCsgZXZlbiB0aG91Z2gKK3RoZXJlJ3Mgb25lIGluIE5JQy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMC40IChwcm9kdWN0aW9uKQorCisrIEZpeGVkIGEgc3RydWN0IGFsaWdubWVudCAoOC1ieXRlIGNvbnN0cmFpbnQpIHByb2JsZW0gaW4gbGFuY2UuYyBjYXVzZWQKK2J5IHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHJ4X2lkeCBmaWVsZCBieSBtb3ZpbmcgcnhfaWR4IHRvIHRoZSBlbmQgb2YKK3RoZSBzdHJ1Y3QuIEZvdW5kIGJ5IFJpenNhbnlpIFpzb2x0LiBLbGF1cyBFc3BlbmxhdWIgYWxzbyBzdWdnZXN0ZWQKK2luY3JlYXNpbmcgYWxsIHRoZSBSeCBidWZmZXJzIGJ5IDQgYnl0ZXMgYmVjYXVzZSBvZiB0aGUgY2hlY2tzdW0gc3RvcmVkCithdCB0aGUgZW5kLgorCisrIEZyZWQgR3JheSBjb250cmlidXRlZCBjaGFuZ2VzIGluIHR1bGlwLmMgdG8gY2hlY2sgZm9yIGEgZHVwbGV4Citjb25uZWN0aW9uIGFuZCB0byBtb2RpZnkgdGhlIGNvbnRyb2xsZXIgcmVnaXN0ZXIgaWYgc28uIE1hcnR5IGZpeGVkIGFuCit1bmFzc2lnbmVkIHRvICJuZWdvdGlhdGVkIiB2YXJpYWJsZS4KKworKyBNYXJrIEcgb2YgSW5wcmltaXMgVGVjaG5vbG9naWVzIGNvbnRyaWJ1dGVkIGFub3RoZXIgRkEzMTEgKE5hdGlvbmFsCitTZW1pY29uZHVjdG9yIERQODM4MTUpIGRyaXZlciwgYWxzbyBiYXNlZCBvbiB0aGUgRG9uYWxkIEJlY2tlciBMaW51eAorZHJpdmVyLgorCisrIEFybWluIFNjaGluZGxlciBjb250cmlidXRlZCBhIHBhdGNoIHRvIGFsbG93IGJvb3RpbmcgTHlueE9TIEtESQoraW1hZ2VzLgorCisrIE1vdmVkIGNvZGUgdG8gc2V0IFBDSSBidXNtYXN0ZXJpbmcgYW5kIHJlYXNvbmFibGUgbGF0ZW5jeSB0byBhIHJvdXRpbmUKK2luIHBjaS5jIGFuZCBhZGRlZCBjYWxscyB0byB0aGlzIHJvdXRpbmUgZnJvbSBhbGwgUENJIGRyaXZlcnMuCisKKysgTmV3IGZpbGVzIGZvciBjb250cmliL21rZmZ3bmIgZm9yIHZlcnNpb24gMS45LjExIGFuZCAxLjkuMTYuCisKKysgUmVtb3ZlZCBCT09UUF9EQVRBX0FUXzB4OTNDeHggb3B0aW9uLgorCisrIENvbnZlcnQgZXBpYzEwMCBkcml2ZXIgdG8gdXNlIGhhcmR3YXJlIHRpbWVyIGZvciB0cmFuc21pdCB0aW1lb3V0IGFuZAorcmVtb3ZlIHBvbGxpbmcgbG9vcCBmcm9tIHJlY2VpdmUgcm91dGluZS4KKworKyBTdGV2ZSBUaWxkZW4gcG9pbnRlZCBvdXQgdGhhdCBCT09UX0lOVDE4SCBpcyBhIExDT05GSUcgb3B0aW9uLCBub3QgYQorQ0ZMQUdTMzIgb3B0aW9uLiBQdXQgbm90ZSB1bmRlciBvcHRpb24gZG9jdW1lbnRhdGlvbiBhbmQgYWxzbyBhZGRlZCBhCitjb21tZW50ZWQtb3V0IGV4YW1wbGUgaW4gQ29uZmlnLiBTdGV2ZSBhbHNvIGNvbnRyaWJ1dGVkIGEgcGF0Y2i4IGluCitjb250cmliL2F1dG8tZGVmYXVsdCwgd2hpY2ggYXV0b2Jvb3RzIGZyb20gdGhlIG5leHQgZGV2aWNlIGlmIGEgZGlzayBpcworZGV0ZWN0ZWQuCisKKysgUE5QX0JVVF9OT1RfQkJTX0NPTVBMSUFOVCBvcHRpb24gcmVuYW1lZCB0byBCQlNfQlVUX05PVF9QTlBfQ09NUExJQU5ULgorCisrIE1lcmdlZCBpbiBWYXNpbCBWYXNpbGV2J3MgY2hhbmdlcyB0byBsb2FkZXIuUyB0byByZWxlYXNlIG1lbW9yeSB0YWtlbgorYnkgUFhFIHByb3Blcmx5LgorCisrIEU4MjAgbWVtb3J5IGRldGVjdGlvbiByb3V0aW5lcyBhZGRlZCBieSBFcmljIEJpZWRlcm1hbi4gTWF5IGluY3JlYXNlCitzaXplIG9mIGJzcyBzZWdtZW50IGFuZCBwdXNoIGxhcmdlIGRyaXZlcnMsIGUuZy4gVHVsaXAsIG5lYXJlciB0byBsaW1pdCwKK3BsZWFzZSByZXBvcnQuCisKKysgRGVmYXVsdCB0byAtRENPTkdFU1RFRCBpbiBDb25maWcsIG1heSBoZWxwIG9uIGJ1c3kgbmV0d29ya3MuCisKKysgQWRkIEhvbHRlayBIVDgwMjMyIHRvIGxpc3Qgb2YgTkUyMDAwIFBDSSBjbG9uZXMuCisKKysgUmVtb3ZlIHByb2hpYml0aW9uIG9uIGxvYWRpbmcgPCAweDEwMDAwIGluIEVMRiBpbWFnZXMgc2luY2UgYnkgZGVmYXVsdAorZHJpdmVycyBkb24ndCB1c2UgbWVtb3J5IDwgMHgxMDAwMCBhbnkgbW9yZSwgd2l0aCA0OGtCIHRvIHJ1biBpbi4KKworKyBQdXQgZGVmaW5lIG9mIEVUSF9NQVhfTVRVIGluIGV0aGVyYm9vdC5oIGluc2lkZSAjaWZuZGVmIHNvIHRoYXQgaXQgY2FuCitiZSBvdmVycmlkZW4gZnJvbSBNYWtlZmlsZS4KKworKyBHdXN0YXZvIEp1bmlvciBBbHZlcyBhZGRlZCAuY3ZzaWdub3JlIGZpbGVzIGZvciBzcmMvYmluIGFuZCBzcmMvYmluMzIuCisKKysgU2hvcnQgbm90ZSBvbiBob3cgdG8gbWFrZSB0b21zcnRidCBuZXRib290YWJsZSBpbiBjb250cmliL3RvbXNydGJ0LgorCitUaGlzIHJlbGVhc2UgaXMgZGVkaWNhdGVkIHRvIHRoZSBtZW1vcnkgb2YgbXkgbW90aGVyIChKdWx5IDE5MTcgLQorTm92ZW1iZXIgMjAwMSkgW0tlbiBZYXBdLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4wLjUgKHByb2R1Y3Rpb24pCisKKysgQ2hhbmdlcyB0byBlbmFibGUgZmEzMTF0b28gZHJpdmVyIHdoaWNoIHdlcmUgb3Zlcmxvb2tlZCBpbiA1LjAuNS4KKworKyBDaGllbi1ZdSBDaGVuIHNlbnQgaW4gcGF0Y2hlcyB0byBzdXBwb3J0IHRoZSBTaVM2MzBFVC4gSW5kZXBlbmRlbnRseSwKK0RvdWcgQW1icmlza28gbWFkZSB0aGUgc2FtZSBjaGFuZ2VzLiBNYXJ0eSBDb25ub3IgdGlkaWVkIHRoZSBwYXRjaGVzLgorCisrIEluIG1pc2MuYywgd2hlbiBlbmFibGluZy9kaXNhYmxpbmcgR2F0ZSBBMjAsIGNhbGwgaW50IDB4MTUgd2l0aAorYXg9MHgyNDB4IHRvIGRvIGhhbmRsaW5nIGZpcnN0LCBhbmQgaWYgdGhhdCBpcyBub3Qgc3VwcG9ydGVkLCBmYWxsIGJhY2sKK3RvIHVzaW5nIHRoZSBrZXlib2FyZCBjb250cm9sbGVyLiBIb3BlZnVsbHkgdGhpcyB3aWxsIHNvbHZlIEdhdGUgQTIwCitwcm9ibGVtcyBmb3IgcmVjZW50IEJJT1Nlcy4KKworKyBBZGQgbWlzc2luZyBlbnRyeSB0byBjb25maWcuYyBmb3IgdGhlIE1hY3Jvbml4IDk4NzEzIChkZXZpY2UgSUQKKzB4NTEyKS4gQnV0IGxhdGVzdCByZXBvcnQgaXMgdGhhdCBpdCBkb2Vzbid0IHRyYW5zbWl0LiBBbnlib2R5IHdhbm5hCitkZWJ1Zz8KKworKyBPbWl0IHRlc3QgZm9yIHBvaW50ZXIgdG8gJFBuUCBzdHJpbmcgZm9yIElTQSBOSUMgaW1hZ2VzLCBpdCBtYXkKK3RyaWdnZXIgZmFsc2UgcmVjb2duaXRpb24gb2YgYSBQblAgUk9NLiBKdXN0IHVzZSBsZWdhY3kgbW9kZS4KKworKyBNZXJnZWQgaW4gQ2hyaXN0b3BoZXIgTGkncyBJbnRlbCBFMTAwMCBnaWdhYml0IEV0aGVybmV0IGRyaXZlci4KKworKyBSSVNLTyBHZXJnZWx5IGZvdW5kIHRoYXQgdGhlIEFETVRlayBDb21ldCA5ODMgd29ya3Mgd2l0aCB0aGUgdHVsaXAKK2RyaXZlciBpZiB5b3UgcHJvdmlkZSB0aGUgcmlnaHQgUENJIElEcy4KKworKyBSb2hpdCBKYWxhbiBjb250cmlidXRlZCBwYXRjaGVzIHRvIHN1cHBvcnQgRnJlZUJTRCBib290aW5nIHZpYSBQWEUuCisoZ2VucnVsZXMucGwgbmVlZGVkIGhhY2tpbmcgdG8gbWFrZSBpdCBpZ25vcmUgdGhlIHN5c3RlbSBpbmNsdWRlcyBpbgorb3NkZXAuaC4pICBBbnlib2R5IHdhbnQgdG8gc2VlIGlmIGl0IGNhbiBiZSBtYWRlIHRvIHN1cHBvcnQgcHhlbGludXg/CitbR2xhbmNlZCBhdCBpdCBhbmQgSSB0aGluayBnZW5lcmFsIFBYRSBzdXBwb3J0IG1heSBiZSBoYXJkLCB5b3UgbWF5IG5lZWQKK2FuIEV0aGVyYm9vdCBzcGVjaWZpYyBzZWNvbmRhcnkgbG9hZGVyLiAtIEtlbl0KKworKyBNZXJnZWQgaW4gRXJpYyBCaWVkZXJtYW4ncyBwYXRjaGVzIHRvIGFsbG93IHRyeWluZyBhbGwgUENJIGRldmljZXMuCisKKysgRnJvbSBFcmljIEJpZWRlcm1hbjogQSBzbWFsbCBwYXRjaCB0byBhbGxvdyB0aGUgc2VyaWFsIHBvcnQgcGFyYW1ldGVycwordG8gYmUgdW5jaGFuZ2VkIGF0IGFjdGl2YXRpb24uICBNYWpvciBjaGFuZ2VzIHRvIHN0YXJ0MzIuUyB0byBtZXJnZQorTGludXhCSU9TIHN1cHBvcnQuICBOZXcgZmlsZXMgZm9yIExpbnV4QklPUyBzdXBwb3J0LiAgUENCSU9TIHNwZWNpZmljCitmdW5jdGlvbnMgc3BsaXQgb3V0IGludG8gcGNiaW9zLlMuIE1hc3NpdmUgY2xlYW4gdXAgb2YgUENJIHN1YnN5c3RlbQorbG9naWMuCisKKysgSmVhbi1KYWNxdWVzIE1pY2hlbCBzZW50IGluIGEgZml4IGZvciB2aWEtcmhpbmUuYyB0byBtYWtlIHN1cmUgdGhlCit0cmFuc21pdCBpcyBmaW5pc2hlZCBiZWZvcmUgcmV0dXJuaW5nIGZyb20gdGhlIF90cmFuc21pdCByb3V0aW5lLgorQWxzbyBmb3VuZCBhIGJ1ZyBpbiBnY2MgMy4wLjMgdGhhdCBhZmZlY3RlZCBydGw4MTM5LmMuIE1vdmluZyB0aGUKK2Fzc2lnbm1lbnQgdG8gbnN0eXBlIGluIF90cmFuc21pdCB0d28gbGluZXMgdXAgYXZvaWRzIGl0LgorCisrIEJhc2VkIG9uIHRoZSBleHBlcmllbmNlIG9mIFllZGlkeWFoIEJhci1EYXZpZCwgaW4gZWVwcm8xMDAuYywKK2luY3JlYXNlZCB1ZGVsYXkgYXJvdW5kIGxpbmUgNTMzIGFmdGVyIGdldHRpbmcgTUFDIGFkZHJlc3MgdG8KK3VkZWxheSgxMDAwMCkuCisKKysgQWRkZWQgUENJIElEcyBmb3IgUlRMODEyOSwgd2hpY2ggY2FuIHVzZSB0aGUgcnRsODEzOSBkcml2ZXIuCisKKysgQWRkZWQgUENJIElEcyBmb3IgM0NvbTkwNSB3aXRoIGRldmljZSBJRCAweDkwNTguIENvbmZpcm1lZCB3b3JraW5nIGJ5CitGYWJpbyBQYXBhLgorCisrIEFkZGVkIFBDSSBJRHMgZm9yIEQtTGluayA1MjgsIHdoaWNoIGlzIGEgUENJIE5FMjAwMCBjbG9uZS4KKworKyBQaGlsaXAgUi4gQXVsZCBmb3VuZCBhIGJsb2NrIG51bWJlciByb2xsb3ZlciBidWcgZHVlIHRvIHByb21vdGlvbiB0bworc2lnbmVkIGluIG1haW4uYy4KKworKyBMdWlnaSBSaXp6byBzZW50IGluIGEgcGF0Y2ggdG8gbmZzLmMgdG8gaW1wbGVtZW50IGFuIGFkYXB0aXZlIHRpbWVvdXQuCisKKysgTmV3IGNvbmZpZyBmaWxlcyBmb3IgZmxvcHB5ZnctMS45LjE5IGluIGNvbnRyaWIvbWtmZnduYi8uCisKKysgR2xlbm4gTWNLZWNobmllIGNvbnRyaWJ1dGVkIGEgUGVybCBzY3JpcHQgZm9yIG1ha2luZyBhIG5ldGJvb3RhYmxlCitpbWFnZSBmcm9tIHRoZSBEYWNoc3RlaW4gTFJQIGZpcmV3YWxsIGRpc3RyaWJ1dGlvbiBmbG9wcHkuIEl0J3MgaW4KK2NvbnRyaWIvbWtscnBuYi8KKworKyBBdCB0aGUgcmVxdWVzdCBvZiBHcmVnIEJlZWxleSwgd2hvIGdvdCBpcmF0ZSBtYWlsIGZyb20ga2VybmVsIE5JQworZGV2ZWxvcGVycywgcHV0IGluIGEgd2FybmluZyBpbiB0aGUgTWFrZWZpbGUgYWJvdXQgdGhlIDNjOTB4IFhDVlIKK29wdGlvbnMgd2hpY2ggbWF5IGFmZmVjdCBsYXRlciBvcGVyYXRpb24gd2l0aCB0aGUgTGludXggZHJpdmVyLiBGb3IgeW91Cit0aW5rZXJlcnMgb3V0IHRoZXJlLCBpZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHlvdSdyZSBkb2luZywgcGxlYXNlIHJlYWQKKzNjOTB4LnR4dCBvdmVyIGFuZCBvdmVyIGFnYWluIHVudGlsIHlvdSB1bmRlcnN0YW5kIHdoYXQgdGhvc2Ugb3B0aW9ucworZG8uIElmIHlvdSBkb24ndCB1bmRlcnN0YW5kLCBwbGVhc2UgYXNrIG9uIHRoZSBFdGhlcmJvb3QgbWFpbGluZyBsaXN0LgorQW5kIGRvbid0IGNvbXBsYWluIHRvIHRoZSBrZXJuZWwgZGV2ZWxvcGVycywgaXQncyBub3RoaW5nIHRvIGRvIHdpdGgKK3RoZW0uIElmIHlvdSBtdXN0IGNoYW5nZSB0aGUgWENWUiBvcHRpb25zIG9uIGEgYm9hcmQsIHBsZWFzZSBkb2N1bWVudCBpdAorcHJvbWluZW50bHkgb24gdGhlIGJvYXJkIHNvIHRoYXQgdGhvc2Ugd2hvIGNvbWUgYWZ0ZXIgeW91IHdvbid0CitlbmNvdW50ZXIgc3RyYW5nZSBiZWhhdmlvdXIgYW5kIGNvbXBsYWluIHRvIHRoZSBrZXJuZWwgZGV2ZWxvcGVycy4KK0dyZWcgYWxzbyBzdXBwbGllZCBhIHBhdGNoIHRvIDNjOTB4LmMgdG8gcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjAuNiAocHJvZHVjdGlvbikKKworKyBBbmRyZXcgQmV0dGlzb24gc2VudCBpbiBhIHBhdGNoIGFuZCB0aGUgZXhwbGFuYXRpb246IEhlcmUncyBhIHBhdGNoCitmb3Igc29tZSBjaGFuZ2VzIEkgbWFkZSB0byBFdGhlcmJvb3QtNS4wLjYgYmVjYXVzZSBpdCBkaWRuJ3Qgd29yayB3aXRoIGEKK1NNQyBFdGhlckVaIGluIGFuIG9sZCBQQ0kvSVNBIGJ5YnJpZCBidXMgc3lzdGVtLiAgVGhlIElTQSBzaGFyZWQgbWVtb3J5Citpc24ndCBhY2Nlc3NpYmxlIG9uIG1hbnkgc3VjaCBzeXN0ZW1zLCBzbyB0aGUgb25seSB3YXkgdG8gZG8gSS9PIHRvIHRoZQorY2FyZCBpcyBpbiBQcm9ncmFtbWVkIEkvTyBtb2RlLiAgSSBzdHVkaWVkIHRoZSBMaW51eCAyLjIuMTkgZHJpdmVyCisoZHJpdmVycy9uZXQvc21jLXVsdHJhLmMpIGFuZCBoYWNrZWQgd2hhdCBJIGZpZ3VyZWQgd2FzIGVxdWl2YWxlbnQgY29kZQoraW50byBzcmMvbnM4MzkwLmMsIGFuZCBpdCBldmVudHVhbGx5IHdvcmtlZC4gIEFsbCBteSBuZXcgY29kZSBpcyBlbmFibGVkCit3aXRoIC1EV0QtNzkwX1BJTy4KKworKyBTbWFsbCBlcnJvciBpbiB0aGUgQURNVEVLIENvbWV0IDk4MyBJRHMgZml4ZWQuCisKKysgTWljaGFlbCBSZW5kZWxsIHNlbnQgaW4gcGF0Y2hlcyBmb3IgM2M5MHguYyB0byBnZXQgdGhlIE1BQyBhZGRyZXNzCitmcm9tIGxvY2F0aW9uIDEwIG9mIHRoZSBFRVBST00gb253YXJkcywgbGlrZSB0aGUgTGludXggZHJpdmVyIGRvZXMuIFNvbWUKKzkwNXMgaGF2ZSB0aGUgTUFDIGFkZHJlc3MgYXQgYm90aCAwIGFuZCAxMCB3aGljaCBpcyB3aHkgaXQgd29ya2VkIGZvcgorc29tZSBib2FyZHMuCisKKysgTWljaGFlbCBCcm93biBzZW50IGluIGRyaXZlcnMgZm9yIDMgd2lyZWxlc3MgTklDcyBiYXNlZCBpbiB0aGUgcHJpc20yCitjaGlwc2V0LCBhbmQgYSBzbWFsbCBwYXRjaCB0byBydGw4MTM5LmMgdG8gYWJvcnQgZGV0ZWN0aW9uIG9uIG5vIGxpbmsuCisKKysgUmV3cm90ZSBtYWtlcm9tLmMgaW4gUGVybCB0byBnaXZlIG1ha2Vyb20ucGwuCisKKysgUmV3cml0ZSBnZW5ydWxlcy5wbCB0byBwYXJzZSBhIG5ldyBOSUMgZm9ybWF0LgorCisrIFRpbW90aHkgTGVnZ2UgY29udHJpYnV0ZWQgYSAzYzUxNSBkcml2ZXIuIFJlcXVpcmVzIGEgSVNBIFBuUCBCSU9TLgorCisrIE1vZGlmaWVkIGNhbGwgdG8gaW50MTVoL2U4MDEgaW4gcGNiaW9zLlMgdG8gY2hlY2sgZm9yIHJldHVybiB2YWx1ZXMgaW4KK0NYLCBEWCBpbiBjYXNlIEJJT1MgZG9lc24ndCByZXR1cm4gdGhlbSBpbiBBWCwgQlguCisKKysgUmljaGFyZCBDaGFuIHNlbnQgaW4gUENJIElEcyBmb3IgYW5vdGhlciBJbnRlbCBFRVBSTzEwMCBwcm9kdWN0LgorT21pZ2F3ZCB3aWxsIHRoZXkgZXZlciBydW4gb3V0IG9mIEVFUFJPMTAwIG1vZGVsIG51bWJlcnMuIDotKQorCisrIENoYW5nZWQgbG9jYXRpb24gb2Ygc2V0dXAgaGVhZGVyIGZyb20gMHg5N2UwMDAgdG8gMHg5M2UwMDAgaW4KK21rUU5YbmJpLmMgZm9yIHJlY2VudCBFdGhlcmJvb3QgdmVyc2lvbnMuCisKKysgUmVuYW1lZCBtZW1iYXNlIHRvIGFkZHIxIHRvIHJlZmxlY3QgaXRzIGxhY2sgb2YgcHJlZGVmaW5lZCBtZWFuaW5nIGluCitQQ0kgY29uZmlnIHNwYWNlLiBTaG91bGQgZG8gc2ltaWxhciB0byBpb2FkZHIsIGJ1dCB0b28gbXVjaCB3b3JrLgorCisrIFNhbXVlbCBDbGVtZW10cyBmb3VuZCBhbm90aGVyIEludGVsIEVFUFJPMTAwIGRldmljZSBJRCwgMHgxMDM5LgorCisrIFVwZGF0ZWQgaW5zdHJ1Y3Rpb25zIGluIGNvbnRyaWIvdG9tc3J0YnQgZm9yIGxhdGVzdCAyLjAuMTAzIHJlbGVhc2UuCisKKysgRm9sZGVkIGluIGNoYW5nZXMgYnkgTWljaGFlbCBCcm93biB0byBzZW5kIFBDSSBhbmQgSVNBIElEcyB0byB0aGUKK3NlcnZlciBhbmQgdG8gZW5jYXBzdWxhdGUgRXRoZXJib290IHNwZWNpZmljIG9wdGlvbnMuIENoYW5nZWQgc2NoZW1lIHRvCitzZW5kIGZpeGVkIGJpbmFyeSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiB2YXJpYWJsZSBsZW5ndGggc3RyaW5nLgorCisrIEJ1ZyBpbiBzaXM5MDAuYywgd3JvbmdseSBjbGFzc2lmaWVzIHJldmlzaW9ucyAweDgxIGFuZCAweDgyIGJlY2F1c2UKK2ZpcnN0IHRlc3QgY2F0Y2hlcyB0b28gbWFueSByZXZpc2lvbnMuIENoYW5nZWQgdG8gbWF0Y2ggdGhlIExpbnV4Citkcml2ZXIuCisKKysgRm90aXMgQW5kcml0c29wb3Vsb3MgZm91bmQgYSBzbWFsbCBidWcgaW4gY3M4OXgwLmgsIFRYX0FGVEVSX0FMTAorc2hvdWxkIGJlIDB4MEMwLgorCisrIEdyZWF0IGlkZWEgYnkgRXJpYyBCaWVkZXJtYW4uIElnbm9yZSBESENQIG9mZmVycyB3aXRoIHplcm8gc2VydmVyCitJUCwgb3IgbnVsbCBmaWxlbmFtZSB1bmxlc3MgREVGQVVMVF9CT09URklMRSBpcyBkZWZpbmVkLiBUaGlzIHdpbGwKK2lnbm9yZSBtb3N0IFdpbmRvd3MgREhDUCBzZXJ2ZXJzLgorCisrIFBhdHJpayBXZWlza2lyY2hlciBzZW50IGluIGEgcGF0Y2ggZm9yIHJ0bDgxMzkuYyB0byBicmluZyBpdCB1cCB0bworZGF0ZSB3aXRoIHRoZSBMaW51eCBkcml2ZXIuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjAuNyAocHJvZHVjdGlvbikKKworKyBNdWx0aWNhc3Qgc3VwcG9ydCBhbmQgTE9UUyBvZiBvdGhlciBjaGFuZ2VzIGJ5IEVyaWMgQmllZGVybWFuLgorCisrIEJ1aWx0aW4gbWVudWluZyBoYXMgYmVlbiByZW1vdmVkLgorCisrIFBhdGNoZXMgZm9yIEZyZWVCU0QgYnkgRG91ZyBBbWJyaXNrby4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS4yIChkZXZlbG9wbWVudCkKKworKyBGaXggc3ludGF4IGVycm9ycyBpbiBuZnMuYy4KKworKyBQYXRjaCBmb3IgdGFnZ2VkIGltYWdlIGxvYWRpbmcgYnkgTWlsZXMgTm9yZGluLgorCisrIFBhdGNoZXMgZm9yIG5ldyBlZXByMTAwIHZhcmlhbnQgYnkgR2VvcmcgQmF1bS4KKworKyBGaXhlcyBmb3IgdHlwb3MgYnkgQWRhbSBTdWxtaWNraS4KKworKyBGaXhlcyBieSBFcmljLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4xLjMgKGRldmVsb3BtZW50KQorCisrIEVyaWMgcmVhcnJhbmdlZCBmaWxlcyBmb3IgbXVsdGlwbGUgcGxhdGZvcm1zLCBpbmNsdWRpbmcgSXRhbml1bS4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS40IChkZXZlbG9wbWVudCkKKworKyBMb3RzIG9mIGZpeGVzIHRvIGRyaXZlcnMsIHNlZSBDVlMgZm9yIGRldGFpbHMuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjEuNSAoZGV2ZWxvcG1lbnQpCisKKysgRXJpYyBhZGRlZCBzdXBwb3J0IGZvciB0aGUgQU1EIEhhbW1lci4KKworKyBHZWVydCBTdGFwcGVycyBmb3VuZCBhIFZJQTYxMDUgKHZpYS1yaGluZS5jKSB3aXRoIGlkIDB4MzEwNi4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS42IChkZXZlbG9wbWVudCkKKworKyBCcm9hZGNvbW0gVEczIHN1cHBvcnQgYnkgRXJpYyBCaWVkZXJtYW4uCisKKysgR2VvcmcgQmF1bSBmb3VuZCB0aGF0IHRoZSBzdGFydDE2LlMgcHJlZml4IHdhcyBtaXNzaW5nIGZyb20gdGhlIExJTE8KK2FuZCBQWEUgaW1hZ2VzLCB0aG9zZSBmb3JtYXRzIHdlcmUgYnJva2VuLiBIZSBhbHNvIG1pZ3JhdGVkIHRoZSBQQ0kgSURzCitpbnRvIHRoZSBkcml2ZXIgZmlsZXMuIFRob3NlIGZvcm1hdHMgc2hvdWxkIHdvcmsgYWdhaW4uCisKKysgUmV3b3JrZWQgZ2VucnVsZXMucGwuIEZhbWlseSBkZWNsYXJhdGlvbnMgbm93IGluIGhlcmUgZG9jdW1lbnQgaW5zaWRlCitnZW5ydWxlcy5wbC4gTklDIGlzIG5vdyBhbiBvdXRwdXQgZmlsZSwgZm9yIHVzZSBieSByb20tby1tYXRpYy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS43IChkZXZlbG9wbWVudCkKKworKyBGaXhlZCB2YXJpb3VzIHN5bnRheCBlcnJvcnMgdGhhdCBtYWRlIHRoZSBzb3VyY2Ugbm90IGNvbXBpbGUgd2l0aCBzb21lCitjb25maWd1cmF0aW9ucy4KKworKyBIYWNrZWQgYm9vdDFhLnMgdG8gdGFrZSBjb3VudCBvZiBudW1iZXIgb2YgYmxvY2tzIHRvIGJvb3QgZnJvbSBib29rCitibG9jayBpdHNlbGYgaW4gbmV3IHNjaGVtZS4KKworKyBEYXZlIEFpcmxpZSBmb3VuZCBhIHBhdGNoIGZvciBhbiBvbGQgYnVnIGluIGVlcHJvMTAwIGRyaXZlciBvbiBMaW51eAordGhhdCBhcHBsaWVzIHRvIEV0aGVyYm9vdCBkcml2ZXIgdG9vLgorCisrIEFkZCB1c2UgYnl0ZXM7IHByYWdtYSB0byBQZXJsIHNjcmlwdHMgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBVVEYtOAoraGFuZGxpbmcgb2YgaW5wdXQgZGF0YS4KKworKyBSZXBsYWNlIGJvb3QxYS5zIHdpdGggZmxvcHB5bG9hZC5TIHdoaWNoIGhhcyBubyBwcm9ibGVtcyBsb2FkaW5nIGxhcmdlCitiaW5hcmllcy4gTG9zZSB0aGUgYWJpbGl0eSB0byBib290IGZyb20gZGlzayBwYXJ0aXRpb24uIFVzZSBMSUxPIG9yCitzb21ldGhpbmcgc2ltaWxhci4KKworKyBNb3J0ZW4gS3Jpc3RpYW5zZW4gc2VudCBpbiBhIHBhdGNoIHRvIGhhbmRsZSBhbm90aGVyIHZhcmlhbnQgb2YgdGhlCitTaVMgOTAwLgorCisrIEZpeCBmb3IgZWVwcm8xMDAgdGltaW5nIHByb2JsZW0gYnkgR2VvcmcgQmF1bS4KKworKyBBZGQgdXNlIGJ5dGVzOyB0byBFcmljJ3MgUGVybCBzY3JpcHRzIHRvby4KKworKyBBZGRpdGlvbmFsIGZpeCB0byBtYXNrIGludGVycnVwdHMgYWZ0ZXIgUG9ydFBhcnRpYWxSZXNldCBieSBHZW9yZworQmF1bSB0aGF0IG1pZ2h0IGhlbHAgd2l0aCBib290aW5nIERPUy4KKworKyBTdW5kYW5jZSBkcml2ZXIgY29udHJpYnV0ZWQgYnkgVGltb3RoeSBMZWdnZS4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS44IChkZXZlbG9wbWVudCkKKworKyBGaXggZm9yIGNvcnJlY3QgU01DODQxNiBkZXRlY3Rpb24uCisKKysgQWxpZ25tZW50IGJ1ZyBmaXggZm9yIHRoZSAzYzkweCBkcml2ZXIgY29udHJpYnV0ZWQgYnkgTmVpbCBOZXdlbGwuCisKKysgUm9iYiBNYWluIGZvdW5kIGEgYnVnIGluIGFwcGVuZGluZyB0aGUgTUFDSElORV9JTkZPIHRvIHRoZSBESENQIHJlcXVlc3QuCisKKysgU09ORSBUYWtlc2hpIGZpeGVkIHRoZSBNdWx0aWJvb3Qgc3RydWN0dXJlLgorCisrIFBhdGNoIGZyb20gQXhlbCBEaXR0cmljaCB0byBhbGxvdyB0aW1lb3V0IHRvIGJlIGNoYW5nZWQgdG8gYSBmaXhlZAordmFsdWUgZm9yIHBlZXItdG8tcGVlciBzZXR1cHMgd2hlcmUgdGhlIGV4cG9uZW50aWFsIGJhY2tvZmYgaXMgbm90CitzdWl0YWJsZS4KKworKyBUbGFuIGRyaXZlciBjb250cmlidXRlZCBieSBUaW1vdGh5IExlZ2dlLgorCisrIFN1cHBvcnQgZm9yIHN5bWxpbmtzIG9uIE5GUyBtb3VudHMgYnkgQW5zZWxtIE1hcnRpbiBIb2ZmbWVpc3Rlci4KKworKyBFeHBlcmltZW50YWwgc2FmZSBib290aW5nIGNvZGUgYnkgQW5zZWxtIE1hcnRpbiBIb2ZmbWVpc3Rlci4KKworKyBSdW4gRXRoZXJib290IGluIGFuIGV2ZW4gbWVnYWJ5dGUgc28gdGhhdCB1bnNldHRpbmcgQTIwIHdvbid0IGtpbGwgaXQuCitFeHBlcmltZW50YWwgVU5ESSBkcml2ZXIgYnkgTWljaGFlbCBCcm93bi4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS45ICg1LjIgcmVsZWFzZSBjYW5kaWRhdGUgMSkKKworKyA4MjU2MkVaIElEIHByb3ZpZGVkIGJ5IFNhbXVlbCBDbGVtZW50cy4KKworKyBSZW5hbWUgTG9jYWwgb3B0aW9uIGFzIFF1aXQsIGJlY2F1c2UgdGhhdCdzIHdoYXQgaXQgcmVhbGx5IGlzLgorCisrIFNob3VsZCBwcmVwZW5kIHN0YXJ0MTYuYmluIHRvIC5jb20gaW1hZ2VzLCB0aGV5IGRpZG4ndCB3b3JrIGFuZCBub2JvZHkKK25vdGljZWQuCisKKysgUE0gc3RhY2sgd2FzIGdldHRpbmcgY2xvYmJlcmVkIGJ5IHplcm9pbmcgb2YgQlNTLCBtb3ZlIHRvIG93biBzZWdtZW50CitpbiBldGhlcmJvb3QubGRzLiBNb3ZlICVzcyBvdXQgb2YgdGhlIHdheSBvZiBFdGhlcmJvb3QgaW4gY29tcHJlZml4LlMuCitOb3cgUSB3b3JrcyBmcm9tIC56cm9tIGFuZCBzb3J0IG9mIGZyb20gLmNvbSAoRE9TIGlzIG9kZCBhZnRlciByZXR1cm4pLgorCisrIE1ha2UgQVNLX1BST01QVCByZWZsZWN0IHRoZSBkZXZpY2Ugb3B0aW9ucyBhdmFpbGFibGUuCisKKysgUmVtb3ZlZCBtYW55IG91dGRhdGVkIGNvbW1lbnRzIGFuZCB1cGRhdGVkIG90aGVycy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMS4xMCAoNS4yIHJlbGVhc2UgY2FuZGlkYXRlIDIpCisKKysgTWFrZSBmbG9wcHlsb2FkLlMgYW5kIGxpbG9wcmVmaXguUyBjYWxsIGluc3RlYWQgb2Ygam1wIHRvIHRoZSBpbWFnZSBzbwordGhhdCB0aGUgcmV0dXJuIGNhbGxzIGludCAweDE5LCB3aGljaCBpcyBzb21ld2hhdCBiZXR0ZXIgdGhhbgoraHlwZXJzcGFjZS4KKworKyBQdXQgaHR0cDovL2V0aGVyYm9vdC5vcmcgaW4gcHJvbXB0IGFuZCBJRCBzdHJpbmcuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjIuMCAocHJvZHVjdGlvbikKKworKyBQcmludCBGPyBpZiBubyBmaWxlbmFtZSBpbiBESENQIG9mZmVyLgorCisrIE1ha2UgbGFuY2UuYyB0aHJvdyBhIGNvbXBpbGUgZXJyb3IgaWYgLURSRUxPQ0FURSBpcyB1c2VkLgorCisrIHBjbmV0MzIgZHJpdmVyIHBvcnRlZCBieSBUaW1vdGh5IExlZ2dlLgorCisrIFJlaW5zdGF0ZSBib290MWEucyBpbiBhcmNoL2kzODYvcHJlZml4LiBUaGUgYmluYXJ5IG1heSBoYXZlIHNvbWUgdXNlczsKK2l0IGJvb3RzIHdpdGggdm13YXJlIGFsdGhvdWdoIHRoZSBpbWFnZSBmYWlscyBsYXRlciBpbiB0aGUgZW11bGF0aW9uLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4yLjEgKHByb2R1Y3Rpb24pCisKK0NWU2VkIGFzIEV0aGVyYm9vdCA1LjMgKGRldmVsb3BtZW50KQorCisrIEJyZWFrIG91dCBldGhlcmJvb3QuaCBpbnRvIG11bHRpcGxlIGZpbGVzIGFsb25nIHByb3RvY29sIGxpbmVzLgorCisrIEdlb3JnIEJhdW0ncyBjb252ZXJzaW9uIG9mIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiB0aGUgTGludXggZTEwMDAKK2RyaXZlci4KKworKyBBZGQgbWluaS1zbGFtZCB0byBjb250cmliLywgaXQgd2FzIG1pc3NlZCBkdXJpbmcgNS4yIHJlbGVhc2UuCisKKysgVGltb3RoeSBMZWdnZSBlbmFibGVkIG11bHRpY2FzdCBmb3IgYSBidW5jaCBvZiBkcml2ZXJzLiBUZXN0ZWQgd2l0aAorbWluaS1zbGFtZC4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMy4wIChkZXZlbG9wbWVudCkKKworKyBUaW1vdGh5IExlZ2dlIHJld3JpdGUgcHJvdG9fdGZ0bS5jLCBnb3QgbXVsdGljYXN0IHdvcmtpbmcgd2l0aCBhdGZ0cAorYW5kIGVuYWJsZWQgbXVsdGljYXN0IGZvciB0aGUgVHVsaXAuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjMuMSAoZGV2ZWxvcG1lbnQpCisKKysgR/xudGVyIEtuYXVmIHNlbnQgaW4gYSBuZXcgdmVyc2lvbiBvZiByb21pZCB0aGF0IGhhbmRsZXMgdGhlIG5ldworYW5kIG9sZCBJREVOVCBmb3JtYXQuCisKKysgQ2FpIFFpYW5nIGZpeGVkIHRoZSBXSU5DRSBsb2FkZXIuIEl0IG5lZWRzIHRvIGhhbmRsZSA+IDUxMiBieXRlIHBhY2tldHMKK2FuZCBhbHNvIHRoZSBidWZmZXIgaGFzIHRvIGJlIHN0YXRpYy4gQWxzbyBzdWJtaXR0ZWQgYSBkcml2ZXIgZm9yIFZHQQord2hpY2ggY2FuIGJlIGFjdGl2YXRlZCBieSBDT05TT0xFX0RJUkVDVF9WR0EuCisKKysgSW1wcm92ZWQgdGczIGRyaXZlciBieSBFcmljIEJpZWRlcm1hbi4gTmV3IGRlZmluZSBpbiBldGhlcmJvb3QuaDoKK1ZBTElEX0xJTktfVElNRU9VVC4KKworKyBUaW1vdGh5IExlZ2dlIGFuZCBJIGZpeGVkIHVwIHZhcmlvdXMgSVNBIGRyaXZlcnMgdG8gYmUgbGVzcyBub2lzeQord2hlbiBwcm9iaW5nLCBmcm9tIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IFBhb2xvIFNhbHZhbiwgc28gdGhhdCB0aGUKK3N1cGVyIGV0aGVyYm9vdCBpbWFnZSBpcyBtb3JlIHVzZWZ1bC4KKworKyBQcm9vZiBvZiBjb25jZXB0IG9mIGEgVEZUUCB0byBIVFRQIHByb3h5IGluIGNvbnRyaWIvdDJocHJveHkvLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjIgKGRldmVsb3BtZW50KQorCisrIE11bHRpY2FzdCBzdXBwb3J0IGZvciB0aGUgbnM4MzkwIChORSwgV0QsIGV0YykgYWRkZWQgYnkgVGltb3RoeSBMZWdnZS4KKworKyBQcm92aWRlIGNvbmZpZyBhY2Nlc3MgdG8gYWx0ZXJuYXRlIERIQ1AvQk9PVFAgcG9ydHMuIFRoZSBtYWNybworQUxURVJOQVRFX0RIQ1BfUE9SVFNfMTA2N18xMDY4IHN3aXRjaGVzIHRvIHBvcnRzIDEwNjcgYW5kIDEwNjguCisKKysgVU5ESSBkcml2ZXIgYnkgTWljaGFlbCBCcm93bi4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMy4zIChkZXZlbG9wbWVudCkKKworKyBNb3JlIFVOREkgaW1wcm92ZW1lbnRzIGJ5IE1pY2hhZWwgQnJvd24uCisKKysgTWljaGFlbCBCcm93biBwb2ludGVkIG91dCBlcnJvciBpbiBBU0tfQk9PVCBiZWhhdmlvdXIuIE1ha2UgaXQgbWF0Y2gKK2RvY3VtZW50YXRpb24uIDwgMCBvciB1bmRlZmluZWQgbWVhbnMgbm8gcHJvbXB0LCAgPSAwIG1lYW5zIHdhaXQKK2ZvcmV2ZXIsID4gMCBtZWFucyB3YWl0IHRoYXQgbWFueSBzZWNvbmRzLgorCisrIFN0YXJ0IG9mIFBDTUNJQSBzdWJzeXN0ZW0gYnkgQW5zZWxtIE1hcnRpbiBIb2ZmbWVpc3Rlci4KKworKyBQb3J0IHRvIEh5cGVyc3RvbmUgYXJjaGl0ZWN0dXJlIChiaWctZW5kaWFuKSBieSBZYW5uaXMgTWl0c29zIGFuZAorR2VvcmdlIFRoYW5vcyBhdCBOVFVBLCBHcmVlY2UuCisKKysgVGltb3RoeSBMZWdnZSBnb3QgdGhlIGVwaWMxMDAgZHJpdmVyIHdvcmtpbmcgYWdhaW4sIHdhcyBub3Qgd29ya2luZword2hlbiA1LjIgcmVsZWFzZWQuIEFsc28gaW1wbGVtZW50ZWQgbXVsdGljYXN0aW5nLiBBbHNvIHRlbnRhdGl2ZWx5CitmaXhlZCB0aGUgdGczIGRyaXZlci4KKworKyBVc2UgUGVybCBzY3JpcHQgdG8gbWFrZSAuej9saWxvIGltYWdlcy4KKworKyBBZGRlZCBhbiAuaXNvIE1ha2VmaWxlIHJ1bGUuIFRoaXMgcmVxdWlyZXMgbmV3ZXIgQklPU2VzIGFzIGl0Cit1c2VzIG5vIGZsb3BweSBlbXVsYXRpb24gbW9kZS4KKworKyBHdWFyZCBLdW8gc2VudCBpbiBhIHBhdGNoIGZvciB0aGUgdmlhLXJoaW5lIGRyaXZlciBub3QgYmVpbmcKK3Jlc2V0IHByb3Blcmx5LCBUaW1vdGh5IExlZ2dlIGltcHJvdmVkIGl0IGJhc2VkIGluIHRoZSBMaW51eCBkcml2ZXIuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjMuNCAoZGV2ZWxvcG1lbnQpCisKKysgRGF2aWQgRC4gU21pdGgsIHdpdGggaGVscCBmcm9tIEdlb3JnIEJhdW0sIHNlbnQgaW4gYSBwYXRjaCBmb3IgdGhlCitlZXBybzEwMCBkcml2ZXIgd2hpY2ggbWlnaHQgaGVscCB1bmphbSB0aGUgTklDIHdoZW4gdGhlIHJlY2VpdmVyIGhhcworc3VzcGVuZGVkIHJlY2VwdGlvbi4KKworKyBUaW1vdGh5IExlZ2dlIGFuZCBFcmljIEJpZWRlcm1hbiBmaXhlZCBhIGJ1ZyBpbiB0aGUgdGczIGRyaXZlciB3aGljaAorY2F1c2VkIHNvbWUgbW9kZWxzIHRvIG5vdCByZWNlaXZlIERIQ1AgcmVwbGllcy4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMy41IChkZXZlbG9wbWVudCkKKworKyBUaW1vdGh5IExlZ2dlIHBvcnRlZCB0aGUgTGludXggUmVhbHRlayA4MTY5IGRyaXZlci4KKworKyBNaWNoYWVsIEJyb3duIHJlbW92ZWQgaXJyaXRhdGluZyBBMjAgc3RhdHVzIGNoYW5nZSBtZXNzYWdlcy4KKworKyBTaXM5MDAsIHc4OWM4NDAgYW5kIHRnMyBkcml2ZXJzIGZpeGVkIGJ5IFRpbW90aHkgTGVnZ2UuIFI4MTY5IGRyaXZlcgorbmVlZHMgZmFtaWx5IGVudHJ5IGluIGdlbnJ1bGVzLnBsLgorCisrIFJldmVydCB0byBub3JtYWwgd2F5IG9mIGFzc2lnbmluZyBzdHJpbmcgdG8gREVGQVVMVF9CT09URklMRSBhcwordHJpY2t5IHN0cmluZ2lmeSBtYWNybyBmYWxscyBmb3VsIG9mIEMrKyAvLyBjb21tZW50cyBpbiBnY2MgMy54LgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjYgKGRldmVsb3BtZW50KQorCisrIERvbid0IGluY2x1ZGUgSVNBIC5vIGZpbGVzIGZvciBldGhlcmJvb3QtcGNpLgorCisrIERvdWcgQW1icmlza28gZml4ZWQgYnVncyBpbiB0aGUgRnJlZUJTRCBsb2FkZXIuCisKKysgQW5kZXJzIE55c3Ryb20gcHJvdmlkZWQgYSB0aW55IHZpYS1yaGluZSBwYXRjaAorCisrIEludHJvZHVjZSBuZXcgZGVmaW5lIERFRkFVTFRfUFJPVE9fTkZTIGZvciB0aG9zZSB3aG8gd2VyZSB1c2VkIHRvCit1c2luZyBET1dOTE9BRF9QUk9UT19ORlMgaW4gNS4wIGZvciBORlMgYm9vdGluZy4KKworKyBSZXZlcnNlIHNvcnQgUENJIGRyaXZlcnMgc28gdGhhdCAzYzkweCBpcyB0cmllZCBhaGVhZCBvZiAzYzU5NS4KKworKyBVcGRhdGVkIGUxMDAwIGRyaXZlciBieSBHZW9yZyBCYXVtLgorCisrIE5ldyBQQ0kgSURzIGZvciAzYzkweCBhbmQgdHVsaXAgZHJpdmVycy4gVHlwb3MgaW4gM2M5MHggYW5kIHRnMworZHJpdmVycyBjb3JyZWN0ZWQuCisKKysgR2VvcmcgQmF1bSBmaXhlZCB0aGUgM2M1MDMgCisKKysgRml4ZWQgVHlwb3Mgd2hpY2ggY2F1c2VkIGNvbXBpbGluZyB3aXRoIFJBUlBfTk9UX0JPT1RQIHRvIGZhaWwKKworKyBGaXhlZCBJTUFHRV9GUkVFQlNEIGJ1Z3MKKworKyBDbGVhbnVwIG9mIGRyaXZlciBvdXRwdXQgKHBjbmV0MzIsIHI4MTY5LCBzdW5kYW5jZSwgdGxhbikKKworKyBNaW5vciB1cGRhdGVzIHRvIHRoZSBDb25maWcgZmlsZSBjb21tZW50cworCisrIGFyY2gvaTM4Ni9wcmVmaXgvYm9vdDFhLlMgaXMgbm8gbG9uZ2VyIG1haW50YWluZWQKKworKyBBZGRlZCBtYWtlIHJ1bGUgZm9yIGEgZmxvcHB5IGVtdWxhdGlvbiBJU08gYm9vdCBpbWFnZQorCisrIFRpbW90aHkgTGVnZ2UgdXBkYXRlZCBwcm90b190ZnRtIHRvIG1ha2UgaXQgZWFzaWVyIHRvIG1haW50YWluIGFuZAorICBmaXggc29tZSBpc3N1ZXMKKworKyBUaW1vdGh5IExlZ2dlIGNvbnRyaWJ1dGVkIGEgZm9yY2VkZXRoIGRyaXZlciBmb3IgdGhlIE5WaWRpYSBGb3JjZQorICBOSUMuCisKKysgVGltb3RoeSBMZWdnZSBjb250cmlidXRlZCBhIG5zODM4MjAgZHJpdmVyIGZvciBOYXRpb25hbAorICBTZW1pY29uZHVjdG9yIDgzODIwIGJhc2VkIE5JQ1MKKworKyBLZW4gWWFwIGFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIC5saXNvIG91dHB1dCB0eXBlIHdoaWNoIGlzIGFuIGlzbworICBpbWFnZSB3aXRoIGxlZ2FjeSBmbG9wcHkgc3VwcG9ydAorCisrIE1pY2hhZWwgQnJvd24gaW1wcm92ZWQgbWVtb3J5IGFsbG9jYXRpb24sIDE2LzMyIG1vZGUgc3dhcHBpbmcsIGFuZAorICBkaWQgdmFyaW91cyBjb2RlIGNsZWFudXBzCisKKysgTWljaGFlbCBCcm93biBhZGRlZCBIaWdoLUxldmVsIFBYRSBBUEkgc3VwcG9ydCAocHhlbGludXgpIHRvIEV0aGVyYm9vdAorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjcgKGRldmVsb3BtZW50KQorCisrIFRpbW90aHkgTGVnZ2UgRml4ZWQgYW4gaXNzdWUgaW4gdGhlIGUxMDAwIGRyaXZlciB3aXRoIDgyNTQ0IGFuZAorICBuZXdlciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBwb3J0IEkvTy4gIEVuYWJsZWQgcG9ydCBpbyBmb3IgdGhlIHJlc2V0LgorICBXaXRob3V0IHRoZSBwYXRjaCB0aGUgZTEwMDAgY291bGQgbm90IHJlbGlhYmx5IGJvb3QgTGludXggb24gc29tZQorICBjYXJkcy4gIFRoYW5rcyB0byBKYW1lcyBQZWFyc29uLCBHZW9yZyBCYXVtIGFuZCBNYXJ0eSBDb25ub3IgZm9yCisgIGhlbHAgcmVzb2x2aW5nIHRoaXMgaXNzdWUuCisKKysgTWljaGFlbCBCcm93biBhZGRlZCBsb3RzIG9mIFBYRSBjb2RlIHRvIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uLiBIZQorICBhbHNvIGRpZCBhIHdhcm5pbmdzIHB1cmdlIG9mIHRoZSBjb3JlLgorCisrIE1hcnR5IENvbm5vciBkaWQgd2FybmluZ3MgcHVyZ2Ugb2YgdGhlIG5ldHdvcmsgZHJpdmVycy4KKworKyBBbnNlbG0gTWFydGluIEhvZmZtZWlzdGVyIGNvbnRyaWJ1dGVkIEROUyByZXNvbHV0aW9uIGNvZGUuCisKKysgTG90cyBvZiBkcml2ZXIgUFhFaWZpY2F0aW9ucyBhbmQgY2xlYW51cHMgZnJvbSBUaW1vdGh5IExlZ2dlIGFuZAorICBNYXJ0eSBDb25ub3IKKworKyBNYWtlZmlsZSBhbmQgZ2VucnVsZXMgZml4ZXMgZnJvbSBNaWNoYWVsIEJyb3duIGFuZCBNYXJ0eSBDb25ub3IKKworKyBCUEJBVENIIHdvcmthcm91bmQgZnJvbSBUaW1vdGh5IExlZ2dlIGFuZCBNaWNoYWVsIEJyb3duCisKKysgVGltb3RoeSBMZWdnZSBpbXByb3ZlZCBpbWFnZSBmb3JtYXQgZGV0ZWN0aW9uIGxvZ2ljLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjggKGRldmVsb3BtZW50KQorCisrIFVwZGF0ZSB0byBsYW5jZS5jIGNoaXBfdGFibGUgZnJvbSBIZWxnZSBXYWduZXIKKworKyBGaXhlcyB0byBhdHRyaWJ1dGVzIHRvIHByZXZlbnQgZ2NjIGZyb20gb3B0aW1pc2luZyBhd2F5IHNlZW1pbmdseQordW51c2VkIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHJlZmVyZW5jZWQgZnJvbSBhc20KK29yIGluIHRoZSBsaW5raW5nIHN0YWdlLiAoS2VuIFlhcCkKKworKyBSZW1vdmVkIG5vbi1yZWxvY2F0aW9uIHN1cHBvcnQsIHJlbG9jYXRpb24gaXMgbm93IGFsd2F5cyBhY3RpdmUuCitSZW1vdmVkIGxhbmNlLmMgZHJpdmVyIGFzIHRoaXMgd2lsbCBub3Qgd29yayB3aXRoIHJlbG9jYXRpb24uIDMyLWJpdAorTGFuY2UgTklDIHVzZXJzIHNob3VsZCB1c2UgcGNuZXQzMi4gKEtlbiBZYXApCisKKysgTWlncmF0ZWQgU0FGRUJPT1QgdG8gYSBwYXRjaCBzZXQuIFRoaXMgcHJvb2Ytb2YtY29uY2VwdCBjb2RlIGlzCitpbmNvbXBsZXRlIGFuZCBuZWVkcyBtb3JlIHdvcmsgYmVmb3JlIGJlY29taW5nIG1haW5zdHJlYW0uIChLZW4gWWFwKQorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjkgKGRldmVsb3BtZW50KQorCisrIFBhdGNoIGZyb20gVGltIEZsZXRjaGVyIGZvciBhbm90aGVyIGVlcHJvMTAwIG1vZGVsLgorCisrIFBhdGNoIGZyb20gSmVyZW15IEphY2tzb24gdG8gbWFrZSBETlMgcXVlcnkgcmVjdXJzaXZlIGFuZCBmaXggc2lnbiBhbmQKK2Nhc3RpbmcgaXNzdWVzIGluIGRuc19yZXNvdmVyLmMuCisKKysgUGFvbG8gU2FsdmFuIGV4cGVyaW1lbnRlZCB3aXRoIHVzaW5nIGlzb2xpbnV4IGZvciBub24tZW11bGF0aW9uCitpbWFnZXMgYW5kIGNvbnRyaWJ1dGVkIHRoZSBmaXJzdCBjdXQgYXQgdGhlIGNvZGUgZm9yIGdlbmlzby4KKworKyBGaXggZm9yIHJlbG9jYXRpb24gaXNzdWUgd2l0aCBwcmlzbTJfcGNpIGRyaXZlcgorCisrIFNtYWxsIHBhdGNoIHRvIHN1cHBvcnQgM0NvbSB0dWxpcCB2ZXJzaW9uIGZyb20gSmFjZWsgS2FsaW5za2kKKworKyBEYWcgTGVtIHByb3ZpZGVkIGEgbmV3IHBjaV9pZCBmb3IgdGhlIGVlcHJvMTAwIEludGVsICI4MjgwMUVCL0VSIAorKElDSDUvSUNINVIpIgorCisrIFNtYWxsIHBhdGNoIHRvIHN1cHBvcnQgM0NvbSB0dWxpcCB2ZXJzaW9uIGZyb20gSmFjZWsgS2FsaW5za2kKKworKyBZaW5naGFpIEx1IGNvbnRyaWJ1dGVkIGEgbGFyZ2UgcGF0Y2ggdG8gYWRkIGZpbG8sIGJUZXh0IGFuZCB1c2IgCitzdXBwb3J0OgorCWJ0ZXh0IGNvbnNvbGU6IEluIExpbnV4QklPUywgZm9yIHRoZSBWR0EsIHdlIG9ubHkgY2FuIAorCWVuYWJsZSBkaXNwbGF5IGNoaXBmcmFtZSBidWZmZXIgYW5kIHdyaXRlIGNoYXIgdG8gZnJhbWVidWZmZXIgCisJdG8gZ2V0IG91dHB1dCBpbiBDUlQuCisJCisJRklMTzogb3JpZ2luYWxseSBpdCBpcyBzdGFuZGFsb25lIGJvb3QgcHJvZ3JhbSBhbmQgCisJYXV0aG9yIGlzIFRha2VzaGlTb25lLgorCisJQm9vdCBmcm9tIFNBVEEgZGlzay4KKworCUJvb3QgZnJvbSBVU0IgZGlzayAoT0hDSSBhbmQgVUhDSSkuICBVU0IgYm9vdCBpcyBmcm9tIFN0ZXZlbiAKKwlKYW1lcyAncyBiYXJlbWV0YWwgaW4gTGludXhCSU9TLCBtb3ZlZCB0byBGSUxPIGFuZCBhZGRlZCB0aGUgCisJT0hDSSBzdXBwb3J0IHRvIGl0IAorCisrIGFybW5vbW11IGFyY2ggc3VwcG9ydCBieSBUb2JpYXMgTG9yZW56LgorCisrIERyaXZlciB1cGRhdGVzL2NsZWFudXA6IHJ0bDgxMzksIHNpczkwMCwgdGxhbiAKKworKyBVcGRhdGVzIHRvIHZpYS1yaGluZSBiYXNlZCBvbiBpbnB1dCBmcm9tIEd1YXJkIEt1byBmcm9tIFZpYSBOZXR3b3JraW5nIAorVGVjaG5vbG9naWVzLCBJbmMKKworKyBVcGRhdGUgcDkxMG5kIChwb3J0IDkxMDArbiBwcmludGVyIGRhZW1vbikgdG8gbGF0ZXN0IHZlcnNpb24KKworKyBGaXhlZCBzb21lIGJ1Z3MgdG8gZW5hYmxlIGNvbXBpbGF0aW9uIGZvciBnY2MgMy40LnguCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjMuMTAgYWthIDUuNFJDMSAoZGV2ZWxvcG1lbnQpCisKKysgQ2hhbmdlcyB0byBzZWdtZW50IHNjaGVtZSB0byBtYWtlIGxhcmdlIGNvbXByZXNzZWQgaW1hZ2VzIHdvcmsuCisKKysgLnplbGYgaW1hZ2VzIGNhbiBiZSBidWlsdCBub3cgYnV0IHN0aWxsIGRvbid0IHJ1biBwcm9wZXJseS4gLnpyb20KK2ltYWdlcyBtYXkgYmUgYnJva2VuLgorCisrIFN0YXJ0IG9mIGEgLmV4ZSBwcmVmaXggd2hpY2ggc2hvdWxkIGFsbG93IHBheWxvYWRzID4gNjRrQi4KKworUmVsZWFzZWQgYXMgRXRoZXJib290IDUuMy4xMSBha2EgNS40UkMyIChkZXZlbG9wbWVudCkKKworKyBMZWZ0IG91dCBpbiBsYXN0IHJlbGVhc2UncyBMT0c6IGFjY2VwdGVkIHBhdGNoIGZyb20gSmFuIEtpc3prYQorZml4aW5nIGRlZmF1bHQgVEZUUCBibG9ja3NpemUuCisKKysgRml4ZWQgLno/cm9tIGltYWdlIGdlbmVyYXRpb24sIHRoZXkgd29yayBub3cuCisKKysgUGF0Y2ggZnJvbSBKYW4gS2lzemthIGZvciBmb3IgbXVsdGlwbGUgcmVjZWl2ZSBidWZmZXJzIGluIGVlcHJvMTAwCitkcml2ZXIuCisKKysgRml4ZWQgOTYxNTA3IE5vdCBzbyBuaWNlICdGPycgbWVzc2FnZSB3aGVuIG5vIGZpbGUgbmFtZSByZWNlaXZlZAorCisrIFNtYWxsIGZpeGVzIHRvIGUxMDAwIGFuZCB2aWEtcmhpbmUgZHJpdmVycy4KKworKyBOZXcgbXRkODB4LmMgZHJpdmVyIGNvbnRyaWJ1dGVkIGJ5IEVyZGVtIEd1dmVuCisKKysgTmV3IGRtZmUuYyBkcml2ZXIgZm9yIERhdmljb20gYmFzZWQgY2FyZHMgY29udHJpYnV0ZWQgYnkgVGltb3RoeSBMZWdnZQorCisrIEFkZGVkIG5ldyBkZWZpbml0aW9ucyBvZiBzaXRlIERIQ1Agb3B0aW9ucyBpbiBwcmVwYXJhdGlvbiBmb3IgNS40LgorCisrIFJlbW92ZWQgZXRoZXJib290KC1wY2kpPy4qIHJ1bGUgYmVjYXVzZSB0aGVyZSBhcmUgdG9vIG1hbnkgZHJpdmVycyBhbmQKK3RoZSBpbWFnZSB3aWxsIG5vIGxvbmdlciBmaXQgaW4gbWVtb3J5LiBJIGRvbid0IHdhbnQgdG8gY2hvb3NlIGEgc3Vic2V0CitvZiBkcml2ZXJzIGFzIGV2ZXJ5Ym9keSB3aWxsIGhhdmUgZGlmZmVyZW50IHByZWZlcmVuY2VzLiBTbyBJJ20gZ29pbmcgdG8KK3Bpc3Mgb2ZmIGV2ZXJ5Ym9keSBlcXVhbGx5IGJ5IGRlbGV0aW5nIHRoZSBydWxlLiBVc2UgdGhlIG11bHRpcGxlIGRyaXZlcgorcnVsZSAoZHJpdmVyMS0tZHJpdmVyMi0tLi4uKSBhbmQgc2VsZWN0IHlvdXIgb3duIHN1YnNldCBvZiBkcml2ZXJzLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjEyIGFrYSA1LjRSQzMgKGRldmVsb3BtZW50KQorCisrIENoYW5nZXMgdG8gTWFrZWZpbGUubWFpbiBhbmQgQ29uZmlnIHRvIGNvbGxlY3QgRklMTyBvYmplY3RzIGluCitmaWxvbGliLmEuICBUaGlzIGFsbG93cyBGSUxPIHRvIGJlIGV4Y2x1ZGVkIGZyb20gY29tcGlsYXRpb24gYW5kIGxpbmtpbmcKK3dpdGggb25lIE1ha2VmaWxlIGRlZmluZS4KKworKyBSZXZlcnNlIHNpdGUgREhDUCBvcHRpb24gY2hhbmdlcywgc2hvdWxkIGFwcGx5IGZvciBvZmZpY2lhbAorYXNzaWdubWVudC4KKworKyBSSVMgZmlsZW5hbWUgcGF0Y2ggd2hpY2ggc2VlbXMgdG8gd29yayBmb3IgbWFueSBwZW9wbGUuCisKKysgVGhhbmtzIHRvIHRoZSBoZWxwIG9mIERhbmllbCBOaWxzc29uLCB0cmFja2VkIGRvd24gYW5kIGZpeGVkIGEgYnVnCit3aGVyZSB0aGUgdGZ0cCBjb2RlIGRpZCBub3QgZmFsbCBiYWNrIHRvIDUxMiBieXRlIGJsb2NrcyB3aGVuIGFuIE9BQ0sKK3dhcyBOT1QgcmVjZWl2ZWQuCisKKysgUmVtb3ZlZCBkZWFkIGNvZGUgcmVsYXRlZCB0byBDQU5fQk9PVF9ESVNLLgorCisrIENsYXJpZmllZCB0aGF0IEJPT1RfRElTSyBhbmQgQk9PVF9GTE9QUFkgb3B0aW9ucyBvbmx5IHdvcmsgd2l0aAorTGludXhCSU9TIGFuZCBhcmUgbm90IHJlcGxhY2VtZW50cyBmb3IgUENCSU9TIGZ1bmN0aW9ucy4KKworKyBSZW5hbWVkIEVNRVJHRU5DWURJU0tCT09UIHRvIEVYSVRfSUZfTk9fT0ZGRVIuCisKKysgQnVpbHRpbiBtZW51aW5nIERIQ1Agb3B0aW9ucyBhcmUgZ29uZS4KKworKyBQYW9sbyBTYWx2YW4gc3VibWl0dGVkIGNoYW5nZXMgdG8gYXJjaC9pMzg2L01ha2VmaWxlIHRvIG1ha2UgLmNvbQoraW1hZ2VzIGNvbXByZXNzZWQuCisKKysgRXJpYyBCaWVkZXJtYW5uIG1hZGUgLiplbGYgaW1hZ2VzIHdvcmsgYWdhaW4gYW5kIGNsZWFuZWQgdXAgdGhlIGJ1aWxkCitwcm9jZWR1cmUgaW4gdGhlIHByb2Nlc3MuIFRoZSBoYXJkd2lyZWQgdmlydHVhbCBSRUxPQ0FERFIgaXMgbm8gbW9yZSwKK3RoZSB2aXJ0dWFsIGJhc2UgaXMgMC4gSGUgYWxzbyBhZGRlZCBjb2RlIHRvIGRpc3BsYXkgd2hpY2ggcHJvdG9jb2xzIGFyZQorY29tcGlsZWQgaW50byB0aGUgaW1hZ2UuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjMuMTMgYWthIDUuNFJDNCAoZGV2ZWxvcG1lbnQpCisKKysgTG90cyBvZiBmaXhlcyBieSBFcmljIEJpZWRlcm1hbi4gIFN5bWJvbHMgZm9yIHByb3RlY3RlZCBtb2RlIHNlZ21lbnQKK2FuZCBwcmVmaXggc2VnbWVudHMgc2VwYXJhdGVkLiAgTXVsdGlwbGUgQVNNIHN0YXRlbWVudHMgY29tYmluZWQgdG8KK2Vuc3VyZSBjb21waWxlciBrZWVwcyB0aGVtIGludGFjdC4gIEFsbG9jYXRlIHJlYWwgbW9kZSBzdGFjayBpZiBub25lIGluCit1c2UuICBQcm90ZWN0IGxvdyBtZW1vcnkgaW50ZXJydXB0IHZlY3RvcnMuIE1ha2VmaWxlIHJ1bGVzIGZvciB2YXJpb3VzCitwcmVmaXhlcyBmYWN0b3JlZC4gRHluYW1pYyByZWxvY2F0YWJsZSBpbWFnZSBzdXBwb3J0LgorCisrIEZpeGVzIGJ5IE1pY2hhZWwgQnJvd24uIENsZWFudXAgb2YgUFhFIGFuZCBVTkRJIGNvZGUuCisKKysgUGF0Y2ggdG8gVHVsaXAgZHJpdmVyIGZvciBtaXNzaW5nIFBDSSBJRC4KKworKyBGaXhlcyB0byBnZW5ydWxlcy5wbCBieSBLZW5uZXRoIFN1bXJhbGwuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjMuMTQgYWthIDUuNFJDNSAoZGV2ZWxvcG1lbnQpCisKKysgU21hbGwgQVJNTk9NTVUgYXJjaGl0ZWN0dXJlIGZpeGVzIGJ5IFRvYnkgTG9yZW56LgorCisrIFBhdGNoIHRvIFR1bGlwIGRyaXZlciBmb3IgYWRkaXRpb25hbCBQQ0kgSUQgYnkgUmFtZXNoIENoYW5kZXIuCisKKysgUHJveHkgREhDUCBzdXBwb3J0LCBjYXRyb20ucGwgc2NyaXB0LCBmbGF0IHJlYWwgbW9kZSBzdXBwb3J0LCBhbmQKK2UxMDAwIGZpeGVzIGJ5IE1pY2hhZWwgQnJvd24uCisKKysgTmV3IFBIWSBzdXBwb3J0IGZvciB0ZzMuYyBieSBUaW1vdGh5IExlZ2dlLgorCisrIEZTIFByb3RvY29sIHN1cHBvcnQgYnkgUmFkaW0gS29sYXIuCisKKysgRklMTyBjb25maWcgY2hhbmdlcyBieSBZSEx1LgorCisrIFN1cHBvcnQgZm9yIGNvbXBpbGF0aW9uIG9uIEFNRDY0IGZvciBpMzg2LiBtYWtlcm9tLnBsIGZpeGVkIG5vdCB0bworY2hhbmdlIHByb2R1Y3Qgc3RyaW5nIHBvaW50ZXIgaWYgb25lIGFscmVhZHkgZXhpc3RzLgorCitSZWxlYXNlZCBhcyBFdGhlcmJvb3QgNS4zLjE1IGFrYSA1LjRSQzYgKGRldmVsb3BtZW50KQorCisrIE1pbm9yIGFkZGl0aW9ucyBhbmQgYW1lbmRtZW50cyB0byBhY2tub3dsZWRnZW1lbnRzLgorCisrIEFkZGVkIERvdWcgQW1icmlza28ncyBGcmVlQlNEIHBhdGNoIHRvIGZyZWVic2RfbG9hZGVyLmMuIERvZXNuJ3QKK2h1cnQgRnJlZUJTRCA0IGFuZCBzZWVtcyB0byBoZWxwIEZyZWVCU0QgNSBnZXQgZnVydGhlciBpbiBib290aW5nLgorU2hvdWxkIG5vdCBhZmZlY3Qgb3RoZXIgaW1hZ2UgdHlwZXMgc2luY2UgaXQgbW9kaWZpZXMgb25seSBvbmUgZmlsZS4KK1RoZSBwYXJ0IG9mIHRoZSBwYXRjaCByZWxhdGluZyB0byBvc2xvYWRlci5jIHdhcyBhbHJlYWR5IHByZXNlbnQuCisKK1JlbGVhc2VkIGFzIEV0aGVyYm9vdCA1LjQuMCAocHJvZHVjdGlvbikKKworKyBBZGRlZCBQQ0kgSUQgZm9yIEZ1amlzdHUgU2llbWVucyBGdXRybyBDMjAwIGJ5IE1hcnRpbiBWb2d0CisKKysgTGl1IFRhbyBjb250cmlidXRlZCBhIGRyaXZlciBmb3IgdGhlIEFNRDgxMTEgYmFzZWQgb24gdGhlIExpbnV4IAorZHJpdmVyCisKKysgVGlsbCBTdHJhdW1hbm4gcGF0Y2ggZm9yIFNwb3JhZGljIGVlcHJvKDEwKSAgUlggcHJvYmxlbXMgYWZ0ZXIgcmVib290CisKKysgSGVybWFubiBHYXVzdGVyZXIgc2VudCBhIHBhdGNoIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBCcm9hZGNvbSBQSFlzCisK